Управляем моторами с использованием модуля из 4 реле и мосфета

19.09.2016
By

Драйверы двигателей, рассчитанные на высокую нагрузку не очень дешевы. Поэтому попробовали собрать очень бюджетный модуль управления двигателями с использованием дешевых компонентов – модуля реле (4 реле) и мосфета. Получилось. Об этом пост.

такой модуль достаточно распространен, дешев ( около 250 рублей в России), рассчитан на 10Ампер.

А вот такая схема управления нагрузкой с использованием достаточно мощного транзистора IRF3205 и транзистора управления (на его месте может быть любой подобный. При отсутствии сигнала на входе IRF3205 всегда открыт. при наличии высокого уровня сигнала IRF3205 закрыт. управляющий сигнал может быть ШИМ для плавного управления оборотами двигателей на месте нагрузки.

Вот такая колхозная схема получилась – но абсолютно рабочая :)

Очень важно! программно включать реле так, чтобы не произошло короткого замыкания.

в частности написать процедуры, которые будут управлять реле и переключать их симметрично:

void setup()
{
  pinMode(REL1,OUTPUT);
  pinMode(REL2,OUTPUT);
  pinMode(REL3,OUTPUT);
  pinMode(REL4,OUTPUT);
  //подаем низкий сигнал на моторы на всякий случай
  digitalWrite(REL1,LOW);
  digitalWrite(REL2,LOW);
  digitalWrite(REL3,LOW);
  digitalWrite(REL4,LOW);
  // на PWM_pin можно подавать ШИМ от 0(номинал напряжения батареи, питающей моторы) до 255(нет напряжения)
  pinMode(PWM_pin,OUTPUT);
  analogWrite(7,255); // моторы не работают
 }
void loop()
{
analogWrite(PWM_pin,125); //половина от номинала батареи примерно
motor_forward();
delay(1000);
motor_break();
delay(2000);
}
void motor_forward(){
digitalWrite(REL1,HIGH);
digitalWrite(REL2,LOW);
digitalWrite(REL3,LOW);
digitalWrite(REL4,HIGH);
}  

void motor_back(){
digitalWrite(REL1,LOW);
digitalWrite(REL2,HIGH);
digitalWrite(REL3,HIGH);
digitalWrite(REL4,LOW);
}  

void motor_break(){
digitalWrite(REL1,LOW);
digitalWrite(REL2,LOW);
digitalWrite(REL3,LOW);
digitalWrite(REL4,LOW);
}

void motor_left(){
digitalWrite(REL1,LOW);
digitalWrite(REL2,HIGH);
digitalWrite(REL3,LOW);
digitalWrite(REL4,HIGH);
}

void motor_right(){
digitalWrite(REL1,HIGH);
digitalWrite(REL2,LOW);
digitalWrite(REL3,HIGH);
digitalWrite(REL4,LOW);
}
соответственно REL1-REL4 - номера цифровыз пинов ардуино, PWM_pin - номер ШИМ пина ардуино.
не забудьте минус батареи соединить с землей Arduino!
 Цена такого драйвера двигателя - примерно 300 рублей... дешевле найти трудно!

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