Wpis z mikrobloga

Znajdzie się jakiś mirek co pomoże z problemem?
Mam silnik krokowy i chce rozpędzać go przy pewnych założeniach:
Przykładowo
Rozpęd ma trwać 5sekund i 10kroków
Prędkość finalna 4kroki/s
Problem polega na tym, że nie wiem ile czasu powinny trwać poszczególne kroki.
Każdy z nich będzie coraz krótszy to wiem ale jak to rozpisać?
#silnikikrokowe #elektronika #automatyka #programowanie
  • 13
@zakzag: Napisałem ci "krótki" program na arduino do robienia tego co chciałeś.
Jest kilka nieobsłużonych egdecase'ów ale nie chciałem zbytnio komplikować

double acceleration = 4 / 5; // [step / (s^2)]
double maxSpeed = 10; // [step / s]

double currSpeed = 0; // [step / s]
double lastTimeUS = 0; // [10^-6 s]
double timeSinceEgdeUS = 0; // [10^-6 s]

#define STEP_PIN 12//
#define DIR_PIN 13//

void setup() {
pinMode(STEP_PIN,
@smutna_rzodkiewka:

delayMicroseconds(1);

XD ( )
Dzielenie double przez double oraz dodanie double do wyniku typu double:
po pierwsze na avr (avrg++) zawsze jest na floatach (single precision);
po drugie jedna taka operacja zajmuje ponad 1800 taktów zegara. czyli, przy 16MHz jakieś 112,5 us.
@zakzag: jeden timer odpowiada za wykonanie kroku silnika, drugi timer skraca okres pracy timera 1.
@Analityk: Jeśli masz głowę tak głęboko we własnej dupie, że nie widzisz dowcipu z nazywania sygnału pwn analogiem, to nie wiem o czym my tu wogóle rozmawiamy.
Może miałem w assemblerze i na rejestrach pokazać jak napisać prosty algorytm do soft startu? XD
framewroku od Arduino


@smutna_rzodkiewka: XD

Co do trybów pracy timera0 to może mieć ich nawet 20, nie widzę jaki to ma wpływ na upośledzoną konstrukcję framewroku od Arduino.

No to co?

Może miałem w assemblerze i na rejestrach pokazać jak napisać prosty algorytm do soft startu? XD

Pokazałem ci, że twoje czekanie 1us między kolejnymi iteracjami jest bez sensu to się oburzasz jak typowy janusz arduino. No to bądź nim dalej