agnd 发表于 2013-1-29 10:10:43

与诸位高手探讨在4轴中无刷电机控制响应时间问题

   从空心杯小电机Mini4轴改做无刷电机大4轴,第一个问题就是电调.我以前的姿态解算和PID控制周期都是5mS,于是,我选了号称响应速度333Hz的商品电调,并用200Hz的重复频率发PCM控制脉冲.但貌似电机的响应速度还是跟不上.
   于是,桨下弄个红外光电传感器,用来实测转速,方法是用stm32的定时器捕获中断,精确测出传感器每次被桨叶遮挡时刻和上次测量时刻的时间差.但结果令我震惊: 油门锁定在同一控制脉宽时,桨在每转一圈的过程中转速并不均匀! 下边是具体测试数据: <>内为定时器捕捉到的寄存器值,单位5us
<43D7>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<4D86>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<5735>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<5CBE>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<60E4>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<666D>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<6A93>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<701C>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<7443>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<049A>T=   1415(uS), f=70.67(Hz),4240.3 转/分
<08C1>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<0E4A>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<1270>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<17F9>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<1C1F>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<21A8>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<25CE>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<2B57>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<2F7E>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<3506>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<392D>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<3EB5>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<42DC>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<4865>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<5214>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<5BC3>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<6572>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<6F21>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<74AA>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<039F>T=   1061(uS), f=94.25(Hz),5655.0 转/分
<0928>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<0D4E>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<12D7>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<16FE>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<1C86>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<20AD>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<2636>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<2A5C>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<2FE5>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<340B>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<3994>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<3DBA>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<4343>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<476A>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<4CF2>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<5119>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<56A2>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<5AC8>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<6051>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<6477>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<6A00>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<6E27>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<73AF>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<082D>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<11DD>T=   2480(uS), f=40.32(Hz),2419.4 转/分
<1B8B>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<253B>T=   2480(uS), f=40.32(Hz),2419.4 转/分
<2AC4>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<2EEA>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<3473>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<3899>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<3E22>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<4248>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<47D1>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<4BF8>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<5180>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<55A7>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<5B2F>T=   1416(uS), f=70.62(Hz),4237.3 转/分
<5F56>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<64DF>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<6905>T=   1062(uS), f=94.16(Hz),5649.7 转/分
<6E8E>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<72B5>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<030C>T=   1415(uS), f=70.67(Hz),4240.3 转/分
<0733>T=   1063(uS), f=94.07(Hz),5644.4 转/分
<0CBC>T=   1417(uS), f=70.57(Hz),4234.3 转/分
<10E2>T=   1062(uS), f=94.16(Hz),5649.7 转/分
......
仔细一分析,这也难怪, 你的转速才每分钟6000转,也就是10mS才转够一圈,你怎么可能让人家电调5mS内为你调整转速,人家电调测电机反电动势也得转半圈才能知道结果吧.
因此,我就困惑自己为什么非要控制的这么快?
于是,晚上又折腾一通宵原来的那个瓢虫架子,同样测转速.那时我给空心杯的控制PWM脉冲是100KHz,占空比0%-100%的可控,结果人家空心杯转速均匀,反应良好,如下数据:
<59D5>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<6384>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<6D33>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<01B2>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<0B61>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<1510>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<1EBF>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<286E>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<321D>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<3BCC>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<457B>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<4F2B>T=   2480(uS), f=40.32(Hz),2419.4 转/分
<58D9>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<6288>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<6C37>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<00B5>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<0A65>T=   2480(uS), f=40.32(Hz),2419.4 转/分
<1414>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<1DC3>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<2772>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<3121>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<3AD0>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<447F>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<4E2E>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<57DD>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<618C>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<6B3B>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<74EA>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<0968>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<1317>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<1CC6>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<2675>T=   2479(uS), f=40.34(Hz),2420.3 转/分
<3025>T=   2480(uS), f=40.32(Hz),2419.4 转/分
<39D3>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<4383>T=   2480(uS), f=40.32(Hz),2419.4 转/分
<4D31>T=   2478(uS), f=40.36(Hz),2421.3 转/分
<56E1>T=   2480(uS), f=40.32(Hz),2419.4 转/分
........
难道,这才是很多"高端"玩具4轴用空心杯减速电机驱动,而不用无刷,或用自己专用电调的真正原因?

ahuang227 发表于 2013-1-29 10:14:03

商品的电调是没有pid的调节的吧?只是发速度PWM而已。

agnd 发表于 2013-1-29 10:23:51

ahuang227 发表于 2013-1-29 10:14 static/image/common/back.gif
商品的电调是没有pid的调节的吧?只是发速度PWM而已。

我用的是黑底大红字30A 小白字OPTO的那种电调测的, 出厂默认设置,没自己进行什么设定, 因为还没搞懂那些滴滴哒哒的呻吟菜单

plc_avr 发表于 2013-1-29 12:33:24

难道,这才是很多"高端"玩具4轴用空心杯减速电机驱动,而不用无刷,或用自己专用电调的真正原因?
---------------------------------------------------------------------------------------------------------------------------------
高端几乎全是无刷,空心杯,转速好控制,有个死结,有电刷,时间长了准坏...{:titter:}

agnd 发表于 2013-1-29 12:35:25

plc_avr 发表于 2013-1-29 12:33 static/image/common/back.gif
难道,这才是很多"高端"玩具4轴用空心杯减速电机驱动,而不用无刷,或用自己专用电调的真正原因?
------------ ...

哈,我说的"高端"是带""的

plc_avr 发表于 2013-1-29 12:37:31

有Mini无刷电机,但是价格太贵,玩不起…………

agnd 发表于 2013-1-29 20:57:36

已经确认,电调在油门脉冲不变时,是保持一个较长时间周期(秒级)内的平均转速不变,但每转一圈或者说在比较短的一小段时间内,转速是呈一定周期性规律忽大忽小的改变的,油门越大,包含高转速的成分就越多,最高转速就越高,但大概都是那么几个确定的离散值之一。等会我传上一组实测数据,让真正的内行高手帮着看看,再分析下这电调这样控制有什么好处和弊端。我觉得一般业余条件都是用红外测速表测平均转速,油门大到一定程度这平均转速就基本固定升不上去了,但产生的升力却依然能随油门增大而加大,貌似违背了转速平方和升力成正比的理论。其实原因是油门加大高转速离散值和低转速离散值间差距增大了。

agnd 发表于 2013-1-29 21:04:10


这是我测试某电调和电机的完整数据,供内行同仁参考。

agnd 发表于 2013-1-29 21:17:05

如果有人也在研究这个问题,请仔细看一下数据帮忙分析一下。每行数据,是每次桨(1045双叶)转过180度测得的,每隔6秒统计有累计脉冲个数计算的6秒内平均转速。每隔一定时间随机采集当时的升力值。可以看出,油门PCM脉宽从1360uS开始,6秒平均转速就维持在3000转左右不升了,但产生拉力却还能从200克到400克随油门单调上升,要没有每行的数据肯定会为之惊奇。

brb2010 发表于 2013-3-30 18:42:23

agnd 发表于 2013-1-29 21:17 static/image/common/back.gif
如果有人也在研究这个问题,请仔细看一下数据帮忙分析一下。每行数据,是每次桨(1045双叶)转过180度测得的 ...

这个问题有答案了吗?

lynx19890808 发表于 2013-6-15 10:11:23

这个问题有答案了吗?这个问题有答案了吗?这个问题有答案了吗?{:shy:}

flylinux 发表于 2013-6-15 14:52:05

打算自己做电调,stm32 霍尔传感器 驱动电路,用485或can通信

kmani 发表于 2013-6-15 15:45:19

flylinux 发表于 2013-6-15 14:52 static/image/common/back.gif
打算自己做电调,stm32 霍尔传感器 驱动电路,用485或can通信

有带霍尔传感器的适合四轴用的无刷电机?

flylinux 发表于 2013-6-15 16:53:07

kmani 发表于 2013-6-15 15:45 static/image/common/back.gif
有带霍尔传感器的适合四轴用的无刷电机?

无刷舵机好多都是霍尔吧

K.O.Carnivist 发表于 2013-6-15 17:55:52

flylinux 发表于 2013-6-15 16:53 static/image/common/back.gif
无刷舵机好多都是霍尔吧

一般无刷舵机里面的马达是不是功率不太够啊

kmani 发表于 2013-6-15 18:00:27

楼主上面的问题可能使因为电调开关频率过低导致换向不及时,这样定子对转子产生了阻碍作用,于是就有了转速低的时候。当准确换向之后,又产生加速作用,于是有了高转速。 猜测这个还和程序写的不合理有关。
猜测提高电调开关频率会减弱转速的变化,但是会增加损耗。

oldbreadman 发表于 2013-6-15 22:00:23

没这么夸张,我用的可以直接传出转速的无刷电调及相应的遥控器,遥控器端可直接显示电机转速,在无刷电机的测试中,并没有发现你所说的转速不稳的情况,而且转速的提升和拉力的提升是呈对应关系的。

longhua 发表于 2014-8-14 10:23:32

问题解决了吗?
页: [1]
查看完整版本: 与诸位高手探讨在4轴中无刷电机控制响应时间问题