Servo RC: Funzionamento e controlloData di pubblicazione: 17-10-2003 | Versione Italiana | (No English Version) Parole chiave: - Domotica - PIC - |
Un Servo RC tipicamente consiste in uno scatolotto di plastica di ridotte dimensioni (35x40x20mm nel
caso del diffusissimo Futaba S3003 riportato in figura 1), da cui fuoriesce un perno in grado di ruotare
in un angolo compreso tra 0 e 180 gradi e mantenere stabilmente la posizione raggiunta.
La rotazione del perno viene ottenuta tramite un motore in corrente continua
ed un meccanismo di demoltiplica che consente di ottenere un'ottima coppia in fase di rotazione.
L'azionamento del motore viene effettuato 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.
In dotazione ai servo vengono anche fornite una o più squadrette forate da poter innestare sul perno
per poter tramettere il movimento ad altre parti meccaniche.
L'uso più comune dei servo avviene nel campo dell'aereomodellismo in cui i servo vengono utilizzati per
muovere gli alettoni posti sulle ali e sulla coda dell'aereo o per agire sul'accelleratore del motore.
Come si usa un Servo RC
I Servo RC sono nati per essere pilotati nel modo più semplice possibile. L'esigenza primaria
era quella di poter effettuare la movimentazione senza l'ausilio di circuiterie troppo complesse
o l'uso di sistemi a microprocessore.
Un servo RC dispone solitamente di soli tre fili attestati ad un connettore femmina per pin strip
a passo 2.54mm come visibile in figura 2:
Due di questi fili sono riservati all'alimentazione in corrente continua a 5 volt (da 4.5 a 6.5 per la
precisione). Il positivo è di colore rosso, il negativo di colore nero. L'assorbimento massimo è di circa 180mA
per un Futaba S3003 ma può variare a seconda delle caretteristiche del servo.
Il terzo filo, normalmente di colore bianco, è riservato per il controllo del posizionamento. Su questo filo è necessario
applicare un segnale impulsivo o PWM (dall'inglese Pulse Wave Modulation) le cui caratteristiche sono "quasi" univoche
per qualsiasi Servo RC disponibile in commercio. Per essere sicuri di riuscire a pilotare qualsiasi Servo RC il nostro circuito
di pilotaggio dovrà essere in gradi di inviare al servo circa 50 impulsi positivi al secondo 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 servo RC si posiziona esattamente al centro del
suo intervallo di rotazione. Da questo punto il perno può ruotare fino a -90 gradi (senso antiorario) se l'impulso
fornito ha una durata inferiore a 1.5ms e fino +90 gradi (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 servo.
Figura 3 - Relazione tra il segnale PWM e la rotazione del perno
Controller seriale Pololu per pilotare fino 16 servo RC da una sola porta RS232
Il controller Pololu POSSC è in grado di generare fino a 16 impulsi PWM indipendenti tra loro e di durata variabile tra
0.25ms e 2.75ms sufficienti per il controllo della maggior parte dei Servo RC disponibili in commercio.
Per semplificare ulteriormente il pilotaggio dei Servo RC, la società Pololu produce un controller dotato di un PICmicro
già programmato, in grado di riconoscere una serie di comandi di posizionamento da una semplice porta seriale RS232 standard
o da una linea asincrona TTL invertita (utile per interfacciare il controller direttamente ad un microprocessore).
La durata degli impulsi PWM su ogni uscita può essere controllata in maniera indipendente con una risoluzione di 0.5uS,
pari ad una rotazione di soli 0.045 gradi.
Figura 4 - Il controller seriale per 16 servo RC Pololu POSSC
Specifiche tecniche
Dimensioni |
382 x 578 mm |
Numero di servo |
16 |
Voltaggo PWM |
0 - 5 V |
Risoluzione PWM |
1 µs (circa 0.1°) |
Range PWM |
250-2750 µs |
Alimentazione logica |
5.6-20 V |
Linea dati |
Seriale RS232 (±12V) o TTL (0-5V) |
Baud rate |
1200-38400 (con rilevamento automatico) |
Schema elettrico e descrizione funzionale
In figura 5 riportiamo lo schema elettrico del controller Pololu POSSC seguito da una descrizione funzionale
delle varie parti circuitali.
Figura 5 - Schema elettrico del controller seriale per 16 servo RC Pololu POSSC
Sezione RS232
La sezione circuitale nell'area trattegiata in alto a sinistra dello schema, converte i
segnali a +/- 12 volt in entrata dalla linea RS232 in segnali a 0/5 volt positivi
adatti al resto della logica di controllo.
Il connettore a 9 pin di tipo a vaschetta (meglio conosciuto come connettore Canon) è di tipo
femmina e potrebbe innestarsi direttamente sul connettore Canon maschio normalmente presente
su un normale PC. La disponibilità in un connettore femmina, indica chiaramente la tipologia di funzionamento
del controller rispetto allo standard RS232 è cioè la simulazione di un apparato di tipo DCE
(Data Communication Equipment) ovvero un apparato asservito al DTE (Data Terminal Equipment) costituito
in questo caso dal PC. Questo significa, in termini pratici, che se dobbiamo connettere il controller al nostro PC
tramite un cavo seriale dobbiamo assicurarci di usare un cavo non invertente, ovvero lo stesso tipo di
cavo usato per collegare i modem, evitando assolutamente di usare i cosiddetti cavi null modem o invertenti.
Nel caso invece si abbia la necessità di connettere il controller alla linea seriale TTL di un microcontroller,
è possibile evitare di montare i componenti CON3, R2, R3 e Q1 ed applicare direttamente il segnale, già
a 0/5 volt positivi, direttamente al pin S del connettore CON2.
In entrambe i casi la linea TX, proveniente dal PC o dal micro, arriva al pin RX
del microprocessore PICmicro 16C63A che provvederà ad interpretare i comandi
ricevuti e ad effettuare le attuazioni conseguenti.
Connettore di alimentazione CON1
Sui pin + e - del connettore CON1 dobbiamo fornire la tensione di alimentazione
per i 16 servo RC. La tensione normalmente è compresa tra i 4.6 ed i 6 volt DC ma
potrebbe richiedere spunti di corrente notevoli specialmente se tutti e 16 i servo
vengono attivati contemporaneamente. Fate riferimento alla documentazione dei servo RC utilizzati
per decidere il tipo di alimentazione da adottare.
Connettore di alimentazione CON2
Su pin + e - di CON2 dobbiamo fornire la tensione di alimentazione per la logica di controllo.
Grazie all'integrato stabilizzatore U2, un LM2931, possiamo applicare su questi pin una tensione
compresa tra i 5.6 ed i 20 VDC. Il pin S come già detto in precedenza può essere usato in alternativa
al connettore RS232 in caso di trasmissione dei dati seriali dal micro a livello TTL.
Su pin + e - di CON2 dobbiamo fornire la tensione di alimentazione per la logica di controllo.
Prova pratica
Una volta montato il controller vediamo come sia possibile verificarne il funzionamento. In figura 6
riportiamo una foto del banco di prova utilizzato.
Figura 6 - Il controller POSSC collegato a 16 servo Futaba S3003
Come si vede nella foto sono stati collegati 16 servo ad altrettante uscite disponibili sul controller. L'ingresso
RS232 è stato quindi collegato con un normale cavo seriale non invertente alla porta COM1 di un PC dotati di
Sistema operativo Windows 2000 (qualsiasi altra versione ovviamente va bene allo scopo).
Tra i protocolli di comunicazione riconosciuti dal controller POSSC abbiamo scelto il più semplice
Mini SSC II descritto a pagina 11 dello User Guide della Pololu disponibile per il download nella sezione
Link e Download in fordo a questo articolo.
Questo protocollo richiede l'invio di soli tre byte per posizionare ogni singolo servo come visibile in figura 7.
Figura 7 - Il pacchetto base del protocollo Mini SSC II
Per utilizzare questo protocollo è necessario chiudere il ponticello J1.
Per generare il pacchetto di dati sulla seriale RS232 del nostro PC abbiamo utilizzato la versione demo del programma
RS232 Hex Com Tool v3.0 disponibile per il download dal sito http://www.viddata.com.
Figura 8 - Screen shot del programma RS232 Hex Com Tool v3.0
Questo programma consente di specificare una stringa di byte da inviare su seriale e di memorizzare degli script molto semplici
per la generazione automatica delle sequenze di caratteri.
Per testare il movimento ti tutti e 16 i servo ho usato questo semplice script:
_LINE
Tutti a destra
FF 10 00 FF 11 00 FF 12 00 FF 13 00 FF 14 00 FF 15 00 FF 16 00 FF 17 00
FF 18 00 FF 19 00 FF 1A 00 FF 1B 00 FF 1C 00 FF 1D 00 FF 1E 00 FF 1F 00
1.0
_LINE
Tutti a sinistra
FF 10 C0 FF 11 C0 FF 12 C0 FF 13 C0 FF 14 C0 FF 15 C0 FF 16 C0 FF 17 C0
FF 18 C0 FF 19 C0 FF 1A C0 FF 1B C0 FF 1C C0 FF 1D C0 FF 1E C0 FF 1F C0
1.0
1.25
Link e download
Segnala questo articolo:
Parole chiave: - Domotica - PIC -
|