Здравствуйте. Умер драйвер для ШД который прослужил пару месяцев. Покупал на Алике т.к. дешево было. Сейчас решил что больше так не хочу экономить и решил купить подороже, с нормальной гарантией.
Максимальный ток двигателя около 2А. Посмотрел в интернете и наткнулся на https://electroprivod.ru/smd-1628-din.htm вот эти модели. Сказали что 2.8 подойдет. Сказали что год гарантии дают. Главный вопрос, пользовался ли кто-то данными драйверами или вообще блоками данной компании? Стоит ли относить им свои деньги?)
Подскажите по драйверам для ШД
Re: Подскажите по драйверам для ШД
Рискнул и купил указанный выше драйвер. Работает отлично, нареканий нет. Настроил быстро (в паспорте все понятно написано). Но все же один вопрос уточнил у инженера компании. Все ответили подсказали. Я доволен, после месяца использования еще раз отпишусь.
Re: Подскажите по драйверам для ШД
Конечно уже не актуально, но вставлю свои 5 копеек. Брал у этих ребят в начале прошлого года контроллер SMSD-4.2. Работает без проблем, если возникали вопросы, то всё быстро решалось. Позже брал ещё пару товаров у них по мелочи, пока что без нареканий
-
- Сообщения: 4
- Зарегистрирован: 12 фев 2017, 21:32
Управление скоростью шагового двигателя
Здравствуйте.
Пытаюсь менять делитель частоты для регулировки скорости вращения шаговым двигателем в основном цикле, но получается неадекватное вращение (частота вращения не соответствует ожидаемой). Подскажите как правильно управлять скоростью?
Пин 2 использую для старт стопа двигателя. Если задавать делитель в обработчике прерываний, то все хорошо.
//шаговый двигатель с драйвером степ-дир
//в простейшем случае вращения с постоянной скоростью без ускорения
//09.02.20
//***********************************************//
Пытаюсь менять делитель частоты для регулировки скорости вращения шаговым двигателем в основном цикле, но получается неадекватное вращение (частота вращения не соответствует ожидаемой). Подскажите как правильно управлять скоростью?
Пин 2 использую для старт стопа двигателя. Если задавать делитель в обработчике прерываний, то все хорошо.
//шаговый двигатель с драйвером степ-дир
//в простейшем случае вращения с постоянной скоростью без ускорения
//09.02.20
//***********************************************//
Код: Выделить всё
#include <TimerOne.h>
#include <StepDirDriver.h>
StepDirDriver myMotor(10, 11, 12); // создаем объект типа StepDirDriver, задаем выводы для сигналов
#include <MsTimer2.h> //библиотека прерывания по таймеру
// обработчик прерывания
#include <Button.h> //библиотека обработки сигнала датчика типа кнопка
#define GORELKA_PIN20 2 //к этому пину подключаем контакты реле управляемого напряжением включения горелки (220 В).К пину подтянут +5в через 10кОм на нем высокое Пин
//становится активен , если замыкается на GND
int N = 10; //количество считываний кнопок в объектах типа кнопка для формирования массива осреднения в методе AWERAGE библиотеки <Button.h>
//это же и количество пустых циклов loopв начале программы для корректной работы метода AWERAGE
Button gorelka4(GORELKA_PIN20, N); //создание объекта gorelka4 контактов реле управляемого включением горелки (типа кнопка)
volatile bool prevStatePress4 = false; //признак предыдущего состояния контактов реле, управляемого напряжением включения горелки (синими проводами), перед фактом
//размыкания контактов
bool pin2; //переменная характеризующая пин 2
int divider;
void setup()
{
// Serial.begin(9600);
pinMode(GORELKA_PIN20, INPUT); //пин к которому присоединены (НР) контакты реле, управляемого включением горелки (появление напряжения на синих проводах)
//pinMode(2, INPUT);
Timer1.initialize(250); // инициализация таймера 1, период 250 мкс = 0.25 мс
Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний
myMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
myMotor.setDivider(10); // делитель частоты 10 (1 оборот в сек) для двигателя с 1 об = 400 полушагов и и частотой прерываний 250 мкс
//Rpm = 60 000 / ( divider * Tcontrol * Nдвигателя * Nмикрошагов)
//Rpm – скорость вращения в оборотах в минуту;
//Tcontrol – период вызова метода control() в мс; В нашем случае 250 мкс = 0.25мс
//Nдвигателя – число шагов двигателя на полный оборот; В нашем случае 200 шагов/оборот
//Nмикрошагов – число микро шагов двигателя на одну фазу. Для шагового режима Nмикрошагов = 1, для полу шагового Nмикрошагов = 2 и т.д
//в нашем случае Nмикрошагов = 2
myMotor.step(0); // начальный запуск
MsTimer2::set(2,timerInterupt2); // задаем период прерывания по таймеру 2 мс
MsTimer2::start(); // разрешаем прерывание по таймеру
}
//-------------------------------------- обработчик прерывания 0,25 мс по первому таймеру
void timerInterrupt()
{
myMotor.control(); // управвление двигателем
}
//----------------------------------------------------------------------------------------------
//функция прерывания по таймеру 2
void timerInterupt2()
{
gorelka4.filterAvarage(); // вызов метода фильтрации по среднему для контактов реле, управляемого напряжением включения горелки
if (gorelka4.flagPress == false)
{
//Serial.println("gorelka4.flagPress ");Serial.println(gorelka4.flagPress);
myMotor.step(0);//останов двигателя
}
if (gorelka4.flagPress == true) //включилась горелка и контакты реле, управляемого синими проводами горелки замкнулись (на пине 4 стало низкое)
{
//divider = 17;
//myMotor.setDivider(divider);
myMotor.step(80000);//запуск двигателя на большое число шагов для непрерывного вращения
}
}
//------------------------------------------------------------------------------------------------------
void loop()
{
divider = 17;
myMotor.setDivider(20);
}
Re: Подскажите по драйверам для ШД
Здравствуйте!
Посмотрите по поводу установки скорости вращения урок 29. Там описывается другая библиотека, но метод тот же.
В вашем случае при myMotor.setDivider(20) и периоде таймера 0,25 мс будет.
Период переключения фаз 20 * 0,25 = 5 мс. Один оборот при двигателе с 200 шагами происходит за 5 * 200 = 1000 мс или 1 сек. Т.е. 60 оборотов в минуту. Если включен режим микрошагов, то надо соответственно скорректировать число шагов двигателя.
Посмотрите по поводу установки скорости вращения урок 29. Там описывается другая библиотека, но метод тот же.
В вашем случае при myMotor.setDivider(20) и периоде таймера 0,25 мс будет.
Период переключения фаз 20 * 0,25 = 5 мс. Один оборот при двигателе с 200 шагами происходит за 5 * 200 = 1000 мс или 1 сек. Т.е. 60 оборотов в минуту. Если включен режим микрошагов, то надо соответственно скорректировать число шагов двигателя.
Вернуться в «Шаговые двигатели и драйверы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей