Znaleziono 2 wyniki
Wróć do „avr zaprogramowanie ruchu”
- 20 wrz 2006, 08:30
- Forum: Elektronika ogólna
- Temat: avr zaprogramowanie ruchu
- Odpowiedzi: 7
- Odsłony: 2995
- 19 wrz 2006, 22:33
- Forum: Elektronika ogólna
- Temat: avr zaprogramowanie ruchu
- Odpowiedzi: 7
- Odsłony: 2995
Sprawa jest trochę skomplikowana do łatwego wytłumaczenia
Może coś takiego
Złożenia :
droga -s- jest w krokach ,prędkość -v- w krokach na sekundę a przyspieszenie -a- w krokach na sekunde kwadrat.
Parametry które podajesz na początku to prędkość maksymalna -v max- oraz przyspieszenie (akceleracja) -a max-
na bieżąco podajesz procesorowi wielkość przesunięcia w krokach - S - ,które ma wykonać po wykonaniu ruchu będzie czekał na następną wartość
Z dwóch podstawowych wzorów v=a*t oraz s=at^2/2 wyliczy procek na początku dla v max i a max ilość kroków -Sp- potrzebnych do osiągnięcia maksymalnej prędkości,
jeśli założysz że przyspieszenie i opóżnieni będzie takie same to jest prościej:
Przykład :
v max=300 kroków na sekunde
a max=100 kroków na sekunde kwadrat
t=v/a =300/100 =3 s maksymalny czas akceleracji
mając t podstawiamy
Sp=100*3^2 /2= 450 kroków
Mając to policzone na początku procek po otrzymaniu S czyli założonej ilości kroków do przesunięcia musi rozpatrywać dwa przypadki
1. Jeżeli S<=2*Sp to znaczy,że silnik nie może rozpędzić się do maksymalnych obrotów ponieważ nie zdąży zachamować (lub rozpędzi się aby natychmiast hamować )
obliczamy potrzebny czas t=sqr(4S/a) przez który będziemy przyspieszać a następnie opóżniać silnik
2.Jeżeli S>2Sp silnik przejedzie określony kawałek drogi z prędkością maksymalną.
Z tych samych wzorów można obliczyć czas między kolejnymi krokami które ma wykonać silnik .
Można też pójść inną drogą i przyjąć jakieś stałe przyspieszenie i na tej podstawie stworzyć tablicę która będzie zawierała np.czasy opóżnienia między kolejnymi krokami ,dla przyspieszenia czytamy kolejno w górę a dla opóżnienia w dół .Wielkość indeksu maxymalnego liczysz podobnie jak w punkcie 1
Nie chce mi sie wgłębiac dalej może to cos pomoże .
Może coś takiego
Złożenia :
droga -s- jest w krokach ,prędkość -v- w krokach na sekundę a przyspieszenie -a- w krokach na sekunde kwadrat.
Parametry które podajesz na początku to prędkość maksymalna -v max- oraz przyspieszenie (akceleracja) -a max-
na bieżąco podajesz procesorowi wielkość przesunięcia w krokach - S - ,które ma wykonać po wykonaniu ruchu będzie czekał na następną wartość
Z dwóch podstawowych wzorów v=a*t oraz s=at^2/2 wyliczy procek na początku dla v max i a max ilość kroków -Sp- potrzebnych do osiągnięcia maksymalnej prędkości,
jeśli założysz że przyspieszenie i opóżnieni będzie takie same to jest prościej:
Przykład :
v max=300 kroków na sekunde
a max=100 kroków na sekunde kwadrat
t=v/a =300/100 =3 s maksymalny czas akceleracji
mając t podstawiamy
Sp=100*3^2 /2= 450 kroków
Mając to policzone na początku procek po otrzymaniu S czyli założonej ilości kroków do przesunięcia musi rozpatrywać dwa przypadki
1. Jeżeli S<=2*Sp to znaczy,że silnik nie może rozpędzić się do maksymalnych obrotów ponieważ nie zdąży zachamować (lub rozpędzi się aby natychmiast hamować )
obliczamy potrzebny czas t=sqr(4S/a) przez który będziemy przyspieszać a następnie opóżniać silnik
2.Jeżeli S>2Sp silnik przejedzie określony kawałek drogi z prędkością maksymalną.
Z tych samych wzorów można obliczyć czas między kolejnymi krokami które ma wykonać silnik .
Można też pójść inną drogą i przyjąć jakieś stałe przyspieszenie i na tej podstawie stworzyć tablicę która będzie zawierała np.czasy opóżnienia między kolejnymi krokami ,dla przyspieszenia czytamy kolejno w górę a dla opóżnienia w dół .Wielkość indeksu maxymalnego liczysz podobnie jak w punkcie 1
Nie chce mi sie wgłębiac dalej może to cos pomoże .