Esc2 driver схема
Схема условно разделена на две части: левая - микроконтроллер с логикой, правая - силовая часть. Силовую часть можно модифицировать для работы с двигателями другой мощности или с другим питающим напряжением.
Контроллер - ATMEGA168. Гурманы могут сказать, что хватило бы и ATMEGA88, а AT90PWM3 - это было бы "вааще по феншую". Первый регулятор я как раз делал "по феншую". Если у Вас есть возможность применять AT90PWM3 - это будет наиболее подходящий выбор. Но для моих задумок решительно не хватало 8 килобайт памяти. Поэтому я применил микроконтроллер ATMEGA168.
Эта схема задумывалась как испытательный стенд. На котором предполагалось создать универсальный настраиваемый регулятор для работы с различными "калибрами" бесколлекторных двигателей: как с датчиками, так и без датчиков положения. В этой статье я опишу схему и принцип работы прошивки регулятора для управления бесколлекторными двигателями с датчиками Холла и без датчиков.
Драйверы MOSFET ключей
Что такое драйвер ключей и зачем он нужен? Зачем вообще нужны драйверы? Можно включать полевые транзисторы как показано на схеме:Да, в этом случае в качестве драйверов выступают биполярные транзисторы. Это также допустимо. Есть также схемы, где в качестве верхних ключей используются транзисторы с P-каналом, в качестве нижних - с N-каналом. То есть, используется два типа транзисторов, что не всегда удобно. К тому же P-канальные транзисторы большой мощности почти невозможно найти. Обычно использование такое сочетание транзисторов с различными каналами применяют в маломощных контроллерах для упрощения схемы.
Использовать однотипные транзисторы, обычно только N-канальные, значительно удобнее, однако это требует соблюдения некоторых требований по управления верхними транзисторами моста. Напряжение на затвор транзисторов надо подавать относительно их истоков (Source). В случае нижнего ключа вопросов не возникает, его виток (Source) присоединен к земле и мы можем спокойно подавать напряжение на затвор нижнего транзистора относительно земли. В случае верхнего транзистора все несколько сложнее, поскольку напряжение на его истоке (Source) изменяется относительно земли.
Объясню. Представим, что верхний транзистор открыт, через него протекает ток. В таком состоянии на транзисторе падает достаточно малое напряжение и можно сказать, что напряжение на истоке Source верхнего транзистора практически равно напряжению питания двигателя. Кстати, чтобы удерживать верхний транзистор открытым, нужно подать на его затвор напряжение, выше напряжение на его истоке (Source), то есть - выше напряжение питания двигателя.
Если верхний транзистор закрыт, а нижний открыт, то на истоке (Source) верхнего транзистора напряжение достигает практически нулю.
Драйвер верхнего ключа обеспечивает подачу на затвор полевого транзистора необходимое напряжение относительно его истоков (Source), и обеспечивает генерацию напряжения, большей по напряжение питания двигателя для управления транзистором. Этим, и не только этим, занимаются драйверы MOSFET ключей.
Транзисторы и Н-мост
Но чтобы поочерёдно подавать ток на каждую из фаз и менять их полярность, необходимы транзисторы. Ещё нам нужна передача больших токов, высокая скорость переключения и чёткость открытия/закрытия затворов. В данном случае удобнее управлять затворами по напряжению, а не по току. Поэтому оптимальны полевые (MOSFET) транзисторы. Чаще всего их используют в контроллерах. Очень редко можно встретить комбинированный вариант транзисторов.
Для переключения фаз со сменой их полярностей используют классическую схему Н-моста (H-Bridge) из полевых транзисторов.
Он состоит из трёх пар транзисторов. Каждая из пар подключается к соответствующей фазе обмотки двигателя и обеспечивает подачу тока со значением (+ или –). Транзисторы, отвечающие за включение фазы с положительным значением, называют верхними ключами. С отрицательным — нижними. Для каждого шага открывается пара ключей: верхний одной фазы и нижний соседней фазы. В результате ток проходит от одной фазы к другой и приводит электродвигатель в движение.
Из схемы видно, что мы не можем включить одновременно верхний и нижний ключ у одной и той же фазы: произойдёт короткое замыкание. Поэтому очень важно быстрое переключение верхних и нижних ключей, чтобы в переходных процессах не появилось замыкание. И чем качественнее и быстрее мы обеспечим переключения, тем меньше у нас будет потерь и нагрева/перегрева транзисторов H-моста.
Для запуска остаётся обеспечить управление затворами ключей H-моста. Для управления H-мостом нужно:
- Считать показания датчиков Холла.
- Определить, в каком положении какую пару ключей включать.
- Передать сигналы на соответствующие затворы транзисторов.
Расчет резисторов в цепи затвора
Я выработал для себя такое правило: сопротивление резистора в цепи затвора полевого транзистора должен быть не менее, чем внутреннее сопротивление драйвера, разделен на 3 Например, драйвер IR2101 питается напряжением 12В, максимальный ток - 0,25А. Его внутреннее сопротивление: 12В / 0,25 = 48Ом. В данном случае резистор в цепи затвора полевого транзистора должно быть больше, чем 48/3 = 16 Ом. Если время переключения транзисторов с выбранными резисторами не устраивает, следует выбрать более мощный драйвер.
Я не могу назвать эту методику идеальной, но она проверена практикой. Если кто сможет прояснить этот момент - буду благодарен.
Иногда к цепи затвора транзистора добавляют диода с резистором или без.
Это делается для того, чтобы увеличить скорость закрывания ключа. Для того чтобы защитить транзистор от чрезмерного напряжения Vgs иногда используют стабилитроны присоединены к затвору (Gate) и истоком (Sources) транзистора. Перед тем как использовать стабилитрон, выясните какая у него емкость. Обычные стабилитроны могут иметь существенную паразитную емкость, может значительно ухудшить ситуацию с временем открытия транзистора.
Возможности прошивки
- возможность управлять двигателями с датчиками и без;
- для бездатчикового двигателя три вида старта: без определения первоначального положения; с определением первоначального положения; комбинированный;
- настройка угла опережения фазы для бездатчикового двигателя с шагом 1 градус;
- возможность использовать один из двух задающих входов: 1-аналоговый, 2-RC;
- калибровка входных сигналов;
- реверс двигателя;
- настройка регулятора по порту UART и получение данных от регулятора во время работы (обороты, ток, напряжение батареи);
- частота ШИМ 16, 32 КГц.
- настройка уровня ШИМ сигнала для старта двигателя;
- контроль напряжения батарей. Два порога: ограничение и отсечка. При снижении напряжения батареи до порога ограничения обороты двигателя понижаются. При снижении ниже порога отсечки происходит полная остановка;
- контроль тока двигателя. Два порога: ограничение и отсечка;
- настраиваемый демпфер задающего сигнала;
- настройка Dead time для ключей
Цикл работы
Чтобы привести в движение трёхфазный двигатель, нужно рассмотреть цикл его работы за электрический оборот. Итак, имеем три фазы — A, B, C. Каждая из фаз получает положительную и отрицательную полярности в определённый момент времени. Поочерёдно по шагам пропускается ток от «плюса» одной фазы к «минусу» другой фазы. В итоге получается шесть шагов = три фазы × две полярности.
Рассмотрим эти шесть шагов цикла. Предположим, что положение ротора установлено в точке первого шага, тогда с датчиков Холла мы получим код вида 101, где 1 — фаза А, 0 — фаза B, 1 — фаза С. Определив по коду положение вала, нужно подать ток на соответствующие фазы с заданными полярностями. В результате вал проворачивается, датчики считывают код нового положения вала — и т. д.
В таблице указаны коды датчиков и смена комбинаций фаз для большинства электродвигателей. Для обратного хода колеса (реверса) достаточно перевернуть знаки полярности фаз наоборот. Принцип работы двигателя довольно прост.
Цикл двигателя представлен в gif-анимации.
Прототип на Ардуино
Под рукой у меня была Arduino UNO, и я решил собрать контроллер на её основе.
Первым делом я подал на датчики Холла питание 5 вольт от Ардуино (его достаточно для датчиков). Сигнальные провода от датчиков подключил на цифровые пины Ардуино, написав простейшую программу для считывания и обработки сигналов с датчиков.
Затем собрал Н-мост из полевых NPN-транзисторов. Подвёл к мосту независимое питание на 12 вольт. Но при отладке, чтоб убедиться в работоспособности, я подключил напрямую шесть пинов 5V из Ардуино на затворы H-моста. У большинства полевых транзисторов затвор работает на 20 вольт. Так делать нельзя, потому что Н-мост будет плохо работать и перегреваться. Но для кратковременных тестов это пойдёт. Кое-как, с сильными перегревами и страшными звуками, вибрациями и толчками колесо медленно закрутилось. Начало положено.
Схема регулятора
Питание
Питание схемы раздельное. Поскольку драйверы ключей требуют питание от 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 не делать.
Мостовые драйверы
Далее предстояла работа над напряжением 20 вольт на управление затворами. Для этого существуют мостовые драйверы транзисторов, они обеспечивают стабильные импульсы в 20 вольт на затвор и высокую скорость отклика. Сначала у меня были популярные драйверы для маломощных моторов L293D.
Для управления затворами его достаточно, к тому же их очень просто использовать. Один такой драйвер может обеспечить питанием две пары ключей. Поэтому я взял две штуки L293D. Собрал контроллер с этими драйверами, и колесо начало крутиться существенно плавнее, посторонних звуков стало меньше, нагрев транзисторов уменьшился. Но при увеличении оборотов синхронизация с контроллером пропадала, появлялся посторонний звук, колесо дёргалось, вибрировало и полностью останавливалось.
В это же время я наткнулся на два варианта мостовых драйверов:
Что касается HIP4086, то это полноценный мостовой драйвер, предназначенный для трёхфазного электродвигателя. Мне он показался несколько замороченным, и мои попытки использовать его в контроллере не увенчались успехом: он у меня так и не заработал. Углублённо разбираться в причинах не стал.
А взял я IR2101 — полумостовой драйвер, обеспечивающий работу нижнего и верхнего ключей для одной фазы. Несложно догадаться, что таких драйверов нужно три. К слову, драйвер очень прост в использовании, его подключение происходит безболезненно и легко. Получилась такая схема:
И готовый результат
Собрал контроллер с этим драйвером и запустил двигатель. Ситуация с работой электродвигателя кардинально не поменялась, симптомы остались те же, как и в случае с драйвером L293D.
Работа регулятора
Включение
Напряжение питания регулятора и двигателя раздельное, поэтому может возникнуть вопрос: в какой последовательности подавать напряжение. Я рекомендую подавать напряжение на схему регулятора. А затем подключать напряжение питания двигателя. Хотя при другой последовательности проблем не возникало. Соответственно, при одновременной подаче напряжения также проблем не возникало.После включения двигатель издает 1 короткий сигнал (если звук не отключен), включается и постоянно светится светодиод. Регулятор готов к работе.
Для запуска двигателя следует увеличивать величину задающего сигнала. В случае использования задающего потенциометра, запуск двигателя начнется при достижении задающего напряжения уровня примерно 0.14 В. При необходимости можно выполнить калибровку входного сигнала, что позволяет использовать раные диапазоны управляющих напряжений. По умолчанию настроен демпфер задающего сигнала. При резком скачке задающего сигнала обороты двигателя будут расти плавно. Демпфер имеет несимметричную характеристику. Сброс оборотов происходит без задержки. При необходимости демпфер можно настроить или вовсе отключить.
Запуск
Запуск бездатчикового двигателя выполняется с установленным в настройках уровнем стартового напряжения. В момент старта положение ручки газа роли значения не имеет. При неудачной попытке старта попытка запуска повторяется, пока двигатель не начнет нормально вращаться. Если двигатель не может запуститься в течение 2-3 секунд попытки следует прекратить, убрать газ и перейти к настройке регулятора.При опрокидывании двигателя или механическом заклинивании ротора срабатывает защита, и регулятор пытается перезапустить двигатель.
Запуск двигателя с датчиками Холла также выполняется с применением настроек для старта двигателя. Т.е. если для запуска двигателя с датчиками дать полный газ, то регулятор подаст напряжение, которое указано в настройках для старта. И только после того, как двигатель начнет вращаться, будет подано полное напряжение. Это несколько нестандартно для двигателя с датчиками, поскольку такие двигатели в основном применяются как тяговые, а в данном случае достичь максимального крутящего момента на старте, возможно, будет сложно. Тем не менее, в данном регуляторе присутствует такая особенность, которая защищает двигатель и регулятор от выхода со строя при механическом заклинивании двигателя.
Во время работы регулятор выдает данные об оборотах двигателя, токе, напряжении батарей через порт UART в формате:
Данные выдаются с периодичностью примерно 1 секунда. Скорость передачи по порту 9600.
Настройка регулятора
Для настройки регулятора его следует подключить к компьютеру с помощью USB-UART переходника. Скорость передачи по порту 9600.Переход регулятора в режим настройки происходит при включении регулятора, когда задающий сигнал потенциометра больше нуля. Т.е. Для перевода регулятора в режим настройки следует повернуть ручку задающего потенциометра, после чего включить регулятор. В терминале появится приглашение в виде символа ">". После чего можно вводить команды.
Регулятор воспринимает следующие команды (в разных версиях прошивки набор настроек и команд может отличаться):
h - вывод списка команд; ? - вывод настроек; c - калибровка задающего сигнала; d - сброс настроек к заводским настройкам.
команда "?" выводит в терминал список всех доступных настроек и их значение. Например: Изменить нужную настройку можно командой следующего формата:
<настройка>=<значение>
pwm.start=15
Если команда была дана корректно, настройка будет применена и сохранена. Проверить текущие настройки после их изменения можно командой "?".
Фьюзы микроконтроллера должны быть выставлены на работу с внешним кварцем. Строка для программирования фьюзов с помощью AVRDUDE:
Проектирование силовой части обычно начинают с выбора ключей. Наиболее подходящие для этого полевые MOSFET транзисторы. Выбор силовых транзисторов делается на основании данных о максимальном возможный ток и напряжение питающей сети двигателя.
Выбор силовых транзисторов
Транзисторы должны выдерживать рабочей ток с некоторым запасом. Поэтому выбирают полевые транзисторы с рабочим током в 1.2-2 раза больше максимального тока двигателя. В характеристиках полевых транзисторов может быть указано несколько значений тока для различных режимов. Иногда указывают ток, который может выдерживать кристалл Id (Silicon Limited) (он больше) и ток, ограниченный возможностями корпуса транзистора Id (Package Limited) (он меньше). например:Кроме того, фигурирует ток для импульсного режима (Pulsed Drain Current), который, значительно больше (в несколько раз), чем максимально возможный постоянный ток.
Надо выбирать транзисторы по постоянному току, и не обращать внимание на параметры, указанные для импульсного режима. При выборе транзистора учитывается только значение постоянного тока. В данном случае - 195А.
Если невозможно подобрать транзистор нужным рабочим током, несколько транзисторов включают параллельно.
При этом обязательно следует применять указанные на схеме резисторы. Их номинал - единицы Ом, но благодаря им соединены параллельно транзисторы открываются одновременно. Если эти резисторы не ставить, может возникнуть ситуация, когда один из транзисторов открывается, а остальные - еще нет. За это короткое время вся мощность сваливается на один транзистор и выводит его из строя. Об определении номинала этих резисторов говорится ниже. Два транзистора, включенных параллельно, выдерживают вдвое больший ток. 3 - в 3 раза больше. Но не следует злоупотреблять этим и строить ключи из большого количества мелких транзисторов.
Выбор полевых транзисторов по напряжению также выполняется с запасом как минимум в 1.3 раза. Это делается для того, чтобы избежать выхода из строя транзисторов из за скачков напряжения во время коммутаций.
Кроме указанных выше параметров, следует поинтересоваться максимальной температурой работы транзистора и будет ли он выдерживать необходимый ток при этой температуре. Одна из важнейших характеристик - это сопротивление открытого транзистора. Его значения могут достигать нескольких миллиом. На первый взгляд - очень мало, но при больших токах на нем будут выделяться значительные объемы тепла, которое придется отводить. Мощность, которая будет греть транзистор в открытом состоянии, рассчитывается по формуле:
P=Rds*Id^2
Где: Rds- сопротивление открытого транзистора; Ids – ток, который протекает через транзистор.
Отже, якщо транзистор irfp4468pbf має опір 2.6 мOм, то під час пропускання струму 195 А на ньому буде виділятися 98.865 Ватт тепла. У випадку мостової трьохфазної схеми у кожний момент часу відкриті тільки два ключі. Тобто, на двох відкритих транзисторах буде виділятися однакова кількість тепла (по 98.865 Вт, загалом - 197.73 Вт). Але вони працюють не весь час, а по черзі - парами, тобто кожна пара ключів працює 1/3 часу. Отже правильно сказати, що загалом на всіх ключах буде виділятися 197.73 Вт тепла, а на кожному з ключів (98.865 / 3 = 32.955 Вт). Слід забезпечити відповідне охолоджування транзисторів.
Итак, если транзистор irfp4468pbf имеет сопротивление 2.6 мOм, то при токе 195 А на нем будет выделяться 98.865 Ватт тепла. В случае мостовой трехфазной схемы в каждый момент времени открыты только два ключа. То есть, на двух открытых транзисторах будет выделяться одинаковое количество тепла (по 98.865 Вт, в общем - 197.73 Вт). Но они работают не все время, а по очереди - парами, то есть каждая пара ключей работает 1/3 времени. Так что правильно сказать, что в целом на всех ключах будет выделяться 197.73 Вт тепла, а на каждом из ключей (98.865 / 3 = 32.955 Вт). Следует обеспечить соответствующее охлаждение транзисторов.
Но есть одно "но"
Мы примерно подсчитали те тепловые потери, которые происходят за период, когда ключи полностью открыты. Однако не надо забывать, что для ключей присущи такие явления, как переходные процессы. Именно в момент переключения, когда сопротивление ключа изменяется от практически нулевого до почти бесконечности и наоборот, происходит наибольшее тепловыделение, которое значительно больше тех потерь, которые происходят при открытых ключах.
Уявімо, що ми маємо загрузку 0.55 Ом. Напруга живлячої мережі 100В. При повністю відкритих ключах отримаємо струм 100/0.55 = 181 А. Транзистор закривається і в деякий момент його опір сягає 1 Ом. У цей час через нього тече струм 100/(1+0,55)=64.5А Пам`ятаєте формулу, за якою обчислюється теплова потужність? Виходить, що в цей, дуже короткий, час теплові втрати на транзисторі (1+0.55)*(64.5^2) = 6448 Вт. Що значно більше ніж при відкритому ключі. Коли опір транзистора зросте до 100 Ом втрати будуть 99.45 Вт. Коли опір транзистора зросте до 1 КОм втрати будуть 9.98 Вт. Коли опір транзистора зросте до 10 КОм втрати будуть 0.99 Вт.
Представим, что мы имеем нагрузку 0.55 Ом. Напряжение питающей сети 100В. При полностью открытых ключах получим ток 100 / 0.55 = 181 А. Транзистор закрывается и в некоторый момент его сопротивление достигает 1 Ом. В это время через него течет ток 100 / (1 + 0,55) = 64.5А. Помните формулу, по которой вычисляется тепловая мощность? Получается, что в этот очень короткий момент тепловые потери на транзисторе (1 + 0.55) * (64.5 ^ 2) = 6448 Вт. Что значительно больше чем при открытом ключе. Когда сопротивление транзистора возрастет до 100 Ом потери будут 99.45 Вт. Когда сопротивление транзистора возрастет до 1 кОм потери будут 9.98 Вт. Когда сопротивление транзистора возрастет до 10 кОм потери будут 0.99 Вт.
Если вы создадите очень мощную систему охлаждения, а в транзисторе будет образовываться больше тепла чем он физически сможет отвести от себя (смотри: Maximum Power Dissipation), он сгорит.
Итак, не трудно понять, чем быстрее будут переключаться ключи, тем меньше тепловые потери, и тем меньше будет температура ключей.
На скорость переключения ключей влияет: емкость затвора полевого транзистора, номинал резистора в цепи затвора, мощность драйвера ключей. От правильного выбора этих элементов зависит насколько эффективно будут работать ключи.
Иногда люди считают, что можно увеличить мощность регулятора лишь изменив ключи на более мощные. Это не совсем так. Более мощные транзисторы имеют большую емкость затвора, а это увеличивает время открывания транзистора, что влияет на их температурный режим. Такое редко случается, но у меня был случай, когда простая замена транзисторов на более мощные увеличила их температуру из за того, что время их переключения выросло. Итак, более мощные транзисторы требуют более мощных драйверов.
Датчики тока
Традиционно в качестве датчика тока используют шунт. Зная его сопротивление, измеряют на нем напряжение и вычисляют ток. Но для мощных систем использование шунта не всегда технически оправдано из за слишком больших тепловых потерь на нем. Датчики тока на эффекте Холла имеют практически нулевое сопротивление, поэтому они не греются. К тому же, как правило, питания и уровень выходного сигнала таких датчиков находятся в диапазоне 5В, что очень удобно для реализации регулятора на микроконтроллерах. В настоящее время довольно популярны датчики тока компании Allegro MicroSystems, например серии ACS71X, ACS75X.Кроме обычного измерения уровня тока микроконтроллером, разумно создать схему аппаратной защиты от превышения критического уровня тока. Для измерения уровня тока микроконтроллер тратит некоторое время. Кроме того, ток измеряют периодически через некоторое время. Такие задержки, а также возможные программные ошибки могут создать ситуацию, когда критический ток успевает вывести из строя устройство еще до того, как придет момент следующего измерения. Схема должна отключать силовые ключи когда ток превышает критическое значение, независимо от работы микроконтроллера. Для реализации такой схемы обычно используют компаратор, на вход которого подают сигнал с датчика тока и опорный сигнал. При превышении допустимого тока компаратор срабатывает. Выход компаратора используют как дискретный сигнал в логических схемах, аварийно отключают ключи. Такая реализация имеет наименьшую задержку.
Некоторые драйверы имеют дополнительный вход для аварийного отключения ключей, что значительно упрощает создание безопасной схемы регулятора (ESC) безколесторного двигателя (BLDC).
Как вы уже знаете из прошлых постов, у нас в компании есть DIY-движение. В свободное от работы время коллеги занимаются фрезеровкой печатных плат в домашних условиях, делают тепловизор на FLIR Lepton, а также решают семейные разногласия с помощью 4 контроллеров и 2 умных часов. Продолжим серию увлекательный историй! Сегодня я расскажу, как сделать контроллер к трехфазному двигателю электровелосипеда своими руками. Целью создания такого контроллера было:
- Изучение работы трехфазного мотора под управлением контроллера.
- Большинство контроллеров для электровелосипедов, представленных на рынке, — китайские. Они хоть и относительно дешевые (около 2.000 руб в зависимости от мощности), но являются неведомой коробкой, в которой неизвестно что происходит. И сразу к ней возникает очень много вопросов — экономично ли она потребляет и распределяет ток, какой у нее запас мощности, почему так сильно перегревается, преждевременно срабатывает защита по току и т.д.
В тоже время на рынке представлены европейские качественные контроллеры для электробайков. Они оснащаются расширенными функциями, работают на разных напряжениях и токах и их можно программировать. Устанавливаются они на сверхмощные электровелосипеды. Но цена у них кусается — 10-20 тыс. рублей.
В итоге я решил пойти своим путем: разобраться в устройстве контроллера, сделать его прототип, а затем попытаться сделать контроллер качественнее китайского контроллера. На текущий момент проект у меня в разработке только и на уровне прототипа, готового варианта пока нет. Буду рад услышать ваши комментарии и советы.
Выбор драйвера и их многообразие
Многообразие драйверов достаточно велико. Нас интересуют драйверы, которые имеют два входа для верхнего и нижнего ключей (драйверы верхнего и нижнего ключей). Например: IR2101, IR2010, IR2106, IR21064, IR2181, IR2110, IR2113 и др. Надо обратить внимание на параметр Vgs ваших транзисторов. Большинство драйверов рассчитаны для Vgs=20В. Если Vgs транзисторов меньше выходное напряжение драйверов, например Vgs транзистора = 5В, то драйверы с выходным напряжением 20В выведут такие транзисторы из строя.Большинство драйверов питаются напряжением 10-20В и поддерживают входные сигналы различных уровней -3.3В, 5В, 15В.
Существуют драйверы для трехфазных мостовых схем, например: IR3230, IRS2334, IRS2334, IR21363, IR21364, IR21365, IR21368, IRS2336, IRS23364D, IRS2336D, IRS26310DJ, IR2130, IR2131, IR2132, IR2133, IR2135, IR2136, IRS2330, IRS2330D, IRS2332, IRS2332D, IR2233, IR2235, IR2238Q, IRS26302DJ. Такие драйверы ключей могут стать самым подходящим вариантом. К тому же в некоторых трехфазных драйверах есть дополнительная возможность для обеспечения защиты ключей от слишком большого тока и т.п. Довольно интересная серия драйверов IRS233x (D). Она обеспечивает широкий спектр защит, в том числе защиту от негативных скачков напряжения, защита от короткого замыкания, от перегрузки, защита от снижения напряжения в шине, от снижения напряжения питания, защита от перекрестного включения.
Один из важнейших показателей драйверов - это максимальный выходной ток. Обычно от 200мА до 4000мА. Может показаться что 4 Ампера - это слишком. Но все решает калькулятор. Как отмечалось выше скорость переключения ключей - очень важная вещь. Чем мощнее драйвер, тем меньше времени тратится на переключение ключей. Примерно рассчитать время переключения ключей можно по формуле:
ton = Qg*(Rh+R+Rg)/U
Где: Qg – полный заряд затвора полевого транзистора; Rh – внутреннее сопротивление драйвера. Рассчитывается как U/Imax, где U - напряжение питания драйвера, Imax - максимальной выходной ток. Обратите внимание, что максимальной выходной ток может быть различным для верхнего и нижнего транзистора; R – сопротивление резистора в цепи затвора; Rg – внутреннее сопротивление затвора транзистор; U – напряжение питания драйвера.
Например, если мы используем транзистор irfp4468pbf и драйвер IR2101 с максимальным током 200мА. А в цепи затвора резистор 20 Ом, тогда время переключения транзистора:
540*(12/0.2 + 20 + 0.8)/12 = 3636 нС
Заменив драйвер на IR2010, с максимальным током - 3А, и резистором в цепи затвора - 2ом, получим такое время переключения:
540*(12/3+2+0.8)/12 = 306 нС
То есть, с новым драйвером время переключения сократился более чем в 10 раз. Так что и тепловые потери на транзисторах значительно уменьшатся.
Аппаратное прерывание
И тут я понял, в чём дело: Ардуино не успевает обрабатывать показания датчиков Холла! Поэтому необходимо было использовать пины Ардуино с аппаратным прерыванием. Так как у Ардуино УНО таких пинов всего два, а под датчики нужно три пина, надо взять Ардуино Леонардо или Искра Нео, где таких пинов — четыре штуки.
Переписав программу под прерывания и подключив Искру Нео вместо УНО, я повторил испытания.
Колесо наконец-то заработало чётко, без вибраций, шумов, отлично стало набирать обороты без рассинхронизации. Прототип оказался жизнеспособным. Но это ещё не полноценный контроллер, поскольку в нём не было обвязки с защитами и обеспечением качественного ШИМ-сигнала.
Применение
В электровелосипедах используются трёхфазные бесщёточные электродвигатели с датчиками Холла. Стоит отметить, что применение подобных трёхфазных двигателей достаточно обширно:
- Бытовая техника
- Оргтехника
- Электротранспорт
- Промышленность
Устройство двигателя
Для разработки контроллера необходимо разобраться с принципом работы самого электродвигателя.
Электродвигатель состоит из фазных обмоток, магнитов и датчиков Холла, отслеживающих положение вала двигателя.
Конструктивно электродвигатели делятся на два типа: инраннеры и аутраннеры.
У инраннеров магнитные пластины крепятся на вал, а обмотки располагаются на барабане (статоре), в этом случае в движение приводится вал. В случае аутраннера всё наоборот: на валу — фазные обмотки, а в барабане — магнитные пластины. Это приводит в движение барабан.
Так как у велосипеда колесо крепится валом на раму, то здесь применителен тип аутраннера.
На этой картинке условно представлены три фазы с обмотками, соединёнными между собой. В реальности обмоток намного больше, они располагаются равномерно с чередованием по фазам по окружности двигателя. Чем больше обмоток — тем плавнее, чётче, эластичнее работает двигатель.
В двигатель устанавливаются три датчика Холла. Датчики реагируют на магнитное поле, тем самым определяя положение ротора относительно статора двигателя. Устанавливаются с интервалами в 60 или 120 электрических градусов. Эти градусы относятся к электрическому фазному обороту двигателя. Необходимо учитывать, что чем больше в двигателе обмоток на каждую фазу, тем больше происходит электрических оборотов за один физический оборот мотор-колеса.
Обмотки трёх фаз в большинстве случаев соединяются между собой по двум схемам: звезда и треугольник. В первом случае ток проходит от одной из фаз к другой, во втором — по всем трём фазам в разной степени. Иногда эти две схемы подключения комбинируют в одном двигателе, например в электромобилях. При старте и наборе скорости идёт соединение фаз по звезде: она даёт больший момент при относительно низких оборотах; далее, после набора скорости, происходит переключение на треугольник, в результате количество оборотов увеличивается, когда уже не нужен большой крутящий момент. По сути, получается условно автоматическая коробка передач электродвигателя.
Защитные диоды
Поскольку во многих случаях силовые транзисторы работают с индуктивной нагрузкой, должны использоваться защитные диоды. Если их не будет, то при выключении транзистора вследствие переходных процессов на индуктивностях (обмотках двигателя) возникнет перенапряжение, что во многих случаях пробивает транзистор и выводит его из строя.Во многих силовых транзисторах уже есть внутренние защитные диоды и нет необходимости использовать внешние диоды. Но не забудьте это проверить в документации на транзистора.
Dead-Time
- выключаем ключ, который надо выключить;
- ждем некоторое время (Dead-Time) пока закроется транзистор (примерное время переключения транзистора мы рассчитывали ранее), и закончатся переходные процессы, связанные с коммутацией;
- включаем ключ, который надо включить.
Прототип на базе микросхемы MC33035
Параллельно с разработкой контроллера на Ардуино я рассматривал альтернативные варианты логической части контроллера. И это привело меня к микросхеме MC33035. Это старая разработка от Motorola, сейчас её выпускает ON Semiconductor. Создана специально для мощных трёхфазных двигателей.
- Отвечает за всю логическую часть контроллера
- Считывает показания с датчиков Холла
- Определяет положения вала
- Выдаёт сигналы для затворов Н-моста на их драйверы
- Имеет возможность подключения индикатора ошибок, перегрева
- Обрабатывает и передает ШИМ-сигнал (PWM)
- Осуществляет реверс (обратный ход колеса)
Одним словом, микросхема содержит всё необходимое для управления электродвигателем. Её стоимость очень низкая: на Алиэкспрессе — около 50 рублей. Для сборки полноценного контроллера на её основе потребуется микросхема MC33035, полумостовые драйверы и Н-мост из полевых транзисторов. Я также собрал контроллер на этой микросхеме. Работает отлично, стабильно, колесо крутится как надо на различных оборотах. Но функционал микросхемы ограничен, если необходимо наворотить различные функции, вывод на дисплей скорости, одометр, расход батареи, то опять же возникает необходимость дополнительно подключить Ардуино или что-то аналогичное.
Схема с MC33035
Главное преимущество контроллера на базе MC33035 — это простота в использовании. Просто покупаете микросхему, собираете Н-мост, спаиваете всё на плату с небольшой обвязкой — и контроллер готов. Если нужно просто запустить двигатель с ШИМ-сигналом и управлять им — оптимальный вариант.
Контроллер на базе Ардуино — вариант сложнее, понадобится писать логику, обеспечивать дополнительные защиты контроллера. Но для экспериментов, прототипов, дополнительного функционала, использования различных режимов работы двигателя — подходящий вариант. Поэтому я решил пока отложить MC33035 и продолжить работу с Ардуино.
Привет Хабровчане!
Решил я рассказать «всему свету» о проблеме, с которой столкнулся при постройке своего проекта, и как мне удалось её решить.
А речь сегодня пойдет о бесколлекторных двигателях, о регуляторах хода и как ими управлять.
Что же такое бесколлекторный двигатель, я не буду долго расписывать (сами можете посмотреть Wiki), а скажу в 2х словах, это 3х фазный двигатель постоянного тока.
И приводится в движение сие чудо благодаря специальному регулятору, который последовательно переключает обмотки с определенной частотой.
Управляя частотой переключения обмоток мы управляем скоростью вращения ротора.
Ну что же, надеюсь тут все понято, идем дальше.
Первые проблемы
Были закуплены 2 комплекта двигатель + регулятор, ждал около месяца, пришли.
Мною овладел приступ безудержного веселья по этому поводу, но, к сожалению, это было ненадолго….
Рассмотрев эти чудеса техники я решил подключить их к источнику питания, и тут то первое разочарование, тихий хлопок (как от КЗ) и тишина, светодиоды не горят, писка нет (а он должен быть), только крутится кулер на регуле, беда…
Побежал в ближайший Хобби магазин, и добрый консультант вынес вердикт: сгорел!
Со вторым такая же история, в общем ребята, не повезло, оба бракованные…
Ну хоть кошечка порадовалась:
Пришлось раскошелиться и купить у них регулятор по цене обоих комплектов (поджимали сроки).
Купил, подключил, все пищит, горит, работает, прям аж душа радуется! (на фото он выделен):
Проблема номер два
Теперь настала пора покрутить двигателем.
А покрутить нужно не с сервотестера или аппы радиоуправления, а с микроконтроллера, а точнее вот с такой платки:
Залил, ноль эмоций…
Бился 2 дня, пока не наткнулся на случайный пост, о том, что у регулятора есть защита, и он начинает функционировать только при подаче на его вход ШИМ сигнала 1,5 мс.
Окей, будет сделано.
Дальше я подцепил обыкновенный резистор через АЦП, и опытным путем подобрал крайние значения ШИМ регулятора.
Код получившийся в итоге:
И все заработало.
Теперь все крутиться, шумит, пищит и просто радует.
P.S. Это код для управления сразу 2мя двигателями.
И последняя проблема, питание…
Здесь расскажу немного, а именно, от регулятора идет 3 провода:
Центральная колодка, по порядку Черный — минус, Красный — плюс и Белый — провод управления.
И загвоздка в том, что в отличие от сервоприводов, это не входы под питание, а выходы, т.е. питаемся от них.
К чему я это, да к тому, что подключив регулятор как серву, я чуть не спалил порты на ноутбуке, ибо плата в это время была запитана от USB.
Но к счастью у моего старичка сработала защита и все обошлось перезагрузкой…
Спасибо большое за внимание.
Надеюсь мой опыт будет полезен для вас.
До скорых встреч.
Читайте также: