Реле высокого уровня включается и потребляет ток при подаче сигнала высокого уровня (5, 3,3 В), а реле низкого уровня потребляет ток при подаче сигнала низкого уровня (GND, 0 В). Логично, что удобнее использовать реле высокого уровня: Подайте высокий сигнал, и реле включится. Кстати, в этом руководстве мы разобрали реле. И в этом случае:
Arduino и MOSFET. Схема подключения
Иногда наступает момент, когда пользователь хочет управлять мощным устройством с помощью Arduino. Все мы знаем, что Arduino может подавать 20 мА (максимум 40 мА) на каждый из своих выходов. Хорошо, но что делать, если мы хотим управлять, например, двигателем постоянного тока.
Обновленная версия, мощность: 600 Вт, воздушный поток: 240 л/час.
В этом случае мы можем использовать, например, биполярный транзистор, если ток не слишком большой, мост L293D или MOSFET-транзистор.
Что такое MOSFET?
В нашем проекте мы будем использовать MOSFET транзистор STP16NF06L, который имеет N-канал.
МОП-транзистор — это полевой транзистор, состоящий из трех нитей: исток (S), затвор (G) и сток (D): Ток протекает между истоком и стоком в так называемом канале. Величина протекающего тока зависит от управляющего напряжения, приложенного к источнику затвора.
МОП-транзисторы быстрее биполярных транзисторов, поскольку процессы, происходящие в МОП-транзисторах, являются чисто электростатическими. Основным фактором, влияющим на время переключения, является емкость затвора.
Многофункциональный прибор для проверки транзисторов, диодов, тиристоров.
Подключение MOSFET к Arduino
Затвор (G) транзистора MOSFET должен быть подключен к Arduino. В общем, можно сказать, что источник (S) должен быть подключен к минусу нашей цепи, а сток (D) — к минусу управляемого объекта (например, лампы, двигателя). Кроме того, стоит подключить резистор между затвором (G) и источником (S). Это гарантирует, что при отсутствии управляющего сигнала от Arduino затвор находится в низком состоянии.
Кроме того, у нас есть уверенность в том, что в случае отказа кабеля на воротах не возникнет неопределенных состояний, которые могут привести к включению и выключению управляемого объекта.
В нашем случае для управления мы будем использовать двигатель постоянного тока. Наша схема предназначена для увеличения и уменьшения скорости вращения двигателя.
Подключите все, как показано ниже. В качестве альтернативы можно подключить внешний источник питания, не забыв соединить источник питания и землю Arduino.
Arduino и MOSFET транзистор
Полевой транзистор (MOSFET) — это электронный компонент, который позволяет управлять мощной нагрузкой постоянного тока с помощью небольшого напряжения и тока (от вывода микроконтроллера), которые не может обеспечить сам вывод ИС: Двигатели, клапаны, мощные светодиоды и так далее. В учебнике по управлению нагрузкой более подробно описаны отдельные контакты. В учебнике используется плата управления нагрузкой IRF740 N-канального типа.
Управляющий вывод платы (gate) подключен ко всем цифровым выводам MCU через токоограничивающий резистор 100-200 Ом (в комплект входят резисторы 220 Ом) для защиты вывода от перегрузки по току. Он также подтянут к GND резистором 10 кОм, чтобы транзистор автоматически выключался при отсутствии сигнала от МК. «Плюс» источника питания подключается непосредственно к нагрузке, GND подключается к GND микроконтроллера. GND нагрузки подключается к выходу (стоку) мосфета:
Рассмотрите возможность подключения двигателя из PRO-версии набора, питающегося от внешнего адаптера 5 В:
Переключение индуктивных нагрузок (двигателей, соленоидов, электромагнитов и других «катушек») вызовет скачок напряжения, который может повредить транзистор. Для защиты от этого мы подключили диод (входит в комплект) параллельно двигателю, который поглощает весь всплеск напряжения.
Примеры
Для управления транзистором достаточно подключить сигнал с клеммной колодки:
- HIGH (открыть транзистор, включить нагрузку)
- LOW (закрыть транзистор, выключить нагрузку)
- ШИМ сигнал для плавного управления мощностью на нагрузке
Обычное «мигание», но через транзистор. Нагрузка включается и выключается.
#define MOS_PIN 3 void setup()/>void loop()/>
Программный сценарий для цепи двигателя постоянного тока
В следующем разделе представлен программный сценарий, который управляет двигателем постоянного тока без драйвера двигателя IC, используя только микроконтроллер Arduino, ESP8266 или ESP32 и MOSFET. Чтобы управлять двигателем постоянного тока, нам нужно просто установить затвор MOSFET на высокий уровень, чтобы заставить двигатель постоянного тока вращаться, или установить цифровой вывод микроконтроллера на низкий уровень, чтобы выключить двигатель постоянного тока.
int motorPin = 6; //для микроконтроллера Arduino //int motorPin = D6; //для микроконтроллера ESP8266 //int motorPin = 4; //для микроконтроллера ESP32 void setup()<>void loop()
В начале сценария Arduino мы определяем цифровой вывод ввода/вывода, который соединяет микроконтроллер с затвором MOSFET. Функция настройки остается пустой и не используется. В функции цикла мы устанавливаем цифровой пин в положение HIGH и LOW. Мы ждем 2 секунды между каждым состоянием.
На следующем рисунке показаны напряжения сток-исток и затвор-исток.
Когда напряжение затвор-исток превышает пороговое напряжение МОП-транзистора, напряжение сток-исток падает из-за срабатывания двигателя постоянного тока, что приводит к большому падению напряжения на двигателе постоянного тока.
Как контролировать скорость двигателя постоянного тока
Скорость двигателя постоянного тока пропорциональна току, протекающему через коллектор. Если мы посмотрим на характеристическую кривую транзистора, то увидим, что мы можем управлять током коллектора через ток базы.
Тот же принцип применим и к МОП-транзисторам. Чтобы увеличить или уменьшить ток затвора, мы используем широтно-импульсную модуляцию (ШИМ) на подключенном цифровом порту ввода/вывода микроконтроллера.
В следующем примере мы хотим увеличить и уменьшить скорость двигателя постоянного тока.
Программный сценарий для управления скоростью двигателя постоянного тока
В следующем сценарии ШИМ-сигнал микроконтроллера используется для управления скоростью вращения двигателя постоянного тока. Поскольку диапазон значений ШИМ отличается между Arduino и ESP8266 и ESP32, я создал два разных сценария для Arduino.
- Программный код для Arduino
- Программный код для ESP8266 и ESP32
int motorPin = 6; // для микроконтроллера Arduino void setup()void loop() > int motorPin = D6; // для микроконтроллера ESP8266 //int motorPin = 4; // для микроконтроллера ESP32 void setup()void loop() > Сценарий программы краток и прост для понимания. Сначала определим вывод, который подключен к базовому выводу транзистора. Поскольку мы используем функцию ШИМ на цифровом терминале, нам нужно определить подключенный терминал как выход. В режиме цикла мы увеличиваем скорость двигателя постоянного тока во время цикла for. Аналоговый сигнал варьируется от 0, когда двигатель стоит на месте, до 255 для микроконтроллера Arduino и до 1023 для микроконтроллеров ESP8266 и ESP32, когда двигатель вращается с максимальной скоростью. Мы используем функцию analogWrite для увеличения сигнала ШИМ.
Надеюсь, вы узнали много нового из моего урока о том, как управлять двигателем постоянного тока с помощью Arduino, ESP8266 или ESP32 без IC.
Подбор MOSFET для подключения к ардуино
Скачайте технический паспорт, например, для FQP30N06. Первое, что нужно учесть, это ток и напряжение:
Второе - определить падение напряжения, используя схему, подобную этой. Например, если вы запустите лампу на 2А и протестируете ее при 5 вольтах на затворе:
Падение напряжения составит около 5,4 вольт, и лучше всего найти что-то менее горячее.
В-третьих, если используется ШИМ, нам необходимо время открытия и закрытия:
Если вы неправильно установите частоту, если вы дадите ему более высокую частоту, чем он может выдержать, транзистор будет перегреваться.