火狐真人官网
服务与支持

STM32f103 定时器之编码器接口形式

时间:2024-09-17 11:43:24    作者:服务与支持

  我能想到的实践运用场景暂时只要实体音量旋钮,鼠标的滚轮等,所以只完成了计数。阅览Arduino关于该编码器的介绍,该编码器还能轻松完成旋转的速度、加速度的核算。应该算是算法层级的吧,还没做到实践运用,暂时不深究,本篇仅仅对旋转编码器的原理以及

  这是从网上看到一个简介,只触摸过Arduino的编码器,其他暂未运用过。

  Arduino的编码器归于增量式。它一共有5根线。别离为“CLK”、“DT”、“SW”、“+”、“GND”。

  “+”、“GND”:勿用多说,VCC与GND,接至板子的VCC与GND即可。

  “SW”:Arduino介绍说,当旋钮旋转完一圈时,该脚会放出一个电平跳变信号,相当于旋转编码器常说的“Z”信号,实践上我买的这个仅仅一个开关,即旋钮部分能够按下去(类似于汽车上的音量调理按钮),该接口会产生一个下降沿。然后由MCU去做相关处理。

  “CLK”、“DT”:在该模块上显现的丝印名称为这两个,不明白为什么是这个丝印,应该实践对应于编码器常用的“A”、“B”信号吧,这两个信号的产生方法如下:

  正旋:如上图当旋钮开端正向旋转时,“A”从低电平变为高电平,“B”坚持不变;当旋钮旋转到预订方位时,“A”保持为高电平,“B”然后跟着从低电平跳变到高电平。也就是说,正旋时,“A”总是先与“B”开端电平改变。

  所以在此处,丝印将该两个接线印成“CLK”、“DT”就让我有点困惑。也未找到有关的材料,先暂时放放,下次有实践运用,就知道为啥了。

  依据如上正旋反旋规则,就已能依据编码器输出的信息判别出编码器的旋转方向以及核算出其旋转角度了,具体做法如下:

  将“CLk”、“DT”别离衔接至MCU的恣意具有外部中止的IO口,解决方法为:

  当其间某个IO口检测到上升沿或许下降沿时,在中止函数内检测另一个IO口的电平状况。以正旋为例,正旋时,“A”先上升沿引起中止,得到的“A”、“B”的电平状况为“10”,紧接着,“B”上升沿,检测到“A”、“B”电平状况为“11”。

  以此,即可判别出该编码器的旋转方向,一起在“A”、“B”一起跳变完成后,即可依据编码器的旋转方向对编码器的旋转计数进行增减。

  以上为运用外部中止方法处理旋转编码器的输出信息,当然,本篇要用到接口形式,所以也就不会用以上的方法来进行判别。那么定时器接口形式是怎么对旋转编码器进行计数的呢?

  其实原理相同,将旋转编码器的“CLK(A)”、“DT(B)”脚接入到TIMx的通道,将对应通道引脚装备为编码器接口形式,使能计数,然后STM32的值就会在硬件上依照上述规对计数器的值进行加减。

版权所有:火狐真人官网竞技app下载-火狐电竞首页   粤ICP备20005664号
友情链接:火狐电竞app首页 火狐真人官网 火狐竞技下载

使用条款 | 隐私政策 | 网站地图