- 博客(32)
- 收藏
- 关注
原创 龙伯格观测器(学习记录)
链接: https://pan.baidu.com/s/1HeBsINAOcbEw8r_BKDGsyQ 提取码: kb2x。通过网盘分享的文件:Luenberger.zip。--来自百度网盘超级会员v6的分享。
2026-10-13 01:38:00
107
原创 滑膜观测器(学习记录)
我这边使用了IF强拖的方式去启动电机,强拖到一定的速度后开始进行SMO观测器估算,估算的角度与IF强拖的角度基本吻合。上面的百度链接是代码和模型,仅提供参考。注意:因为我使用的是表贴式永磁同步电机,所以下面的公式推导也是按照表贴式来推导的,即Ld = Lq = Ls。3.4 最后再调试PLL锁相环的PID,让锁相环估算的速度和角度与Motor自带的一致,然后使用锁相环的角度去闭环控制。3.2 开始调试滑膜传感器的时候,先不要立马就上PLL锁相环,先使用反正切去调节传感器观测出来的电角度。
2026-10-06 15:31:46
224
原创 FOC SVPWM过调制(学习记录)
(1)过调制算法并不难,其核心就是去计算出电机的 |Us| 的大小,然后去判断电机位于那个过调制区。在过调制2区里面,需要根据合成矢量 | Us| 的值去计算出黄色区域的角度范围(图片里面值展示扇区1和扇区2的部分内容)。区分过调制1区和过调制2区的主要目的就是为了让电机,从矢量圆过度到过调制的时候更加的平滑。(1)过调制区判断:过调制分两个区,分别是过调制一区和过调制二区。从上面的图片可以看出来,过调制的判断其实就是去计算电机的。不同的过调制区使用的办法不一样,比如过调制1区可以通过。
2026-10-05 05:06:07
238
原创 IC-MU128编码器使用教程
由于目前我还不是很熟悉这款芯片,等后面供应商过来校准后,开发更详细的资料后,后续我还会再写一篇文档补充,目前只是记录一下如何验证该款芯片的通信。比如软件复位是0xD2、0x75、0x07就是对应写寄存器,写地址0x75,写命令是0x07是软复位操作。通过0xAD、0x00、0x00来判断写操作是否生效。比如:0x97+0x74去获取编码器的型号,然后通过0xAD、0x00、0x00来查看读操作是否生效和获取数据。通过发送0xB0、0x83去激活芯片,芯片会返回0xB0、0x20进行应答。
2026-09-30 16:23:15
180
5
原创 PMSM FOC控制1.5Ts补偿策略
之前在开发过程中遇到一个情况,就是电机的控制控制效率特别低,而且电机的实际功率也达不到额定功率。之所以会出现上面的这些情况是因为这几个因素在做怪:1、电角度滞后了2、电机控制生效的延后了。
2026-09-28 16:50:25
237
原创 EtherCAT CSP/CSV/CST模式使用说明
在EtherCAT协议中,常常会看到几种模式,分别是PP、PV、PT、CSP、CSV、CST、Hm模式。这几种模式之间的差异是什么呢?PP、PV、PT模式的运动规划是由电机去实现的,控制器只需要下发指令即可,所以在PP、PV、PT模式下一般对象字典都会设计到斜率(加速度)相关的对象字典,下发指令之后,电机会按照设定好的加速度进行规划运动。CSP、CSV、CST的轨迹规划是由控制器去实现的,电机周期性接收规划后的指令,根据通讯周期与电机的控制周期,将目标指令拆分插补进行控制。
2026-09-02 01:16:44
247
原创 非线性磁链观测器(学习记录)
上面是我买的开发板的配套电机的参数,从示波器的数据可以看出来,我的Vpk-pk = 5.44 - (-5.12) = 10.56V,Tel = 9.20*2*ms。在仿真之前,我们需要获取到电机的磁链参数。目前存在的情况,在调试的过程中发现,有时候直接使用观测器去直接闭环会出现闭环失败的情况。一般情况仿真跑起来后,烧录到代码中的效果不一定好,根据实际调试波形情况,不断在仿真中调试,不断的重新生成代码测试即可。其中Vpk-pk是正弦波的最大值和最小值的差(峰峰值),频率f是这个正弦波的周期的倒数。
2026-08-09 12:02:43
249
原创 ST官方HALL传感器移植记录
目前这套Hall传感器功能是参考ST官方电机的内容去移植和适配自己的开发板,之所以去学习ST官方电机库,是因为在HALL是否上面使用ST官方的代码比较规范化,能实现根据TIM计数值实时调整定时器的分频值功能。ST官方的HALL传感器的实现原理大概是根据转速去调整定时器的分频值,当电机由高转速切换到低转速的时候,会导致HALL之间的定时器计算值出现上溢的情况。在定时器的更新中断里面去增加分频值。
2026-08-06 02:16:17
223
原创 CANopen学习记录(三)
现在开始学习使用如何使用canfestival去移植CANopen。直接去CANopen的官网去下载或者。有时候官方下载不了,挂梯子也没有用!真的是恶心!
2026-07-12 22:58:35
333
原创 STM32H743 使用内部Flash保存数据实验
注意的是使用STM32H743去读写内部的Flash是不需要STM32CubeMx支持的,一般生成的工程里面会自带stm32h7xx_hal_flash.h文件里面会自带相关的函数。目前我使用的芯片是STM32H743。原本是使用的STM32F407的芯片,后面因为芯片性能的问题,被迫升级了至STM32H743系列。在软件开发的过程中不必免出现需要设计到调试参数和保存参数的情况,保存的参数要么是保存到外部的FLASH中或者内部的FLASH芯片中。测试结果:写入内部Flash的数据和读取出来的数据是一致的。
2026-07-08 21:36:10
268
原创 CANopen协议学习(二)
其范围是0x00到0xFF之间。下面可能我会讲EtherCAT里面的CoE内容和CANopen的内容合在一起,其实他们两个是同一种协议的两种不同实现方式,对象字典差不多是公用的。
2026-07-05 23:07:54
286
原创 EtherCAT协议如何在CIA402协议中添加PDO
普通的IO模式的PDO添加可以参考这篇文档。下面将演示如何在CiA402协议的基础上面添加PDO和Slot模块。
2026-06-26 09:54:16
269
3
原创 EtherCAT从站EEPROM数据配置说明
但是芯片上电的时候去读取外挂的ESC芯片的时候发现卡在了读取ID=0x87654321这一步。ESC芯片在初始化的时候,会读取Eeprom->ConfigDara的前16个字节用于配置上面的设置,比如Eeprom->ConfigDara = 800E00CC8813f000000000800000。或者在读取数据的时候发现读取出来的数据不对,比如在读取ID的时候返回的值对应不上。一般是芯片没有正常复位导致的。0x80会用于配置ESC的0x0140寄存器。0x0E会用于配置0x0141寄存器。
2026-06-08 10:03:03
316
原创 EtherCAT从站添加SDO对象字典
当在SSC tool中使能参数时,会生成默认的cia402例程时。此时对象字典的添加不再支持再通过导入excel的方式完成。需要在原有基础上手动修改xml和从站代码。如何在CiA402协议的基础上面添加SDO访问呢?通过测试验证SDO功能的添加是比较简单的,下面将以0x6075为例演示一下操作过程:0x6075是CiA402协议中的对象字典。在CST模式下,主站会去通过SDO去读取0x6075的内容,通过0x6071的值就可以换算得到电机的控制的电流有效值。
2026-06-07 19:54:47
124
3
原创 CANopen协议学习(一)
CAN是通过CAN_H、CAN_L之间的电平差来判断“显性电平”和“隐形电平”。显性电平:CAN_H和CAN_L的电压差为2V隐形电平:CAN_H和CAN_L的电压差为0V一般情况下使用差分信号去做传输都是为了抗干扰,当有干扰的时候,CAN_H和CAN_L的干扰的变化都是一样的,最终他们的电压差的值会不变。比如RS485也是差分信号传输。不要理逻辑0和1,只需要记住显性电平电位差是2V,隐性电平电位差是0V即可。CAN协议的波特率与传输距离有关,可以根据实际的应用场景去选择自己的波特率。
2026-06-06 02:13:55
253
原创 TwinCAT实时性网卡配置
可能是TwinCAT版本导致的,之前我在安装TC31-Full-Setup.31.4024.10版本的时候遇到过这个问题。我是通过删除TwinCAT,然后重新安装4024.62版本解决这个问题的。下面是我在配置实时性网卡过程中遇到到的一些问题,其实不同版本的Window电脑,不同环境之间存在差异,会出现各种不兼容问题导致实时性网卡无法使用。下面是对应的Intel网卡驱动安装下载的位置,好像是可以识别你的网卡,然后自动给你安装对应的驱动。TwinCAT对网卡是有要求的,一般情况下会要求重启,重新启动即可。
2026-06-05 21:44:42
663
原创 STM32CubeMx 配置高级定时器TIM1刹车实验
目前公司的关节模组基本功能开发完成了,最近在实现过流保护的功能,原本是使用外部中断去触发一个中断,然后我在中断去关闭PWM的输出。目前测试的结果是刹车引脚处于低电平的时候能关闭PWM的输出,Automatic Output State使能了后,如果刹车引脚恢复高电平了,会自动恢复PWM的输出。从上面的图片可以看处理,CH2通道(高侧的PWM),关闭输出的时候并非是完全的低电平,而且2.0V左右,这就很奇怪了。目前我的实验是在上一篇的基础上面去做的,验证一下STM32CubeMX的不同配置会带来什么结果。
2026-05-27 20:42:44
816
原创 TwinCAT卸载教程
链接: https://pan.baidu.com/s/1mOo7bHQCsue3LCSMFgA6Dg?pwd=ujjq 提取码: ujjq。安装TwinCAT-Package-Manager-Setup1.0.545.0.exe的时候需要使用管理员身份进行安装。这里电脑会自动重启,然后开机显示下面内容代表着TwinCAT卸载完成。安静等待,可能时间比较久,遇到提示全部输Y。通过网盘分享的文件:uninstallTwinCAT。--来自百度网盘超级会员v5的分享。注意根据实际情况修改你的目录。
2026-05-26 22:16:49
1206
原创 EtherCAT DC同步Sync0_Isr/PDI_Isr中断问题
前几天在LAN9252上面移植了FSMC接口,公司打的开发板到了,通过测试后发现Sync0_Isr中断在DC同步周期内被触发了两次,在硬件上面飞了IRQ和SYNC的引脚使用示波器抓取。发现LAN9252的IRQ中断被触发了两次,通过对代码调试发现,在PDI_Isr触发了Sync0_Isr函数的执行。解决办法就是对AL Event Mask Register(0x204)进行屏蔽。
2026-05-23 20:11:55
127
3
原创 STM32CubeMx+LAN9252移植FSMC
之前写了一篇LAN9252移植的文档,是基于SPI接口的,但是在电机端的代码开发差不多的时,上了EtherCAT通信发现使用SPI与LAN9252进行通信带来的结果就是SPI的通信速率太慢了,MainLoop()函数在主循环中执行的时间在340us,即使后续进行了优化,时间仍然有150us。原因是MCU与LAN9252进行一次通信时候会涉及到8~9个字节通信,即使SPI的速率很高,有几十M,但是一次通信仍然花费了10us左右,而且MainLoop中会涉及到十几次读写操作,而且必须是阻塞读取。
2026-05-19 23:44:56
1298
3
原创 Vivado 17.4 安装教程
这里的提示窗口意思是提醒你现在最新的版本是25.2。然后再点击右下角的Next进入下一步。百度网盘资料:https://pan.baidu.com/s/1B6ZtUPwlqzQ8Yyca1kqpkA?根据自己的需求修改安装路径即可,不一定需要安装在C盘,安装路径不能有中文存在。安装完成后会弹出许可和Matlab版本的支持,这里我们全部跳过。这里是一些芯片型号和开发工具的选择,这里我们全部点上对勾,然后点击Next。到这里已经完成了Vivado的安装了。这里全部点上对勾,然后点击Next。
2026-04-15 00:00:00
475
原创 滑动均值滤波算法
滑动均值滤波算法的实现原理非常简单。每次执行模拟量采集的时候去更新数组的数据,然后对数组进行求平均值。在FOC开发过程中涉及到母线电压和温度传感器数据的滤波算法,特意记录一下这篇文档。
2026-04-13 09:43:50
756
原创 FOC IF/VF强拖启动
从前面的分析中可以看到,我们需要先设计好强拖的曲线,大概意思就是强拖加速的过程中,各个周期的角度θr的变化。强拖启动后,当速度达到一定的条件的时候。垂直d轴的时候是最好的,但实际的过程中往往无法实现,要么就是 Iq 与 d轴 的夹角小于/大于 90°,这个Iq的大小是一个待调试的值,不能过大和过小。强拖的目的一般都是让电机达到我们期待的速度,这样电机具有强明显的反电动势,方便无感算法进行闭环控制。在进行强拖之前,需要进行转子预定位操作,让转子的d轴与U相重合,这样进行强拖的时候,强拖的角度才是正确的。
2026-04-11 02:47:32
745
原创 IC-MU128磁编码器芯片通信验证
该芯片是使用BISS或者SPI去通信的。由于我使用的是STM32作为MCU,所以只能使用SPI去通信。从手册上面了解到的是该款芯片是只支持SPI0和SPI3模式。目前的话我使用的是软件SPI去验证通信的,没有使用硬件SPI的原因很简单,硬件工程师那边画错了。由于目前我还不是很熟悉这款芯片,等后面供应商过来校准后,开发更详细的资料后,后续我还会再写一篇文档补充,目前只是记录一下如何验证该款芯片的通信。目前和供应商那边沟通的情况是,SPI通信波特率小于10Mbit即可,具体多少手册上面也没有写。
2026-03-28 09:53:12
485
10
原创 STM32CubeMx 软件模拟SPI四种模式
目前的话一般是推荐使用基本定时器去作为延时函数的计数,从表格中我们了解到的是基本定时器分别是TIM6、TIM7,分别是挂载在APB1上面的。模式0:CPOL=0,CPHA =0 SCK空闲为低电平,数据在SCK的上升沿被采样。模式1:CPOL=0,CPHA =1 SCK空闲为低电平,数据在SCK的下降沿被采样。模式2:CPOL=1,CPHA =0 SCK空闲为高电平,数据在SCK的下降沿被采样。模式3:CPOL=1,CPHA =1 SCK空闲为高电平,数据在SCK的上升沿被采样。
2026-03-25 13:41:06
292
原创 STM32CubeMx 配置三相互补PWM + 死区时间计算
在使用STM32作为控制器去开发电机FOC的时候,往往需要配置三相互补PWM的死区时间,如何快速确认死区时间的范围和配置呢?
2026-03-12 15:44:49
950
原创 [EtherCAT] LAN9252移植保姆级教程+CiA402协议
singleDoc# 《LAN9252从站移植记录》这是我写的第一篇文档,希望对想移植LAN9252的同学有帮助。
2026-03-03 17:29:28
969
32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅