基于PIC单片机的测速系统设计
0 引言
在现代工业测量系统中, 位移量和转速的测量是关键环节。早期的测量系统, 虽然技术比较成型, 但一般是采用分立元件构成的, 其结果是测量精度低, 稳定性差, 成本高, 抗干扰能力差等。随着电子技术和计算机技术的发展, 测量系统也逐步向智能化转化。本文利用PIC单片机实现了转速的实时测量,通过推导多倍周期法的测量误差算法,得出了一种有效的确定多倍周期法中周期倍数 N的方法,使之在高、低速测量时均有很小的误差。本设计硬件结构设计简单,测量速度快,精度高,运行可靠,可以满足人们愈来愈高的对速度准确性和实时性的要求。
1 系统主要性能特点
(1) 硬件结构设计简单,测量速度快,精度高,运行可靠。
(2) 采用带有EEPROM的PIC单片机,设计了简单可靠的掉电保护功能。
(3) 两种测量模式:测转速和测速度(测速度时要预先通过按键输入转盘的周长)。
(4) 有上下限报警功能,适用于对速度或转速有限制的场合。
(5) 有3个独立的按键,可方便的设置上下限报警值、测量模式以及转盘周长。
2 系统硬件设计
图(1) 系统体系结构
PIC16F874A是由美国Microchip公司生产的8位 Flash型单片机,具有低功能、低工作电压、高性能、高速度、全静态、较强的引脚直接驱动能力等特点。由于采用哈佛(Harvard)双总线和两级指令流水线结构,使指令执行和取指操作同步进行,因而可达到很高的执行速度。该系列单片机只有35条单字节指令,除跳转指令是2周期指令外,其它指令都是单周期指令。这与其它的8位单片机相比节省了1/2的程序空间,并且具有4∶1的速度优势。PIC16F874A有4K×14的程序存储器,192个字节的通用寄存器,128字节的EEPROM,33个I/O口,3个定时/计数器及2个捕捉/比较/PWM模块,2个串行口,A/D转换器具有5路模拟量输入端, 还有时钟、复位、看门狗定时器等。由于该单片机具有非常丰富的资源,使硬件电路得到简化,从而降低成本。
2.1 信号输入电路
在此部分电路设计时采用的器件是夏普公司生产的OPTC光断续器,事实上用其他的器件也是可以的,只要能产生让单片机检测到的脉冲信号就可以了。该光断续器将发光部分的GaAs红外发光二极管和感光部分的光电二极管以及信号处理电路(放大器,施密特触发器及稳压电路等)集成在一块芯片上。这种光断续器具有下列特点:
(1) 体积小,可靠性高;
(2) 外围电路少;
(3) 能与TTL 、LSTTL、CMOS器件直接连接;
(4) 工作电压范围大(Vcc=4.5—16V)
2.2 掉电保护电路
单片机在工作时,困某种原因造成突然掉电,将会丢失数据存储器(RAM)里的数据,冲掉前期工作的所有信息。虽然单片机主电源里有太容量滤波电容器,当掉电时,单片机靠贮存在电容器里的能量,一般能维持工作1Oms左右。为此,要求一旦市电发生瞬问断电时,必须要在小于 10ms的时间内将RAM中的数据及时的转存到EEPROM数据寄存器中,在下次上电工作时将数据从EEPROM中调出来确保单片机系统能正常运行。由于在PIC16F874A单片机中集成了128个字节的EEPROM这就使得保护电路非常简单,具体电路见图(2)。其工作原理如下: PIC单片机B口的RB4—RB7引脚在设为输入模式下,当输入电平由高到低或者由低到高发生电平变化时,可以使单片机产生中断,这就是通常所说的引脚状态变化中断。当12V电源电压在正常范围内时,单片机RB4引脚的电平为高电平;而当12V电源被切断时,由于二极管D1的单向导通性阻止了滤波电容C3 的回路,使得RB4引脚上的分压迅速的下降到足以触发RB4引脚内部电路发生电平反转,引发中断,在中断程序中完成对需要保护的数据烧写到EEPROM 中。在烧写的瞬间,单片机的工作电源依靠电源滤波电容维持即可够用。
3 检测方法和误差处理
通常对于转速或速度的测量可转化为对信号频率(或周期)的检测,对信号频率的检测最常采用的三种方法是:记数法、周期法和多倍周期法。其中记数法适合测高频,测低频时所需时间较长故误差较大;周期法适合测低频,测高频信号时要求的参考脉冲的频率高故误差大;这两种方法共同的优点是实现比较简单。而多倍周期法在一定程度上可以解决高低频之间的矛盾,但实现相对困难。因为多倍周期法要预先确定一个恰当的倍数N,而N的预先确定是比较困难的。如果N确定不当,同样会使检测的时间增长或高频时有较大的误差。在实际设计中,本文对多倍周期法进行了一定的改进,并提出了一个简单确定N 的算法,即可自动地确定恰当的N,又可满足高低频信号的检测要求。
多倍周期法由周期法改进而来,周期法在测量信号的周期时,由一个固定频率的参考脉冲作为加法计数器的时钟信号。在被测信号一个周期的开始启动加法计数器;然后,到这个周期的结束停止计数,假设这时候计数器的值为M ,参考脉冲的周期为Tm ,则M、Tm 与被测信号周期T有如下的关系:
T = M * Tm 转速 n = 60/T = 60/(M * Tm) (转/min)
在这一节只讨论转速的检测方法和误差处理,因为转速和速度的检测方法和误差处理是相似的。转速n与速度v的关系为:v = n * L/ 60 (米/秒) (其中L为转盘周长)
一个Tm 周期对应的转速为: n/M = 60/(M * M * Tm)
根据图(3)所示,最大的误差有2 * n/M,即最大误差 = 2 * n/M = 120/(M * M * Tm)。
图(3)参考脉冲信号与被检测信号之间的关系
这样就得到了为什么周期法适合于测量低频信号的原因。从误差关系式可看出,当n大时,则误差大;当n小时,则误差小。,从上式也可得到减少误差n 的两个方法:一个是增加M;另一个是增加Tm。对于一台确定的检测仪而言,Tm是一个固定的常数。这样只有增加M值。但是,对于一个转速n,一个周期内的M也是一个相对固定的值。因此,要增加M值就只有增加检测的周期数,即由一个周期内的测量扩大到多个周期的测量。如果假设N个周期内的计数值为Mn,则有:
可见这两式是相互矛盾的。要减少误差就必须增加N,而这时测量时间就相应增加;要减少测量时间就要减少N,而这时的误差就相应增加。显然,要预先确定一个恰当的N值是比较困难的。因为,不同的转速对应不同的N值。
针对N值难以确定这个问题,本文采取了一种比较合理的确定N值的方法。对于单片机而言,它的计数器的位数是有限的,假设为P位。对一个转速n而言,当计数器达到满刻度时,对应的误差是最小的。因此,为使检测的误差最小,就可以以计数器是否达到满刻度为标准来确定一个转速n 对应的N值。假设单片机指令执行周期为Tm,计数器溢出时间为Tn,检测到的信号次数为N,此时的转速为n,就有如下关系式:
Tn = ( ) Tm 误差: n = 120/[( )( ) Tm/N]
转速: n = 60N/ ( ) Tm (转/min)
从n与N的关系式中可以看出,这时侯不同的n有不同的N值。为求计数器达到满刻度时的N值,具体做法是:用单片机的计数器1来计时,再用软件设计一个计数器对被测信号进行计数。当计数器1溢出以后,取该计数器的值就可计算得到要求的N值。这样就不要象通常的多倍周期法那样,预先确定一个N值。
4 测速算法与系统实现程序
本文采用PIC单片机实现测速系统,在PIC中档系列单片机中,定时器TMR1是一个标准配置,它是一个16位的定时器/计数器。如图(2)所示,我们将检测信号输入到单片机INT端。利用定时器1的定时和INT的中断功能来实现测量。
4.1 主程序流程图见图(4)
(1)初始化程序:初始化定时器1、INT1及各输入输出口设置,清显示缓冲区等。
(2) 按键扫描程序:当扫描到有按键按下时做出相应的响应,用来设置上下限报警值、测量模式以及被测转盘周长。
(3) 测量值比较与报警:用显示缓冲区的值与预设在EEPROM中的上下限报警值逐个比较,当大于上限值或小于下限值时报警。
(4)显示程序:将显示缓冲区的BCD码经查表译码后送七段数码管显示。
4.2 中断服务程序流程图见图(5)
(1)中断类型判断:当TMR1中断时,计数器1溢出次数W =W+1;当INT中断时,被检测信号周期数N =N+1;当RB4电平变化中断时,保存需要掉电保护的数据到EEPROM中;
(2)转速n的计算公式为:,其中Tm为指令执行周期;速度的计算公式为:v=n*L/60(米/秒)其中L为转轮周长。
图(5)中断程序流程图
周期;速度的计算公式为:v =n*L/60(米/秒) 其中L为转轮周长。
图(4)系统主流程图
5 结语
本文介绍了一种利用单片机为核心器件实现高精度转速和速度测量的系统。经过对测速系统的误差分析,论证了该方法的可行性和实用性,并成功的利用该系统实现了对卷扬机速度的测量,测试中各项功能正常,运行可靠,使用方便,效果好,达到了设计的要求。
本文作者创新:采用了以单片机定时器溢出为准来确定多倍周期法倍数N的方法,成功的解决了倍数N难以确定的难点;设计了测转速和测速度两种测量模式,有上下限报警功能使得该系统具有更加广泛的应用前景。
参考文献:
[1]姜庆明、杨旭、甘永梅、王晓钰、王兆安。一种基于光电编码器的高精度测速和测加速度方法[J]。微计算机信息,2004,6:48-50。
[2]张明峰。PIC单片机入门与实践。北京航空航天大学出版社,2004年第1版。
评论