基于单片机的旋转编码器鉴相方法
51单片机检测光电旋转编码器每周实际脉冲数
程序代码/**************************************************************** **** 文件名: main.c** 创建人: 飘扬** 日期: 2006.10.04** 修改人:** 日期:** 描述: 本程序使用伟纳300A型实验板,来检测光电旋转编码器的实际每周** 输出脉冲数。
程序中,定时器0用于8位数码管动态扫描定时,时间** 为1ms(12MHZ晶振)。
定时器1工作于模式1,计数器方式,直接测量** 接在T1脚的脉冲个数。
外部中断0,工作于边沿触发方式,接在旋转** 编码器的Z信号输出上,用于检测编码器完整旋转一周。
8位数码管,** 接成动态扫描,接在P0和P2口。
左4位,用来显示上一周的实际脉冲** 数,右4位,用来显示当前周的脉冲数。
**** 实际使用,感觉效果还可以。
程序准确的测量出某牌光电旋转编码** 器(400脉冲),实际工作时,双路信号输出脉冲数量不等,及脉冲** 数与标称值的误差情况。
**** 本程序的显示部分,直接修改于伟纳提供的数码管显示1-8例程。
**----------------------------------------------------------------*/#include <reg51.h>#include <intrins.h>unsigned char data dis_digit;unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 30x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, offunsigned char data dis_buf[8];unsigned char data dis_index;unsigned int counter1,counter2; //左右计数器数值void main(){P0 = 0xff;P2 = 0xff;TMOD = 0x51; //定时器0工作在模式1定时器方式,定时器1工作在模式1计数器方式TH0 = 0xFC;TL0 = 0x17;TH1 = 0;TL1 = 0;IE = 0x83; //开定时器0中断和外部中断0IT0 = 1; //外部中断0为边沿触发方式//显示初始化counter1=0; //右测显示的本周当前脉冲数counter2=0; //左测显示的上一周脉冲数dis_digit = 0xfe;dis_index = 0;TR0 = 1;//主程序TR1 = 1;while(1){counter1=(TH1*0xff)+TL1;dis_buf[0] = dis_code[0x0a];dis_buf[1] = dis_code[counter2/100];dis_buf[2] = dis_code[(counter2%100)/10];dis_buf[3] = dis_code[counter2%10];dis_buf[4] = dis_code[0x0a];dis_buf[5] = dis_code[counter1/100];dis_buf[6] = dis_code[(counter1%100)/10];dis_buf[7] = dis_code[counter1%10];}}//外部中断0void int0() interrupt 0{TL1=0;TH1=0;counter2=counter1;}void timer0() interrupt 1// 定时器0中断服务程序, 用于数码管的动态扫描// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时, // 选通P2.0口数码管// dis_buf --- 显于缓冲区基地址{TH0 = 0xFC;TL0 = 0x17;P2 = 0xff; // 先关闭所有数码管P0 = dis_buf[dis_index]; // 显示代码传送到P0口P2 = dis_digit; //dis_digit = _crol_(dis_digit,1); // 位选通值左移, 下次中断时选通下一位数码管dis_index++; //dis_index &= 0x07; // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描}。
单片机编码器编程实例 -回复
单片机编码器编程实例-回复“单片机编码器编程实例”编码器是一种常用的输入设备,广泛应用于各种电子设备中。
在单片机编程中,编码器常被用于控制和监测电机运动、旋转角度的测量以及用户界面交互等方面。
本文将以编码器编程为主题,一步一步介绍如何在单片机中实现编码器的功能。
第一步:了解编码器的基本原理和工作方式编码器是一种将旋转运动转化为电信号的设备。
常见的编码器有旋转编码器和线性编码器两种。
旋转编码器通常由一对光电传感器和一个带有刻度盘的旋转轴组成。
当旋转轴旋转时,光电传感器会感知到刻度盘的变化,并将其转化为电信号输出。
线性编码器则是通过传感器感知物体的移动,并将其转化为电信号输出。
第二步:了解编码器的输出类型和工作原理编码器的输出类型有两种,一种是增量式编码器,另一种是绝对式编码器。
增量式编码器通常输出两路信号,一路表示方向(A相信号),另一路表示旋转角度(B相信号)。
绝对式编码器则输出更多的信号,可以精确表示旋转位置或线性位移。
第三步:选择合适的编码器类型和接口在单片机编程中,通常会选择增量式编码器,因为其相对简单且较为常用。
选择适合的编码器接口是编程前必须考虑的因素之一。
常见的编码器接口有两种:脉冲计数接口和磁编码接口。
对于脉冲计数接口,编码器输出的脉冲信号通过单片机的IO口进行读取;对于磁编码接口,编码器输出的信号可以通过SPI、I2C等通信协议进行读取。
第四步:编写初始化函数在进行编码器编程之前,首先需要编写初始化函数,对编码器进行初始化设置。
初始化函数主要包括设置IO口的输入输出方向、使能编码器等操作。
第五步:编写中断服务函数编码器的工作是通过中断来实现的。
当编码器发生旋转或位移时,会产生相应的中断信号,通过中断服务函数来处理这些信号。
中断服务函数主要包括读取编码器的脉冲信号、计算旋转角度或位移,以及对应的控制逻辑。
第六步:编写主程序逻辑在编写主程序逻辑时,可以根据需要选择编码器的工作模式和功能。
基于单片机的旋转编码器鉴相方法
! 旋转编码器简介 !"! 旋 转 编 码 器 的 分 类
根据结 构和 工作原 理不 同 "编 码器可 以分 为光电 式 编 码器 %电磁式 编码 器和机 械接 触式 编码器 $ 其中 "光电 式编码器由于具有较高的精度!抗干扰能力强!接口简 单!使 用方便 等特 点得到 了广 泛应 用 $ 根据测量的参数不同"编码器又可分为旋转式和直 线式编码器$ 旋转式编码器用于测量转角转速"直线式 编码器用于直线位移!运动速度的精密测量$ 旋转编码器又可分为增量式编码器和绝对式编码
读 取 ! !" 点 电 平
图 +
编码器周期内输出波形的 / 种组合
方法 #去掉繁 琐的 判断与 比较#使 得运 行时间 大大 缩短# 从而提高响应速 度" 组成地址的方法是& 设 " 次变化进行 ) 次鉴 相 # 第 # 次 变 化 前 #!!" 电 平 值 分 别 记 为 ! # ! "#
缓冲区满1 电平有变化1
处理点的相位情况根据开始采样检测的时刻不同在种不同的组合情况若两点产生波形的组合不在下列种情况中则表明由于外部干扰或抖动产生了异常的波形通常把这种波形称为毛刺依据单片机工作方式通常有以下两种鉴相方法查询法单片机的45点通过循环采样读取点电平来判断当前旋钮是否旋转以及旋转的方向所示的判断表中行表示当前点电平值组合列表示上一次变化前点电平值组合检测到发生次电平变化即可进行鉴相需要指出的是若两点电平相比上次均发生了变化则无法进行判断这说明检测时遗漏了脉冲或产生了毛刺为了保证采样电平时没有脉冲遗漏对采样频率要求比较高通常需要保证在编码器以最快速度旋次以上的采样以便可以比较最近次的电平去除因为其他外界条件变化产生的抖动试验表明对于常用的编码器采样的时间间隔约为次判断具有倍频的效果但是由于毛刺的存在在不要求倍频的场合通常采用多次检测判断来识别毛刺以增强判断的可靠性通过设立两个缓冲区用来分别存储两点的电平值分别存入各自缓冲区中当检测到电平变化发生通过分别比对正
旋转编码器与单片机的通用接口
机械测量中旋转编码器与单片机的通用接口技术分类:微处理器与DSP | 2009-03-12南昌大学自动化系郭敏初始化程序为:void ECT_initial(void) //ECT初始化{DDRT_DDRT1=0; //置PT1(IOC1)脚为输入TIOS_IOS0=0;TIOS_IOS1=0; //通道1为输入捕捉TCTL4=0b00001101; //通道1为任何沿捕捉TSCR1_TEN=1; //计数器1使能ICOVW_NOVW1 = 1; //保护ICPAR_PA1EN = 1; //脉冲累加器使能}在每一控制周期开始时,MC9S12DG128读取脉冲累加器中的数值(average[5]),然后与前5个控制周期的脉冲累加器值求和(all_speed)再求平均值,做为当前速度反馈值(speed)。
程序流程图如图3所示。
图3 直流电机测速流程图计数速度的测试采用以下两种方法对电机测速部分进行测试:1)让智能车在赛道上行驶,每20ms将赛车当前速度值通过SCI串口发送到上位机上,并利用串口调试器进行监控。
对正好在一圈当中赛车行驶的速度值进行累加求和,再乘以20ms,得到的总行驶距离约为27m,而模拟赛道总长约为26m,两者的相对误差不到4%。
这说明,速度传感器测量基本准确。
2)直流电机空载运行时,改变脉冲捕捉方式,在上升沿、下降沿和任何沿捕捉方式间进行切换。
不改变驱动电机占空比设置,理想情况下,单位时间内捕捉的脉冲数满足:上升沿获取下的脉冲数=下降沿获取下的脉冲数=任何沿获取下的脉冲数/2。
在脉冲捕捉方式不变的情况下,改变PWM信号占空比(即改变速度给定值),检测的速度值与占空比近似成线性比例关系。
以上间接说明脉冲检测的可靠性。
pic16单片机 旋转编码器 计数
pic16单片机旋转编码器计数一、概述pic16单片机作为一种常见的微控制器,被广泛应用于各种各样的嵌入式系统中。
而在许多嵌入式系统中,旋转编码器也是一种常见的输入设备,用于接收用户的旋转操作,并将其转换成数字信号。
本文将围绕pic16单片机如何实现对旋转编码器的计数功能展开讨论。
二、旋转编码器的工作原理旋转编码器是一种常用的用于探测旋转方向和角度的传感器。
它由两个通常相互垂直的轴组成,并且当旋转编码器旋转时,两个轴的相对位置会改变,从而可以通过检测这种位置的变化来判断旋转的方向和角度。
旋转编码器一般有两种类型:绝对编码器和增量编码器。
对于pic16单片机来说,增量编码器更为常见。
三、pic16单片机对旋转编码器的计数原理pic16单片机通过外部中断来接收旋转编码器发出的脉冲信号,从而实现对旋转的计数。
一般来说,旋转编码器每旋转一次会产生一定数量的脉冲信号,根据脉冲信号的数量和方向,pic16单片机可以实现对旋转的准确计数。
四、pic16单片机旋转编码器计数的实现步骤1. 确定旋转编码器的工作方式:不同型号的旋转编码器工作方式可能不同,需要先确定旋转编码器产生脉冲信号的规律。
2. 连接旋转编码器和pic16单片机:将旋转编码器的脉冲输出端连接至pic16单片机的外部中断引脚,同时连接旋转编码器的电源和接地端。
3. 初始化pic16单片机的外部中断:通过设置pic16单片机的寄存器,初始化外部中断的工作方式和触发条件。
4. 编写中断服务程序:当pic16单片机接收到外部中断信号时,中断服务程序会被触发,需要编写相应的中断服务程序来处理旋转编码器发送的脉冲信号。
5. 实现计数功能:在中断服务程序中,对旋转编码器发出的脉冲信号进行计数,并根据方向进行相应的加减操作。
五、pic16单片机旋转编码器计数的应用pic16单片机对旋转编码器的计数功能在许多嵌入式系统中都有广泛的应用。
在机器人控制系统中,可以用旋转编码器来获取电机的转动情况,以便控制机器人的移动;在工业自动化设备中,也可以利用旋转编码器和pic16单片机来实现对设备操作的精确控制。
基于增量式旋转编码器的角速度测试仪
题 。 以增 量式 旋 转编码 器 为基础 的角度 、角 速度
和位 移测 试应 用 一直 局 限于数 控机 床 、高端 测量
系统 和 伺服 系统 等 。但 近 年来 ,技 术 的进步 己使
得 以低 成本 的单 片机 和旋 转编 码器 构成 的测 量 系 统在 测 量领 域得 到广 泛应 用 。这种 低成 本 的高 精
右 移) 1 0 0 1 0 00 1 101 0 0 。分 0 10 , 1 0 ,0 10 , 1 10 1 0 11 1 l 0 1
次 转速 计算 之外 ,每 个脉 冲沿 到来 时 都可 以对转 速 结 果进 行更 新 , 比单 纯检 测上 升沿 或者 下 降沿 得 到 的采样 率提 高一 倍 。 于 两路 正交脉 冲来 说 , 对 约每 1 个脉 冲周 期更 新一 次转 速结 果 ,相 当于 / 4 把 编码 器 分辨 率提 高 了 4倍 。”没有 考虑 脉冲 干
p l b tb表 usb t 【 {x ,x ,x ,x 9 us a ( l .a 】 O f O f O f 0 6 e p e b = ,
.
单 片机 嵌入 旋 转编 码器 ,配 以各 种格 式 的通 信 接 口,将扩 大编 码器 的应 用 范 围。 目前市场 上 已经 有输 出信 号满 足 RS 3C协 议 的编码 器 。无 22 线通信 模 块是 考虑 能某 些情 况 不改变 系 统 的硬 件 接 线 ,而 增加 编码 器 的信 号输入 。同时 也便 于一 台手持 设 备查看 和分 析 多个编码 器 的数据 。
别 记录 A B相 上一 个周期 内的脉冲 状态 , 2 0l 每 5 s x
第 4期
林 励 : 基 于 增 量 式 旋 转 编 码 器 的 角 速 度 测 试 仪
编码器四倍频鉴相电路
四倍频鉴相电路
换向
原 因 方向信号不能准确反映相应计数脉冲
解决
对计数脉冲进行延迟 (延迟时间大于方向信号)
四倍频鉴相电路
改善后的FPGA电路设计
四倍频鉴相电路 编码器按检测原理分为:光电式、磁式、感应式、电容式,按信号输出形式分为增量式和绝对式。
此时的方波信号电平并不一定符合FPGA能够处理的电平,因而可再经过施密特触发器将电压转换为合理电压(3.
为什么要四倍频鉴相?
编码器每转过一个固定角,就对应一个 脉冲信号,若将AB信号四倍频,即在一个 周期内产生四个脉冲信号,则将测量精度提 高了四倍。
单纯的A相或者B相信号不含有方向信息, AB信号具有相位超前/落后的关系,反映了 旋转方向。
四倍频鉴相电路
方法一:利用A、B信号与其延迟信号的逻辑关 系输出脉冲信号,最终一路输出正脉冲,一路输 出负脉冲
输出信号处理
1、初始输出信号
以码盘为例,首先从编码器出来 的有3组正/余弦信号:A+、A-、B+、 B-、Z+、Z-,其中AB两组信号是位置 检测脉冲信号,Z相信号是码盘旋转 一周输出信号,用于系统清零。
如果电机正转,则A组信号比B 组信号提前90O相位,如果电机反转, 则反之。
输出信号处理
2、滤波
四倍频鉴相电路
正转 计数脉冲
四倍频鉴相电路
正转 方向信号
四倍频鉴相电路
反转 方向信号
四倍频鉴相电路
方向 计数
基于FPGA的电路设计
四倍频鉴相电路
危机
输出的方向信号有尖脉冲
当运动方向不停变化时会产生计数误差
四倍频鉴相电路
原因 解决
仿真波形图
A与B信号经延迟后并不一定同步 对方向信号进行滤波
基于单片机的旋转编码器鉴相方法研究
Ab ta t T e a e n lz s h me h d o d t ci g h s o h i ce n a oa y n o e b MC s r c : h p p r a ay e t e t o s f e e t p a e f t e n r me t l t r e c d r y n r U, t e gv s o h n ie s me
ag r h f t e p a e d t c n c mmo s n “ u r i e t e t o s i al lo i ms o h h s e e t i o t n u e a d b r ” d n i d me h d .F n l i f y.t e ag r h r e t e y p o r mmig i h lo i ms a e t si d b r g a t i f n n
单 、 用方便 等特 点得 到 了广泛应 用 。 使
根 据 测 量 的 参 数 不 同 , 码 器 又 可 分 为 旋 转 式 和 直 编 线 式 编 码 器 。 旋 转 式 编 码 器 用 于 测 量 转 角 转 速 , 线 式 直
关 键词 :单 片机 ; 转 编码 器 ; 相 旋 鉴
中 图分 类 号 :T 3 1 P 1 文 献 标 识 码 :A 文 章 编 号 :17 — 7 0 2 1 )3 0 2 — 3 6 4 7 2 (0 0 1 — 0 0 0
Th r s a c o he o a y n o e ph s d t c e m e ho s e e e rh f t r t r e c d r S a e ee t d t d
如何使用单片机计数旋转编码器
如何使用单片机计数旋转编码器1、测试环境:(1)MCU: AU6840(增强型51内核单片机)@12MHz,Atmega48(AVR单片机)@3.6864MHz;(2)Encodr:E1132X1B-H1FE05-00 ,分辨率:20/周;(3)编码规则:硬件为低有效,常态输出高;故正向: A:1 0 0 1 1 0 0 1 1B:1 1 0 0 1 1 0 0 1反向: A:1 1 0 0 1 1 0 0 1B:1 0 0 1 1 0 0 1 1(4)硬件测试结果(通常情况下):暂态相位持续时间:2-30mS;相位变化抖动时间(不使用或使用小于103电容滤波):<0.5mS;相位变化抖动时间(104电容滤波):可以忽略,但输出波形严重变形;2、解码方案推荐:(1)中断解码:将Encoder输出接到单片机中断输入引脚上,像Atmega48这种全IO中断,且具有电平变化中断功能的单片机尤佳。
(2)主程序轮询解码:对于无中断或外部中断已被占用的情况下,必须使用主程序轮询解码,应该尽量提高单片机主频,缩短主程序运行时间。
3、解码程序设计要点:(1)去抖动设计,强烈推荐使用473-104的电容进行硬件去抖动。
应用中断解码,且具有剩余定时器资源的的情况下,可以考虑软件去抖动;主程序十分简单的情况下,采用轮询解码也可以考虑软件去抖动(可以考虑延时去抖)。
需要注意的是,具有按键去抖优化的单片机(如AU6840),应该考虑禁用相应IO的按键去抖优化,因为按键去抖一般在10mS以上,用在Encoder上会滤掉有用信息。
(2)轮询解码设计:问题的焦点在于如何提高轮询速度。
可以考虑将主程序的任务划分为不同的时间优先级,为不同的任务分配不同的时间片,使得每次主循环执行的任务尽量少。
单片机中断程序ORG 0000HLJMP STARTORG 001BHLJMP TT1ORG 0300HSTART:CLR P3.5MOV SP,#60HMOV R0,#20CLR P1.1MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#0B0HSETB ET1SETB EASETB TR1SJMP $TT1: MOV TH1,#3CHMOV TL1,#0B0HDJNZ R0,BACKCPL P1.1MOV R0,#20BACK: RETIEND中断产生之后,中断系统自动停止主程序的执行,跳入相应的中断子程序入口。
基于光电增量式旋转编码器的四倍频检测电路设计
河南理工大学毕业设计(论文)题目基于光电增量式旋转编码器的四倍频检测电路设计姓名qq764604355学院计算机科学与技术学院专业通信工程班级07-4学号3107090204xx日期2011.3—2011.6指导教师李x摘要随着科学技术的飞速发展,光电编码器已被广泛应用于各种位置伺服控制系统当中,用来检测机械运动的位移、速度以及加速度等信息。
常见的光电编码器有绝对位置式和增量式两种。
光电增量式旋转编码器,通过检测转轴转过的角度,直接将位移信号转换成数字信号。
本文在原有输出低精度波形的基础上,进行四倍频电路的设计,在不增加硬件投入的前提下,提高精度和准确度,使此电路适合于位移检测精度较高的场合。
它主要包括判向电路和四倍频电路。
本文简要介绍了编码器的分类和原理,介绍了单稳态触发器SN74174N的特性及其功能,详细介绍了光电式旋转编码器的工作原理和功能,设计了四倍频检测电路,并采用Multisim对电路进行了仿真。
实验证明本系统稳定可靠,具有很大的实用价值。
关键词:光电编码器四倍频电路Multisim 数字电路仿真ABSTRACTAlong with the rapid development of science and technology, photoelectric encoder has been widely applied in position servo control system by all means and used to detect mechanical motion of displacement, velocity and acceleration and so on.There two kinds of photoelectric encoder we use the most is absolute position photoelectric encoder and incremental type.Photoelectric incremental revolving encoder displacement signal converted into digital signals by detecting the angle of shaft turned. This paper based on the original low precision output waveform then design frequency circuit of four times. Without any increase input in hardware and improving precision and accuracy, make this circuit be suitable for displacement detection precision occasion. It mainly includes circuit of four times and frequency circuit.This paper briefly introduces the principle, the classification and encoder .Then introduced the characteristics of single state flip-flop SN74174N and its function, introduces photoelectric revolving encoder。
基于单片机增量式编码器的分光计设计
基于单片机增量式编码器的分光计设计李成龙【摘要】This article introduces spectrometer,which uses incremental encoder as Angle measuring device and single chip as the core. With modern technology of photoelectric encoder measurement,this design innovates traditional measurement mode and makes instrument get more accuracy angle data more conveniently.%介绍了以单片机为核心,运用增量式编码器作为测角器件的分光计。
该设计采用现代的光电编码测量技术,革新了传统仪器的测量方式,能使仪器更方便的读取精度更高的角度数据。
【期刊名称】《大学物理实验》【年(卷),期】2015(000)004【总页数】3页(P54-56)【关键词】分光计;单片机;旋转编码器【作者】李成龙【作者单位】安徽理工大学,安徽淮南 230001【正文语种】中文【中图分类】O4-33分光计能精确测量光线偏转角度,是一种基本的精密光学仪器[1],分光计的使用也是各大高校的光学实验必修的实验项目。
如折射率的测定、测定光栅常量等等。
传统仪器用的是机械式角度测读装置,其游标读数盘精密铸造的造价高、体积大而笨重,在较暗的光学实验室内,读数费力,容易读错。
本设计采用STC89C52系列单片机与YGN320型增量式编码器相结合,废弃了游标盘,充分利用现代的传感器技术实现了较高精度的角度测量。
所用的测量系统体积小、精度高、纯数字化显示,无论是测量方式、测量手段还是仪器的构造都有很大程度的革新。
在国内高教仪器市场上前景非常广阔。
1 增量式编码器增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;A、B两组脉冲相位差90°,从而可方便地判断出旋转方向,而Z相为每转一个脉冲,用于基准点定位[2]。
用AVR单片机读取两个旋转编码器
用AVR单片机读取两个旋转编码器.txt生活,是用来经营的,而不是用来计较的。
感情,是用来维系的,而不是用来考验的。
爱人,是用来疼爱的,而不是用来伤害的。
金钱,是用来享受的,而不是用来衡量的。
谎言,是用来击破的,而不是用来装饰的。
信任,是用来沉淀的,而不是用来挑战的。
电路连接:左轮编码器A相接INTO,B相接PA4右轮编码器A相接INT1,B相接PA5外部晶振:16M最高转速时编码器每分钟脉冲数为 8000转*512线源程序:ISR(INT0_vect) //左轮脉冲中断{//sei();if(!(PINA&0x10)){PulseLeft++;}else{PulseLeft--;}}ISR(INT1_vect)//右轮脉冲中断{//sei();if(!(PINA&0x20)){PulseRight++;}else{PulseRight--;}}void Timer0_Init(void)//采样0,01s定时器初始化{TCCR0 = 0x00; //T/C0不工作TCNT0 = 100; // (256-100)*1024/16000000=0.01sTIMSK|=1<<TOIE0; //T/C0 溢出中断使能TCCR0|= (1<<CS02)|1<<(CS00); //启动T/C0,1024分频}ISR(TIMER0_OVF_vect)//计算0.01s脉冲数{PulseLeftDelta=PulseLeft;PulseLeft=0;PulseRightDelta=PulseRight;PulseRight=0;Timer0Flag=1;TCNT0 = 100;}void SpeedCal(unsigned char chn)//速度计算函数{float SpeedTemp;if(chn==0){SpeedTemp=PulseLeftDelta*100.16*60.0/(512*24);//(转速=(每秒产生的脉冲*60秒)/(一转的脉冲数*减速比))SpeedLeft=SpeedTemp;}if(chn==1){SpeedTemp=PulseRightDelta*100.16*60.0/(512*24);//(转速=(每秒产生的脉冲*60秒)/(一转的脉冲数*减速比))SpeedRight=SpeedTemp;}}出现的问题:当只用一个编码器的时候出来的数据很稳定~但是再加上一个编码器后,到300R/min 的时候显示只有200R/min,有丢脉冲丢失的现象~ 我觉得应该是中断过于频繁,不知道各位大牛有没有什么解决的办法两个中断加入嵌套我也试过,但是出来的数据更加不稳定~~。
单片机操作旋转编码器
中断响应函数:
voidinterrupt 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();
}
if(RC3)//判断此时RC3的电平,以确认转动发生
{
//增或减操作
}}Biblioteka }4注意事项:滤波电路,延迟时间等均需要根据具体的旋转开关进行调整。一般的单片机程序中,并不建议在中断中添加延迟函数,但应视具体情况而定。
最近做了一个关于旋转编码器的项目,在网上查阅了很多资料,然后又是进行了诸多的实验,分享给大家。
1旋转编码器原理
(借用一下别的文档里的图片)
5脚的旋转编码开关具有左转,右转,按下三个功能。2脚接地,1,3脚接上拉电阻。
4脚,5脚是按下功能的两个脚,可以根据需求自己接线。
检查方向时,通常采用两种做法
(1)中断法:获取A或B的上升沿或下跳沿,在中断程序中,检测此时另外一相的电平。例如上图中,A相上跳沿,B相为低电平则为顺时针转动;B相为高电平二者为逆时针方向转动。
基于Labview的旋转编码器转角及转速测量仪的设计
参考文献 :
图 5 中 A I Acquire Waveform V I 可完成单通道 波形采集 ,其采集卡设备号和模拟通道号为 1 ,0 ,模 数转换的电压范围是 - 10~ + 10 V ,采样参数随程序 循环运行不断调整以最终实现整周期采样. Ext ract Single To ne Info rmatio n V I 可用于检测信号基波的 频率 、幅值和相位 ,而设计只需该 V I 输出采样信号的
按照这种基于迭代逼近思想的测量方法绘制的 程序流程图如图 4 所示. 根据程序流程图 4 设计的转 速测量的源程序见图 5.
第 30 卷 第 3 期 张 力 基于 Labview 的旋转编码器转角及转速测量仪的设计
69
Байду номын сангаас
基波频率即可. 若转速的单位为 r/ min ,则脉冲当量 为 0. 1 度的旋转编码器的转速与频率的比例系数为 f / 60 ,所以把脉冲信号基波频率除以 60 ,就可得到其 转速 ,然后以数值和表盘的形式显示在前面板上. 图 6 为旋转编码器的转角和转速测量的前面板.
三峡大学学报 (自然科学版) J of China Three Gorges U niv. (Nat ural Sciences)
Vol. 30 No . 3 J un. 2008
基于 Labvie w 的旋转编码器转角及转速测量仪的设计
张 力
(三峡大学 机械与材料学院 , 湖北 宜昌 443002)
旋转编码器的转速测量模块的软件设计被测物体的转速信息可通过测量编码器发出的脉冲信号频率来获得但是把采样后的脉冲信号进行离散傅立叶变换获得其频率信息时可能会出现栅格效应造成频率测量的偏差解决这一问题的关键是要尽可能做到整周期采样采样频率需是信号频率的整数倍
基于单片机的旋转编码器鉴相方法研究
基于单片机的旋转编码器鉴相方法研究
徐海;胡荣贵;张东
【期刊名称】《微型机与应用》
【年(卷),期】2010(000)013
【摘要】就如何使用单片机对旋转增量编码器鉴相进行了研究,给出了常用的鉴相算法以及识别"毛刺"的方法,并通过在AVR单片机上编程验证了所给出的鉴相方法.【总页数】4页(P20-22,29)
【作者】徐海;胡荣贵;张东
【作者单位】电子工程学院,研究生一队,安徽,合肥,230037;电子工程学院,602室,安徽,合肥,230037;电子工程学院,研究生一队,安徽,合肥,230037
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于Hilbert鉴相算法的全数字BPSK解调方法研究 [J], 宦澄
2.基于鉴相原理的金属探测方法研究 [J], 王家伟;葛斌;张雪平
3.基于单片机的旋转编码器测试系统 [J], 罗兆荣;陈久松;费向军;张建祥
4.基于AD8302的鉴相系统精度提高方法研究 [J], 张又戈; 卜雄洙; 杨昊青; 卜伟雄
5.基于CPLD和单片机的旋转变压器鉴相电路的设计 [J], 陈裕国;冉全;许雪军(编发)
因版权原因,仅展示原文概要,查看原文内容请购买。
机械测量中旋转编码器与单片机的通用接口(07-100)
机械测量中旋转编码器与单片机的通用接口(07-100)在准备Freescale 杯全国大学生智能车比赛中我们开始的时候是采用红外传感器来测量速度,但是它受环境的干扰很大,且响应频率很小,还达不到1K Hz,为了提高速度测量精度和响应频率,减小环境的干扰,决定采用了旋转编码器,我们成功地开发了单片机与旋转编码器的最简硬件接口。
旋转编码器及其工作原理旋转编码器是用来测量角度的装置。
它分为单路输出和双路输出两种。
单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90 度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。
它将测量到的角度量转换为数字脉冲信号输出,用来检测被检对象的角位移、角速度、角加速度、线位移、线速度和线加速度等,因而,应用十分广泛。
旋转编码器有绝对式和增量式两种。
绝对式所测量到的角位置是绝对位置; 而增量式所测量的是转动体角位移的累计量。
旋转编码器有一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90 度相位差(相对于一个周波为360 度),将C、D 信号反向,叠加在A、B 两相上,可增强稳定信号;另每转输出一个Z 相脉冲以代表零位参考位。
由于A、B 两相相差90 度,可通过比较A 相在前还是B 相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。
信号输出有正弦波(电流或电压),方波(TTL、HTL),集电极开路(PNP、NPN),推拉式多种形式,其中TTL 为长线差分驱动(对称A,A-;B,B-;Z,Z-), HTL 也称推拉式、推挽式输出,编码器的信号接收设备接口应与编码器对应。
编码器的脉冲信号一般连接计数器、PLC、计算机,PLC 和计算机连接的模块有低速模块与高速模块之分,开关频率有低有高。
如单相联接,用于单方向计数,单方向测速。
B 两相联接,用于正反向计数、判断正反向和测速。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
# 鉴相方法及相应算法
在 , 个脉冲周期时间 ! 内"单片机应该能准确判断
88
件纵横
!
!"#$%"#& ’&()*+,-&
采 样 的 时 间 间 隔 约 为 ) 9: # 即 可 以 基 本 上 避 免 抖 动 " 在 ) 个 时 间 周 期 ! 内 #! !" 点 电 平 会 变 化 / 次 # 即 单片机可以根据 ) 个脉 冲信号 做出 / 次判断 #具有 倍频 的效果 "但是 由于毛 刺的 存在 #在不要 求倍 频的场 合#通
出 ! 点相对于 " 点的相位情况" 根据开始采样检测的 时刻不同#在 ! 内可以将采样的波形 分为 如图 + 所 示的
/ 种不同的组合情况" 若两点产生波形的组合不在下列 / 种情况中#则表明由 于外 部干 扰或抖 动产 生了异 常的
波形 #通常把 这种 波形称 为$毛 刺%"
!) !* !+ !, !!. !/ !0
" # ( % ! 相 位 落 后 " 相 位 &’ !
图 ) 编码器输出脉冲示意图
化发生 " 次时#通过分别比对正 !反旋转序列来进行 判 断 " 假 设 " ;/# 即 每 ) 个 周 期 ! 进 行 ) 次 判 断 % # 检 测 到 / 次 变 化 后 #! 缓 冲 区 内 的 值 为 ’ !) !) !’ #" 缓 冲 区 内 的 值 为 ’ ! ’ ! ) ! ) # 则 比 对 序 列 7’’ # )’ # )) # ’)8 可 得 为 正 旋 转 " 假 设 " ;- # 检 测 - 次 变 化 后 # ! 缓 冲 区 内 的 值 为 ’ !
读 取 ! !" 点 电 平
图 +
编码器周期内输出波形的 / 种组合
方法 #去掉繁 琐的 判断与 比较#使 得运 行时间 大大 缩短# 从而提高响应速 度" 组成地址的方法是& 设 " 次变化进行 ) 次鉴 相 # 第 # 次 变 化 前 #!!" 电 平 值 分 别 记 为 ! # ! "#
缓冲区满1 电平有变化1
! 旋转编码器简介 !"! 旋 转 编 码 器 的 分 类
根据结 构和 工作原 理不 同 "编 码器可 以分 为光电 式 编 码器 %电磁式 编码 器和机 械接 触式 编码器 $ 其中 "光电 式编码器由于具有较高的精度!抗干扰能力强!接口简 单!使 用方便 等特 点得到 了广 泛应 用 $ 根据测量的参数不同"编码器又可分为旋转式和直 线式编码器$ 旋转式编码器用于测量转角转速"直线式 编码器用于直线位移!运动速度的精密测量$ 旋转编码器又可分为增量式编码器和绝对式编码
数 ! 每 中 断 " 次 / " 5"6 ! 将 缓 冲 区 值 比 对 " 次 ! 正 反 转 序 列进行 " 次判 断!也 可以 采 用 组 合 地 址 的 方 法 来 缩 短 中 断响应时间$
! 纠错方法
由于编 码器 工作的 环境 可能 比较恶 劣 !输 出脉冲 较 易 受干 扰!产生 毛刺 ’在编码 器快 速旋 转时 !尤 其 是 在 倍 频工作时!由于采样速率 不够!可 能导 致采 样的脉 冲有 遗漏$ 这些都会导致鉴相得出 错误 的结果 !需要 在单片 机程序实现中对这些情况进行纠正$ 如前所述!可以在 单片机处理程序中用比对序列的方法来避免误判$ 此外 还有以下 4 种方法&
# 其 中 ’> # > " ?)% " 则 可 以
组 成 地 址 !)")!+"+ ’’
3
匹配序列1
2
清空缓冲区
!""" " 每 个 地 址 在 @A$:B
程序存储区中都对应一 个值用来鉴相#或者可以 直接存 放程 序地址 #用程
3
判断旋转方向 !处理 图 鉴相算法流程
序计数器直接加载跳转到鉴相完成后的处理程序" 例 如 # 设 " ;- # <) 对 应 反 向 旋 转 # ) 对 应 正 向 旋 转 # ’ 表 示 异常不处理或状态无变化" 根据正!反旋转序列可以得 到如表 + 所示的组合地址存放数据表" 设 ) 个字节长度 的 全 局 变 量 (CD 作 为 缓 冲 区 用 来 存 储 电 平 状 态 值 # 同 时 作 为 @A$:B 存 储 区 的 低 字 节 地 址 " 记 录 ! ! " 点 电 平 值 时 采 用 的 是 先 将 (CD 左 移 两 位 # 然 后 同 ’’’’’’!#"# 相 $ 与 % 的 方 式 " 存 储 - 次 后 # 得 到 (CD 为 ’’ !)")!+"+ !-"- # 将 该 值 作 为 @A$:B 寻 址 地 址 的 低 , 位 # 取 出 数 据 即 可 得 到鉴相结果" 这种方法实际上是采取了用程序存储空间 来换取时间的思路" 在单片机上实现循环检测一般有 - 种方法&
! 采 用 定 时 中 断 ! 在 中 断 处 理 程 序 中 检 测 * "+ 点
3
电平值存入缓冲区
2
’) ! )’ ! )) # 可 以 根 据 / 种 组 合 状 态 之 间 的 变 化 进 行 鉴 相 " 若 正 旋 转 # 则 可 得 到 对 应 的 序 列 7’’ # )’ # )) # ’) # ’’8 #
反 旋 转 则 有 对 应 的 序 列 7’’ # ’) # )) # )’ # ’’8 " 如 表 ) 所 示 的 判 断 表 中 # 行 表 示 当 前 !!" 点 电 平 值 组 合 # 列 表 示 上 一 次 变 化 前 ! !" 点 电 平 值 组 合 # 检 测 到 发 生 ) 次 电 平 变 化 即 可 进 行 鉴 相 " 需 要 指 出 的 是 #若 ! !" 两 点 电 平 相 比上次均发生了变化#则无法进行判断#这说明检测时 遗漏了脉冲或产生了$毛刺%"
’ ! ’ # " 缓 冲 区 内 的 值 为 ’ ! ) ! ’ # 无 法 匹 配 序 列 7’’ ! ’) ! ’’8 # 则 判 断 为 产 生 毛 刺 " 如 果 只 检 测 ) 次 # 会 做 出 ’’ <= ’) 反 转 ! ’)<=’’ 正 转 的 判 断 # 导 致 误 判 "
该鉴相方法具体程序流程如图 - 所示" 按此算法设 计的程序#由于判断比较指令较多#运 行时间较长#总 体响应速度比较低"为了 克服这一缺点#可以采用 将电平状态组成地址的
!"# 编 码 器 工 作 原 理
大多数直线式和旋转式编码器都是光透过光电码 盘和光栏板夹缝形成忽明忽暗的光信号"硅光敏器件把 光信号转换成两组近似于正弦的电信号输送出去 "然后 根据需要把这些信号进行差 值或数 字化 处理 "两 组正 弦 信 号 ! ! " 在 相 位 上 相 差 $% ! $ 经 放 大 整 形 后 变 成 ! ! " 两 组 相 位 相 差 &% ! 的 方 波 $ 根 据 ! ! " 之 间 的 相 位 关 系 即 通过鉴相可确定旋钮的正反转$ 当 ! 超前于 " 时为正 转"而当 " 超前于 ! 时 为反 转"如图 ’ 所示 $ 旋转 编码 器的输出脉冲宽度随着旋转速度而变化"即转速越高 其 脉 冲 宽 度 越 窄 $ 通 常 每 圈 的 计 数 脉 冲 有 ()% 个 ! *+% 个 ! , %%% 个 等 " 用 户 可 根 据 精 度 的 需 要 进 行 选 择 $
" # $ % ! 相 位 领 先 " 相 位 &’ ! !
常采用多次检测判断来识别毛刺#以增强判断的可靠性 " 通 过 设 立 两 个 缓 冲 区 用 来 分 别 存 储 ! !" 点 的 电 平 # 当 检 测 到 ! !" 两 点 中 任 何 一 点 电 平 发 生 变 化 时 # 把 ! !" 两点的电平值分别存入各自缓冲区中" 当检测到电平变
表!
’’ ’) )’ ))
" !# 相 位 判 断 表
’’
无 正 反 错
’)
反 无 错 正
)’
正 错 无 反
))
错 反 正 无
为 了 保 证 采 样 ! !" 电 平 时 没 有 脉 冲 遗 漏 # 对 采 样 频率要求比较高" 通常需要保证在编码器以最快速度旋 转 时 # 在 !!" 任 一 点 + 次 电 平 变 化 之 间 有 + 次 以 上 的 采样 #以便可以比较最 近 + 次 的电平 #去除 因为 其他外 界条 件变化 产生 的抖 动"试验 表明 #对于常 用的 编码 器 #
!"# $#%#&$’" () *"# $(*+$, -.’(/-$ !% 0"+%- /-*-’*-/ 1-*"(/% 2+%-/ (. 345
;< =>?’ " =< 3@AB CD?/ " E=!FC G@AB,
9, . F@. , 4H>I @J CK>LD>MH NMDLHAM " OPHQMK@A?Q OAB?AHHK?AB RASM?MDMH " =HJH? /(%%(0 " TU?A> & /. )%/ " OPHQMK@A?Q OAB?AHHK?AB RASM?MDMH " =HJH? /(%%(0 " TU?A>: $%&’()*’ ! 4UH V>VHK >A>PWXHS MUH IHMU@LS @J LHMHQM?AB VU>SH @J MUH ?AQKHIHAM>P K@M>KW HAQ@LHK YW ZT<" MUHA B?[HS S@IH >PB@K?MUIS @J MUH VU>SH LHMHQM ?A Q@II@A DSH >AL ’YDKK ( ?LHAM?J?HL IHMU@LS. \?A>PPW" MUH >PB@K?MUIS >KH MHSM?J?HL YW VK@BK>II?AB ?A !23. +,- ./(0& ! ZT<& K@M>KW HAQ@LHK & VU>SH LHMHQM 旋转编码器作为速度和位移的反馈传感器广泛应 用于家电!无线电设备控制中"同时在电动机!电梯 等需 要对运动速度和位移信息反馈的自动化控制场合也起 着 重 要 作 用 # 编 码 器 通 常 有 ! 相 !" 相 两 路 输 出 信 号 "信 号包含了被测对象的旋转方 向以及 旋转 角度等 信息 "通 常需要由硬件电路或单片机程序进行鉴相处理$ 本文根 据旋转编码器以及单片机的特点"研究并总结了利用单 片机进行鉴相的方法"同时给出了相应的鉴相算法$ 器$ 增量式编码器每转过 # 个单位"编码器就输出 # 个 脉冲 "故称 为增量 式$ 绝 对 式 编 码 器 是 直 接 输 出 数 字 量 的传感器"它的特点是 不需 要计数 "在转 轴的 任何一 个 位置都可读出一个与位置对应的数字码$