- Структура регулятора скорости бесколлекторного двигателя (ESC)
- Модуль контроллера
- Техническая реализация
- ШИМ сигнал на 6 ключей
- Напряжение от трех фаз, напряжение средней точки
- Датчик тока и контроль напряжения питания
- Сигнал, задающий обороты двигателя.
- Дополнительные сигналы
- Модуль силовых ключей
- Модуль датчиков
- Защита
- Схема регулятора скорости бесколлекторного двигателя (ESC)
- Схема регулятора
- Питание
- ШИМ и сигналы для ключей
- Обратная связь (контроль напряжения фаз двигателя)
- Датчики Холла
- Измерения аналоговых сигналов
- Задающие сигналы
- UART интерфейс
- Прочее
- Силовая часть
- Возможности прошивки
- Работа регулятора
- Включение
- Запуск
- Настройка регулятора
Структура регулятора скорости бесколлекторного двигателя (ESC)
Перед тем, как приступить непосредственно к разработке схемы регулятора, составим его блок-схему. Это упростит последующий выбор элементной базы.
Регулятор скорости бесколлекторного двигателя (ESC — Electronic Speed Controller) иногда называют контроллер бесколлекторного двигателя или привод бесколлекторного двигателя.
Условно разделим регулятор на следующие модули: Модуль контроллера — принимает задающие сигналы, сигналы датчиков, выдает управляющие сигналы на ключи Модуль силовых ключей — управляет силовыми ключами Модуль датчиков — совокупность различных датчиков и схем согласования.
Модуль контроллера
Техническая реализация
ШИМ сигнал на 6 ключей
Второй способ легко реализуется с помощью любого микроконтроллера хотя бы с одним PWM выходом + 6 дискретных выходов для каждого из ключей. В этом случае дополнительно потребуются микросхемы логики.
Если требуется выбрать способ подачи ШИМ на ключи (только верхние / только нижние / верхние и нижние) в первом случае придется предусмотреть программные установки. Во втором можно обойтись двумя перемычками на плате.
Напряжение от трех фаз, напряжение средней точки
Такая же схема — для напряжения средней точки. После делителя эти сигналы поступают на вход компаратора. Можно использовать отдельные схемы компараторов. После компараторов дискретные сигналы поступают на входы микроконтроллера. Многие микроконтроллеры имеют встроенные компараторы, которые можно использовать. Сигналы после делителя будут подаваться непосредственно на входы микроконтроллера. По большому счету, в каждый момент времени нас интересует напряжение только на одной, измеряемой фазе. Поэтому можно построить схему с одним компаратором и аналоговым мультиплексором. Собственно, внутри микроконтроллера примерно так и происходит.
Датчик тока и контроль напряжения питания
Можно использовать классический шунт, с операционным усилителем. Датчик тока на основе датчика Холла выбран, поскольку планируется управлять двигателями с большими токами, где применение шунта приведет к значительному тепловыделению.
Контроль напряжения питания необходим при использовании батарей. Он позволит избежать глубокого разряда батарей.
Сигнал, задающий обороты двигателя.
Дополнительные сигналы
Поскольку Tx, Rx выходы предполагается использовать только для настройки регулятора, нам потребуется еще индикатор состояния. Наиболее простой — обычный светодиод.
Модуль силовых ключей
Драйверы ключей следует проектировать так, чтобы те не допускали возможности одновременного открытия ключей верхнего и нижнего плеча. Кроме того, должны реализовывать временную задержку между закрытием одного ключа и открытием другого. Эта задержка может быть реализована драйвером, если у используемого драйвера имеется такая функция, или — микроконтроллером. При выходе со строя ключей, драйверы ключей должны препятствовать прохождению напряжения, питающего двигатель, в цепь микроконтроллера. Именно поэтому я предпочитаю использовать специальные микросхемы драйвера MOSFET ключей.
Для систем с большими токами не всегда удается подобрать подходящий транзистор для ключа. Параллельное включение транзисторов может решить эту задачу. Если включить два одинаковых полевых транзистора параллельно, можно получить сборку, пропускающую в 2 раза больший ток. Рекомендуется включать затворы транзисторов через резисторы номиналом 2-100 Ом, как показано на схеме. Номиналы резисторов выбираются с учетом емкости затвора транзистора, максимального тока, который может обеспечить драйвер ключа и необходимого времени открытия ключа.
Модуль датчиков
Разделение регулятора на модули — мера условная и направлена в первую очередь на упрощение дальнейшего проектирования. Она не обязывает нас физически разделять регулятор на разные части. Конечная реализация зависит от конкретной поставленной задачи.
На блок-схеме присутствуют датчики Холла H1, H2, H3. Разумеется, они нужны только для двигателей с датчиками Холла. В следующей статье будет рассматриваться схема простого универсального регулятора, который разрабатывался для управления двигателями с датчиками Холла и без таковых.
Защита
В регуляторах бесколлекторного двигателя всегда присутствует конденсатор. Его емкость обычно не маленькая и при подключении питания двигателя будет проскакивать искра. При питании до 12 вольт этот эффект можно проигнорировать. Но при большом напряжении питания вспышка искры может быть не только пугающе яркой и громкой, но и вызывать микро повреждения контактов, которые в последующем могут вызвать их более существенную эрозию. Для устранения этого эффекта я использовал простейшую схему с токоограничивающим резистором. Подключение к питающему напряжению выполняется в два действия. Сразу к батарее подключается вспомогательный контакт. Через резистор конденсаторы плавно заряжаются, через несколько секунд напряжение на конденсаторах практически достигает напряжения питания, после чего подключается основной контакт.
Следует предусмотреть возможность выхода со строя потенциометра, задающего обороты двигателя (или другого задающего устройства). В реальных условиях банальный обрыв провода может привести к неуправляемому изменению оборотов двигателя. Поэтому, крайне целесообразно так же предусмотреть аварийное отключение двигателя.
Регулятор должен препятствовать возникновению нештатных ситуаций и в критических случаях отключать двигатель. Например, в следующих случаях:
- превышение допустимого тока;
- заклинивание двигателя;
- превышение двигателем допустимых оборотов. Регулятор имеет свои технические возможности и не сможет корректно управлять двигателем, который вращается быстрее, чем сможет отследить регулятор;
- снижения питающего напряжения ниже допустимого уровня (предотвращение глубокого разряда батарей).
Нештатные ситуации могут привести к выходу со строя отдельных элементов регулятора. Чаще всего выходят со строя транзисторные ключи, так как они подвержены наибольшей нагрузке и риску. Регулятор должен реагировать на такие ситуации, как превышение тока, и отключать ключи во избежание более серьезных последствий. Однако, невозможно предусмотреть абсолютно все ситуации, особенно на этапе разработки. Иногда случаются достаточно нестандартные случаи, при которых ток через ключи может достигать критических значений, что грозит неприятностями не только ключам, но и батарее питания. Спасти может старый добрый предохранитель. Я рекомендую использовать предохранитель всегда! Если у Вас не будет хотя бы элементарного предохранителя с плавкой вставкой, сгорят ключи, двигатель, провода, гараж, дом, еще что-то и . это будет дороже, чем использовать предохранитель.
Источник
Схема регулятора скорости бесколлекторного двигателя (ESC)
Схема условно разделена на две части: левая — микроконтроллер с логикой, правая — силовая часть. Силовую часть можно модифицировать для работы с двигателями другой мощности или с другим питающим напряжением.
Контроллер — ATMEGA168. Гурманы могут сказать, что хватило бы и ATMEGA88, а AT90PWM3 — это было бы «вааще по феншую». Первый регулятор я как раз делал «по феншую». Если у Вас есть возможность применять AT90PWM3 — это будет наиболее подходящий выбор. Но для моих задумок решительно не хватало 8 килобайт памяти. Поэтому я применил микроконтроллер ATMEGA168.
Эта схема задумывалась как испытательный стенд. На котором предполагалось создать универсальный настраиваемый регулятор для работы с различными «калибрами» бесколлекторных двигателей: как с датчиками, так и без датчиков положения. В этой статье я опишу схему и принцип работы прошивки регулятора для управления бесколлекторными двигателями с датчиками Холла и без датчиков.
Схема регулятора
Питание
ШИМ и сигналы для ключей
Обратная связь (контроль напряжения фаз двигателя)
Датчики Холла
Измерения аналоговых сигналов
На вход ADC3(PC3) поступает аналоговый сигнал от датчика тока. Датчик тока ACS756SA. Это датчик тока на основе эффекта Холла. Преимущество этого датчика в том, что он не использует шунт, а значит, имеет внутреннее сопротивление близкое к нулю, поэтому на нем не происходит тепловыделения. Кроме того, выход датчика аналоговый в пределах 5В, поэтому без каких-либо преобразований подается на вход АЦП микроконтроллера, что упрощает схему. Если потребуется датчик с большим диапазоном измерения тока, Вы просто заменяете существующий датчик новым, абсолютно не изменяя схему.
Если Вам хочется использовать шунт с последующей схемой усиления, согласования — пожалуйста.
Задающие сигналы
Кроме того, есть вход RC сигнала, который повсеместно используется в дистанционно управляемых моделях. Выбор управляющего входа и его калибровка выполняется в программных настройках регулятора.
UART интерфейс
Прочее
Светодиод, сигнализирующий о состоянии регулятора, подключен к выводу PD4.
Силовая часть
Ключи нужно выбирать в зависимости от максимального тока и напряжения питания двигателя (выбору ключей и драйверов будет посвящена отдельная статья). На схеме обозначены 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 В. При необходимости можно выполнить калибровку входного сигнала, что позволяет использовать раные диапазоны управляющих напряжений. По умолчанию настроен демпфер задающего сигнала. При резком скачке задающего сигнала обороты двигателя будут расти плавно. Демпфер имеет несимметричную характеристику. Сброс оборотов происходит без задержки. При необходимости демпфер можно настроить или вовсе отключить.
Запуск
При опрокидывании двигателя или механическом заклинивании ротора срабатывает защита, и регулятор пытается перезапустить двигатель.
Запуск двигателя с датчиками Холла также выполняется с применением настроек для старта двигателя. Т.е. если для запуска двигателя с датчиками дать полный газ, то регулятор подаст напряжение, которое указано в настройках для старта. И только после того, как двигатель начнет вращаться, будет подано полное напряжение. Это несколько нестандартно для двигателя с датчиками, поскольку такие двигатели в основном применяются как тяговые, а в данном случае достичь максимального крутящего момента на старте, возможно, будет сложно. Тем не менее, в данном регуляторе присутствует такая особенность, которая защищает двигатель и регулятор от выхода со строя при механическом заклинивании двигателя.
Во время работы регулятор выдает данные об оборотах двигателя, токе, напряжении батарей через порт UART в формате:
Данные выдаются с периодичностью примерно 1 секунда. Скорость передачи по порту 9600.
Настройка регулятора
Переход регулятора в режим настройки происходит при включении регулятора, когда задающий сигнал потенциометра больше нуля. Т.е. Для перевода регулятора в режим настройки следует повернуть ручку задающего потенциометра, после чего включить регулятор. В терминале появится приглашение в виде символа «>«. После чего можно вводить команды.
Регулятор воспринимает следующие команды (в разных версиях прошивки набор настроек и команд может отличаться):
h — вывод списка команд; ? — вывод настроек; c — калибровка задающего сигнала; d — сброс настроек к заводским настройкам.
команда «?» выводит в терминал список всех доступных настроек и их значение. Например: Изменить нужную настройку можно командой следующего формата:
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 = (U*R6/(R5+R6))*255/5 Где: U — напряжение в Вольтах; R5, R6 — сопротивление резисторов делителя в Омах.
** — числовое значение 8-ми битного аналого цифрового преобразователя. Рассчитывается по формуле: ADC = U*255/5 Где: U — напряжение датчика тока в Вольтах, соответствующее требуемому току.
Фьюзы микроконтроллера должны быть выставлены на работу с внешним кварцем. Строка для программирования фьюзов с помощью AVRDUDE:
-U lfuse:w:0xFF:m -U hfuse:w:0xDC:m
Источник