Схема регулятора яркости светодиодной ленты на Arduino UNO


Этот регулятор предназначен для регулировки яркости светодиодной ленты белого свечения, используемой для освещения помещения. Обычно для регулировки яркости светодиодной ленты применяют регуляторы, работающие двумя кнопками, - на уменьшение и на увеличение яркости.

Но это не всегда удобно, потому что начинать нужно с какого-то минимального или максимального значения, и либо удерживать кнопку длительное время, пока яркость не будет такой, как нужно, или многократно нажимать регулировочную кнопку. Таких регуляторов описано в литературе очень много.

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

Для управления используется пульт дистанционного управления марки TOSHIBA SE-R0301 от неисправного DVD-плеера. Но, в принципе, можно использовать любой другой пульт, соответственно внеся изменения в программу. У выше указанного пульта есть одиннадцать цифровых кнопок, от «0» до «9» и кнопка «+10».

Было решено кнопку «0» использовать для выключения ленты, а кнопку «+10» для включения её на максимальную яркость Для остальных цифровых кнопок заданы промежуточные значения яркости, которые можно изменить «по вкусу» при программировании. Этот регулятор яркости сделан на основе микроконтроллерной платы ARDUINO UNO.

Использование недорогой готовой платы ARDUINO UNO интересно тем, что это готовый модуль, - небольшая печатная плата, на которой расположен микроконтроллер ATMEGA328, а так же вся его «обвязка», необходимая для его работы, включая USB-программатор и стабилизатор напряжения питания.

Принципиальная схема

Принципиальная схема показана на рисунке. Для приема команд пульта дистанционного управления используется фотоприемник F1 типа TSOP4838, но можно применить и любой другой аналогичный. Сигнал от него поступает на цифровой порт D2, который используется для работы на прием.

Принципиальная схема регулятора яркости светодиодной ленты на Arduino UNO

Рис. 1. Принципиальная схема регулятора яркости светодиодной ленты на Arduino UNO.

У платы ARDUINO UNO имеется 14 цифровых портов, от DO до D13. При этом шесть из них (D3, D5, D6, D9, D10, D11) могут работать как бы в аналоговом режиме, в котором на них присутствует не ноль или единица, а импульсы, широту которых можно задавать от 255-ю ступенями.

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

Данное устройство предназначено для регулировки яркости одной светодиодной ленты белого свечения. Для этого можно взять любой из выше перечисленных портов. В данном случае взят порт D5.

Импульсы с него подаются на затвор полевого транзистора VТ1, в стоковой цепи которого включена светодиодная лента HL1, яркость которой и нужно регулировать.

Программа

Программа для ARDUINO UNO приводится в таблице 1. Данная программа требует загрузки библиотеки IRremote.h которая нужна для распознавания команд пульта ДУ. Эта библиотека есть в стандартном наборе программного обеспечения для ARDUINO, у меня версия Arduino 1.6.11.

Далее идет назначение портов.

В строке:

IRrecv irrecv(2);

входным назначен порт D2. На него подается сигнал с выхода интегрального фотоприемника. А в строке:

pinMode(5, OUTPUT);

выходным назначен порт D5.

Таблица 1.

Исходный код программы для регулятора яркости светодиодной ленты на Arduino UNO

Рис. 2. Исходный код программы для регулятора яркости светодиодной ленты на Arduino UNO.

В программе после «case 0х» записаны коды команд, которые формируется при нажатии соответствующей кнопки пульта дистанционного управления. Эти коды соответствуют пульту TOSHIBA SE-R0301 от неисправного DVD-плеера. Можно использовать и другой пульт, но тогда и коды будут другие. После поступления соответствующего кода указывается уровень скважности импульсов на нем. например, при нажатии кнопки «1» устанавливается на порту D5 20-й уровень широты импульсов :

case 0XA25D807F:

analogWrite( 5, 20);

break;

А при нажатии кнопки «10» устанавливается на порту D5 самый большой 255-й уровень широты импульсов, при котором лента светит на полную яркость :

case 0XA25DA45B:

analogWrite( 5, 255);

break;

Для выключения ленты нужно нажать кнопку «0», при этом устанавливается на порту D5 нулевой уровень широты

Таблица 2.

/*

определение кодов команд пульта

*/

#include

IRrecv irrecv(2); // фотоприемник на порту D2

decode_results results;

void setup () {

Serial.begin(9600); // задание скорости порта COM

irrecv.enableIRIn(); // запуск приема команды

}

void loop() {

if (irrecv.decode(&results)) {

Serial.println(results.value, HEX); // вывод данных в COM

irrecv.resume(); // прием следующей команды

}

}

импульсов, при котором лента не светит вообще :

case 0xA25D50AF:

analogWrite(5, 0);

break;

Таким образом, при нажатии кнопок от «0» до «10» происходит фактическое изменение скважности импульсов на порту D5, которые поступают на затвор полевого транзистора VT1 и питают через него светодиодную ленту, яркость которой зависит от скважности этих импульсов. В программе между нулевым и максимальным заданы уровни скважности 20, 30, 50, 70, 100, 130, 160, 180, 220.

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

Но об этом уже написано выше. Если заданные в программе уровни яркости по какой-то причине не устраивают, можно ввести какие угодно, и в любом порядке, важно чтобы это было целое число в пределах от 0 до 255.

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

Но нужно будет предварительно разобраться, какие коды соответствуют выбранным кнопкам другого пульта. Для этого нужно сначала загрузить в ARDUINO UNO программу из таблицы 2, которая предназначена для определения кодов кнопок пульта.

После загрузки данной программы в микроконтроллер платы ARDUINO UNO, нужно открыть монитор COM-порта, для этого в окне программы Arduino 1.6.11 выбираем «Инструменты» и из выпадающего меню «Монитор порта». После того как откроется окошко Монитора порта, берем пульт ДУ и нажимаем интересные нам кнопки.

В окне монитора порта будет отображаться код, соответствующий каждой кнопке. Следует заметить, что может быть такое, что при нажатии каждой кнопки приходит две команды, - сначала код команды, а затем код FFFFFFF. Или даже несколько строк кода FFFFFFF.

Так вот, первое это код команды, который нужно занести в программу в таблице 1 после «case Ох», а вторая строка или строки букв «F» это просто указатель на то, как долго кнопка удержана нажатой, в одном случае. В другом случае может показывать, что кнопку отпустили Для нашего случая это несущественно, - важен только код самой команды.

Каравкин В. РК-12-19.


2 1482 На микроконтроллерах
освещение светодиодная лента светодиод LED регулятор яркости avr микроконтроллер микроконтроллер arduino
Оставить комментарий: