Управление моторами постоянного тока (до 10А) с использованием 4 relay module и двух мосфетов IRF3205

16.02.2017
By

Лень и бедность обычно двигают людьми, изобретающими новые решения. Представим Вам модернизацию проекта управления двигателями с использованием дешевого китайского модуля из четырех реле и одного мосфета (IRF3205) - сейчас скоростью вращения каждого мотора мы будем управлять раздельно с использованием ШИМа (причем чем меньше значение ШИМ (от 0 до 255), тем меньше скорость). Использовать будем следующую принципиальную схему:

 

Собранная схема рассчитана для использования с моторами от дрелей, стеклоподъемников. Оптопара 4N35 рассчитана на напряжение до 30 вольт, IRF3205 – до 55 вольт и 100 ампер. Развязка arduino черех оптопару повышает шансы сохранить arduino при возникновении какого либо ЧП с силовой частью.

 

Схема разводки и монтажа:

Схема bmp (размер 74 на 50 мм):

Программа для Arduino:

#define REL1 10

#define REL2 9

#define REL3 8

#define REL4 7

#define PWM_pin1 6

#define PWM_pin2 5

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_pin1 и PWM_pin2 можно подавать ШИМ в диапазоне 255(номинал напряжения батареи, питающей моторы) до 0(нет напряжения)
  pinMode(PWM_pin1,OUTPUT);
   pinMode(PWM_pin2,OUTPUT);
  analogWrite(PWM_pin1,0); // моторы не работают
  analogWrite(PWM_pin2,0); // моторы не работают
 }
void loop()
{
analogWrite(PWM_pin1,125); //половина от номинала батареи примерно
analogWrite(PWM_pin2,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_pin1 и PWM_pin2 - номера ШИМ пинов ардуино.
не забудьте минус батареи соединить с землей Arduino!
Итак о лени и бедности:
IRF3205 - примерно 40 рублей штука
4N35 - примерно 10 рублей штука
резисторы и диоды по 3 рубля в розницу,
навесные элементы и плата - 100 рублей оценочно...
модуль реле - 300 если покупать в России и 100 рублей в Китае.
Итог - цена такого драйвера двигателя - примерно от 300 до 500 рублей... дешевле найти трудно!

 

 

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