dukelec 发表于 2023-9-24 18:25:59

【CDFOC】开源 FOC 有感电机驱动

本帖最后由 dukelec 于 2023-9-24 18:29 编辑

开源地址:https://github.com/dukelec/cdfoc
wiki 有中文版 readme,代码库有原理图和 pcb 截图

- 支持多种 SPI 接口的编码器,默认 tle5012b,其它有 tle5014、ma731、ma732、ic-mu 等
- 三路采样电阻,pwm 输出可以开到 100%
- 一路 RS485 支持用户控制、打印调试、波形调试、代码 IAP 升级
- RS485 最高速率 50Mbps(需要接口芯片支持,默认贴的接口芯片是 14Mbps,后续可能默认贴 20Mbps 的)
- MCU 为高性能的 STM32G431CBUx
- MOS 驱动芯片为高性能的 DRV8323RS,保护齐全,驱动力等参数可软件调节
- 电路简洁,布局布线合理,干扰小,可提供完整的 KiCad 工程文件









codefish 发表于 2023-9-24 18:29:59

赞一个,有空研究一下。

n_cell 发表于 2023-9-24 18:49:10

赞一个?

jbpan852 发表于 2023-9-24 19:38:29

谢谢!不能下载,可以发到这个论坛上吗

newlife2lyf 发表于 2023-9-24 20:18:20

虽然大佬全开源了,但我还是懒得画板,请直接给个链接吧,我想买一套玩.{:lol:}

liao-ljj 发表于 2023-9-24 21:04:24

非常支持,厉害厉害....

了无 发表于 2023-9-24 21:21:06

感谢大佬分享,厉害厉害

dukelec 发表于 2023-9-24 22:19:54

本帖最后由 dukelec 于 2023-9-25 09:13 编辑

newlife2lyf 发表于 2023-9-24 20:18
虽然大佬全开源了,但我还是懒得画板,请直接给个链接吧,我想买一套玩. ...
(引用自5楼)

淘宝店铺搜我论坛 id

建立顺便带一个 cdbus bridge,不要外壳现在超便宜了
调试波形之类的更方便一些

使用 ft232 之类的 usb 转 485 也可以控制电机,可能要改 ft232 等板子的上下拉和终端电阻,
建议上下拉电阻改 330 欧姆,终端电阻默认不接。

newlife2lyf 发表于 2023-9-24 22:25:00

dukelec 发表于 2023-9-24 22:19
淘宝店铺搜我论坛 id
(引用自8楼)

好的,全套含BM3520H电机

dukelec 发表于 2023-9-24 22:28:56

newlife2lyf 发表于 2023-9-24 22:25
好的,全套含BM3520H电机
(引用自9楼)

多谢支持

qwe2231695 发表于 2023-9-24 22:40:06

太棒了,整体架构和我们量产的很像

akey3000 发表于 2023-9-24 23:17:25

大神科普下,这个一般用在什么产品上?冰箱、空调的电机,还是吹风的电机,还是叉车的电机,还是无人机的电机?

xml2028 发表于 2023-9-25 00:32:19

学学习了再说

sy8501 发表于 2023-9-25 01:04:07

最近给朋友定制的一块 一拖二FOC驱动,进行到第三版了,150kg载重底盘测试了2个月,10月份准备小批量了。

功能上比楼主的多了一些

带刹车电阻,可在控制调试软件可配置刹车电阻启动电压、
可带2个电机、
车规级抗干扰SSI差分长线编码器接口、做了磁编自动线性校准算法
USB type C 线直连电脑免驱、调试软件即插即用
使用CAN接口、
mos测温、2个电机测温、







sy8501 发表于 2023-9-25 01:13:24

散热层叠。

载重150kg,坡道保持电流40A,MOS最大温度不到50℃



sy8501 发表于 2023-9-25 01:20:08

嘉立创的仿真图




天下乌鸦一般黑 发表于 2023-9-25 08:37:14

666啊~我赶紧弄回来一套学习~

neverlic 发表于 2023-9-25 08:53:55

果断入手一套玩玩,向楼主致敬

TINXPST 发表于 2023-9-25 08:55:01

MCU用G431是个好选择,性价比高!TI的DRV8323现在价格还好,之前太贵了。

dukelec 发表于 2023-9-25 10:13:06

本帖最后由 dukelec 于 2023-9-25 10:15 编辑

sy8501 发表于 2023-9-25 01:04
最近给朋友定制的一块 一拖二FOC驱动,进行到第三版了,150kg载重底盘测试了2个月,10月份准备小批量了。

...
(引用自14楼)

我之前是有考虑把外置编码器改成差分通讯,最后没有改的主要原因是:

我倾向伺服的形态,每个电机带一个控制板,控制板和传感器板之间距离很近,而且有精心设计的屏蔽线可选,没必要用差分。
(个别产品我会把编码器芯片直接放在主控板上,做成圆形的板子。但我更多的是用这种通用的板子,免了不同电机都要重新画板。)

转成差分再转回单端,两次转换会带来延迟,特别是 SPI 处理起来很麻烦,SSI 方式不是所有编码器都支持。

譬如说 MA731/732 的效果,远比不上 TLE5012B-E1000



MA73x 默认 filter window 太大了,是 1024 us,一般要用 spi 配置成 64us 才适合 FOC 控制,否则电机效果出不来:
参数调猛一点,由于编码器的 filter 延迟,会导致电机抖动;参数调弱电机刚性又会很差。

MA73x filter 调成 64us 的时候,编码器有效位数只剩下 9.5 bits,相同条件下对比过其锁定噪音明显大于 TLE5012B 编码器

对于刹车电阻,我是计划有需要的时候单独做一个板子,外挂在母线电源上,检测到电源超标,就启动储能或者发热耗散。模块化的思想。

至于测温,我另一款相同代码方案的大功率板子有加,用的是 i2c 总线的数字温度传感器,可以加很多个点,当时加了两个点,一个加在电机一个加在 mos。

開一個 DIY 動力滑翔傘(電動)的【直播】貼
https://www.amobbs.com/thread-5753059-1-1.html


至于 usb,我比较反对加在电机控制板,特别是大功率的,伺服器的干扰很大,usb 抗干扰不行
额外增加电路面积和软件复杂度,容易引入小概率 bug,使用 usb 的 bootloader 也要大很多
而且对于一些机械臂之类的场景,机器一边甩动,一边用 usb 接在中间或末端关结调参,不是很方便,特别是机械臂包了外壳的时候
用我这个方式,可以在机械臂底部的控制线上直接调试任意关结的电机,同理方便用于其它各类设备的调试
而且,485 比 12M usb 还可以快好几倍


至于 can 接口,给力的话你也不用留 usb 接口了

jaywen 发表于 2023-9-25 10:18:26

sy8501 发表于 2023-9-25 01:04
最近给朋友定制的一块 一拖二FOC驱动,进行到第三版了,150kg载重底盘测试了2个月,10月份准备小批量了。

...
(引用自14楼)

你这3d图 用什么软件渲染的?很好看

phone 发表于 2023-9-25 11:02:26

到楼主店去看看,弄一个来玩玩。

sy8501 发表于 2023-9-25 11:22:43

dukelec 发表于 2023-9-25 10:13
我之前是有考虑把外置编码器改成差分通讯,最后没有改的主要原因是:

我倾向伺服的形态,每个电机带一个 ...
(引用自20楼)

SSI的局限性确实有,目前只有MP的磁编在用这套协议。所以编码器限制死了,只能MA73x

但spi单端引线,想要数据不出错,只能走个0.1m,跟电机绑一块的时候,0.1m有时候也很困难。

实际这种应用,驱动和电机分体,引线长度需求在0.8~5米不等,必须走差分通信。而SPI转差分的话,引线又太多,所以SSI省线的优势就出来了。

窗口延迟的问题,实际上没有你想的那么严重,MA732用默认参数就可以了,用的12bit,做了线性校准后效果还是很好的。

n_cell 发表于 2023-9-25 11:24:59

jaywen 发表于 2023-9-25 10:18
你这3d图 用什么软件渲染的?很好看
(引用自21楼)

这个只是3D,没有渲染{:titter:} ,真正的渲染是可以以假乱真的

参考一下我这个帖子的30楼渲染效果

sy8501 发表于 2023-9-25 11:25:04

jaywen 发表于 2023-9-25 10:18
你这3d图 用什么软件渲染的?很好看
(引用自21楼)

AD的3D视图,没有线条,所以糊到一块了。

导出step后,到任意专业3D软件,选择带线的视图,都有这个效果。(没有渲染)

可惜我显示器比较小,截图时候,很多细节都没了。

qwe2231695 发表于 2023-9-25 11:35:08

sy8501 发表于 2023-9-25 01:13
散热层叠。

载重150kg,坡道保持电流40A,MOS最大温度不到50℃
(引用自15楼)

你这个是车规级的高级东西了{:lol:}是AGV底盘用的吗

jyrpxj 发表于 2023-9-25 11:41:50

周末画了一个无感无刷的驱动板,移稙代码还无从下手,有一起玩的吗?


sy8501 发表于 2023-9-25 11:53:34

qwe2231695 发表于 2023-9-25 11:35
你这个是车规级的高级东西了是AGV底盘用的吗
(引用自26楼)

是AGV专用。

朋友公司就是干这个的。

flash3g 发表于 2023-9-25 11:54:12

sy8501 发表于 2023-9-25 01:13
散热层叠。

载重150kg,坡道保持电流40A,MOS最大温度不到50℃
(引用自15楼)

板子画的很漂亮,电容下面是什么胶?

sy8501 发表于 2023-9-25 12:23:01

flash3g 发表于 2023-9-25 11:54
板子画的很漂亮,电容下面是什么胶?
(引用自29楼)

普通的704硅橡胶 半流淌型

flash3g 发表于 2023-9-25 12:28:35

sy8501 发表于 2023-9-25 12:23
普通的704硅橡胶 半流淌型
(引用自30楼)

好的,谢谢您

boycn 发表于 2023-9-25 13:50:21

支持一下,楼主论坛的开源达人啊

lyl1070 发表于 2023-9-25 15:01:08

有无感的开源吗?

zzh90513 发表于 2023-9-25 15:10:14

你好,请教一个CDBUS技术问题,我想将CDBUS用于开发通用IO模块的背板总线,想请问50Mbps速率下距离能做到5米吗?另外1ms的双向数据更新,大约能收发交互多少字节?

powermeter 发表于 2023-9-25 15:16:24

sy8501 发表于 2023-9-25 01:20
嘉立创的仿真图

漂亮,就喜欢看大佬们的作品。

yc2 发表于 2023-9-25 16:42:21

给力,dukelec出品,必是精品。

lgg88 发表于 2023-9-25 16:53:38

强烈支持楼主

Aper-2020 发表于 2023-9-25 21:29:54

sy8501 发表于 2023-9-25 01:20
嘉立创的仿真图
(引用自16楼)

你的画板、走线风格跟我的很像{:lol:}

KuJJ 发表于 2023-9-25 22:39:46

期待无感的

akey3000 发表于 2023-9-26 08:34:09

sy8501 发表于 2023-9-25 01:04
最近给朋友定制的一块 一拖二FOC驱动,进行到第三版了,150kg载重底盘测试了2个月,10月份准备小批量了。

...
(引用自14楼)

请教下,大神主控用的哪家mcu,用的哪家foc算法

天下乌鸦一般黑 发表于 2023-9-26 08:41:49

再来顶个贴。大佬是来普度众生的么。这个价格。~这技术。。。。还开源了。。。

sy8501 发表于 2023-9-26 11:30:26

akey3000 发表于 2023-9-26 08:34
请教下,大神主控用的哪家mcu,用的哪家foc算法
(引用自40楼)

STM32F405RGT6 / APM32F405RGT6 / APM32F407RGT6 / APM32F407RGT7

887799 发表于 2023-9-27 21:34:42

大神,你开源的文件夹cdnet 为什么是空的?

dukelec 发表于 2023-9-27 22:22:48

887799 发表于 2023-9-27 21:34
大神,你开源的文件夹cdnet 为什么是空的?
(引用自43楼)

看我 readme 写的 git 命令,下载的时候要带一个 submodule 参数

dukelec 发表于 2023-9-28 12:02:27

zzh90513 发表于 2023-9-25 15:10
你好,请教一个CDBUS技术问题,我想将CDBUS用于开发通用IO模块的背板总线,想请问50Mbps速率下距离能做到5 ...
(引用自34楼)

布线好的话,5 米没有问题

CDBUS 有两个核心模式,仲裁模式 和 BS 模式(break 字符同步)

仲裁模式不建议使用太高波特率,因为首字节速率一般最高设定在 1Mbps, 首字节、以及同等速率换算的帧空格时间(至少 1.1 字节,一般建议 2 字节或 1.5 字节)会成为瓶颈

譬如 1.1 字节帧空格时间(其中 1 字节为空闲,0.1 byte 或 1bit 为发送等待),加上首字节,总共 2.1 字节时间。

如果使用 1Mbps+10Mbps,低速 2.1 字节可以换算成高速的 21 字节,一个帧除了用户数据,还剩下 2 字节帧头,和 2 字节 crc 帧尾,加起来共 25 字节。
如果用户数据 40 字节(最多 253 字节),那么总共 65 字节,对应时间为:1÷10000000×10×65 = 65us

如果使用 1Mbps+50Mbps,低速 2.1 字节可以换算成高速的 2.1×50 = 105字节
同样 40 字节用户数据,那么总共 105+4+40=149 字节,对应时间为:1÷50000000×10×149 = 29.8us

实际时间只快一倍,如果用户数据更短,则时间区别更小。


BS 模式可以单速率保存高速通讯,但是节点数不建议超过 10,越多效率越低
(而且要避免太高速率的情况下,一个大包后面跟多个小包,spi 来不及接收会导致丢包。)


而且,速度太快,要考虑 MCU 能不能及时接收数据,我这两天在优化 usb 转 485 盒子 cdbus bridge,之前使用 hal 库代码,dma 模式收一帧数据要 100 多 us(一个字节用户数据),空闲占了太多

改成寄存器控制 dma,只需要 8 us 多了(5 字节用户数据),很难进一步优化,是因为 mcu 主频有点低,跑到最高只有 64 MHz,SPI 也受 MCU 限制,当前设置为 32MHz。
(本来想换 170MHz 主频的 stm32g431cbux,SPI 最高 42.5MHz,但是 ram 32KB 太小,用来做 bridge 中转数据不太爽。现在 bridge 用的 stm32g0 是 144KB 内存)




akey3000 发表于 2023-9-28 12:37:58

sy8501 发表于 2023-9-26 11:30
STM32F405RGT6 / APM32F405RGT6 / APM32F407RGT6 / APM32F407RGT7
(引用自42楼)

大神foc算法是自研,还是用的哪家的方案

sy8501 发表于 2023-9-28 13:41:08

akey3000 发表于 2023-9-28 12:37
大神foc算法是自研,还是用的哪家的方案
(引用自46楼)

没有参考开源,全部自己写的。



zzh90513 发表于 2023-9-28 13:44:32

dukelec 发表于 2023-9-28 12:02
布线好的话,5 米没有问题

CDBUS 有两个核心模式,仲裁模式 和 BS 模式(break 字符同步)
(引用自45楼)

谢谢解答,因为不会FPGA,所以IO模块高速方案就受限了;目前IO模块主机准备用STM32H7,从机也准备用您说的STM32G431,总线上从机预计设计最多16或者32个;Output数据准备用轮询广播方式(上电初始化时将每个从机的数据映射到不同寄存器);输入数据只能依次轮询或者采用DC同步时间戳,主机发广播SYNC读指令,从机依次回复得方式。之前准备使用CANFD(5Mbps)方式,但算下来交互一遍需要几个ms,看到CDBUS(50Mbps),就想试试,能做到从机都收发一遍1ms内就完美了

dukelec 发表于 2023-10-12 23:22:10

本帖最后由 dukelec 于 2023-10-14 09:49 编辑

上传一份当前的 github 的资料,方便一些网络不太好的用户









CDBUS GUI 电机出厂设置:
(每个电机的 bias_encoder 不同,要提前备份一下,或者导入配置后重新校准编码器)


注意:2806 电机请使用 12V 供电,3520 电机请使用 24V 供电。
PID 参数是按照这个电压调试的,电压相差太多的话,会影响效果。


目前 MOS 焊了两款,最早一批发货用的 mos 是: BSZ105N04NSG (INFINEON, 40V)
之后发货已改用 mos: DMT69M8LFV-7 (DIODES, 60V)
5264 的座子,之前觉得白色的好看一点,没想到质量差一些,也已经换回灰色
(HCTL(华灿天禄) HC-5264-4AW (白色) --> CJT(长江连接器) A2505WR-4P (灰色))


后续 github 会持续更新,此处代码无法持续或及时更新。

timom333 发表于 2023-10-13 10:23:11

高级货点赞

天下乌鸦一般黑 发表于 2023-10-13 11:08:49

dukelec 发表于 2023-10-12 23:22
上传一份当前的 github 的资料,方便一些网络不太好的用户


(引用自49楼)

大佬~
我收到了~电机上的编码器板插座是7针的,和主控板对插的配线是6线6孔的插头,主控板那边没问题,编码器这边怎么插,一个是7针座,一个是6孔插头。。。。

dukelec 发表于 2023-10-13 15:31:45

天下乌鸦一般黑 发表于 2023-10-13 11:08
大佬~
我收到了~电机上的编码器板插座是7针的,和主控板对插的配线是6线6孔的插头,主控板那边没问题,编 ...
(引用自51楼)



红色箭头这里空一个 pin 就行
前期发货太赶,不然都会换成 7p 的胶壳

天下乌鸦一般黑 发表于 2023-10-14 09:05:58

dukelec 发表于 2023-10-13 15:31
红色箭头这里空一个 pin 就行
前期发货太赶,不然都会换成 7p 的胶壳
(引用自52楼)

收到。你这个电机选的是真好。用手拧着这个丝滑。

suebillt 发表于 2023-10-14 20:43:02

sy8501 发表于 2023-9-25 01:13
散热层叠。

载重150kg,坡道保持电流40A,MOS最大温度不到50℃
(引用自15楼)

电阻是DB制动电阻还是泄放电阻?

sy8501 发表于 2023-10-14 20:45:36

suebillt 发表于 2023-10-14 20:43
电阻是DB制动电阻还是泄放电阻?
(引用自54楼)

这2个名词,应该指的是同一个东西?

DB是什么鬼,第一次听说

suebillt 发表于 2023-10-16 09:33:41

sy8501 发表于 2023-10-14 20:45
这2个名词,应该指的是同一个东西?

DB是什么鬼,第一次听说
(引用自55楼)

DB制动是三相短路刹车,泄放是指母线电压高于设定值,把能量泄放掉。
不是搞伺服?

sy8501 发表于 2023-10-16 11:28:40

suebillt 发表于 2023-10-16 09:33
DB制动是三相短路刹车,泄放是指母线电压高于设定值,把能量泄放掉。
不是搞伺服? ...
(引用自56楼)

三相短路刹不住的。不会采用这种方式。

特别是速度闭环下,必须有反向扭矩才能让电机立即停下来。

一旦有了反向扭矩,就必然造成电源升压。

页: [1]
查看完整版本: 【CDFOC】开源 FOC 有感电机驱动