宁睿 发表于 2024-6-11 08:47:54

【电机控制】FOC算法验证步调——PWM、ADC

【电机控制】FOC算法验证步调
https://img-blog.csdnimg.cn/direct/73d0a228fb634c3d862a2dc2e4ffc96f.png


前言

【电机控制】直流有刷电机、无刷电机汇总——连续更新
使用工具:
1.示波器:PICO7
提示:以下是本篇文章正文内容,下面案例可供参考
一、PWM——不接电机

载波频率12.5K
#definePWM_Fre            12.5

#definePWM_Perload      72000/(uint32_t)(PWM_Fre*2) //2880
分别让寄存器上桥发波50%,25%,0%,下桥互补输出,50%,75%,100%
       CMPA = 1440;        //(0.5+1)*2880/2
       CMPB = 720;       
       CMPC = 0;
将寄存器的值串口打印至上位机
https://img-blog.csdnimg.cn/direct/a691f5eda6c04b99807dac582e82f031.png
同时在仿真器显示
https://img-blog.csdnimg.cn/direct/af6a0a7f0c9c4075b8b7e5e09465a3e3.png
采样点,控制芯片引脚输出至预驱芯片引脚,本次实验采的是驱动器引脚,直吸收罗控制芯片引脚也可以
https://img-blog.csdnimg.cn/direct/edb319ff338e4c16afcacf62160f80cf.png
1、PWMA-H-50%

https://img-blog.csdnimg.cn/direct/b2e290be4e0d4201858896e2c2aceb86.png
2、PWMB-H-25%

https://img-blog.csdnimg.cn/direct/a38f55fd09b84677ae2e5884e9436ae2.png
3、PWMC-H-0%

https://img-blog.csdnimg.cn/direct/c099fa9167c541e78a91c7d214ca9251.png
4、PWMA-L-50%

https://img-blog.csdnimg.cn/direct/d3b38cba6eac40d0b3e035ded2f58a06.png
5、PWMB-L-75%

https://img-blog.csdnimg.cn/direct/8cacbc51abfe44d7b64fbf2d9bada7cf.png
6、PWMC-L-100%

https://img-blog.csdnimg.cn/direct/e4e04497fea042f893d10c4b68de21ef.png
二、ADC——不接电机

1.电流零点稳定性、ADC读取的OFFSET

串口打印出AD采样寄存器的值,看是否稳定
printf("%.4d,%.4d,%.4d\n", ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1),ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2),ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_3));       
                               
打印结果
https://img-blog.csdnimg.cn/direct/a6718ffd5e7b4a13b31faf7a7478282c.png
U相V相约有450个ADC值,W相约有1500个ADC值OFFSET
2.电流钳预备

直流稳压电源输出0.6A
https://img-blog.csdnimg.cn/direct/8a9427016b47404193d5cd58cad4c46c.jpeg
电流钳抓到0.6A左右
https://img-blog.csdnimg.cn/direct/823eb8222a2b4713a76dcd4b6ac54088.png
3.运放电路分析

https://img-blog.csdnimg.cn/direct/52c54b2433584d2f8756bc1f7f2d52d3.png
https://img-blog.csdnimg.cn/direct/00a9dae0273d4b96b7cce7d70dfa37c0.png
https://img-blog.csdnimg.cn/direct/c51f25a6c7e645d1a8f4258057605e34.png
https://img-blog.csdnimg.cn/direct/5b774fa652aa4ed2b1f2fe02fc53b334.png
1.电路OFFSET

程序上读取offset值的时候是在初始化阶段,电机处于停止状态,此时的相电流即是0。
(VM_IA -V6)/R28=(V6-VGND)/R36
VM_IA=3×V6
V5=VA×R42/(R41+R42)+VREF×R41/(R41+R42)=0.91VA+0.159
由虚短可得,V5=V6
VM_IA=2.73VA+0.477<=3.3V
下桥险些没有电流畅过时,不带电机测试时,可以测得为0.48V
2.AOP

AOP=Vout/Vin=VM_IA/VA=2.73
3.采样电路的采样值范围

2.73VA+0.477<=3.3V
VA<=1.03V,Rshout=0.05Ω
IA=VA/Rshout<=20.6A
相电流最大收罗20A
4.相电流与ADC采样值的关系

我们需要计算相电流与ADC采样值的关系,也就是说,通过ADC采样的值,经过数学公式计算,可以计算出来当前相电流为多少,再根据相电流进行FOC变换
IA=7.3×VM_IA-3.5=7.3×VM_IA×3.3/4096-3.5-offset
此时VM_IA为ADC采样值,通过单片机引脚接入
电流=(ADC原始值/4096∗3.3-offset)/采样电阻阻值/运放放大倍数
相电流=(offset-ADC原始值)/4096∗3.3/采样电阻阻值/运放放大倍数
采样电阻阻值= 0.05
运放放大倍数=2.73
https://img-blog.csdnimg.cn/direct/9bd84f995a3e466bbd0899aa6b3066d2.png
相电流=(offset-ADC原始值)/ 0.006
printf("%.4f,%.4f,%.4f\n",(AdcValue.PhaseUCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006,(AdcValue.PhaseVCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006,(AdcValue.PhaseWCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006);       
5.V相电流

https://img-blog.csdnimg.cn/direct/f18b2f516b614896b468d65bf65bacbd.png
4.电流极性判断——接电机

       CMPA = 1440;        //50%
       CMPB = 288;        //10%
       CMPC = 288;        //10%
https://img-blog.csdnimg.cn/direct/3b74137dd1b84fc284d09f97b0242965.png
三、参考文献

运放-同相放大与反相放大
foc学习条记3——电流环
关于FOC相电流采样电路参数的分析
FOC(电机矢量控制)调试记录
STM32之ADC
总结

本文仅仅简单介绍了【电机控制】FOC算法验证步调,评论区欢迎讨论。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【电机控制】FOC算法验证步调——PWM、ADC