Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя

Главная > Отдых > Хобби > Радиоуправляемые модели > Бесколлекторный двигатель

Схема условно разделена на две части: левая — микроконтроллер с логикой, правая — силовая часть. Силовую часть можно модифицировать для работы с двигателями другой мощности или с другим питающим напряжением.

Контроллер — ATMEGA168. Гурманы могут сказать, что хватило бы и ATMEGA88, а AT90PWM3 — это было бы «вааще по феншую». Первый регулятор я как раз делал «по феншую». Если у Вас есть возможность применять AT90PWM3 — это будет наиболее подходящий выбор. Но для моих задумок решительно не хватало 8 килобайт памяти. Поэтому я применил микроконтроллер ATMEGA168.

Эта схема задумывалась как испытательный стенд. На котором предполагалось создать универсальный настраиваемый регулятор для работы с различными «калибрами» бесколлекторных двигателей: как с датчиками, так и без датчиков положения. В этой статье я опишу схему и принцип работы прошивки регулятора для управления бесколлекторными двигателями с датчиками Холла и без датчиков.

Brushless ESC

Питание

Питание схемы раздельное. Поскольку драйверы ключей требуют питание от 10В до 20В, используется питание 12В. Питание микроконтроллера осуществляется через DC-DC преобразователь, собранный на микросхеме MC34063. Можете применять линейный стабилизатор с выходным напряжением 5В. Предполагается, что напряжение VD может быть от 12В и выше и ограничивается возможностями драйвера ключей и самими ключами.

ШИМ и сигналы для ключей

На выходе OC0B(PD5) микроконтроллера U1 генерируется ШИМ сигнал. Он поступает на переключатели JP2, JP3. Этими переключателями можно выбрать вариант подачи ШИМ на ключи (на верхние, нижние или на все ключи). На схеме переключатель JP2 установлен в положение для подачи ШИМ сигнала на верхние ключи. Переключатель JP3 на схеме установлен в положение для отключения подачи ШИМ сигнала на нижние ключи. Не трудно догадаться, что если отключить ШИМ на верхних и нижних ключах, мы получим на выходе перманентный «полный вперед», что может разорвать двигатель или регулятор в хлам. Поэтому, не забываем включать голову, переключая их. Если Вам не потребуется такие эксперименты — и Вы знаете, на какие ключи Вы будите подавать ШИМ, а на какие нет, просто не делайте переключателей. После переключателей ШИМ сигнал поступает на входы элементы логики «&» (U2, U3). На эту же логику поступают 6 сигналов с выводов микроконтроллера PB0..PB5, которые являются управляющими сигналами для 6 ключей. Таким образом, логические элементы (U2, U3) накладывают ШИМ сигнал на управляющие сигналы. Если Вы уверены, что будете подавать ШИМ, скажем, только на нижние ключи, тогда ненужные элементы (U2) можно исключить из схемы, а соответствующие сигналы с микроконтроллера подавать на драйверы ключей. Т.е. на драйверы верхних ключей сигналы пойдут напрямую с микроконтроллера, а на нижние — через логические элементы.

Обратная связь (контроль напряжения фаз двигателя)

Напряжение фаз двигателя W,V,U через резистивные делители W — (R17,R25), V — (R18, R24), U — (R19, R23) поступают на входа контроллера ADC0(PC0), ADC1(PC1), ADC2(PC2). Эти выводы используются как входы компараторов. (В примере описанном в AVR444.pdf от компании Atmel применяют не компараторы, а измерение напряжения с помощью ADC (АЦП). Я отказался от этого метода, поскольку время преобразования ADC не позволяло управлять скоростными двигателями). Резистивные делители выбираются таким образом, чтобы напряжение, подаваемое на вход микроконтроллера, не превышало допустимое. В данном случае, резисторами 10К и 5К делится на 3. Т.е. При питании двигателя 12В. на микроконтроллер будет подаваться 12В5К/(10К+5К) = 4В. Опорное напряжение для компаратора (вход AIN1) подается от половинного напряжения питания двигателя через делитель (R5, R6, R7, R8). Обратите внимание, резисторы (R5, R6) по номиналу такие же, как и (R17,R25), (R18, R24),(R19, R23). Далее напряжение уменьшается вдвое делителем R7, R8, после чего поступает на ногу AIN1 внутреннего компаратора микроконтроллера. Переключатель JP1 позволяет переключить опорное напряжение на напряжение «средней точки» формируемое резисторами (R20, R21, R22). Это делалось для экспериментов и себя не оправдало. Если нет в необходимости, JP1, R20, R21, R22 можно исключить из схемы.

Датчики Холла

Поскольку регулятор универсальный, он должен принимать сигналы от датчиков Холла в том случае, если используется двигатель с датчиками. Предполагается, что датчики Холла дискретные, тип SS41. Допускается применение и других типов датчиков с дискретным выходом. Сигналы от трех датчиков поступают через резисторы R11, R12, R13 на переключатели JP4, JP5, JP6. Резисторы R16, R15, R14 выступают в качестве подтягивающих резисторов. C7, С8, С9 — фильтрующие конденсаторы. Переключателями JP4, JP5, JP6 выбирается тип обратной связи с двигателем. Кроме изменения положения переключателей в программных настройках регулятора следует указать соответствующий тип двигателя (Sensorless или Sensored).

Измерения аналоговых сигналов

На вход ADC5(PC5) через делитель R5, R6 подается напряжения питания двигателя. Это напряжение контролируется микроконтроллером.

На вход ADC3(PC3) поступает аналоговый сигнал от датчика тока. Датчик тока ACS756SA. Это датчик тока на основе эффекта Холла. Преимущество этого датчика в том, что он не использует шунт, а значит, имеет внутреннее сопротивление близкое к нулю, поэтому на нем не происходит тепловыделения. Кроме того, выход датчика аналоговый в пределах 5В, поэтому без каких-либо преобразований подается на вход АЦП микроконтроллера, что упрощает схему. Если потребуется датчик с большим диапазоном измерения тока, Вы просто заменяете существующий датчик новым, абсолютно не изменяя схему.

Если Вам хочется использовать шунт с последующей схемой усиления, согласования — пожалуйста.

Задающие сигналы

Сигнал, задающий обороты двигателя, с потенциометра RV1 поступает на вход ADC4(PC4). Обратите внимание на резистор R9 — он шунтирует сигнал в случае обрыва провода к потенциометру.

Кроме того, есть вход RC сигнала, который повсеместно используется в дистанционно управляемых моделях. Выбор управляющего входа и его калибровка выполняется в программных настройках регулятора.

UART интерфейс

Сигналы TX, RX используются для настройки регулятора и выдачи информации о состоянии регулятора — обороты двигателя, ток, напряжение питания и т.п. Для настройки регулятора его можно подключить к USB порту компьютера, используя FT232 переходник. Настройка выполняется через любую программу терминала. Например: Hyperterminal или Putty.

Прочее

Также имеются контакты реверса — вывод микроконтроллера PD3. Если замкнуть эти контакты перед стартом двигателя, двигатель будет вращаться в обратном направлении.

Светодиод, сигнализирующий о состоянии регулятора, подключен к выводу PD4.

Силовая часть

Драйвера ключей использовались IR2101. У этого драйвера одно преимущество — низкая цена. Для слаботочных систем подойдет, для мощных ключей IR2101 будет слабоват. Один драйвер управляет двумя «N» канальными MOSFET транзисторами (верхним и нижним). Нам понадобиться три таких микросхемы.

Ключи нужно выбирать в зависимости от максимального тока и напряжения питания двигателя (выбору ключей и драйверов будет посвящена отдельная статья). На схеме обозначены IR540, в реальности использовались K3069. K3069 рассчитаны на напряжение 60В и ток 75А. Это явный перебор, но мне они достались даром в большом количестве (желаю и Вам такого счастья).

Конденсатор С19 включается параллельно питающей батареи. Чем больше его емкость — тем лучше. Этот конденсатор защищает батарею от бросков тока и ключи от значительной просадки напряжения. При отсутствии этого конденсатора Вам обеспечены как минимум проблемы с ключами. Если подключать батарею сразу к VD — может проскакивать искра. Искрогасящий резистор R32 используется в момент подключения к питающей батарее. Сразу подключаем «-» батареи, затем подаем «+» на контакт Antispark. Ток течет через резистор и плавно заряжает конденсатор С19. Через несколько секунд, подключаем контакт батареи к VD. При питании 12В можно Antispark не делать.

  • возможность управлять двигателями с датчиками и без;
  • для бездатчикового двигателя три вида старта: без определения первоначального положения; с определением первоначального положения; комбинированный;
  • настройка угла опережения фазы для бездатчикового двигателя с шагом 1 градус;
  • возможность использовать один из двух задающих входов: 1-аналоговый, 2-RC;
  • калибровка входных сигналов;
  • реверс двигателя;
  • настройка регулятора по порту UART и получение данных от регулятора во время работы (обороты, ток, напряжение батареи);
  • частота ШИМ 16, 32 КГц.
  • настройка уровня ШИМ сигнала для старта двигателя;
  • контроль напряжения батарей. Два порога: ограничение и отсечка. При снижении напряжения батареи до порога ограничения обороты двигателя понижаются. При снижении ниже порога отсечки происходит полная остановка;
  • контроль тока двигателя. Два порога: ограничение и отсечка;
  • настраиваемый демпфер задающего сигнала;
  • настройка Dead time для ключей

Включение

Напряжение питания регулятора и двигателя раздельное, поэтому может возникнуть вопрос: в какой последовательности подавать напряжение. Я рекомендую подавать напряжение на схему регулятора. А затем подключать напряжение питания двигателя. Хотя при другой последовательности проблем не возникало. Соответственно, при одновременной подаче напряжения также проблем не возникало.

После включения двигатель издает 1 короткий сигнал (если звук не отключен), включается и постоянно светится светодиод. Регулятор готов к работе.

Для запуска двигателя следует увеличивать величину задающего сигнала. В случае использования задающего потенциометра, запуск двигателя начнется при достижении задающего напряжения уровня примерно 0.14 В. При необходимости можно выполнить калибровку входного сигнала, что позволяет использовать раные диапазоны управляющих напряжений. По умолчанию настроен демпфер задающего сигнала. При резком скачке задающего сигнала обороты двигателя будут расти плавно. Демпфер имеет несимметричную характеристику. Сброс оборотов происходит без задержки. При необходимости демпфер можно настроить или вовсе отключить.

Запуск

Запуск бездатчикового двигателя выполняется с установленным в настройках уровнем стартового напряжения. В момент старта положение ручки газа роли значения не имеет. При неудачной попытке старта попытка запуска повторяется, пока двигатель не начнет нормально вращаться. Если двигатель не может запуститься в течение 2-3 секунд попытки следует прекратить, убрать газ и перейти к настройке регулятора.

При опрокидывании двигателя или механическом заклинивании ротора срабатывает защита, и регулятор пытается перезапустить двигатель.

Запуск двигателя с датчиками Холла также выполняется с применением настроек для старта двигателя. Т.е. если для запуска двигателя с датчиками дать полный газ, то регулятор подаст напряжение, которое указано в настройках для старта. И только после того, как двигатель начнет вращаться, будет подано полное напряжение. Это несколько нестандартно для двигателя с датчиками, поскольку такие двигатели в основном применяются как тяговые, а в данном случае достичь максимального крутящего момента на старте, возможно, будет сложно. Тем не менее, в данном регуляторе присутствует такая особенность, которая защищает двигатель и регулятор от выхода со строя при механическом заклинивании двигателя.

Во время работы регулятор выдает данные об оборотах двигателя, токе, напряжении батарей через порт UART в формате:

E:минимальное напряжение батареи: максимальное напряжение батареи: максимальный ток: обороты двигателя (об/мин) A:текущее напряжение батареи: текущий ток: текущие обороты двигателя (об/мин)

Данные выдаются с периодичностью примерно 1 секунда. Скорость передачи по порту 9600.

Настройка регулятора

Для настройки регулятора его следует подключить к компьютеру с помощью USB-UART переходника. Скорость передачи по порту 9600.

Переход регулятора в режим настройки происходит при включении регулятора, когда задающий сигнал потенциометра больше нуля. Т.е. Для перевода регулятора в режим настройки следует повернуть ручку задающего потенциометра, после чего включить регулятор. В терминале появится приглашение в виде символа «>«. После чего можно вводить команды.

Регулятор воспринимает следующие команды (в разных версиях прошивки набор настроек и команд может отличаться):

h — вывод списка команд;
? — вывод настроек;
c — калибровка задающего сигнала;
d — сброс настроек к заводским настройкам.

команда «?» выводит в терминал список всех доступных настроек и их значение. Например:

motor.type=0 motor.magnets=12 motor.angle=7 motor.start.type=0 motor.start.time=10 pwm=32 pwm.start=15 pwm.min=10 voltage.limit=128 voltage.cutoff=120 current.limit=200 current.cutoff=250 system.sound=1 system.input=0 system.damper=10 system.deadtime=1

Изменить нужную настройку можно командой следующего формата:

<настройка>=<значение>

Например:

pwm.start=15

Если команда была дана корректно, настройка будет применена и сохранена. Проверить текущие настройки после их изменения можно командой «?«.

Измерения аналоговых сигналов (напряжение, ток) выполняются с помощью АЦП микроконтроллера. АЦП работает в 8-ми битном режиме. Точность измерения занижена намеренно для обеспечения приемлемой скорости преобразования аналогового сигнала. Соответственно, все аналоговые величины регулятор выдает в виде 8-ми битного числа, т.е. от 0 до 255.

Назначение настроек:

Список настроек, их описание:

Параметр Описание Значение motor.type Тип мотора 0-Sensorless; 1-Sensored motor.magnets Кол.во магнитов в роторе двигателя. Изпользуется только для расчета оборотов двигателя. 0..255, шт. motor.angle Угол опережения фазы. Используется только для Sensorless двигателей. 0..30, градусов motor.start.type Тип старта. Используется только для Sensorless двигателей. 0-без определения положения ротора; 1-с определением положения ротора; 2-комбинированный; motor.start.time Время старта. 0..255, мс pwm Частота PWM 16, 32, КГц pwm.start Значение PWM (%) для старта двигателя. 0..50 % pwm.min Значение минимального значения PWM (%), при котором двигатель вращается. 0..30 % voltage.limit Напряжение батареи, при котором следует ограничивать мощность, подаваемую на двигатель. Указывается в показаниях ADC. 0..255 voltage.cutoff Напряжение батареи, при котором следует выключать двигатель. Указывается в показаниях ADC. 0..255 current.limit Ток, при котором следует ограничивать мощность, подаваемую на двигатель. Указывается в показаниях ADC. 0..255 current.cutoff Ток, при котором следует выключать двигатель. Указывается в показаниях ADC. 0..255 system.sound Включить/выключить звуковой сигнал, издаваемый двигателем 0-выключен; 1-включен; system.input Задающий сигнал 0-потенциометр; 1-RC сигнал; system.damper Демпфирование входного сигнала 0..255, условные единицы system.deadtime Значение Dead Time для ключей в микросекундах 0..2, мкс

— числовое значение 8-ми битного аналого цифрового преобразователя.
Рассчитывается по формуле: ADC = (UR6/(R5+R6))255/5
Где: U — напряжение в Вольтах; R5, R6 — сопротивление резисторов делителя в Омах.

— числовое значение 8-ми битного аналого цифрового преобразователя.
Рассчитывается по формуле: ADC = U255/5
Где: U — напряжение датчика тока в Вольтах, соответствующее требуемому току.

Скачать архив со схемой и прошивкой.

Фьюзы микроконтроллера должны быть выставлены на работу с внешним кварцем.
Строка для программирования фьюзов с помощью AVRDUDE:

-U lfuse:w:0xFF:m -U hfuse:w:0xDC:m

P.S.
Данная схема получила дальнейшее развитие. Был добавлен внешний компаратор, который позволил избавиться от необходимости переключать аналоговую часть микроконтроллера из режима ADC в режим компаратора и обратно (в Atmega одновременно компаратор и ADC работать не могут). Что в свою очередь позволило несколько ускорить измерение аналоговых сигналов. Кроме того, внешний компаратор стал генерировать аварийный сигнал при превышении предельного значения тока. Что существенно увеличило защищенность регулятора в нештатных ситуациях. Вместе с тем осталась универсальность, позволяющая использовать широкий выбор драйверов, в том числе и специальных для 3-х фазных двигателей. О силовой части будет рассказано в одной из следующих статей.

Успехов!

Материал взят с сайта:
Главная > Отдых > Хобби > Радиоуправляемые модели > Бесколлекторный двигатель
Источник: http://housecomputer.ru/rest/hobby/rc_models/brushless_device/brushless08/brushless08.html


Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя

Регулятор скорости для бесколлекторного двигателя