Оглавление
- Работа проекта
- 3Скетч для управления коллекторным двигателем
- Подключение мотора к Arduino
- Обзор бесколлекторных моторов для Arduino
- Подключение к плате Arduino
- Переключение режимов с помощью кнопки
- Среда разработки Arduino
- Исходный код программы
- Примеры симисторов
- Реле
- Заключение
- Полезные источники
- Светодиодные ленты
- Подключение Mosfet к Ардуино по-хорошему
- Скетч
- Принцип управления нагрузкой через Ардуино
- Дребезг кнопки ардуино
- Как подключить моторчик к Arduino
- Рулим 220 вольтами с помощью мосфета
- Биполярный транзистор: внешний вид, составные элементы, конструкция корпуса — кратко
- NPN mosfet подключение к arduino
- Интересные проекты на базе МК Arduino
- Важные страницы
Работа проекта
На контакты 2 и 3 платы Arduino постоянно подается напряжение высокого уровня.
Когда ни одна из кнопок не нажата
В этом случае на базы транзисторов не подается открывающего напряжения, следовательно транзисторы закрыты – поэтому на катушки реле не подается ток от контакта Vin платы Arduino.
Когда одна кнопка нажата
В этом случае на базу транзистора с цифрового контакта платы Arduino поступает открывающее напряжение и транзистор открывается. Теперь ток от контакта Vin поступает на катушку реле, что приводит к переключению реле (RELAY A) в положение NO (нормально разомкнуто). В это время другое реле (RELAY B) остается в положении NC (нормально замкнуто). Поэтому ток начинает протекать от положительного вывода батареи к ее отрицательному выводу через двигатель, то есть ток течет от relay A к relay B. Это приводит к вращению двигателя по часовой стрелке.
Когда другая кнопка нажата
Теперь ток подается уже на другое реле — RELAY B. Этот ток переключает реле в положение NO. В это время другое реле (RELAY A) находится в положении NC. Поэтому ток начинает протекать от положительного вывода батареи к ее отрицательному выводу через двигатель. Но в этой ситуации ток течет уже от relay B к relay A, что приводит к вращению двигателя против часовой стрелки.
Когда обе кнопки нажаты
В этой ситуации оба транзистора открыты, что приводит к тому что оба реле находятся в положении NO, поэтому в этой ситуации ток уже не протекает от положительного вывода батареи к ее отрицательному выводу через двигатель, поэтому двигатель не вращается.
Управление скоростью вращения двигателя
Затвор MOSFET транзистора подключен к ШИМ контакту 6 платы Arduino UNO. Под действием ШИМ на этом контакте Mosfet транзистор включается и выключается (открывается и закрывается) с высокой частотой, а поскольку двигатель соединен последовательно со стоком mosfet, значение коэффициента заполнения ШИМ оказывает непосредственное влияние на скорость вращения двигателя. А значение коэффициента заполнения ШИМ управляется с помощью потенциометра – вращение его оси приводит к изменению напряжения на контакте A0, следовательно изменяется значение на выходе АЦП (аналогово-цифрового преобразователя) данного контакта (более подробно об АЦП в Arduino). Arduino считывает значение с выхода этого АЦП и в соответствии с ним изменяет коэффициент заполнения ШИМ на контакте 6.
3Скетч для управления коллекторным двигателем
Напишем скетч для управления коллекторным двигателем. Объявим две константы для ножек, управляющих двигателем, и одну переменную для хранения значения скорости. Будем передавать в последовательный порт значения переменной Speed и менять таким образом скорость (значением переменной) и направление вращения двигателя (знаком числа).
int Speed = 0; const int IA1 = 5; // Управляющий вывод 1 const int IA2 = 6; // Управляющий вывод 2void setup() { pinMode(IA1, OUTPUT); pinMode(IA2, OUTPUT); Serial.begin(9600);} void loop() { if (Serial.available() > 0) { String s = Serial.readString(); Speed = s.toInt(); // преобразуем считанную строку в число } if (Speed > 0) { // если число положительное, вращаем в одну сторону analogWrite(IA1, Speed); analogWrite(IA2, LOW); } else { // иначе вращаем ротор в другую сторону analogWrite(IA1, LOW); analogWrite(IA2, -Speed); }} Максимальная скорость вращения – при наибольшем значении напряжения, которое может выдать драйвер двигателя. Мы можем управлять скоростью вращения, подавая напряжения в диапазоне от 0 до 5 Вольт. Так как мы используем цифровые ножки с ШИМ, напряжение на них регулируется командой analogWtirte(pin, value), где pin – номер вывода, на котором мы хотим задать напряжение, а аргумент value – коэффициент, пропорциональный значению напряжения, принимающий значения в диапазоне от 0 (напряжение на выводе равно нулю) до 255 (напряжение на выводе равно 5 В).
Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.
Подключимся с помощью любой терминалки к порту, передадим число «100» – двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.
Управление электромотором с помощью драйвера двигателей и Arduino
А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:
Подключение мотора к Arduino
Как уже было сказано выше, ардуино не может обеспечить мотор необходимым током и напряжением. В таких случаях используются транзисторы.
Транзистор это радиоэлектронный компонент из полупроводникового материала способный от небольшого входного сигнала управлять значительным током в выходной цепи, что позволяет его использовать для усиления, генерирования, коммутации и преобразования электрических сигналов. Обычно у транзисторов 3 вывода: база, эмиттер и коллектор. Алгоритм действия можно сформулировать так: пропустить ток от коллектора к эмиттеру в зависимости от сигнала на базе. Транзисторы бывают разных типов и номиналов. Об этом можно подробнее почитать на википедии.
Будьте внимательны при выборе транзисторов для своих проектов. Некоторые рассчитаны на пропуск большого напряжения, или большого тока. Так же многие транзисторы не откроются от 5 вольт на базе. Всегда проверяйте характеристики транзисторов перед покупкой в datasheet
Так же обратите внимание, что для управления переменным током используются мосфет транзисторы
Теперь давайте подключим мотор к ардуино по следующей схеме:
Подключение мотора к ардуино
Как всегда ничего сложного. Главное не перепутать выводы транзистора
Обратите внимание на резистор через который ардуино подключена к базе. Это резистор на 1 кОм и нужен он для того что бы обезопасить нашу ардуинку
В видео к схеме добавлены диод и конденсатор, но они не обязательны. Так же можно добавить резистор на 10 — 100 кОм между эмиттером и коллектором для стабильности работы нашей схемы. Так же не забудьте, что земля на всех уровнях напряжения должна быть объединена. И взглянем на наш код:
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 | // Обозначаем пин к которому у нас подключена база транзистора int motorPin = 9; void setup () { // Устанавливаем пин в качестве выхода pinMode (motorPin, OUTPUT); } void loop () { // Перебор значений от 0 до 255 в цикле for (int i = 0; i <= 255; ++i) { analogWrite(motorPin, i); // небольшая задержка что бы все происходило не слишком быстро delay(10); } delay(500); for (int i = 0; i >= 0; i—) { analogWrite(motorPin, i); delay(10); } delay(500); } |
Как видите скетч очень прост. По комментариям в коде вы легко разберетесь, что к чему. Единственная конструкция, которую мы еще не использовали это цикл for.
Подключение сервопривода практически ни чем не отличается от подключения моторчика. Отличие в том что у сервы 3 вывода. Плюс, минус и логический. В видео подробно об этом рассказано.
Добавим в нашу схему инфракрасный дальномер. Просто потому, что мы можем
Обзор бесколлекторных моторов для Arduino
Бесколлекторные моторы (рис. 1) появились сравнительно недавно и были созданы с целью оптимизации электродвигателей постоянного тока. Бесколлекторные моторы питаются трехфазным переменным током. Они эффективно работают в более широком диапазоне оборотов и имеют более высокий КПД. При этом конструкция двигателя проще, в ней нет щеточного узла, который постоянно трется с ротором и создает искры. Поэтому они практически не изнашиваются.
По конструкции бесколлекторные моторы делятся на две группы: inrunner и outrunner. Двигатели inrunner имеют расположенные по внутренней поверхности корпуса обмотки, и вращающийся внутри магнитный ротор. Двигатели outrunner имеют неподвижные обмотки, внутри двигателя, вокруг которых вращается корпус с помещенными на его внутреннюю стенку постоянными магнитами.
Коммутация в бесколлекторном двигателе (БД) осуществляется и контролируется с помощью электроники.
Подключение к плате Arduino
Схема подключения бесколлекторного двигателя с ESC-регулятором к плате Arduino показана на рис.5. Для подключения регулятора к плате Arduino используется 2 провода:
Красный провод регулятора является не входом, выходом с напряжением +5В, который можно использовать для питания платы Arduino.
Показания потенциометра будем использовать для управления скоростью мотора.
Рис. 5. Подключение бесколлекторного двигателя с ESC-регулятором к плате Arduino
Для управления регулятором будем использовать Arduino-библиотеку Servo. Минимальные и максимальные значения управляющего сигнала 800 мксек и 2300 мксек.
Содержимое скетча представлено в листинге 1.
После загрузки скетча на плату Arduino видим что мотор не запускается и не реагирует на повороты потенциометра. Регулятор необходимо откалибровать, чтобы он знал минимальные и максимальное значения. Для этого перед подачей питания на регулятор, выставляем потенциометр в максимальное значение. Подаем питание. Слышим «пиканье» двигателя. Переводим потенциометр в минимальное значение, слышим 3 «пика». Регулятор откалиброван. Теперь поворотом потенциометра можем регулировать скорость двигателя.
Переключение режимов с помощью кнопки
Для того, чтобы определить, была ли нажата кнопка, надо просто зафиксировать факт ее нажатия и сохранить признак в специальной переменной.
Факт нажатия мы определяем с помощью функции digitalRead(). В результате мы получим HIGH (1, TRUE) или LOW(0, FALSE), в зависимости от того, как подключили кнопку. Если мы подключаем кнопку с помощью внутреннего подтягивающего резистора, то нажатие кнопки приведет к появлению на входе уровня 0 (FALSE).
Для хранения информации о нажатии на кнопку можно использовать переменную типа boolean:
boolean keyPressed = digitalRead(PIN_BUTTON)==LOW;
Почему мы используем такую конструкцию, а не сделали так:
boolean keyPressed = digitalRead(PIN_BUTTON);
Все дело в том, что digitalRead() может вернуть HIGH, но оно не будет означать нажатие кнопки. В случае использования схемы с подтягивающим резистором HIGH будет означать, что кнопка, наоборот, не нажата. В первом варианте (digitalRead(PIN_BUTTON)==LOW ) мы сразу сравнили вход с нужным нам значением и определили, что кнопка нажата, хотя и на входе сейчас низкий уровень сигнала. И сохранили в переменную статус кнопки. Старайтесь явно указывать все выполняемые вами логические операции, чтобы делать свой код более прозрачным и избежать лишних глупых ошибок.
Как переключать режимы работы после нажатия кнопки?
Часто возникает ситуация, когда мы с помощью кнопок должны учитывать факт не только нажатия, но и отпускания кнопки. Например, нажав и отпустив кнопку, мы можем включить свет или переключить режим работы схемы. Другими словами, нам нужно как-то зафиксировать в коде факт нажатия на кнопку и использовать информацию в дальнейшем, даже если кнопка уже не нажата. Давайте посмотрим, как это можно сделать.
Логика работы программы очень проста:
- Запоминаем факт нажатия в служебной переменной.
- Ожидаем, пока не пройдут явления, связанные с дребезгом.
- Ожидаем факта отпускания кнопки.
- Запоминаем факт отпускания и устанавливаем в отдельной переменной признак того, что кнопка была полноценно нажата.
- Очищаем служебную переменную.
Как определить нажатие нескольких кнопок?
Нужно просто запомнить состояние каждой из кнопок в соответствующей переменной или в массиве ардуино. Здесь главное понимать, что каждая новая кнопка – это занятый пин. Поэтому если количество кнопок у вас будет большим, то возможно возникновение дефицита свободных контактов. Альтернативным вариантом является использование подключения кнопок на один аналоговый пин по схеме с резистивным делителем. Об этом мы поговорим в следующих статьях.
Среда разработки Arduino
Очень большой частью платформы Ардуино является Интегрированная Среда Разработки или IDE (Integrated development environment).
Для работы платы и вашего будущего проекта необходимо написать и загрузить на Arduino скетч. IDE помогает с легкостью всё это реализовать.
Скетч — это программа, написанная для управления платой Ардуино и устройствами на ее основе, которая загружается в микроконтроллер. Имеет также другое название — эскиз.
Простыми словами — это программа в которой создатели своих устройств пишут код для управления своими будущими роботами, гаджетами, умным домом и т.п..
Arduino IDE является бесплатной, скачивается и устанавливается на компьютер пользователя.
Программа работает на операционных системах Windows, Mac OS и Linux.
Окно загрузки и экран программы Arduino IDE
Подробнее познакомиться со средой разработки вы можете в нашей статье «Arduino IDE: программная среда для разработки под Ардуино».
Скачать Arduino IDE можно с официального сайта производителя плат Arduino.
Главное ядро программы версии 1.8.0 было выпущено 20 декабря 2016 года, а уже в 2021 году многие используют версию 1.8.13.
Вместе с программой автоматически установятся драйвера для определения платы при подключении к USB-порту. Среда разработки оснащена стандартным менеджером добавления библиотек в виде исходного кода на языке C++.
Данная возможность расширяет применение компонентов, добавляя новый функционал.
Исходный код программы
Принцип работы схемы достаточно прост – нам просто нужно подать на контакт A0 платы Arduino напряжение высокого уровня (логическую «1») когда мы хотим включить реле и напряжение низкого уровня (логический «0») когда мы хотим выключить реле. Соответственно, реле при этом будет замыкать и размыкать цепь электрической лампочки.
В программе мы будем переключать состояние контакта A0 платы Arduino с задержкой в 1 секунду:
Arduino
void loop()
{
digitalWrite(relay, HIGH);
delay(interval);
digitalWrite(relay, LOW);
delay(interval);
}
1 |
voidloop() { digitalWrite(relay,HIGH); delay(interval); digitalWrite(relay,LOW); delay(interval); } |
Далее приведен полный текст программы – он тоже достаточно прост.
Arduino
#define relay A0
#define interval 1000
void setup() {
pinMode(relay, OUTPUT);
}
void loop()
{
digitalWrite(relay, HIGH);
delay(interval);
digitalWrite(relay, LOW);
delay(interval);
}
1 |
#define relay A0 voidsetup(){ pinMode(relay,OUTPUT); } voidloop() { digitalWrite(relay,HIGH); delay(interval); digitalWrite(relay,LOW); delay(interval); } |
Примеры симисторов
Примеры симисторов приведены в таблице ниже. Здесь — ток удержания,
— максимальный ток, — максимальное напряжение,
— отпирающий ток.
Модель | ||||
---|---|---|---|---|
BT134-600D | 10 мА | 4 А | 600 В | 5 мА |
MAC97A8 | 10 мА | 0,6 А | 600 В | 5 мА |
Z0607 | 5 мА | 0,8 А | 600 В | 5 мА |
BTA06-600C | 25 мА | 6 А | 600 В | 50 мА |
Реле
С точки зрения микроконтроллера, реле само является мощной нагрузкой,
причём индуктивной. Поэтому для включения или выключения реле нужно
использовать, например, транзисторный ключ. Схема подключения и также
улучшение этой схемы было рассмотрено ранее.
Реле подкупают своей простотой и эффективностью. Например, реле
HLS8-22F-5VDC — управляется напряжением 5 В и способно коммутировать
нагрузку, потребляющую ток до 15 А.
Главное преимущество реле — простота использования — омрачается
несколькими недостатками:
- это механический прибор и контакты могу загрязниться или даже привариться друг к другу,
- меньшая скорость переключения,
- сравнительно большие токи для переключения,
- контакты щёлкают.
Часть этих недостатков устранена в так называемых твердотельных
реле. Это,
фактически, полупроводниковые приборы с гальванической развязкой,
содержащие внутри полноценную схему мощного ключа.
Заключение
Таким образом, в арсенале у нас достаточно способов управления
нагрузкой, чтобы решить практически любую задачу, которая может
возникнуть перед радиолюбителем.
Полезные источники
- Хоровиц П., Хилл У. Искусство схемотехники. Том 1. — М.: Мир, 1993.
- Управление мощной нагрузкой переменного тока
- Управление мощной нагрузкой постоянного тока. Часть 1
- Управление мощной нагрузкой постоянного тока. Часть 2
- Управление мощной нагрузкой постоянного тока. Часть 3
- Щелкаем реле правильно: коммутация мощных нагрузок
- Управление мощной нагрузкой переменного тока
- Управление MOSFET-ами #1
- Современные высоковольтные драйверы MOSFET- и IGBT-транзисторов
- Ключ на плечо! – особенности применения высоковольтных драйверов производства IR
Светодиодные ленты
Светодиодная лента представляет собой цепь соединённых светодиодов. Соединены они не просто так, например обычная 12V лента состоит из сегментов по 3 светодиода в каждом. Сегменты соединены между собой параллельно, то есть на каждый приходят общие 12 Вольт. Внутри сегмента светодиоды соединены последовательно, а ток на них ограничивается общим резистором (могут стоять два для более эффективного теплоотвода):
Таким образом достаточно просто подать 12V от источника напряжения на ленту и она будет светиться. За простоту и удобство приходится платить эффективностью. Простая математика: три белых светодиода, каждому нужно по
3.2V, суммарно это 9.6V. Подключаем ленту к 12V и понимаем, что 2.5V у нас просто уходят в тепло на резисторах. И это в лучшем случае, если резистор подобран так, чтобы светодиод горел на полную яркость.
Подключаем к Arduino
Здесь всё очень просто: смотрите предыдущий урок по управлению нагрузкой постоянного тока. Управлять можно через реле, транзистор или твердотельное реле. Нас больше всего интересует плавное управление яркостью, поэтому продублирую схему с полевым транзистором:
Подключение Mosfet к Ардуино по-хорошему
Для таких вещей люди специально придумали специальные драйверы типа этих https://voltmaster-samara.ru/catalog/drajvery-mop-i-igbt-tranzistorov
Тут уж народ издевается над МОП транзисторами как хочет
Суть в том, что драйвер нужен как раз для согласования пяти вольт с выводов ардуино (а также других микроконтроллеров) с уровнями, необходимыми для управления затворами мосфетов.
На картинке первые две схемы а) и б) не очень, так как из-за кривых рук разработчика все может задымится. Зато вторые норм.
И кстати если надо использовать ШИМ — то лучше выбрать высокоскоростной драйвер типа TC4420.
Скетч
Задача скетча описана ранее в принципах работы: сразу после включения выставить значение HIGH на цифровом выводе, в данном случае D2. После этого можно выполнять какие-либо действия: опрашивать датчики, выводить информацию и тому подобное. А когда мы решим выключить питание, изменяем состояние вывода D2 на LOW. Пример такого скетча приведён ниже. Для демонстрации его работы я добавил в схему текстовый LCD дисплей.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); #define PIN_POWERON 2 void setup() { pinMode(PIN_POWERON, OUTPUT); digitalWrite(PIN_POWERON, HIGH); lcd.begin(); lcd.print("Shutdown after"); for (uint8_t i = 3; i > ; i--) { lcd.setCursor(7, 1); lcd.print(i); delay(1000); } digitalWrite(PIN_POWERON, LOW); } void loop() { }
Принцип управления нагрузкой через Ардуино
Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.
Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете
Через аналоговый порт возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.
Синтаксис команд
Цифровой вывод:
pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных; digitalWrite(12, HIGH); — подаём на дискретный выход 12 логическую единицу, зажигая светодиод.
Аналоговый вывод:
analogOutPin = 3; – задаём порт 3 для вывода аналогового значения; analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В
Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение
Способы управления светодиодами через Ардуино
Напрямую через порт можно подключить лишь слабый светодиод, да и то лучше через ограничительный резистор. Попытка подключить более мощную нагрузку выведет его из строя.
Для более мощных нагрузок, в том числе светодиодных лент, используют электронный ключ – транзистор.
Дребезг кнопки ардуино
В процессе работы с кнопками мы можем столкнуться с очень неприятным явлением, называемым дребезгом кнопки. Как следует из самого названия, явление это обуславливается дребезгом контактов внутри кнопочного переключателя. Металлические пластины соприкасаются друг с другом не мгновенно (хоть и очень быстро для наших глаз), поэтому на короткое время в зоне контакта возникают скачки и провалы напряжения. Если мы не предусмотрим появление таких “мусорных” сигналов, то будем реагировать на них каждый раз и можем привести наш проект к хаусу.
Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:
- Добавляем в скетче паузу 10-50 миллисекунд между полкучением значений с пина ардуино.
- Если мы используем прерывания, то программный метд использоваться не может и мы формируем аппаратную защиту. Простейшая из них – RC фильтр с конденсатором и сопротивлением.
- Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера шмидта. Этот вариант позволит получить на входе в ардуино сигнал практически идеальной формы.
Более подробную информацию о способах борьбы с дребезгом вы можете найти в этой статье об устранении дребезга кнопок.
Как подключить моторчик к Arduino
Для этого занятия нам потребуется:
Перед выбором способа управления двигателем от Arduino Uno r3, уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.
Скетч. Подключение мотора напрямую
Подключение мотора к Ардуино напрямую — самый простой вариант включения вентилятора на Arduino или машинки. Команда для включения двигателя не отличается, от команды при подключении светодиода к микроконтроллеру. Функция digitalWrite включает/выключает подачу напряжения на цифровой порт, к которому подключен двигатель постоянного тока. Соберите схему и загрузите программу.
Пояснения к коду:
Скетч. Подключение мотора через транзистор
Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.
Подключение FA-130 мотора постоянного тока — Motor DC Arduino
Пояснения к коду:
Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино. В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.
Рулим 220 вольтами с помощью мосфета
Мосфетом не совсем удобно рулить 220 вольтами. Ну всяким извращенцам это нравится Вот пример схемы:
Эта схема диммера для лампочек, с помощью ШИМ можно менять яркость. Подробнее тут https://www.learningelectronics.net/circuits/dimmer-with-mosfet.html
А для нормального управления нагрузкой в 220 вольт вместо мосфетов можно использовать:
- симисторы типа bt131. Если нужна плавная регулировка света, то нужно делать что-то вроде этого:
Вкратце из за того, что напряжение переменное, надо будет с помощью прерывания отлавливать момент когда лучше всего открыть симистор, и сделать из обычной фазы что-то вроде этого:
Подробнее тут https://www.cyber-place.ru/showthread.php?t=525
- транзисторы дарлингтона
- КР1182ПМ1 (не особо надежно, по отзывам дохнут они)
Биполярный транзистор: внешний вид, составные элементы, конструкция корпуса — кратко
Сразу стоит определиться, что биполярный транзистор (bipolar transistor) создан для работы в цепях постоянного тока, где и используется. Сократим его название до БТ.
На фотографии ниже показал насколько разнообразные формы он имеет. А ведь этот небольшой ассортимент мной высыпан из одной маленькой коробочки.
Транзисторный корпус может быть изготовлен из пластмассы или металла в виде параллелепипеда, цилиндра, таблетки различной величины. Общими элементами являются три контактных штыря, созданные для подключения к электрической схеме.
Эти выводы необходимо различать в технической документации, правильно подключать при монтаже. Поэтому их назвали:
- Э (E) — эмиттер;
- К (C) — коллектор;
- Б (B) — база.
Буквы в скобках используются в международной документации.
Основной метод соединения БТ в электрических схемах — пайка, хотя допускаются и другие.
Габариты корпуса и контактных выводов зависят от мощности, которую способен коммутировать этот модуль. Чем выше проектная нагрузка, тем большие размеры вынуждены создавать производители для обеспечения надежной работы и отвода опасного тепла.
Общеизвестно, что полупроводниковые переходы не способны выдерживать высокий нагрев — они банально перегорают. Поэтому все мощные корпуса выполняются из металла и снабжаются теплоотводящими радиаторами.
В особо ответственных узлах для них дополнительно создается принудительный обдув струями воздуха. Этим приемом значительно повышается надежность работы системных блоков компьютеров, ноутбуков, сложной электронной техники.
Любой БТ состоит из трех полупроводниковых переходов p и n типа, как обычный диод. Только у диода их меньше: всего два. Он способен пропускать ток всего в одну сторону, а в противоположную — блокирует.
Bipolar transistor создается по одной из двух схем соединения полупроводниковых элементов:
- p-n-p, называемую прямым включением;
- n-p-n — обратным.
При обозначении на схемах их рисуют одинаково, но с небольшими отличиями вывода эмиттера:
- прямое направление: стрелка нацелена на базу;
- обратное — стрелка показывается выходом из базы наружу элемента.
Указатель стрелки эмиттера показывает положительное направление тока через полупроводниковый переход.
NPN mosfet подключение к arduino
Тут все без гемора. Вот пара вариантов подключения:
Если надо еще и плавно включать/выключать лампочку, либо не на всю мощность, а только на половину например, можно из ардуино пищать шимом, а между затвором и истоком включить еще конденсатор микрофарад на 300. Это нужно чтобы открыть мосфет на половину.. Однако это подойдет только для маломощной лампочки, потому как полуоткрытый мосфет имеет некислое внутреннее сопротивление и греется как утюг.
В эту схему подойдет к примеру мосфет h6n03l. Но тут есть нюанс в выборе резюков. Тот, который между ардуино и gate – чем больше сопротивление, тем меньше ток на ноге ардуино и меньше вероятность что она задымится. И чем больше сопротивление тем медленнее открывается мосфет. Кароч 150 ом норм для ардуино (по закону ома I = E / R, I = 5 / 150 = 0.033 А — это 33 миллиампера, норм). Зачем он вообще нужен? Дело в том, что затвор (gate) у полевика имеет определенную емкость и является в какой-то мере конденсатором. Так что в момент переключения через затвор проходят большие токи, которые может не выдержать ардуина. Для этого и нужен резистор между gate и пином.
А второй 10 кОм типа подтягивающий резистор – нужен чтобы держать мосфет закрытым и нагрузку выключенной пока порт ардуины в неопределенном состоянии например при загрузке (так называемое Z-состояние).
Но у этой схемы есть косяк – она медленновата. На переключение уйдет 600ns что подходит не для всех задач. Вот фронт и спад.
Желтая – выход с мосфета, зелено-бирюзово-светло-голубая – выход с ШИМ ардуино. Желтая не успевает. Для решения этой проблемы надо поставить парочку транзисторов как тут предлагают https://joost.damad.be/2012/09/dimming-12v-led-strip-with-mosfet-and.html
Но это нужно далеко не всегда и как правило достаточно первой схемы. И кстати есть вариант получше — про него в конце статьи.
Интересные проекты на базе МК Arduino
На Ардуино уже создано тысячи проектов, а многие инженеры ведут собственные блоги или каналы на YouTube, где вы можете ознакомиться с их творчеством. Из интересных идей, стоит отметить следующие:
- Умный дом. Практически каждый элемент умного дома можно создать собственными руками. От автоматических штор и дверей до сигнализаций и регулируемого освещения.
- Кодовые замки. Проект простой, и подойдёт для новичков. Достаточно использовать любой датчик и сделать замки, реагирующие на определённый ритм постукиваний или же на приближение вашего смартфона.
- Автоматизированные теплицы.
Проектов на деле в тысячи раз больше, вам остаётся лишь подключить свою фантазию, а инструментарием послужит Ардуино.
Важные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)