Подключение модуля транзистора к Ардуино

В отличии от модуля твердотельного реле SSR, данное устройство поддерживает ШИМ модуляцию и может быть использовано для плавного пуска двигателей постоянного тока или изменения яркости свечения светодиодной LED ленты. При подаче напряжения 5 Вольт на управляющий контакт от Arduino, MOSFET модуль открывается и подаёт питание от 0 до 24 Вольт с силой тока до 5 Ампер на нагрузку.
Схема подключения модуля транзистора размещена далее, отметим, что максимально подаваемый ток нагрузки равен 5 Ампер, но при нагрузке в 1 Ампер следует выполнить принудительное охлаждение модуля для защиты от перегрева и выхода из строя полевого транзистора. Открытие модуля (включение цепи с мотором или другим устройством) происходит, когда на вход поступает напряжение более 3,4 Вольт.
Как подключить MOSFET модуль к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- модуль транзистора IRF520N;
- мотор постоянного тока до 24 В;
- источник питания до 24 В;
- потенциометр;
- макетная плата;
- провода «папа-мама».

Управление мотором через модуль производится от выхода поддерживающего PWM модуляцию, для плавного набора оборотов двигателем. При этом шилд на базе IRF520 не способен выполнить реверс вращения, для этих целей необходимо использовать драйвер двигателя на основе L298N. Соберите схему, как изображено на картинке и загрузите следующий код для плавного включения / выключения мотора.
Скетч. Ардуино и модуль IRF520 транзистора
#define MOT 9 void setup() < pinMode(MOT, OUTPUT); > void loop() < // плавное включение for(int i=0; ianalogWrite(MOT, i); delay(5); > //плавное выключение for(int i=255; i>=0; i--) < analogWrite(MOT, i); delay(5); > >
Пояснения к коду:
- для плавного включения / выключения мотора используется цикл for;
- этот же код использовался для плавного мигания светодиодом от Ардуино.

В следующем примере управление драйвером на базе IRF520N производится с помощью потенциометра (переменного резистора). Представленные в этом обзоре программы подходят для любого модуля с транзистором, отличаться будет лишь схема подключения устройства. А вместо потенциометра можно использовать любой аналоговый датчик, например, датчик освещенности на фоторезисторе.
Скетч. Управление мотором от потенциометра
#define MOT 9 #define POT A1 int value; void setup() < Serial.begin(9600); pinMode(MOT, OUTPUT); pinMode(POT, INPUT); > void loop() < value = analogRead(POT); value = map(value, 0, 1023, 0, 255); Serial.println(value); analogWrite(MOT, value); >
Пояснения к коду:
- при помощи функции map Arduino, значения на входе A1 (от 0 до 1024) преобразуются в новый диапазон значений в интервале от 0 до 255;
- эта программа подойдет также для управления яркостью LED ленты.
Заключение. Данный модуль может быть полезен при создании устройств, где есть необходимость плавного пуска моторчика или точная регулировка освещения. При необходимости можно использовать полевой транзистор с Ардуино без покупки mosfet модуля, что удешевит сборку проекта и значительно уменьшит его габариты.
Как подключить транзистор к Ардуино

Подключить мотор постоянного тока напрямую к цифровым или аналоговым портам Arduino не получится. Это обусловлено тем, что пины на плате Ардуино не способны выдавать ток более 40 мА. При этом мотору постоянного тока, в зависимости от нагрузки, необходимо сотни миллиампер. Потому и возникает потребность управления электрической цепью высокого напряжения транзистором или Motor Shield L293D.

Соберите электрическую цепь, как на рисунке выше. Если присмотреться к сборке на макетной плате, то вы заметите, что транзистор играет роль кнопки. Если кнопка замыкает электрическую цепь при нажатии на толкатель, то транзистор начинает пропускать ток при подаче напряжения на базу. Таким образом, мы можем сделать автоматическое или полуавтоматическое управление мотором на Ардуино.
Управление мотором через мосфет транзистор Arduino
void setup() < pinMode(11, OUTPUT); // объявляем пин 11 как выход > void loop() < digitalWrite(11, HIGH); // зажигаем светодиод delay(2000); // ждем 2 секунды digitalWrite(11, LOW); // выключаем светодиод delay(2000); // ждем 2 секунды >
Если вы заметили, то это скетч из занятия — Включение светодиода на Ардуино. С точки зрения микропроцессора абсолютно не важно, что подключено к Pin11 — светодиод, транзистор или драйвер светодиодов для Светового меча на Ардуино. Обратите внимание на то, что резистор R1 подтягивает базу транзистора к земле, а резистор R2 служит для защиты порта микроконтроллера от перегрузки.
Управление мотором через полевой транзистор Arduino

Скетч управления двигателем постоянного тока на Ардуино можно написать по-другому. Добавим в схему фоторезистор и сделаем автоматическое включение мотора при снижении уровня освещенности в комнате. Можно также использовать датчик уровня жидкости или любой другой датчик. В скетче мы используем операторы if и else для управления (включения/выключения) нагрузки от Ардуино.
// Присваиваем имя для аналогового входа A1 #define sensor A1 // Присваиваем имя для значений аналогового входа A1 // unsigned int принимает только положительные числа unsigned int value = 0; void setup() < // Пин 11 с транзистором будет выходом (англ. «output») pinMode(11, OUTPUT); pinMode(sensor, INPUT); > void loop() < // Считываем значение с фоторезистора на аналоговом входе A1 value = analogRead(sensor); // Если значение value меньше 500, включаем транзистор if (value<500) digitalWrite(11,HIGH); // В противном случае выключаем транзистор else digitalWrite(11, LOW); >
Пояснения к коду:
- в первой строчке программы мы присвоили имя sensor для аналогового входа A1 с помощью директивы #define Arduino;
- тип данных unsigned int указывает, что значение value может принимать только положительное целое число, а начальное значение value равно нулю;
- условный оператор if позволяет определить действие при истинном условии. Оператор else позволяет определить действие, когда истинное условие ложно.
Заключение. Транзисторы являются основой для построения микросхем логики, памяти и микропроцессоров компьютеров. Транзистор — это электронный элемент из полупроводникового материала, обычно с тремя выводами, позволяющий с помощью входного сигнала управлять током высокого напряжения. Использование транзистора — это наиболее простой способ подключения к Ардуино мотора постоянного тока.
Как подключить моторчик к Ардуино

Подключение мотора постоянного тока к Ардуино (коллекторного двигателя) требуется при сборке машинки или катера на микроконтроллере Arduino. Рассмотрим различные варианты подключения двигателей постоянного тока: напрямую к плате, через биполярный транзистор, а также с использованием модуля L298N. В обзоре размещены схемы подключения и коды программ для всех перечисленных вариантов.
Управление двигателем постоянного тока Ардуино
Коллекторный моторчик может быть рассчитан на разное напряжения питания. Если двигатель работает от 3-5 Вольт, то можно моторчик подключать напрямую к плате Ардуино. Моторы для машинки с блютуз управлением, которые идут в комплекте с редукторами и колесами рассчитаны уже на 6 Вольт и более, поэтому ими следует управлять через полевой (биполярный) транзистор или через драйвер L298N.

На схеме показано устройство моторчика постоянного тока и принцип его работы. Как видите, для того, чтобы ротор двигателя начал крутиться к нему необходимо подключить питание. При смене полярности питания, ротор начнет крутиться в обратную сторону. Драйвер двигателей L298N позволяет инвертировать направление вращения мотора fa 130, поэтому его удобнее использовать в своих проектах.
Перед выбором способа управления двигателем от Arduino Uno r3, уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.
Управление и подключение мотора к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- мотор постоянного тока (Motor DC);
- транзистор полевой/биполярный;
- драйвер двигателей L298N;
- провода «папа-папа», «папа-мама».

Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.
Скетч. Подключение мотора к Arduino через транзистор
void setup() < pinMode(13, OUTPUT); // объявляем пин 13 как выход > void loop() < digitalWrite(13, HIGH); // включаем мотор delay(1000); // ждем 1 секунду digitalWrite(13, LOW); // выключаем мотор delay(1000); // ждем 1 секунду >
Пояснения к коду:
- при необходимости можно подключить два мотора FA-130 к Ардуино;
- в зависимости от характеристик, двигатель подключается к 3,3 или 5 Вольтам.
Скетч. Подключение мотора к Arduino через драйвер

Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино. В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.
// задаем имена для портов #define IN1 4 #define IN2 5 #define IN3 6 #define IN4 7 void setup() < pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); > void loop() < // вращаем моторчики в одну сторону digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); delay(2000); // ждем 2 секунды digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(1000); // выключаем на 1 секунду // вращаем моторчики в обратную сторону digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); delay(2000); // ждем 2 секунды digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(1000); // выключаем на 1 секунду >
Пояснения к коду:
- драйвер двигателей позволяет управлять скоростью и направлением вращения мотора, подробнее читайте в обзоре — Подключение драйвера L298N к Arduino;
- если моторчики не крутятся, подключите к драйверу источник питания 6-12В.
Ардуино для начинающих. Урок 9. Моторы и транзисторы

Как всегда ничего сложного. Главное не перепутать выводы транзистора. Обратите внимание на резистор через который ардуино подключена к базе. Это резистор на 1 кОм и нужен он для того что бы обезопасить нашу ардуинку. В видео к схеме добавлены диод и конденсатор, но они не обязательны. Так же можно добавить резистор на 10 — 100 кОм между эмиттером и коллектором для стабильности работы нашей схемы. Так же не забудьте, что земля на всех уровнях напряжения должна быть объединена. И взглянем на наш код:
// Обозначаем пин к которому у нас подключена база транзистора int motorPin = 9; void setup () < // Устанавливаем пин в качестве выхода pinMode (motorPin, OUTPUT); >void loop () < // Перебор значений от 0 до 255 в цикле for (int i = 0; i delay(500); for (int i = 0; i >= 0; i--) < analogWrite(motorPin, i); delay(10); >delay(500); >
Как видите скетч очень прост. По комментариям в коде вы легко разберетесь, что к чему. Единственная конструкция, которую мы еще не использовали это цикл for.
Подключение сервопривода практически ни чем не отличается от подключения моторчика. Отличие в том что у сервы 3 вывода. Плюс, минус и логический. В видео подробно об этом рассказано.
Добавим в нашу схему инфракрасный дальномер. Просто потому, что мы можем Будем задавать положение сервопривода в зависимости от показаний дальномера. Мы уже подключали дальномер, поэтому схему рисовать не буду.
Подключаем его к пину А0. Новый скетч стал еще проще:
// Подключаем библиотеку для управления сервоприводом #include Servo jeremysServo; // Пин сервопривода int servoPin = 9; // Аналоговый пин инфракрасного дальномера int distPin = 0; void setup () < // передаем пин, подключенный к логическому выводу сервопривода jeremysServo.attach(servoPin); >void loop () < // Считываем показания инфракрасного дальномера int dist = analogRead(distPin); // Преобразуем значение в пригодное для ШИМ int pos = map(dist, 0, 1023, 0, 180); // Двигаем сервопривод jeremysServo.write(pos); >
5 комментариев
- Дмитрий 2019-03-12 13:12:52
Добрый день! Что то не получается с транзистором. Взял кт815Г (что было). Эмитер соединил с землей (самая левая ножка). на землю посадил землю от бп (8V) и землю от ардуино. К коллектору (средняя ножка) присоединил лампочку одним выводом. К другому выводу лампочки присоединил + от БП 8V.
базу (крайняя правая ножка) завел на землю через резистор 10К. На базу подал 5V от ардуино через резистор 1К. И ничего….
- Shurovik 2020-01-03 15:51:19
Попробуйте для начала проверить сам транзистор, подав 5 В на базу (через резистор). Если он рабочий, то лампа загорится.
Напишите, для примера, какие транзисторы можно использовать. Или какие у них должны быть характеристики. Также неясно как подбирать резистор между эмиттером и коллектором и о какой стабильности идет речь.
Дмтрий можешь помощь, и немогу написать код с шаговым двигателем и датчиком света, немогу их вместе свезат что когда на улице светло он крутится в одну сторону ждёт пока не стемнет и крутица в другую сторону и там ждёт пока не рвсветет
Объясните пожалуйста, почему вы пишите, что необходимо провести ток от коллектора к эмиттеру, при этом к коллектору у вас подключен мотор. какой сигнал в таком случае усиливает транзистор? разве он не должен быть между питанием и мотором, то есть в роли эмиттера будет мотор?
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Железо

Стартовый набор с Arduino Mega и RFID Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.

Плата Arduino Uno R3 Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.