Arduino Uno 驱动无刷电调-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17535|回复: 8

Arduino Uno 驱动无刷电调

[复制链接]
发表于 2017-12-20 00:13 | 显示全部楼层 |阅读模式
本帖最后由 希岩 于 2020-5-28 13:06 编辑

    Arduino提供了PWM驱动库,但很难调整PWM频率。手头有有个无刷电机和一个电调,如何驱动电调呢?
   可以看下面的连接http://www.rationmcu.com/lpc1114/1126.html
   重要的是下面这些话: 电源线接电源,3个插孔接入三相电机的线,油门信号线共2条,黑色的是信号的GND,白色的就是信号线。商用的油门信号线,是采用PWM的的驱动方式,也就是说,我们随便找个单片机就可以给电调信号从而控制无刷电机运转了。我们现在拿到的这个好盈电调最大支持621Hz的PWM信号,下面的实验中,我们用500Hz的信号。速度是由PWM中高电平的时间决定的,一般从0.5~2.5ms。下面的实验中,我们用0.7ms作为最低速,1.9ms作为最高速,用单片机产生0.7ms到1.9ms之间的PWM信号,就可以把电机从0调到最大转速。
  我们需要一个650HZ以下的PWM,占空比在0.5ms-2.5ms.采用ATmega328P的16位定时器1,定时器0用于delay函数了,不要轻易动。设置0.6ms为油门低,2.2ms为油门高对电调进行标定后就可以使用了,非常方便。这里我们的PWM频率只有大约250Hz,在允许范围内。
  然后就可以上电测试了,连接在9或者10端口,再用一个放电倍率大的锂电池供电,就能驱动我们的无刷电机了。在试验中,我用示波器对脉宽进行了观测。控制器是Arduino Uno SMD edition。实验结果如图所示。
  大家可以试一下,有问题可以问我哈。




[mw_shl_code=arduino,true]//功能:无刷电调驱动
//作者:凌晨七點半 @Copyright
//日期:2017.12.19
//PWM频率:243HZ
//注意:delay()用的定时器0,定时器1是十六位定时器

#define UPTIME      550  //2.2ms
#define DOTIME      150   //0.6ms

//------------------------------------------------------------
//初始化PWM,定时器1
//RFPWM=log(TOP + 1)/log(2)
void Init_PWM1(void)
{ //比较匹配时清零OC1A/OC1B, OC1A/OC1B 在TOP 时置位
  TCCR1A  |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11)|(1<<WGM10); //page117
  //快速PWM,预分频器64分频,page118 为4.1ms,243HZ
  TCCR1B  = (1<<WGM12)|(1<<CS11)|(1<<CS10);   
  OCR1A   = UPTIME;          //1.9ms
  OCR1B   = UPTIME;          //1.9ms

}
//---------------------
void setup()
{int i;
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  Init_PWM1();   
  //标定过程,可以不要
  //***********标定过程************
  delay(2000);   //3s内标定0.6ms和2.2ms
  OCR1A=DOTIME ;
  OCR1B=DOTIME;   
delay(1000);
  OCR1A=DOTIME;
  OCR1B=DOTIME;
  //************标定结束**********
for(i=0;i<400;i++)
{
OCR1A=DOTIME+i;
OCR1B=DOTIME+i;
delay(10);
}
  OCR1A=300;
  OCR1B=300;      //0.6ms代表油门最低,2.2ms代表最高

}
//----------------------------
void loop()
{


}[/mw_shl_code]

实验系统组成

实验系统组成
发表于 2017-12-20 14:20 | 显示全部楼层
您好,请问帖子中拍的照片的下方还连接有什么板子吗?能否拍一张完整的,谢谢啦!
发表于 2017-12-20 14:56 | 显示全部楼层
大概知道了,应该是一个电源+一个电调
 楼主| 发表于 2017-12-20 15:22 | 显示全部楼层
happyer 发表于 2017-12-20 14:56
大概知道了,应该是一个电源+一个电调

哦,不好意思没拍全,就是一个锂电池和一个航模电机电调
发表于 2017-12-22 19:57 | 显示全部楼层

非常感谢!
发表于 2018-5-8 15:37 | 显示全部楼层
感谢分享,请教这样就可以利用arduino实现电机的正反转了么? 能不能测试到正反转之间的时间差?能否做个视频教程分享啊 解释下代码和操作流程  感谢
发表于 2018-5-24 20:05 | 显示全部楼层
请问一下,你知道如何控制电调,让电机反转吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:33 , Processed in 0.085377 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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