Речь о том, как управлять включением и скоростью двигателя постоянного тока на примере сервопривода MC50 так, чтобы сервопривод не сгорел. Несмотря на то, что MC50 был разработан для управления BLDC моторами, он также хорошо подходит и для управления коллекторными двигателями постоянного тока мощностью до 600 Вт. Правда для этого пришлось сделать некоторые незначительные модификации.   Схема и плата контроллера Первые шаги по программированию контроллера Развёртывание промежуточного программного обеспечения Отладка взаимодействия с интернетом 6-шаговая коммутация BLDC моторов Разработка сервопривода с BLDC мотором Разработка робастного управления сервоприводом  Во-первых, сопротивление шунтов в измерителях тока фаз было уменьшено до 1 мОм. Во-вторых,  MOSFET транзисторы CSD18540Q5BT в 3-фазном мосте были заменены на более продвинутые и недавно выпущенные  STL320N4LF8. Эти транзисторы отличает уникально низкое сопротивление открытого канала - всего 0.8 мОм, при таком же быстродействии и даже выше чем у CSD18540Q5BT. Благодаря этому на мощностях до 400 Вт и чуть выше сервоприводу не нужен вентилятор. А когда мощность требует вентилятора, то его можно подключить между оставшейся свободной фазой W и клеммой GND.   В текущей версии программы мотор можно включать и выключать в ручном режиме с платы используя ручной энкодер, из управляющей программы Freemaster и по интерфейсу CAN. Для управления скоростью вращения коллекторные двигатели вместо 3-фазных датчиков холла оборудуются 2-фазными датчиками с квадратурным сигналом.  В программе при выборе типа приложения DC traction motor будет проводится измерение скорости с квадратурного энкодера подключённого к линиям W и V. Сам мотор подключается к клеммам U и V. В данном случае получается полный мост и мотор можно вращать в обоих направлениях.  Скоростью мотора управляем изменяя коэффициент заполнения ШИМ. Когда хотим получить полную мощность ШИМ отключаем и оставляем статические включённые транзисторы. В традиционных драйверах такое могло привести к падению напряжения в бустерах верхних ключей и их закрытию, поскольку они подзаряжаются только при наличии ШИМ. Но в нашей схеме применена микросхема драйвера 3-фазного моста TMC6200, которая сама создаёт нужное напряжение для верхних ключей без необходимости ШИМ.   Это плюс.  Но есть другая проблема - мёртвое время. Мёртвое время обеспечиваемое микросхемой TMC6200 слишком мало для мощных MOSFET применяемых на плате. Дополнительное мёртвое время создаётся в ШИМ генераторах микроконтроллера. Это стандартная фича. Нестандартно здесь будет обеспечить переход из ШИМ в статические сигналы и обратно.Когда плавно повышаем ШИМ до 100%, то в конце процесса нужно выставить статический сигнал, чтобы в одном плече все время был открыт верхний транзистор, а в другом плече нижний. Тут может оказаться, что микроконтроллер не справляется с такой задачей без установления на доли микросекунды одновременного высокого уровня на верхнем и нижнем транзисторах использую штатные возможности таймеров. Также следует рассмотреть выход из статических сигналов на формирование ШИМ и ситуации переключения из одной статической конфигурации сигналов к противоположной.   Есть опасность коротких (наносекундных), но очень мощных сквозных токов.        В случае нашего микроконтроллера Renesas Synergy выход был найден в быстром переключении функции портов с периферийной функции на функцию общего ввода вывода с явной очерёдностью установки уровней сигналов.  Выглядит это так, на примере одной фазы: Подавать напряжение на двигатель постоянного тока надо с осторожностью.  При резкой подаче даже половинного от номинального напряжения возникает импульс тока через мотор почти в два раза превышающий  его максимальный рабочий ток.  Если увеличить напряжение ещё на 10%, то ток уже достигает величины на пределе безопасной работы силовых элементов драйвера.   Отсюда следует, что запускать мотор постоянного тока следует плавно. Причём даже увеличивая по шагам заполнение ШИМ всего на 1%, можно наблюдать импульсы тока на моторе величиной около 1 А. Поэтому график мощности потребления и тока, показанный ниже, имеет странную пилообразную структуру.    Если мотор удалось без происшествий разогнать, то теперь задача его остановить. Резкая остановка закорачиванием обмоток работает неплохо, но вызывает сильный удар способствующий ускоренному разрушению ведущего вала при наличии инерционной нагрузки.  Поэтому применяют контролируемое замедление снижением напряжения (уменьшая коэффициент заполнение ШИМ). И здесь поджидает обратная ЭДС. Если мы попытаемся останавливать быстрее чем останавливается мотор при свободном выбеге (когда все транзисторы в драйвере отключаются), то можем получить обратную ЭДС амплитудой превышающей выносливость питающего источника или пробить силовые транзисторы.   В нашем случае свободный выбег мотора без нагрузки от максимальной скорости длился чуть менее 3 сек. Поэтому линейное контролируемое замедление длящееся не менее 3 сек. не вызовет перенапряжения в шине питания.   На итальянском моторе может быть такая надпись: SERVIZIO S3 25%. На других моторах символы S3 могут встретиться также. Это говорит о том, что мотор не предназначен для постоянной работы. Если его держать с номинальной скоростью в течении, скажем, часа, то он просто сгорит. Поэтому на мотор тоже надо ставить термосенсор.  Можно, конечно, следить в программе сколько там процентов времени проработал мотор, но это скорее всего приведёт к недобору ресурса по температуре и более частым отказам в исполнении команд. В нашем сервоконтроллере есть специальный вход для подключения NTC резистора 10 КОм.  Далее можно столкнуться с перегревом самого сервоконтроллера. На плате установлен измерительный термистор рядом с силовыми транзисторами. Кроме этого термосенсор интегрирован в самом микроконтроллере и присутствует защита от перегрева в микросхеме драйвера TMC6200.  Следует помнить, что длительный перегрев хуже всего влияет на электролитические конденсаторы, которые быстро теряют свой ресурс при 100 и более град.Установленные конденсаторы типа EEE-FT1H331AP имеют ресурс 2000 часов при 105 град. С. Несмотря на то, что наш двигатель называется двигателем постоянного тока, его ток потребления при постоянном напряжении все равно импульсный. И амплитуда импульсов достигает десятка ампер. Поэтому импульсная нагрузка на конденсаторы не намного меньше чем в 6-шаговом управлении BLDC моторами. Т.е. конденсаторы греются не только через плату от транзисторов и шунтов, но и сами по себе. В программе реализовано управление вентилятором с клеммы W и задаётся таймаут отключения вентилятора после остановки мотора.      Все исходные тексты проекта находятся здесь. В проекте сохранена также функциональность всех предыдущих демонстраций серво управления BLDC и все промежуточное программное обеспечение включая RTOS и сетевые стеки. Переключение между управлением BLDC и DC моторами производится в энергонезависимых настройках.  Кроме того добавлено дистанционное управление по CAN с одного сервоконтроллера другим сервоконтроллером.