极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13074|回复: 6

起床前的准备——OCROBOT新款GAMA+L6205电机驱动测试

[复制链接]
发表于 2017-2-21 21:39:43 | 显示全部楼层 |阅读模式
本帖最后由 wing 于 2017-2-21 21:51 编辑

农历年前已经收到了OC的GAMA系列新品,之前只发了开箱帖。

那么现在来说说初次测试的体验吧:
首先,L6205电机驱动驱动板是为gama设计的,针脚位置和标准的UNO不太一样,不过配合GAMA主控还是很方便的
其次,这次测试会加入编码器中断计数,GAMA主控芯片是328配16M的晶振,用来测7K转左右的电机还是桌桌有娱的
还是用之前那种履带电机,20线的旋转光电码盘,LM393的判断器,还是那8颗杂牌AA电池 不过电压已经降到10v以下了
最后要补充的是,我是不会看那些无聊的娱乐八卦新闻节目的

针脚定义:
         电机A        电机B
方向  D12          D13
速度  D3                D11
制动  D9                D8

D2针脚接收中断信号,对应程序的0号中断,然后实物看上去有点乱乱的






下面是串口输出的结果


下面还有完整的代码和其他更精彩的内容,请继续看下去吧

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2017-2-21 21:40:56 | 显示全部楼层
本帖最后由 wing 于 2017-2-21 21:49 编辑

这次测试的代码,正向转两秒输出计数,然后再反向转两秒输出计数,其中反向的PWM占空比大一些,让两次计数看起来有些不一样


  1. //gama 电机板实验 + 中断计数器

  2. int p_led = 4;                //接LED

  3. int p_b_fx =13;  //B机方向
  4. int p_b_dl =11;   //B机动力
  5. int p_b_zd =8;   //B机的制动

  6. volatile unsigned int rotary_encoder_count;

  7. void setup() {

  8. Serial.begin(9600);

  9.   pinMode(p_led, OUTPUT);

  10. //启用电机B的三个管脚,全部设置为输出状态  
  11.   pinMode(p_b_fx,OUTPUT); //B机方向
  12.   pinMode(p_b_dl,OUTPUT); //B机动力
  13.   pinMode(p_b_zd,OUTPUT); //B机的制动
  14. }

  15. void rotary_encoder_int()
  16. {
  17.   if (rotary_encoder_count<65535)
  18.     rotary_encoder_count=rotary_encoder_count+1;
  19.   else
  20.     rotary_encoder_count=0;
  21. }

  22. void loop() {
  23.   digitalWrite(p_led, HIGH);  //指时灯亮

  24.   //初始化计数器
  25.   rotary_encoder_count=0;
  26.   attachInterrupt(0, rotary_encoder_int, CHANGE);  //2号针脚接收中断信号

  27.   //B机状态 运行
  28.   digitalWrite(p_b_zd, LOW);       //松开电机B的制动
  29.   digitalWrite(p_b_fx, HIGH);     //设置方向为正向
  30.   //B机动力
  31.   analogWrite(p_b_dl,200);

  32.   delay(2000);
  33.   //持续2秒后输出 停电机 关中断  输出计数
  34.   analogWrite(p_b_dl,0);
  35.   digitalWrite(p_b_zd, HIGH);     
  36.   detachInterrupt(0);
  37.   Serial.println(rotary_encoder_count);  
  38.   
  39.   digitalWrite(p_led, LOW);  //指时灯关
  40.   delay(5000);  
  41.   digitalWrite(p_led, HIGH);  //指时灯亮
  42.   rotary_encoder_count=0;  //计数器清零
  43.   attachInterrupt(0, rotary_encoder_int, CHANGE);  //2号针脚接收中断信号   
  44.   
  45.   digitalWrite(p_b_zd, LOW);       //松开电机B的制动
  46.   digitalWrite(p_b_fx, LOW);     //设置方向为反向
  47.   //B机动力
  48.   analogWrite(p_b_dl,75);   
  49.   
  50.   delay(2000);  
  51.   //持续2秒后输出 停电机 关中断  输出计数
  52.   analogWrite(p_b_dl,0);
  53.   digitalWrite(p_b_zd, HIGH);     
  54.   detachInterrupt(0);
  55.   Serial.println(rotary_encoder_count);  
  56.   
  57.   digitalWrite(p_led, LOW);  //指时灯关
  58.   delay(5000);
  59. }
复制代码


个人来说还是很喜欢OC的IDE默认的配色风格,看起来很高格B




本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-21 21:49:15 | 显示全部楼层
本帖最后由 wing 于 2017-2-22 00:53 编辑

还有视频,当然审核时需要时间的...



转起来的样子还是非常可爱的,那么接下来要做点什么呢?

当然这些实验都是为了履带精灵2号机准备的,不过2号机的主控已经确定是wemos D1了,将会遇到的是电平转换的问题,
因为328是5V的,不过8266就是3.3V,那么我要先研究一下升压电路了
回复 支持 反对

使用道具 举报

发表于 2017-2-22 12:50:11 | 显示全部楼层
OCROBOT GAMA
回复 支持 反对

使用道具 举报

发表于 2017-2-23 10:14:27 | 显示全部楼层
可以啊哈哈哈哈哈
回复 支持 反对

使用道具 举报

发表于 2017-2-24 17:19:37 | 显示全部楼层
用电击疗法起床?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-24 17:57:47 | 显示全部楼层
履带闹钟,从脸上压过去
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 03:27 , Processed in 0.046327 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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