概述
我们先来看看定时器的编码器功能模块所在的位置
这里的编码器模块最终会输出读出的定时器计数到的波形数量,以及输出波形的方向
Timer:选择对应的定时器
Channel A Input Pin:通道A的输入引脚
Channel B Input Pin:通道B的输入引脚
PPR:编码器转一圈产生的方波
Reset couter sfter every counter read:勾选后,读取完了以后就复位,重新开始计数(一般用于记录转换成速度)。没有勾选,就不会复位,一直累计下去(一般用于记录位置)
Built-in Iput Capture Filter:用于A、B相的波形的过滤,概率性检查波形去掉不规则的方波以提高测量精度
Sample time:多少时间读取一次数据(因为这里并不是定时器的精准定时,亲测0.01秒比较稳定,可以利用Timer-IRQ实现精准时间读取数据)
下图为本次实验的配置:
使用的编码器单圈脉冲为130
每0.01s读取一次数据
我们再把每0.01s读取的数据转换成我们常用的数据速度单位(RPM,转每分钟)
我来解释一下上面是如何转化成RPM的:
- 我勾选“重置计数器当计数器,当模块被读取后”,我的编码器每旋转一圈读取130*4=520个脉冲数,如果电机转动正时钟从0到780,如果反时钟方向则是从780到0,所以添加一个求和模块,如果电机转动反时钟则“780-计数”
- 我设置的采样时间为0.01秒,每0.01秒读取一次编码器模块的计数,所以rpm=计数/520*6000;
最终模型如下图所示
下面为我们的上位机,箭头的模块是把数据导去工作平台,方便我们后面的滤波算法的设计;
最后我们来看看它的实际测速效果:我们可以看到数据跳动非常大,这是我故意挑选的一个精度比较差的编码器,以及前面所说的Sample time定时不准造成的
最后我们把数据存起来
本节所需的全部文件代码如下,请自行下载:
链接:https://pan.baidu.com/s/10C9xdvA-wAwmDGp5ifVVpg
提取码:iqw1
如有疑问请留言
最后
以上就是彩色口红为你收集整理的Matlab/Simulink 自动代码生成 基于模型设计学习教程(9)---- 编码器模式实验的全部内容,希望文章能够帮你解决Matlab/Simulink 自动代码生成 基于模型设计学习教程(9)---- 编码器模式实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复