介绍 Simulink 自动代码生成电机控制硬件开发板系统

目录

 

前言

电源电路

 MCU电路

开发板接口

关于电流采样和过流保护

 驱动部分

 总结


 

前言

   在介绍开发板之前突然有感而发想多说两句,本人从事电控行业也是有一些年头了,除了刚刚毕业就接触的电机控制外,就是电源控制相关的,像三相PFC,DCDC啥的。虽然赶不上业内大佬,但是也是有了些许心得,也算是勉强入了个门。在这里总结一点点自己的经历和踩过的坑。毕业接触FOC控制是用芯片公司提供的电机库进行二次开发,老实说就是调参加一些特殊应用的系统功能开发,对电机控制部分来讲就是一个黑盒子,参数整定也是参考官方的使用说明,真正去看代码有些是封装成库,有些则是开源了但是代码看起来难以理解。尤其刚刚开始接触的时候很多都是定点化标幺好的,对于标幺的电机库,对电机的兼容性比较高,基本都能跑,像ST的电机库这些芯片公司提供的参考。我相信接触过的都知道这代码看起来不是一般的难以理解,但是想让一个电机跑起来很容易。

   再后来接触到了基于模型的快速原型开发,自己尝试摸索自动代码生成后就像是打开了一扇新的大门,软件开发的速度成几何倍的上涨。有理论支撑的情况下不需要花太多时间在调参上面,也不需要花太多时间在码代码反复调试上。于是就想着自己设计一个控制器来做些实验玩玩。开始设计控制器的时候考虑的是MCU要支持浮点,毕竟Simulink生成的代码是浮点的,虽然可以定点化,不过浮点可以快速的验证算法的可靠性,不用考虑定点带来的不确定因素,因此就有了下面的这小块开发板。初学者建议先用浮点MCU更好理解各个物理量的传递而不用考虑标幺后公式和计算的复杂和难以理解,等对理论理解后再去考虑定点标幺,这样完整的体系就成了。板子设计出来后,我先后实现了有感霍尔FOC自动代码生成有感Encoder编码器FOC控制,还有一个有感磁编的FOC控制无感磁链高阶/低阶滑模观测器扩展卡尔曼滤波龙伯格观测器高频注入等。另外也实现了DTC的有感和无感控制死区补偿谐波抑制单电阻FOC,六步方波控制等。通过对这些观测器和优化控制策略的实现也进一步对电机控制有了更深的理解,对比各个观测器的特性也有一些了解,加之开发板的设计和调试对硬件的理解也感觉到了一些提升。市面上的电机各种各样,有感的有需求,无感的也有需求,应对不同的工况,对于电机控制来讲没有最完美的算法,只有最合适应用的算法。根据电机特性和应用需求,芯片算力,成本等综合考虑,合适的才是最好的!电机控制是应用的基础,在电机控制的基础上还有各种像风机,泵,洗衣机,冰箱,空调,电动车等等的复杂的系统应用,对于控制提出了各种不同的需求。

电源电路

通过稳压电源输入12V-24V的电压,采用两级的DCDC,第一级的DCDC完成24V到12V的转换,12V给驱动芯片供电,12V再通过一个DCDC得到3.3V给MCU和运放等供电。红色测试点方便对各个环节的电压进行测试以判断硬件是否能正常工作。另外,开发板防反接功能也加进去了,接反了也没事。

91e332ea183246bdba0e39ad742fbfac.png

 MCU电路

官方参考设计,MCU最小系统,照抄就行了,没有谁比官方更懂MCU,其他部分引脚按需求设计即可。现在的小板子已经测试兼容STM32F401 64PIN, STM32F103, 105 64PIN, PIN to PIN兼容,模型生成的代码也能跑,想跑103直接换芯片,据说有些国产芯片兼容STM32F103, PIN to PIN的,是不是就可以。。。有机会试试。

e358afe3692a4ebab983cd0eb4bdb9e3.png

 

开发板接口

开发板大小8cm*10cm, 可以运行安全电压下的各种永磁无刷电机,当然负载要考虑在安全负载范围,支持SWD,调试可以直接用Stlink或者Jlink, 上位机可以使用USB/UART进行通信,UART的通信支持2M的速度,配合DMA可以采样到实时性更高的数据。通过电位器可以调速,也可以通过上上位机通信调速。另外有两个DAC通道也可以辅助调试,显示电机运行过程中的实时状态。另外霍尔端口和Encoder端口兼容,可更好的去做有感控制。

627f5215036d431e821c929ef05b0987.png

接线图如下,像SWD和UART的接线都是比较常见的通用接口,只需要注意有些USB转UART供电是可选的,有些不行,需保证电压是3.3V,而不是5V,以前吃过亏,芯片莫名其妙的坏掉了。。。至于霍尔接口的话按照程序设定的接就行了,如果顺序接错了,一般电机是不能转起来的。三相线和霍尔顺序都需要对应好。如果是无感控制的话三相接反了只是会反转而已。

876cd34cf2b64c62b56adced0156e501.jpeg

 霍尔和Encoder接口设计兼容3.3V和5V的系统,毕竟有些霍尔或者编码器需要5V供电3bf5175d021d4ae0b63a3b23bc2d03be.png

 

关于电流采样和过流保护

设计了可以兼容三电阻采样,两电阻采样和单电阻采样,只需要把R75和R76去掉,焊上R77和R78就可以实现单电阻采样。运放的增益是5。过流保护通过比较器触发PWM判断,完全用硬件的方式实现。通过调比较器参考输入完成过流的限制。一共用到两颗双通道的轨对轨运放,相当于四个运放,其中三个用来采样电流,剩下一个通道用来设计成比较器。

3d24e92d405949c8861d40f9840a8bd4.png

 至于运放增益计算,直接虚短虚断,或者仿真一下电路,对比输入输出。或者偷懒直接用ST的Motor Control Workbench. 也可以根据需要自己配增益。对于不同负载的电机,运放和采样电阻的选取也是有讲究的。即要考虑采样精度,又要考虑功耗,一切取决于电机的负载大小和相电流。

aea4febe540c4465ae278df7598b1b53.png

 另外也添加了对三相电压的采样,目前通过ADC完成了三相电压采样,但是并没有用到,等以后有时间了再利用下。eafcbac6e5f84030b3ca062d3a1befc9.png

 驱动部分

驱动和MOS管部分的电路也完成了,MOS是在板子背面。想想以前在学校里买的一个套件,驱动和MCU控制板分开的,各两大块,而只是用来跑一个几十W的小电机,简直是。。。77ab19152d204e6eb94bd208f2d0ed03.png

 

 总结

就简单介绍到这里,小板子的设计虽然随心所欲,不过也能满足学习的需求了,也做了不少实验。对于作为一块小巧的学习板,也算是及格了。由于精力有限,还有很多想法只能后面一步一步的去验证实现了。

 

 

物联沃分享整理
物联沃-IOTWORD物联网 » 介绍 Simulink 自动代码生成电机控制硬件开发板系统

发表评论