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
  • Odpowiedz
@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,
  • Odpowiedz
@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.
  • Odpowiedz
@Analityk: To jest arduino, jeśli nie operujesz na doublach na 8 bitach bez natwnego wsparcia floating pointów, to robisz to źle XD.
To w końcu platforma, na której sygnał PWM ustawiasz funkcją analogWrite ( ͡° ͜ʖ ͡° )*:
  • Odpowiedz
@Analityk: Nie musi być 2.0, jeśli a jest doublem. 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.
Wracaj na eletrodę oszczędzac ram gdziekolwiek jesteś.
  • Odpowiedz
@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
  • Odpowiedz
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
  • Odpowiedz