文章目录

  • 一、产品简介
  • 二、原理分析
  • 三、程序设计
  • 四、程序源码

一、产品简介


EC11旋转编码器广泛用于车载DVD,车载导航,汽车影音上常被人称为车载编码器。编码器主要用于频率调节,高度调节,温度调节及音量调节的参数控制。注意编码器避免储藏于高温潮湿及腐蚀的场所,拆包装后未使用完的剩余产品请在防潮防毒的环境下保存。

产品特点:

    1. 额定电压:DC 5V
    1. 各相导线AB相:0.5mA(Max 5mA,Min 0.5mA)
    1. 公共导线C: 1 mA(Max 10mA,Min 0.5mA)
    1. 使用温度范围: -30℃~+80°c

输出信号:

电气性能:

接口说明:

二、原理分析

旋转编码器是一种机电装置,可将轴的角运动,转换为A/B两相相位偏差90°的脉冲信号,其中C是A/B信号的参考地

  • 根据A/B信号的相位关系可以获取正反转方向。

  • 通过脉冲的计数可以获取旋转的步进数量。

  • 根据脉冲在单位时间内的计数可以获取角速度。

工作原理: 旋转轴带动两组同轴栅格转盘,栅格转盘间存在一定的角度偏差,旋转的栅格会对发光二极管发出的光信号进行间断遮挡,从而使光敏二极管产生高低电平变化。因为两组栅格转盘存在一定的角度偏差,所以会产生两组相位90°偏差的A/B相信号。

A、B两相都输出方波时:

  • 顺时针方向旋转,A相超前B 相90度;
  • 逆时针方向旋转,B相超前A 相90度;

三、程序设计

本篇设计为向右旋转编码器每产生一个脉冲,计数器+1,向左旋转每产生一个脉冲,计数器-1,并通过oled将计数值显示在屏幕上。

1. 引脚初始化
VCC和GND不必多说,首先对A,B相进行引脚初始化,这里我将A、B相分别接上PB0和PB1

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);

2. 开启外部中断
将PB0和PB1设计为中断源,且为下降沿触发

 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1);EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_Init(&EXTI_InitStructure);

3. 中断配置

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_Init(&NVIC_InitStructure);

4. 中断函数

int16_t Encoder_Get(void)
{int16_t Temp;Temp = Encoder_Count;Encoder_Count = 0;return Temp;
}void EXTI0_IRQHandler(void)
{if (EXTI_GetITStatus(EXTI_Line0) == SET){/*如果出现数据乱跳的现象,可解除以下注释,再次判断引脚电平,以避免抖动*/
//      if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0)
//      {if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0){Encoder_Count --;}
//      }EXTI_ClearITPendingBit(EXTI_Line0);}
}void EXTI1_IRQHandler(void)
{if (EXTI_GetITStatus(EXTI_Line1) == SET){/*如果出现数据乱跳的现象,可解除以下注释,再次判断引脚电平,以避免抖动*/
//      if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0)
//      {if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0){Encoder_Count ++;}
//      }EXTI_ClearITPendingBit(EXTI_Line1);}
}

5. main函数

int16_t Num;int main(void)
{OLED_Init();Encoder_Init();OLED_ShowString(1, 1, "Num:");while (1){Num += Encoder_Get();OLED_ShowSignedNum(1, 5, Num, 5);}
}

四、程序源码

有需要者 请留言评论区或私信

360度 EC11 旋转编码器模块 数字脉冲电位器相关推荐

  1. 使用Arduino开发板连接ec11旋转编码器

    使用Arduino开发板连接ec11旋转编码器 因为最近要用到旋转编码器,从网上花了好长时间找了好多关于arduino使用旋转编码器的资料,总是找不到合适的,最后总结了一下(部分内容有借鉴,仅作分享, ...

  2. 认识EC11旋转编码器编写驱动程序

    前言 抛开工作,以电子爱好者的身份,单片机玩多了都会想着在单片机的外围设备玩出一些花样来. 这其中首先想到的就是"升级"输入输出设备. 这里先说一说我们常给单片机使用的输入设备. ...

  3. linux4.6 EC11旋转编码器的驱动

    最近项目使用了旋转编码器EC11,遍查内核,发现并没有它的驱动,查了查CSDN,终于找到一篇有用的.根据自己的需要和对最基础的gpio_key.c的理解,我改写出了一份EC11的专用驱动. 感谢下面博 ...

  4. 【Arduino使用旋转编码器模块】

    Arduino使用旋转编码器模块 前言 旋转编码器模块引脚 旋转编码器模块如何工作? 旋转编码器模块电路图 Arduino旋转编码器模块电路连接图 代码说明 完整代码 前言 旋转编码器是一种机电位置传 ...

  5. EC11旋转编码器驱动程序

    EC11驱动程序 不多做介绍,百度上很多相关的介绍 首先,放上参考文档 代码有正转.反转.按下正转.按下反转.单机.双击.长按和长安松手检测,有什么问题可以在下方留言 我是对该文档代码进行一些修改,偏 ...

  6. EC11旋转编码器,stm32f103驱动程序

    EC11旋转编码器,stm32f103驱动程序 1.EC11手册的要点 手册中推荐的电路(已含有RC滤波): 输出波形特点: 2.硬件电路 3.驱动程序关键点 4.输出现象 1.EC11手册的要点 注 ...

  7. STM32CubeMX EC11旋转编码器开发心路历程(encode模式 外部中断模式 普通IO口模式 定时器模式探索)

    文章目录 ENCODE模式探索 普通IO口探索 定时器使用 外部中断探索 编码器开关的理解 最后的实现方案 这篇文章主要还是记录整个过程以及想法的不断改进,对于一些实际的操作还有代码,我准备都分开写到 ...

  8. ESP32(IDF)EC11旋转编码器使用总结

    ESP32(IDF)EC11旋转编码器使用总结 一.调试过程中遇到的问题 二.硬件 三.电路 接线说明: 四.工作原理 正转波形 反转波形 五.判断正反转 法一 代码实现 结果 法二 法三 代码实现 ...

  9. STM32 EC11 旋转编码器

    **先给大家看看我选用的EC11元器件** 代码在最后,复制可直接食用 以及我的电路图 在研究EC11的时序之前首先要了解一点,EC11按旋转的输出动作可以分为两种.一种是转两格,A.B对C端输出一个 ...

  10. HTML实现图片360度循环旋转

    HTML实现图片360度循环旋转 效果图 //css代码 .header{-webkit-animation:rotateImg 1s linear infinite;width: 80px ;hei ...

最新文章

  1. Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?
  2. 验证RIP被动接口只收不发的正确性
  3. python目录操作shutil
  4. getattr的巨大作用
  5. php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
  6. error: 'syms' undefined near line 1 column 1
  7. Java等线程池执行完所有任务后再执行主线程
  8. Spring数据分析思维课
  9. 无缓冲channel与容量为1的channel的区别
  10. 级联MobileNet-V2实现CelebA人脸关键点检测(附训练源码)
  11. 20个令程序员泪流满面的瞬间
  12. 概率论----假设检验
  13. 微型计算机机房湿度不宜过大,全国计算机一级考试选择题试题与详细答案(免费)...
  14. 2017年多校联合训练 第五场(吉如一)
  15. php 调用redis中lpush的方法
  16. 【STM32】时钟相关函数和类型
  17. fread fwrite之后文件指针位置
  18. word2016 无响应问题解决办法
  19. linux系统能运行msi文件吗,在Linux中如何在Wine下运行msi文件
  20. 信息系统项目管理师----成本类计算

热门文章

  1. 阿里P7亲自教你!java开发如何包装自己的简历
  2. android fragment 设置透明,DialogFragment背景透明设置
  3. 2021年安全生产模拟考试(全国特种作业操作证电工作业-电力电缆模拟考试题库二)安考星
  4. 2021数据安全与个人信息保护技术白皮书
  5. shoppping collection
  6. python汉化之后好用吗_Python官方中文文档上线了:各种教程已汉化,不用再苦等野生翻译...
  7. ProcExp的利用
  8. Java 编码规范8(编程规约-注释规约与其它)
  9. 智慧水务项目建设方案
  10. MATLAB实现DES算法子密钥生成