Часть 8. Настройка регуляторов оборотов бесколлекторного двигателя
Регуляторы оборотов управляют двигателями по командам полетного контроллера и они тоже сделаны на микроконтроллере и нуждаются в настройке. Еще в статье мы расскажем о калибровке винто-моторной группы.
Подключение для настройки
Есть много способов программирования конфигурации регуляторов оборотов. Самый простой — сделать это в ручную при помощи аппаратуры радиоуправления. Также можно, например, применить для этого специальную карту. Некоторые полетные контроллеры умеют сами выставлять настройки.
Мы будем настраивать при помощи пульта. При этом доступны все настройки и не надо никаких дополнительных устройств.
У нас стоят регуляторы оборотов HobbyKing 25A BlueSeries. Инструкцию к ним можно скачать здесь.
Настройку регуляторов оборота проще всего производить на собранном коптере, когда регуляторы уже подключены к двигателям и подготовлены к подключению аккумулятора. Настройку обязательно производить при снятых пропеллерах! Управляющий провод подключите к третьему канала приемника (канал газа). Все остальное отключите от приемника.
При таком подключении приемник питается от встроенного стабилизатора регулятора.
Процесс настройки
Методология настройки следующая. Вам необходимо подать на регулятор одновременно питание и максимальный газ. Через пять секунд регулятор перейдет в режим настройки, о чем просигналит писком двигателя. Затем начнется последовательный перебор пунктов меню, каждому из которых соответствует свой звуковой сигнал. Как только регулятор дошел до нужного параметра, нужно опустить газ в минимум, дождаться звукового подтверждения и выключить питания.
Вот как звучит это звуковой меню:
Теперь разберемся с тем, какие настройки нужно выставить:
- (_*_*_*_*), Brake, on/off. Тормоз, по дефолту выключен и должен так и остаться. Подробнее об этой настройке чуть позже.
- Battery type, тип батареи
- (~ ~ ~ ~), NiCad
- (~~ ~~ ~~ ~~), LiPo — установлен по умолчанию. Оставить без изменения
- Low voltage Cutoff Threshold, порог отключения для защиты батареи от разряда
- (*_ _* *_ _* *_ _* *_ _*), Low 2.8/50%
- (*_ _ _* *_ _ _* *_ _ _* *_ _ _*), Medium 3.0v/60% — установлен по умолчанию. Оставить без изменения
- (*_ _ _ _* *_ _ _ _* *_ _ _ _* *_ _ _ _*), High 3.2v/ 65%
- (- — — -), Restore Factory defaults. Сброс к заводским настройкам
- Timing Setup
- (- — — -), Automatic (7-30) — установлено по умолчанию. Оставить без изменения
- (- — — — —), Low (7-22)
- (— — — —), High (22-30)
- Soft Acceleration Start Ups, настройка ограничения ускорения
- (V V V V V V V V), Very Soft
- (V V V V), Soft Acceleration — установлено по умолчанию
- (V V V V V V V V V V V V), Start Acceleration — требуется установить для максимальной быстроты отклика
- Governer
- (_*_ _*_ _*_ _*_), Rppm off — установлен по умолчанию, оставить без изменения
- (_**_ _**_ _**_ _**_), Heli first range
- (_***_ _***_ _***_ _***_), Heli second range
- (W W W W), Motor rotation, Forward/Reverse. Направление вращения, оставить без изменения
- Switching Frequency, частота переключения
- (// // // //), 8 kHz — установлена по умолчанию
- (\\ \\ \\ \\), 16 kHz — требуется установить для двигателя наружного вращения
- Low Voltage Cutoff Type, способ отключения при разряде батареи
- (__-__-__-__-), Reduce Power — установлено по умолчанию. Оставить без изменения
- (-_ -_ -_ -_), Hard Cut Off
В итоге, нужно скорректировать всего две настройки.
При нормальном включении двигателя пищат. Первая последовательность звуковых сигналов соответствует количество банок подключенной батареи. Второй цикл показывает состояние торможения. Один сигнал — включено, два — выключено.
Калибровка газа
Для калибровки нужно также включить пульт и установить на максимум газ. Затем подключиться питание регулятора и через 2-3 секунды опустить газ до минимума. Регулятор пропищит о том, что диапазон значений запомнен. При желании можно задать регулировку не от минимального значения, а, например, от середины.
Калибровка винто-моторной группы
Мы не знали куда включить эту информацию, поэтому напишем здесь.
Для снижения вибраций нужно откалибровать винты и двигатели. Для калибровки винтов очень удобно использовать вот такой балансир:
Суть калибровки сводится к выравниванию весов лопастей. Нужно положить винт с балансиром на параллельные направляющие (мы ставим на губки тисков) и найти более тяжелую лопасть. Для подгонки веса поскребите нерабочую часть лопасти канцелярским ножом. Нужно добиться, чтобы пропеллер мог стоять параллельно земле неподвижно.
Проверка калибровки винта
На форумах советуют откалибровать еще и двигатель. Теоретически, нужно на запущенный двигатель (без винта) посветить лазером и посмотреть на отражение. Если оно размазано, то нужно наклеить кусочек скотча на двигатель. Если биения уменьшились — хорошо, если нет — надо клеить в другом месте.
На практике делать это сложно: нужен мощный лазер, темнота и терпение. Да и необходимость в этом довольно сомнительная. Мы этот этап не делали.
И в заключении, ссылки на остальные части статей о коптерах:
Часть 1. Что такое квадрокоптер
Часть 2. Элементы квадрокоптера
Часть 3. Все об аккумуляторах для квадрокоптеров
Часть 4. Рама квадрокоптера
Часть 5. Подсветка коптера
Часть 6. Подключение элементов квадрокоптера
Часть 7. Настройка пульта Turnigy9x для коптера
Часть 9. Настройка полетного контроллера DJI NAZA
Часть 10. Гиростабилизированный подвес для камеры SJ4000
Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.
Управляем бесколлекторными двигателями, господа
Привет Хабровчане!
Решил я рассказать «всему свету» о проблеме, с которой столкнулся при постройке своего проекта, и как мне удалось её решить.
А речь сегодня пойдет о бесколлекторных двигателях, о регуляторах хода и как ими управлять.
Что же такое бесколлекторный двигатель, я не буду долго расписывать (сами можете посмотреть Wiki), а скажу в 2х словах, это 3х фазный двигатель постоянного тока.
И приводится в движение сие чудо благодаря специальному регулятору, который последовательно переключает обмотки с определенной частотой.
Управляя частотой переключения обмоток мы управляем скоростью вращения ротора.
Ну что же, надеюсь тут все понято, идем дальше.
Первые проблемы
Были закуплены 2 комплекта двигатель + регулятор, ждал около месяца, пришли.
Мною овладел приступ безудержного веселья по этому поводу, но, к сожалению, это было ненадолго….
Рассмотрев эти чудеса техники я решил подключить их к источнику питания, и тут то первое разочарование, тихий хлопок (как от КЗ) и тишина, светодиоды не горят, писка нет (а он должен быть), только крутится кулер на регуле, беда…
Побежал в ближайший Хобби магазин, и добрый консультант вынес вердикт: сгорел!
Со вторым такая же история, в общем ребята, не повезло, оба бракованные…
Ну хоть кошечка порадовалась:
Пришлось раскошелиться и купить у них регулятор по цене обоих комплектов (поджимали сроки).
Купил, подключил, все пищит, горит, работает, прям аж душа радуется! (на фото он выделен):
Проблема номер два
Теперь настала пора покрутить двигателем.
А покрутить нужно не с сервотестера или аппы радиоуправления, а с микроконтроллера, а точнее вот с такой платки:
Перелопатив тонны сайтов, перечитав сотни форумов и ответов на мой вопрос, так как же управлять этим регулятором я слышать только одно: «…чувак да там простой ШИМ…», «… ШИМ тебе в помощь…».
Ну ШИМ, так ШИМ.
Написал простенькую программу:
#include 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 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.
Но к счастью у моего старичка сработала защита и все обошлось перезагрузкой…
Спасибо большое за внимание.
Надеюсь мой опыт будет полезен для вас.
До скорых встреч.