
STM32--FOC代码
文章平均质量分 81
里面是我自己在写FOC代码时遇到的问题以及经验分享
熊猫eye
热衷于机器人,欢迎交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FOC的PWM的重新配置以及svpwm的移植
因为中心对齐模式是,CNT从0计数记到ARR的值,然后再从ARR的值直接递减到0,这样才算一个PWM的一个完整的周期,所以现在的周期是原来的两倍。这两张图就很直观了,注意一下,我一开始设置的目标电流是0A,前面一个图是没配置之前的,后面一个图是配置好以后的,在同等的图形比例下,配置好的波形明显稳定多了,都是0.0005以内波动的,而上面那张图波动就很大,信号毛刺很多,尽管我两种配置都加了一阶低通滤波器,但一张图不管我怎么调参,他的毛刺一直都很多,很不稳定,第二张就不一样,还没开始调参就已经很稳定了。原创 2025-05-24 22:19:18 · 1357 阅读 · 0 评论 -
创建FOC电流闭环工程遇到的问题
就单单是这一句话,就困扰了我4到5天,我在这期间一直不断地在检查代码,不断地调整PID参数,结果现象还是,我给输入目标电流值为0.2A,电机空载的情况下永远达不到0.2A,最大只能到0.17,我输入100也是这样的情况。两路ADC采样所需要花的时间大概是47us,也就是差不多21.28KHZ,对于电流环的频率来说绰绰有余,再算上帕克变换,克拉克变换和其他一些运算所需的时间,电流环执行下来的一套时间,肯定是小于100us的,这样就能确保电流环不会滞后,同时也使ADC电容充电的时间更久,采样值更精确。原创 2025-05-21 11:55:45 · 804 阅读 · 0 评论 -
创建foc的PID文件与低通滤波器的注意事项(stm32)
因为当电流也需要滤波,速度也需要滤波,两个滤波函数是一起共用timestamp_prev和y_prev这两个变量的,如果这两个滤波器的函数不是同时执行的话,比如速度滤波函数刚执行完后,更新了timestamp_prev,而过了一会,又要用到电流滤波器的函数,这个函数就会调用刚更新的timestamp_prev,而不是之前的timestamp_prev,这样程序不就崩溃了吗?,这样就会导致下一次进入这个函数时,y_prev还是初始值,因为上一次的值在上一轮函数执行完后就失效了,所以必须采用指针赋值。原创 2025-05-14 16:52:09 · 530 阅读 · 0 评论 -
我在创建foc开环速度工程时遇到的问题
首先,把定时器PSC设置为167,使得CNT的值每微秒就增加一次,这样就算我while(1)函数执行的再快,velocityOpenloop函数里的TS也就能被正确运算,其次,我们要在while(1)中设置一个计时函数,使得程序每ms执行一次velocityOpenloop函数,这样所经历的时间TS测量得更精确,因为Ts = (micros() - open_loop_timestamp) * 1e-6f;其实问题的关键就在于我不清楚放在while(1)里面执行的函数,执行的频率到底有多快。原创 2025-05-08 16:38:49 · 1103 阅读 · 0 评论 -
基于STM32的foc代码的cubemx配置
本文的目的意在梳理一些STM32最基础的一些底层知识,主要是作者之前第一次学STM32单片机时,对于江科大讲的单片机根本没有深刻理解,而现在由于想要把foc代码由arduino平台给一直到STM32上,于是相当于是重新回顾了一遍STM32,发现现在开始能真正理解底层配置了。下文将介绍一些我对于底层配置的重新认识。作者的提醒:如果真心想把foc学深,学好并且还得灵活运用,个人认为还是要从底层配置开始,将foc代码从底层开始写起,毕竟我现在就是停留在能看懂foc代码,并且清楚原理的地步,但我感觉这样有种只懂理论原创 2025-04-25 22:14:08 · 1289 阅读 · 0 评论 -
碰到keil烧录时,出现No target connected解决方法
想解决这个方法,你首先要想想你是不是你一次用这个芯片,如果你是第一次用这个芯片的话,那么大概率是因为你没有安装该芯片对应的安装包,要从pack-install中下载。如果SW Device里的SWDIO 有出现类似这一串数据的话,说明是已经成功识别上stlink了,如果没出现,你需要考虑一下是不是你stlink接线接错了,比如SWDIO和SWCLK接反了,也有可能是stlink驱动的版本太老导致的。1.出现这样的弹窗警告,先打开魔术棒里的debug,看看烧录器型号有没有选对。原创 2025-04-24 12:25:46 · 1657 阅读 · 0 评论 -
foc中的spwm与svpwm的区别
接着需要用到帕克变换,把ua,ub的值给算出来,然后带到每个扇区特有的公式中,就可以算出在一个pwm波形的周期内,每一个磁场矢量(一个扇区由两个磁场矢量决定的)所需高电平的持续时间,而空载时间t0也是随着Uq的增大而减小,而两种Mos管的状态(即两种磁场矢量的做工时间成一定的比例,这个比例由夹角决定,与tan有关),算出来的tx,ty是代表该适量状态所对应的做工时间,还需要再进行一定的运算才能算出占空比。Mos其实有八种状态,其中两种状态很特殊,是三相的上下两管同时关闭与同时导通,这样电路才不会短路。原创 2025-04-08 22:11:47 · 726 阅读 · 0 评论