极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11987|回复: 4

履带精灵2号----继续准备:WEMOS D1+L6205电机驱动 带编码器测试

[复制链接]
发表于 2017-2-23 22:20:56 | 显示全部楼层 |阅读模式

上次已经做过GAMA标准搭配的电机板驱动测试了,今次把主控换成WEMOS D1,
上次也提到 328是5V的,不过8266就是3.3V,那么我信号的升压电路要肿么搞呢?



大概就这个样子,电路不复杂,面包板插几下就可以测试了。

如果要深入研究的话,可以理清那几个电阻和电压之间的关系:R2和R3的比例会影响低电平时的电压,R2和负载之间的比例影响高电平电压。
而且这样会令信号反转...听起来有点小复杂

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2017-2-23 22:24:49 | 显示全部楼层





接线比上次更加凌乱了,接下来说点简单的,程序代码如下

  1. //wemos d1 + L6205 电机控制和中断测试


  2. int p_led = 4;                //对应针脚GPIO4   接LED

  3. int p_a_fx =14; //A机方向   14->12
  4. int p_a_dl =13;   //A机动力    13->3
  5. int p_a_zd =12;   //A机的制动  12->9

  6. int p_ai =5;                 //对应针脚GPIO5   接中断信号

  7. volatile unsigned int r;

  8. void setup() {

  9. Serial.begin(115200);
  10.   //delay(10);
  11.   
  12.   pinMode(p_led, OUTPUT);
  13.   digitalWrite(p_led, 0);

  14. //启用电机A的三个管脚,全部设置为输出状态  
  15.   pinMode(p_a_fx,OUTPUT); //A机方向
  16.   digitalWrite(p_a_fx, 0);
  17.   pinMode(p_a_dl,OUTPUT); //A机动力
  18.   digitalWrite(p_a_dl, 0);
  19.   pinMode(p_a_zd,OUTPUT); //A机的制动
  20.   digitalWrite(p_a_zd, 0);

  21.   pinMode(p_ai,INPUT); //中断针脚 定义为输入模式
  22.   
  23.   analogWriteRange(1023);    //PWM取值范围
  24.   
  25.   attachInterrupt(p_ai, blink, CHANGE);  //中断信号
  26. //attachInterrupt(p_ai, blink, FALLING);  //中断信号

  27. }

  28. void loop() {
  29.   digitalWrite(p_led, 1);
  30.   r=0;

  31.   //A机状态 运行 正向
  32.   digitalWrite(p_a_zd, 0);       //松开电机A的制动
  33.   digitalWrite(p_a_fx, 1);     //设置方向为正向
  34.   //A机动力
  35.   analogWrite(p_a_dl,1000);

  36.   delay(3000);


  37.   //A机状态 停止
  38.   analogWrite(p_a_dl,0); //A机动力
  39.   digitalWrite(p_a_zd, 1);       //电机A的制动


  40.   digitalWrite(p_led, 0);
  41.   Serial.println(r);  
  42.   delay(5000);


  43.   r=0;
  44.   //A机状态 运行 逆向
  45.   digitalWrite(p_a_zd, 0);       //松开电机A的制动
  46.   digitalWrite(p_a_fx, 0);     //设置方向为反向
  47.   //A机动力
  48.   analogWrite(p_a_dl,600);

  49.   delay(3000);

  50.   //A机状态 停止
  51.   analogWrite(p_a_dl,0);  //A机动力
  52.   digitalWrite(p_a_zd, 1);       //电机A的制动
  53.   
  54.   
  55.   Serial.println(r);  
  56.   delay(5000);  
  57. }

  58. void blink()
  59. {
  60.   if (r<65535)
  61.    { r = r+1; }
  62. else
  63.     { r=0; }   
  64. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-23 22:29:12 | 显示全部楼层

转啊转继续转



然后这时计算器的结果



那么,下一步,我想我应该把比较器做成是双路的...

SORRY,兔总,让你浪费了一些板子了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2017-2-24 13:12:45 | 显示全部楼层
阿大啊,直接控制直流12V有刷电机,简单的H桥能控制么,得不得加点保护电路?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-24 18:01:12 | 显示全部楼层
OC 的 L6205电机驱动板是光耦全隔离的,不过这个板子需要>=3.5v的高电平信号,这里的升压电路是提升信号电压的
真正驱动电机的12电源被驱动板完全隔离开了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-19 12:38 , Processed in 0.042462 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表