# FOC_control **Repository Path**: WONE123/foc_control ## Basic Information - **Project Name**: FOC_control - **Description**: FOC开环控制,实现了开环驱动电机,无磁编码器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-09-14 - **Last Updated**: 2024-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XUANFOC 软件:CUBMAX6.11,KEIL5 硬件:正点原子电机套件,正点原子 PMSM 电机 代码运行流程: 1. 首先进行板载外设使能:`Enable_init`(); 2. 在 APP.c 中运行状态机程序 ## USR_APP 上层代码实现 ### APP 上层主函数 ### Luenberger 观测器实现 ### foc foc 算法实现,主要功能为 IqId 电流闭环控制 ### PMSM 控制对象的一些初始化 ## DSP 数学计算公式库 计算 cos,sin 需要用到 ## USR_BSP 板级支持包,作为中间层,整合底层驱动代码,为上层 APP 层提供工具 直接接触板子各种外设 ### enable 工程初始化使能 ### Encoder 编码器处理文件(增量式编码器) 启动需要对齐 Z 相 ### Tim_callback 定时器中断回调函数 处理编码器 Z 相中断,TIM1-CCR4 实践触发 adc 采样 ### bsp_dwt 计算周期,用于 pid 计算微分以及一些 debug ## USR_TOOL pid 算法以及一些滤波算法 ## 遗留问题&目标 - [x] 电流环闭环 - [x] 编码器校准 - [x] Z 相清零减少误差 - [x] 电流环频率会受到编码器回传频率影响? - [x] 转速闭环 - [x] 转速闭环(+估测速度反馈)系统震荡?(估测器带宽远大于 wn,所以 wn 要设计小一点) - [ ] Ld&Lq 辨识:开源闭环方法(效果不太好,先用现成的方案,后期再考虑更好的辨识方法) - [x] L 观测器设计验证(验证转速&负载力矩观测) - [ ] L 观测器两种转速观测的差别分析(参考薛成机教授的课本) - [ ] 三次谐波注入(SVPWM 替代) - [ ] 滑膜观测器/高频注入 - [x] 前馈(加大负载) - [ ] 电流环非线性项补偿(实际没用上) 各种电流控制模式: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/98a07426eb7849bc996d7bf8859cfb02.png) ## psms 规格书 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/aae475ffaedf45bea809e1b80b2dc84b.png) 转矩常数 Kt= 0.05 Nm/A。 ## 遇到的问题&解决方案 ### 电角度计算 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/43ddc449bf254505a8a64ae6ac408503.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4d25df0734444cc2a181cdac04c3070f.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1b21ed07f6a14dbd8617e0e68583e699.png) [编码器单片机代码](https://blog.csdn.net/weixin_39520013/article/details/111371912?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%AE%9A%E6%97%B6%E5%99%A8%E7%9A%84encode%E6%A8%A1%E5%BC%8F&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-4-111371912.nonecase&spm=1018.2226.3001.4450) ### 采样电流问题 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b415f903067c43879b2746e49f55692b.png) **三相电流要按照顺序,不按照顺序 dq 电流会无法解耦!:** ```c AMP_IUc = HAL_ADCEx_InjectedGetValue(&hadc1, 1); // w 3:adcio1 AMP_IUb = HAL_ADCEx_InjectedGetValue(&hadc1, 2); // v 6:adcio2 AMP_IUa = HAL_ADCEx_InjectedGetValue(&hadc1, 3); // u 8:adcio3 AMP_IUb = AMP_IUb * 3.3f / 4096.0f; // w AMP_IUa = AMP_IUa * 3.3f / 4096.0f; // v AMP_IUc = AMP_IUc * 3.3f / 4096.0f; // u PMSMmotor.foc_curren_param.Ia = (AMP_IUa - 1.25f) / 6.0f / 0.02f; // 三相电流 PMSMmotor.foc_curren_param.Ib = (AMP_IUb - 1.25f) / 6.0f / 0.02f; PMSMmotor.foc_curren_param.Ic = (AMP_IUc - 1.25f) / 6.0f / 0.02f; ``` ### 过调变与限幅 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/043abca146a24f4e8a79ab419d163066.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/da5985756bb640b597c1b00d44ee6498.png) ### 编码器校准(增量式) [编码器校准问题](https://www.bilibili.com/video/BV1iV4y1F7Sv/?spm_id_from=333.337.search-card.all.click&vd_source=de6741341bfe6cb58e28840d3d5448c9) [电流环 mcu 控制关键](https://blog.csdn.net/jdhfusk/article/details/120646346) **注:80.0f 为电角度=0(令 theta =0,Ud=1)时 encode 的数值** ```c float ENCODER_MAX_COUNT = 4000.0f; /*编码器最大值*/ float ENCODER_SINGLE_COUNT = 4000.0f; /*单圈编码器值*/ /*记录数据*/ feedback->Last_encode = feedback->encode; /*获取数据*/ feedback->CCW = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3); feedback->encode = __HAL_TIM_GET_COUNTER(&htim3); // 总共4000 /*处理数据*/ //feedback->angle = (feedback->encode % ENCODER_SINGLE_COUNT * 360.0f) / ENCODER_SINGLE_COUNT; feedback->angle = (feedback->encode + ENCODER_SINGLE_COUNT - 80.0f) * 360.0f / ENCODER_SINGLE_COUNT; if (feedback->angle < 0) feedback->angle = feedback->angle + 360; else if (feedback->angle > 360) feedback->angle = feedback->angle - 360; feedback->theta = feedback->angle / 360.0f * 2.0f * PI * pole_pairs; // rad 电角度 ``` ## 参数辨识 本杰明参数辨识: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d72c9754783446079993dffa7ad230e6.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ebc68adb1aa04530915739cf881d437d.png) Rs=0.5873 欧 L = 88.78 uH=0.00008878H ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7fa2d14356be4c7bbc9fb20f2b25c99e.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/80f1d79b5a7c4b17b22b13c6444a1a01.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5f29ae14b4e84641951aeab916389805.png) 小结: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e0b63921bba343c4a071933f7c38ccce.png) Rs= 1.02/2 = 0.51 欧 LqLd ~ 0.00059 / 2 = 0.000295 H 本杰明测试: Rs=0.5873 欧 L = 88.78 uH=0.00008878H wb=1000 p = wq * lq=1000*0.000295= 0.295 = 1000 _ 0.00008878=0.08878 i = Rs _ Wb = 0.51 _ 1000=510 = 0.5873 _ 1000= 587.3 wb=500 p = wq * lq=500*0.000295= 0.1475 = i = Rs _ Wb = 0.51 _ 500=255 ### 实验 1:Rs 辨识 ```c theta=0; id = 3 ;//Ud=a Id = 4 ;//Ud=b rs= (b-a)/(4-3) ``` ### 实验 2:Ld&Lq 辨识 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d46fed2d014849b887c3ff323a9ff719.png) Ld: iq 反馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/54c5cfc268bd4f36ba7674be6f7c9b86.png) ud ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f3a125bf222c48baab8d9f07b4abee11.png) ```matlab Rs = 0.58;PI=3.1415926; Vp2p=1.2612; Ip2p=1.8552; w2=1/((2*PI*100)^2); Ld=sqrt(((Vp2p*Vp2p/Ip2p*Ip2p)-Rs*Rs)*w2); ``` Ld =0.0018 H 跟规格书差距过大? ## 速度估测器 j=0.00003264 wsc=150 wn = 150\*3=450rad/s //估测器带宽 Kp=13.2192 Ki=2,974.32 g = 900 速度估测放在前馈之前 估测器带宽 wn=450 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/167463ca87d740369e48c5fed08f1264.png) 估测器带宽 wn=450,+负载反馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7a86cc7708ad48d9b208f00f26fe1839.png) 估测器带宽 wn=450, 不加负载反馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2a427ba79eeb45b3a76b987335c812fa.png) wn = 150 ,不加负载反馈 不加前馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ad5ca1decc5b4d9494aaf5fc485348c3.png) wn=150 加前馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fe8176a9dd364a8ca06c7bc55c568848.png) 速度反馈加载前馈后面(响应速度很快) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9eea60e3998345ce9ee54292c23a89e7.png) wn=150 ; TL 补偿 ; speedhat 反馈 ; speedhat 不加前馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5e9307fc4c8046aeae4c7bac3ec5414c.png) wn=150 ; TL 补偿 ; speedhat 反馈 ; speedhat 加前馈 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/adbf8380d7a0419491b4d7b277590a01.png) ## 负载 TL 估测器 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a63ed633853e4da2adfa6b63978b4108.png)