Шаговый двигатель NEMA 17 и driver Robotdyn L298N
- Войдите на сайт для отправки комментариев
Недавно, благодаря этому сайту, у меня получилось заставить работать NEMA 17 без использования библиотек и всяких ухищрений:
int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
int e1 = 7;
int e2 = 6;
int t = 10; // это время позволит изменить скорость вращения вала
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(e2, OUTPUT);
}
void loop()
{ // вращение в одном направлении с одинаковой скоростью = t
digitalWrite(e1, HIGH);
digitalWrite(e2, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
}
Никакими другими способами мой мотор не работает, полагаю это всё из-за драйвера. В общем, на данный момент я хочу добавить в этот скетч какой-нибудь таймер или ещё что-то, чтобы NEMA сделал пол оборота и остановился в ожидании условия "если".
Что за ошибка??
exit status 1
'var' was not declared in this scope
скетч:
int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
int e1 = 7;
int e2 = 6;
int t = 10; // это время позволит изменить скорость вращения вала
void setup()
{
var = 0;
while(var<5)
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(e2, OUTPUT);
var++;
}
}
void loop()
{
var = 0;
while(var<5)
{
digitalWrite(e1, HIGH);
digitalWrite(e2, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
var++
}
}
Мотор работает и всё, не останавливается :(
int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
int e1 = 7;
int e2 = 6;
int t = 10; // это время позволит изменить скорость вращения вала
void setup()
{
byte i = 0;
while(i<5)
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(e2, OUTPUT);
i++;
}
}
void loop()
{
byte i = 0;
while(i<5)
{
digitalWrite(e1, HIGH);
digitalWrite(e2, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
i++;
}
}
Код не по правилам выкладываю?
Код не по правилам выкладываете.
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Никакими другими способами мой мотор не работает, полагаю это всё из-за драйвера.
ПОдозреваю, из-за того, что Вы неверно подключили мотор.
а что будет если вы возьмёте да и используете библиотеки Stepper или AccelStepper?
Воспользовался данный библиотекой, но только с небольшой доработкой: добавил ENABLE1 & ENABLE2.
Вот что получилось: https://yadi.sk/i/5wXpKeZa3K9GUJ
vimple.co/f2fa0033d58849d085fce5a7332ef18b вот, эта рабочая.
vimple.co/f2fa0033d58849d085fce5a7332ef18b вот, эта рабочая.
На ENA Ии на ENB поставьте перемычки на 1. И все в скетче их не должно быть для шагового двигателя. Они используются для ШИМ двух коллекторных движков.
Скетч, "УРА!", есть, но вот одна ужасная загвоздка: при digitalWrite ( in3, HIGH) "in3" не срабатывает, т. е. в шаговом двигателе из 4 сторон работают 3! Проверял на другом скетче, все пины работают, шаговый мотор крутится, а вот в этом скетче "ПАРАДОКС". Помогите опытные люди разлядеть ошибку, это точно связано со скетчем, нужно чтобы "in3" на который подается сигнал "HIGH" тоже срабатывал, а то получается 1 шаг в одну сторону 2 шага в другую, получается шаговик вибрирует :((
К этому скетчу такое же замечание.
Спасибо, за "ПОЗДРАВЛЕНИЯ", было приятно разделить свою "судьбу" со всеми участниками темы. Скетч написал, благо всё работает, без запинки, в общем можно этот пост закрывать "Вот только не знаю как?".