【STM32F4系列】【HAL库】旋转编码器(EC11) |
您所在的位置:网站首页 › 编码器显示屏 › 【STM32F4系列】【HAL库】旋转编码器(EC11) |
目录 概述 电气连接 波形分析 思路 HAL初始化 代码 成品 概述EC11是一种增量型AB相旋转编码器 旋转编码器是一种可以无限旋转的旋钮,常被作为各种需要大量数据范围的情况(如收音机选台,音量选择等) 增量型是与绝对性做的区分,意味着输出的信号与当前的位置没有关系,与旋转的方向和角度有关 AB相指的是一种输出模式(也可以认为是一种协议) 有两个线输出根据相位判断方向,根据高低电平数量判断走过度数 电气连接原理图
EC11常见额定电压是5V,实测3.3V也可以驱动,但不建议使用3.3V(会出现杂波) 阻容是为了进行上拉输出和硬件滤波 A,B为旋转信息的输出(两相) C为接地 SW为内部的开关,可以当作轻触按键使用(注意加软件滤波) 波形分析数据手册的截图 实测顺时针转动一格 实测逆时针转动一格 解释: 每转动一格(拿到实物自己实验下很容易理解什么叫一格),AB相会出现一个持续10-150ms的低电平,默认为高电平状态 顺时针转动时A相的低电平会比B相提前 逆时针转动时A相的低电平会比B相延后 思路很明显可以看出,只需要在A(或B)相的一个边沿(上升下降均可),检测另一相的电平高低即可 因此需要的外设有: 外部中断一个输入状态的GPIO注意: 因为要直接接入5V的电压,因此需要GPIO耐压为5V(即为数据手册表FT的管脚)未避免干扰,输入状态和外部中断的GPIO设置为上拉模式(不知道为啥浮空输入干扰贼大)外部中断上升沿和下降沿均可(这里以下降沿为例) HAL初始化外部中断和NVIC GPIO 为了便于后期的调用,这边做了一个回调函数,可以在触发顺时针或者逆时针的旋转的时候自动调用这个函数 头文件 //外部中断 #define EC11_A_GPIO_Group GPIOA #define EC11_A_GPIO_PIN GPIO_PIN_0 // GPIO输入 #define EC11_B_GPIO_Group GPIOA #define EC11_B_GPIO_PIN GPIO_PIN_1 void EC11_Decode(void (*Clockwise)(void), void (*Anticlockwise)(void));C文件 void EC11_Decode(void (*Clockwise)(void), void (*Anticlockwise)(void)) { //Delay_ms(1); if (HAL_GPIO_ReadPin(EC11_B_GPIO_Group, EC11_B_GPIO_PIN) == GPIO_PIN_SET) { Anticlockwise(); } else { Clockwise(); } } 成品GitHub |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |