2015-11-13 20:14:46 [显示全部楼层]
28600浏览
查看: 28600|回复: 10

[进阶] Arduino控制好盈电调(非常重要)转载

[复制链接]
Arduino控制好盈无刷电调
本来的想法用arduino的pwm脚,通过analogWrite 输出pwm信号就可以驱动电调的。写了个程序一试,不行,电机就是B-B的叫。后来找了一些资料,看到网上一些朋友用Servo库以控制舵机的方式来驱动电调。说arduino的analogWrite输出跟Servo的不是一个东西(http://www.elecfans.com/article/89/169/2012/20120621277343.html),后来我用Servo库试了一下,电机是可以动起来了,但是只动了一下,又停了 :http://wenku.baidu.com/view/6c2537353968011ca3009119.html   

为什么用Servo就可以,而用analogWrite 输出的PWM信号就不行了呢。书上说analogWrite 产生的是一个大约490Hz的占空比可变的脉冲序列,而根据文库中写的,控制无刷电调要使用20ms的PWM信号。我想应该就是这个原因吧。


后来继续搜,在arduino.cn上看到一篇贴子,不用Servo来驱动舵机 http://www.arduino.cn/thread-45-1-1.html  。我尝试用它来控制我的无刷电调,但是一开始是失败的。后来我看到了好盈电调的说明书,http://www.docin.com/p-305686520.html 原来这电调可高级了,还可以进入编程模式啥的。而且电调首次使用,没调制好油门行程,也是不能驱动电机的。但是我手头上并没有遥控器,于是改了一下代码,模拟设置油门行程。设置好了之后,电机终于转起来了!

[mw_shl_code=cpp,false]//see http://www.docin.com/p-305686520.html


int sp1=9;//定义舵机接口数字接口7
int pulsewidth;//定义脉宽变量
int val;
int val1;
int myangle1;
//下面是servopulse函数部分(此函数意思:也就是說每次都是0.5ms高電平 1.98ms低電平 然後再0.52ms低電平 17ms延時也是低電平)
void servopulse(int sp1,int val1)//定义一个脉冲函数
{
  myangle1=map(val1,0,180,500,2480);
  digitalWrite(sp1,HIGH);//将舵机接口电平至高
  delayMicroseconds(myangle1);//延时脉宽值的微秒数
  digitalWrite(sp1,LOW);//将舵机接口电平至低
  delay(20-val1/1000);
}
//servopulse函数部分到此结束
void setup()
{
  pinMode(sp1,OUTPUT);//设定舵机接口为输出接口
  //设置两组串口波特率
  Serial.begin(9600);
  
  Serial.println("servu=o_seral_simple ready" ) ;
  
  //看电调说明书,设置油门行程时,一开始需要把遥控器打到最高点。i<=110大概是2杪多
  for(int i=0;i<=110;i++)
    {
      servopulse(sp1,150);//引用脉冲函数
    }
   
//等电机发出B-B两声后(就是两秒后,大概就是这里了)把油门打到最低点
    for(int i=0;i<=55;i++)
    {
      servopulse(sp1,20);//引用脉冲函数
    }
   
//后面提示后,就可以控制电机转动了
    for(int i=0;i<=150;i++)
    {
      servopulse(sp1,150);//引用脉冲函数
    }
   
    Serial.println("hello world" ) ;
  
}

void loop()//将0到9的数转化为0到180角度,并让LED闪烁相应数的次数
{
  val='8';

  if(val>'0'&& val<='9')
  {
    val1=val-'0';//将特征量转化为数值变量
    val1=map(val1,0,9,0,180);//将角度转化为500-2480的脉宽值
    Serial.print("moving servo to ");
    Serial.print(val1,DEC);
    Serial.println();
    for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
    {
      servopulse(sp1,val1);//引用脉冲函数
    }
  }

}[/mw_shl_code]

大连林海  初级技神

发表于 2015-11-13 21:06:16

慢慢来学习 先坐沙发感受一下
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2015-11-13 21:21:43

大连林海 发表于 2015-11-13 21:06
慢慢来学习 先坐沙发感受一下

这东西很危险
高速转动,手就没有了
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2015-11-13 21:23:43

回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2015-11-13 21:27:39

本帖最后由 hnyzcj 于 2015-11-13 21:28 编辑

涵道实验http://www.tudou.com/programs/view/O7Qp3MnoauE/
回复

使用道具 举报

Grey  中级技匠

发表于 2015-11-13 22:23:46

噪声感人,不好屌好屌的样子
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2015-11-13 22:44:44

Grey 发表于 2015-11-13 22:23
噪声感人,不好屌好屌的样子

好吧这只是表原型,不过声音确实大了点。
回复

使用道具 举报

dsweiliang  初级技神

发表于 2015-11-14 00:53:01

好吵啊~
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2015-11-14 08:17:23


没办法是吵了点
回复

使用道具 举报

大连林海  初级技神

发表于 2015-11-14 09:00:06

hnyzcj 发表于 2015-11-13 21:21
这东西很危险
高速转动,手就没有了

这么牛逼的东西 危险要注意
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail