增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。在接合数字电路特别是单片机后,增量式旋转编码器在角度测量和角速度测量较绝对式旋转编码器更具有廉价和简易的优势。
A,B两点对应两个光敏接受管,A,B两点间距为 S2 ,角度码盘的光栅间距分别为S0和S1。
当角度码盘以某个速度匀速转动时,那么可知输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值相同,同理角度码盘以其他的速度匀速 转动时,输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值仍相同。如果角度码盘做变速运动,把它看成为多个运动周期(在下面定义)的组 合,那么每个运动周期中输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值仍相同。
通过输出波形图可知每个运动周期的时序为
顺时针运动 逆时针运动
A B AB
1 1 11
0 1 10
0 0 00
1 0 01
我们把当前的A,B输出值保存起来,与下一个A,B输出值做比较,就可以轻易的得出角度码盘的运动方向,
如果光栅格S0等于S1时,也就是S0和S1弧度夹角相同,且S2等于S0的1/2,那么可得到此次角度码盘运动位移角度为S0弧度夹角的1/2,除以所消毫的时间,就得到此次角度码盘运动位移角速度。
S0等于S1时,且S2等于S0的1/2时,1/4个运动周期就可以得到运动方向位和位移角度,如果S0不等于S1,S2不等于S0的1/2,那么要1个运动周期才可以得到运动方向位和位移角度了。
发一个 机械式旋转编码器 检测程序 用51写的
#define WA = PX.X
#define WB = Py.y
void encoder(void)
{
unsigned char i,j;
static unsigned char ta,tb;
TR1 = 0;
i = WA;
j = WB;
if((i^j)&&(ta&tb))
{
if((i == 1)&&(j ==0))
{
count++;
}
else if((i == 0)&&(j == 1))
{
count--;
}
}
关键字:单片机 增量式 旋转编码器
引用地址:
单片机与增量式旋转编码器的连接
推荐阅读最新更新时间:2024-03-16 15:07
proteus与keil Cx51的单片机仿真(测量脉冲宽度)
利用门控位测试INT0引脚上出现的脉冲的宽度,并以机器周期数的形式通过发光二极管显示。 电路图: U1源程序: #include reg51.h sbit P1_1=P1^1; void main(void) { TMOD=0x02; EA=1; ET0=1; TH0=256-250; TL0=256-250; TR0=1; while(1); } void Time0(void)interrupt 1 using 0 {P1_1=~P1_1;} U2源程序: #include reg51.h #include intrins.h void main(void) { TMOD=0x0a; EA=1; ET0
[单片机]
单片机编程中C语言和汇编的差异
最近对比了下C语言和汇编两种语言在单片机领域的差异。汇编作为低级语言,是仅次于机器语言和硬件联系最紧密的语言;而C语言,严格的说也只能算是半个高级语言,相对于其他高级语言来说。这两者比较直观的差异是:汇编语言的实时性非常好,但可读性差,可移植性不强;相反,C语言的可读性强,可移植性高,但实时性比较差。 利用C语言编写单片机程序,不用考虑程序的初始化地址,不用考虑ACC,PSW以及工作寄存器的保护,不用考虑溢出进位CY。而汇编这些都需要考虑到。 今天在编写温度计程序的时候遇到了这个问题,因为以前是用汇编写的,现在翻译成C,在处理负数转换的时候遇到了问题。因为如果温度计转换芯片读出来的是负数,他是以反码的形式表示的,需
[单片机]
STM32F103单片机JTAG端口重映射
STM32单片机复位后,JTAG口默认是被占用的。如果想将JTAG占用的几个IO口设置为普通IO口,就需要进行端口重映射。 复位后端口默认功能可以在STM32参考手册上看到 要将JTAG占用的这些口设置为普通IO口时,需要用复用功能重映射,在程序开始执行时将JTAG口重映射为普通IO口。 将JTAG要设置为普通 IO口时,需要设置AFIO_MAPR寄存器的SWJ_CFG位。如果用寄存器操作的话,就直接设置这个寄存器的值就行。如果用库函数操作的话,可以直接调用库函数void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)。 这个库函
[单片机]
Microchip全新PIC和AVR MCU,提高闭环控制性能
从水池水泵到空气净化装置,闭环控制都是嵌入式系统最基本的任务之一。通过改进架构,PIC和AVR 8位单片机(MCU) 针对闭环控制进行了优化,让系统能够降低中央处理器 (CPU) 的负载,从而管理更多任务并实现节能。为了帮助设计师最大限度提高系统的性能和效率,Microchip Technology Inc.(美国微芯科技公司)日前推出了全新的PIC18 Q10和ATtiny1607系列产品,可提供多个独立于内核的智能外设 (CIP),简化开发过程,并迅速响应系统事件。 PIC18 Q10 和 ATtiny1607 MCU非常适用于使用闭环控制的应用,其主要优势是CIP能够独立管理任务,降低CPU的处理量。借助基于硬件的CIP
[半导体设计/制造]
基于AT89C2051单片机的门禁系统设计
电路描述: 安全是我们日常的生活中最关心的问题。 每个人都觉得安全问题是非常至关重要的,在家里的门和安全,可以尽可能多的安全。 为了对于门访问安全因此,我们打算通过引进一个电子密码锁系统,该系统包括一个人得到一个访问某些项目之前要输入密码的安全性,以及在家里,一个房间密码锁系统,不只是普通的单用户密码锁系统,需要用户插入已编程的代码来访问一个房间; 它是一个密码锁系统,有密码而且可以启用多个用户访问。 在基于51单片机的门储物柜,只允许授权人员进入限制区域的门禁系统。 该系统由8位微控制器AT89C2051具有ROM的2K字节的程序存储器完全控制。 该系统具有通过该密码,可以通过它来输入键盘。 当输入的密码与存储在存储器中的口
[单片机]
基于51单片机太阳能风能风光互补路灯控制器设计
一.硬件方案 本设计由STC89C52单片机电路+太阳能电池板电路+风机发电电路+锂电池充电保护电路+升压电路+稳压电路+光敏电阻电路+4位高亮LED灯电路+2档拨动开关电路+电源电路设计而成。 二.设计功能 (1)采用风机和太阳能电池板给锂电池充电,具有充电保护电路和稳压电路。 (2)锂电池升压到5V给单片机和附属电路供电。 (3)路灯用4个高亮LED灯模拟。 (4)用光敏传感器测光线亮度,低于设置值时自动开启灯光。 (5)路灯控制分为手动模式和自动模式,手动模式下可以自由的开灯或者关灯,自动模式下通过光敏电阻根据光照强度自动控制灯的开和关。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)PCB
[单片机]
三分钟看懂stm8s单片机实现多通道转换
今天在使用stm8s单片机的AD功能,单片机上有AN0到AN9十个通道。想只用其中的三路AN5到AN7。 //ADC初始化 void ADC_Init(void) { ADC_CR1 = 0x50; ADC_CR2 = 0x38; ADC_TDRL = 0xE0;//禁止施密特触发 } unsigned int Read_ADC_Temp(unsigned channel) { unsigned int i,ADtemp; ADC_Init(); //ADC_CSR = 0x00; ADC_CSR = channel; ADC_CR1 = 0x01;// CR1寄存器的最低位置1,使能ADC转换 for(i = 0;i 《 3
[单片机]
瑞萨发布10个型号32位CISC微控制器H8SX系列
2008 年 6 月 9 日 ,瑞萨科技 正式 推出四个家族总共 10 个型号 ( 15 个型号名称 ) 产品 —— 分别命名为 H8SX/1645 、 H8SX/1635 、 H8SX/1665 和 H8SX/1655 。这些器件均为32位CISC(复杂指令集计算机)微控制器H8SX系列的产品,具有增强的模拟外设功能,包括更快的A/D转换和更高精度的D/A转换。这些新品的样品将从2008年9月开始依次在日本交付。 这四个家族的微控制器是瑞萨目前的H8SX/1648、H8SX/1638、H8SX/1668R和H8SX/1658R产品的后续产品,可以提供增强的模拟外设功能,同时保持了与这类产品的引脚兼容
[新品]