John Giffard, Mark Lewin
Широтно-импульсная модуляция очень часто используется для регулировки/управления источниками света, двигателями. Целью данного проекта было создание дешевого устройства – ШИМ-контроллера, которое будет полезно во многих областях. Изначально основой конструкции был выбран микроконтроллер компании Atmel ATMega32, т.к. имеющаяся периферия легко позволяла организовать не только многоканальный ШИМ с управлением по последовательному интерфейсу, но и добавить аналоговый интерфейс управления, клавиатуру и LCD-индикатор для организации пользовательского интерфейса, а также получить дополнительные выходные линии общего назначения. Однако, не проигрывая в функциональности, может использоваться и микроконтроллер ATMega16 (это учтено при разработке программного обеспечения). Рабочая частота выбрана из расчета возможности использования микроконтроллеров ATMega32L и ATMega16L.
Данная версия 4-канального 8-битного ШИМ-контроллера сконструирована с использованием микроконтроллера ATmegа16. Устройство сдержит интерфейс RS232 для управления с компьютера, интерфейс для 12-кнопочной клавиатуры и 4 аналоговых 10-битных канала для подключения потенциометров. Для отображения текущих режимов работы и параметров имеется 4-х строчный LCD-дисплей. Дополнительно ШИМ-контроллер имеет: 4 выхода на светодиоды, для индикации режимов управления (могут быть задействованы в роли выходов общего назначения), 3 выхода общего назначения.
Устройство имеет очень гибкие настройки. Например, параметры работы каналов ШИМ могут управляться посредством команд с компьютера, посредством аналоговых регуляторов (потенциометры) или с помощью клавиатуры (с отображением пользовательского интерфейса на LCD-индикаторе). Самим LCD-индикатором также возможно управлять через RS232, отображение текущих установок и режимов возможен в числовом, либо в графическом формате.
Основные характеристики устройства:
- 4-канала ШИМ, разрешение 8 бит, частота ШИМ - 31 кГц;
- интерфейс RS232 для управления и контроля с PC;
- простое схемотехническое решение с минимальным количеством внешних элементов;
- 12-кнопочная клавиатура;
- возможность аналоговой регулировки;
- до 7 выходных линий общего назначения;
- 4-строчный LCD-дисплей;
- управление LCD-дисплеем через последовательный интерфейс;
- пользовательское меню;
- гибкие настройки;
- программная реализация буферов FIFO для ускорения работы.
Управление выходами общего назначения (в т.ч. светодиодными индикаторами) осуществляется с компьютера (RS232), пользователь так же имеет возможность считывать историю нажатия клавиш на клавиатуре (последние 32 нажатия клавиш, либо сразу же после нажатия какой-либо клавиши).
Благодаря таким гибким настройкам, выбирая соответствующую настройку, ШИМ-контроллер может использоваться в различных приложениях и как самостоятельное устройство. В конструкции используется микроконтроллер ATmega16, минимальное количество внешних элементов, поскольку весь контроль и управление выполняет сам микроконтроллер. Для пользователя возможно использование только необходимых компонентов, например, LCD-индикатор, если в нем нет необходимости, может быть исключен.
Логическая схема устройства.
Принципиальная схема устройства
Схемотехническое решение очень простое. Для тактирования микроконтроллера выбран кварцевый резонатор 8 МГц, источник питания +5.0 В собран на интегральном стабилизаторе LM7805, индуктивность 10 мкГн и конденсатор 100 нФ – образуют фильтр, предотвращающий проникновение помех при переключениях в аналоговых цепях. Преобразователь логических уровней MAX232 используется для реализации последовательного интерфейса. LCD-индикатор на чипсете Hitachi (HD44780) с разрешением 20×4 либо 40×2. Узел управления подсветкой индикатора реализован на транзисторе MJE3055T (возможно использование более дешевого аналога). Матрица клавиатуры, стандартная, 4×3.
После подачи питания, микроконтроллер устанавливает последние сохраненные параметры в EEPROM: режимы управления каналами ШИМ (аналоговое управление, управление по последовательному интерфейсу, управление с клавиатуры), формат отображения параметров на индикаторе (управление по последовательному интерфейсу, отображение значений ШИМ, отображение аналоговых значений), а также состояние выходных линий общего назначения, состояние подсветки дисплея.
ШИМ генерация присутствует всегда на всех четырех каналах после подачи питания. Пользователь может настроить все параметры ШИМ-контроллера, используя последовательный интерфейс, посылая управляющие команды, а затем сохранить все сделанные настройки в EEPROM памяти микроконтроллера. Полный список команд и значений приведен ниже в приложении. Последовательный интерфейс также может использоваться для пересылки текущих значений аналоговых каналов управления (по запросу).
На индикаторе, при подаче питающего напряжения, отображается приветствие (пользователь может изменить приветствие), а затем, в соответствии с текущими настройками, отображает текущие параметры и значения выходов ШИМ, значения аналоговых каналов.
Для примера практической реализации устройства и ШИМ управления различными внешними устройствами приведена следующая схема. В данном примере показаны схемотехнические решения для подключения к 4 каналам ШИМ двигателя вентилятора, мощного светодиода семейства Luxeon Star, преобразователь ШИМ-напряжение на операционном усилителе LM358. А также для возможности тестирования выходных линий общего назначения подключены светодиоды.
Пример реализации выходных каскадов ШИМ-контроллера
Следующая часть будет посвящена программному обеспечению микроконтроллера, где будут рассмотрены основные блоки алгоритма, их особенности.