- Что такое сигнал ШИМ?
- Как преобразовать сигнал ШИМ в аналоговое напряжение?
- Принципиальная электрическая схема:
- Программирование MSP для сигнала ШИМ:
- Управление яркостью светодиода с помощью ШИМ:
Это руководство является частью серии руководств по MSP430G2 LaunchPad, в которых мы учимся использовать LaunchPad MSP430G2 от Texas Instruments. До сих пор мы изучили основы платы и рассмотрели, как считывать аналоговое напряжение, сопоставлять ЖК-дисплей с MSP430G2 и т. Д. Теперь мы переходим к следующему этапу изучения ШИМ в MSP430G2. Мы сделаем это, управляя яркостью светодиода, изменяя потенциометр. Таким образом, потенциометр будет подключен к аналоговому выводу MSP430 для считывания его аналогового напряжения, поэтому рекомендуется ознакомиться с учебным пособием по АЦП, прежде чем продолжить.
Что такое сигнал ШИМ?
Широтно-импульсная модуляция (ШИМ) - это цифровой сигнал, который чаще всего используется в схемах управления. Для этого сигнала устанавливается высокий (3,3 В) и низкий (0 В) за заранее определенное время и скорость. Время, в течение которого сигнал остается на высоком уровне, называется «временем включения», а время, в течение которого сигнал остается низким, называется «временем выключения». Ниже описаны два важных параметра ШИМ:
Рабочий цикл ШИМ:
Процент времени, в течение которого сигнал ШИМ остается ВЫСОКИМ (по времени), называется рабочим циклом. Если сигнал всегда включен, это 100% рабочий цикл, а если он всегда выключен, это 0% рабочего цикла.
Рабочий цикл = время включения / (время включения + время выключения)
Частота ШИМ:
Частота сигнала ШИМ определяет, насколько быстро ШИМ завершает один период. Один период полностью включает и выключает сигнал ШИМ, как показано на рисунке выше. В нашем руководстве частота составляет 500 Гц, так как это значение по умолчанию, установленное Energia IDE.
Существует множество приложений для сигналов ШИМ в реальном времени, но, чтобы дать вам представление, сигнал ШИМ может использоваться для управления сервоприводами, а также может быть преобразован в аналоговое напряжение, которое может управлять яркостью яркости светодиода. Давайте узнаем немного о том, как это можно сделать.
Вот несколько примеров ШИМ с другим микроконтроллером:
- Генерация ШИМ с использованием микроконтроллера PIC с MPLAB и XC8
- Управление сервомотором с Raspberry Pi
- Светодиодный диммер на базе Arduino с использованием ШИМ
Проверьте все проекты, связанные с ШИМ здесь.
Как преобразовать сигнал ШИМ в аналоговое напряжение?
Для преобразования сигналов ШИМ в аналоговое напряжение мы можем использовать схему, называемую RC-фильтром. Это простая и наиболее часто используемая для этой цели схема. Схема просто включает в себя последовательно включенные резистор и конденсатор, как показано на схеме ниже.
По сути, здесь происходит следующее: когда сигнал ШИМ высокий, конденсатор заряжается через резистор, а когда сигнал ШИМ становится низким, конденсатор разряжается через накопленный заряд. Таким образом, у нас всегда будет постоянное напряжение на выходе, которое будет пропорционально рабочему циклу ШИМ.
На приведенном выше графике желтый цвет - это сигнал ШИМ, а синий - выходное аналоговое напряжение. Как видите, выходная волна не будет чистой волной постоянного тока, но она должна очень хорошо работать для нашего приложения. Если вам нужна чистая волна постоянного тока для другого типа приложений, вам следует разработать схему переключения.
Принципиальная электрическая схема:
Принципиальная схема довольно проста; у него просто есть потенциометр, резистор и конденсатор для формирования RC-цепи и самого светодиода. Потенциометр используется для подачи аналогового напряжения, на основе которого можно управлять рабочим циклом сигнала ШИМ. Выход потенциометра подключен к выводу P1.0, который может считывать аналоговые напряжения. Затем мы должны сформировать сигнал ШИМ, что можно сделать с помощью контакта P1.2, этот сигнал ШИМ затем отправляется в схему RC-фильтра для преобразования сигнала ШИМ в аналоговое напряжение, которое затем подается на светодиод.
Очень важно понимать, что не все выводы на плате MSP могут считывать аналоговое напряжение или генерировать выводы ШИМ. Конкретные контакты, которые могут выполнять определенные задачи, показаны на рисунке ниже. Всегда используйте это как руководство при выборе контактов для программирования.
Соберите полную схему, как показано выше, вы можете использовать макетную плату и несколько перемычек и легко выполнить соединения. После подключения моя плата выглядела так, как показано ниже.
Программирование MSP для сигнала ШИМ:
Когда оборудование будет готово, мы можем приступить к программированию. Первое, что нужно сделать в программе - это объявить контакты, которые мы собираемся использовать. Здесь мы собираемся использовать контакт номер 4 (P1.2) в качестве выходного контакта, поскольку он имеет возможность генерировать ШИМ. Итак, мы создаем переменную и присваиваем ей имя вывода, чтобы к нему было легко обращаться позже в программе. Полная программа дается в конце.
int PWMpin = 4; // Мы используем 4-й вывод модуля MSP как вывод ШИМ
Далее мы переходим к функции настройки . Какой бы код здесь ни был написан, он будет выполнен только один раз, здесь мы заявляем, что используем этот 4- й контакт в качестве выходного контакта, поскольку ШИМ - это функция вывода. Обратите внимание, что мы использовали здесь переменную PWMpin вместо числа 4, чтобы код выглядел более значимым.
void setup () { pinMode (PWMpin, ВЫХОД); // PEMpin установлен как Outptut }
Наконец, мы переходим к функции цикла . Все, что мы здесь пишем, выполняется снова и снова. В этой программе мы должны считывать аналоговое напряжение и соответственно генерировать сигнал ШИМ, и это должно происходить снова и снова. Итак, сначала давайте начнем с считывания аналогового напряжения с вывода A0, поскольку мы подключили к нему потенциометр.
Здесь мы читаем значение с помощью функции AanalogRead , эта функция возвращает значение от 0 до 1024 в зависимости от значения напряжения, приложенного к контакту. Затем мы сохраняем это значение в переменной с именем «val», как показано ниже.
int val = аналоговое чтение (A0); // считываем значение АЦП с вывода A0
Мы должны преобразовать значения от 0 до 1024 из АЦП в значения от 0 до 255, чтобы передать их функции ШИМ. Зачем нам это преобразовывать? Я расскажу об этом в ближайшее время, а пока просто помните, что нам нужно преобразовать. Для преобразования одного набора значений на другой набор значений Энергии имеет карту функцию, аналогичную Arduino. Таким образом, мы преобразуем значения 0-1204 в 0-255 и сохраняем их обратно в переменной «val».
val = карта (val , 0, 1023, 0, 255); // АЦП выдаст значение 0-1023, преобразовать его в 0-255
Теперь у нас есть значение переменной 0–255 в зависимости от положения потенциометра. Все, что нам нужно сделать, это использовать это значение на выводе PWM, это можно сделать с помощью следующей строки.
analogWrite (PWMpin, val); // Записываем это значение на вывод ШИМ.
Вернемся к вопросу, почему на выводе PWM записано 0-255. Это значение 0–255 определяет рабочий цикл сигнала ШИМ. Например, если значение сигнала равно 0, это означает, что рабочий цикл равен 0%, для 127 это 50%, а для 255 это 100%, как показано и объясняется в верхней части этой статьи.
Управление яркостью светодиода с помощью ШИМ:
После того, как вы разобрались с аппаратным обеспечением и кодом, пришло время немного поразвлечься с работой схемы. Загрузите код на плату MSP430G2 и поверните ручку потенциометра. Когда вы поворачиваете ручку, напряжение на контакте 2 будет изменяться, которое будет считываться микроконтроллером, и в соответствии с напряжением, сигналы ШИМ будут генерироваться на контакте 4. Чем больше напряжение, тем больше будет рабочий цикл и наоборот.
Затем этот ШИМ-сигнал преобразуется в аналоговое напряжение для свечения светодиода. Яркость светодиодов прямо пропорциональна скважности сигнала ШИМ. Помимо светодиода на макете, вы также можете заметить светодиод smd (красный цвет), который меняет яркость, как и светодиод макета. Этот светодиод также подключен к тому же выводу, но у него нет RC-сети, поэтому он на самом деле очень быстро мигает. Вы можете встряхнуть доску в темной комнате, чтобы проверить ее мерцание. Полную работу также можно увидеть на видео ниже.
На данный момент это все, ребята, мы узнали, как использовать сигналы ШИМ на плате MSP430G2, в нашем следующем руководстве мы узнаем, насколько легко управлять серводвигателем, используя те же сигналы ШИМ. Если у вас есть какие-либо сомнения, опубликуйте их в разделе комментариев ниже или на форумах для получения технической помощи.