极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 31801|回复: 26

履带电机旋转编码器的学习报告(节日快乐)2016-09-10

[复制链接]
发表于 2016-9-7 19:33:41 | 显示全部楼层 |阅读模式
本帖最后由 wing 于 2016-9-10 22:05 编辑

近半年,某宝发现一款成品的履带电机,带编码器,成色一般,不过价格非常低廉。
如果想练手做履带小车的话是个不错的选择,看完下图之后请千万不要误会,我不是卖家。



本帖不是做广告的,本帖是讨论如何使用这种电机编码器的,内容包括:外围电路设计,如何和主控板的链接,测试程序代码,如果成功的话可能还有小车成品

当然目前还在进行中,下面的占位会逐步填满内容,希望大家喜欢

2016-09-07-----------↑↑>>首发
2016-09-08-----------00>>比较器电路设计
2016-09-09-----------01>>写了个最简单的代码,还做了手拨测试
2016-09-09中午-----02>>电池买回来了,现在可以让电机自己转起来测试了
2016-10-10-----------03>>用中断的方法进行测试,并列出一些实际测试得出的数据,最重要的是101闪亮登场

到此本次学习告一段落了,欢迎大家参观指正
要下开展一步工作目前还缺一个关键部件,我仍然还在继续热切期待中...
那么未来如果有新的进展将会另外发帖讨论

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2016-9-7 19:34:09 | 显示全部楼层
本帖最后由 wing 于 2016-9-8 10:36 编辑

占位000000

先介绍下这款电机的接线口



XH2.54-5P插口,分别是白棕蓝黑红。
黑和红是电机的正负极,卖家说是12v的电机,实际测试9v也能转得很好。
白棕蓝三线就是编码器,这款编码器主要元件只有一个发光二极管和一个感光器。
白线接地,棕线接感光器,蓝线接发光二极管。肉眼看不到光,我想可能是红外...
由于没有比较器,所以用LM393做个外围电路,原理图如下




自动布线效果很失败



简直惨不忍睹,好吧,就当是我不会用

好在元件不多,用洞洞板还是焊得出来的





你急着测试吗?
NONONO
让我先研究下Fritzing的自动布线功能在说吧...

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-7 19:34:21 | 显示全部楼层
本帖最后由 wing 于 2016-9-9 00:20 编辑

占位000001

感谢各位的支持,测试当然会继续的。
上次我已经做好外围电路了,其实这个电路至少需要连接6条线才能正常工作,
其中三条连接履带电机的白棕蓝,另外还要连接5v的电源,地线,和主控的一个数字I/O。
当然由于做了插座,所以可以很方便地把电机插上去 ^v^


我这次测试用的主控板是wemos 标准版D1,其实就是Arduino化的ESP8266。
很般配不是么?廉价电机配廉价主控



首次测试我通过手拨编码器进行,这样就算不开动电机也能进行,说实话眼下我没有电机驱动板,就算连电池也没有,也只能手拨了。
代码如下,其实你把它抄到UNO上编译也能用

  1. //旋转编码器的实验
  2. void setup() {

  3. Serial.begin(9600);          //  setup serial
  4.   delay(10);

  5.   pinMode(12, INPUT);

  6.   pinMode(2, OUTPUT);
  7. }



  8. void loop()
  9. {
  10. unsigned int  r;
  11. unsigned int  r_old;



  12. boolean s1;
  13. boolean s2;

  14. digitalWrite(2,LOW);
  15. delay(3000);

  16. Serial.println(1);
  17. Serial.println(2);
  18. Serial.println(3);

  19. r=1;
  20. r_old=0;


  21. s1=digitalRead(12);

  22. Serial.println(s1);

  23. delay(1000);
  24. digitalWrite(2,HIGH);

  25. while (true)
  26. {
  27.   s2=digitalRead(12);
  28.   delay(1);
  29.   if (s1!=s2)
  30.   {
  31.     s1=s2;
  32.     r=r+1;

  33.     if (r>60000)
  34.     {
  35.       r=0;
  36.     }
  37.    }
  38.   
  39.   if (r!=r_old)
  40.   {
  41.    r_old=r;
  42.    Serial.println(r);
  43.    delay(10);
  44.   }


  45. }


  46. }  
复制代码


由于是手动拨编码器,速度有限,所以每次都会在串口输出,另外代码还设置了一个输出的gpio2,这个针脚会接一个LED,当长亮的时候就可以转动码盘了。







然后来看看效果视频,虽然拍得不是太清晰,但是至少能看都串口监视器数字在动



不明显对吗?
当然了电机又不是自己转的,手拨还能怎么样呢,当时卖家还宣称这款电机有7千转呢

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-7 19:34:34 | 显示全部楼层
本帖最后由 wing 于 2016-9-9 12:05 编辑

占位000002

好吧,好吧,我知道大家都不满意手拨测试。
现在电池买回来了,让电机自己转吧。




因为电机的转速比我手拨快很多,那么改下代码,每一千次才在串口显示一次



  1. //旋转编码器的实验
  2. void setup() {

  3. Serial.begin(9600);          //  setup serial
  4.   delay(10);

  5.   pinMode(12, INPUT);

  6.   pinMode(2, OUTPUT);
  7. }



  8. void loop()
  9. {
  10. unsigned int  r;
  11. unsigned int  r_old;



  12. boolean s1;
  13. boolean s2;

  14. digitalWrite(2,LOW);
  15. delay(3000);

  16. Serial.println(1);
  17. Serial.println(2);
  18. Serial.println(3);

  19. r=1;
  20. r_old=0;

  21. s1=digitalRead(12);

  22. Serial.println(s1);

  23. delay(1000);
  24. digitalWrite(2,HIGH);

  25. while (true)
  26. {
  27.   s2=digitalRead(12);
  28.   delay(1);
  29.   if (s1!=s2)
  30.   {
  31.     s1=s2;
  32.     r=r+1;

  33.     if (r>60000)
  34.     {
  35.       r=0;
  36.     }
  37.    }
  38.   
  39.   if ((r!=r_old)&&(r%1000==0))
  40.   {
  41.    r_old=r;
  42.    Serial.println(r);
  43.    delay(10);
  44.   }


  45. }


  46. }  
复制代码




这次视频看起来会精彩一些



单路测试基本上就是这样,
下次我会换一个主控,然后尝试用中断的方法写个新程序继续测试

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-7 19:34:47 | 显示全部楼层
本帖最后由 wing 于 2016-9-10 22:09 编辑

占位000003

有请这次的主角Arduino101闪亮登场







没错,就是intel inside 相信不是每个人都有 :-P

本程序是用中断实现编码器计算的,代码如下

  1. volatile unsigned int  r;
  2. volatile unsigned long t;

  3. void setup()
  4. {
  5.   Serial.begin(9600);          //  setup serial
  6.   pinMode(12, INPUT_PULLUP);
  7.   pinMode(13, OUTPUT);
  8.   r=0;
  9.   t=0;
  10.   attachInterrupt(12, blink, CHANGE);
  11. }

  12.   void loop()
  13.   {
  14.     unsigned int  r_old;
  15.     r_old=0;

  16.     digitalWrite(13,LOW);
  17.     delay(1000);

  18.     Serial.println(1);
  19.     Serial.println(2);
  20.     Serial.println(3);

  21.     delay(1000);
  22.     digitalWrite(13,HIGH);
  23.     t = micros();
  24.     Serial.println(t);
  25.    
  26.     while(true)
  27.     {
  28.       if (r!=r_old)
  29.       {
  30.         r_old=r;
  31.         Serial.println(r);
  32.         }
  33.       delay(1000);

  34.       }

  35.    
  36.     }

  37. void blink() {

  38. unsigned long t0;
  39.   t0 = micros();

  40.   if (t0-t>100)
  41.   {
  42.     r=r+1;
  43.     if (r>60000)
  44.     {
  45.       r=0;
  46.       }
  47.     t=t0;  
  48.   }   
  49. }
复制代码


接线上之前的大同小异



这里顺便讨论一下实际测试所得的数据,卖家宣称这款电机在7千转以上,这个是按分钟算的。
实际测试中使用的是8节非充电的AA电池,电压表测出13v,然后履带是侧放,没有任何负载,这时编码器计算器每秒5千左右。
然后码盘是20格的,也就是说转一圈,计数器增加40(好吧,我承认我的数学是生理卫生老师教的,正确的数字可能是39,40,或者41,有清晰的朋友请告诉我到底应该是哪个)。

(5000/40)*60=7500

很好,卖家还是很诚实的。当然这转数电机轴承的转数,也就是未经减速的,另外卖家也说过减速比是90,不过这个就不知道要怎么测量了。

最后奉上视频




好了,本学习笔记就到这里了。
奇形怪状的板子也show了不少,算是装13吧,不过最后还是没见小车的影,究其原因...我是不会告诉你这和楼下那位有关的。
那么感谢各位的观看,如果有其他进展我将会另外发帖,当然更多回复的话我会更有动力 lol;lol;lol;lol;lol;lol;lol;

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2016-9-7 21:00:58 | 显示全部楼层
我还说这个履带卖光了。。。。居然还有这么多库存
回复 支持 反对

使用道具 举报

发表于 2016-9-7 22:28:49 | 显示全部楼层
先买10对回来再说撒。
回复 支持 反对

使用道具 举报

发表于 2016-9-8 15:43:34 | 显示全部楼层
也在想入手这款电机,期待楼主进一步测试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-9 00:10:18 | 显示全部楼层
本帖最后由 wing 于 2016-9-9 00:12 编辑

想看通电测试么?我需要更多回复才有动力哦
回复 支持 反对

使用道具 举报

发表于 2016-9-9 09:25:30 | 显示全部楼层
快更,lz我用lm358可以吗,或lm324
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-9 11:49:48 | 显示全部楼层
linoulong 发表于 2016-9-9 09:25
快更,lz我用lm358可以吗,或lm324

LM393是比较器,您上面说那两个是放大器,功能不一样的
回复 支持 反对

使用道具 举报

发表于 2016-9-10 10:30:59 | 显示全部楼层
我想问一下,这履带可不可以一节一节的拆开?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-10 19:16:26 | 显示全部楼层
战戟先锋aa 发表于 2016-9-10 10:30
我想问一下,这履带可不可以一节一节的拆开?

本来履带就是一节节装上去的,当然可以拆啦
回复 支持 反对

使用道具 举报

发表于 2016-9-11 13:40:04 | 显示全部楼层
战戟先锋aa 发表于 2016-9-10 10:30
我想问一下,这履带可不可以一节一节的拆开?

淘宝上商家展示图片有教你如何拆开。但是谁会去拆呢?都是一个整体使用的东东。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 23:33 , Processed in 0.099105 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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