离线
TA的每日心情 | 慵懒 2021-7-23 17:16 |
---|
签到天数: 17 天 [LV.4]
|
有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最近,手上拿到一个360度旋转编码器模块—KY-040 FOR模块,因此就想用它写一个应用教程。本章教程主要用到GPIO和EXTI(外部中断/事件控制器)。
1、旋转编码器简介
KY-040旋转编码器属于增量编码器,本次实验所用KY-040模块工作电压为5V,转动一圈脉冲数为20,其分别引出5个引脚可与控制板连接,分别是VCC、GND、CLK、DT和SW,其中,VCC和GND引脚用来给模块供电,CLK和DT引脚用来计数和判断正反转,SW引脚用来复位并计数清零。
KY-040旋转编码器可以通过旋转计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位计,这种转动计数是没有限制的。配合旋转编码器上的按键,可以复位到初始状态,即从0开始计数。
通过逻辑分析仪采集旋转编码器波形,得到如下结果:
当旋转编码器正转时,逻辑分析仪采集波形如下:
由逻辑分析仪采集波形可知,在旋转编码器正转时,当CLK引脚设置为上升沿触发时,DT引脚为低电平;当CLK引脚设置为下降沿触发时,DT引脚所在电平为低电平。此外,在截图中还可看到毛刺。
当旋转编码器反转时,逻辑分析仪采集波形如下:
由逻辑分析仪采集波形可知,在旋转编码器反转时,其现象与正转时相反,同时也会出现毛刺现象。
关于旋转编码器工作原理,可自行百度,在此不再进行详细介绍。
2、硬件设计
本章教程使用红外测距模块进行测距。CH32V103开发板与旋转编码器模块的连接方式如下:
- CH32V103开发板的VCC引脚与红外测距模块的VCC(5V)引脚连接
- CH32V103开发板的GND引脚与红外测距模块的GND引脚连接
- CH32V103开发板的PA0引脚与红外测距模块的CLK引脚连接
- CH32V103开发板的PA1引脚与红外测距模块的DT引脚连接
- CH32V103开发板的PA2引脚与红外测距模块的SW引脚连接
注意:该旋转编码器使用时存在抖动现象,可通过引脚接电容接GND进行消抖,但并不能完全消抖,只能进行改善。
3、软件设计
本章教程主要进行旋转编码器实验,主要用到GPIO和EXTI,关于旋转编码器计数以及正反转判断主要依据逻辑分析仪采集波形判断,具体程序如下:
gpio.h文件
- #ifndef __GPIO_H
- #define __GPIO_H
- #include "ch32v10x_conf.h"
- #define CLK GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
- #define DT GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)
- #define SW GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)
- void GPIO_Toggle_INIT(void);
- void EXTI0_IRQHandler(void);
- #endif
复制代码
gpio.h文件主要进行相关定义和函数声明;
gpio.c文件
gpio.c文件主要对旋转编码器的CLK、DT、SW引脚进行GPIO引脚初始化配置和中断触发配置。
main.c文件
main.c文件主要进行函数初始化并根据SW状态进行复位和计数清零。
4、下载验证
将编译好的程序下载到开发板并复位,与旋转编码器模块接好之后串口打印如下:
100、旋转编码器.rar
(475.81 KB, 下载次数: 16)
完
|
上一篇: 第一百章:CH32V103应用教程——红外测距下一篇: 第一百零二章:CH32V103应用教程——USART-DMA-TC中断
|