SERVO
DRIVER Torna indietro
©
by Vittorio Crapella
Lo schema qui sotto raffigurato é nato per risolvere il seguente problema:
- Mediante un potenziometro poter azionare un SERVO del tipo usato nei tradizionali radiocomandi per aereomodellismo.
- Realizzare cioé un circuito in grado di generare impulsi con dutly-cycle adeguati secondo lo standar dei classici SERVO.
Argomenti sui Radiocomandi Altro schema per servocontrolli
Da una richiesta via E-Mail:
"..Mi servirebbe un circuito che mi indica con 2 led il senso di direzione di un servocomando (quelli per automodellismo), il circuito deve essere alimentato a 5 V..."
POSSIBILE SOLUZIONE
PROGRAMMA: Per prelevare SERVO.ZIP
.title "SERVO" ;indicatore di direzione per servo .vers "ST62T10" ; 8 Mhz ; 24/07/2000 by Vittorio Crapella lsb1 .def 084h ;valore di servo a riposo msb1 .def 085h lsb .def 086h ;valore di servo in movimento msb .def 087h .org 0880h ;*** Setta la porta B ldi port_b,00000000b ;TUTTI INPUT ldi pdir_b,00000000b ldi popt_b,00000000b ;*** Setta la porta A ldi port_a,00000000b ;3 out ldi pdir_a,00000111b ldi popt_a,00000111b ;PROGRAMMA PRINCIPALE main ldi wdog,255 call delay clr x clr y iniz ldi wdog,255 jrr 0,port_b,iniz ;resta qui fino ad inizio impulso positivo cont ldi wdog,255 jrr 0,port_b,fine ;se ingresso va a zero salta inc x ;altrimenti valuta tempo alto servo jrnz cont inc y jrnz cont fine ld a,x ;mette valori servo default ld lsb1,a ld a,y ld msb1,a ctrl ldi wdog,255 ;aspetta che l'impulso vada alto jrr 0,port_b,ctrl clr x clr y misura ldi wdog,255 jrr 0,port_b,zero ;se ingresso va a zero salta inc x ;altrimenti valuta tempo alto servo jrnz misura inc y jrnz misura zero ld a,y cp a,msb1 ;msb1 contiene partenza defoult servo jrz verx ;se permane uguale verifica x jp verall ;altrimenti deve valutare dove si muove verx ld a,x cp a,lsb1 jrnz vax ;essendo diverso valuta di quanto jp nill ;non si muove dalla partenza e tiene spento vax jrnc suba ;a é > di x pertanto va a sottrarre jp menx ;altrimenti x > di a suba sub a,lsb1 cpia cpi a,1 ;verifica se é diverso alemeno di 1 jrc nill ;é praticamnete uguale e salta jp verall ;é oltre 1 pertanto va valutato se on/off nill ldi a,00000100b ;spegne rosso e giallo, accende verde ld port_a,a jp rita menx ld a,lsb1 sub a,x jp cpia verall ld a,y cp a,msb jrz oltre ;= jrnc piu_ ;> jp meno ;< piu_ jp piu oltre ld a,x cp a,lsb1 jrnz vai2 jp ctrl vai2 jrc min sub a,lsb1 cpi a,2 jrnc piu jp rita piu ldi a,00000001b ;accende giallo ld port_a,a jp aspet min ld a,lsb1 sub a,x cpi a,2 jrnc meno jp rita meno ldi a,00000010b ;accende rosso ld port_a,a aspet ld a,y ld msb,a ld a,x ld lsb,a rita call delay jp ctrl delay ldi x,2 ;perde tempo circa 20 mS ldiy ldi wdog,255 ldi y,255 decy dec y jrnz decy dec x jrnz ldiy ret[ Elettronica ] Torna indietro