Урок по Arduino №1: подключаем, настраиваем, мигаем одноцветными и RGB-светодиодами

Подключение к Arduino

Прямое подключение светодиодной ленты к Arduino уместно только в случае применения слабых LED-диодов. Для светодиодной ленты между ней и платой необходимо установить дополнительные электротехнические элементы.

Через реле

Подключите реле к плате Arduino через цифровой выход. Управляемая полоса может иметь одно из двух состояний — включения или выключения. Если нужно организовать управление RGB-лентой, понадобятся три реле.

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

С помощью биполярного транзистора

Если нужно повысить ток или напряжение на выходе, подключите биполярный транзистор. При его выборе ориентируйтесь на ток нагрузки. Ток управления не превышает 20 мА, поэтому добавьте резистор на 1 – 10 кОм для ограничения тока за счет сопротивления.

С помощью полевого транзистора

Вместо биполярных транзисторов для управления светодиодными лентами возьмите полевые (сокращенно — МОП). Разница между ними связана с принципом управления: биполярные изменяют ток, полевые — напряжение на затворе. Благодаря этому небольшой ток затвора управляет большой нагрузкой (десятками ампер).

С помощью плат расширения

Если нет желания использовать реле и транзисторы, можно купить целые блоки — платы расширения. К ним относятся Wi-Fi, Bluetooth, эквалайзер, драйвер и т. д., которые необходимы для управления нагрузкой разных мощностей и напряжений. Это могут быть как одноканальные элементы, которые подойдут монохромным лентам, так и многоканальные (для управления цветными RGB-лентами).

Arduino и адресная светодиодная лента WS2812B

В этой статье мы научимся работать с адресной светодиодной RGB лентой WS2812B. Лента состоит из RGB пикселей WS2812B в корпусе LED 5050 (физические размеры каждого элемента составляют 5×5 мм).

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

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

Немного о характеристиках адресных светодиодов WS2812B:

  • Напряжение питания: 5 ± 0.5 В;
  • Потребление тока:

20 мА один светодиод, т.е.

60 мА весь пиксель.

В начале нам необходимо подключить светодиоды к Arduino. Сделать это предельно просто. Контакты +5V и GND подключаем к плюсу и минусу источника питания, соответственно. Din подключаем к любому цифровому пину Arduino, по умолчанию это будет 6-ой цифровой пин, но можно использовать любой другой.

Кроме того, желательно соединить землю Arduino с землей источника питания. Нежелательно использовать Arduino в качестве источника питания, так как выход +5V может обеспечить ток лишь в 800 мА. Этого хватит не более чем на 13 пикселей светодиодной ленты.

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

Далее будем разобираться с управлением лентой. Описание протокола управления присутствует в Datasheet к WS2812B.

Все пиксели по умолчанию подключены друг к другу последовательно. Вход Din каждого их них подключается к выходу Do следующего. Сигнал управления должен поступать на первый из них.

Команды управления подаются пакетами по 3 байта, по одному для каждого из трёх цветов. Между пакетами идет пауза длительностью 50 мкс, пауза более 100 мкс означает конец передачи.

Длительность любого бита – 1,25 мкс. Бит “1” кодируется импульсом длительностью 0,8 мкс и паузой в 0,45 мкс. Бит “0”– 0,4 и 0,85 мкс. Возможны расхождения по времени до 150 нс. Такой пакет должен быть отправлен для каждого пикселя в светодиодной ленте. На диаграмме изображён требуемый сигнал.

Глядя на данную схему, несложно догадаться, что такое невозможно воплотить в жизнь стандартными функциями Wiring, вроде digitalWrite и delay. Однако ленты WS2812B достаточно популярны и для них уже есть библиотеки на языках более низкого уровня. Вам достаточно только выбрать любую из них.

Самые популярные библиотеки:

Поддерживает все версии Ардуино и множество протоколов передачи данных (не только для нашей ленты). Язык программирования, на котором она написана – чистый C.

Библиотека предназначена для работы со светодиодными кольцами NeoPixel Ring, разработки и производства Adafruit. Работает медленнее, обладает меньшими возможностями, но содержит в себе лишь самое нужное. Написана на C, языке ассемблера и немного на Wiring. Поддерживает всю линейку Ардуино.

Подключение WS2812B в Arduino >

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

По умолчанию, количество пикселей в ленте – 30, но при необходимости это можно изменить в скетче.

Пример с использованием библиотеки FastLED:

Скетч займёт 3758 байт в программной памяти Arduino и 187 байт ОЗУ.

Теперь попробуем тоже самое с библиотекой Adafruit NeoPixel:

Скетч займёт 2592 постоянной и 40 байт оперативной памяти Arduino.

Как можно увидеть, библиотека FastLED более ресурсоёмка. Кроме того, используя её в Arduino с 2 Кб ОЗУ (таковой является, например, UNO) можно управлять не более чем 600 пикселями светодиодной ленты. Это связано с тем, что на каждый пиксель резервируется 3 байта памяти.

А вот в Adafruit NeoPixel минимум нужных функций и меньший расход памяти. Какую из них использовать – ваш выбор. Удачи в проектах!

Последовательное включение светодиодов на Ардуино

Что такое Ардуиноfor

byte i;                // задаем переменную для цифровых выходов
byte LedMax = 13; // максимальное количество выходов (диодов)

void setup()
{
// задаем пины со 2 по 13, как выходы (OUTPUT)
for(i=2; i<LedMax; i++) { pinMode(i, OUTPUT); }
}

Вместо прописывания в скетче всех пинов с 2 по 13, как выходы, мы воспользовались одним циклом . Сразу отметим, что использование всех выходов на Ардуино для последовательного включения светодиодов или подключения светодиодной шкалы не рационально. На практике для этого используют сдвиговый регистр 74hc165 или, еще более простой вариант драйвер светодиодов М5450В7 для микроконтроллера Ардуино.

Мигание встроенным светодиодом на плате

Для первого примера не потребуется собирать принципиальную схему. Код программы, используется из примера «Подключение светодиода к Ардуино». Встроенный светодиод подключается через резистор, поэтому к 13 пину можно подключать внешний светодиод без резистора. Это самый простой скетч, с которого начинают знакомство с Ардуино, скопируйте код и загрузите его в микроконтроллер через Arduino IDE.

Скетч. Мигание встроенным светодиодом Ардуино

void setup() {
   pinMode(13, OUTPUT); // объявляем пин 13 как выход
}

void loop() {
   digitalWrite(13, HIGH); // зажигаем светодиод

   delay(1000); // ждем 1 секунду

   digitalWrite(13, LOW); // выключаем светодиод

   delay(1000); // ждем 1 секунду
}

Пояснения к коду:

  1.  останавливает программу на заданное количество микросекунд;
  2. данный код подойдет к плате Arduino Nano и Arduino Mega.

Подключение кнопки Ардуино

Включение и выключение светодиода с помощью кнопки

Давайте начнем с самого простого способа подключения тактовой кнопки. Рассмотрим схему с Arduino в качестве источника питания,  светодиода, ограничительного резистора номиналом 220 Ом и кнопки, которая будет замыкать и размыкать цепь.

Если у вас переключатель другого типа, то можете смело выбрать контакты с противоположных углов (на некоторых кнопка делается специальный знак в  виде выемки, по которому можно определить, с какой стороны расположены спаренные контакты). Самый надежный способ определить правильные ножки – это прозвонить контакты тестером.

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

Подключение кнопки с подтягивающим резистором

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

В скетче мы будем отслеживать факт нажатия и выводить сообщение в монитор порта. Более интересный пример и подробное объяснение самой схемы мы приведем чуть позже.

Следует обратить внимание на сопротивление 10 К, которое мы добавили в этой схеме. Более подробно о его предназначении мы поговорим позже, просто имейте в виду, что такой резистор необходим для правильной работы схемы

Скетч для кнопки ардуино с подтягивающим резистором:

/*
  Пример использования тактовой кнопки в ардуино.
  Кнопка подключена к пину 2.
*/

const int PIN_BUTTON = 2;

void setup() {
  Serial.begin(9600);
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  // Получаем состояние кнопки и выводим в мониторе порта
  int buttonState = digitalRead(PIN_BUTTON);
  Serial.println(buttonState);
  delay(50);
}

Аналоговые и цифровые выходы на Ардуино

Если вы хотите регулировать выходное напряжение, то следует использовать пины, помеченные символом «~». Для Arduino Uno — это 3, 5, 6, 9, 10, 11. С помощью аналоговых портов можно выдавать любое напряжение 0 до 5 Вольт, а цифровые выходы можно только включать и выключать. Аналоговые порты используют ШИМ (широтно-импульсную модуляцию), по английски PWM (pulse-width modulation), с помощью которой имитируется аналоговый сигнал.

Аналоговые выходы на плате Ардуино имеют, отметку тильда «~»

Чтобы понять разницу между цифровым и аналоговым сигналом, соберите на макетной плате схему из светодиода и резистора, как на первом занятии — Подключение светодиода. Но в этот раз подключите светодиод к аналоговому выходу ~9. Откройте скетч для мигания светодиодом из первого занятия и измените в нем порт выхода с Pin13 на Pin9. Загрузите скетч в плату Arduino NANO или UNO.

На Arduino аналоговый выход будет работать, как цифровой

9 порт может работать, как цифровой выход. Но если функцию digitalWrite изменить на analogWrite, то вместо значения HIGH (1) и LOW (0) можно поставить любое значение от 0 до 255. Именно в этом интервале можно менять напряжение на аналоговых выходах. Загрузите программу для плавного включения и затухания светодиода. Подробное описание работы данной программы даны ниже в пояснении к коду.

Скетч. Аналоговый сигнал Ардуино и светодиод

int svet = 0; // начальная яркость свечения светодиода  int fade = 5; // шаг изменения яркости свечения светодиода    void setup() {    pinMode(9, OUTPUT); // используем Pin9 для операции вывода  }    void loop() {   // устанавливаем яркость светодиода на Pin9    analogWrite(9, svet);    // изменяем яркость, прибавляя заданную величину fade в каждом цикле    svet = svet + fade;    // меняем порядок затухания при минимальной и максимальной яркости    if (svet == 0 || svet == 255) {      fade = -fade;    }      delay(20); // устанавливаем паузу для эффекта  }  

Пояснения к коду:

  1. Функция , где pin — порт выхода на который подается сигнал, value — значение между 0 (полностью выключено) и 255 (полностью включено), используется для управления яркостью светодиода или скоростью электродвигателя, посредством Широтно-Импульсной Модуляции (ШИМ);
  2. Переменная имеет начальное значение «0» при каждом выполнении цикла к величине прибавляется заданное значение (в данном скетче fade = 5);
  3. При достижении переменной максимального значения равного 255, принимает отрицательное значение -5. Теперь при каждом выполнении цикла к величине прибавляется -5, т.е. каждый раз из вычитается .
  4. Если сопоставить работу скетча с графиком процесса квантования, размещенным на рисунке в начале статьи, то — это шаг квантования, т.е. величина на которую увеличивается подаваемое напряжение, а — это шаг дискретизации, т.е. период времени через который меняется значение .

Что такое Ардуино Уно и Ардуино Нано

Основой платы Ардуино Уно является микроконтроллер ATmega328. На ней также установлены дополнительные элементы:

  • кварцевый резонатор;
  • кнопка сброса;
  • разъем USB;
  • интегральный стабилизатор напряжения;
  • разъем питания;
  • несколько светодиодов для индикации режимов;
  • микросхема связи для USB-канала;
  • разъем для внутрисхемного программирования;
  • еще несколько активных и пассивных элементов.

Все это позволяет сделать первые шаги, не пользуясь паяльником, и избежать этапа изготовления печатной платы. Запитывается блок от внешнего источника напряжения 7..12 В или через USB-разъем. Через него же модуль подключается к ПК для загрузки скетча. На плате имеется источник напряжения 3,3 В для питания внешних устройств. Для работы доступно 6 аналоговых входов, 14 цифровых выводов общего назначения. Нагрузочная способность цифрового вывода при питании от 5 В составляет 40 мА. Это означает, что к нему непосредственно можно подключить светодиод через ограничительный резистор.


Arduino Uno.

Плата Ардуино Нано полностью совместима с Уно, но меньше размером и имеет некоторые отличия и упрощения, указанные в таблице.

ПлатаКонтроллерРазъем для внешнего питанияМикросхема для связи по USBРазъем USB
Arduino UnoATmega328ЕстьATmega8U2USB A-B
Arduino NanoATmega328НетFT232RLmicro USB


Arduino Nano.

Различия не принципиальны и для темы обзора значения не имеют.

Мигание светодиодами NeoPixel в ленте

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

Arduino

#include <Adafruit_NeoPixel.h>

#define PIN 6
#define NUMPIXELS 7

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void NeoBlink(int num, int wait)
{
for (int i = 0; i < num; i++)
{
pixels.setPixelColor(i, 35, 35, 35);
}
pixels.show();
delay(wait);
for (int j = 0; j < num; j++)
{
pixels.setPixelColor(j, 0, 255, 0);
}
pixels.show();
delay(wait);
}

void setup()
{
pixels.begin();
pixels.setBrightness(50);
}

void loop()
{
NeoBlink(7, 500);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#include <Adafruit_NeoPixel.h>
 
#define PIN        6
#define NUMPIXELS 7
 
 

Adafruit_NeoPixelpixels(NUMPIXELS,PIN,NEO_GRB+NEO_KHZ800);

voidNeoBlink(intnum,intwait)

{

for(inti=;i<num;i++)

{

pixels.setPixelColor(i,35,35,35);

}

pixels.show();

delay(wait);

for(intj=;j<num;j++)

{

pixels.setPixelColor(j,,255,);

}

pixels.show();

delay(wait);

}
 

voidsetup()

{

pixels.begin();

pixels.setBrightness(50);

}
 

voidloop()

{

NeoBlink(7,500);

}

Принципы работы трехцветных светодиодов

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

Трехцветный светодиод имеет 4 контакта как показано на рисунке ниже:

  • контакт 1: цвет 1 отрицательный вывод при общем аноде или цвет 1 положительный вывод при общем катоде;
  • контакт 2: общий положительный вывод для всех трех цветов при общем аноде или общий отрицательный вывод для всех трех цветов при общем катоде;
  • контакт 3: цвет 2 отрицательный вывод или цвет 2 положительный вывод;
  • контакт 4: цвет 3 отрицательный вывод или цвет 3 положительный вывод.

Таким образом, есть 2 типа трехцветных светодиодов – с общим катодом (ОК) и с общим анодом (ОА). При общем катоде (общий отрицательный вывод) мы имеем три положительных вывода, где каждый вывод отвечает за свой цвет, и один общий отрицательный вывод. Внутренняя схема подключений трехцветного светодиода с общим катодом показана на следующем рисунке:

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

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

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

В нашем примере мы будем использовать трехцветные светодиоды с общим анодом. В обычном режиме для подключения 5 трехцветных светодиодов к плате Arduino нам бы понадобилось 5×4= 20 контактов, но мы уменьшим количество используемых контактов до 8 при помощи соединения трехцветных светодиодов в параллель и использовании технологии мультиплексирования.

Управление светодиодом

Подключив светодиод к Ардуино, мы получаем очень  удобный инструмент для управления им.  Ведь нам не нужно ничего включать или выключать физически. Достаточно просто указать в программе нужные инструкции, чтобы сама плата подавала напряжение на нужные пины, включая или выключая наш светодиод. Единожды загрузив программу в память контроллера, мы заставим его выполнять нужный нам алгоритм каждый раз, когда будет подключено питание.

Включение и выключение светодиода в Ардуино

Включение светодиода произойдет в тот момент, когда мы подадим на пин, к которому он подключен, высокий уровень сигнала (напряжение). За это в Ардуино отвечает  функция digitalWrite со вторым параметром HIGH. Например, для светодиода, подключенного к пину 12 команда будет выглядеть так: digitalWrite (12, HIGH);

Чтобы выключить светодиод, мы используем ту же команду, но с параметром LOW: digitalWrite(12, LOW). Если мы вызовем первую команду, а потом чрез какой-то промежуток времени вторую, то у нас светодиод сначала загорится, а потом потухнет. Зациклив включение и выключение, мы получим постоянно включающийся и выключающийся мигающий маячок.

Бывают ситуации, когда светодиод горит не очень ярко и непонятно, что тут пошло не так. На самом деле нужно в первую очередь проверить, не забыли ли вы сконфигурировать пин в качестве выходного. Это делается добавлением функции pinMode (обычно в блоке setup()). Для нашего варианта функция будет выглядеть так: pinMode(12, OUTPUT);

Управление яркостью светодиода

Мы можем не только включать или выключать свет, но и управлять его яркостью. Для этого используется специальная технология с красивым названием ШИМ. Подключившись к пинам контроллера, поддерживающим ШИМ, можно регулировать интенсивность свечения с помощью функции analogWrite(). Мы должны указывать ей в качестве параметров номер пина и значение из диапазона от 0 до 255. Чем больше число, тем ярче будет светить лампочка. Например, для пина 3 пример будет выглядеть так: analogWrite(3, 255) или analogWrite(3, 100). В первом случае яркость будет максимально возможная, во втором – гораздо меньше.

Нужно помнить, что далеко не все пины контроллера поддерживают ШИМ. У Arduino Uno, Nano, основанных на ATMEGA328, шим поддерживают пины 3, 5, 6, 9, 10, 11. У платы Mega таких пинов гораздо больше.

Светодиодная лента Ардуино – написание кода.

Подключите плату Arduino к компьютеру через USB и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный для вашей платы, в меню «Сервис»> «Сервис и инструменты»> «Порт». Откройте новый эскиз и сохраните его с соответствующим именем. Этот эскиз затухает с одноцветными огнями, держит их в таком состоянии в течение нескольких секунд, а затем исчезает, пока они не погаснут снова.

Вы можете сделать эскиз самостоятельно или просто загрузить готовый код из GitHub (https://gist.github.com/anonymous/d4fa3719478c3c5a9c321cc372e9540).

Начните с определения штырей, которые будут использоваться для управления МОП-транзисторами.

#define RED_LED 6 #define BLUE_LED 5 #define GREEN_LED 9

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

int brightness = 255; int gBright = 0; int rBright = 0; int bBright = 0; int fadeSpeed = 10;

В вашей настройке мы установим выводы Arduino. Мы также будем вызывать пару функций с задержкой в 5 секунд. Этих функций еще не существует, но не беспокойтесь, мы доберемся до них.

void setup() { pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT);

TurnOn(); delay(5000); TurnOff(); } Теперь создайте метод TurnOn (): void TurnOn() { 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); } }

Эти три цикла for полностью увеличивают яркость каждого цвета за время, указанное значением fadeSpeed. Наконец, вам нужно создать метод TurnOff (): void TurnOff() { for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, brightness); analogWrite(RED_LED, brightness); analogWrite(BLUE_LED, brightness); brightness -= 1; delay(fadeSpeed); }}void loop() {} Этот метод применяет нашу переменную яркости ко всем трем цветным выводам и уменьшает их до нуля в течение определенного периода времени. Нам также нужен метод пустого цикла, чтобы избежать ошибок компиляции.

Закончив этот код, сохраните его. Проверьте код и загрузите на плату Arduino. Если вы видите ошибки, проверьте код снова на предмет каких-либо опечаток или отсутствующих точек с запятой.

Плавное включение светодиодной ленты на Ардуино

Теперь вы должны увидеть, что ваша светодиодная лента Ардуино наращивает яркость, удерживая белый оттенок в течение 5 секунд, а затем равномерно исчезает до нуля:

Если у вас возникли трудности, дважды проверьте свою проводку и код.

Принцип работы транзистора для плавного управления светодиодной лентой

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

Подключив транзистор к аналоговому порту Ардуино, присваиваем ему значение от 0 до 255, изменяем напряжение, подаваемое на коллектор либо сток от 0 до 5В. Через цепочку коллектор-эмиттер будет проходить от 0 до 100% опорного напряжения нагрузки.

Для управления светодиодной лентой arduino необходимо подобрать транзистор подходящей мощности. Рабочий ток для питания метра светодиодов 300-500мА, для этих целей подойдет силовой биполярный транзистор. Для большей длины потребуется полевой транзистор.

Схема подключения LED ленты к ардуино:

Принцип работы транзистора для плавного управления светодиодной лентой

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

Подключив транзистор к аналоговому порту Ардуино, присваиваем ему значение от 0 до 255, изменяем напряжение, подаваемое на коллектор либо сток от 0 до 5В. Через цепочку коллектор-эмиттер будет проходить от 0 до 100% опорного напряжения нагрузки.

Для управления светодиодной лентой arduino необходимо подобрать транзистор подходящей мощности. Рабочий ток для питания метра светодиодов 300-500мА, для этих целей подойдет силовой биполярный транзистор. Для большей длины потребуется полевой транзистор.

Схема подключения LED ленты к ардуино:

Виды транзисторных ключей

  • Биполярный;
  • Полевой;
  • Составной (сборка Дарлингтона).
Способы подключения нагрузки
Через биполярный транзисторЧерез полевой транзисторЧерез коммутатор напряжения

При подаче высокого логического уровня (digitalWrite(12, HIGH);) через порт вывода на базу транзистора через цепочку коллектор-эмиттер потечет опорное напряжение на нагрузку. Таким образом можно включать и отключать светодиод.

Аналогичным образом работает и полевой транзистор, но поскольку у него вместо «базы» сток, который управляется не током, а напряжением, ограничительный резистор в этой схеме необязателен.

Биполярный вид не позволяет регулировать мощные нагрузки. Ток через него ограничен на уровне 0,1-0,3А.

Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для ещё более мощной нагрузки используют полевые транзисторы Mosfet с током до 9А и напряжением до 60В.

Вместо полевых можно использовать сборку Дарлингтона из биполярных транзисторов на микросхемах ULN2003, ULN2803.

Микросхема ULN2003 и принципиальная схема электронного коммутатора напряжения:

Подключение кнопки и светодиода к Ардуино


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

Обратите внимание, что при использовании INPUT_PULLUP происходит подтяжка цифрового входа к 5 вольтам, поэтому значение входящего сигнала будет инвертирован. То есть, при отпущенной кнопке, которая подключена к заземлению — GND, на цифровом входе будет высокий сигнал

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

Можно ли подключить несколько LED к одному выводу

Может возникнуть необходимость подключить к любому из выводов внешний светодиод или группу LED. Нагрузочная способность одного вывода микроконтроллера, как упоминалось, невелика. К нему можно непосредственно подключить параллельно один-два светодиода с током потребления 15 мА. Испытывать живучесть вывода нагрузкой на грани возможности или превышающей ее не стоит. Лучше применить ключ на транзисторе (полевом или биполярном).

Подключение LED через транзисторный ключ на биполярном триоде.

Резистор R1 надо выбрать так, чтобы ток через него не превысил нагрузочную способность вывода. Лучше взять половину или меньше от максимума. Так, чтобы установить умеренный ток в 10 мА, сопротивление при 5 вольтах питания должно составлять 500 Ом.

У каждого светодиода должен быть свой балластный резистор, заменять его одним общим нежелательно. Rбал выбирается так, чтобы установить через каждый светодиод его рабочий ток. Так, для напряжения питания 5 вольт и тока в 20 мА, сопротивление должно быть 250 Ом или ближайшее стандартное значение.

Надо следить, чтобы общий ток через коллектор транзистора не превысил его максимальное значение. Так, для транзистора КТ3102 наибольший Ik должен быть ограничен на уровне 100 мА. Это означает, что к нему можно подключить не более 6 LED с током 15 мА. Если этого недостаточно, надо применить более мощный ключ. Это единственное ограничение для выбора транзистора структуры n-p-n в такую схему. Еще здесь теоретически надо учесть коэффициент усиления триода, но для данных условий (входной ток 10 мА, выходной 100) он должен быть всего лишь не меньше 10. Такой h21э может выдать любой современный транзистор.

Также для выполнения ключей можно применять MOSFET-транзисторы, но они для открытия могут потребовать напряжения выше, чем может дать выход Ардуино. В этом случае надо предусматривать дополнительные цепи и элементы. Чтобы этого избежать, надо применять так называемые «цифровые» полевые транзисторы – им достаточно 5 вольт для открытия. Но они менее распространены.

Поделитесь в социальных сетях:FacebookTwitterВКонтакте
Напишите комментарий