Ultimo aggiornamento della pagina 2 luglio 2004

a cura di Nicola Sellitto (Napoli) e Adriano Gandolfo (Torino)


 
INDICE:
1. Generalità
2. Start Kit 
3. Funzionalità

4. Alimentazione
5. Motori
6. Microcontroller
7. Scheda PIC
8. Programmazione
9. Connessione I2C
10. Sensori
11. Scocca 
12. Interconnessioni
13. Tecniche di assemblaggio
14. Problemi aperti

 

1. Generalità
Tale progetto si propone di realizzare un piccolo robot, battezzato Tobor, non solo totalmente funzionante ma con ottime implementazioni delle funzionalità presenti comunemente negli altri robot general purpose.

La base di partenza prevede l'utilizzo di alcuni componenti forniti in pubblicazioni attualmente disponibili (quindi di facile reperimento).

Le motivazioni di tale scelta sono:
  • La buona qualità di tali componenti
  • Il basso costo d'acquisto
  • L'opportunità di avere una base identica (non facilmente ottenibile diversamente) per tutti i partecipanti del team (geograficamente distribuiti nel territorio).

homotix

PCBONLINE


 

2. Start Kit 
Il materiale di base prevede l'utilizzo di:
  • telaio, ruote e gruppo motoriduttori di Cybot, disponibile col n.1 dell'opera
  •  n. 2 motori in DC ed altre componenti del telaio di Cybot, disponibile col n.2 dell'opera
  •  bumper e ruotino anteriore di Cybot, disponibile col n.2 dell'opera
  • scheda PIC di Pathfinder, disponibile col n.1 dell'opera

Il costo attuale del kit (reperibile presso l'edicole) è di circa 19 euro.

E' anche possibile approfittare dell'offerta della De Agostani che per circa 13 euro invia i primi 5 fascicoli dell'opera; successivamente bisogna comunicare all'editore la disdetta dell'abbonamento.

 


 

3. Funzionalità.
Le funzionalità di base che si possono prevedere al momento sono:
  • line follower
  • light follower
  • explorer  

Successivamente si potranno implementare altre funzionalità come controllo remoto ecc.

 


 

4. Alimentazione.
L'alimentazione base dovrà fornire, in modo separato, l'energia sufficiente per pilotare la logica (mediante una tensione di +5v) ed il motori (mediante una tensione di +6v). 

Il telaio prevede già gli opportuni vani per alloggiare una pila da +9v (da cui si ricaverà la tensione per la logica) e 4 stilo di 1.5v (per i motori).

Non essendoci spazio a sufficienza per alloggiare una pila ricaricabile a piombo (a causa delle sue dimensioni e del peso) l'unica alternativa disponibile è l'utilizzo di pile ricaricabili che, sebbene forniscono una tensione leggermente inferiore a quella richiesta, dovrebbero essere ancora sufficiente a pilotare il loro carico.

Se successivamente si renderà necessaria un'altra alimentazione (come quella da +12v) per scopi specifici si dovrà studiare una soluzione ad hoc.

 


 

5. Motori

I motori da utilizzare sono disponibili nello Start Kit e prevedono 2 DC da 6v a circa 7000 giri/minuto come mostrato

Anche il gruppo motoriduttore e le relative ruote sono fornite nello Start Kit 

In particolare la ruota ha un diametro di 54 mm mentre il motoriduttore, logicamente, si compone di una serie di 3 ingranaggi ciascuno composto da 2 ruote dentate una piccola da 12 denti e l'altra più grande da 48 denti.
In tal modo ogni ingranaggio realizza una riduzione con un fattore di 1/4 = 12/48, ovvero ogni ingranaggio riduce la velocità ad un quarto.
Utilizzando 3 ingranaggi la riduzione totale risulta di un fattore di 1/64 = (1/4) ^ 3; questo comporta che ogni 64 giri del motore la ruota compi un solo giro.
La velocità risultante pertanto da 7000 giri/minuto scende a circa 110 giri/minuto.

Per il controllo dei motori si utilizzerà una Motor Driver Board autocostruita, la sua descrizione teorica è riportata in un'apposita pagina, mentre la descrizione della scheda è consultabile alla pagina scheda di potenza.

 


Foto del prototipo in fase di test della scheda controllo motori

 



Schema elettrico scheda di controllo motori

 


 

6. Microcontroller
La scheda di controllo dispone di alloggiamento per un PIC a 28 pin, quello facilmente utilizzabile da subito è il 16F876 a 20 Mhz; in futuro si potrà utilizzare il più potente 18F252 a 40Mhz, entrambi sono prodotti dalla Microchip e possono essere richiesti come sample alla ditta stessa..

 

 


 

7. Scheda PIC
La scheda PIC (viene utilizzata quella allegata all'opera Pathfinder edita dalla Peruzzo) integra oltre alla MCU anche un MAX232 per la connessione seriale al PC.

Sulla scheda è previsto il connettore JP2 in cui i pin 1,2,4 sono rispettivamente TX, RX e Gnd.
Questi pin vanno collegati (medianti cavo) ai pin 3,2,5 di un connettore DB9 femmina. 

In alternativa al DB9 si può utilizzare un connettore RJ45 in tal caso bisogna realizzare un apposito cavetto di collegamento.



Foto della scheda di controllo



Schema elettrico della scheda di controllo


 

8. Programmazione
La programmazione del PIC avverrà mediante bootloader, sono stati scelti due tipi diversi di downloader uno per il PIC 16F876 e uno per il PIC 18F252.
 

PICloader per CPU 16F786 http://microchipc.com/PIC16bootload/

Features
PIC16F87x serial bootloader. Used successfully by thousands of users worldwide.
  • Compatible with the 16F870/1/3/4/6/7 and 16F87xA/6/7/.
  • 255 instructions long, fits into top of memory. 
  • Only uses two wires - TX and RX. This is unlike some bootloaders that need up to 5 wires! 
  • Example Hex files for 16F870/1/3/4/6/7 and the 'A' revisions. It is possible to run 16F73/4/6/7 .hex files on the appropriate 16F870/1/3/4/6/7 chip. 
  • Example Hex files for 3.6864, 4,16 and 20Mhz. 
  • Downloads at 19200bps. This takes a few seconds for a complete program. 
  • Writes to EEPROM. 
  • Supports any Hex file, including those from standard assemblers, Basic, C and Pascal compilers. 
    Circuit diagram supplied as a .gif or a Protel 99 .sch file. 
  • Full source code supplied for bootloader, in assembly and C. 
  • Compatible with any circuit - no trigger pins or jumpers needed to activate bootloader. 
  • Fits into memory locations that the MPLab-ICD (an InCircuit Debugger) would normally use, if present. 
  • Includes Petr Kolomaznik's excellent windows interface plus full Delphi source code. 
  • Supports DOS or Linux under a DOS emulator. See instructions at the base of this page. 
  • Source code in assembly provided. Many thanks to Petr Kolomaznik. See his bootloader page.

 

 

 

PICloader per CPU 18F252  http://www.ac.ugal.ro/staff/ckiku/software/picbootloader.htm

Features of the firmware
  • Size of only 100 words; (both versions, for 16F and for 18F occupy less than 100 words); 
  • Can write flash, eeprom and configuration bytes(18F); 
  • On reset, waits 1 second for a message from the PC, if not received, launch user application; 
  • Tested on: 16F876A, 16F877A, 18F252; should work on most 16F and 18F PICs; 
  • Reported to work with 16F876, 16F877, 18F452, 18F8720, 18F8680, 18F4320, 18F1x20; 
  • Does not work with 16F88; 
  • The .asm file can be easily modified and adapted for any frequency (or baudrate); 

 

Come linguaggi (per ottimizzazione, potenza e portabilità) la scelta ricade sul C Hi-Tech.

Questo non esclude che parte del progetto possa essere scritta, a livello di prototipo, in PicBasic di più facile utilizzo, ciò permetterà di testare il buon funzionamento hardware dei singoli componenti.


 

9. Connessione I2C
Sulla scheda controllo è presente il connettore JP5 per la connessione del PIC in I2C modalità master.

Le linee utilizzate sono RC3 ed RC4 che presentano la resistenza da 2.2K come pull-up.
Dal valore della resistenza si desume che il clock di I2C deve essere impostato a 400 Khz.

La funzionalità I2C permetterà di connettere facilmente al PIC diversi componenti futuri; quali memorie EEPROM, real time clock, ecc.

Il bus I2C
Il bus I2C è composto da 2 linee chiamate SDA (dati) e SCL (clock), entrambe del tipo a collettore aperto.
La linea SDA e' di tipo bidirezionale, e permette lo scambio dei dati tra i dispositivi I2C collegati, mentre la linea SCL e' unidirezionale e serve come clock per sincronizzare la comunicazione.
Questo bus è stato ideato dalla Philips ed è utilizzato come già detto da moltissimi dispositivi usati anche in apparecchi commerciali. Molto comuni sono ad esempio le EEPROM della famiglia 24Cxx.

La comunicazione con un dispositivo I2C è caratterizzata da alcune fasi che sono sempre uguali per qualsiasi dispositivo.
L'inizio e la fine della comunicazione I2C vengono determinati inviando nel bus gli impulsi di START e di STOP ottenuti mediante una particolare sequenza di stati logici nelle linee SDA e SCL. 

Gli stati START e STOP
In condizioni di riposo le linee SDA e SCL sono mantenute a livello logico 1.
La condizione di START si ha quando la linea SDA passa da 1 a 0 mentre SCL si mantiene a livello 1. La condizione di STOP invece si ha quando la linea SDA passa da 0 a 1 mentre SCL si trova a livello 1.


Dopo aver inviato l'impulso di start, il livello logico della linea SDA viene ritenuto valido e viene letto dal dispositivo I2C quando SCL è a livello 1, mentre quando SCL e' a livello 0 ogni cambiamento dello stato di SDA è ininfluente. 


Trasmissione dei dati nel bus
Dopo l'impulso di start, ogni dato da inviare o ricevere dal bus I2C è composto da 8 bit (cioè un byte), più un nono bit di ACK utile per controllare che la trasmissione ha avuto buon esito. Ecco un esempio di trasmissione di 2 bytes:

Come si può vedere, va inviato prima il bit più significativo MSB.
In corrispondenza di ogni bit va inviato un impulso di clock sulla linea SCL.
Il bit ACK ha sempre un livello 0 e viene generato dal dispositivo che ha ricevuto il dato. 

 


 

10. Sensori
Sulla scheda controllo sono presenti anche 4 connettori per sensori ottici (tipo CYN70) già con le relative resistenze di accoppiamento: da 220 per il catodo del diodo IR, da 47K per l'emettitore del fototransistor.

Sebbene in teoria tali connettori potrebbero essere utilizzati per l'encoder ciò non è possibile poiché le linee del pic connesse sono RA5, RC0, RC1 ed RC2 in cui non sono previsti gli interrupt necessari per contare gli impulsi del encoder.

 


 

11. Scocca
Qui la fantasia può galoppare poiché nulla è stato stabilito.
Volendo si potrebbero riutilizzare alcune componenti di Cybot, ma è tutto da verificare.

 


 

12. Interconnessioni
Sono previste almeno le seguenti 3 schede:
  • scheda controllo
  • scheda motore
  • scheda sensori

Al fine di una interconnessione dei vari moduli è in analisi la soluzione offerta dalla scheda bus presente nell'opera Pathfinder.


Foto della scheda di interconnessione


Interventi comuni sempre da effettuare sul Bus

  1. Sul connettore maschio per JP20 tagliare i pin 22 e 24 (+9V)
  2. Collegare (dal retro) tra i pin :

    4-JP13 con 4-JP14 RC1
    6-JP13  con 6-JP14 RC2
    24-JP13  con 22/24-JP14 +5V
    16-JP14  con Gnd pila da 6V
    26/28-JP14  con +6V pila



Interventi specifici per Modifica N 1

  1. Sul connettore femmina per JP14 tagliare i pin 13 e 15 (RB0, RB1)
  2. Sul connettore femmina per JP15 tagliare il pin 7 (RA3)
  3. Connettere tra loro pin 1 e 2 di JP9 (RA1)
  4. Connettere tra loro pin 1 e 2 di JP10 (RA2) 

Interventi specifici per Modifica N 2

  1. Collegare (dal retro) tra i pin :
    13-JP13 con  13-JP16 RB0
    15-JP13 con  15-JP16 RB1

 

  1. Pin da non utilizzare :
    13-JP14 RB0
    15-JP14 RB1
    7-JP15 RA3
    3-JP16 RA1/RA2 ??
    5-JP16 RA2/RA1 ??

 

  1. Riutilizzabili per altri scopi Tipo Bumper/Led
    JP7 e JP8

 



Schema elettrico scheda di interconnessione

 


 

13. Tecniche di assemblaggio
E' opportuno non saldare gli integrati od altri componenti (quali il quarzo) che in un futuro potrebbero essere sostituti, al loro posto andranno saldati zoccoli o connettori.

 


 

14. Problemi aperti
  • Individuare il miglior adattamento della scheda controllo sul telaio
  • Individuare sensori per encoder motore
  • Individuare sensori ottici per line follower
  • Individuare sensori ottici per light follower
  • Individuare sensori di prossimità sonar
  • Definire la scocca
  • Varie

 

Elenco revisioni
02/07/2004 Emissione preliminare