Лень и бедность обычно двигают людьми, изобретающими новые решения. Представим Вам модернизацию проекта управления двигателями с использованием дешевого китайского модуля из четырех реле и одного мосфета (IRF3205) - сейчас скоростью вращения каждого мотора мы будем управлять раздельно с использованием ШИМа (причем чем меньше значение ШИМ (от 0 до 255), тем меньше скорость). Использовать будем следующую принципиальную схему:
Собранная схема рассчитана для использования с моторами от дрелей, стеклоподъемников. Оптопара 4N35 рассчитана на напряжение до 30 вольт, IRF3205 – до 55 вольт и 100 ампер. Развязка arduino черех оптопару повышает шансы сохранить arduino при возникновении какого либо ЧП с силовой частью.
Схема разводки и монтажа:
Схема bmp (размер 74 на 50 мм):
#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 рублей... дешевле найти трудно!