Подскажите по драйверам для ШД

Вопросы об управлении шаговыми двигателями
Deonisiy
Сообщения: 2
Зарегистрирован: 30 дек 2019, 12:03

Подскажите по драйверам для ШД

Сообщение Deonisiy » 30 дек 2019, 12:06

Здравствуйте. Умер драйвер для ШД который прослужил пару месяцев. Покупал на Алике т.к. дешево было. Сейчас решил что больше так не хочу экономить и решил купить подороже, с нормальной гарантией.
Максимальный ток двигателя около 2А. Посмотрел в интернете и наткнулся на https://electroprivod.ru/smd-1628-din.htm вот эти модели. Сказали что 2.8 подойдет. Сказали что год гарантии дают. Главный вопрос, пользовался ли кто-то данными драйверами или вообще блоками данной компании? Стоит ли относить им свои деньги?)


Deonisiy
Сообщения: 2
Зарегистрирован: 30 дек 2019, 12:03

Re: Подскажите по драйверам для ШД

Сообщение Deonisiy » 09 янв 2020, 14:23

Рискнул и купил указанный выше драйвер. Работает отлично, нареканий нет. Настроил быстро (в паспорте все понятно написано). Но все же один вопрос уточнил у инженера компании. Все ответили подсказали. Я доволен, после месяца использования еще раз отпишусь.

Valeriyy
Сообщения: 1
Зарегистрирован: 14 янв 2020, 09:45

Re: Подскажите по драйверам для ШД

Сообщение Valeriyy » 14 янв 2020, 09:57

Конечно уже не актуально, но вставлю свои 5 копеек. Брал у этих ребят в начале прошлого года контроллер SMSD-4.2. Работает без проблем, если возникали вопросы, то всё быстро решалось. Позже брал ещё пару товаров у них по мелочи, пока что без нареканий

Vladimir55
Сообщения: 4
Зарегистрирован: 12 фев 2017, 21:32

Управление скоростью шагового двигателя

Сообщение Vladimir55 » 17 фев 2020, 17:00

Здравствуйте.
Пытаюсь менять делитель частоты для регулировки скорости вращения шаговым двигателем в основном цикле, но получается неадекватное вращение (частота вращения не соответствует ожидаемой). Подскажите как правильно управлять скоростью?
Пин 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);
 

}

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

Re: Подскажите по драйверам для ШД

Сообщение Эдуард » 17 фев 2020, 17:22

Здравствуйте!
Посмотрите по поводу установки скорости вращения урок 29. Там описывается другая библиотека, но метод тот же.
В вашем случае при myMotor.setDivider(20) и периоде таймера 0,25 мс будет.
Период переключения фаз 20 * 0,25 = 5 мс. Один оборот при двигателе с 200 шагами происходит за 5 * 200 = 1000 мс или 1 сек. Т.е. 60 оборотов в минуту. Если включен режим микрошагов, то надо соответственно скорректировать число шагов двигателя.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей