四轴无刷电机 PWM 信号驱动异常情况

2017-02-01 01:30:35 +08:00
 EchoFUN
初玩四轴飞行器,自己先捣鼓了一番。
使用的是好盈 20A 的电调。电机在运转的时候貌似不是匀速运转(在油门信号不变的情况下)。速度会不断的在变化中。有种一顿一顿的感觉。不知道这是不是算正常现象?还是我的代码写的不对?如果我想消除这种一顿一顿的感觉,有什么好的方法吗?

录了段视频:
https://v.qq.com/x/page/e03714k45av.html
PWM 信号模拟的代码如下:
https://github.com/EchoFUN/raspi/blob/master/tests/ESC.py

求教懂行的大神。
2865 次点击
所在节点    问与答
11 条回复
skylancer
2017-02-01 02:19:47 +08:00
我不懂这类,不过我会先建议你检查电机
yangff
2017-02-01 02:24:45 +08:00
http://www.hobbywing.com/products/pdf/XRotor-Micro-BLHelicn.pdf
看了一下,默认要的是 PPM 输入吧
yangff
2017-02-01 02:28:04 +08:00
· PWM 输入(PWM input ):可以启用或禁用(默认是禁用)。如果禁用,只有 1-2ms PPM 和 oneshot125(125-250us) 被视为有效输入信号.当使用回路时间低于 1100 的 OneShot125 时,请将该功能设置为禁用。
ProjectAmber
2017-02-01 10:29:46 +08:00
肯定不是正常现象。
可以拿逻辑分析仪测下引脚输出 PWM 波形是否正常。

PS :多旋翼类飞行器一般使用 400Hz 的 PWM 信号。
xihefeng
2017-02-01 10:39:46 +08:00
是不是没有解锁电调(行程设定)?
ProjectAmber
2017-02-01 10:40:57 +08:00
我不是很了解树莓派,查了下相关资料,都提到树莓派只有一个引脚 GPIO18 能够输出 PWM 信号。所以这个 PWM 应该是软件模拟的。
我对 Linux 能够产生微秒精度的信号这点很怀疑,也许换上 RT 内核会好那么一点。
你可以参考下 NAVIO( https://emlid.com/navio/),他使用了 PCA9685 来输出 PWM 信号。
HowardMei
2017-02-01 10:51:25 +08:00
频率太低,最起码要高于音频。
HowardMei
2017-02-01 11:00:20 +08:00
你这个等于把电机当喇叭用了,只是振动单元从鼓膜换成叶片而已。

一般根据开关质量不同,定在 10kHz~20kHz 比较多,最少也要 5kHz 左右,即便很大功率的, 500Hz 也是极限了,再低就是当喇叭用。

你可以试试调高频率,找找板子的输出频率极限。
yangff
2017-02-01 12:26:38 +08:00
@HowardMei 和这个没关系…… 这个信号又不是直接控制电机的=-=
yangff
2017-02-01 12:52:22 +08:00
@ProjectAmber +1

感觉这点也很可疑,不过 50Hz 应该也不算什么太高的频率吧……
EchoFUN
2017-02-01 14:38:37 +08:00
感谢各位提点,多尝试了几下。目前能够匀速运转,没有一顿一顿的感觉了。

目测的原因:使用 RPi.GPIO 这个库输出的 PWM 信号(全部使用软件模拟)不是太准确。估摸着这个库可能是专门为教学准备的。简单,易上手,用 PWM 信号调试调试发光二极管效果杠杠的,不需要这么高的精度。
换了个 pigpio 的库问题就解决了。深层原因还在进一步研究中。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/337562

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX