• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab/Simulink 自动代码生成 基于模型设计学习教程(9)---- 编码器模式实验 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

 

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定时不准造成的

                                  

 

最后我们把数据存起来

                 

 

 

 

如需进一步获得Matlab/Simulink 自动代码生成 基于模型设计学习教程的源代码包,请加QQ群:710443158

 

              

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi操作word发布时间:2022-07-18
下一篇:
Delphi使用串口模拟工具进行串口程序开发调试发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap