失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > arduino 控制无刷电机_Arduino Uno 驱动无刷电调

arduino 控制无刷电机_Arduino Uno 驱动无刷电调

时间:2018-11-23 03:34:47

相关推荐

arduino 控制无刷电机_Arduino Uno 驱动无刷电调

本帖最后由 希岩 于 -5-28 13:06 编辑

Arduino提供了PWM驱动库,但很难调整PWM频率。手头有有个无刷电机和一个电调,如何驱动电调呢?

可以看下面的连接/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

//日期:.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<

//快速PWM,预分频器64分频,page118 为4.1ms,243HZ

TCCR1B= (1<

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]

-12-20 00:12 上传

实验系统组成

如果觉得《arduino 控制无刷电机_Arduino Uno 驱动无刷电调》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。