Шаговый двигатель, драйвер L298N и ФД ID103
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Эдуард, приветствую! Залил Ваш скетч, пока тестирую...вроде бы всё нормально...В данном случае логика работы не очень важна, если жалюзи, к примеру, открыты, а должны быть закрыты, достаточно потянуть их за веревочку и перевести в необходимое положение. Потом двигатель их уже сам переведёт в состояние, соответствующее освещенности.
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Здравствуйте!
Если все окончательно заработает и есть желание, то выложите схему и фотографию устройства. Еще надо в программу сторожевой таймер добавить. Все таки устройство в круглосуточном режиме работает.
Если все окончательно заработает и есть желание, то выложите схему и фотографию устройства. Еще надо в программу сторожевой таймер добавить. Все таки устройство в круглосуточном режиме работает.
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Эдуард писал(а):Здравствуйте!
Если все окончательно заработает и есть желание, то выложите схему и фотографию устройства. Еще надо в программу сторожевой таймер добавить. Все таки устройство в круглосуточном режиме работает.
Приветствую! Конечно выложу, хотя эти схемы вдоль и поперёк изъзжены в паутине
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Приветствую, Эдуард! Что то после НГ затишье, пора уж начинать что то делать... Я к Вам снова за помощью...Задача кажется простейшая, проще некуда, но я что то уже запутался.
Две кнопки, один шаговик, драйвер все тот же. Нажимаешь кнопку1, двигатель вращается, отпускаешь-останавливается. Нажимаешь кнопку2 двигатель вращается в обратную сторону на n-количество шагов.
С одной кнопкой все нормально получается, но вот вторую ни как не могу "прикрутить"...
Две кнопки, один шаговик, драйвер все тот же. Нажимаешь кнопку1, двигатель вращается, отпускаешь-останавливается. Нажимаешь кнопку2 двигатель вращается в обратную сторону на n-количество шагов.
Код: Выделить всё
#include <MsTimer2.h>
#include <StepMotor.h>
#include <Button.h>
StepMotor myMotor(8, 9, 10, 11); // создаем объект типа StepMotor, задаем выводы для фаз
const int right_buttonPin = 6; // создание объекта для кнопки вверх
const int left_buttonPin = 5; // создание объекта для кнопки вниз
const int control_Pin = 7; // задание выхода управления
int buttonState = 0; // переменная для считывания статуса кнопок
//boolean buttonState;
void setup() {
pinMode(6, INPUT_PULLUP); // инициализация вывода 6 как вход, подтянутый к +5В
pinMode(5, INPUT_PULLUP); // инициализация вывода 5 как вход, подтянутый к +5В
pinMode(7, OUTPUT); // инициализация вывода 7 как выход
MsTimer2::set(1, timerInterrupt); // задаем период прерывания по таймеру 1 мс
MsTimer2::start(); // разрешаем прерывание по таймеру
myMotor.setMode(1, true); // полушаговый режим, с фиксацией при остановке
myMotor.setDivider(8); // делитель частоты 21 (при прерывании 1 мс период коммутации фаз 21 мс)
}
void loop() {
buttonState = digitalRead(right_buttonPin); // чтение состояния кнопок-------
buttonState = digitalRead(left_buttonPin);
if (buttonState == LOW) { // проверяем, нажата ли кнопка, если да, то на 7-ом выводе HIGH:
digitalWrite(control_Pin, HIGH);
}
else {
digitalWrite(control_Pin, LOW);
}
myMotor.step(1000);
}
//-------------------------------------- обработчик прерывания 1 мс
void timerInterrupt() {
myMotor.control(); // управление двигателем
// button.scanState();
}
С одной кнопкой все нормально получается, но вот вторую ни как не могу "прикрутить"...
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Здравствуйте!
Попробуйте так:
Попробуйте так:
Код: Выделить всё
#include <MsTimer2.h>
#include <StepMotor.h>
#include <Button.h>
StepMotor myMotor(8, 9, 10, 11); // создаем объект типа StepMotor, задаем выводы для фаз
Button buttonUp(6, 20); // создание объекта для кнопки вверх
Button buttonDown(5, 20); // создание объекта для кнопки вниз
const int control_Pin = 7; // задание выхода управления
void setup() {
pinMode(7, OUTPUT); // инициализация вывода 7 как выход
MsTimer2::set(1, timerInterrupt); // задаем период прерывания по таймеру 1 мс
MsTimer2::start(); // разрешаем прерывание по таймеру
myMotor.setMode(1, true); // полушаговый режим, с фиксацией при остановке
myMotor.setDivider(8); // делитель частоты 21 (при прерывании 1 мс период коммутации фаз 21 мс)
}
void loop() {
if( buttonUp.flagPress == true ) myMotor.step(1);
if( buttonDown.flagClick == true ) {
buttonDown.flagClick= false;
myMotor.step(-100);
}
}
//-------------------------------------- обработчик прерывания 1 мс
void timerInterrupt() {
myMotor.control(); // управление двигателем
buttonUp.scanState();
buttonDown.scanState();
}
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Спасибо за оперативность! Блин, как все просто!! Я в Си не силён(((((...Что означают 20-ки для кнопок?
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Здравствуйте!
Смотрите аргументы конструктора класса Button. Это время усреднения состояния кнопок (* период прерывания, в вашем случае 20*1 мс = 20 мс).
Смотрите аргументы конструктора класса Button. Это время усреднения состояния кнопок (* период прерывания, в вашем случае 20*1 мс = 20 мс).
Re: Шаговый двигатель, драйвер L298N и ФД ID103
Эдуард, спасибо ещё раз! Все работает как мне хотелось! Теперь буду пытаться через DRV8825 запускать...
Вернуться в «Шаговые двигатели и драйверы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей