Найти в Дзене
Radio-любитель

ШИМ генератор на микроконтроллере

Вил платы
Вил платы

Всем здравствуйте. В статье описан преобразователь (PWM) на микроконтроллере PIC при сохранении максимальной простоте схемы. Чередование выходного сигнала можно контролировать в диапазоне от 0 до 100% при помощи потенциометра.

Может быть, вы хотели контролировать яркость лампочки, мощного светодиода или управлять оборотами двигателя. В этом случае лучше всего использовать ШИМ-управление, так как оно наиболее энергоэффективное и переключающий элемент (транзистор) не требует радиатора. Однако, поскольку раньше схемные решения и компоненты не имели требуемых параметров или были непропорционально сложными, линейный регулятор в конечном итоге остался в устройствах. Самый простой ШИМ-генератор показан на рисунке в статье.

Принципиальная схема ШИМ -  генератора
Принципиальная схема ШИМ - генератора

Схемотехника достаточно простая даже проще, чем генератор на таймере 555, он имеет стабильную частоту выходных импульсов, а сдвиг можно регулировать в диапазоне от 0 до 100%. На схеме содержится не так много компонентов только потенциометр, который задает регулировку, микроконтроллер и блокирующий конденсатор в источнике питания.

Напряжение с потенциометра обрабатывается аналого-цифровым преобразователем микроконтроллера. Конвертер 10-битный, но программа по-прежнему использует только 8 самых важных битов. Напряжение питания используется в качестве эталона для аналого-цифрового преобразования, так что результат преобразования пропорционален соотношению входного напряжения и напряжения питания (вращение вала потенциометра) и практически не зависит от напряжения питания.

Внутренний таймер контроллера TIMER2 используется для генерации сигнала ШИМ. Это позволяет очень просто генерировать сигнал, в основном только результат аналого-цифрового преобразования перезаписывается в регистре таймера. Частота выходных импульсов может составлять от десятков до сотен кГц в зависимости от установленного разрешения и делителя. Это значительное ускорение по сравнению со случаем, когда сигнал ШИМ генерируется программой, а частота импульсов составляет не более сотен Гц.

Принципиальная схема с использованием всех возможностей программы показана в тексте статьи. Добавлены две перемычки и разъем для программирования. Конечно, мы будем использовать стабилизатор напряжения только в том случае, если напряжение питания больше 5,5В. Для более низких напряжений в нем нет необходимости, и мы просто можем заменить его перемычкой. На схеме также указано включение резистора и светодиода для проверки работоспособности генератора.

Перемычка J1 изменяет частоту выходных импульсов. Частота 500 Гц подходит для наиболее распространенных устройств, частота 8 кГц может использоваться в случаях, когда может возникнуть стробоскопический феномен, например, при съемке на видеокамеру. Перемычка J2 изменяет ход сдвига сигнала ШИМ. Если используется перемычка, вывод GP1 находится на низком логическом уровне, а изменение выходного сигнала линейно пропорционально напряжению от положения потенциометра.

8 наиболее важных битов аналого-цифрового преобразователя используются непосредственно для управления, а ширина импульса может быть изменена на 250 скажем просто шагов. Однако линейное управление не подходит для управления светодиодами, поскольку восприятие яркости света не пропорционально его интенсивности. В случае светодиодов мы бы почувствовали, что светодиод быстро загорается в начале вращения потенциометра, и яркость не сильно изменится при дальнейшем вращении ручки.

Конечно, при желании можно использовать ардуино, но есть противники и последователи этих плат. Но посмотреть и возможно купить себе платы ардуино можно ниже.

Существенного улучшения можно достичь за счет квадратичной зависимости (даже лучше логарифмической) сдвига от входного напряжения. Если перемычка не установлена, через внутренний подтягивающий резистор на выводе GP1 устанавливается высокий логический уровень. Программа определяет это состояние, и 8-битный результат аналого-цифрового преобразования умножается на себя. В результате - 16-битное число. Результатом являются 10 старших битов, которые записываются в регистры таймера. (10 бит — максимальное разрешение генератора ШИМ.) Возможный вариант печатной платы показан на рисунке.

Расположение компонентов
Расположение компонентов

Разводка печатной платы
Разводка печатной платы

Программа-генератор написана на ассемблере и очень проста благодаря использованию встроенного преобразователя и таймера. Она была написана для микроконтроллера PIC12F615, который больше всего подходит для этого устройства. Но после небольшого изменения программы можно использовать любой микроконтроллер серий PIC12 и PIC16, который имеет встроенный аналого-цифровой преобразователь и таймер TIMER2.

Модификация касается инициализации внутреннего генератора и периферийных устройств, которые могут отличаться от типа к типу. Программу для PIC12F615 и PIC12F683 можно загрузить тут, и вы можете свободно изменять ее в соответствии со своими потребностями. При программировании через разъем ICSP перемычки должны быть не установлены. На этом все, всем спасибо.

-5