Le problème avec ce code c'est qu'on ne connais pas la décélération réelle, donc il est très difficile de calculer le point de décélération.
Si ta vitesse est de 10 mm/s et une décélération de 2mm.s-² et que tu veux arriver à une vitesse de 0 mm/s a la position il te faudra :
t = V/a = 10 / 2 = 5s
Pour connaitre la distance
la formule est d = t²/2a donc 5² / 4 = 6.25 mm
donc tu dois commencer à décélérer à 6.25 mm de la fin.
C'est difficilement applicable a ton code.
Si tu me donne une bonne semaine je vais développer un code de positionneur pour moteur PàP avec prise en compte d'une accélération et une décélération différente. Il faut que je récupère un Arduino dans mon box (je suis SDF).
si tu veux arriver a une vitesse différente de zéro c'est a peine plus compliqué
t = (V1-V0)/a
d = t²/2a + V0.t
donc si tu veux arriver a une vitesse de 0.5mm/s en fin de trajectoire (vitesse Start/Stop)
t = 10 -0.5 /2 = 4.75s
d = (4.75²/4) + (4.75 x 0.5) = 5.64 + 2.75 = 8.39 mm
si je pars de ces formules que tu as données, et que je transforme une vitesse en mm/s par une vitesse en step/s
je ne fais pas d'erreur
donc vitesse max = 5400 step/s , décélération 200 step /s
T = V/A = 5400/200 = 27sec.
distance = 27² / 400 = 1,8 step ca me parait faux
ou est mon erreur ?
maintenant je sais que 800step = 1 tour de vis à bille soit 5mm
donc la vitesse = 5400 step/s = 6,75 tr/s = 33,75 mm/s
je veux une accélération de 200 step/s soit 200/800 = 0,25tr/s = 1,25mm/s²
donc T= 33,75/1,25 = 27 sec.
distance = 27x27/2x1,25=291,6 mm soit en ramené en pas = 58,32 tour = 46656 step
en considerant que ce calcul est juste, pourquoi je ne retombe pas sur mes pas (sans jeu de mot) avec le premier calcul ?