Драйвер светодиодной ленты на Arduino и MOSFET своими руками
Светодиодными лентами и мощными светодиодами нельзя так просто управлять с помощью простых цифровых выводов микроконтроллера, которые не обеспечивают достаточного тока для этих целей. В данном случае нужно использовать схему драйвера.

В этом материале вы узнаете, как создать собственный драйвер на основе Arduino и MOSFET (полевых транзисторов) для любого более мощного устройства, такого как светодиодная лента, двигатель постоянного тока высокой мощности и т. д. Здесь мы используем MOSFET для управления работой светодиодной ленты.
Схема, показанная на следующем рисунке, основана на плате Arduino Uno, транзисторах MOSFET и нескольких других компонентах. Схема разделена на две основные части: блок питания и блок управления.

Цепь питания рассчитана на использование понижающего трансформатора и фиксированного стабилизатора напряжения на 12 В. Входное напряжение от сети переменного тока подается на первичную обмотку трансформатора, 15 В переменного тока имеется во вторичной цепи. Эти 15 В переменного тока выпрямляются с помощью мостового выпрямителя, созданного на основе четырех выпрямительных диодов, например, 1N4007. Этот выпрямленный постоянный ток фильтруется с использованием высокоэффективного электролитического конденсатора С1 (1000 мкФ) и подается на вход микросхемы стабилизатора напряжения 12В (MC7812ACTG). Сигнал 12В и 2А доступно на выходе 7812, и он подается на вывод питания светодиодной ленты.
Схема управления основана на плате Arduino Uno. Здесь мы используем три вывода ШИМ платы Arduino (контакты 5, 6 и 9, но вы можете использовать любой вывод ШИМ). Мы используем вывод ШИМ вместо обычного цифрового вывода, потому что МОП-транзистор является устройством контроля напряжения, то есть напряжение на затворе (G) определяет уровень проводимости. Контакт ШИМ может выдавать различное напряжение в диапазоне от 0 В до 5 В с шагом 255. Это необходимо для управления интенсивностью свечения светодиодов.
Схема драйвера рассчитана на три полевых МОП-транзистора для трех разных светодиодов (красный, зеленый и синий). Контакты Arduino 5, 6 и 9 подключены к трем затворам MOSFET-транзисторов, как показано на принципиальной схеме. Три отдельных резистора по 5,6 кОм заземляют вывод затвора всех этих MOSFET. Сток (S) всех этих полевых МОП-транзисторов заземлен там, где истоковый вывод каждого полевого МОП-транзистора соединен с другим светодиодом, как показано на принципиальной схеме. Для более эффективного рассеивания тепла при работе драйвера желательно использовать радиаторы.

Код программы написан на C-подобном языке Arduino и скомпилирован с использованием Arduino IDE. Код очень прост, основная цель этого кода – подача переменного напряжения на затворы. Вы можете напрямую загрузить код и изменить его в соответствии с вашими требованиями.
int brightness = 255; // Максимальная яркость светодиода
// индивидуальные значения яркости для красного, зеленого и синего светодиодов
int gBright = 0;
int rBright = 0;
int bBright = 0;
int fadeSpeed = 10;
#define RED_LED 6
#define BLUE_LED 9
#define GREEN_LED 5
void setup() {
// инициализируем вывод ШИМ для светодиодного выхода
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
}
// бесконечный цикл
void loop() {
digitalWrite(GREEN_LED, HIGH); //включить зеленый светодиод на максимум
digitalWrite(RED_LED, HIGH); // включить красный светодиод на максимум
digitalWrite(BLUE_LED, HIGH); // включить синий светодиод на максимум
delay(5000); // подождать 5 секунд
digitalWrite(GREEN_LED, LOW); // выключаем зеленый светодиод
digitalWrite(RED_LED, LOW); // выключаем красный светодиод
digitalWrite(BLUE_LED, LOW);// выключаем синий светодиод
// цикл, чтобы зажечь светодиод со скоростью затухания
for (int i=0;i<256; i++){
analogWrite(RED_LED, rBright);
rBright +=1;
delay(fadeSpeed);
}
for (int i=0;i<256; i++){
analogWrite(BLUE_LED, bBright);
bBright += 1;
delay(fadeSpeed);
}
for (int i=0;i<256; i++){
analogWrite(GREEN_LED, gBright);
gBright +=1;
delay(fadeSpeed);
}
}
© digitrode.ru