Lo schema qui sotto raffigurato é nato per risolvere il seguente problema:
Regolare T2 per la sua minima resistenza cioè cursore verso (max) centrale di T3
Regolare T3 per avere sul suo centrale o sul pin 5 la tensione di circa 4,4 / 4,42 V
In queste condizioni Regolare T1 per avere l'impulso positivo di 2 mS (T1 circa a 440 Ohm)
Girando T2 verso il minimo l'impulso positivo deve diventare di 1 mS e al massimo 2 mS
___________________________________________________________
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:
.title "SERVO" ;indicatore di direzione per servo .vers "ST62T10" ; 8 Mhz ; 24/07/2000 by Vittorio Crapellalsb1 .def 084h ;valore di servo a riposomsb1 .def 085h lsb .def 086h ;valore di servo in movimentomsb .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 PRINCIPALEmain ldi wdog,255 call delay clr x clr yiniz ldi wdog,255 jrr 0,port_b,iniz ;resta qui fino ad inizio impulso positivocont 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 contfine ld a,x ;mette valori servo default ld lsb1,a ld a,y ld msb1,actrl ldi wdog,255 ;aspetta che l'impulso vada alto jrr 0,port_b,ctrl clr x clr ymisura 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 misurazero 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 muoveverx ld a,x cp a,lsb1 jrnz vax ;essendo diverso valuta di quanto jp nill ;non si muove dalla partenza e tiene spentovax jrnc suba ;a é > di x pertanto va a sottrarre jp menx ;altrimenti x > di a suba sub a,lsb1cpia cpi a,1 ;verifica se é diverso almeno di 1 jrc nill ;é praticamente uguale e salta jp verall ;é oltre 1 pertanto va valutato se on/offnill ldi a,00000100b ;spegne rosso e giallo, accende verde ld port_a,a jp ritamenx ld a,lsb1 sub a,x jp cpiaverall ld a,y cp a,msb jrz oltre ;= jrnc piu_ ;> jp meno ;<piu_ jp piuoltre ld a,x cp a,lsb1 jrnz vai2 jp ctrlvai2 jrc min sub a,lsb1 cpi a,2 jrnc piu jp ritapiu ldi a,00000001b ;accende giallo ld port_a,a jp aspetmin ld a,lsb1 sub a,x cpi a,2 jrnc meno jp ritameno ldi a,00000010b ;accende rosso ld port_a,aaspet ld a,y ld msb,a ld a,x ld lsb,arita call delay jp ctrl delay ldi x,2 ;perde tempo circa 20 mSldiy ldi wdog,255 ldi y,255decy dec y jrnz decy dec x jrnz ldiy ret