Citazione:
Originalmente inviato da faustog_2 il problema è che se fosse solo leggere un impulso e poi come risposta sommare un ritardo opportuno.. il discorso era già risolto... ma in caso di impulsi al di sotto dei 1500 uS occorre avere un ritardo ancora più breve... quindi come intuito qui da tutti IMPOSSIBILE.. per questo si può optare nel rielaborare il ritardo durante la pausa dei 20 - 30 millisecondo e quindi dare risposta opportuna diminuendo il ritardo. tutto qui |
Scusami Fausto, ma forse se tu usassi una teminologia opportuna ti si capirebbe meglio.
Tu devi generare un impulso PWM con frequenza totale di 50Hz in base ad un impulso che ti arriva.
Che i due impulsi inizino asseme non ti importa nulla, ne tantomeno importa al servo.
Pertanto l'unica cosa che devi fare è:
leggere l'impulso, calcolare la durata di quello da generare in base alla tua funzione di trasformazione e generare l'impulso in uscita.
Non centrano nulla i ritardi o gli anticipi (credo sia la corretta definizione di "ritardo ancora più breve")
In picbasic il tuo problema lo si risolve con ben 8 righe di codice.
Esempio per aumentare del 20% le corse:
while 1=1
a=pulsin(gpio.portain,1);
if (a!=0) then
b=((a-150)*1.2)+150;
low gpio.portaout;
pulsout(gpio.portaout, b,1);
endif
wend
Alla fine non mi sembra così complesso...