Привет Хабровчане!
Решил я рассказать «всему свету» о проблеме, с которой столкнулся при постройке своего проекта, и как мне удалось её решить.
А речь сегодня пойдет о бесколлекторных двигателях, о регуляторах хода и как ими управлять.
Что же такое бесколлекторный двигатель, я не буду долго расписывать (сами можете посмотреть Wiki), а скажу в 2х словах, это 3х фазный двигатель постоянного тока.
И приводится в движение сие чудо благодаря специальному регулятору, который последовательно переключает обмотки с определенной частотой.
Управляя частотой переключения обмоток мы управляем скоростью вращения ротора.
Ну что же, надеюсь тут все понято, идем дальше.
Первые проблемы
Были закуплены 2 комплекта двигатель + регулятор, ждал около месяца, пришли.

Мною овладел приступ безудержного веселья по этому поводу, но, к сожалению, это было ненадолго….
Рассмотрев эти чудеса техники я решил подключить их к источнику питания, и тут то первое разочарование, тихий хлопок (как от КЗ) и тишина, светодиоды не горят, писка нет (а он должен быть), только крутится кулер на регуле, беда…
Побежал в ближайший Хобби магазин, и добрый консультант вынес вердикт: сгорел!
Со вторым такая же история, в общем ребята, не повезло, оба бракованные…
Ну хоть кошечка порадовалась:

Пришлось раскошелиться и купить у них регулятор по цене обоих комплектов (поджимали сроки).
Купил, подключил, все пищит, горит, работает, прям аж душа радуется! (на фото он выделен):

Проблема номер два
Теперь настала пора покрутить двигателем.
А покрутить нужно не с сервотестера или аппы радиоуправления, а с микроконтроллера, а точнее вот с такой платки:

Перелопатив тонны сайтов, перечитав сотни форумов и ответов на мой вопрос, так как же управлять этим регулятором я слышать только одно: «…чувак да там простой ШИМ…», «… ШИМ тебе в помощь…».
Ну ШИМ, так ШИМ.
Написал простенькую программу:
Залил, ноль эмоций…
Бился 2 дня, пока не наткнулся на случайный пост, о том, что у регулятора есть защита, и он начинает функционировать только при подаче на его вход ШИМ сигнала 1,5 мс.
Окей, будет сделано.
Дальше я подцепил обыкновенный резистор через АЦП, и опытным путем подобрал крайние значения ШИМ регулятора.
Код получившийся в итоге:
И все заработало.
Теперь все крутиться, шумит, пищит и просто радует.
P.S. Это код для управления сразу 2мя двигателями.
И последняя проблема, питание…
Здесь расскажу немного, а именно, от регулятора идет 3 провода:

Центральная колодка, по порядку Черный — минус, Красный — плюс и Белый — провод управления.
И загвоздка в том, что в отличие от сервоприводов, это не входы под питание, а выходы, т.е. питаемся от них.
К чему я это, да к тому, что подключив регулятор как серву, я чуть не спалил порты на ноутбуке, ибо плата в это время была запитана от USB.
Но к счастью у моего старичка сработала защита и все обошлось перезагрузкой…
Видео работы:
Спасибо большое за внимание.
Надеюсь мой опыт будет полезен для вас.
До скорых встреч.
Решил я рассказать «всему свету» о проблеме, с которой столкнулся при постройке своего проекта, и как мне удалось её решить.
А речь сегодня пойдет о бесколлекторных двигателях, о регуляторах хода и как ими управлять.
Что же такое бесколлекторный двигатель, я не буду долго расписывать (сами можете посмотреть Wiki), а скажу в 2х словах, это 3х фазный двигатель постоянного тока.
И приводится в движение сие чудо благодаря специальному регулятору, который последовательно переключает обмотки с определенной частотой.
Управляя частотой переключения обмоток мы управляем скоростью вращения ротора.
Ну что же, надеюсь тут все понято, идем дальше.
Первые проблемы
Были закуплены 2 комплекта двигатель + регулятор, ждал около месяца, пришли.

Мною овладел приступ безудержного веселья по этому поводу, но, к сожалению, это было ненадолго….
Рассмотрев эти чудеса техники я решил подключить их к источнику питания, и тут то первое разочарование, тихий хлопок (как от КЗ) и тишина, светодиоды не горят, писка нет (а он должен быть), только крутится кулер на регуле, беда…
Побежал в ближайший Хобби магазин, и добрый консультант вынес вердикт: сгорел!
Со вторым такая же история, в общем ребята, не повезло, оба бракованные…
Ну хоть кошечка порадовалась:

Пришлось раскошелиться и купить у них регулятор по цене обоих комплектов (поджимали сроки).
Купил, подключил, все пищит, горит, работает, прям аж душа радуется! (на фото он выделен):

Проблема номер два
Теперь настала пора покрутить двигателем.
А покрутить нужно не с сервотестера или аппы радиоуправления, а с микроконтроллера, а точнее вот с такой платки:

Перелопатив тонны сайтов, перечитав сотни форумов и ответов на мой вопрос, так как же управлять этим регулятором я слышать только одно: «…чувак да там простой ШИМ…», «… ШИМ тебе в помощь…».
Ну ШИМ, так ШИМ.
Написал простенькую программу:
#include <Servo.h>
Servo motor;
int mot_pin = 7; //Подключаем левый мотор к пину 7
int js_position = 800;
int max_position = 3000;
void setup()
{
motor_teft.attach(mot_pin, js_position, max_position); //Инициальзация мотора
}
void loop()
{
motor.write(1800); //Записываем положение и отправляем на регулятор
}
Залил, ноль эмоций…
Бился 2 дня, пока не наткнулся на случайный пост, о том, что у регулятора есть защита, и он начинает функционировать только при подаче на его вход ШИМ сигнала 1,5 мс.
Окей, будет сделано.
Дальше я подцепил обыкновенный резистор через АЦП, и опытным путем подобрал крайние значения ШИМ регулятора.
Код получившийся в итоге:
#include <Servo.h>
Servo motor_teft;
Servo motor_right;
int mot_pin_left = 7; //Подключаем левый мотор к пину 7
int mot_pin_right = 8; //Подключаем правый мотор к пину 8
int js_position = 1500; //Начальная позиция, всегда 1.5 мс для регуляторов бесколлекторных двигателей
int max_position = 2300; //Максимальное значение ШИМ 2.3 мс
int min_position = 800; //Минимальное значени ШИМ 0.8 мс
int start = 1; //Флаг задержки запуска
void setup()
{
motor_teft.attach(mot_pin_left, js_position, max_position); //Инициальзация левого мотора (порт, начальная позиция, максимальная позиция) !!!
motor_right.attach(mot_pin_right, js_position, max_position); //Инициальзация правого мотора (порт, начальная позиция, максимальная позиция) !!!
}
void loop()
{
//Начальная установка регуляторов в нулевое положение
if(start == 1) {
motor_teft.write(js_position);
motor_right.write(js_position);
delay(700);
start = 0;
}
js_position = analogRead(A0); //Считывание положения потенциометра
js_position = map(js_position, 0, 1023, 75, 140); //Преобразование положения потенциометра в угол поворота
motor_left.write(js_position); //Записываем положение и отправляем на регулятор левого мотора
motor_right.write(js_position); //Записываем положение и отправляем на регулятор правого мотора
delay(20); //Задержка цикла 20 мс
}
И все заработало.
Теперь все крутиться, шумит, пищит и просто радует.
P.S. Это код для управления сразу 2мя двигателями.
И последняя проблема, питание…
Здесь расскажу немного, а именно, от регулятора идет 3 провода:

Центральная колодка, по порядку Черный — минус, Красный — плюс и Белый — провод управления.
И загвоздка в том, что в отличие от сервоприводов, это не входы под питание, а выходы, т.е. питаемся от них.
К чему я это, да к тому, что подключив регулятор как серву, я чуть не спалил порты на ноутбуке, ибо плата в это время была запитана от USB.
Но к счастью у моего старичка сработала защита и все обошлось перезагрузкой…
Видео работы:
Спасибо большое за внимание.
Надеюсь мой опыт будет полезен для вас.
До скорых встреч.