由于我们比赛所使用的工程机器人采用了机械臂的结构,而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,电机集成驱动器留出总线接口,是趋势。
离线
牛!感谢开源分享!
请问有没有参考电路和电机选型?我可以做个demo板看看
离线
对于总线电机,是can接口通用还是modbus,电机集成驱动器留出总线接口,是趋势。
很有道理。目前没有采用总线接口而是采用UART接口。以后可能会加入一些模块变为RS485 modbus
离线
牛!感谢开源分享!
请问有没有参考电路和电机选型?我可以做个demo板看看
持续关注github项目,上面开源了全部电路和源码。
离线
持续关注FOC
离线
感觉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元的好像已经不多了。
离线
Simplefoc是Simplefoc minifoc是minifoc laozhu肯开源minifoc已经很好 谁nb把两者优点结合起来 弄个 simplemini就更厉害
离线
@laozhu
请问是啥型号的单片机?现在3元的好像已经不多了。
是兆易创新的GD32F130G6U6。Cortex-M3内核,32K Flash,4K RAM。购买截图如下:
离线
问了代理商价格,GD32F130G6U6原装21+,3k整包出,10.5元/PCS
离线
问了代理商价格,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)
离线
问了代理商价格,GD32F130G6U6原装21+,3k整包出,10.5元/PCS
lc上面也才3.85,你的代理有点问题
https://so.szlcsc.com/global.html?k=GD32F130G6U6&hot-key=CC0603KRX7R9BB103
离线
Timaker 说:问了代理商价格,GD32F130G6U6原装21+,3k整包出,10.5元/PCS
lc上面也才3.85,你的代理有点问题
https://so.szlcsc.com/global.html?k=GD32F130G6U6&hot-key=CC0603KRX7R9BB103
lc库存是0
离线
@laozhu
在低转速应用上,从整体来看,闭环步进方案的成本肯定比你的三相直流无刷FOC方案低
你就总是想着要鸡蛋里挑骨头。
一开始跟我来说simpleFOC的成本比我这个低,现在比FOC的方案比不了了就跟我来比步进电机了是吧?
另外你所说的的比我成本低的闭环步进方案能实现以下的哪一点:
1. 转矩恒定可闭环且转矩脉动极小
2. 宽范围转速调节,瞬态响应特性好
3. 噪音小,谐波及驻波频率均超过10kHz
你当然可以说我这个不行,但是你得拿出更好的来啊,在Github上面开源你“更好”的东西啊
虽然我可能技术没你好,但是费尽心思来挑我的骨头,对开源社区和广大开发者有什么贡献吗?
最近编辑记录 laozhu (2021-09-09 11:54:56)
离线
能做到10w转每分钟吗
最近编辑记录 IC爬虫 (2021-09-13 20:42:07)
离线
无刷电机作为关节的输出选型的时候需要注意电机的那些参数呀,对于电机的各种参数没什么概念
离线
能做到10w转每分钟吗
不能,这个算力不够
离线
无刷电机作为关节的输出选型的时候需要注意电机的那些参数呀,对于电机的各种参数没什么概念
极对数和KV值,以及最大输出功率
离线
楼主,我也在开始搞 FOC 驱动电机,看了楼主位的程序,其中只有 foc_calculate_dutycycle() 一个函数,实现了 给定 vd vq 和电角度驱动电机。
请问,改变转速是 调哪个参数呢?
update_pwm_dutycycle() 没找到实现,是在哪里呢?
另外, github 上不去,你的更新能否在楼主位同步更新呢?
离线
@liyucai
有Gitee镜像仓,你可以去镜像仓下载:https://gitee.com/zhuyanzhen1/mini-foc
这篇帖子最早给出的那个已经是很老很老的版本了,尽量从Github或者Gitee上拉取最新版的代码和电路。
最近编辑记录 laozhu (2021-09-20 23:27:30)
离线
看了电路图,好像只用到3个pwm和一个spi,引脚那么少,建议支持其他更小封装的ic
离线
case 1:
/* disable timer2 to stop foc calculate loop */
timer2_disable();
/* disable timer13 to stop pid calculate loop */
timer13_disable();
/* automatic phase sequence detection and correction */
foc_calibrate_phase();
/* correct the mechanical angle zero deviation */
encoder_zeroing();
/* re-write the parameters to flash */
flash_write_parameters();
/* switch the status back to sending data */
minifoc_fsm_state = 0;
break;
对于:foc_calibrate_phase();和encoder_zeroing();同时存在,是不是encoder_zeroing();多许了?
encoder_zeroing();不是上电找零电角度吗?不是要放在while之前吗?也就是先对好电磁和电角度.
最近编辑记录 carbonxie (2021-10-14 19:40:53)
离线
@carbonxie
encoder_zeroing();是用来对齐机械零角和电角零角。
不需要在每次上电后都执行,执行一次之后把偏移量记录下来就行了。
foc_calibrate_phase();是用来校正相序的,一般是先校正相序再对齐零角。
离线
1.这个能不能驱动松下的交流伺服电机?
2.这种直流无刷电机和松下的交流伺服电机 就电机本体而言有什么区别?
3.如果把驱动板的MOS管换掉,是不是可以驱动大功率的电机,比如20KW?
4.如果把MOS管换成可通交流电的,用交流供电是否可行?
离线
离线
请教一下,楼主这个力矩控制精度怎么样,我看好像没有相电流采样,这样应该就没法做电流闭环,是通过反park变换到abc坐标系,之后clark变换到alpha,beta坐标系,之后进行SVPWM实现的么,我之前用STM32F401CCU6实现过,是通过这样实现的,我想看一下还有没有更好的方法来实现力矩闭环,直接请教楼主,不看代码了,因为我是通过micropython实现的,直接看代码不方便。😎
离线
STM32F401CCU6+micropython 衡力矩驱动,感觉力矩开环精度不高,这个是没加磁编码器的,后来加了编码器的视频找不到了。
最近编辑记录 chinazhangdj (2021-11-25 18:11:58)
离线
离线
离线
看样子可以关注一下FOC了,成本也还好
离线
@laozhu
楼主,这个项目计划什么时候更新, 我打了两个板子总是烧, 电源输入短路应该是烧MOS了
离线
感谢大神的无私分享。计划自己做个pcb打样测试下。
离线
@laozhu
这段时间对电机驱动做了些研究。其实低成本的FOC方案应该用专门针对电机驱动的MCU方案,目前知名度大点的有:灵动、凌欧、旋智。这些MCU的片上资源专门针对电机,其驱动电路极其简洁且芯片的性价比非常高。这些芯片普遍都包含有:ADC、运放、预驱、三角函数运算加速器等。
凌欧的ADC是差分式的,输入电压可以为负,运放是轨对轨的且片内有直流偏置电压,非常适合做电机相电流测量。
凌欧有些芯片片上带高压LDO、旋智有的则带DC-DC都可以直接用24V这样的高压供电。
最近编辑记录 海石生风 (2022-07-07 09:06:31)
离线
请教一下没有电流传感器的力矩控制大概是如何实现的?
离线
发现 灵动 的方案还有带预驱和MOSFET管的,集成5v LDO最高16V供电,完全单芯片解决方案,电路极其简洁!一个MCU加几个阻容器件搞定BLDC FOC!
有没有带4个通道 能foc驱动步进电机的
离线
海石生风 说:发现 灵动 的方案还有带预驱和MOSFET管的,集成5v LDO最高16V供电,完全单芯片解决方案,电路极其简洁!一个MCU加几个阻容器件搞定BLDC FOC!
有没有带4个通道 能foc驱动步进电机的
驱动步进电机要8个MOS管而不是4个哦。我找了一圈国内的电机专用MCU方案,全部都是只支持三相无刷电机的,只有6个驱动输出,没有8个的方案!我一直都做步进电机的应用,有点可惜,要想做步进电机FOC只能选分立器件方案:要么MCU + 栅极驱动器 + MOS管方案,要么MCU + 2*刷式直流电机驱动芯片方案。
最近编辑记录 海石生风 (2022-07-11 22:59:15)
离线
ncer 说:请教一下没有电流传感器的力矩控制大概是如何实现的?
电流传感器的加入是使力矩控制闭环,没有就是开环力矩,这时速度环的输出直接确定力矩的大小。
这不能叫做“控制”力矩吧
离线
@海石生风
电流检测有什么方案 不要低边的那种 小电流时测不准
离线
这个是有感还是无感的?
离线
david 说:@海石生风
电流检测有什么方案 不要低边的那种 小电流时测不准小电流测不准跟低侧还是高侧采样无关,跟放大器有关。想测准小电流的话应该用失调电压极小的运放,或者用电流检测放大器。
低边测电流会受mos管栅源电容的影响 导致mos管开启后短时间测不了电流 等能测时电流已经太大
失调其实都不是事 可以校准 关键稳漂要小
电流检测通常是Hall 那个噪音不低 而且贵
这个恐怕还是要高压运放测 而且要能测正负电流 好像成品电流检测放大器还都是测单向电流的
离线
楼主,能建个QQ群吗?最近也是在搞电机驱动,我发现论坛里好多人也有兴趣,所以建议加个群一起沟通分享方便些。
离线
@海石生风
应该可以只用3对管子吧,相位差90度,电压最高最低差0.8Vin,把A/B其中一个点连在一起PWM控制这三个点的电压能做到Vin,然后采样的话感觉应该只要采2个就够了……?
离线
海石生风 说:发现 灵动 的方案还有带预驱和MOSFET管的,集成5v LDO最高16V供电,完全单芯片解决方案,电路极其简洁!一个MCU加几个阻容器件搞定BLDC FOC!
有没有型号呢 我去看看
https://mindmotion.com.cn/products/mm32mcu/mm32spin/mm32spin_driver_mcu/
三个型号都带MOSFET管和高压LDO,只有MM32SPIN422C带运放。
最近编辑记录 海石生风 (2023-05-06 15:08:58)
离线
@海石生风
请问你有搞过异步电机的驱动吗?
离线
现在 芯片价格回复喽 zet6 竟然只要9块钱 哈哈哈
离线
用AT32F421可以不,64脚的才2块多
离线
牛!感谢开源分享!
请问有没有参考电路和电机选型?我可以做个demo板看看
离线
@chinazhangdj
看代码是没有电流环的。
离线
这是有感的吗?看代码好像是有感FOC
离线