Библиотека для драйвера ШМ GeckDrive g210Х
- Войдите на сайт для отправки комментариев
Добрый день господа! Столкнулся с проблемкой работы с драйвером шагового двигателя GeckDrive g210Х. По сути управление происходит двумя сигналами - первый направление вращения(dir), второй Шаг(step). Опытным путем определил, что если на дир подать +5, то шаговик вращается по часовой. Сам шаг у меня сделан так:
digitalWrite(GeckDirPin,HIGH); // сменили направление шагового двигателя
for (int xob=0; xob <= 500; xob++) // запустили цикл сигнала на степ 500 раз
{
digitalWrite(GeckStepPin,HIGH);
digitalWrite(GeckStepPin,LOW);
delay(5);
}
Уменьшая delay - теряю мощность двигателя. Двигатель поднимает железный дозатор через редуктор. По сути если delay меньше 10 то двигатель колбасится и не может поднять дозатор, если delay больше 10 то все у него получается. Природу явления я не совсем понял... Но суть в том, что хочу избавится от delay. Чтобы не висела система пока выполняется цикл. Если помножить количество на делей то получаем 2,5 сек висяк... а это критично... Может кто какой библиотечкой пользовал в таких ситуациях? Или что-нибудь подскажите по опыту?
Начнем с того что пока не выполнится цыкл "for" будет висяк. Я бы сделал на таймере или в крайнем случае, если с таймером тяжело, на милис. А зачем на такой код библиотека не знаю. Чуть позже напишу пример
int pause = 5; unsigned long shag = 500; unsigned long time = millis(); void setup() { pinMode(GeckStepPin, OUTPUT); pinMode(GeckDirPin, OUTPUT); } void loop(){ digitalWrite(GeckDirPin,HIGH); // сменили направление шагового двигателя if (shag > 0) { if (millis() - time >= pause) { digitalWrite(GeckStepPin, !digitalRead(GeckStepPin)); time = millis(); --shag; } } }Ща попробуем этот код применить на практику ))
if (fwd==true) { digitalWrite(GeckDirPin,HIGH); // сменили направление шагового двигателя if (shag > 0) { if (millis() - timegek >= pausegek) { digitalWrite(GeckStepPin, !digitalRead(GeckStepPin)); timegek = millis(); --shag; } } else fwd=false; }Все работает!!! Спасибо большое!!!!))))