ultimo aggiornamento 14 gennaio 2008 |
|
In commercio esistono varie schede come la Micro Serial Servo Controller o la Micro Maestro 6-Channel USB Servo Controller che eseguono il controllo simultaneo di più servomotori. Le varie tipologie dispongono si solito di un processore di controllo, di connettori di uscita per i servomotori, per l’alimentazione e di quelli per il controllo tramite un PC. Se vogliamo però avventurarci nell’auto-costruzione possiamo provare a realizzare la scheda qui presentata, il progetto è stato trovato in rete ed è stato leggermente rielaborato. Il materiale originale del progetto potrà essere consultato al seguente link. interface de commande pour 8 servomoteurs, contrôlé par une liaison série La scheda rappresenta un’interfaccia per il controllo di otto
servomotori controllati da una linea seriale, il tutto è basato sul
microcontrollore PIC16F84A-04/P un processore a 8 bit ormai datato ma
ancora in produzione.
La scheda ha la possibilità di settare il proprio indirizzo, in questo
modo si possono collegare sino a otto schede contemporaneamente il che
porta a poter controllare fino a 64 singoli servomotori. |
|
|
Cos’è un servomotore
Nella robotica per gli
azionamenti sono molto utilizzati i servomotori. Di solito questi si presentano come piccoli contenitori di materiale plastico da cui fuoriesce un perno in grado di ruotare in un angolo compreso tra 0 e 180° mantenendo stabilmente la posizione raggiunta. Per ottenere la rotazione del perno è utilizzato un motore in corrente continua e un meccanismo di demoltiplica che consente di aumentare la coppia in fase di rotazione. La rotazione del motore è effettuata tramite un circuito di controllo interno in grado di rilevare l'angolo di rotazione raggiunto dal perno tramite un potenziometro resistivo e bloccare il motore sul punto desiderato. I Servomotori sono concepiti per essere pilotati nel modo più semplice possibile, eseguendo la movimentazione senza l'ausilio di circuiterie troppo complesse o l'uso di sistemi a microprocessore.
|
|
Come si usa un Servomotore
Un servomotore dispone solitamente di soli tre fili attestati ad un connettore femmina per pin strip a passo 2.54mmTabella codice colori del connettore nei più diffusi modelli di servomotore.
|
|
Due di questi fili sono riservati all'alimentazione in corrente continua. Il positivo è di colore rosso, il negativo di colore nero, il terzo filo, normalmente di colore bianco, è riservato per il controllo del posizionamento. Il colore di questi fili può però variare a seconda della casa costruttrice come riportato nella Tabella codici colore.
Tramite il filo del controllo è necessario applicare un segnale
impulsivo o PWM (Pulse Wave Modulation) le cui caratteristiche sono
"quasi" univoche per qualsiasi servomotore disponibile in commercio. Per
essere sicuri di riuscire a pilotare qualsiasi servomotore il nostro
circuito di pilotaggio dovrà essere in grado di trasmettere al
servomotore circa 50 impulsi positivi al secondo (uno ogni 20 ms) di
durata variabile in un intervallo massimo compreso tra 0.25ms e 2.75ms.
Generalmente con un impulso di durata pari a 1.5ms il perno del
servomotore si pone esattamente al centro del suo intervallo di
rotazione. Da questo punto il perno può ruotare in senso antiorario se
l'impulso fornito ha una durata inferiore a 1.5ms e in senso orario se
l'impulso fornito ha durata superiore a 1.5ms. Il rapporto esatto tra la
rotazione del perno e la larghezza dell'impulso fornito può variare tra
i vari modelli di servomotore
Diagramma temporizzazione per rotazione antioraria. |
Diagramma temporizzazione per posizionamento al centro |
Diagramma temporizzazione per rotazione oraria. |
SCHEMA ELETTRICO
|
Il principio di funzionamento
Esaminando lo schema elettrico e relativo elenco componenti
si può vedere che è molto semplice. Tutto è
assemblato intorno a un PIC16F84A-04/P,
in sostituzione si potrà utilizzare anche il PIC16F844-20/P il cui clock è
fornito dall’ oscillatore realizzato con un cristallo da 4 MHz e due
condensatori da 33pF
Le porte del processore da RB0 a RB7 sono utilizzate per generare i
segnali di uscita per gli otto servomotori.
Su queste uscite il processore genererà i vari segnali
ripetuti ogni 20ms, la cui durata può variare da 0,5 a 2,5 ms, che
corrisponderà alla rotazione richiesta.
Processore PIC16F84A | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
Il pin RA1 è utilizzato come ingresso seriale asincrono per il comando dal PC. Il comando avviene tramite una porta seriale conforme allo standard RS232. Dato che ultimamente questa non è più presente si potrà utilizzare un convertitore USB-RS232.
Sigla |
Pin |
In/Out |
Nome |
TXD |
3 |
O |
Dati trasmessi |
RXD |
2 |
I |
Dati ricevuti |
RTS |
7 |
O |
Request To Send |
CTS |
8 |
I |
Clear To Send |
DTR |
4 |
O |
Data Terminal Ready |
DSR |
6 |
I |
Data Set Ready |
RI |
9 |
I |
Ring Indicator |
DCD |
1 |
I |
Data Carrier Detect |
GND |
5 |
- |
Massa (ground) |
I segnali utilizzati dai sistemi digitali (TTL-CMOS) variano tra 0 e 5V
mentre quelli dello standard RS232 variano tra i -12 e i +12 Volt (il
valore -12 Volt corrisponde al livello logico 1 TTL mentre il valore
+12V corrisponde al livello logico 0 TTL). Non essendo direttamente
compatibili è necessario utilizzare un circuito di traslazione di
livelli che adatti i segnali.
In commercio esistono appositi traslatori di livello come il circuito
integrato MAX232 che hanno il compito di fornire sia in trasmissione sia
in ricezione i livelli di tensione opportuni non modificando la forma
del segnale trasmesso.
MAX232 DUAL EIA-232 DRIVERS/RECEIVERS | ||
Piedinatura | Datasheet | Foto dell'integrato |
La soluzione cui presentata è molto più spartana poiché basata solamente
sull’utilizzo di un transistor, un comune BC547
o equivalente.
Una tensione superiore 3V sul collegamento seriale porta in conduzione
il transistor, portando l’uscita a 0V. Quando questa tensione è negativa
il transistore è interdetto permettendo la tensione di +5V di passare
attraverso la resistenza R3. Per cui il circuito si comporta come un
invertitore e adattatore di segnale.
Il traffico sulla linea è monitorato dal led 2.
I pin RA2, RA3 ed RA4 possono essere collegati a 5V o a GND utilizzando i Jumper JP9, 10 e 11, dando così un indirizzo al modulo e quindi differenziare fino a 8 schede collegate sulla stessa porta seriale
Dettaglio jumper per la configurazione della scheda |
TABELLA CONFIGURAZIONE INDIRIZZO SCHEDA
|
Transistor BC547 (NPN Switching and Applications) | ||
Piedinatura | Datasheet | Foto del transistor (contenitore plastico) |
Sezione alimentatrice
La sezione dell’alimentazione è incentrata sull’ormai famoso integrato LM7805 un regolatore di tensione a tensione fissa con uscita di +5V-1A. La tensione in ingresso viene fornita tramite il connettore X2, dopo il quale troviamo il diodo D1 un 1N4004 che salvaguardia il circuito da un’eventuale inversione di polarità. Sono poi presenti alcuni condensatori di filtraggio, il diodo led D1 segnala la presenza dell’alimentazione. La sua massima corrente d’uscita dell’integrato è di 1A, dato che i servomotori assorbono fino a 600-800 mA di spunto e fortemente sconsigliato utilizzare questo per alimentarli, per questo motivo sulla scheda è presente un connettore marcato come X3 che permette di alimentarli direttamente con una fonte autonoma di energia, quando si utilizza questo sistema di alimentazione occorre rimuovere il cavallotto sul Jumper JP12. Si ricorda che prima di alimentare i servomotori occorre verificare a quale tensione di alimentazione funzionano, questa può essere compressa tra 4,8 e 7,2V.
LM 7805 Regolatore di tensione | ||
Piedinatura | Datasheet | Foto dell'integrato |
Diodo 1N4004 | ||
Piedinatura | Datasheet | Foto |
Il protocollo di trasmissione
Il protocollo di trasmissione che deve essere utilizzato dal programma
di gestione deve essere impostato per trasmettere con i seguenti
parametri: 2400 baud, 1 bit start, 1 bit di stop e nessuna parità.
Per modificare la posizione di servo devono essere semplicemente inviati
4 byte:
• 1° byte- Inizio del messaggio, valore fisso di 255.
• 2° byte - Indirizzo della scheda (0 a 7) che dipende dai livelli
logici di porta RA2, RA3 e RA4. Secondo quanto riportato nella
Tabella.
• 3° byte - Numero del servomotore da 0 a 7
• 4° byte - Posizione servo, un valore compreso tra 4 e 255 per uno
spostamento di oltre 180°, se si invia 0 si disabilita l’uscita.
Costruzione della scheda
Per la realizzazione della scheda è previsto l’uso di un circuito
stampato. Si dovrà
scaricare il PDF che riporta la traccia in scala 1:1.
Esiste anche la possibilità di scaricare i
file per il programma EAGLE con cui ognuno potrà
modificare il circuito per i propri utilizzi.
Per la sua realizzazione si utilizzerà una basetta in vetronite (monofaccia)
di dimensioni 50x53mm circa, il metodo potrà essere quello
della fotoincisione o del trasferimento termico utilizzando i cosiddetti
fogli blu (PRESS-N-PELL)
Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di un multimetro, che non vi siano cortocircuiti soprattutto tra le piste più vicine. Si passerà quindi alla foratura della stessa, utilizzando principalmente una punta da 0,8-1 mm. Quindi si posizioneranno e salderanno i componenti come riportato nello schema
Per la saldatura si utilizzerà un piccolo saldatore a punta fine, della potenza di circa 25 – 30 W. Si inizierà montando il diodo D1, lo zoccolo per l’integrato, le resistenze che per ragioni di spazio sono montate in verticale. Si proseguirà con l’integrato IC2 quindi i vari condensatori ricordando che quelli elettrolitici sono polarizzati, occorrerà controllare la posizione della fascia sul loro corpo. Si proseguirà poi con le pin-strip i connettori di alimentazione e quello per il collegamento RS232. A questo punto si è così concluso il montaggio della scheda, prima di istallare l’integrato IC1 occorrerà programmarlo.
Alcune fasi del montaggio del prototipo
|
|
|
||
Una volta completato il montaggio, occorre programmare il processore con il firmware necessario. Il firmware, nome che deriva dall'unione di "firm" (stabile) e "ware" (componente) è un programma, inteso come sequenza d’istruzioni, integrato direttamente nel processore: lo scopo del programma è quello di avviare il componente stesso e consentirgli di interagire con altri componenti tramite l'implementazione di protocolli di comunicazione o interfacce di programmazione. Per fare questo si dovrà necessariamente utilizzare un programmatore, il mio consiglio è quello di utilizzare il modello PICkit 2 prodotto dalla Microchip
|
Legenda: |
Contenuto del Blister
|
Per la programmazione occorrerà prima di tutto scaricare
il file programma_PIC.zip, al cui interno troveremo sia
la versione asm che hex
Quindi si dovrà collegare il connettore del programmatore denominato
ICSP (In-Circuit Serial Programming) al processore come indicato sotto, non sarà necessario alimentare il processore poiché sarà il
programmatore stesso a farlo.
Una volta collegato il processore al programmatore e lanciato l’apposito programma, questo riconoscerà automaticamente il processore
A questo punto si dovrà caricare il file 8SERVOS.HEX
Si potrà quindi programmare il PIC agendo sul tasto WRITE, e la programmazione sarà andata a buon fine, sarà segnalato dal programma. Potremmo questo punto inserire il PIC sulla scheda rispettando la tacca d’inserimento.
Collaudo della scheda
Per verificare il montaggio, si dovrà alimentare il circuito tramite una tensione compresa tra i 7,5 e i 9 volt. Con un tester si misurerà la tensione tra i morsetti 4 e 14 del PIC dove devono essere presenti i +5V, la tensione di uscita ai servi possono variare da 0,12 V a 0,63 V secondo le istruzioni inviate al attuatore (0V se disabilitato). Se si possiede un oscilloscopio è possibile utilizzarlo per controllare questi segnali. A questo punto si potrà completare il cablaggio della scheda seguendo lo schema
Cablaggio della scheda controllo servomotori
Per azionare i vari servomotori collegati si utilizzerà il programma che troverete all’interno del file vb8servos.zip e denominato vb8servos_it.exe, insieme all’eseguibile sono anche presenti i file del progetto scritto in Visual Basic 5. Si fa presente che il programma suppone che la scheda sia connessa alla porta COM1, se così non fosse si potrà modificare il suo valore agendo sulle Impostazioni avanzate della porta all’interno della Gestione delle periferiche
Per il resto il programma è molto semplice, una volta scelto l’indirizzo della scheda si agirà sui vari cursori per variare la posizione del servomotore. Usando le frecce a lato del cursore il movimento sarà più fluido, mentre con il cursore sarà più immediato. Il programma di gestione è molto limitato, non permettendo tra l’atro di salvare le sequenze dei movimenti. Vista la semplicità del protocollo esiste la possibilità utilizzando vari tipo di programmi anche di tipo free come Visual Basic 10 Express o Java di realizzare un proprio programma di gestione.
LINK UTILI
http://fribotte.free.fr/ Sito originale Francese da cui è tratto il
progetto.
http://fribotte.free.fr/bdtech/8servomoteurs/8servomoteurs.html Pagina
originale del progetto.
http://www.pololu.com/catalog/product/207 Link del Micro Serial Servo
Controller.
http://www.pololu.com/catalog/product/1350 Link del Micro Maestro
6-canali USB Servo Controller
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
Pagina di presentazione del programmatore PICkit2.
http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
Sito per scaricare il programma Visual Basic 2010 Exepress
http://www.java.com/it/download/
Sito per scaricare il programma Java.
Elenco revisioni | |
14/04/2012 | Emissione preliminare |