Широтно-импульсная модуляция и Ардуино
Содержание
- Расшифровка и определение ШИМ
- Формирование аналогового сигнала
- Широтно-импульсные модуляторы в Ардуино
- Увеличение частоты и разрядности ШИМ Ардуино
- Примеры использования ШИМ на Ардуино
Широтно-импульсная модуляция, сокращенно ШИМ, может быть реализована на Arduino несколькими способами. В этой статье объясняются простые методы ШИМ, а также методы использования этих регистров для точного контроля над рабочим циклом и частотой.
Расшифровка и определение ШИМ
Модуляция ширины импульса означает, что ширина импульса возникает строго в прямоугольной волне.
Это улучшает управление двигателем. Вместо чистого сигнала постоянного тока к двигателю используется серия импульсов. Они могут находиться на максимальном напряжении, но только на долю секунды. Выполнение повторных действий приведет к тому, что двигатель начнет вращаться. Это позволит более комфортно управлять скоростью. Простое применение сигнала постоянного тока не приведет к преодолению трения двигателя и передач, наоборот, запуск будет обрывистый с низкой скоростью.
Увеличивая частоту импульсов ШИМа на Ардуино, можно выполнять операции на высокой скорости.
Декодер создает этот сигнал для управления двигателем. Это та же концепция, что и функции мощности импульса, находящиеся на блоках питания постоянного тока.
Рассмотрим основные преимущества использования ШИМ Ардуино:
- Эффективность электропитания: индукция обмоток ротора будет усреднять ток (индукторы сопротивляются изменению тока). Транзисторы имеют низкий импеданс при низком падении напряжения и рассеивании мощности. Резистор рассеивает большую мощность (I2R) в виде тепла.
- Управление скоростью: двигатель будет видеть источник с низким импедансом, даже если он постоянно переключается между высоким и низким напряжением. Результат очевиден – двигатель ускоряется. Серийное сопротивление приведет к тому, что двигатель будет испытывать малое напряжение, поэтому легко остановится в нужный момент.
- Цепь управления: для цифровой электроники (например, микроконтроллера ) очень легко включать или выключать напряжение с помощью транзисторов. Аналоговый выход (с электронным или механическим управлением) требует большего количества компонентов и увеличивает рассеивание мощности. Это будет более дорогостоящим вариантом, с точки зрения электроники и требований к электропитанию.
Создать широтно-импульсный модулятор можно на esp8266 шим, на Ардуино УНО и Ардуино Нано шим. То есть для конструирования подойдет любая модель описываемого микроконтроллера.
Формирование аналогового сигнала
AnalogRead – это функция, которая используется для считывания аналоговых значений из аналоговых контактов ШИМа на Ардуино. Плата Arduino UNO имеет 6-канальный 10-битный аналого-цифровой преобразователь (АЦП). Это означает, что АЦП в Arduino UNO будет отображать входные напряжения от 0 до 5 В в целое значение от 0 до 1023.
Следовательно, функция analogRead возвращает любое значение от 0 до 1023. Синтаксис функции analogRead – analogRead (аналоговый вывод no).
Поскольку мы считываем аналоговые напряжения от потенциометра на выводе A0, нам нужно написать analogRead (A0) в эскизе. Когда он возвращает целочисленное значение, с ним создается временная переменная целочисленного типа данных. Следующая функция – analogWrite. Это функция, которая используется для установки рабочего цикла сигнала ШИМ для любого заданного штыря ШИМ.
Синтаксис функции analogWrite – analogWrite (вывод PWM no, value).
Значение указывает рабочий цикл и должно быть значением от 0 (0 В) до 255 (5 В).
Перейдем к фактическому эскизу схемы управления яркостью светодиода. Окончательный эскиз показан на следующем рисунке.
Из приведенного выше эскиза мы можем легко понять, что значение, возвращаемое функцией analogRead, сохраняется в переменной temp. Это значение будет использоваться для управления рабочим циклом сигнала ШИМ с помощью функции analogWrite.
Но диапазон значений, принимаемых функцией analogWrite, находится в диапазоне от 0 до 255. Следовательно, нам нужно выполнить некоторые математические вычисления, чтобы поместить подходящее значение в функцию analogWrite.
Наконец, вычисленное значение помещается в функцию analogWrite вместе с выводом PWM для получения сигнала PWM.
Когда схема построена, и эскиз загружен в Arduino, мы видим, что, изменяя положение потенциометра, яркость светодиода мы также можем изменить.
Еще один вариант скетча для Ардуино:
Широтно-импульсные модуляторы в Ардуино
Чтобы использовать частотный ШИМ на Arduino Uno, нужно всего лишь установить один из ШИМ-выводов в качестве выхода, затем вызывать команду analogWrite и установить уровень. Частота установлена примерно на 500 Гц, поэтому не нужно беспокоиться об этой части.
Мы выбираем контакт под номером 3, устанавливаем его, как output, и analogWrite значение для него. При выборе выхода у нас есть 256 уровней на выбор. Уровень рабочего цикла можно установить между номерами 0 и 255, где 0 – рабочий цикл 0 %, а 255 – 100 % рабочего цикла.
Последний вывод микроконтроллера на плате Arduino Uno составляет 5 В. Чтобы установить светодиод, который мы выбрали для полной яркости, нам необходимо подать напряжение 3,3 В и 15 мА тока. Для этого мы понижаем напряжение на резисторе 100 Ом.
Увеличение частоты и разрядности ШИМ Ардуино
Для изменения частоты ШИМа Ардуино в большую сторону необходимо обратиться к следующей инструкции.
Когда высокочастотный ШИМ-сигнал фильтруется, его небольшой компонент всегда будет проходить через фильтр. Это происходит потому, что конденсатор слишком мал, чтобы полностью его фильтровать. Можно было бы выбрать большую комбинацию конденсаторов и резисторов, но тогда потребуется долгое время для достижения надлежащего выходного напряжения при зарядке конденсатора.
Это значительно ограничило бы то, как быстро сигнал может измениться и быть видимым на выходе. Поэтому нужно выбрать разумное значение напряжения пульсации. Популярным приложением было бы изменение напряжения MOSFET. Поскольку МОП-транзисторы являются устройствами, контролирующими напряжение, можно легко управлять ими с помощью нашего микроконтроллера с ШИМ и фильтром нижних частот. На выходе будет присутствовать любое пульсационное напряжение, присутствующее на входе.
Рис.: а) структура МОП ПТ с индуцированным каналом. б) графическое изображение.
В этом примере предположим, что MOSFET будет управлять не критической нагрузкой, такой, как светодиод высокой мощности. В этом случае нам просто нужно оставаться в разумных пределах, поэтому пиковый ток в светодиоде не будет превышен. В этом случае пульсация в 0,1 вольта была бы более чем достаточной.
Примеры использования ШИМ на Ардуино
Широкополосная широтно-импульсная модуляция является способом кодирования напряжения на фиксированную несущую частоту. Он обычно используется для радиоуправляемых устройств. Каждый тип схемы модуляции имеет свои преимущества и недостатки.
AM-модуляция была первым типом модуляции, используемой для радиопередач. Самая простая схема модуляции для реализации требует только одного транзистора или усилителя вакуумной трубки, как это было сделано в первые дни с момента создания радио.
С необходимостью цифровой связи был изобретен новый метод модуляции – ШИМ. Этот метод обладает той же помехоустойчивостью, что и радиоволны. Самая большая разница – простота и цифровая природа модуляции. Вместо того, чтобы изменять частоту модуляции с напряжением, выход просто включается и выключается с фиксированной частотой. Процент времени включения пропорционален сигнальному напряжению.
Источник: