星空·体育中国官方网 mini系列编码器智能车测速方案.pdf
最新的智能汽车测速解决方案。在介绍最新的测速解决方案之前,我们先介绍一下旋转编码器的类型及其工作原理。旋转编码器按信号原理可分为增量编码器和绝对编码器。增量式编码器(旋转式)工作原理:由一个以轴为中心的光电码盘,其上刻有环形明暗刻线,以及光电发射和接收装置组成,以获得四组正弦波信号A组、B、C、D,每个正弦波的相位差为90度(相对一个周期为360度)。将C、D信号反相叠加在A、B相上,可以增强信号的稳定性;另外,每一转输出一个Z相脉冲代表零参考位置。由于A、B相相差90度,通过比较A相在前或B相在前即可判断编码器的正反转。通过零脉冲,可以获得编码器的零参考位置。编码器码盘由金属等材料制成。码盘上刻有非常细的刻线。具有良好的热稳定性和高精度。金属码盘上直接刻有合格线和不合格线,不易折断。但由于金属有一定的厚度,精度受到限制,而且其热稳定性比码盘差一个数量级。码盘经济,成本低,但精度和热稳定性较差。分辨率——编码器每旋转360度所提供的明线或暗线的数量称为分辨率星空体育app官方下载,也称为解析分度,或直接称为线数。一般为每转 5 至 10,000 线。信号输出:信号输出有正弦波(电流或电压)、方波(TTL、HTL)、集电极开路(PNP、NPN)、推挽式,其中TTL为长线差分驱动(对称A、A -;B、B-;Z、Z-),HTL也称为推挽式、推挽式输出。编码器的信号接收设备接口应与编码器对应。
信号连接——编码器的脉冲信号一般连接计数器、PLC、计算机。 PLC与计算机之间连接的模块包括低速模块和高速模块,频率从低到高。如单相连接,用于单方向计数、单方向测量速度。 AB两相接法,用于正反转计数、正反转判断和测量速度。 A、B、Z三相连接,用于带参考位置校正的位置测量。 A、A-、B、B-、Z、Z-连接,由于采用对称负信号连接,电流对电缆贡献的电磁场为0,衰减最小,最优,可以通过长距离。对于对称负信号输出的TTL编码器,信号传输距离可达150米。对于对称负信号输出的HTL编码器,信号传输距离可达300米。增量式编码器存在的问题:增量式编码器零点累积误差较差,接收设备停止时需要断电记忆星空体育app下载入口,启动时需要找零或参考位置。这些问题可以通过使用绝对编码器来解决。增量式编码器用在智能C车(电磁组)上: 1、消耗大量单片机; 2、由于单片机只有一个脉冲累加器,所以在计分左右轮速时需要测量脉冲数或者增加脉冲计数器。这不仅使硬件系统变得复杂,而且检测结果也会造成一定的误差和延迟; 3、由于增量式编码器的电阻较差,容易造成小车晃动、不稳定。绝对式编码器(旋转式)工作原理 绝对式编码器的光码盘上有许多光通道标记,每个标记依次由2线、4线、8线、16线组成。
。 。 。 。 。如此排列,使得在编码器的每个位置上,通过每个标线的透和暗,得到一组唯一的从2到n-1次方的二进制码(格雷码)。 ,称为n位绝对编码器。此类编码器由光电码盘的机械位置决定,不受断电和干扰的影响。如下图所示,由机械位置确定的绝对编码器的每个位置都是唯一的。它不需要记忆,不需要寻找参考点,也不需要一直计数。每当您需要了解该位置时,只需前往其位置即可。这样星空体育官方网站,编码器的特性和数据的可靠性都得到了很大的提高。在智能小车上使用绝对编码器测速的优点是: 1、连接电路简单、稳定可靠(无需使用单片机的脉冲累加器,无需添加脉冲计数器,无需分时)左右轮速度,可同时进行); 2、大量节省CPU; 3.抑制汽车晃动。绝对编码器测速的原理可以从绝对编码器的工作原理看出。例如,10位精度绝对编码器有1024个标记位均匀地标记在其旋转轴上。每次的外部位置都是独一无二的。转轴的角度变化就是该轴的角速度W[(本次位置值-上一次位置值)/2∏*1024*t]。硬件结构框图 单传感器与单片机连接结构框图(适用于A、B车测速) 双传感器与单片机连接结构框图(适用于C车测速) 绝对编码器测速流程图绝对时序特性参数符合最小典型值 最大值 注释 数据输出 tDOactive100nsCSn 下降沿和数据输出有效第一个数字之间的时间 tCLK FE500nsCSn 下降沿和 CLK 之间的时间 第一个数据移至下降沿 输出寄存器起始数据 TCLK / 2500nsCLK 上升沿每次移出 1 位数据输出 t DO valid357375394nsCLK 数据输出上升沿到有效数据输出之间的时间 t DO tristate100ns 最后一位后,DO 引脚三态引脚变回“三态”CSn 脉冲 t CSn500nsCSn =高级;准备宽度开始下一个角度位置操作,读取频率fCLK01MHz,读取串行数据时钟频率,绝对数据时序图代码SSI功能/**************** ****** ************************************************** **** 编码器SSI程序功能功能:传感器位移数据 注:延迟时间不能偏差太大,根据MCU实际工作频率进行相应修改******************** ***** ************************************************* ****** ***/ unsigned int SSI(unsigned char add) { uchar k; uint数据1=0; if(add==0) {CSn_L=0;delay_us(1); //t_clkFE=500ns for(k=0;k10 ;k++){ CLK=0;delay_us(1);CLK=1;delay_us(1);dat1=(dat11)+DAT;//C5} for(k= 0;k6;k++){ CLK=0;delay_us(1);CLK=1;delay_us(1);}CSn_L=1; } else { CSn_R=0;delay_us(1); //t_clkFE=500ns for(k=0;k10;k++){ CLK=0; delay_us(1);CLK=1;delay_us(1);dat1=(dat11)+DAT;//C5} for(k=0;k6;k++){ CLK=0;delay_us(1);CLK=1;延迟_us(1);}CSn_R=1;返回数据1; } 引脚定义变量定义 //引脚定义 #define CSn_L PORTB_BIT0 //左轮编码器芯片选择 #define CSn_R PORTB_BIT1 //右轮编码器芯片选择 #define CLK PORTB_BIT2 //时钟 #define DAT PORTB_BIT3 //数据输出 uint N_num[2 ]; //这个位移值 uint L_num[2]; //最后的位移值 int VL; //左轮速度 int VR; //右轮速度定时中断服务函数/******************************************** *** ************************************************** 计时计数器| N_num[x]-L_num[x]|512; N_num[x] L_num[x] 顺时针旋转 N_num[x] L_num[x] 逆时针旋转 |N_num[x]-L_num[x]|512 ; N_num[x] L_num[ x] 逆时针旋转 N_num[x] L_num[x] 顺时针旋转******************************** ****** ********************************************** * **** ********/ #pragma CODE_SEG __NEAR_SEG NON_BANKED void 中断 26 MDC_ISR(void){ L_num[0]=N_num[0]; //上传最后一次位移数据 N_num[0]=SSI(0); // 当前位移数据 L_num[1]=N_num[1]; N_num[1]=SSI(1);V
我要评论