Sei sulla pagina 1di 7

ELECTROYOU.

IT

Massimo Peino (mpeino)

CONTROLLARE UN SERVOCOMANDO CON UN


PIC
15 November 2011

Introduzione

E' necessario innanzitutto fare una breve introduzione sul servocomando o servo.
Sono dei dispositivi usati soprattutto nel modellismo.
Dal corpo del servo esce un perno zigrinato su cui si applica la cosidetta "squadretta"
che altro non è che una piccola staffa
Il perno puo' ruotare di 90° (45°- 0°- 45°)anche se la maggior parte arriva a 180°
(90°- 0°- 90°).

Descrizione del servo dal punto di vista elettronico

Da un servocomando escono tre fili. Due fili per l'alimentazione che generalmente
sono di colore nero o marrone per il negativo e rosso per il positivo.
L'alimentazione è compresa tra 4.8 V e 6.0 V. Di solito è così, ma è meglio dare
un'occhiata alle caratteristiche fornite dal costruttore.

Il terzo filo è di solito bianco o giallo ed è destinato al segnale di COMANDO.

servo.JPG

CONTROLLARE UN SERVOCOMANDO CON UN PIC 1


ELECTROYOU.IT MASSIMO PEINO (MPEINO)

Con questa premessa entriamo nel vivo dell'argomento.

Il segnale di comando è un'onda quadra che deve essere ripetutamente inviata


in quanto, se questo non avviene, il perno del servo girerà in maniera libera, a
seconda, naturalmente, dell'attrito che vi è negli ingranaggi, nonostante sia presente
l'alimentazione.
Il periodo in linea di massima deve avere una durata di 20ms, mentre l'impulso
positivo deve avere una durata compresa tra 0.5ms e 2.5ms per i servi che ruotano
di 180°. Anche questa volta, sarà bene dare un'occhiata alle specifiche tecniche del
costruttore.

Il servo che ho utilizzato (quello della foto) a 180° vibra e va sotto sforzo.
Quindi nel suo utilizzo non andrò oltre i 90° (45° - 0° -45°).

A seconda della durata dell'impulso, il perno del servo girerà di un certo numero di
gradi.

Con il grafico sottostante cerco di chiarire i concetti sopra menzionati.

CONTROLLARE UN SERVOCOMANDO CON UN PIC 2


ELECTROYOU.IT MASSIMO PEINO (MPEINO)

Se il segnale di comando sarà un'onda quadra positiva della durata di 1,5 ms, il
perno del servo si posizionerà al centro. Se sarà di 1 ms o 2 ms, si posizionerà
rispettivamente a destra o a sinistra, a seconda, naturalmente, di come guardiamo il
servo.

Schema del circuito

Come potete notare, lo schema è molto semplice. Io ho utilizzato il Pic16f628.

CONTROLLARE UN SERVOCOMANDO CON UN PIC 3


ELECTROYOU.IT MASSIMO PEINO (MPEINO)

Ho collegato alla porta B (RB1- RB2)due pulsanti normalmente aperti. Le due


resistenze di pull-down poste tra i pulsanti e massa servono per fissare a livello basso
i rispettivi piedini di I/O quando i pulsanti non sono premuti.
Utilizzerò il pulsante P1 per fare girare il servo a destra e P2 per farlo girare a
sinistra (naturalmente dipende da come si guarda il servo).
RB0 invece è collegata al servo e fornisce il segnale di comando.
Per questo circuito, il quarzo utilizzato è di 4 MHz.

Flow chart del programma

Come potete notare, il flow chart è molto semplice e intuitivo. Quindi non ha bisogno
di molti commenti.
Dallo schema a blocchi si nota comunque che il servo rimarrà nella posizione di
destra o sinistra finchè si tiene premuto un pulsante, dopo di che si posizionerà al
centro.
Questo per una mia precisa scelta, in quanto quest'esempio di programmazione fa
parte di un proggetto più grande, che spero di pubblicare se sarà terminato con
successo.

Dal flow chart si può notare che ci sono due interruzioni che prenderò in esame con
lo schema sottostante.

CONTROLLARE UN SERVOCOMANDO CON UN PIC 4


ELECTROYOU.IT MASSIMO PEINO (MPEINO)

Il software che scaturisce dal questo schema è di vitale importanza per il


funzionamento del progetto.
Senza questa tecnica non funziona nulla o comunque funziona male (io ci ho provato).
Come ho potuto studiare dal libro del buon Paolino questa è una tecnica antirimbalzo
software che serve per contrastare il fatto che il pulsante non assume in maniera
istantanea la posizione chiusa, ma avviene con dei rimbalzi della parte meccanica del
componente.

ANALISI DEL FILE SORGENTE

Il compilatore utilzzato è il MikroC PRO.


void destra (void)

{
RB0_bit=1; //pongo l'uscita RB0 a 1
delay_us(1000); //per un tempo di 1000us
RB0_bit=0 ; //pongo l'uscita RB0 a 0
delay_us(19000) ; //per un tempo di 19000us
}

void sinistra (void)

{
RB0_bit=1;

CONTROLLARE UN SERVOCOMANDO CON UN PIC 5


ELECTROYOU.IT MASSIMO PEINO (MPEINO)

delay_us(2000);
RB0_bit=0 ;
delay_us(18000) ;
}

void centro(void)

{
RB0_bit=1;
delay_us(1500);
RB0_bit=0 ;
delay_us(18500) ;
}

Queste sono le tre funzioni che vengono richiamate quando si spinge il pulsante. I
file sorgenti sono molto semplici grazie all'uso della funzione delay_us() fornita dal
compilatore MikroC.

Qualcuno mi potrebbe dire che avrebbe utilizzato delle macro menmoniche e delle
variabili per una migliore leggibilità e per un più facile riutilizzo del codice per un
prossimo futuro. Sono pienamente daccordo con quel qualcuno, ma in questa maniera
vengono, secondo me, rafforzati i concetti spiegati prima.

{
.....
while (1)
{
centro();
while(( RB1_bit=0) ||( RB2_bit=0)) //resta in attesa di quale pulsante è premuto
{
if(RB1_bit=1){ //se viene premuto P1 chiama la funzione
delay_ms(50);
if(RB1_bit=1){
destra (); //destra()
}
}
if(RB2_bit=1){ //se viene premuto P2 chiama la funzione
delay_ms(50);
if(RB2_bit=1){
sinistra(); //sinistra()
}
}
}

CONTROLLARE UN SERVOCOMANDO CON UN PIC 6


ELECTROYOU.IT MASSIMO PEINO (MPEINO)

}
}

Download

Da qui si può scaricare il file zippato con il sorgente del programma

Conclusione

Questo è il cuore del programma. Penso che sia abbastanza ben commentato e che
non ci sia bisogno di ulteriori spiegazioni.

Siamo così arrivati alla fine e vorrei concludere dicendo che, visto la semplicità
dell'articolo, è chiaro che non è diretto ai guru dei pic, ma a coloro che, come me,
sono all'inizio e che vogliono spingersi oltre l'accensione del famoso led.

Estratto da "http://www.electroyou.it/mediawiki/
index.php?title=UsersPages:Mpeino:controllare-un-servocomando-con-un-pic"

CONTROLLARE UN SERVOCOMANDO CON UN PIC 7

Potrebbero piacerti anche