Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 0

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

2Схема подключения модуля реле SRD-05VDC-SL-C

Будем использовать модуль с двумя одинаковыми реле типа SRD-05VDC-SL-C или аналогичный.

Модуль имеет 4 разъёма: силовые разъёмы K1 и K2, управляющий разъём и разъём для подачи внешнего питания (с джампером).

Реле типа SRD-05VDC-SL-C имеет три контакта для подключения нагрузки: два крайних неподвижных, а средний – переключающийся. Именно средний контакт является своего рода «ключом», который коммутирует цепи тем или иным образом. На модуле есть подсказка, какой именно контакт реле является нормально замкнутым: маркировка «K1» и «K2» соединяет средний контакт с крайним левым (на фото). Подача управляющего напряжения на вход IN1 или IN2 (слаботочный управляющий разъём) заставит реле скоммутировать средний контакт контактной группы K1 или K2 с правым (силовой разъём). Ток, достаточный для переключения реле – около 20 мА, цифровые выводы Arduino могут выдавать до 40 мА.

Разъёмы модуля реле SRD-05VDC-SL-C

Разъём для подачи внешнего питания используется для того, чтобы обеспечить гальваническую развязку платы Arduino и модуля реле. По умолчанию, на разъёме между штырьками JD-VCC и VCC имеется перемычка. Когда она установлена, модуль использует для питания напряжение, поданное на вывод VCC управляющего разъёма, а плата Arduino не имеет гальванической развязки с модулем. Если нужно обеспечить гальваническую развязку модуля и Arduino, необходимо подавать питание на модуль через разъём внешнего питания. Для этого убирается перемычка, и дополнительное питание подаётся на контакты JD-VCC и GND. При этом питание на вывод VCC управляющего разъёма также подаётся (от +5 В Arduino).

Кстати, реле может коммутировать не только слаботочную нагрузку, как в нашем примере. С помощью реле можно замыкать и размыкать достаточно большие нагрузки. Какие именно – нужно смотреть в техническом описании к конкретному реле. Например, данное реле SRD-05VDC-SL-C может коммутировать сети с током до 10 А и напряжением до 250 В переменного тока или до 30 В постоянного тока. То есть его можно использовать, например, для управления освещением квартиры.

ИК-приемник VS1838B и arduino

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

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

Приемник работает на частоте 38 кГц, данная частота является самой распространенной среди ИК-пультов, используемых в домашней технике.

Подключение ИК-датчика VS1838B к arduino

Для считывания ИК-сигнала и преобразования его к человеческому виду – числу, можно воспользоваться библиотекой IRremote, с ее помощью весь скетч займет всего несколько строк.Ссылка на библиотеку: IRremote .

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

Ниже приведена фотография VS1838B с подписанными ножками:

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

Код скетча для ИК-приемника VS1838B

Каждая кнопка ИК-пульта имеет уникальный код, который мы будем получать с помощью датчика VS1838B. В первую очередь запишем скетч, который выводит в консоль коды кнопок, после чего уже дополнить программу условиями на конкретные кнопки.Ниже приведет скетч для работы с ИК-приемником VS1838B и arduino, скачать его можно тут: скачать.

#include // подключаем библиотеку int ledPin = 13; // светодиод int reciverPin = 11; // пин, к котрому подключен ИК-приемник IRrecv irrecv(reciverPin); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // запуск приемника pinMode(ledPin, OUTPUT); } void loop() { // постоянно считываем данные с приемника if (irrecv.decode(&results)) { // выводим в консольку, что получили, число в 16-ричном виде Serial.println(results.value, HEX); // проверяем сигналы – и если это те, что нам нужны, то вкл или выкл светодиод if(results.value == 0x926DC837) digitalWrite(13, HIGH); if(results.value == 0x926D48B7) digitalWrite(13, LOW); irrecv.resume(); // готовы принимать следующий сигнал } }

Пример работы ИК-датчика VS1838B и arduino можно посмотреть ниже на видео.

Элементы платы

Нагрузка

Модуль предназначен для коммутации нагрузки постоянного тока напряжением до 30 В и током до 20 А.
Нагрузка подключается своими контактами к колодкам под винт . Отрицательный контакт нагрузки подключается к контакту , а положительный — к контакту .

Питание нагрузки

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

Обратите внимание, контакты и на модуле объединены. Силовым ключом коммутируется связь между контактами и .

Troyka-контакты

Модуль силовой ключ подключается к управляющей электронике через три провода.

  • Сигнальный (S) — управляющий контакт силового ключа. Подключите к цифровому пину микроконтроллера.
  • Питание (V) — соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — соедините с пином GND микроконтроллера.

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

На сигнальный контакт можно подавать ШИМ-сигнал для плавного регулирования напряжения нагрузки.

Индикатор состояния силового ключа

Светодиод показывает состояние силового ключа. Он горит при открытом ключе. При использовании ШИМ-сигнала, яркость светодиода говорит о коэффициенте заполнения ШИМ.

Напряжение без нагрузки

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

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

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

Напряжение холостого хода, также как и сварочный ток, зависит от уровня входного напряжения. Чем ниже напряжение в источнике питания, тем ниже напряжение холостого хода. Поэтому по мере снижения напряжения питания поджиг электрода становится все сложнее.

Управление RGB лентой с помощью Andurino

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

Схема подключения к Arduino RGB светодиода:

Аналогично построено и управление RGB лентой Arduino:

Аrduino RGB контроллер лучше собирать на полевых транзисторах.

Для плавного управления яркостью можно использовать две кнопки. Одна будет увеличивать яркость свечения, другая уменьшать.

Скетч управления яркостью светодиодной ленты Arduino

int led = 120; устанавливаем средний уровень яркости

void setup() {pinMode(4, OUTPUT);  устанавливаем 4й аналоговый порт на выводpinMode(2, INPUT);

pinMode(4, INPUT);  устанавливаем 2й и 4й цифровой порт на ввод для опроса кнопок} void loop(){

button1 = digitalRead(2);

button2 = digitalRead(4); if (button1 == HIGH)  нажатие на первую кнопку увеличит яркость{ led = led + 5;

analogWrite(4, led); } if (button2 == HIGH)  нажатие на вторую кнопку уменьшит яркость{ led = led — 5;

analogWrite(4, led); }

При удержании первой или второй кнопки плавно изменяется напряжение, подаваемое на управляющий контакт электронного ключа. Тогда и произойдет плавное изменение яркости.

4Использование библиотеки ArduinoThreadдля создания параллельных потоков

Чтобы решить поставленную задачу, воспользуемся замечательной библиотекой ArduinoThread, которая позволяет с лёгкостью создавать псевдо-параллельные процессы. Она работает похожим образом, но позволяет не писать код по проверке времени – нужно выполнять задачу в этом цикле или не нужно. Благодаря этому сокращается объём кода и улучшается читаемость скетча. Давайте проверим библиотеку в действии.

Библиотека ArduinoThread

Первым делом скачаем с официального сайта архив библиотеки и разархивируем его в директорию libraries/ среды разработки Arduino IDE. Затем переименуем папку ArduinoThread-master в ArduinoThread.

Схема подключений останется прежней. Изменится лишь код программы.

#include <Thread.h>  // подключение библиотеки ArduinoThread
const int soundPin = 3;  // переменная с номером пина пьезоэлемента
const int ledPin = 13;  // переменная с номером пина светодиода

Thread ledThread = Thread(); // создаём поток управления светодиодом
Thread soundThread = Thread(); // создаём поток управления сиреной

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

    ledThread.onRun(ledBlink);  // назначаем потоку задачу
    ledThread.setInterval(1000); // задаём интервал срабатывания, мсек
    
    soundThread.onRun(sound);     // назначаем потоку задачу
    soundThread.setInterval(20); // задаём интервал срабатывания, мсек
}

void loop() {
    // Проверим, пришло ли время переключиться светодиоду:
    if (ledThread.shouldRun())
        ledThread.run(); // запускаем поток
    
    // Проверим, пришло ли время сменить тональность сирены:
    if (soundThread.shouldRun())
        soundThread.run(); // запускаем поток
}

// Поток светодиода:
void ledBlink() { 
    static bool ledStatus = false;    // состояние светодиода Вкл/Выкл
    ledStatus = !ledStatus;           // инвертируем состояние
    digitalWrite(ledPin, ledStatus);  // включаем/выключаем светодиод
}

 // Поток сирены:
void sound() { 
    static int ton = 100;  // тональность звука, Гц
    tone(soundPin, ton);  // включаем сирену на "ton" Гц
    if (ton }

В программе мы создаём два потока – ledThread и soundThread, каждый выполняет свою операцию: один мигает светодиодом, второй управляет звуком сирены. В каждой итерации цикла для каждого потока проверяем, пришло ли время его выполнения или нет. Если пришло – он запускается на исполнение с помощью метода run(). Главное – не использовать оператор delay(). В коде даны более подробные пояснения.

Параллельное выполнение потоков на Arduino

Загрузим код в память Ардуино, запустим. Теперь всё работает в точности так, как надо!

Типы приборов

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

Инкрементальные энкодеры

Они распространены больше всего. В инкрементальном варианте вращательное движение вала преобразовывается в электрические импульсы. Его конструкция состоит из диска с прорезями и оптических датчиков.

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

Этот вид работает следующим образом. У него есть начальная нуль-метка, или выход Z, и два дополнительных выхода — A и B. Датчик создает две линии сигналов со смещенными на четверть фазы импульсами относительно друг друга. Разница импульсов указывает на направление вращения, а их количество — на угол поворота.

Разновидность инкрементальных энкодеров — сдвоенные, или квадратурные. Они состоят из двух датчиков, которые срабатывают со смещением в полшага. Квадратурные считают количество импульсов и учитывают направление.

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

Абсолютные энкодеры

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

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

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

Единственный существенный недостаток этого типа угловых датчиков — необходимость все время переводить код Грея в двоичный код для регистрации положения датчика.

Многооборотные датчики поворота

Абсолютные энкодеры могут быть однооборотными и многооборотными.

Однооборотные показывают абсолютное значение после одного оборота. После этого код возвращается к начальному значению. Такие датчики используют в основном для измерения угла поворота.

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

Оптические энкодеры

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

Каждому положению энкодера соответствует определенный цифровой код, который вместе с количеством оборотов составляет единицу измерения устройства.

Оптические угловые датчики бывают фотоэлектрическими и магнитными.

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

Фотоэлектрические датчики основаны на том же принципе. В них свет преобразуется в электрические сигналы.

Механические энкодеры

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

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

Какие размеры нужны для шапки

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

Элементы платы

Troyka-контакты

Датчик подключается к управляющей электронике по трём проводам.

  • Питание (V) — красный провод. На него должно подаваться напряжение 5 В (или 3,3 В).
  • Земля (G) — чёрный провод. Должен быть соединён с землёй микроконтроллера.
  • Сигнальный (S) — жёлтый провод. Подключается к цифровому входу микроконтроллера. Через него датчик передает микроконтроллеру бинарное значение, ноль или единицу.

Оптопара TCRT5000

Оптопара TCRT5000 — это собранные в одном корпусе светоиод (синий на рисунке) и фототранзистор n-p-n типа (чёрный на рисунке). Светодиод излучает в инфракрасном диапазоне на длине волны 950 нм. Свет отражается от поверхности и попадает на фототранзистор.

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

Инвертор

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

Переменный резистор

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

Сигнальный светодиод

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

Примеры работы

Работа с одним модулем

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

Код для Arduino

singleFET.ino
// библиотека для работы с модулями по интрефейсу SPI
#include <SPI.h>
// библиотека для работы со сборкой силовых ключей
#include <AmperkaFET.h>
// пин выбора устройства на шине SPI
#define PIN_CS  A0
 
// создаём объект mosfet для работы со сборкой силовых ключей
// передаём номер пина выбора устройства на шине SPI
FET mosfet(PIN_CS);
 
void setup() {
  // начало работы с силовыми ключами
  mosfet.begin();
}
 
void loop() {
  for(int i = ; i < 8; i++ ) {
    // включаем по очереди каждый ключ на модуле
    mosfet.digitalWrite(i, HIGH);
    // ждём пол секунды
    delay(500);
  }
  // выключаем все ключи на модуле
  mosfet.digitalWrite(ALL, LOW);
  delay(500);
}

Код для Iskra JS

singleFET.js
// инициализируем SPI2
SPI2.setup({
  baud 3200000,
  mosi B15,
  sck  B13,
  miso B14
});
 
// подключаем модуль для работы со сборкой силовых ключей
var mosfet = require('@amperka/x-fet').connect({
  cs     A0,   // пин cs нужен для обращения к ключам
  spi    SPI2, // интерфейс SPI к которому подключены ключи
  qtyMod 1     // количество модулей в цепочке
});
 
// переменная счетчик
var counter = ;
// вермя в милисекундах на переключение
var time = 1000;
// кол-во переключаемых выходов от 1 до 8;
var pins = 8;
 
// запускаем функцию которая переключает выходы 
setInterval(() => {
  if (counter === pins) {
    counter = ;
    mosfet.turnAllOff();
  } else {
    mosfet.turnOn(counter);
    counter++;
  }
}, time);

После прошивки вы увидите поочерёдное включение ключей.

Работа с группой модулей

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

Подключим к предыдущему примеру ещё два P-FET модуля с подключёнными светодиодными лентами.

Код для Arduino

multipleFET.ino
// библиотека для работы с модулями по интерфейсу SPI
#include <SPI.h>
// библиотека для работы со сборкой силовых ключей
#include <AmperkaFET.h>
// пин выбора сборки устройств на шине SPI
#define PIN_CS  A0
 
 
// создаём объект mosfet для работы со сборкой силовых ключей
// передаём номер пина выбора устройств на шине SPI
// и количество устройств подключённых в цепочке
FET mosfet(PIN_CS, 3);
 
void setup() {
  // начало работы с силовыми ключами
  mosfet.begin();
}
 
void loop() {
  // включаем второй ключ на нулевом модуле
  mosfet.digitalWrite(, 2, HIGH);
  // ждём пол секунды
  delay(500);
  // включаем пятый ключ на первом модуле
  mosfet.digitalWrite(1, 5, HIGH);
  // ждём пол секунды
  delay(500);
  // включаем все ключи на втором модуле
  mosfet.digitalWrite(2, ALL, HIGH);
  // ждём пол секунды
  delay(500);
  // выключаем все ключи на всех модулях
  mosfet.digitalWrite(ALL, ALL, LOW);
  // ждём пол секунды
  delay(500);
}

Код для Iskra JS

multipleFET.js
// инициализируем SPI2
SPI2.setup({
  baud 3200000,
  mosi B15,
  sck B13,
  miso B14
});
 
// подключаем модуль для работы со сборкой силовых ключей
var mosfet = require('@amperka/x-fet').connect({
  cs A0, // пин cs нужен для обращения к ключам
  spi SPI2, // интерфейс SPI к которому подключены ключи
  qtyMod 3 // количество модулей в цепочке
});
 
// вермя в милисекундах на переключение
var time = 5000;
 
// запускаем функцию которая переключает выходы
setinterval(() => {
  mosfet.turnOn(2, );
  setTimeout(() => {
    mosfet.turnOn(5, 1);
    setTimeout(() => {
      mosfet.turnAllOn(2);
      setTimeout(() => {
        mosfet.turnAllOff();
      }, time  4);
    }, time  4);
  }, time  4);
}, time);

После прошивки вы увидите следующую картину.

Элементы платы

Реле

На Relay Shield установлены 4 электромеханических реле, имеющих нормально замкнутый (normal closed, NC) и нормально разомкнутый (normal open, NO) контакты. Если на управляющей обмотке реле отсутствует напряжение, то между нормально замкнутым и коммутируемым контактами есть электрическая связь, а между нормально разомкнутым и коммутируемым — нет. При подаче напряжения на управляющую обмотку нормально разомкнутый контакт замыкается, а нормально замкнутый — размыкается.

Характеристики используемых реле

  • Ток обмотки: 80 мА
  • Максимальное коммутируемое напряжение: 30 В постоянного тока; 250 В переменного тока
  • Максимальный коммутируемый ток: 5 А (NO), 3 А (NC)
  • Рекомендованная частота переключения: до 1 Гц
  • Время жизни: не менее 50000 переключений

Нагрузка

Нагрузка к реле подключается через колодки под винт. Контакт от источника напряжения подключается к выводу COM, а нагрузка — к контакту NO или NC, в зависимости от задачи которую должно выполнять реле.
Чаще всего реле используется для замыкания внешней цепи при подаче напряжения на управляющую обмотку. При таком способе даже если напряжение на Arduino по какой-то причине пропадёт, управляемая нагрузка будет автоматически отключена.
Схема подключения нагрузки к колодкам при этом будет следующей:

Используемые пины

Для управлением реле используются контакты 4, 5, 6 и 7 Arduino.

Реле Контакт Arduino
Реле 1 7
Реле 2 6
Реле 3 5
Реле 4 4

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

Контакты выбора управляющих пинов

Индикатор состояния и обвязка реле

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

Ограничения питания логической части

Отдельное реле в замкнутом состоянии потребляет 80 мА из логической цепи в 5 вольт. Все 4 реле при одновременном включении потребляют 320 мА. Если этот сценарий возможен в вашем проекте, необходимо удостовериться, что необходимый ток доступен.

Иными словами, все реле одновременно могут не работать в одном из следующих случаев.

  • Вы питаете Arduino от USB-порта с пределом по току в 200 мА, например, от разветвителя в клавиатуре. Используйте полноценный USB 2.0 или USB 3.0, чтобы обеспечить стабильное питание от USB
  • Вы питаете Arduino внешним источником питания с высоким входным напряжением. Несмотря на то, что линейный регулятор напряжения на плате Arduino выдаёт до 800 мА, их можно получить только, если обеспечена температура регулятора в 25 °C. Излишек напряжения линейный регулятор превращает в рассеиваемое тепло, компонент нагревается, предельный ток снижается. В этом случае используйте либо источник питания на 7–8 вольт вместо 8+, либо установите радиатор на регулятор напряжения, либо подавайте ровные 5 вольт непосредственно на пины 5V и GND или в порт USB.

PNP mosfet arduino

Тут чутка сложнее

Если нам надо на нагрузку подать 5 вольт:

  • R1 ограничивает ток на затворе чтобы ардуинка не сломалась
  • R2 подтягивает порт на землю чтобы не было ложных срабатываний
  • D1 диод шотки чтобы не спалить все – он нужен только если нагрузка имеет большую индуктивность – например реле или мотор или еще что-то, где есть много намотанной проволоки. Кстати для NPN мосфета он тоже нужен. А на переменном токе не нужен, а то задымится)

Если на мотор или лампочку надо 12 вольт то все немного сложнее. Чтобы открыть мосфет нам надо подать 12 вольт на gate, а при таком варианте наш ардуино задымится. Надо еще один транзистор так:

Тут Q1 – биполярный транзистор – он то и включает 12 вольт на gate Q2, а R1 нужен чтобы ограничить ток чтобы ардуино опять таки не задымилась. Работает все так:

  • подаем с ардуино high – q1 начинает проводить ток с коллектора на эмиттер и 12 вольт утекает не в gate q2, а на землю. q2 включает мотор
  • подаем с ардуино low – q1 закрыт и не пропускает ток, 12 вольт через резистор подаются на gate q2, моторчик не крутится. все просто. резистор r2 нужен чтобы ограничить ток q1 и q2 чтобы он не задымились

Управлять больше чем 12 вольт можно, например 24 вольтами, если q1 выдержит. Чтобы наверняка можно добавить диод D2:

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации