传感器课程设计.docx
《传感器课程设计.docx》由会员分享,可在线阅读,更多相关《传感器课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
传感器课程设计
自行车车速及累计公里数的设计
电子信息工程08级一班指导老师:
路立平
摘要:
本设计是应用在自行车及相似类型产品上的简易装置,可以对自行车的速度和累计公里数实时掌握。
使用霍尔传感器进行脉冲的产生工作,用AT89C52单片机进行数据的处理,然后用数码管对所测速度和累计公里数进行显示,设计中使用的霍尔器件为集成开关型,使用方便简单,编程使用的是汇编语言,具有代码短,执行效率高的特点。
本设备设计简单,方便实用。
关键词:
霍尔传感器;单片机;测速;公里数
目录
1概述.......................................................2
2系统硬件电路设计.......................................4
2.1霍尔传感器部分....................................4
2.2单片机控制电路....................................5
2.3数码管显示部分.....................................7
3功能的实现和软件编程.................................8
3.1电路的总体结构......................................8
3.2编程构想.............................................9
3.3程序的实现...........................................10
4结论......................................................12
4.1感想..................................................12
参考文献.....................................................13
1概述
随着人们生活水平的提高,人们也开始越来越注重生活的质量,更加的关注自己的健康。
参加各种体育锻炼,这其中骑自行车就是一种不错的锻炼项目,为了实时的掌握自己运动状态,了解自己的运动情况,人们就希望有一种可以实时显示速度和行驶里程的装置,这种情况下自行车测速和累计公里数装置就出现在喜欢骑车运动一族人的面前。
利用这种装置可以方便的了解自己的情况,比如去某个地方一共有多远,根据已行驶里程数,可以很方便的知道还剩多少路要走,再依据车速还可以大概知道还得多少时间。
自行车测速装置可以应用到类似的产品上,有很大的应用空间。
在实际中有很多的应用测量电路,比如光耦合测量等,在本设计选用的是霍尔器件测量,霍尔器件有它的优点,本设计中用到的开关型器件输出值对于后续处理电路单片机系统来说能很好的处理,而不要其它过多的转换电路,可以说是使用相当方便的。
再者可以通过增加磁钢的数目来提高测量精度,在单片机处理中运用计数定时等来实现脉冲数目的测量和速度的计算,经过一定的处理变换成相应的数值,再通过相应的端口输出到数码管进行显示。
2系统硬件电路设计
本系统是以8051系列的AT89C52单片机系统为核心开发的测速和累计公里数系统。
系统硬件原理图如图2-1:
图2—1
2.1霍尔传感器
由系统硬件原理图2-1首先是霍尔传感器,本设计中使用的霍尔传感器是UGN3000系列的霍尔开关集成器件。
其内部构造如下图2-2所示:
图2-2
图2-2为其内部构造,其中A为稳压部分,B为霍尔传感器,C为放大器,D为施密特整形电路,三极管为集电极开路型。
工作时通过外在磁场的改变来改变输出的值。
并且开关型的活儿传感器具有1>模块的高灵敏度,使之能够区分在“高分量”上的弱信号,如:
在几百安的直流分量上区分出几毫安的交流分量。
2>过载能力强:
当原边电流超负荷,模块达到饱和,可自动保护,即使过载电流是额定值的20倍时,模块也不会损坏。
3>精度高:
在工作温度区内精度优于1%。
4>还可以通过使用多块磁钢来倍频,以增加测量的精度。
如本设计中使用六片磁钢来增强其测量的灵敏度。
当其工作时,其输出电压与外界磁场的关系如下图2-3所示:
图2-3
本次设计中使用的为常用的开关型霍尔传感器(如UGN-3020)。
它没有输入端,磁场是由空间输入的。
规定用磁铁的S极接近开关型霍尔传感器正面时形成的B为正值。
由图2-3可得其输出值与磁场的关系,当外界磁场为0时,输出Vo为高电平,随着磁钢与传感器的接近,磁场越来越强,当达到临界值Bop时,输出Vo为低电平,当磁钢慢慢远离传感器时,磁场减弱,当达到Brp时,出现输出值的跳变,使Vo变为高电平。
上图中Brp-Bop称为磁滞。
在此差值内,输出电位保持高电位或低电位不变,因而输出稳定可靠。
这就是使用施密特触发器整形后可以得到比较稳定的脉冲波的原因。
这同时也完成了将微弱信号转换为单片机可测量信号的工作,即为信号转换过程。
基于这种机理,在本设计中,可以在自行车的后轮的铁轱辘上均匀的贴上六个磁钢,在自行车转动过程中,当磁钢与霍尔传感器不重合时,便输出高电平,当重合时输出低电平,从而形成脉冲。
可以计算自行车在单位时间内产生的脉冲数,再乘以对应的脉冲所代表的距离,变可以得到自行车的时速,当计算里程数时,依据一共产生的脉冲数,便可以计算出自行车已经行驶的里程。
2.2单片机控制电路
对于上述产生的脉冲可以交予单片机进行处理,单片机根据传感器产生的脉冲数,进行相应的计算,然后输出给显示的部分。
单片机部分的电路图如图2-4所示:
图2-4
如上图,单片机的电路图,晶体振荡器使用的是12MHZ的,对应的单片机的机器周期刚好是一微秒,便于精确定时,复位部分上电时便进行复位,同时也可以进行手动复位,便于需要清零时使用,从集成霍尔传感器送来的脉冲信号,传送到单片机的P3.4管脚,通过内部设置使将定时计数器设置为计数模式,便可对外来脉冲进行计数。
在本设计中假设车轱辘的半径为0.5米。
则车轱辘走一圈的距离为π,这样就可以对脉冲计算,每六个脉冲就走了一圈,则对应的一千米就是1911个脉冲,这样每当外边送来这么多个脉冲时,就走了一千米,此时单片机中记录里程数的寄存器就加一,同时单片机控制的输出部分使数码管的显示也加一,这就实现了对公里数的记录和显示。
在显示速度的时候,利用单片机内部的定时器,定时值为50毫秒,当定时达到一秒时,通过对单片机的P3.4管脚的计数,确定一秒内走过了多少脉冲,由每两个脉冲之间的距离为0.52米,则有脉冲数可以计算出自行车的速度(由于显示部分有两个数码管,所以计算取小数部分的一位,忽略其它的部分,根据验证,对最后的结果影响很小),最后让数据输出到数码管进行显示就行了。
2.3数码管显示部分
显示部分是人机交互的窗口,只有通过显示部分,我们才能很好的了解单片机所处的状态,在设计中,显示公里数的数码管用静态显示的方式(每走一千米变化一次,变化较慢,静态节省单片机资源),而由于显示速度的数码管刷新速度比较快,为了使读数尽可能的清晰,显示速度的数码管也是静态显示。
并且静态显示有显示稳定的优点,在发光二极管导通电流一定的情况下显示器的亮度较高,控制系统在运行过程中,仅仅在需要更新显示内容时,单片机才执行一次显示子程序,这样大大节省了单片机资源,提高了单片机的工作效率;缺点是位数多时,硬件开销太大。
因此静态显示适合显示亮度要求高、位数不多的情况下使用。
本设计一般在户外使用,考虑到户外的光线较亮,故采用静态显示。
显示的数码管前面都有一个锁存器,锁存需要显示的信息,同时锁存器具有较强的驱动能力,能有效的驱动数码管。
对应的显示部分的电路图如图2-5和图2-6所示:
图2-5公里显示部分
图2-6速度显示部分
由上图可知显示公里数的使用了四只数码管,显示速度的使用两只,在设计中,对于公里数只显示其整数部分,而对于速度,显示一位整数,和一位小数,利于精确显示。
在端口控制上,P1口控制公里数的输出,P0口控制速度的输出,同时P0接有排阻,可以有效的驱动下一级电路。
每个数码管前得锁存器,由P2口得对应管脚控制,当需要某一个管脚显示某一数字时,便可改变对应管脚的值使其选通,进而所存相应的信息。
使数码管显示对应的公里数或者速度。
3功能的实现和软件编程
3.1电路的总体结构
通过以上部分可以对本设计中的电路有一个大致的了解,下面再对电路的总体做一下总结,首先是电路的传感器部分,在自行车的车轱辘上粘贴磁钢的方式,从而在传感器端产生磁场的变化,进而产生脉冲,脉冲再输送到单片机的输入端,然后单片机对该脉冲进行处理,计算出相应的公里数和速度,再通过对端口进行操作,使数据在数码管端显示出来,即完成了从数据采集到数据的处理,以及数据的显示等一系列的工作。
数据采集部分用到集成开关型霍尔传感器,传感器输出端连接单片机P3.4定时计数0端口,单片机部分,XTAL1和XTAL2接12MHZ晶体振荡器,为单片机的工作提供时钟脉冲。
RST端接复位电路,有效的保证单片机正常工作。
P0口接排阻,提升其驱动能力,然后接两个573锁存器,P1口外接4个573锁存器,6个锁存器的后面分别接有数码管,利用P2控制哪一个锁存器要选通,也就是改变哪一个数码管的值。
出了这些部分,再外接上电源,就是整个的电路了,通过一定手段将程序烧写到单片机内部,便可使这个电路进行工作,这就是整个电路的整体结构。
3.2编程构想
整个设计围绕单片机进行,可以说是单片机完成主要的控制工作,占据核心地位。
但其它部分也必不可少,例如霍尔传感器完成数据的采集工作,及其内部的其它部分完成对采集信号的放大整型及必要的驱动能力的转换等工作,单片机负责处理数据,利用计数器对从传感器送来的脉冲进行计数,利用定时器对一个脉冲到另一个脉冲时间的计算,根据脉冲个数和每两个脉冲间的距离(本设计中假设车轮半径为0.5米,编程时也时按这个数据进行计算的)可以很容易的计算距离,有脉冲间隔的时间,有可以得到速度。
人通常识别的是十进制数,所以再通过单片机对处理好的数据进行转换即可。
再说显示部分,首先单片机送来的数据在锁存器中存着,数码管根据相应的编码便可以进行显示了。
在编程过程中,利用了两个中断,首先设置一个用作计数器,一个定时器,分别用作记录脉冲数和时间,上电复位后,先使数码管全部显示零,其中显示采取查表的方式,即计算得出数值后,去程存中查找相应的显示代码,送到数码管显示。
然后打开计数器开始计数,定时器暂时不工作,直到检测到P3.4管脚出现低电平后,才启动定时器,同时在检测脉冲的时候也要记录其次数,故在主程序中要使用一个计数的寄存器。
由于定时一次是50毫秒,所以需要二十次定时中断后才能达到1秒,所以在定时中断程序里面设置一个计数寄存器,记录中断的次数,当次数够了后边开始计算速度。
同时使相应的计数器清零进入下一次计数状态。
对于公里数的变成思想,一千米对应着1911个脉冲(只有很小的误差,可以忽略),所以当记录达到1911后,就使计数部分进入中断程序,重新设置计数初值,并对记录公里数的寄存器加一处理,然后把对应的数转换成BCD码,完成这一步后,调用显示程序进行显示。
显示时,由于每个数码管都使用了锁存器,故在显示时,必须使对应的锁存器选通,本程序中公里数数码管的最高位锁存器的选通端为P2.0,一次为P2.1,P2.2,P2.3端口,且数据从P1输出;在显示速度的两个数码管中最高位到最低位一次为P2.4,P2.5端口,且数据从P0输出然后确定单片机部分送来的是哪一位数,使相应的锁存器选通,边可以对相应的位进行显示了。
显示完毕关闭选通线,使其稳定。
这就完成了显示。
3.3程序的实现
根据以上的编程构想,可以很容易完成程序的编写,本次编程使用的是汇编语言,本程序经过编译,可以保证其正确性。
具体程序如下所示:
ORG0000H
LJMPSTART
ORG000BH
LJMPTIME1
ORG0013H
LJMPCOUNT0
ORG0030H
DAT:
DB0F9H,94H,0B3H,99H,92H,83H,0F8H,80H,90H;对应的显示代码
ORG0050H
START:
MOVR7,#00H
MOVR6,#00H
MOVR5,#00H
MOVR4,#00H
MOVDPTR,#DAT;取首地址
MOVA,#00H
MOVCA,@A+DPTR
MOVP2,#00H
MOVP1,A
MOVP0,A
MOVP2,#0FFH
MOVTMOD,#37H;工作模式设定,即对应的寄存器的处置
MOVTH0,#0F9H
MOVTL0,#0F9H
MOVTH1,#60H
MOVTL1,#0ACH
SETBEA;启动定时计数中断部分
SETBET0
SETBET1
SETBTR0
L3:
JBP3.4,$;主程序循环部分
INCR4
SETBTR1
CPLP3.4
CJNER7,#20H,L1
L2:
CPLTR1
LCALLDISPLAY
MOVR4,#00H
MOVR7,#00H
LJMPL3
L1:
JCL3
NOP
NOP
TIME1:
MOVTH1,#60H;定时中断程序
MOVTL1,#0ACH
INCR7
RETI;
NOP
NOP
COUNT0:
MOVTH0,#0F9H;计数中断程序
MOVTL0,#51H
MOVA,R6
ADDA,#01H
DAA
MOVA,R5
ADDCA,#00H
DAA
MOVR5,A
LCALLDISPLAY1
RETI
NOP
NOP
DISPLAY:
MOVA,R4;速度显示程序
MOVB,#02H
DIVAB
MOVB,#01H
MULAB
MOVR3,A
MOVB,#04H
MULAB
ANLA,#0F0H
SWAPA
MOVR2,A
MOVA,R3
MOVCA,@A+DPTR
SETBP2.4
MOVP0,A
CPLP2.4
MOVA,R2
MOVCA,@A+DPTR
SETBP2.5
MOVP0,A
CPLP2.5
RET
NOP
NOP
DISPLAY1:
MOVA,R6;公里显示程序
ANLA,#0FH
MOVCA,@A+DPTR
MOVP1,A
SETBP2.3
CPLP2.3
MOVA,R6
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVP1,A
SETBP2.3
CPLP2.3
MOVA,R5
ANLA,#0FH
MOVCA,@A+DPTR
MOVP1,A
SETBP2.1
CPLP2.1
MOVA,R5
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVP1,A
SETBP2.0
CPLP2.0
RET
NOP
NOP
END
以上为完整的程序,通过一定的算法对所要实现的功能进行编程实现,对于公里数和速度的显示频率不同,所以使用了两个显示程序,分别完成不同的显示功能。
4结论
以上即为课程设计的整个内容,首先根据所给题目进行构思,思考完成该功能需要怎么来实现,再考虑怎么设计电路及如何选着器件,再考虑电路设计时,想了好几个类型,最终经过仔细考虑,选着了现在的这个电路。
在软件编写中对于其中的算法,也是有好几种,最后经过几种数据验证选着了这个比较精确的。
进而完成了本次课程设计。
感想
经过几天的忙碌,终于完成这次课程设计,感觉到有些东西不亲自弄一下是不能真正了解的,就像这次的单片机部分,刚开始感觉这样也行那样也行,真正到弄的时候才知道有好多东西要考虑的。
脑子里想的始终和实际的有一定差距的,这次设计中没少翻书,感觉就是平时有的东西学的也可以了,可用时又感觉到陌生了,还是掌握的不牢靠,得在今后的学习中更加深一步,及对以前学过的内容做好复习工作才能更好的拥有知识。
当然也翻书查找别人的设计方法,及一些典型的应用。
这期间和同学讨论过在程序编写中如何实现某些功能,通过几次讨论又学到了不少知识,深刻领会到讨论问题的重要性,还有问老师一些器件的使用案例,都不少受启发。
这期间也没少上网查东西,网络是个很好的媒介,可以帮组我们好多,应该多加以利用,为打造更好的自己奠定基石。
总的来说,经过这次课程设计对不少知识都有了一个新的认识,对以前的知识也是一个很好的巩固,同时也了解到不少新知识。
通过这次课程设计收获很多。
参考文献:
[1]何道清张禾谌海云传感器与传感器技术2011,1291-311
[2]李建忠单片机原理及应用2008,232-77