Рубрики
Схемы на MSP430

Использование ШИМ в MSP430G2: управление яркостью свечения светодиода

Данная статья является продолжением серии обучающих статей на нашем сайте про плату MSP430G2, ранее мы уже рассмотрели основы работы с ней, подключение к ней ЖК дисплея и использование в ней АЦП. В этой же статье мы рассмотрим использование ШИМ (широтно-импульсной модуляции, в англ. PWM) в MSP430G2 и управление с ее помощью яркостью свечения светодиода. Управлять яркостью свечения светодиода мы будем с помощью потенциометра, подключенного к аналоговому входу платы MSP430G2, поэтому рекомендуем прочитать статью об использовании АЦП в плате MSP430G2 если вы чувствуете себя неуверенно в этих вопросах.

Также на нашем сайте мы рассматривали использование ШИМ в других микроконтроллерах (платах):

Необходимые компоненты

  1. Плата MSP430G2 LaunchPad (купить на AliExpress).
  2. Светодиод (купить на AliExpress).
  3. Резистор (купить на AliExpress).
  4. Конденсатор 1 мкФ (купить на AliExpress).
  5. Потенциометр (купить на AliExpress).
  6. Соединительные провода.

Что такое ШИМ сигнал

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

Внешний вид ШИМ сигнала при различных коэффициентах заполнения показан на следующих рисунке.

Важным параметром ШИМ сигнала является его коэффициент заполнения (скважность, в англ. — duty cycle). Коэффициент заполнения ШИМ сигнала представляет собой процент времени, в течение которого сигнал имеет высокий уровень (HIGH, ON). Если ШИМ сигнал всегда находится в состоянии HIGH, то его коэффициент заполнения равен 100%, а если ШИМ сигнал всегда находится в состоянии LOW, то его коэффициент заполнения равен 0%.

Как преобразовать ШИМ сигнал в аналоговое напряжение

Для преобразования ШИМ сигнала в аналоговое напряжение мы будем использовать цепь под названием RC фильтр, которая содержит в своем составе резистор и конденсатор, включенные последовательно, как показано на следующем рисунке.

Что же происходит в этой схеме. Импульс высокого уровня ШИМ сигнала приводит к зарядке конденсатора через резистор, а когда ШИМ сигнал будет низкого уровня, то конденсатор будет разряжаться. Таким образом, на выходе этой схемы будет постоянное напряжение, пропорциональное коэффициенту заполнения ШИМ сигнала.

На представленном рисунке желтым цветом показан ШИМ сигнал, а синим – выходное аналоговое напряжение. Как вы можете видеть, выходное напряжение не является строго постоянным, но для нашего проекта оно вполне подойдет. Для сглаживания формы этого напряжения есть другие специальные схемы.

Схема проекта

Схема проекта для демонстрации использования ШИМ в плате MSP430G2 представлена на следующем рисунке.

Как видите, схема очень проста. Она содержит потенциометр, RC фильтр и светодиод. Потенциометр будет управлять коэффициентом заполнения ШИМ сигнала и, соответственно, яркостью свечения светодиода. Напряжение с него будет подаваться на контакт P1.0 платы MSP430G2. ШИМ сигнал будет формироваться на контакте P1.2 платы, с которого он будет подаваться на RC фильтр чтобы преобразовать его в постоянное напряжение, и затем на светодиод.

При этом очень важно помнить о том, что не все контакты платы MSP430G2 могут считывать аналоговое напряжение или формировать ШИМ сигнал. Это могут делать только специально выделенные контакты платы. Для проверки того, какие контакты могут это делать, а какие нет, всегда проверяйте распиновку платы MSP430G2.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

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

Далее, в функции void setup(), мы зададим режим работы используемого контакта 4 на вывод данных. Обратите внимание на то, что вместо номера контакта мы используем переменную, в которой хранится его номер.

Затем, в функции loop мы будем считывать значение аналогового напряжения на входе A0, к которому подключен потенциометр, и на основании этого значения формировать потом ШИМ сигнал с соответствующим коэффициентом заполнения (скважности). Считанное с выхода АЦП значение мы будем сохранять в переменной val.

На выходе АЦП у нас будет значение в диапазоне от 0 до 1023, а нам его будет необходимо преобразовать в значение от 0 до 255. Для этого в Energia IDE мы используем функцию map, которая аналогична такой же функции в Arduino IDE. После преобразования значения в новый диапазон мы его сохраним в ту же самую переменную val.

Теперь у нас есть значение в диапазоне 0-255, зависящее от положения ручки потенциометра, его мы можем непосредственно использовать для формирования ШИМ сигнала.

И это значение в диапазоне 0-255 как раз и будет задавать коэффициент заполнения формируемого ШИМ сигнала. К примеру, при значении 0 коэффициент заполнения тоже будет равен 0, при значении 127 он будет равен 50%, а при значении 255 – 100%.

Тестирование работы проекта

После сборки аппаратной части проекта загрузите код программы в плату MSP430G2. Затем, при вращении ручки потенциометра, будет изменяться значение напряжения, подаваемое на аналоговый вход платы. Чем больше значение этого напряжения, тем больше коэффициент заполнения формируемого ШИМ сигнала, и наоборот.

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

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *