Problem ze sterowaniem silnikiem krokowym
: 20 gru 2015, 15:11
Witam.
Jestem w trakcie budowania bardzo prostej konstrukcji, która napędzana będzie silnikiem krokowym. Program piszę na Arduino i chcę aby sterowanie silnikiem odbywało się za pomocą joysticka, który jak wiadomo jest potencjometrem. Tak wygląda kod funkcji, która odpowiada za sterowanie.
void manualMode()
{
int value = 0;
int kierunek;
int predkosc;
value = analogRead(sensorX);
if(value > 540)
{
predkosc = map(value, 540, 1023, 0, 100);
kierunek = 1;
}
if(value > 440 && value < 540)
{
predkosc = 0;
}
if(value < 440)
{
predkosc = map(value, 0, 440, 100, 0);
kierunek = -1;
}
if(predkosc > 0)
{
silnik.setSpeed(predkosc);
silnik.step(kierunek);
}
}
Problem polega na tym, że niezależnie w którą stronę pochyle joystick, to silnik kręci się w tą samą stronę (dokładnie zgodnie ze wskazówkami zegara).
Sprawdzałem też czy zadziała kiedy zamiast joysticka do sterowania uzyje przycisków ale jest to samo.
Czy ktoś wie i mógłby mi powiedzieć gdzie lub w czym jest problem, bo na prawdę już sam nie wiem o co chodzi.
Dla przykładu powiem jeszcze, że testowałem też na "czystym" programie, czyli zaimplementowałem silnik, podałem setSpeed oraz step i wtedy działa bez zarzutu. Ustawiając step na wartości dodatnie silnik kręci się w jedną stronę, a po zmianie w kodzie na wartości ujemne silnik kręci się w odwrotną stronę.
Liczę na waszą pomoc, będę bardzo wdzięczny.
Pozdrawiam.
Jestem w trakcie budowania bardzo prostej konstrukcji, która napędzana będzie silnikiem krokowym. Program piszę na Arduino i chcę aby sterowanie silnikiem odbywało się za pomocą joysticka, który jak wiadomo jest potencjometrem. Tak wygląda kod funkcji, która odpowiada za sterowanie.
void manualMode()
{
int value = 0;
int kierunek;
int predkosc;
value = analogRead(sensorX);
if(value > 540)
{
predkosc = map(value, 540, 1023, 0, 100);
kierunek = 1;
}
if(value > 440 && value < 540)
{
predkosc = 0;
}
if(value < 440)
{
predkosc = map(value, 0, 440, 100, 0);
kierunek = -1;
}
if(predkosc > 0)
{
silnik.setSpeed(predkosc);
silnik.step(kierunek);
}
}
Problem polega na tym, że niezależnie w którą stronę pochyle joystick, to silnik kręci się w tą samą stronę (dokładnie zgodnie ze wskazówkami zegara).
Sprawdzałem też czy zadziała kiedy zamiast joysticka do sterowania uzyje przycisków ale jest to samo.
Czy ktoś wie i mógłby mi powiedzieć gdzie lub w czym jest problem, bo na prawdę już sam nie wiem o co chodzi.

Dla przykładu powiem jeszcze, że testowałem też na "czystym" programie, czyli zaimplementowałem silnik, podałem setSpeed oraz step i wtedy działa bez zarzutu. Ustawiając step na wartości dodatnie silnik kręci się w jedną stronę, a po zmianie w kodzie na wartości ujemne silnik kręci się w odwrotną stronę.
Liczę na waszą pomoc, będę bardzo wdzięczny.
Pozdrawiam.