旋转编码器编程原理实例
e11旋转编码器原理 -回复
e11旋转编码器原理-回复旋转编码器是一种常见的输入设备,广泛应用于许多电子设备中,如数码相机、机器人、游戏手柄等。
它能够精确地感知和记忆旋转操作,并将其转化为数字信号,以便电子设备进行相应的处理。
本文将详细介绍旋转编码器的原理及其工作机制。
一、旋转编码器的基本原理旋转编码器主要由两部分组成:编码盘和旋钮。
编码盘是一个圆盘,上面分布有许多等距离排列的刻度,通常体现为虚线或数字。
旋钮是一个旋转的手柄,用户通过旋转旋钮来进行输入操作。
旋转编码器的原理在于,当用户旋转旋钮时,编码盘和旋钮之间的机械连接会导致编码盘相对于旋钮旋转。
同时,编码盘上的刻度也会相对于旋钮进行移动。
通过精确感知旋钮的旋转角度和刻度的变化,旋转编码器可以精确地记录下用户的输入操作。
二、旋转编码器的工作机制旋转编码器通过两种类型的输出信号来传递用户的旋转输入:增量式输出和绝对式输出。
1. 增量式输出增量式输出是旋转编码器最常见的输出方式。
它通过两个感应器来检测旋钮的方向和旋转的次数。
这两个感应器通常是光学或磁性的,并分别安装在编码盘的两侧。
当旋钮顺时针旋转时,一个感应器会检测到脉冲信号,表示旋转一次;而当旋钮逆时针旋转时,另一个感应器会检测到相反的脉冲信号,也表示旋转一次。
通过感知这些脉冲信号的数量和方向,电子设备可以判断出用户旋转的角度和方向。
2. 绝对式输出绝对式输出是一种特殊的输出方式,它能够直接提供旋钮的旋转角度。
绝对式输出通常有两种类型:光学和磁性。
光学绝对式输出采用了一种特殊的编码盘,通常是在刻度上涂层了一层特殊的材料。
旋钮上安装了一个光传感器,当用户旋转旋钮时,光传感器会感知到刻度涂层上的亮暗变化。
通过分析亮暗变化的模式,电子设备可以判断出旋钮的旋转角度。
磁性绝对式输出则利用了编码盘和旋钮上的磁性材料。
编码盘上有许多磁性柱,旋钮上安装了磁性传感器。
当旋钮旋转时,磁性传感器会感知到磁性柱的数量和位置,并将其转化为数字信号,表示旋钮的旋转角度。
ec11stm32例程
ec11stm32例程EC11STM32是一种旋转编码器,常用于嵌入式系统中,可以用来获取旋转方向和计算旋转角度。
在STM32开发板上使用EC11STM32,需要进行相应的配置和编程。
本文将介绍EC11STM32的原理、使用方法以及编程实例。
EC11STM32工作原理:EC11STM32包含一个旋转编码器和一个按钮开关。
旋转编码器由两个光电传感器、一个LED和一个编码盘组成。
编码盘上有很多小刻度,每当旋转编码器旋转一格,编码盘上的刻度就会遮挡或透过光电传感器,从而产生一个脉冲信号。
根据脉冲信号的变化,我们可以判断旋转的方向和计算旋转的角度。
EC11STM32的使用方法:在STM32开发板上使用EC11STM32,首先需要将EC11STM32连接到正确的GPIO引脚上。
然后,我们可以通过读取GPIO引脚的状态来获取旋转和按下按钮的信息。
对于旋转编码器,我们可以使用两个引脚来获取旋转方向和计数。
对于按钮开关,我们可以使用一个引脚来获取按下和释放的状态。
编程实例:下面是一个使用EC11STM32的简单编程实例,用于获取旋转方向和计算旋转角度:```c#include "stm32f10x.h"#define CLK_GPIO GPIOA#define DT_GPIO GPIOB#define BTN_GPIO GPIOC#define CLK_PIN GPIO_Pin_0#define DT_PIN GPIO_Pin_1#define BTN_PIN GPIO_Pin_13int main(void){GPIO_InitTypeDef GPIO_InitStructure;//初始化时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);//配置CLK引脚为输入GPIO_InitStructure.GPIO_Pin = CLK_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(CLK_GPIO, &GPIO_InitStructure);//配置DT引脚为输入GPIO_InitStructure.GPIO_Pin = DT_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DT_GPIO, &GPIO_InitStructure);//配置BTN引脚为输入GPIO_InitStructure.GPIO_Pin = BTN_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(BTN_GPIO, &GPIO_InitStructure);int count = 0;int last_state = 0;int curr_state = 0;while (1){//读取CLK和DT引脚的状态last_state = curr_state;curr_state = GPIO_ReadInputDataBit(CLK_GPIO, CLK_PIN) << 1 | GPIO_ReadInputDataBit(DT_GPIO, DT_PIN);if (last_state != curr_state){//根据旋转方向增加或减少计数if ((last_state == 0b00 && curr_state == 0b01) || (last_state == 0b11 && curr_state == 0b10))count++;else if ((last_state == 0b01 && curr_state == 0b00) || (last_state == 0b10 && curr_state == 0b11))count--;//打印计数值printf("Count: %d\n", count);}//检测按钮是否按下if (GPIO_ReadInputDataBit(BTN_GPIO, BTN_PIN) == 0){//按钮按下时执行的操作printf("Button pressed\n");}}}```通过上述代码,我们可以实现读取EC11STM32的旋转和按钮信息,并进行相应的操作。
旋转编码器工作原理 __编码器
旋转编码器工作原理 __编码器旋转编码器工作原理编码器是一种常用于测量旋转运动的装置,它能够将旋转角度或位置转化为数字信号,用于控制和监测系统中的运动。
旋转编码器广泛应用于机械、自动化控制、仪器仪表等领域。
一、编码器的基本结构旋转编码器通常由光电传感器和编码盘组成。
编码盘上有一系列的刻线,光电传感器通过检测这些刻线的变化来测量旋转角度或位置。
光电传感器一般由发光二极管(LED)和光敏二极管(Photodiode)组成。
LED发出的光经过编码盘上的刻线反射回光敏二极管,光敏二极管会产生电流信号,根据刻线的变化情况,电流信号的强弱和频率也会有所变化。
编码盘上的刻线通常有两种类型:光栅和格雷码。
光栅刻线是等距离的黑白条纹,光电传感器通过检测黑白条纹的变化来测量旋转角度或位置。
格雷码刻线是一种特殊的二进制编码方式,相邻两个码之间只有一个位数发生变化,可以提高编码器的精度和稳定性。
二、编码器的工作原理当旋转编码器旋转时,编码盘上的刻线会引起光敏二极管接收到的光强度的变化。
根据光强度的变化,光敏二极管会产生不同的电流信号。
对于光栅刻线,光敏二极管接收到的光强度的变化会导致电流信号的强弱和频率的变化。
通过测量电流信号的强弱和频率,可以计算出旋转的角度或位置。
对于格雷码刻线,光敏二极管接收到的光强度的变化会导致电流信号的强弱和相位的变化。
通过测量电流信号的强弱和相位,可以计算出旋转的角度或位置。
为了提高编码器的精度和稳定性,通常会采用多通道的编码器,即在一个编码盘上设置多个刻线。
多通道编码器可以提供更高的分辨率和更精确的测量结果。
三、编码器的应用领域旋转编码器广泛应用于机械、自动化控制、仪器仪表等领域。
以下是一些常见的应用案例:1. 机械设备控制:编码器可以用于测量机械设备的旋转角度或位置,用于控制和监测机械系统的运动。
2. 机器人控制:编码器可以用于测量机器人关节的旋转角度或位置,用于控制和监测机器人的运动。
旋转编码器编程原理实例
旋转编码器编程原理实例旋转编码器是一种常见的传感器设备,可以用于测量物体的旋转角度和方向。
它通常由光电转换器和代码盘组成,通过检测光电转换器接收到的光线来确定旋转方向和步数。
旋转编码器广泛应用于工控领域、机器人控制、汽车导航系统等。
1.硬件连接:首先,需要将旋转编码器与控制器板连接起来。
通常旋转编码器具有三个引脚:电源正极、电源负极和输出信号。
将正极连接到控制器板的电源输出引脚,负极连接到控制器板的地引脚,输出信号连接到控制器板的一些IO口。
2.编程环境设置:在编程环境中,需要导入旋转编码器的驱动库。
常见的编程语言如C、C++、Python等都有相应的驱动库可供选择。
导入驱动库后,可以使用库中提供的函数来操作旋转编码器。
3.初始化旋转编码器:在开始使用旋转编码器之前,需要初始化其参数。
这些参数包括旋转方向(顺时针或逆时针)、初始位置、步长等。
可以使用驱动库中提供的函数来设置这些参数。
4.监听旋转编码器信号:5.处理旋转编码器信号:在监听到旋转编码器的信号变化后,需要编写相应的处理函数来处理这些变化。
处理函数可以根据信号的变化来判断旋转方向和步数。
通常,顺时针旋转会使输出信号由低到高变化,逆时针旋转则相反。
6.更新位置数据:根据旋转编码器的信号变化和步数,可以更新物体的位置数据。
将每次旋转的步数加到当前位置上,就可以实时获取物体的旋转角度和方向。
通过以上步骤,就可以实现旋转编码器的编程原理。
下面是一个使用Python编写的旋转编码器示例程序:```pythonimport RPi.GPIO as GPIO#定义旋转编码器的IO口A_PIN=17B_PIN=18#初始化GPIOGPIO.setmode(GPIO.BCM)GPIO.setup(A_PIN, GPIO.IN)GPIO.setup(B_PIN, GPIO.IN)#记录旋转方向和步数direction = 0count = 0#定义旋转编码器的信号回调函数def encoder_callback(channel):global direction, countA = GPIO.input(A_PIN)B = GPIO.input(B_PIN)if A == B:direction = 1 # 顺时针旋转count += 1else:direction = -1 # 逆时针旋转count -= 1#监听旋转编码器的信号变化GPIO.add_event_detect(A_PIN, GPIO.BOTH, callback=encoder_callback)GPIO.add_event_detect(B_PIN, GPIO.BOTH, callback=encoder_callback)#主程序if __name__ == "__main__":try:while True:print("Direction:", direction)print("Count:", count)except KeyboardInterrupt:pass#清理GPIO资源GPIO.cleanup```以上程序示例了如何使用树莓派的GPIO接口来读取旋转编码器的信号,并实时获取旋转方向和步数。
旋转编码器工作原理
旋转编码器工作原理
旋转编码器是一种常见的用于测量物体旋转角度的装置。
其工作原理基于两个主要的部件:光源和光传感器。
首先,光源通常是一个发光二极管(LED),它会发出一束光束。
这束光将通过某种调制方式,如光栅或光薄片。
接下来,光传感器通常是一个光敏电阻或光二极管。
当旋转编码器的轴转动时,光束会通过光栅或光薄片,并被传感器接收。
对于光栅编码器,光栅上有许多细小的凹槽或凸起。
当光源照射在光栅上时,光束会在凹槽和凸起之间产生反射或散射。
光传感器会检测到这些反射或散射的变化,从而得知轴的角度变化。
对于光薄片编码器,光薄片上有一系列的透明和不透明区域。
当光源照射在光薄片上时,光束会透过透明区域或被阻挡在不透明区域。
光传感器会测量到通过光薄片的光束强度的变化,并据此计算轴的旋转角度。
通过检测光源和光传感器之间的反射或透射变化,旋转编码器可以精确地测量轴的旋转角度。
这样,它可以广泛应用于各种领域,例如机器人技术、工厂自动化以及航空航天等。
旋转编码器音量旋钮原理AD接键原理PPT课件
编码器内部的工作原理
此接口为编码器按下 的检测脚,软件通过 检测它的电平变化来 判断是否按下
编码器的内部构造其实 就是3个开关
下图为实物编码器内部 构造图
ห้องสมุดไป่ตู้
第1页/共9页
3.软件处理的逻辑通过编码器输出波形图可知每个运动周期
的时序
顺时针运动 逆时针运动
AB
AB
11
11
01
10
00
00
10
01
(1)MCU通过判断A,B输出的两个状态,就可以轻易的得出角度码盘的运动 方向。 (2)当编码器按下时,编码器上的KEY脚为低电平(常态为高电平), MCU判断其管脚被拉低来做出它相应的动作。 (3)我司大屏机的编码器硬件上A、B两端口是接在一起,分别串了10K和 20K电阻,MCU通过识别其不同的电压值变化还判断编码器旋转的方向。
初始状态此两接口的电平是一致的可能是高戒低电平编码器在旋转的时候它俩的电平会随旋转的角度和方向发生变化此接口为编码器按下的检测脚软件通过检测它的电平变化来判断是否按下编码器的内部构造其实就是3个开关编码器内部的工作原理下图为实物编码器内部构造图3
初始状态此两接口的 电平是一致的,可能 是高或低电平,编码 器在旋转的时候它俩 的电平会随旋转的角 度和方向发生变化
AD按键,MCU通过先采集好AD数据,并对采集到的 每一个电压赋予其功能,然后存储在程序当中,MCU 通过不断的扫描,一识别到AD数据,通过与保存的数 据做对比,就能轻易的识别出被按下的按键。
MCU有时在识别按键会出现两个按键的功能一样,但两 个按键的电压不一样,出现这种情况,大多是因为这两个按 键的电压相差的太近了造成的,比如方控,MCU可通过选择 不同的上拉或更改其电压的采集范围来避免此问题。我们目 前使用的3.3V的MCU一般是识别某个电压的+/-150mv范围内 为有效,5V的MCU则是在+/-200mv以内,针对没有可选上拉 的AD电路,我们在设计AD按键时,3.3V的MCU每个按键之 间的电压必须大或等于300mv,5V的MCU每个按键之间的电 压需大或等于400mv,否则可能会造成串键的现象。
单片机操作旋转编码器
.最近做了一个关于旋转编码器的项目,在网上查阅了很多资料,然后又是进行了诸多的实验,分享给大家。
1 旋转编码器原理(借用一下别的文档里的图片)5脚的旋转编码开关具有左转,右转,按下三个功能。
2脚接地,1,3脚接上拉电阻。
4脚,5脚是按下功能的两个脚,可以根据需求自己接线。
检查方向时,通常采用两种做法.的上升沿或下跳沿,在中断程序中,检测此时另外获取(1)中断法:A或B相为高电平一相的电平。
例如上图中,A相上跳沿,相为低电平则为顺时针转动;BB 二者为逆时针方向转动。
不相同时,则能判,BAB)电平法:同时检测A相和相的电平,当出现2 (B相的电平,则能判断出转动的方向。
定发生了转动,根据前一时刻A相和硬件电路2本设计在PIC16单片机上进行开发,采用中断法。
旋转编码开关输出上拉,之后采用RC 滤波器对信号进行先一步滤波,此处的RC滤波器的元器件大小可以适当调整。
中断源采用的是捕捉模块(CCP2)的捕捉中断(外部中断用于别处)。
3 C代码中断响应函数:void interrupt ISR(void){if(CCP2IF){CCP2IF=0;Change();}// 程序中CCP2设置成捕捉下跳沿void Change(){...unsigned int t2=2000;if(RC3)// 高电平{while((!RC1)&&(t2--))//等待RC1的低电平持续完{Delay();}的电平,以确认转动发生if(!RC3)//判断此时RC3{// 增或减操作}else{while((!RC1)&&(t2--))//等待RC1的低电平持续完{Delay();}RC3if(RC3)//判断此时的电平,以确认转动发生{// 增或减操作}}}注意事项:4滤波电路,延迟时间等均需要根据具体的旋转开关进行调整。
一般的单片机程序中,并不建议在中断中添加延迟函数,但应视具体情况而定。
旋转编码器工作原理 __编码器
旋转编码器工作原理 __编码器旋转编码器工作原理编码器是一种常见的传感器设备,用于测量和记录物体的位置、速度和方向等信息。
旋转编码器是一种特殊类型的编码器,主要用于测量旋转物体的角度和转速。
一、基本原理旋转编码器的基本原理是利用光电或磁电效应来感知旋转物体的运动。
它由一个固定的部分和一个旋转的部分组成。
固定部分通常被安装在固定的支架上,而旋转部分则与被测量的物体连接在一起。
二、光电编码器工作原理光电编码器是一种常见的旋转编码器,它利用光电传感器来感知旋转物体的运动。
光电编码器包括一个光源和一个光电传感器。
1. 光源:光源通常是一颗发光二极管(LED),它会发出光束。
2. 光电传感器:光电传感器通常由一个发光二极管和一个光敏二极管组成。
光敏二极管可以感知光的强度,并将其转化为电信号。
当旋转物体转动时,光源会照射到旋转物体上的光栅或编码盘上。
光栅或编码盘上通常有一些透明和不透明的条纹,这些条纹会使光线被遮挡和透过。
当光线透过透明的条纹时,光敏二极管会感知到光的强度增加;当光线被不透明的条纹遮挡时,光敏二极管会感知到光的强度减小。
通过检测光敏二极管输出的电信号的变化,我们可以确定旋转物体的角度和转速。
三、磁电编码器工作原理磁电编码器是另一种常见的旋转编码器,它利用磁电传感器来感知旋转物体的运动。
磁电编码器包括一个磁场发生器和一个磁电传感器。
1. 磁场发生器:磁场发生器通常是一个磁铁或磁体,它会产生一个磁场。
2. 磁电传感器:磁电传感器通常是霍尔元件,它可以感知磁场的变化,并将其转化为电信号。
当旋转物体转动时,磁场发生器会产生一个磁场,而磁电传感器会感知到磁场的变化。
通过检测磁电传感器输出的电信号的变化,我们可以确定旋转物体的角度和转速。
四、编码器的输出信号旋转编码器的输出信号通常有两种类型:增量式和绝对式。
1. 增量式编码器:增量式编码器的输出信号是一系列脉冲,每个脉冲对应于旋转物体转过的一个固定角度。
旋转编码器控制步进电机定位案例
旋转编码器控制步进电机定位案例旋转编码器是一种能够将机械旋转运动转换成数字信号的传感器,它在许多自动控制系统中起着至关重要的作用。
步进电机则是一种将数字脉冲信号转换成机械运动的精密执行装置。
那么,我们来探讨一下旋转编码器控制步进电机定位的实际案例。
1. 硬件部分在这个案例中,我们需要准备一个步进电机和一个旋转编码器。
步进电机通过控制器接收数字脉冲信号,进而转动一定的角度。
而旋转编码器则可以监测步进电机转动的位置和方向。
这两者配合使用,可以实现精确的定位控制。
2. 软件部分除了硬件组成部分外,我们还需要编写控制程序来实现旋转编码器对步进电机的定位控制。
通过事先设定目标位置,并结合旋转编码器的反馈信息,控制程序可以实时地调整步进电机的运动状态,以达到精准的定位要求。
3. 实际应用在工业自动化设备中,旋转编码器控制步进电机的定位应用十分广泛。
在自动装配线上,需要对零部件进行精准的定位和装配;在数控机床上,需要对工件进行精密加工;在医疗设备中,需要对影像设备进行准确的定位等等。
这些都需要旋转编码器控制步进电机来实现。
4. 个人观点旋转编码器控制步进电机定位在工业自动化领域的应用非常广泛,而且随着技术的发展和创新,其应用范围还会不断扩大。
对于我来说,这个案例让我更深入地了解了数字控制系统在工业生产中的重要性,也让我对自动化控制技术有了更深层次的理解。
结语通过本案例的分析,我们了解了旋转编码器控制步进电机定位的原理和应用,同时也体会到了这种技术在工业自动化中的重要性和广泛性。
希望通过本文的共享,能够让更多的人对这一领域有所了解,也期待在未来能够看到更多基于旋转编码器控制步进电机的精准定位应用案例。
旋转编码器控制步进电机定位技术的发展和应用在工业自动化领域,旋转编码器控制步进电机的定位技术一直在不断发展和完善。
随着数字控制技术的不断进步,旋转编码器控制步进电机的应用范围也在逐渐扩大。
下面我们将进一步探讨这一技术的发展和应用情况。
旋转编码器编程原理实例
旋转编码器编程原理实例光电旋转编码器的原理及应用方法时间:2012-03-13 21:33:37 来源:作者:WinCE下光电编码器的驱动程序设计近年来,嵌入式技术发展迅速,嵌入式系统在各行各业得到了广泛的应用。
然而,由于嵌入式计算机的专用性,系统的硬件、软件结构千差万别,其输入设备也不再像通用计算机那样单一。
嵌入式计算机的输入没备一般有鼠标、键盘、触摸屏、按钮、旋钮等,而光电编码器(俗称“单键飞梭”)作为一种输入设备,由于其具有输入灵活,简单可靠等特点,因此特别适合应用在嵌入式仪器和手持式设备上,整个系统可以只用一个键作为输入。
触摸屏由于其方便灵活、节省空间、界面直观等特点也备受青睐,但存在寿命短,长时间使用容易产生误差等缺点。
如果用光电编码器辅助触摸屏作为输入设备,必将大大增强系统的可靠性,使得人机接口更加人性化。
但由于光电编码器并不是WinCE的标准输入设备,因此其驱动程序在嵌入式操作系统Windows CE Platform Builder中并未给出。
本文以三星公司S3C2410(ARM9芯片)为CPU的嵌入式系统开发板为平台,详细阐述了嵌入式操作系统WinCE 下光电编码器驱动程序的设计方法,以供同行参考。
1 光电编码器的工作原理光电编码器(OptICal Encoder)俗称“单键飞梭”,其外观好像一个电位器,因其外部有一个可以左右旋转同时又可按下的旋钮,很多设备(如显示器、示波器等)用它作为人机交互接口。
下面以美国Greyhill公司生产的光电编码器为例,介绍其工作原理及使用方法。
光电编码器的内部电路如图1所示,其内部有1个发光二极管和2个光敏三极管。
当左右旋转旋钮时,中间的遮光板会随旋钮一起转动,光敏三极管就会被遮光板有次序地遮挡,A、B相就会输出图2所示的波形;当按下旋钮时,2、3两脚接通,其用法同一般按键。
当顺时针旋转时,光电编码器的A相相位会比B相超前半个周期;反之,A相会比B 相滞后半个周期。
pic16单片机 旋转编码器 计数
pic16单片机旋转编码器计数一、概述pic16单片机作为一种常见的微控制器,被广泛应用于各种各样的嵌入式系统中。
而在许多嵌入式系统中,旋转编码器也是一种常见的输入设备,用于接收用户的旋转操作,并将其转换成数字信号。
本文将围绕pic16单片机如何实现对旋转编码器的计数功能展开讨论。
二、旋转编码器的工作原理旋转编码器是一种常用的用于探测旋转方向和角度的传感器。
它由两个通常相互垂直的轴组成,并且当旋转编码器旋转时,两个轴的相对位置会改变,从而可以通过检测这种位置的变化来判断旋转的方向和角度。
旋转编码器一般有两种类型:绝对编码器和增量编码器。
对于pic16单片机来说,增量编码器更为常见。
三、pic16单片机对旋转编码器的计数原理pic16单片机通过外部中断来接收旋转编码器发出的脉冲信号,从而实现对旋转的计数。
一般来说,旋转编码器每旋转一次会产生一定数量的脉冲信号,根据脉冲信号的数量和方向,pic16单片机可以实现对旋转的准确计数。
四、pic16单片机旋转编码器计数的实现步骤1. 确定旋转编码器的工作方式:不同型号的旋转编码器工作方式可能不同,需要先确定旋转编码器产生脉冲信号的规律。
2. 连接旋转编码器和pic16单片机:将旋转编码器的脉冲输出端连接至pic16单片机的外部中断引脚,同时连接旋转编码器的电源和接地端。
3. 初始化pic16单片机的外部中断:通过设置pic16单片机的寄存器,初始化外部中断的工作方式和触发条件。
4. 编写中断服务程序:当pic16单片机接收到外部中断信号时,中断服务程序会被触发,需要编写相应的中断服务程序来处理旋转编码器发送的脉冲信号。
5. 实现计数功能:在中断服务程序中,对旋转编码器发出的脉冲信号进行计数,并根据方向进行相应的加减操作。
五、pic16单片机旋转编码器计数的应用pic16单片机对旋转编码器的计数功能在许多嵌入式系统中都有广泛的应用。
在机器人控制系统中,可以用旋转编码器来获取电机的转动情况,以便控制机器人的移动;在工业自动化设备中,也可以利用旋转编码器和pic16单片机来实现对设备操作的精确控制。
编码器开关原理
一、编码器(编码开关)原理及使用方法
旋转编码器、数码电位器、Rotary Encoder。
它具有左转,右转功能,有的旋转编码开关还有按下功能。
使用方法:EC11型编码开关为例:
三只脚:123脚一般是中间2脚接地,1、3脚上拉电阻后,当左转、右转旋转时,在1、3脚就有脉冲信号输出了。
两只脚:按压开关,按下时导通,回复时断开。
二、在单片机编程时,左转和右转的判别是难点,用示波器观察这种开关左转和右转时
两个输出脚的信号有个相位差.由此可见,如果输出1为高电平时,输出2出现一
个高电平,这时开关就是向顺时针旋转;当输出1为高电平,输出2出现一个低
电平,这时就一定是逆时针方向旋转。
所以,在单片机编程时只需要判断当输
出1为高电平时,输出2当时的状态就可以判断出是左旋转或是右旋转了。
米思齐编码器编程实例
米思齐编码器编程实例米思齐编码器是一种旋转编码器,常用于机械设备中,通过旋转操作来控制设备的运动或参数调节。
编程实例可以通过读取编码器旋转信号来实现设备的控制。
以下是一个简单的米思齐编码器编程实例:```pythonimport RPi.GPIO as GPIO初始化GPIO设置GPIO.setmode(GPIO.BOARD)GPIO.setup(11, GPIO.IN)GPIO.setup(13, GPIO.IN)GPIO.setup(15, GPIO.IN)定义编码器状态变量prev_state_AB = GPIO.input(11) << 1 | GPIO.input(13)encoder_pos = 0定义编码器回调函数def encoder_callback(channel):global prev_state_AB, encoder_pos# 读取当前编码器状态current_state_AB = GPIO.input(11) << 1 |GPIO.input(13)# 判断编码器方向并更新位置if prev_state_AB == 0b00 and current_state_AB == 0b10: encoder_pos += 1elif prev_state_AB == 0b10 and current_state_AB ==0b11:encoder_pos += 1elif prev_state_AB == 0b11 and current_state_AB ==0b01:encoder_pos += 1elif prev_state_AB == 0b01 and current_state_AB ==0b00:encoder_pos += 1elif prev_state_AB == 0b00 and current_state_AB ==0b01:encoder_pos -= 1elif prev_state_AB == 0b01 and current_state_AB == 0b11:encoder_pos -= 1elif prev_state_AB == 0b11 and current_state_AB == 0b10:encoder_pos -= 1elif prev_state_AB == 0b10 and current_state_AB == 0b00:encoder_pos -= 1# 更新编码器状态prev_state_AB = current_state_AB配置编码器回调函数GPIO.add_event_detect(15, GPIO.FALLING,callback=encoder_callback, bouncetime=2)主循环while True:# 打印编码器位置print(encoder_pos)```该实例使用了RPi.GPIO库控制树莓派GPIO接口,并通过回调函数实现编码器旋转信号的处理。
旋转编码器工作原理
增量型旋转编码器工作原理1 工作基本原理及类型它是由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。
由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。
编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。
编码器以每旋转360度提供多少的通或暗刻线称为分辨率,也称解析分度、或直接称多少线,一般在每转分度5~10000线。
信号输出有正弦波(电流或电压),方波(TTL、HTL),集电极开路(PNP、NPN),推拉式多种形式,其中TTL为长线差分驱动(对称A,A-;B,B-;Z,Z-),HTL也称推拉式、推挽式输出,编码器的信号接收设备接口应与编码器对应。
编码器的脉冲信号一般连接计数器、PLC、计算机,PLC和计算机连接的模块有低速模块与高速模块之分,开关频率有低有高。
如单相联接,用于单方向计数,单方向测速。
A、B两相联接,用于正反向计数、判断正反向和测速。
A、B、Z三相联接,用于带参考位修正的位置测量。
A、A-,B、B-,Z、Z-连接,由于带有对称负信号的连接,电流对于电缆贡献的电磁场为0,衰减最小,抗干扰最佳,可传输较远的距离。
对于TTL的带有对称负信号输出的编码器,信号传输距离可达150米。
对于HTL的带有对称负信号输出的编码器,信号传输距离可达300米。
增量式编码器的问题—增量型编码器存在零点累计误差,抗干扰较差,接收设备的停机需断电记忆,开机应找零或参考位等问题,这些问题如选用绝对型编码器可以解决。
欧姆龙旋转编码实例
PLC与编码器的应用2006-09-18 来源:浏览:1027[推荐朋友] [打印本稿] [字体:大小]现工控行业中,编码器应用越来越广泛,故此讲述一下旋转编码器一般应用,欢迎大家踊跃提意见,如有疑问也欢迎大家与我联系。
旋转编码器一般介绍其主要有两种,一种是增量型,另一种是绝对型。
增量型特征是旋转期间会输出对应旋转角度脉冲,停止是不会输出。
它是利用计数来测量旋转方式;价格比较便宜。
绝对型特征是是否旋转,可以将对应旋转角度进行平行输出类型,不需要计数器可确认旋转位置;它还有不受机械晃动或震动以及开关等电器干扰功能,价格贵。
选择使用时,可参考以下几点。
包括成本、分辨率、外形尺寸、轴负荷及机械寿命、输出频率、环境、轴旋转力矩、输出回路等等。
应用举例它一般应用对机器动作控制。
我那一个实例详细说明一下。
我刚刚改造一台机器,机器运行过程中先要对工件进行处理,然后加工。
它以前是用光电开关做,机器电路就比较复杂,成本增加,维护调校麻烦。
我就对机器电路进行改造,主用一个编码器来代替以前光电开关。
此套系统由OMRONPLC与编码器组成。
下面是PLC 程序。
I/O 及数据检测是否有工件开关:00007 变频器零速输出:00008处理工序1:开(DM100)关(DM101) 10100处理工序2:开(DM102)关(DM103) 10101处理工序3:开(DM104)关(DM105) 10102加工工序1:开(DM106)关(DM107) 10103加工工序2:开(DM108)关(DM109) 10104加工工序3:开(DM110)关(DM111) 10105PLC程序Name="Initialize"[STATEMENTLIST]LD 253.13 //OnOUT TR0OUT 252.00 //Encoder software resetTIM 000 #0100 //System initialize delayAND 253.15 //PLC First scan onINI 000 002 DM0000 //Control Encoder modeLD TR0AND TIM000PRV 000 000 DM0000 //Encoder PV readDIV DM0000 #0004 DM0002 //1440 Change 360BCMP DM0002 DM0100 HR01 //Block compare for operationName="Shift"[STATEMENTLIST]LD 000.07 //Part onLD HR01.08 //Shift degreeLD 253.14 //OffSFT HR60 HR62 // the rightmost word of the shift register Name="Treat 1"[STATEMENTLIST]LD TIM000AND HR60.08 //Shift to action 1 operate positionAND NOT 00008 //Inverter zero speed outputAND HR01.00 //Degree of action 1OUT 101.00 //Output Treat 1Name=" Treat 2"[STATEMENTLIST]LD TIM000AND HR60.10 //Shift to action 2 operate positionAND NOT 00008AND HR01.01 //Degree of action 2OUT 101.01 //Output Treat 2Name=" Treat 3"[STATEMENTLIST]LD TIM000AND HR60.15 //Shift to action 3 operate positionAND NOT 00008AND HR01.02 //Degree of action 3OUT 101.02 //Output Treat 3Name="Process 1"[STATEMENTLIST]LD TIM000AND HR62.03 //Shift to Print 1 operate positionAND NOT 00008AND HR01.03 //Degree of print 1OUT 101.03 //Output Process 1Name=" Process 2"[STATEMENTLIST]LD TIM000AND HR62.05 //Shift to Print 2 operate positionAND NOT 00008AND HR01.04 //Degree of print 2OUT 101.04 //Output Process 2Name=" Process 3"[STATEMENTLIST]LD TIM000AND HR62.08 //Shift to Print 3 operate position AND NOT 00008AND HR01.04 //Degree of print 3OUT 101.04 //Output Process 3我也转一个来,这是台达的,这个接线这是程序及说明。
旋转编码器结构原理和应用
旋转编码器结构原理和应用
一、旋转编码器结构:
光电编码器由光学传感器和编码盘两部分组成。
编码盘通常由透明材
料制成,上面分布着很多等距离排列的透明和不透明斑块,其中斑块的数
量决定了旋转编码器的分辨率。
而光学传感器则包括发光二极管和光敏电
阻器,它们紧密地结合在一起,并且位于编码盘的两侧。
当编码盘转动时,发光二极管发出光线照射在编码盘上,光线穿过透明斑块被光敏电阻器接收,然后转换成电信号输出。
二、旋转编码器原理:
三、旋转编码器应用:
1.位置测量:旋转编码器可以通过测量脉冲信号的数量来确定旋转运
动的位置。
广泛应用于机器人、数控机床等需要精确位置控制的设备中。
2.速度测量:旋转编码器通过测量脉冲信号的频率来确定旋转运动的
速度。
在电机控制、轴承诊断等领域有重要应用。
3.转角测量:旋转编码器可以测量旋转运动的角度,用于测量转盘、
摇杆、汽车方向盘等的转角。
4.位置控制:旋转编码器可以与控制系统配合使用,实现精确的位置
控制,广泛应用于自动化生产线、机床等设备中。
5.逆变器控制:旋转编码器可以与逆变器配合使用,实现电机的精确
控制,提高电机的效率和响应速度。
6.应力测量:旋转编码器可以通过测量扭转角度来确定材料的应力状态,用于力学实验、结构分析等领域。
7.雷达测距:旋转编码器可以用于测量雷达信号的到达时间差,从而确定目标的距离。
总结:。
ec11旋转编码器的工作原理
ec11旋转编码器的工作原理宝子,今天咱们来唠唠EC11旋转编码器这个超有趣的小玩意儿的工作原理哈。
你看啊,EC11旋转编码器就像是一个小小的魔法轮盘。
它有个轴,这个轴可灵活啦,就像个调皮的小指头,你可以随意地转动它。
当你转动这个轴的时候呢,里面就像是有一群小精灵开始忙乎起来了。
这个编码器里面有一些电气结构哦。
简单来说呢,它有点像那种特别聪明的小机关。
它可以把你转动轴的动作转化成电信号。
你想啊,你转一下,它就知道“哦,主人转我啦,我得告诉电路点啥”。
这就像是你跟它之间有个小秘密语言一样。
它内部有像小梳子一样的结构,不过这梳子可不是用来梳头的哈。
这些小梳子互相交叉,当轴转动的时候,就会改变它们之间的接触状态。
就好比是一群小伙伴手拉手,然后有人动了一下,拉手的方式就变了。
这种接触状态的改变就会让电流的通路发生变化。
电流就像一群小蚂蚁,本来走的好好的路,突然因为这些小梳子的变化,就得换条道走啦。
而且哦,EC11旋转编码器还能知道你是顺时针转还是逆时针转呢。
这就更神奇啦,就好像它有个小脑袋在里面思考“嗯,这个方向是往左走,那个方向是往右走”。
它是怎么做到的呢?其实就是通过那些复杂又巧妙的电路设计啦。
当你顺时针转动的时候,它产生的电信号和逆时针转动的时候是不一样的。
这就像是它给你的转动方向做了个特殊的标记,这样电路就能根据这个标记知道是要增加数值还是减少数值啦。
再说说它的脉冲输出。
这个脉冲就像是小编码器在给电路发送的小暗号。
每转一定的角度,它就会发出一个脉冲。
就好像是在说“滴答,我又转了这么多啦”。
电路呢,就可以根据这些脉冲的数量来计算出你到底转了多少角度。
这就好比是数小脚印一样,一个脉冲就是一个小脚印,数着数着就知道你走了多远啦。
还有哦,EC11旋转编码器在很多地方都超级有用呢。
比如说在音响上,你转动那个调节音量的小旋钮,很可能就是一个EC11旋转编码器在工作。
你轻轻一转,它就告诉音响是要把声音调大还是调小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何使用旋转编码器、编码开关,旋转编码开关、编码器的原理在电子产品设计中,经常会用到旋转编码开关,也就是所说的旋转编码器、数码电位器、Rotary Encoder 。
它具有左转,右转功能,有的旋转编码开关还有按下功能。
为了使刚接触这种开关的朋友了解旋转开关的编程,我来介绍下它的原理和使用方法:以我厂生产的EC11型编码开关为例:如图1:三只脚:1 2 3脚一般是中间2脚接地,1、3脚上拉电阻后,当左转、右转旋转时,在1、3脚就有脉冲信号输出了。
两只脚:为按压开关,按下时导通,回复时断开。
在单片机编程时,左转和右转的判别是难点,用示波器观察这种开关左转和右转时两个输出脚的信号有个相位差,如图2。
由此可见,如果输出1为高电平时,输出2出现一个高电平,这时开关就是向顺时针旋转;当输出1 为高电平,输出2出现一个低电平,这时就一定是逆时针方向旋转。
所以,在单片机编程时只需要判断当输出1为高电平时,输出2当时的状态就可以判断出是左旋转或是右旋转了。
旋转编码开关(Rotary Encoder switch)我前面介绍的2篇文章:“自己动手做收音机(LC72131)”和“电脑USB接口LCD液晶显示板(LCD Smartie)”都使用了这种旋转编码开关(Rotary Encoder switch),一个使用3脚的,后面一个使用5脚的,大家可能对这种玩意都不是很了解,但涉及到有调整的地方,这个玩意使用真是很爽,我弄了2个,研究了一下,供大家参考~5脚的ALPS:<-- ALPS Incremental Encoder (EC11 series)具有左转,右转,按下三个功能。
4、5脚是中间按下去的开关接线 1 2 3脚一般是中间2脚接地,1、3脚上拉电阻后,当左转、右转旋纽时,在1、3脚就有脉冲信号输出了。
这是标准资料:在单片机编程时,左转和右转的判别是难点,用示波器观察这种开关左转和右转时两个输出脚的信号有个相位差,见下图:由此可见,如果输出1为高电平时,输出2出现一个高电平,这时开关就是向顺时针旋转; 当输出1 为高电平,输出2出现一个低电平,这时就一定是逆时针方向旋转.所以,在单片机编程时只需要判断当输出1为高电平时,输出2当时的状态就可以判断出是左旋转或是右旋转了。
还有另外一种3脚的,除了不带按钮开关外,和上面是一样的使用。
---------------------- 我是分隔线----------------------编码器总结(类似音响上的音量调节旋钮)1.要求旋转速度快,调节就快,速度慢,,调节就慢2.机械的编码器要24脉冲/每转,勉强可以分辨3到4种速度(每隔100ms计算一次速度),,机械的缺点是有毛刺,,寿命短,,通常在1万转左右,,不过bounce的号称20万转3.希望编码器每转的脉冲愈多愈好,霍尔的编码器和光电的编码器脉冲都很多,,但是价格都很高,,唉4.cui的编码器最好了,啥都有,按钮功能也有,,配套的旋钮也有,,完美,,可是国内没有卖的---------------------- 我是分隔线----------------------旋转编码器检测转动方向的电路---------------------- 我是分隔线----------------------旋转编码器的抗抖动计数电路摘要:旋转编码器应用于角度定位或测量时,由于旋转轴的晃动可能引起编码器输出波形的,从而引发误计数现象。
介绍了一个抗抖动计数电路,滤除了旋转编码器因抖动而造成的误计数。
关键词:旋转编码器抗抖动电路数字电路旋转编码器应用于角度定位或测量时,通常有A、B、Z三相输出。
旋转编码器的输出波形见图1。
A相和B相输出占空比为50%的方波。
编码器每转一周,A相和B相输出固定数目的脉冲(如100个脉冲)。
当编码器正向旋转时,A相比B相超前四分之一个周期;当编码器反向旋转时,B 相比A相超前四分之一个周期。
A相和B相输出方波的相位差为90°。
编码器每转一周,Z相输出一个脉冲。
由于编码器每转一周,A相和B相输出固定数目的脉冲,则A相或B相每输出一个脉冲,表示编码器旋转了一个固定的角度。
当Z相输出一个脉冲时,表示编码器旋转了一周。
因此旋转编码器可以测量角位移及位移方向。
问题出在伺服系统停止工作时,若无锁定,则旋转轴受外力(如风力影响)可能自由晃动,因而引起编码器输出波形抖动,如图2所示,从而引起误计数。
在这种情况下,就不能对波形进行正确计数。
虽然可以通过软件设置标志状态,用记录历史状态的变化来滤除误计数,但是程序耗费颇大。
因此,本人设计了一个抗抖动计数电路。
它能够自动消除抖动造成的误计数。
1 抗抖动计数电路原理图图3是抗抖动计数电路原理图。
此电路滤除了旋转编码器输出波形的抖动现象。
该电路分为四个部分:译码电路U4A;互锁电路U5A、U5B;正旋计数链J1、J3、J5和反旋计数链J2、J4、J6。
U4A为二四译码器,U5A、U5B为与门,J1~J6为D触发器。
正旋计数链负责对编码器正向旋转的计数,反旋计数链负责对编码器反向旋转的计数。
2 抗抖动计数电路工作分析图4为二四译码器输出的波形。
译码器产生d、a、b、c四种不同的状态。
在图3中当B=0、A=0时,译码器Q0输出为d状态,d状态为高电平。
当B=0、A=1时,译码器Q1输入为a状态,a状态为高电平。
当B=1、A=1时,译码器Q2输出为b状态,b状态为高电平。
B状态不影响计数和方向确定,在图3电路中没有使用。
当B=1、A=0时,译码器Q3输出为c状态,c状态为高电平。
当旋转编码器正向旋转时,译码器输出的状态顺序为d、a、b、c、d、a、b、c……。
如图4所示。
当B=0、A=0时,进入d状态,与门U5A的Pin2=a=0(Pin是管脚的意思),于是U5A的输出Pin3=0。
D触发器J1的R=d=1、S=0,因此J1被清0.与门U5B的Pin5=c=0,于是U5B的输出Pin4=0。
D触发器J2的R=d=1、S=0,因此J2也被清0。
这时J1、J2的Q端都为1,与门U5的Pin1=Pin6=1,U5A和U5B都处于等待开门状态。
当进入状态a时,Q1=a=1,U5A的Pin2=a=1。
由于c=0,所以J2的Q端仍为1,U5A的Pin1=1,U5A的输出Pin3=1.J1的R=d=0、S=1,因此J1被置1。
J1的Q=1,Q=0。
J1的Q=1,正旋标志送到了J3的D端。
时J1的Q端关闭了U5B。
在下一个d出现之前,所有的c脉冲都不会改变J2的状态。
这就说,J1、J3、J5组成的正旋计数链被打开,J2、J4、J6组成的反旋计数链被阻断。
U5A、U5B、J1、J2完成互锁的功能。
在进入状态a时,J3的R=a=1、S=0,J3被清0,J5的R=a=1、S=0,J5被清0.在进入状态c前,J3的R=a=0、S=0、D=1,J3处于待触发状态。
J3的CLK=c,当c脉冲上升沿过后,D=1被打入J3的Q端,正旋标志送到了J5的D端。
在进入状态d前,J5的R=a=0、S=0,J5处于待触发状态。
J5的CLK=d,当d脉冲上升沿过后,D=1被打入J5的Q端,正旋标志送到了正旋计数输出端。
正旋计数输出端由低电平变为高电平。
到此为止,完成了一次正旋计数。
当由状态d进入状态a时,J5的R=a=1、S=0,J5被清0,正旋计数输出端由高电平变为低电平。
由此可知,当旋转编码器正向旋转时,对应A相B相的每一个完整周期,正旋计数输出端都会产生相应的一个脉冲。
A的出现抢到了正旋计数权。
只有在d重新出现后,脉冲c才可能有机会抢到反旋计数权。
从而保证了一旦进入正旋计数状态,不全完成这一过程,就进入不了反旋计数状态。
运行时有可能从状态a返回状态d,结果这只不过释放正旋计数权。
因这时正旋标志还只在J3输入端上,a出现时已把J3清0。
D状态只会把0送给J5的Q端,因此不会产生误计数。
当旋转编码器反向旋转时,译码器输出的状态顺序为d、c、b、a、d、c、b、a……。
这种情况的分析方法与正向旋转的分析方法相同,这里不再叙述。
这就好比接力赛。
在一个只允许上一个人的封闭的环形跑道上依次均匀设d、a、b、c、四个站,立四个裁判员。
d点为起止点、出入口,持棒运动员沿环形跑道一站站往下跑。
D裁判长的职责是:运行员往a去(顺行),告示:“有人,正向”;往c去(逆行),告示:“有人,反相”。
其他裁判员的职责是给到达本站的运动员发签证(计数标志),往回跑,撤销签证。
d裁判长的计分规则是:凭其他裁判的签证齐全加牌示,正,加一分,反,减一分,然后撤销签证。
签证不齐到d,则不计分,撤销签证。
运行员在跑道内来回跑或坐时,d裁判视而不见。
例如在图2中,当从状态d进入状态a时,正旋标志送到J3的D端。
此后的a、b、a、b、a、b 都不起作用,只是把J3和J5反复清0.当从状态c进入状态d时,正旋标志到正旋计数输出端,同时J1和J2被清零。
在从状态d进入状态c后,反旋标志送到J4的D端。
同时,D=0被打入J3的Q端,这时J5的D端为零。
在从状态c回到状态d后,反旋计数权被释放。
但是,由于J5的D端为零,虽然这里再次出现状态d,该d脉冲不会发生计数,这就是抗抖动。
图5为抗抖动计数电路的输出波形。
此电路计数频率可达10MHz。
A相和B相输入前应予整形,必要时还要进行电隔离。
本人把此电路用于对在线云台角度的定位与测量。
天线云台有两个旋转角度,俯仰角从0~90度,方位角从0~354度。
旋转编码器用的是OMROM公司的E6A2。
此编码器每转一周,A相或B 相输出一百个脉冲。
由此可得,抗抖动计数电路每输出一个脉冲,编码器旋转的角度是3.6度。
如果加上变速齿轮将会提高角度测量精度。
把抗抖动电路的正旋计数输出和反旋计数输出接到单片机的中断管理上,其下降沿时给单片机发中断。
单片机把处理的角度信息送到显示屏上显示出来,从而完成了对天线云台角度的定位与测量。
这套天线角度显示系统在实际使用中运行一直很稳定,没有出现过误计数现象。
---------------------- 我是分隔线----------------------1mm Size Metal Shaft Encoder EC11 Series (Incremental Encoder)DetailPart number E C11E09204A4Structure VerticalActuator configuration FlatActuator length 20mmTorque 10±7mN·mNumber of detent 18Number of pulse 9Operating direction VerticalPush-on switch WithoutOperating life 15,000 cyclesMinimum order unit (pcs.) 1,200Operating temperature range -30℃to +85℃Maximum operating current (Resistive load) 10mAElectrical performance Ratings 10mA 5V DCOutput signalOutput of A and B signals,proportionate to phasedifferenceInsulation resistance 100MΩ min. 250V DC Voltage proof 300V AC for 1 minuteMechanical performance Push-pull strength 100NResistance tosoldering heatManualsoldering350℃max. 3s max.Durability Operating life 15,000 cyclesEnvironmental performance Cold -40±3℃for 240hDry heat 85±3℃for 240hDamp heat 60±2℃, 90 to 95%RH for 240hPhotoDimensionsMounting Hole DimensionsViewed from mounting side. Output WaveSliding NoiseAt R=5kΩ Chattering: 3ms max. Bounce: 2ms max.Product VarietiesSingle-shaft Type1) Knourled Type Unit : mm Style (Shaft diameter : φ6)2) Flat Type Unit : mm Style (Shaft diameter : φ6)Style (Shaft diameter : φ6)Notes are common to this series/models.•This site catalog shows only outline specifications. When using theproducts, please obtain formal specifications for supply.•Please place purchase orders per minimum order unit (integer).•Products other than those listed in the above chart are also available.Please contact us for details.•This products can be used in vehicles.Although these products are designed to perform over a wide operatingtemperature range, please ensure that you receive and read the formaldelivery specifications before use.I nquiries about ProductsFor more information please contact: Products Information Center.1-7, Yukigaya-otsukamachi, Ota-ku, Tokyo, 145-8501, JapanPhone: +81 (3) 5499-8154Series 288 Encoder 16 mm Rotary EncoderLow cost, robust design Miniature 16mm styleBushing mountedPC terminals, with shaft parallelor perpendicular to PC board2 bit, 4 bit Gray and 4 bitHexidecimal codesavailable Continuous rotationAvailable with 16 detentsOptional momentary switchElectrical and Mechanical SpecificationsPower Rating 100 milliwattsVoltage Rating Operating maximum 50 VACOperating Temperature Standard: -25°C to +100°CContact Resistance 5,000 ohms static closed circuit maximum---------------------- 我是分隔线----------------------按键旋转编码器(涡轮)程序51:void polling_volume_sw(void){BYTE bSWValue=0;static BYTE iLastData=0;static BYTE iSWTempData = 0;#if defined(SUPPORT_USE_SW_SCANF_CODER) ||defined(SUPPORT_USE_SW_SCANF_LEVEL)polling_check_vfdsw();return;#elif defined(VOLUME_SW_USE_IO)GPIO_M_SET(13,1); //GAME DIGPIO_M_SET(14,1); //GAME DOGPIO_E_SET(13,0);GPIO_E_SET(14,0);bSWValue =( (GPIO_I_GET(14)<<1) | (GPIO_I_GET(13) )); #endifif(bSWValue != iSWTempData)iSWTempData = bSWValue;else{switch(bSWValue){case 0:if(iLastData ==2)iLastData ++;break;case 1:if(iLastData ==1)iLastData++;else if(iLastData ==3){call_ir_func(IRC_VOLUME_UP);iLastData = 0;}break;case 2:if(iLastData ==1)iLastData ++;else if(iLastData == 3){call_ir_func(IRC_VOLUME_DN);iLastData = 0;}break;case 3:iLastData =1;break;default:break;}}#endif}sunplus(dvd) 环境:需源程序支持://// generic GPIO operations//#define GPIO_I_GET(a) ((regs0->gpio_in[a/16] >> (a%16)) & 0x01)#define GPIO_O_SET(a,d) ((d) ? (regs0->gpio_out[a/16] |= (1<<(a%16))) \: (regs0->gpio_out[a/16] &= ~(1<<(a%16))) )#define GPIO_E_SET(a,d) ((d) ? (regs0->gpio_oe[a/16] |= (1<<(a%16))) \: (regs0->gpio_oe[a/16] &= ~(1<<(a%16))) )#define GPIO_M_SET(a,d) ((d) ? (regs0->gpio_master[a/16] |= (1<<(a%16))) \: (regs0->gpio_master[a/16] &= ~(1<<(a%16))) )#ifdef SUPPORT_XINZENYU_JOB_VOLUME //Refee 080905BYTE volume_a_buf = 0;BYTE volume_b_buf = 0;void Check_Job_Volume_Key(void){GPIO_M_SET(13,1); //Pin62 Game_D0GPIO_M_SET(14,1); //Pin63 Game_D1GPIO_E_SET(13,1);GPIO_E_SET(14,1);GPIO_O_SET(13,1);GPIO_O_SET(14,1);volume_a_buf = volume_a_buf<<1;if(!GPIO_I_GET(13)) volume_a_buf++;volume_b_buf = volume_b_buf<<1;if(!GPIO_I_GET(14)) volume_b_buf++;volume_a_buf = volume_a_buf & 0x7;volume_b_buf = volume_b_buf & 0x7;if(volume_a_buf == 0x04){if(volume_b_buf >= 0x06)call_ir_func(IRC_VOLUME_DN);elsecall_ir_func(IRC_VOLUME_UP);volume_a_buf = 0;volume_b_buf = 0;}}#endif---------------------- 我是分隔线----------------------这段不是很好,对于质量很差的编码器就问题较大了,需要加一些处理:void Check_Job_Volume_Key(void){static unsigned char last_gpio1=0;static unsigned char last_gpio2=0;static unsigned char last_gpio3=0;static unsigned char last_gpio4=0;static unsigned char last_gpio5=0;static unsigned char last_gpio2_1=0;unsigned char gpio1;unsigned char gpio2;regs0->gpio_first[1]|= (0x1<<5); //Set pin9 as GPIO21regs0->gpio_first[1]|= (0x1<<13); //Set Pin52 as GPIO29GPIO_M_SET(21,1);GPIO_M_SET(29,1);GPIO_E_SET(21,0);GPIO_E_SET(29,0);//GPIO_O_SET(21,1);//GPIO_O_SET(29,1);gpio1=GPIO_I_GET(21);gpio2=GPIO_I_GET(29) ;if((gpio1)&&(last_gpio1)&&(last_gpio2)&&(!last_gpio3)&&(!last_gpio4)&&(!last_gpi o5)){if (gpio2&&last_gpio2_1)call_ir_func(IRC_VOLUME_DN);else if ((!gpio2)&&(!last_gpio2_1))call_ir_func(IRC_VOLUME_UP);}last_gpio2_1=gpio2;last_gpio5=last_gpio4;last_gpio4=last_gpio3;last_gpio3=last_gpio2;last_gpio2=last_gpio1;last_gpio1=gpio1;}参考:#include "reg51.h"#define uint unsigned intsbit CodingsWitch_A=P1_1;sbit CodingsWitch_B=P1_2;uint CodingsWitchPolling()//{static Uchar Aold,Bold; //定义了两个变量用来储蓄上一次调用此方法是编码开关两引脚的电平static Uchar st; //定义了一个变量用来储蓄以前是否出现了两个引脚都为高电平的状态uint tmp = 0;if(CodingsWitch_A&&CodingsWitch_B)st = 1; //if(st) //如果st为1执行下面的步骤{if(CodingsWitch_A==0&&CodingsWitch_B==0) //如果当前编码开关的两个引脚都为底电平执行下面的步骤{if(Bold) //为高说明编码开关在向加大的方向转{st = 0;tmp++; //}if(Aold) //为高说明编码开关在向减小的方向转{st = 0;tmp--; //设返回值}}}Aold = CodingsWitch_A; //Bold = CodingsWitch_B; //储return tmp; //}//编码器计数程序void encoder_cnt(void){uchar temp;temp = PIND; //取端口D管脚信号couch_clr = (temp & 0x08); //取编码器清零信号if(couch_clr != false) //有编码器清零信号{couch_num = 0; //水平床码清零}else{if(encoder_cnt_en == false) //编码器计数模块没有启动{pr_couch_ba = temp & 0x03; //取编码器A、B相电平信号 }else{couch_ba = temp & 0x03; //取编码器A、B相电平信号if(pr_couch_ba == 0x00){if(couch_ba == 0x01){couch_num++; //水平床码加1 }else if(couch_ba == 0x10){couch_num--; //水平床码减1 }}else if(pr_couch_ba == 0x01){if(couch_ba == 0x11){couch_num++; //水平床码加1 }else if(couch_ba == 0x00){couch_num--; //水平床码减1 }}else if(pr_couch_ba == 0x10){if(couch_ba == 0x00){couch_num++; //水平床码加1 }else if(couch_ba == 0x11){couch_num--; //水平床码减1 }}else if(pr_couch_ba == 0x11){if(couch_ba == 0x10){couch_num++; //水平床码加1 }else if(couch_ba == 0x01){couch_num--; //水平床码减1 }}}pr_couch_ba = couch_ba;}}旋转编码器的检测程序(MCS51)//旋转编码器检测程序,A/B信号分别接在了INT0和INT1上//程序作者:BG4UVR//2005年1月15用KEIL编译、硬件测试通过//注意:编码器的信号,程序未做消抖处理。