我是靠谱客的博主 彩色口红,最近开发中收集的这篇文章主要介绍Matlab/Simulink 自动代码生成 基于模型设计学习教程(9)---- 编码器模式实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们先来看看定时器的编码器功能模块所在的位置

这里的编码器模块最终会输出读出的定时器计数到的波形数量,以及输出波形的方向

 

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的:

  1. 我勾选“重置计数器当计数器,当模块被读取后”,我的编码器每旋转一圈读取130*4=520个脉冲数,如果电机转动正时钟从0到780,如果反时钟方向则是从780到0,所以添加一个求和模块,如果电机转动反时钟则“780-计数”
  2. 我设置的采样时间为0.01秒,每0.01秒读取一次编码器模块的计数,所以rpm=计数/520*6000;

 

最终模型如下图所示

                        

 

下面为我们的上位机,箭头的模块是把数据导去工作平台,方便我们后面的滤波算法的设计;

                       

 

                                   

 

最后我们来看看它的实际测速效果:我们可以看到数据跳动非常大,这是我故意挑选的一个精度比较差的编码器,以及前面所说的Sample time定时不准造成的

                                  

 

最后我们把数据存起来

                 

 

 

 

本节所需的全部文件代码如下,请自行下载:

链接:https://pan.baidu.com/s/10C9xdvA-wAwmDGp5ifVVpg 
提取码:iqw1 

 

如有疑问请留言

 

              

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最后

以上就是彩色口红为你收集整理的Matlab/Simulink 自动代码生成 基于模型设计学习教程(9)---- 编码器模式实验的全部内容,希望文章能够帮你解决Matlab/Simulink 自动代码生成 基于模型设计学习教程(9)---- 编码器模式实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部