Первый из серии уроков, посвященных разработке регулятора скорости вращения коллекторного двигателя постоянного тока. Рассматривается аппаратное подключение двигателя к плате Ардуино.
Предыдущий урок Список уроков Следующий урок
Игорь из Москвы заказал мне разработку контроллера- регулятора скорости вращения двигателя постоянного тока.
Это продолжение бесконечной разработки интеллектуального сверлильного станка. Сначала я написал для него общую управляющую программу. Затем мы создали электронный прицел для станка на OSD-генераторе. Пришла очередь до двигателя, который вращает шпиндель.
Используется коллекторный двигатель постоянного тока мощностью 500 Вт и номинальным напряжением 100 В. Необходимо задавать и стабилизировать его скорость вращения.
Тема показалась мне очень интересной, и я решил в качестве уроков описать последовательность своих действий по разработке контроллера двигателя. Тем более в интернете эта тема ограничивается теоретическими рассуждениями.
Должен получиться учебный материал на несколько разных тем:
- аппаратное подключение двигателя постоянного тока к Ардуино;
- измерение частоты и периода сигнала ;
- управление нагрузкой с помощью ШИМ;
- ПИД-регулятор;
- этапы разработки подобных устройств.
Кроме того, я надеюсь, что получится законченный аппаратно-программный блок – ПИД-регулятор скорости вращения двигателя постоянного тока. Его можно будет использовать в различных приложениях.
У Игоря используется достаточно мощный мотор 500 Вт, с номинальным напряжением питания 100 В. У меня такого двигателя нет. Поэтому я проведу разработку и испытания на компьютерном вентиляторе с номинальным напряжением 12 В. Не сомневаюсь, что все написанное и разработанное будет справедливо и для гораздо более мощных устройств. По крайней мере, Игорь проверит контроллер на 500 ваттном моторе.
Аппаратное подключение двигателя постоянного тока к Ардуино.
Существуют две основные задачи:
- Необходимо управлять двигателем, изменяя на нем напряжение, а значит и мощность. Т.е. нужно создать регулирующий элемент, с помощью которого регулятор будет изменять состояние двигателя, увеличивать или уменьшать его скорость вращения.
- Надо измерять скорость вращения двигателя, чтобы регулятор мог ее контролировать.
Сошлюсь на Урок 39, раздел ”Общие сведения о регуляторах”. Там написано, что необходимо выделить:
- регулируемый параметр – что мы регулируем;
- регулирующий элемент – с помощью чего мы регулируем.
Аппаратную часть этих компонентов регулятора и будем разрабатывать в этом уроке.
Подключение двигателя к ШИМ Arduino.
Естественно для управления двигателем будем использовать ШИМ. Это значительно упростит схему, повысит КПД. Практически, независимо от мощности и напряжения мотора, для управления им достаточно одного ключа. Конечно, передельно-допустимые параметры ключа должны соответствовать двигателю. Для моего двигателя-вентилятора я выбрал такие элементы.
ШИМ с выхода Ардуино открывает и закрывает ключ, собранный на MOSFET-транзисторе. Можно, конечно, использовать и биполярный транзистор, но:
- полевым проще управлять;
- у него меньше падение напряжения в открытом состоянии, а значит он меньше греется;
- в отличие от биполярного транзистора, он работает на высоких частотах 100 кГц и выше.
Я выбрал MOSFET-транзистор IRF7341: N-канал, 55 В, 4 А. Кроме предельно-допустимых параметров необходимо учитывать то, что транзистор должен быть низкопороговым, т.е. открываться при небольшом напряжении (не более 5 В). Иначе необходимо использовать дополнительный элемент – драйвер.
Диод в схеме абсолютно необходим. Двигатель – это индуктивная нагрузка, а иногда и электрогенератор. Поэтому при закрытии транзистора на выводах двигателя могут возникать броски высокого напряжения. Они должны замыкаться через диод, чтобы не сжечь транзистор.
В некоторых подобных схемах используют низкочастотные выпрямительные диоды, например, 1N4007. Это допустимо только для дискретного управления двигателем: включить или выключить. При управлении с помощью ШИМ, особенно с высокой частотой, диод должен быть высокочастотным, лучше с барьером Шоттки.
При закрытом транзисторе диод находится в открытом состоянии, через него течет ток размагничивания обмотки двигателя. Затем транзистор открывается. А диод закрывается только через время восстановления обратного сопротивления. Даже у “быстрых” (FR307) диодов это время составляет 150-500 нс, у “супербыстрых” 35 нс, а у выпрямительных 1N4007 этот параметр не нормируется. Представьте себе, что при частоте ШИМ 100 кГц 100000 раз в секунду будет происходить короткое замыкание. Это приведет к жутким помехам, уменьшению КПД и нагреву диода и транзистора.
При высоком напряжении все значительно усугубиться. В общем рекомендации по выбору диода:
- Лучше всего диод Шоттки.
- Если высокое напряжение (более 150 В) не позволяет использовать диод Шоттки, то лучшим вариантом будет карбидокремиевые диоды Шоттки.
- Следующим приемлемым вариантом могут быть HEXFRED-диоды с ограничением обратного тока обратного восстановления;
- На крайний случай остаются супербыстрые и ультрабыстрые диоды.
У меня напряжение всего 12 В. Я выбрал диод Шоттки SS16.
Наверное, понятно, что меняя коэффициент заполнения ШИМ, мы будем изменять среднее напряжения на двигателе, я значит, и его мощность. Частоту ШИМ определим экспериментально.
Измерение скорости вращения.
Традиционным компонентом для измерения числа оборотов мотора служит датчик Холла. Это датчик, который показывает наличие магнитного поля, например, присутствие рядом с ним постоянного магнита. Для наших целей необходимы цифровые или дискретные датчики Холла. В отличие от аналоговых они срабатывают при превышении магнитным полем определенного порога и имеют гистерезис.
Конструкции измерителей скорости могут быть самыми разными. Можно закрепить на валу двигателя металлический диск с радиальными прорезями и использовать автомобильный датчик Холла.
Диск будет прерывать магнитное поле между датчиком Холла и постоянным магнитом. На прорезях магнитное поле будет проходить к датчику и таким образом, при вращении, будут формироваться импульсы.
Я поступил проще. Использовал дешевый, миниатюрный датчик Холла TLE4905L. В самых дорогих магазинах он стоит до 50 руб, а на АлиЭкспресс от 25 руб.
Это цифровой датчик Холла, настроенный на определенный порог магнитного поля. Он прекрасно срабатывает на расстоянии 8 мм от миниатюрного магнита диаметром 5 мм и толщиной 1 мм.
Конструкция измерителя очевидна. Я приклеил 2 магнита к диску вентилятора и над линией, по которой они двигаются при вращении, расположил датчик Холла.
Когда магниты проходят под датчиком, на его выходе формируются импульсы. Измерив частоту этих импульсов можно определить скорость вращения двигателя. На один оборот вырабатываются 2 импульса. Я использовал 2 магнита для того чтобы не нарушить балансировку вентилятора. Возможно, хватило бы и одного.
Как у датчика, так и у магнитов есть полярности. Поэтому перед тем, как устанавливать эти компоненты надо проверить в каком положении срабатывает датчик.
Датчик TLE4905L имеет выход с открытым коллектором. Он не формирует напряжение на выходе, а только замыкает или размыкает выход на землю. Со стороны приемника необходим внешний подтягивающий резистор.
Подключение датчика необходимо производить отдельными проводами. Все связи должны соединяться непосредственно на плате Ардуино. С точки зрения помехозащищенности это самое узкое место в системе.
Для задания скорости будем использовать переменный резистор. Подключим его к аналоговому входу платы Ардуино. Добавим еще сигнал включения/выключения двигателя и выход для тестовых импульсов. С помощью него будем проверять работу устройства без мотора.
С учетом всего вышесказанного окончательная схема контроллера-регулятора оборотов двигателя будет выглядеть так.
В реальных приложениях обороты можно задавать напряжением на аналоговом входе A0. Получится стандартный аналоговый интерфейс 0…5 В. Если необходим диапазон 0…10 В, то достаточно добавить резисторный делитель напряжения.
Состояние контроллера для отладки ПИД-регулятора будем передавать на компьютер через последовательный порт. Я разработаю программу верхнего уровня с регистрацией данных и отображением их в графическом виде. Регистратор значительно облегчает настройку любого ПИД-регулятора.
В следующем уроке начнем “оживлять” контроллер.
Здравствуйте, а когда продолжение уроков по stm32? Жду не дождусь…
Здравствуйте!
На этой неделе регулятор для двигателя закончу. Дальше не знаю, что обещать. Осенью точно плотно возьмусь за уроки STM32. Постараюсь раньше выкроить время. Еще от погоды многое зависит. Спасибо, что интересуетесь.
Михаил, взгляните, пока ждете уроков, в сторону mbed. Проще чем HAL мощнее чем ардуино. Огромный выбор контроллеров.
Добрый день! С удовольствием читаю Ваши уроки! Возникла пара вопросов по управлению двигателям:
1) Во-первых, не знаю нужно ли это заказчику, но возможно имеет смысл предусмотреть смену направления вращения сменой полярности напряжения питания? Можно ли это сделать, например, используя драйвер с 4 ключами как для биполярного ШД?
2) Не могли бы Вы пояснить преимущества и недостатки использования оптического датчика оборотов? Например елевого оптрона и диска с прорезями? Довольно проблематично бывает приклеить точно магниты, да и я опасаюсь, что на высоких оборотах могут оторваться они.
Здравствуйте!
Да, можно использовать драйвер L298.
Я не вижу особых недостатков оптических датчиков. Крайне что в устройствах где много пыли, грязи они могут не работать.
Но датчики Холла тоже есть щелевые с встроенными постоянными магнитами. Например автомобильные датчики Холла. Они рассчитаны на тяжелые условия эксплуатации.
Доброго времени!
Эдуард! Насколько я помню трех выводные компьютерные вентиляторы имеют уже встроенный датчик оборотов.
Ведь его можно использовать?
Здравствуйте!
Да, в компьютерных вентиляторах датчик есть.
Но, во первых я управлял универсальным двигателем. Вентилятор взял для отладки системы.
Во вторых, датчик компьютерных вентиляторов питается от напряжения питания двигателя. Это приводит к тому, что при управлении двигателем с помощью ШИМ сигнал с его выхода искажается. Сигнал ШИМ в данный момент находится в высоком уровне — датчик работает, сигнал в низком уровне — датчик отключен. Используют сложные методы для определения скорости вращения по такому искаженному сигналу.
Доброго времени!
У любого двигателя. есть такое понятие как напряжение страгивания. т.е. минимальное напряжение при котором он начинает вращения. для комповских карлсонов где то чуть больше 5В. датчик уже корректно работает.
При управлении с помощью ШИМ напряжение на двигателе постоянно меняется от 0 до 12 В с заданным периодом. Скважность питания, т.е. отношение времени включено/времени периода определяет мощность двигателя.
Так вот датчик не работает в состоянии ШИМ — выключено. Почитайте об управлении компьютерным вентилятором в интернете. Там много об этом информации. Есть даже специальный метод для управления от такого датчика.
можно ли точно управлять двигателями постоянного тока с датчиком холла у меня то перебигает то недобегает https://www.youtube.com/watch?v=uybyu2DILj0&t=41s не могли бы вы помочь
Здравствуйте!
Вам надо сервопривод создавать или использовать готовый. Можно на шаговом двигателе сделать http://mypractic.ru/urok-32-sledyashhij-elektroprivod-s-shagovym-dvigatelem.html
добрый день !!!! вопрос по защитному диоду параллельно двигателю .возникла мысль -шунтируя мы создаем эдс против вращения и возникают потери .а если просто не пустить обратное напряжение с двигателя поставив последовательно диод ?
Здравствуйте!
Если включить двигатель через диод последовательно, то эдс самоиндукции, возникающая при размыкании ключа, сожжет диод. Коммутация обмоток двигателя это обширная тема. Существует несколько вариантов схем, обеспечивающих размагничивание обмотки двигателя при выключении ключа. По-хорошему, надо использовать схему с двумя ключами.
Эдуард, здравствуйте, в очередной раз прошу совета. Изобретаем с другом прибор, нужна будет аппаратная часть на уникальной плате.
Раньше травил и паял сам, сейчас ЧПУ кругом, подозреваю, что все это упростилось и подешевело.
В какую фирму обратиться за изготовлением платы — можете помочь советом? Количество — сначала три-четыре для отладки, потом возможен мелкий опт до 100-200 шт.
С уважением, Карабанов Сергей,
г. Владимир.
Здравствуйте!
На фирме, где я работаю платы заказываем в Новосибирске, Электроконнект. 1000 руб изготовление фотошаблона. А дальше цена зависит от срочности, количества слоев и т.п. Цены вполне приемлемые. Доставка транспортными компаниями бесплатно.
Спасибо!
Не в первый раз помогаете.
Сейчас рисунок делаю,
с форматами решим.
Еще раз спасибо за Вашу помощь.
А где находится код к регулятору?
Если не ошибаюсь, в уроке 75. Но лучше вам хотя бы просмотреть уроки, начиная с 73.