tip120

Со временем каждый пользователь Arduino задумывается об управлении не только светодиодами и устройствами с напряжением до 5 вольт, но и об управлении соленоидами, моторами, светодиодными лентами и т.д., которые используют 12 и больше вольт. В этой статье будет рассмотрено как можно работать с высоким напряжением с использованием MOSFET и ардуино.

В этой статье будет рассматриваться MOSFET транзистор — металл-оксид-полупроводник полевой транзистор, в частности RFP30N06LE, но так же можно работать и с другими. Начнём с того, что MOSFET это транзистор, но особого типа.

Транзисторы имеют 3 вывода, которые имеют 2 простые функции, первая — переключение, вторая — усиление (в данном примере рассматривается первая функция — переключатель). Выходы называется следующим образом: Вход (Источник), он же Source, Выход (Сток) — Drain, и Управление (Ворота, Затвор) — Gate. При отправке сигнала высокого уровня к Gate (управляющий вывод), транзистор включается и позволяет току течь от источника (Source) к стоку (Drain).

Таким образом, мы подключим наш мотор, соленоид или лампу к V +, но не к земле (V-). Землю мы подключаем к стоку (Drain) транзистора. Когда наш Arduino посылает сигнал высокого уровня на Gate транзистора, он переключает транзистор (соединяет Source и Drain) и замыкает цепь для двигателя, соленоида, или лампы.

**Подключаем мотор к Arduino (схема 1)**

arduino-motor

**Подключаем соленоид к Arduino (схема 2)**

arduino-solenoid

**Подключаем ламу к Arduino (схема 3)**

arduino-lightbulb

Подключение / Зачем диод используется?

Эта схема довольно проста. Единственная часть, которая вызывает вопросы — использование стягивающего резистора (Pull down)Резистор удерживает низкий уровень на Gate, когда Arduino не посылает сигнал высокого уровня. Дело в том, что если плохие провода, например, сигнал может плавать, и когда Arduino не посылает сигнал, остаточное напряжение может оставаться и транзистор может самопроизвольно включаться. Резистор же стягивает остаточное напряжение к земле.

Так же на схемах 1 и 2 вы можете заметить диод. При подключении устройства с катушкой (Coil), будь то реле, соленоид или мотор всегда используйте диод. Что будет если мы его не будем использовать? Когда вы перестаёте питать катушку обратное напряжение, бывает до нескольких сотен вольт, направляется обратно. Это длится всего несколько микросекунд, но этого достаточно, чтобы убить наш MOSFET. Так что этот диод позволяет току проходить в одну сторону, как правило, в неправильной ориентации и ничего не делает. Но когда происходит скачок напряжения ток течет в противоположном направлении, диод позволяет ему течь обратно на спираль, а не на транзистор . Нам понадобится диод достаточно быстро реагирующий на отдачу, и достаточно сильный, чтобы взять на себя нагрузку. Нам подойдут диоды  1N4001 или SB560. Если вам нужна дополнительная защита, то можно использовать оптоизолятор между Arduino и транзистором. Оптоизолятор изолирует обе стороны цепи, и высокое напряжение  не сможет вернуться в микроконтроллер, и не убьёт его.

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

Недостатки / Ограничения

Транзисторы, такие как RFP30N06LE подходят для управления мощных устройств с вашего Arduino, но у них есть некоторые ограничения. Это текущая конфигурация имеет смысл только для переключения DC ток, так что не пытайтесь это с AC источником, а также MOSFET-транзисторы имеют ограничения, такие как напряжение и силу тока. RFP30N06LE может обрабатывать переключения до 60В, а сила тока ограничена 30А (с радиатором и правильным подключением), так же крайне важно использовать теплоотвод при силе тока более нескольких ампер, так как в таком случае при работе транзистора выделяется достаточно большое количество тепла. Обычно можно просто припаять изогнутый кусочек металла на к спинке, просто чтобы рассеять тепло. Обратите внимание, что при использовании нескольких транзисторов не припаивайте к общему радиатору, используйте на каждый транзистор отдельный радиатор, так как у этих транзисторов спинка соединена с Выходом (Drain)! Это важно. Так же хочу отметить, что для AC тока лучше используйте реле.

Fade it / Используем ШИМ

Вы знаете, на Arduino есть PWM (ШИМ) выходы, почему бы нам ими не воспользоваться? Да, PWM — это то, что позволяет использовать analogWrite (PIN, значение). PWM на самом деле не аналоговый выход. Arduino действительно пульсирует (очень быстро) от 0 до 5V так что среднее напряжение находится где-то между 0 и 5в. Мы можем подключить к PWM выходу наш транзистор и управлять яркостью света, скоростью мотора и т.д. так, как будто мы подключили их напрямую к Arduino. Для этого нужно просто убедиться, что транзистор подключен к PWM выходу Arduino.

Код / Скетч для Arduino

Вам вряд ли пригодится этот код, вы просто отправить сигнал высокого уровня к Gate и БАМ… Оно работает.  Но я набросал код для вас, поэтому вы можете потестировать его с использованием ШИМ, как это выглядит показано на видео ниже. (Имеет смысл только для двигателя или лампочки, не для соленоида).

//////////////////////////////////////////////////////////////////
//Released under the MIT License - Please reuse change and share
//Simple code to output a PWM sine wave signal on pin 9
//////////////////////////////////////////////////////////////////

#define fadePin 3

void setup(){
  pinMode(fadePin, OUTPUT);  
}

void loop(){
  for(int i = 0; i<360; i++){
    //convert 0-360 angle to radian (needed for sin function)
    float rad = DEG_TO_RAD * i;

    //calculate sin of angle as number between 0 and 255
    int sinOut = constrain((sin(rad) * 128) + 128, 0, 255); 

    analogWrite(fadePin, sinOut);

    delay(15);
  }
}

Видео

Это видео показывает возможности PWM с RFP30N06LE. Лампочка, хотя это выглядит как стандартная лампа накаливания 220 воль, на самом деле 15W 12V DC лампочка.

Комментарии

comments powered by Disqus