编码器的使用和电池的连接

上传人:ji****n 文档编号:47343255 上传时间:2018-07-01 格式:PDF 页数:7 大小:1.49MB
返回 下载 相关 举报
编码器的使用和电池的连接_第1页
第1页 / 共7页
编码器的使用和电池的连接_第2页
第2页 / 共7页
编码器的使用和电池的连接_第3页
第3页 / 共7页
编码器的使用和电池的连接_第4页
第4页 / 共7页
编码器的使用和电池的连接_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《编码器的使用和电池的连接》由会员分享,可在线阅读,更多相关《编码器的使用和电池的连接(7页珍藏版)》请在金锄头文库上搜索。

1、 编码器的使用和电池的连接编码器的使用和电池的连接 华中科技大学智能车队 华科瑞萨淘宝店地址:华科瑞萨淘宝店地址:http:/smartcar- 1. 编码器的使用:编码器的使用: 1.1. 增量式编码器原理:增量式编码器原理: 一般来说,增量式光电编码器输出 A、B 两相互差 90 电度角的脉冲信号(即所谓的 两组正交输出信号) , 从而可方便地判断出旋转方向。 同时还有用作参考零位的 Z 相标志 (指 示)脉冲信号,码盘每旋转一周,只发出一个标志信号。标志脉冲通常用来指示机械位置或 对积累量清零。 增量式光电编码器主要由光源、码盘、检测光栅、光电检测器件和转换电路组成,如图 1-1 所示。

2、 码盘上刻有节距相等的辐射状透光缝隙, 相邻两个透光缝隙之间代表一个增量周 期;检测光栅上刻有 A、B 两组与码盘相对应的透光缝隙,用以通过或阻挡光源和光电检 测器件之间的光线。它们的节距和码盘上的节距相等,并且两组透光缝隙错开 1/4 节距, 使得光电检测器件输出的信号在相位上相差 90 电度角。当码盘随着被测转轴转动时,检 测光栅不动, 光线透过码盘和检测光栅上的透过缝隙照射到光电检测器件上, 光电检测器件 就输出两组相位相差 90 电度角的近似于正弦波的电信号,电信号经过转换电路的信号处 理,可以得到被测轴的转角或速度信息。 图图 增量式光电编码器的输出信号波形增量式光电编码器的输出信号

3、波形 华中科技大学智能车队1.2. 编码器的使用:编码器的使用: 1.2.1. 简介:简介: 码盘转动的时候,编码器输出的 A、B 两相方波信号时我们所需要的。一般只需要一相 方波就可以计算出转速了。 设编码器线数为 N,编码器的编码轮的直径为 R,程序编码器计数采样周期为 T。则可 知编码器转一圈会有 N 个正方波,编码器转一圈时代表的实际距离为编码轮的周长,即 2* *R,设在时间间隔 T 内检测到的正方波为 n 个,则可以计算出这段时间内的平均速度为 2nR/(NT) 。只要采样周期 T 足够小,就可以认为这个速度是当前的瞬时速度。 现在的问题就是如何计算出在采样时间周期 T 内的正方波

4、数。 编码器计数一般是使用输入捕捉模式(Input Capture Mode),但是也可以使用事件计数 模式(Event Counter Mode) ,只是后者无法实现程序上的倍频,而前者则可以。 由于六路 PWM 输出占用了一些具有输入捕捉模式的定时器(RC,RD,RG) ,剩下的具 有输入捕捉模式的空闲的定时器就只有 RF 了,但是出于某种考虑(现在也找不清楚到底是 什么原因了,可能是走线的问题,因为定时器 RF 的输入引脚只有一个 P8_3,而 RA 则有四 个引脚可以选择) ,我们没有选择 RF,而是选择了 RA,定时器 RA 是没有输入捕捉模式的, 但是其具有的事件计数模式功能也可以

5、实现编码器的计数功能。 看 R8C 芯片资料: 定时器 RA 是具有一个 8 位计数器和 8 位预定标器的定时器。 所谓预定标器实际上也就是一个分频器, 即对于计数器来说, 只有当预定标器溢出的时 候计数器才会记一次数。 使用定时器 RA 作为编码器计数的时候,选用的是事件计数模式,这与一般使用的输入 捕捉模式不太一样,它只可以对单边沿的电平变化进行计数(上升或下降都可以) ,所以无 法实现程序上的倍频。但由于编码器线数已经比较高,而且也在电路上进行了倍频,所以程华中科技大学智能车队序上不实现倍频也是可以满足需求的了。 定时器 RA 还有一个特点是它是递减计数的,所以预定标器和计数器的溢出都是

6、向下溢 出的。 再者当定时器RA用作编码器计数的时候, 只需要将预定标器和计数器的值都设为0xff, 就可以将预定标器作为计数的低八位来用, 而计数器则作为计数器的高八位, 从而实现类似 于 16 位计数器的功能。 我们使用的就是 Timer RA 的 Event counter mode,具体功能描述见下: 1.2.2. 定时器初始化配置:定时器初始化配置: Timer RA 的配置程序可以如下编写: /*/ /* Function InitTimerRA */ /* Usage Initialize Timer RA */ /* Argument NONE */ /* Return val

7、ue NONE */ /* Modification History: */ /* 01a 2012-4-7 16:18:38 */ /*/ void InitTimerRA (void) /* Stop the RA timer */ tstart_tracr = 0; while (tcstf_tracr = 1) 华中科技大学智能车队 /* Wait for Timer RA to stop */ /* Disable RA interrupt */ traic = 0; /* Initialize RAs registers */ tstop_tracr = 1; tracr = 0;

8、 /* Choose the p1_7 as The Event Count Input */ traiosel0 = 1; traiosel1 = 0; traiosel2 = 0; /* Set TRAIO output active edge to L */ tedgsel_traioc = 0; /* Set EVENT Counter mode */ tmod0_tramr = 0; tmod1_tramr = 1; tmod2_tramr = 0; /* Set RA Counters */ trapre = 0xff; tra = 0xff; /* Disable the Tim

9、erRA Interrupt by TRCIC */ traic = 0x00; /* Start the RA timer */ tstart_tracr = 1; /* - end of function InitTimerRA - */ 如果 RA 没有使用,这段代码可以在你们的初始化程序中直接调用。如果出现问题,请 自行参看芯片资料编写初始化程序。具体每个寄存器对应的配置请参看芯片资料。 1.2.3. 速度与距离的计算:速度与距离的计算: 速度与距离的计算可以如下编写 (这段代码应该加在定时中断程序中, 我们的定时中断 周期为 1ms,如果有不同定时中断周期只需要进行少量修改即可) :

10、 /*-Update Encoder Counter-*/ s_ucEncoderTimer +; if(s_ucEncoderTimer SPEED_SAMPLE_TIME) /SPEED_SAMPLE_TIME is 9,which means it will sample 华中科技大学智能车队/the speed and the distance every 10 ms. /* Clear the Speed Sample Time */ s_ucEncoderTimer = 0; /* Combine the the TRA and TRAPRE to form a 16-bit bi

11、nary number */ ucTRABuff = tra; ucTRAPREBuff = trapre; uiTempEncoderCount = (unsigned int)ucTRABuff) 8; uiTempEncoderCount |= (unsigned int)ucTRAPREBuff; /* Calculate the Difference of the Encoder Count between this time and last time */ s_uEncoder = s_uEncoderBuff - uiTempEncoderCount; /* Use the D

12、ifference of the Encoder Count to Calculate the Total Encoder Count. */ gl_ulEncoderTotalCnt = gl_ulEncoderTotalCnt + (unsigned long)s_uEncoder; /* Recode the last Encoder Count */ s_uEncoderBuff = uiTempEncoderCount; /* Calculate the Total Distance */ gl_ulTotalDistance = (gl_ulEncoderTotalCnt * (u

13、nsigned long)13) / (unsigned long)200; /* Calculate the Speed */ gl_iCurSpeed = (unsigned long)s_uEncoder * (unsigned long)13) / (unsigned long)2; 华科瑞萨淘宝店地址:华科瑞萨淘宝店地址:http:/smartcar- 程序说明: 前面已经提到过, Timer RA 有一个八位的预定标器和一个八位的计数器。 由于已经将预 定标器的初始值设为了 0xff,所以可以将预定标器作为计数器的低八位来用。程序的前面四 句就是用来将预定标器的数值和计数器的数值合

14、并为一个 16 位的二进制数。 由于 Timer RA 是递减计数的,所以用上次的计数值减去这次的计数值就可以算出一个 正的计数的差值(第五句) 。将每次计算的差值加起来就可以得出总共的计数值(第六句) 。 第七句是用来记录这次的计数值,也就是下次取样的时候的上次的计数值。 第八句是用来计算总距离的。计算公式如下: 总距离 =计数器总计数值编码器线数 编码轮周长 第九句是用来计算速度的。计算公式如下: 速度 =计数器在一个采样周期内的差值编码器线数 编码轮周长 公式中的编码器线数指的是编码器转一圈所产生的脉冲数, 这个数值可以通过转动编码 器一圈所返回的计数值的差来确定。 不过一般来说在购买编码器时都会有编码器的线数的说 明,可以参看相应的产品说明。不过建议最好是实测一下以确定无误。 华中科技大学智能车队我们程序中的 gl_ulTotalDistance(总距离)和 gl_iCurSpeed(当前速度)分别以 cm 和 cm/s 为单位的,我们的编码器用的是 200 线的,编码轮的周长约为 40mm,所以程序中的 计算公式会如上所示(可以计算验证一下) 。 1.3. 编码器电路:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号