Плавная регулировка скорости вращения ШД с помощью потенциометра

Вопросы об управлении шаговыми двигателями
Олег
Сообщения: 1
Зарегистрирован: 30 янв 2018, 13:16

Плавная регулировка скорости вращения ШД с помощью потенциометра

Сообщение Олег » 30 янв 2018, 13:25

Помогите чайнику разобраться-)
Имеем Ардуино Уно
Драйвер Step/Dir TB6560-V2.
Шаговый двигатель 200 шагов за оборот.

На данном этапе необходимо:

иметь возможность ПЛАВНО регулировать скорость вращения двигателя в диапазоне 100-350 оборотов в минуту с помощью потенциометра, с выводом значения на 7-сегментный LED индикатор.

Посоветуйте, пожалуйста, какие библиотеки использовать.


Эдуард
Администратор
Сообщения: 365
Зарегистрирован: 30 окт 2016, 20:53

Re: Плавная регулировка скорости вращения ШД с помощью потенциометра

Сообщение Эдуард » 30 янв 2018, 14:14

Здравствуйте!
Можете попробовать использовать мои библиотеки.
    Для STEP/DIR драйвера библиотека StepDirDriver (урок 35).
    Для управления LED индикатором библиотека Led4Digits (урок 20).
Я бы советовал придерживаться следующей последовательности разработки программы.

1. Из урока 35 загрузить в Ардуино скетч программы драйвера ШД с управлением AT командами, и с помощью программы верхнего уровня (из того же урока) проверить работу драйвера, самого двигателя, диапазон регулировки скорости, крутящий момент двигателя и т.п. Таким образом вы сможете полностью проверить работу вашей системы, как электронику, так и механику. Только регулировка будет не от потенциометра, а с компьютера.

2. Если все устраивает, тогда начинаете писать программу. Пишите простейший вариант, который просто вращает двигатель с постоянной скоростью.

Код: Выделить всё

#include <TimerOne.h>
#include <StepDirDriver.h>

StepDirDriver myMotor(10, 11, 12);  // создаем объект типа StepDirDriver, задаем выводы для сигналов

void setup() {
  Timer1.initialize(250);  // инициализация таймера 1, период 250 мкс
  Timer1.attachInterrupt(timerInterrupt, 250);  // задаем обработчик прерываний
  myMotor.setMode(0, false);  // шаговый режим, без фиксации при остановке
  myMotor.setDivider(10);     // делитель частоты 10 (1 оборот в сек)
}

void loop() {
  myMotor.step(100); 
}

//-------------------------------------- обработчик прерывания 0,25 мс
void  timerInterrupt() {
  myMotor.control(); // управление двигателем
}


3. К этому скелету программы начинаете добавлять все остальное. Подключаете потенциометр и считываете его значение. Я бы настоятельно советовал это значение усреднить. Об этом написано в уроке 13.

4. Масштабируете значение потенциометра в необходимый вам диапазон для скорости вращения (setDivider). Рабочий диапазон определяете на пером этапе.

5. Загружаете масштабируемое значение в setDivider. Теперь вы можете регулировать скорость вращения двигателя от потенциометра.

6. Остается добавить индикацию. читаете урок 20, добавляете библиотеку, выводите на индикатор значение setDivider. Проверяете.

7. Переводите значение setDivider в нужный вам формат, например число оборотов в минуту.

Я вижу это как-то так.


Вернуться в «Шаговые двигатели и драйверы»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 0 гостей