履带精灵2号----继续准备:WEMOS D1+L6205电机驱动 带编码器测试
上次已经做过GAMA标准搭配的电机板驱动测试了,今次把主控换成WEMOS D1,
上次也提到 328是5V的,不过8266就是3.3V,那么我信号的升压电路要肿么搞呢?
大概就这个样子,电路不复杂,面包板插几下就可以测试了。
如果要深入研究的话,可以理清那几个电阻和电压之间的关系:R2和R3的比例会影响低电平时的电压,R2和负载之间的比例影响高电平电压。
而且这样会令信号反转...听起来有点小复杂
接线比上次更加凌乱了,接下来说点简单的,程序代码如下
//wemos d1 + L6205 电机控制和中断测试
int p_led = 4; //对应针脚GPIO4 接LED
int p_a_fx =14; //A机方向 14->12
int p_a_dl =13; //A机动力 13->3
int p_a_zd =12; //A机的制动12->9
int p_ai =5; //对应针脚GPIO5 接中断信号
volatile unsigned int r;
void setup() {
Serial.begin(115200);
//delay(10);
pinMode(p_led, OUTPUT);
digitalWrite(p_led, 0);
//启用电机A的三个管脚,全部设置为输出状态
pinMode(p_a_fx,OUTPUT); //A机方向
digitalWrite(p_a_fx, 0);
pinMode(p_a_dl,OUTPUT); //A机动力
digitalWrite(p_a_dl, 0);
pinMode(p_a_zd,OUTPUT); //A机的制动
digitalWrite(p_a_zd, 0);
pinMode(p_ai,INPUT); //中断针脚 定义为输入模式
analogWriteRange(1023); //PWM取值范围
attachInterrupt(p_ai, blink, CHANGE);//中断信号
//attachInterrupt(p_ai, blink, FALLING);//中断信号
}
void loop() {
digitalWrite(p_led, 1);
r=0;
//A机状态 运行 正向
digitalWrite(p_a_zd, 0); //松开电机A的制动
digitalWrite(p_a_fx, 1); //设置方向为正向
//A机动力
analogWrite(p_a_dl,1000);
delay(3000);
//A机状态 停止
analogWrite(p_a_dl,0); //A机动力
digitalWrite(p_a_zd, 1); //电机A的制动
digitalWrite(p_led, 0);
Serial.println(r);
delay(5000);
r=0;
//A机状态 运行 逆向
digitalWrite(p_a_zd, 0); //松开电机A的制动
digitalWrite(p_a_fx, 0); //设置方向为反向
//A机动力
analogWrite(p_a_dl,600);
delay(3000);
//A机状态 停止
analogWrite(p_a_dl,0);//A机动力
digitalWrite(p_a_zd, 1); //电机A的制动
Serial.println(r);
delay(5000);
}
void blink()
{
if (r<65535)
{ r = r+1; }
else
{ r=0; }
}
转啊转继续转
http://player.youku.com/player.php/sid/XMjUyNzM1MzY2NA==/v.swf
然后这时计算器的结果
那么,下一步,我想我应该把比较器做成是双路的...
SORRY,兔总,让你浪费了一些板子了 阿大啊,直接控制直流12V有刷电机,简单的H桥能控制么,得不得加点保护电路? OC 的 L6205电机驱动板是光耦全隔离的,不过这个板子需要>=3.5v的高电平信号,这里的升压电路是提升信号电压的
真正驱动电机的12电源被驱动板完全隔离开了
页:
[1]