IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【STM32F4系列】【HAL库】旋转编码器(EC11) -> 正文阅读

[嵌入式]【STM32F4系列】【HAL库】旋转编码器(EC11)

概述

EC11是一种增量型AB相旋转编码器

旋转编码器是一种可以无限旋转的旋钮,常被作为各种需要大量数据范围的情况(如收音机选台,音量选择等)

增量型是与绝对性做的区分,意味着输出的信号与当前的位置没有关系,与旋转的方向和角度有关

AB相指的是一种输出模式(也可以认为是一种协议)

有两个线输出根据相位判断方向,根据高低电平数量判断走过度数

电气连接

原理图

EC11常见额定电压是5V,实测3.3V也可以驱动,但不建议使用3.3V(会出现杂波)?

阻容是为了进行上拉输出和硬件滤波

A,B为旋转信息的输出(两相)

C为接地

SW为内部的开关,可以当作轻触按键使用(注意加软件滤波)

波形分析

数据手册的截图

实测顺时针转动一格

?

实测逆时针转动一格?

解释:

每转动一格(拿到实物自己实验下很容易理解什么叫一格),AB相会出现一个持续10-150ms的低电平,默认为高电平状态

顺时针转动时A相的低电平会比B相提前

逆时针转动时A相的低电平会比B相延后

思路?

很明显可以看出,只需要在A(或B)相的一个边沿(上升下降均可),检测另一相的电平高低即可

因此需要的外设有:

  1. 外部中断
  2. 一个输入状态的GPIO

注意:

  1. 因为要直接接入5V的电压,因此需要GPIO耐压为5V(即为数据手册表FT的管脚)
  2. 未避免干扰,输入状态和外部中断的GPIO设置为上拉模式(不知道为啥浮空输入干扰贼大)
  3. 外部中断上升沿和下降沿均可(这里以下降沿为例)

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();
    }
}

?成品

GitHubicon-default.png?t=M666https://github.com/HZ1213825/HAL_STM32F4_EC11/settings百度网盘icon-default.png?t=M666https://pan.baidu.com/s/1TTc5ARIb-szfsha9MoE_lA?pwd=cwi9?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:39:38  更:2022-07-17 16:41:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:02:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码