由于我们比赛所使用的工程机器人采用了机械臂的结构,而RM官方提供的3508、6020、2006电机无法满足某些关节的输出需求。所以我们选择了使用MIT Mini Cheetah的关节电机FOC驱动方案。但是在实际测试环境中,发现该FOC驱动器并不稳定,所以我们重新从头开始研发了一套不同于现有开源方案如simpleFOC、ODrive的FOC驱动方案,具有成本低、体积小等优势,作为技术储备提供给摩擦轮电机、关节电机等场景使用。FOC在控制BLDC (Brushless Direct Current)电机上有诸多的好处,主要有如下几点优势:
1. FOC则完全没有转速的限制,不论在什么转速下都可以实现精确的控制。
2. FOC的换向性能极其优秀,最高转速下正反转切换可以非常顺畅。
3. FOC还可以以能量回收的形式进行刹车控制。
4. FOC可以实现力矩、速度、位置三个闭环控制。
5. FOC驱动器的噪音会比电调小很多,效率也比电调高很多。
但是由于FOC的计算量大、原理复杂,所以需要很高成本的控制器,这也使得FOC在很多场景下都没有得到推广和使用。在经过了半年的研究和迭代之后,本人将FOC涉及大量计算的代码进行了深度优化,也重新根据国内的供应链进行了选型,希望本开源项目能够帮助国内的广大开发者们用上有优秀性能的BLDC电机,为开源社区贡献一份力量。本项目剥离自我们为工程机器人盘式电机研发的FOC_STD项目,对供应链重新进行选型,目前项目还正在移植过程中,请期待九月中旬彻底实现功能移植。
开源项目Github地址: https://github.com/ZhuYanzhen1/miniFOC
或者本站下载: miniFOC_git_20210902.7z
希望大家能多多关注,给一个小星星鼓励一下呀。
离线
对于总线电机,是can接口通用还是modbus,电机集成驱动器留出总线接口,是趋势。
很有道理。目前没有采用总线接口而是采用UART接口。以后可能会加入一些模块变为RS485 modbus
离线
牛!感谢开源分享!
请问有没有参考电路和电机选型?我可以做个demo板看看
持续关注github项目,上面开源了全部电路和源码。
离线
感觉simpleFOC方案也不贵呀,并且还支持步进电机
本项目的优势主要在于成本(使用全新原装的元件)可以做到20元以下。如果你能把simpleFOC的成本(使用全新原装的元件)做到那么低的话,可以发布你的github项目让大家一起学习。另外,我猜测应该不会有人用simpleFOC去做步进电机驱动吧?TMC2209这种高细分的一体式驱动IC不香吗?
离线
@laozhu
simpleFOC一样可以用MCU + 磁编码器实现,不知道它的成本高在哪里?闭环步进驱动做成FOC并不奇怪吧,单纯TMC方案又不是闭环控制。
如果方便的话请大佬发布你所说的的这个方案的github项目供大家一起参考学习,像我这样做一个BOM来对比一下报价。另外对于simpleFOC做步进驱动确实没有什么问题,我们项目目前也支持做直流电机的驱动,后续甚至可以支持做个D类功放和三相逆变。很感谢大佬给我们提供使用开关式霍尔传感器的思路,后续我们会考虑将其加入到开发内容中,这样成本就可以控制在10元左右了。
最近编辑记录 laozhu (2021-09-04 01:20:12)
离线
另外在此展示一下这颗三块钱就能买到的单片机经过优化后每次计算所消耗的时间,大概是在25us,也就是说闭环频率可以随便做到20~30kHz。更加高速的闭环可以提高BLDC的瞬态响应性能。由于电机的限制,不用把闭环频率设得过高,在此项目的示例中,闭环频率被设置成了8kHz。
最近编辑记录 laozhu (2021-09-04 03:28:12)
离线
再补充一个FOC力矩环的转动视频:
离线
什么时候出开发板呀。
可能大概率不会出开发板,这个东西自己根据开源的文档就可以做出来啦。文档里面写的非常非常非常详细了已经。
离线
今日成果:实现FOC自动相序检测和相序矫正。再也不用担心接线相序对不上需要手动调换相序啦。
离线
@laozhu
请问是啥型号的单片机?现在3元的好像已经不多了。
是兆易创新的GD32F130G6U6。Cortex-M3内核,32K Flash,4K RAM。购买截图如下:
离线
问了代理商价格,GD32F130G6U6原装21+,3k整包出,10.5元/PCS
那么贵吗,难道我买的这个是拆机货 ,但是它又写的是全新原装
不过目前我买了30颗还没有碰到有问题的片子,如果和我一样是搞着自己玩的话可以去他们家买:
https://item.taobao.com/item.htm?spm=a230r.1.14.19.499c45d3xfp6bv&id=607243418663&ns=1&abbucket=19#detail
库存还挺多的,可以屯点(毕竟不知道接下来单片机市场会变得怎么样)
最近编辑记录 laozhu (2021-09-07 19:44:34)
离线
@laozhu
在低转速应用上,从整体来看,闭环步进方案的成本肯定比你的三相直流无刷FOC方案低
你就总是想着要鸡蛋里挑骨头。
一开始跟我来说simpleFOC的成本比我这个低,现在比FOC的方案比不了了就跟我来比步进电机了是吧?
另外你所说的的比我成本低的闭环步进方案能实现以下的哪一点:
1. 转矩恒定可闭环且转矩脉动极小
2. 宽范围转速调节,瞬态响应特性好
3. 噪音小,谐波及驻波频率均超过10kHz
你当然可以说我这个不行,但是你得拿出更好的来啊,在Github上面开源你“更好”的东西啊
虽然我可能技术没你好,但是费尽心思来挑我的骨头,对开源社区和广大开发者有什么贡献吗?
最近编辑记录 laozhu (2021-09-09 11:54:56)
离线
能做到10w转每分钟吗
不能,这个算力不够
离线
无刷电机作为关节的输出选型的时候需要注意电机的那些参数呀,对于电机的各种参数没什么概念
极对数和KV值,以及最大输出功率
离线
@liyucai
有Gitee镜像仓,你可以去镜像仓下载:https://gitee.com/zhuyanzhen1/mini-foc
这篇帖子最早给出的那个已经是很老很老的版本了,尽量从Github或者Gitee上拉取最新版的代码和电路。
最近编辑记录 laozhu (2021-09-20 23:27:30)
离线
@carbonxie
encoder_zeroing();是用来对齐机械零角和电角零角。
不需要在每次上电后都执行,执行一次之后把偏移量记录下来就行了。
foc_calibrate_phase();是用来校正相序的,一般是先校正相序再对齐零角。
离线