内部优惠券网站怎么做,投稿平台,免费观看,校园网站开发的目的目录
Encoder 原理
STM32 Encoder 计数原理
模型仿真
模拟Encoder
基于Encoder计算角度和速度
关于启动的仿真
代码生成
运行演示
总结 总结一下基于STM32的Encoder接口的电机运行#xff0c;相应的仿真和实验都是基于一个1024脉冲的增量式光电编码器#xff0c;关于…目录
Encoder 原理
STM32 Encoder 计数原理
模型仿真
模拟Encoder
基于Encoder计算角度和速度
关于启动的仿真
代码生成
运行演示
总结 总结一下基于STM32的Encoder接口的电机运行相应的仿真和实验都是基于一个1024脉冲的增量式光电编码器关于模型的建模也是基于实际的实验电机和实际的编码器。
Encoder 原理
实物图如下2500P/R就是电机机械转360一共有2500个脉冲实验用的是1024脉冲的下图仅作参考 线序 内部结构 对于工程应用来说只需要知道它输出的信号有什么含义。如下
A和B分别是脉冲数不同的编码器可能电机转一圈的脉冲数不一样精度越高脉冲数越多
定义正转A超前反转B超前
Z则表示电机已经转完一圈如下图机械一圈对应的电角度是2*2pi, 因为实验用的小电机是两对极的。 从编码器的原理来看想要得到电机的角度就需要计算脉冲数当转速很高脉冲频率也会很高这个时候靠定时器来采样脉冲数变会变得不现实。这个时候就需要专用的Encoder接口了。
STM32 Encoder 计数原理
Stm32就提供了一个Encoder接口根据其原理配置了Encoder的接口工作原理如下A对应TI1, B对应TI2电机正向转动时计数器根据输入的AB信号每一个上升沿加1每一个下降沿也加1这样对于1024脉冲的编码器转一圈计数值就是4096。也可以配置成其他模型这里我们配置成4096个计数值。 Z信号的输入配置成一个外部中断每触发一次把计数值清零这样的话角度的计算值就限制在了0-4096也就对应成0-4pi的电角度了。如果不用外部中断触发的话直接读取计数器的值这样角度就会从0-2^32。F401的Timer 2 计数寄存器是32位的。计算角度时对4096取模即可。这里实验配置成0-2^32。
模型仿真
根据STM32的Encoder接口可以知道MCU底层能传递的只有0-2^32反向递减的计数信息因此生成代码的部分需要读取计数值模拟Encoder的输出的角度信息也就是模拟MCU的Encoder接口最后加上控制系统把系统闭环。
模拟Encoder
如下分别模拟了实际Encoder的信号以及STM32Encoder接口的输出和实物一致。 ABZ以及当前电机的电角度
正转 反转 经过STM32的Encoder接口后取模后
正转 反转 基于Encoder计算角度和速度
底层Encoder接口拿到了脉冲计数因此应用层需要把计算值转换成角度和速度信息这部分是要生成代码的。在MCU里角度的计算也放到ADC中断也就是FOC计算的周期这里是10Khz. 两者角度完全重合在一起 实际转速和Encoder计算的速度 关于启动的仿真
由于仿真的时候Encoder的初始计数值是0电机的初始角度也是0所以电机能正常启动并运行但是实际中电机的初始角度和Encoder不可能完全在0位置对应且不变这里通过模拟改变电机的初始位置。
如电机的初始位置改成10度电机的实际位置和Encoder计算的角度就会有一个固定角度差相电流也会因此变大。 这个时候这里通过给定初始角度和Id 让电机固定在一个初始位置如0这样就已知电机的初始角度为0同时清除Encoder的计数值。如下是启动角度的变化
其中黄色是电机的真实角度蓝色是Encoder计算出来的角度红色是重置计数值的编码器的计数值计算出来的角度。电机初始不在零位置。 代码生成
底层只需要读取出Encoder的计数值传递给模型生成的接口启动前固定初始位置标志Encoder_Rest状态标志当固定初始位置时把Encoder的计数值初始为0。 集成代码并下载到MCU 运行演示
在小风扇上安装一个编码器并和开发板的Hall接口连接接口支持Hall和Encoder编码器和电机用联轴器连接简单固定下进行测试。 ABZ编码器运行演示总结
本实验通过仿真模拟了STM32单片机的Encoder接口并对其进行角度计算从仿真系统上实现了整个过程也把启动和运行的流程通过模型生成代码在硬件上实现验证了模型的可靠性。