Управление скоростью и направлением вращения электродвигателя с помощью Arduino, реле и MOSFET

В этом проекте мы рассмотрим управление направлением и скоростью вращения электродвигателя постоянного тока (24v) с помощью платы Arduino, двух реле и MOSFET транзистора. Никаких переключателей питания для этого проекта не потребуется, будут нужны две обычные кнопки и потенциометр для управления направлением и скоростью вращения двигателя. При нажатии одной из кнопок двигатель будет вращаться по часовой стрелке, а при нажатии другой – против часовой стрелки. MOSFET транзистор с каналом n-типа необходим для управления скоростью вращения двигателя. Реле используются для переключения направления вращения двигателя. В данном случае они похожи на мост H-типа.

Внешний вид проекта управления скоростью и направлением вращения электродвигателя с помощью Arduino, реле и MOSFET

Необходимые компоненты

  1. Плата Arduino Uno.
  2. Два реле на 12v (реле на 5v тоже могут быть использованы).
  3. Два транзистора BC547.
  4. Две кнопки.
  5. IRF540N.
  6. Резистор 10 кОм.
  7. Источник питания на 24 В.
  8. Потенциометр 10 кОм.
  9. Три диода 1N4007.
  10. Соединительные провода.

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема проекта управления скоростью и направлением вращения электродвигателя с помощью Arduino, реле и MOSFETВ схеме необходимо сделать следующие соединения:

  • подсоединить нормально замкнутые выводы обоих реле к положительному выводу батареи;
  • подсоединить нормально разомкнутые выводы обоих реле к стоку MOSFET транзистора;
  • подсоединить исток MOSFET транзистора к отрицательному выводу батареи и к земле платы Arduino UNO;
  • затвор MOSFET транзистора подключить к контакту 6 платы Arduino (на этом контакте возможно формирование ШИМ сигнала);
  • подсоединить резистор 10 кОм между затвором и истоком MOSFET транзистора, а также подсоединить диод 1N4007 между истоком и стоком MOSFET транзистора;
  • подсоединить двигатель между средними выводами реле;
  • один из оставшихся выводов реле (для каждого реле) подключить к контакту Vin платы Arduino, а другой – к коллектору транзистора;
  • подсоединить эмиттеры обоих транзисторов к контакту GND (земля) платы Arduino;
  • контакты 2 и 3 платы Arduino подключить к кнопкам, вторые концы кнопок подключить к базе транзисторов;
  • подключить диоды параллельно выводам реле как показано на схеме;
  • оконечные контакты потенциометра подсоединить к контактам 5v и Gnd платы Arduino, а средний контакт потенциометра – к контакту A0.

Если батареи на 24 В у вас нет, то можно последовательно соединить две батареи на 12 В.

Внешний вид реле в нашем проекте Внешний вид MOSFET транзистора в нашем проекте

Функции транзисторов

Цифровые контакты платы Arduino не могут обеспечить достаточный ток для срабатывания реле на 5v. К тому же мы используем реле на 12v. Контакт Vin платы Arduino не может обеспечить достаточный ток для обоих реле. Поэтому транзисторы используются для «доставки» тока от контакта Vin платы Arduino к реле. Транзисторы управляются с помощью кнопок, один вывод которых подключен к их базе, а другой – к цифровому контакту платы Arduino

Функции платы Arduino

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

Функции MOSFET

MOSFET транзистор используется для управления скоростью вращения двигателя. Он включается и выключается (открывается и закрывается) с высокой частотой, поэтому и двигатель, соединённый последовательно со стоком MOSFET, управляется данной ШИМ (широтно-импульсной модуляцией). Чем больше коэффициент заполнения ШИМ, тем выше скорость вращения двигателя. Более подробно о подобном механизме управления с помощью ШИМ и MOSFET транзистора можно прочитать в статье про понижающий преобразователь напряжения постоянного тока на Arduino.

Расчеты тока

  • сопротивление катушки реле, измеренное нами с помощью мультиметра, составило примерно 400 Ом;
  • контакт Vin платы Arduino обеспечивает 12v;
  • поэтому получаем ток, необходимый для переключения реле равный 12/400 = 30 mA;
  • если энергия подается на оба реле, то получаем ток 30*2=60 mA;
  • контакт Vin платы Arduino рассчитан на максимальный ток 200mA, поэтому проблем с обеспечением тока возникнуть не должно.

Работа проекта

На контакты 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.

Исходный код программы

Код программы для рассмотренного двунаправленного двигателя постоянного тока с изменяемой скоростью вращения достаточно простой. Я думаю, он не вызовет у вас никаких затруднений.

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
11 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *