Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.

Come funziona un servocomando

Autore: Giovanni Bernardo | Data pubblicazione: 26 giugno 2010
Categorie: Elettronica

I servocomandi, o più semplicemente servo, sono molto usati nel modellismo e nella robotica amatoriale. Si tratta di piccoli dispositivi, generalmente contenuti in uno scatolotto di materiale plastico, muniti di un motorino, una serie di ingranaggi di riduzione e circuiteria. Parleremo quindi in questa brief-note, dei servocomandi “da hobby” anche noti come servocomandi RC, perchè generalmente utilizzati in abbinamento alle riceventi dei RadioComandi. Più che altro la denominazione di “Servocomandi RC” assicura che i servo funzionino seguendo un preciso standard di comunicazione.

Difatti esistono anche alcuni servocomandi, che però NON sono definiti “RC”, che seguono standard di comunicazione proprietari, come ad esempio i servo della Dynamixel, che comunicano tramite un’interfaccia RS-485.

Dal corpo di un servocomando fuoriesce un perno di rotazione, al quale possono essere fissate, mediante  un incastro zigrinato e una vite centrale, le cosiddette “squadrette” (Horn in inglese), di varie forme, materiali e dimensioni e che servono per collegare il servocomando al dispositivo che esso dovrà “muovere”. Le squadrette generalmente sono forate per permettere l’ancoraggio, tramite viti autofilettanti, a staffe oppure per permetterci di inserire al loro interno gli alberini di comando. Per applicazioni di robotica sono spesso necessarie anche delle Staffe (Frames in inglese) in alluminio, plastica o materiali vari, da ancorare alle squadrette tonde, che permettono di realizzare articolazioni complesse formate da più servo.

Il perno di rotazione è in grado di effettuare un’escursione minima garantita di 90°, ma in genere si arriva tranquillamente a 180°. Il servo ha una posizione centrale e può ruotare di 45° (o 90°) a destra e 45° (o 90°) a sinistra.

Attenzione: io qui mi riferisco spesso ad una rotazione di 90° (45-0-45), per motivi di sicurezza, ma al 99.9999% il servo che avete tra le mani in questo momento è in grado di ruotare di 180° (90-0-90), anche se alcuni servo economici sforzano arrivati alle estremità.

Questi dispositivi sono molto utilizzati, ad esempio, sulle automobili radiocomandate per aprire/chiudere la valvola del gas, per effetuare la sterzata, oppure ancora sugli aereoplani radiocomandati o ancora nei piccoli robot in cui vanno a costituire, mediante squadrette, staffe e leveraggi vari, le varie giunture degli arti dei robot.

La Hitec, nota casa produttrice di Servo RC insieme alla Futaba, ha in catalogo servocomandi per svariate applicazioni tra cui quelli specifici per robotica, però a volte vengono preferiti servocomandi standard anche per applicazioni di robotica amatoriale in quanto il prezzo è più accessibile

Servocomando analogico della Hitec, modello HS-322HD, con corredo di squadrette e accessori. Sul servocomando è montata una squadretta tonda. Tra gli accessori, oltre alle squadrette (in materiale plastico bianco) si notano a destra i 4 gommini utilizzati per smorzare le vibrazioni, da montare nei fori di fissaggio del servocomando. Le 4 viti di fissaggio saranno fatte passare attraverso le 4 boccole dorate, da inserire nei gommini. Questo servo ha una coppia di 3.7Kg/cm a 6V e l'ho pagato circa 10 euro.

Quando vi capita di acquistare dei servocomandi su Ebay, se sono nuovi, pretendete sempre di avere il corredo di squadrette in quanto un servo nuovo è sempre venduto con questi piccoli accessori, altrimenti non può essere utilizzato o quanto meno lo utilizzerete con difficoltà.

I servocomandi, a dispetto delle loro ridotte dimensioni, grazie a sistemi di riduzione ad ingranaggi più o meno sofisticati, hanno delle forze torcenti spaventose e sono in grado di spostare diversi Kg (tanto per fare un esempio, l’Hitec HS-805BB è in grado di spostare circa 25Kg, ma alcuni modelli di servo arrivano anche oltre 45Kg).

Un’altra peculiarità è quella di mantenere la posizione: una volta detto al servocomando di ruotare di un certo numero di gradi, e se tale comando viene inviato di continuo, rimarrà in quella posizione trattenendo il carico a cui è collegato. Ovviamente bisogna sempre scegliere un servocomando che abbia la potenza necessaria a svolgere il compito assegnatogli. Spesso, nei servocomandi economici, capita che gli ingranaggi, generalmente costruiti in Nylon, si spacchino proprio perchè il servocomando viene utilizzato al limite della propria forza. Per tale motivo esistono servocomandi con ingranaggi metallici o materiali plastici di un certo livello. Quello della foto in alto, ad esempio, utilizza ingranaggi in Karbonite: un brevetto della Hitec che permette di avere un buon compromesso tra prezzo, peso e resistenza.

Bisogna inoltre distinguere tra servocomandi analogici e digitali. In questa sede tratterò solo gli analogici perchè sono i più diffusi e più economici. Vengono chiamati analogici in quanto il posizionamento del perno viene fatto controllando la rotazione di un piccolo potenziometro posto all’interno del servocomando e messo in movimeno dagli stessi ingranaggi che muovono il perno. Nei servi analogici il motorino non è alimentato quando il servo si trova nella posizione comandata. I servo digitali, invece, hanno sistemi digitali per controllare il posizionamento e forniscono quindi una risposta più rapida e precisa, hanno altre opzioni tra le quali il settaggio della velocità, il controllo di assorbimento, temperatura ecc (possono essere programmati”, raggiungono forze torcenti più elevate ma per contro costano un occhio della testa e consumano più corrente in quanto il motorino è sempre alimentato. In ogni caso i servocomandi RC sia digitali che analogici seguono lo stesso standard di comunicazione: per cui generalmente sono intercambiabili.

Alcuni forum stanno reindirizzando le loro discussioni su questa pagina: non può che farmi piacere, ma alcuni stanno scrivendo delle mastodontiche fesserie del tipo: “quell’articolo parla solo dei servo digitali”… A parte il fatto che chi ha detto questo probabilmente non avrà nemmeno letto l’articolo ma avrà guardato solo le figure (ma nemmeno: non mi pare di aver messo foto di servi digitali!), le cose che sto scrivendo (con cura tra l’altro) valgono sia per i servo digitali che per quelli analogici, purchè si tratti di servi RC! Seguono lo stesso standard di comunicazione!

Una comparazione tra servo analogici e digitali può essere trovata a questo link

Il servocomando, abbiamo detto, ha quindi una rotazione limitata: 90° (45 a destra e 45 a sinistra o 90°  a destra e sinistra per i servo che lo consentono), questo perchè hanno all’interno un perno che ne blocca l’escursione.

Questo è vero parzialmente: esistono anche dei servocomandi a rotazione continua, ma si usano per applicazioni speciali

In molti effettuano la modifica dei servocomandi rimuovendone i blocchi: in questo caso il servocomando può essere utilizzato, ad esempio, come un motoriduttore per collegarci su delle ruote per movimentare il nostro robottino o la nostra macchinina: è una soluzione valida ed economica.

Arriviamo quindi alla parte cruciale: come si pilota un servocomando?

Da un servocomando fuoriescono 3 fili: due sono per l’alimentazione e generalmente sono nero o marrone per il negativo e rosso per il positivo; il terzo filo, quello destinato al segnale di comando, generalmente è giallo (Hitec), bianco (Futaba) o arancione o nero.

Cavetto di un servo prodotto dalla Hitec. La piedinatura segue quella standard da 2,54mm. Non tutti i servocomandi, però, presentano il connettore fatto in questa maniera

L’alimentazione generalmente è compresa tra 4.8 e 6volts (ma fate riferimento al datasheet del vostro servocomando) . Alla massima tensione il servo fornisce il massimo della potenza.

Il segnale di comando è costituito da un’onda quadra inviata ripetutamente: il fronte positivo deve avere una durata compresa tra 1 e 2 (tra 0,5 e 2,5 per i servo che ruotano di 180°) millisecondi e la somma del fronte positivo e quello negativo (ovvero: il periodo) deve essere di circa 20mSec (frequenza: 50 Hz). Il segnale fatto in questo modo deve essere inviato di continuo se si vuole che il servocomando, sotto sforzo, mantenga la posizione desiderata:

Possiamo notare che tale segnale è in pratica un segnale  di tipo PWM (Pulse Width Modulation) : per pilotare un servocomando andiamo a modulare la durata della semionda positiva.

I servocomandi in grado di ruotare di 180° accettano un impulso tra 0,5 e 2,5mSec.

Ne approfitto quindi per introdurre il concetto di Duty Cycle (d): esso rappresenta il rapporto, espresso in percentuale, tra la durata della semionda positiva (τ) e il periodo (T) del segnale. Quando il fronte positivo dura 1mSec, essendo il periodo di 20mSec, il duty cycle varrà:

Possiamo quindi dire che un servocomando va pilotato mediante un segnale modulato in PWM alla frequenza di 50Hz, con un duty cycle compreso tra 5% e 10% . Valori al di fuori di questi possono portare a malfunzionamenti: il servo fischia, si surriscalda e può rompersi.

In realtà alcuni servocomandi possono essere pilotati non curandosi del periodo di 20mSec ma solo della esatta durata della semionda positiva: quella negativa potrà variare tra 10 e 40mSec circa, ma tale comportamento non è standard. Utilizzando un periodo (e quindi una durata totale) di 20mSec saremo certi di riuscire a far funzionare correttamente qualsiasi tipo di servocomando senza correre il rischio di romperlo.

Con un duty cycle del 5% (quindi: impulso di 1mSec), il servo si ruoterà tutto da un lato (45° a destra), con un duty cycle dal 10% (impulso di 2mSec), il servo si ruoterà tutto dall’altro lato (45° a sinistra). Il servo raggiungerà quindi la posizione centrale con un impulso di 1,5mSec:

I servo che hanno un’escursione di 180° ruoteranno di 90° a destra con un impulso di 0,5mSec e 90° a sinistra con un impulso da 2,5mSec. In pratica possiamo dire che c’è una rotazione di 45° ogni 0,5mSec.

Realizzare un’onda quadra adatta allo scopo è relativamente semplice. In questo articolo potete vedere come pilotare un servocomando usando un picmicro (codice sorgente in Hitech-C).

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? SettoreZero è realizzato soltanto contenuti originali: tutti gli articoli sono curati con passione dagli autori e nulla viene copiato da altri siti. Supporta e mantieni in vita SettoreZero con una donazione: basta soltanto un caffè o una birra. Puoi supportare SettoreZero anche con uno dei progetti elencati nella sezione servizi o partecipare anche tu con un tuo articolo/progetto personale.

Se desiderate che SettoreZero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa.

Puoi andare alla fine dell'articolo e lasciare un commento. I trackback e i ping non sono attualmente consentiti.

  1. #1 da Simone il 26 giugno 2010

    Ma all’interno del servocomando il motorino elettrico è passo-passo o in corrente continua?
    I miei complimenti per il sito e per gli approfondimenti interessanti e ben fatti!!

  2. #4 da Andrea il 25 luglio 2010

    Devo controllare un servocomando da un PIC12F675, in C.
    Ho paura che le routine di delay siano troppo imprecise, (almeno quelle che ho io), per generare un onda precisa a 1.5 Ms.
    Quindi mi stavo chiedendo se utilizzare l’interrupt sul timer0.
    Riusciresti a scrivermi solo una bozza del codice,per capire come impostare il tutto? Poi volo da me..se riesci te ne sarei veramente grato!

    • #5 da Giovanni Bernardo il 25 luglio 2010

      Si, quelle routine sono imprecise, O metti un bel quarzo (mi pare che 12F675 arriva a 20MHz) e sfrutti gli interrupt, o usi le routine ad alta precisione che trovi su http://www.microchipc.com. Ora non ho tempo di scrivere del codice, alla fine si tratta solo di generare un’onda quadra, pin alto, ritardo, pin basso, ritardo, cominicia daccapo, non è niente di piu complicato che far lampeggiare un led

  3. #6 da Cristianoscr il 27 luglio 2010

    Per azionare un motore passo passo a 6 poli che va a 12 Volts posso utilizzare dei transistor C33725??
    Se non ho capito male io, al pin B (in mezzo) ci va il segnale uscente dal pic. e nei Pin E e C ci va la 12 Volt? Alimento correttamente il tutto facendo così?

    • #7 da Giovanni Bernardo il 27 luglio 2010

      Il C33725 è in realtà un BC337, la corrente di collettore del BC337è di 800mA, quanto assorbe il motore non te lo so dire. Eì una questione anche di assorbimento di corrente oltre che di tensione.
      Il BC337 è un NPN, per cui dando un impulso positivo alla base, conduce tra emettitore e collettore, l’emettitore va messo a massa e il collettore collegato aò carico, l’altro capo del carico va al positivo. Cerca con Google “transistor come interruttore”.

  4. #8 da ServoD il 4 settembre 2010

    “Possiamo notare che tale segnale è in pratica un segnale di tipo PWM (Pulse Width Modulation), ovvero un segnale modulato in ampiezza: per pilotare un servocomando andiamo difatti a modulare l’ampiezza della semionda positiva.”
    Detto così non mi pare tanto corretto: con ampiezza di solito si intende la tensione, secondo me dovresti cambiare termini e scrivere durata della semionda positiva, o duty cycle.

  5. #10 da massimiliano il 20 febbraio 2011

    aiutooo.
    è possibile comandare un servocomando con un timer per far aprire e chiudere una portella.
    questa portella deve stare chiusa per circa 7-8 ore per poi riaprirsi.
    se si vi prego di essere semplici nella spiegazione, in modo che anche un quasi profano come me possa capirla.

  6. #12 da Marco Pozzuolo il 23 aprile 2012

    CIao,
    domanda, ma se uso un’uscita CCP in PWM di un pic?
    Io ho un PIC16F1827 con 4 moduli CCP e quindi 4 uscite PWM.
    Si potrebbe usare queste 4 uscite per gestire 4 servi e costruire una specie di controller?
    Grazie

Devi essere collegato per lasciare un commento.

settorezero.com e il logo Zroid™ ©2007÷2013 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.