Buonasera,
Sto utilizzando da diversi giorni un driver senza controller per motore passo-passo bipolare e dopo aver giocato con le variazioni di velocità, vorrei poter descrivere con il codice quanto riportato in oggetto.
Dopo aver letto varie cose , ho deciso di affidarmi a questo articolo :
http://www.linearmotiontips.com/how-to-calculate-triangular-trapezoidal-move-profile/
e quest’ altra pagina :
( http://www.womackmachine.com/)
Vorrei qui riportare i passaggi che sto implementando nell sketch sperando di confrontarli con qualcuno di voi.
Trovare velocità e accelerazione per un movimento di 200 passi in 3 secondi
Ovvero come far girarare il motorino di 180° ( 0.9°/step) in 3 secondiHo provato a ragionare in passi , non in gradi e non in radianti.
- Step_totali = 400 passi
- Accelerazione = - Deccelerazione
- Interrupt Timer1
L’interrupt del timer1 interviene ogni Dti (ms) ed esegue 1 passo. Il tempo tra un passo e l’altro determina la velocità del motorino, per cui Dti verrà calcolato in base alla velocità richiesta.quindi osservando il grafico di cui sopra
=> X = 200 passi
=> T = 3 secondiVmax = 2Vavg = 2X/T = 2(200 passi/3 sec) = 133,3 passi /sec
ta = td = T/2 = 3sec/2 = 1,5 sec
A = -D = 2Vmax/T = 4X/T^2 = 200 passi*4/3^2 = 88,8 passi /sec^2
Dti = 1/133,3 = 0,0075 sec = 7,5ms
Quindi nel codice scriverò : Timer1.inizitialize(Dti);
Con quest’ultimo passaggio trovo ( senza considerare gli errori) quanti overflow devo contare prima di raggiungere la velocità richiesta.
Verifica:
dt = 1/2 T Vmax = 1/23s133,3 step/s = 1,5*133,3 = 199,5 ( circa 200)
A quella velocità raggiungo i 200 passi ( ovvero X ) in 3 secondi.proseguo:
da = 1/2 ta Vmax = 1/2*(3s/2)*133,3 = 99,9 step → ‘acceleration distance’
Ora quello che non capisco è come implementare l’accelerazione A
e se ‘da’ si riferisce alla spazio percorsa durante l’accelerazione ?
Qualcuno di voi ha già provato ? avete qualche suggerimento ?
Grazie per qualsiasi delucidazione