L9110S_FOUR 四路电机驱动模块
此模块某宝大约6元,可以同时驱动4个直流电机,或者2个4线2相式步进电机
模块供电电压:2.5-12V
引脚 | 说明 |
---|
+ ,- | 电源供电 接电源正负极,输入2.5~12V | A1 ,A2 ;B1 , B2 ;C1 ,C2 ;D1 ,D2 | 字母相同两个为一组,接MCU的pwm。通过两个引脚输入的高低,控制正反转和速度 | MOTORA,MOTORB,MOTORC,MOTORD | 各接一个马达正负极 |
接线
控制单个直流电机接线大致如下(虽然这是流程图画的):
L9110S_FOUR
MCU
电源
共地
PWM引脚
PWM引脚
+
-
A1
A2
MOTORA
GND
io1
io2
-
+
M
本人使用的MCU为WEMOS D1 R1 基于ESP8266 某宝约12元。
开发
- 使用arduino IDE开发选择esp8266里面的wemos d1 r1即可。
设置上载的波特率 115200。
wemos d1 r1一个脚输出0另一个不输出和反而电压高,当设置为OUTPUT之后,其实已经是高电平了,当输出40时,反而使得速度小幅度降低。可以看作1024 - 40 。
如果使用arduino uno开发板使用以下代码,需要修改引脚,如 改成 5和6 ,可能不需要在切换方向时修改pinMode,在setup时,一次性设置为OUTPUT即可。需要适当把analogWrite输出值调大。控制方向只需要一个输出较高的值一个输出0即可。
代码如下:
#include <Arduino.h>
void change(boolean forward) {
if (forward) {
pinMode(D3, INPUT);
pinMode(D2, OUTPUT);
analogWrite(D2, 40);
} else {
pinMode(D2, INPUT);
pinMode(D3, OUTPUT);
analogWrite(D3, 40);
}
}
void setup() {
Serial.begin(115200);
change(true);
}
void loop() {
if (Serial.available()) {
String op = Serial.readStringUntil('\n');
op.trim();
bool dr = op.equals("1") ? true : false;
Serial.println(dr);
change(dr);
}
delay(3000);
}
|