STM32F103定時器編碼器接口方式
来源:西安常盛電子有限公司 发布时间:2019-03-22 点击次数:

购买了一个Arduino旋转模块,在匹配模式下对旋转角度和循环次数进行了计数,目前我能想象的实际应用场景是实体体积旋钮、鼠标滚轮等,所以只实现了计数。阅读Arduino关于编码器、编码器的介绍还可以实现对转速和加速度的计算。应视为算法的层次,还没有实现实际应用,暂时还没有深入研究,本文只简单介绍了旋转编码器的原理以及编码器的配置和使用。
阿尔杜诺说,当旋钮转动时,脚会发出水平跳跃信号,相当于旋转编码器的Z信号。其实我买了一个开关,就是旋钮部分可以按下(类似于车上的音量调节按钮),接口会产生一个下降沿,然后单片机做相关的处理。
CLK,DT:此模块上显示的屏幕打印的名称是这两个。我不明白为什么要用丝网印刷。它应该与编码器常用的A和B信号相对应。这两种信号的发生方式如下:
正旋转:如上图所示,当旋钮开始向前旋转时,A从低电平变为高电平,而B保持不变;当旋钮旋转到预定位置时,A保持高电平,B则从低电平跳到高电平,也就是说,旋转时,A总是从B开始改变电平。
所以在这里,我对把这两条线打印成CLK和DT有点困惑,也没有找到相关的信息,暂时放它走,下次有实际应用的时候,我们会知道为什么。
根据编码器的正反转规律,根据编码器输出的信息,确定编码器的旋转方向和编码器的旋转角度。具体方法如下:
当其中一个IO端口检测到上升或下降沿时,在中断功能中检测到另一个IO端口的电平状态,以正旋转为例,正旋转时,A的上升沿引起中断,A和B的电平状态为10。然后,B的上升沿检测到A和B的水平状态为11。
这样就可以判断编码器的旋转方向。同时,在A、B同时跳跃完成后,编码器的旋转计数可以根据编码器的旋转方向进行增减。
以上是利用外部中断来处理旋转编码器的输出信息。当然,这篇文章会用到,所以不会用上面的方法来判断。那么如何计数旋转编码器呢
事实上,原理是一样的。旋转编码器的CLK(A)和DT(B)引脚连接到TIMX的通道,相应的通道引脚配置为编码器接口模式以启用计数。然后在硬件上根据上述规则对STM32进行加、减运算。