《传感器技术课程设计基于霍尔传感器的转速测量.doc》由会员分享,可在线阅读,更多相关《传感器技术课程设计基于霍尔传感器的转速测量.doc(23页珍藏版)》请在三一办公上搜索。
1、 成绩评定: 传感器技术 课程设计 题 目 基于霍尔传感器的转速测量 摘 要转速是发动机重要的工作参数之一,也是其它参数计算的重要依据。针对工业上常见的发动机设计了以单片机STC89C51为控制核心的转速测量系统。系统利用霍尔传感器作为转速检测元件,并利用设计的调理电路对霍尔转速传感器输出的信号进行滤波和整形,将得到的标准方波信号送给单片机进行处理。实际测试表明,该系统能满足发动机转速测量要求。关键词:转速测量,霍尔传感器,信号处理,数据处理 目 录一 、设计目的1二、设计任务与要求12.1设计任务12.2设计要求1三、设计步骤及原理分析13.1设计方法23.2设计步骤23.3设计原理分析16
2、四、课程设计小结与体会16五、参考文献16 一 、设计目的1. 学习基本理论在实践中综合运用的初步禁言,掌握模拟电路的设计的基本方法,设计步骤,培养综合设计与实物调试能力。2. 学会霍尔传感器的设计方法和性能指标测试。3. 进一步了解霍尔传感器的组成框图和各个单元的工作原理以及相互之间的联系。4. 培养实践技能,提高分析和解决问题的能力。5. 提高自己对文献资料的搜索和信息处理能力。二、设计任务与要求2.1设计任务1、 查阅传感器有关方面的相关资料,了解此方面的发展状况。 2、掌握所用器件的特性。 3、采用合理的设计方案。 4、设计、实现该系统。 5、撰写设计报告。2.2设计要求1.掌握霍尔传
3、感器的使用方法2.熟悉使用单片机测量转速三、设计步骤及原理分析3.1设计方法系统由传感器、信号预处理电路、处理器、显示器和系统软件等部分组成。传感器部分采用霍尔传感器,负责将电机的转速转化为脉冲信号。信号预处理电路包含待测信号放大、波形变换、波形整形电路等部分,其中放大器实现对待测信号的放大,降低对待测信号的幅度要求,实现对小信号的测量;波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTL/CMOS兼容信号。 处理器采用STC89C51单片机,显示器采用8位LED数码管动态显示。系统原理框图如图1所示: 图1系统软件主要包括测量初始化模块、信号频率测量模块、浮点数算术运算
4、模块、浮点数到BCD码转换模块、显示模块、按键功能模块、定时器中断服务模块。系统软件框图如图2所示。 图23.2设计步骤1 单片机主控电路设计系统选用 STC89C51 作为转速信号的处理核心。STC89C51 包含 2 个16位定时/计数器、4K8 位片内 FLASH 程序存储器、4个8位并行I/O口。16 位定时/计数器用于实现待测信号的频率测量。8位并行口P0、P2用于把测量结果送到显示电路。4K8 位片内FLASH程序存储器用于放置系统软件。STC89C51与具有更大程序存储器的芯片管脚兼容,如:89C52(8K8 位)或 89C55(32K8 位),为系统软件升级打下坚实的物质基础。
5、STC89C51最大的优点是:可直接通过计算机串口线下载程序,而无需专用下载线和编程器。STC89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等一台计算机所需要的基本功能部件。其基本结构框图如图3.1,包括:一个8位CPU;4KB ROM;128字节RAM数据存储器;21个特殊功能寄存器SFR; 4个8位并行I/O口,其中P0、P2为地址/数据线,可寻址64KB ROM或64KB RAM;一个可编程全双工串行口;具有5个中断源,两个优先级,嵌套中断结构;两个16位定时器/计数器; 一个片内震荡器及时钟电路;计数脉冲输入 T0 T1特殊功能寄存器SFR
6、128字节RAM定时/计数器 T0、T1时钟源4K ROM(EPROM)(8031无)中断系统串行接口并行I/O接口CPU P0 P1 P2 P3 TXD RXD 中断输入图3 STC89C51单片机结构框图STC89C51系列单片机中HMOS工艺制造的芯片采用双列直插(DIP)方式封装,有40个引脚。STC89C51单片机40条引脚说明如下: (1)电源引脚。V正常运行和编程校验(8051/8751)时为5V电源,V为接地端。(2)I/O总线。P- P(P0口),P- P(P1口),P- P(P2口),P- P(P3口)为输入/输出引线。(3)时钟。XTAL1:片内震荡器反相放大器的输入端。
7、XTAL2:片内震荡器反相放器的输出端,也是内部时钟发生器的输入端。(4)控制总线。 由P3口的第二功能状态和4根独立控制线RESET、EA、ALE、PSEN组成。值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。如表4所示。P3口引脚及线号引脚第二功能P3.0 (10)RXD串行输入口P3.1 (11)TXD串行输出口P3.2 (12)INT0外部中断0P3.3 (13)INT1外部中断1P3.4 (14)T0定时器0外部输入P3.5 (15)T1定时器1外部输入P3.6 (16)WR外部数据存储器写脉冲P3.7 (17)RD外部数据存储器读脉冲 图4单片机的片外总
8、线结构:地址总线(AB):地址总线宽为16位,因此,其外部存储器直接寻址为64K字节,16位地址总线由P0口经地址锁存器提供8位地址(A0至A7);P2口直接提供8位地址(A8至A15)。数据总线(DB):数据总线宽度为8位,由P0提供。控制总线(CB):由P3口的第二功能状态和4根独立控制线RESET、EA、ALE、PSEN组成。2 脉冲产生电路设计LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算
9、放大器的场合。LM358的封装形式有塑封8引线双列直插式和贴片式。特性: 内部频率补偿 直流电压增益高(约100dB) 单位增益频带宽(约1MHz) 电源电压范围宽:单电源(330V) 双电源(1.5一15V) 低功耗电流,适合于电池供电 低输入偏流 低输入失调电压和失调电流 共模输入电压范围宽,包括接地 差模输入电压范围宽,等于电源电压范围 输出电压摆幅大(0至Vcc-1.5V)如图5所示,信号预处理电路为系统的前级电路,其中霍尔传感元件b,d为两电源端,d接正极,b接负极;a,c两端为输出端,安装时霍尔传感器对准转盘上的磁钢,当转盘旋转时,从霍尔传感器的输出端获得与转速率成正比的脉冲信号,
10、传感器内置电路对该信号进行放大、整形,输出良好的矩形脉冲信号,图中LM358部分为过零整形电路使输入的交变信号更精确的变换成规则稳定的矩形脉冲,便于单片机对其进行计数。图5 信号预处理电路3.3 按键电路设计通过软件设置按键开关功能: 按 K0清零、复位按K1显示计时时间按K2显示计数脉冲数此按键电路为低电平有效,当无按键按下时,单片机输入引脚P1.0、P1.1、P1.2、P1.3端口均为高电平。当其中任一按键按下时,其对应的P1端口变为低电平,在软件中利用这个低电平设计其功能。软件中还设置了按键防抖动误触发功能,软件中设置定时器1 50ms中断一次,每次中断都对按键进行扫描,如果扫描到有按键
11、按下,则延迟10ms,再次进行键扫描,若仍有按键按下,则按键为真,并从P1口读取数据,低电平对应的即为有效按键,如图6所示。 图63.4 数据显示电路设计3.4.1 数码管结构和显示原理图8为数码管的引脚接线图,实验板上以P0口作输出口,经74LS244驱动,接8只共阳数码管S0-S7。表7为驱动LED数码管的段代码表为低电平有效,1-代表对应的笔段不亮,0-代表对应的笔段亮。若需要在最右边(S0)显示“5”,只要将从表中查得的段代码64H写入P0口,再将P2.0置高,P2.1-P2.7置低即可。设计中采用动态显示,所以其亮度只有一个LED数码管静态显示亮度的八分之一。表3.2 驱动LED数码
12、管的段代码数字dpecgbfa十六进制P0.7P0.6P0.5P0.4P0.3P0.2 P0.1P0.0共阴共阳010110111B74810001010014EB210101101AD523100111019D624000111101EE15100110119B64610111011BB4470001010115EA810111111BF409100111119F60 表7 图8数码管的引脚接线这里设计的系统先用 6 位LED数码管动态显示小型直流电机的转速。当转速高于六位所能显示的值(999999)时就会自动向上进位显示。3.4.2 缓冲器74LS244系统总线中的地址总线和控制总线是单向
13、的,因此驱动器可以选用单向的,如74LS244。74LS244还带有三态控制,能实现总线缓冲和隔离,74LS244是一种三态输出的八缓冲器和线驱动器,该芯片的逻辑电路图和引脚图如图3.5所示。从图可见,该缓冲器有8个输入端,分为两路1A11A4,2A12A4。同时8个输出端也分为两路1Y11Y4,2Y12Y4,分别由2个门控信号1G和2G控制,/1G, /2G三态允许端(低电平有效)。当1G为低电平时,1Y11Y4的电平与1A11A4的电平相同,即输出反映输入电平的高低;同样,当2G为低电平时,2Y12Y4的电平与2A12A4的电平相同。而当1G(或2G)为高电平时,输出1Y11Y4(或2Y1
14、2Y4)为高阻态。经74LS244缓冲后,输入信号被驱动,输出信号的驱动能力加大了。74LS244缓冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器和定向发送器等。常用的缓冲器还有74LS240,241等。 图9 74LS244逻辑电路图74LS244的极限参数如下:电源电压 7V 输入电压5.5V 输出高阻态时高电平电压5.5V利用上述器件设计的显示电路如图3.6所示。8个共阳的LED数码管(S0-S7)同名的引脚连接在一起,由单片机P0口通过74LS244驱动(段控制),R12-R19 为限流电阻。单片机P2口的8个引脚分别通过三极管Q0-Q7控制8个LED数码管的公共端(
15、位控制)。单片机的主时钟为12MHz。 P0口 和 P2口都是准双向口,输出时需要接上拉电阻。P0内部没有上拉电阻,P2口内部有弱上拉。所以P0口外围电路设计为低电平有效,高电平无效。要使数码管S0-S7的其中一个亮,其对应的P2端口要置高,P2的其余端口置低。如要让S0数码管亮,则要将P2.0置高,P2.1-P2.7置低即可。系统将定时把显示缓冲区的数据送出,在数码管LED上显示。 3.5 稳压电源设计如图3.7所示为5-12V连续可调稳压电源,采用L4960芯片制作的输出电流可达10A,输出电压在512V间连续可调,是一个实用的开关型稳压电源。其工作原理为:220V交流电源经变压器T1降压
16、,桥堆VD1整流,C1、C2滤波后得到一直流电压。IC第、脚为直流电压输入端,其最高输入电压为+40V。该直流电压经IC内部的振荡器调制为200kHz左右的高频开关电压,振荡器的开关频率由外接振荡电容器C4决定。当C4的值取为3300pF时,电源的开关频率约为200kHz;R3、C6为环路调节放大器的频率补偿网络,由第7脚输入。IC第脚为抑制输入端,其闭锁电压的阈值为0.7V,输出电压经取样电阻R2反馈至第脚后与R1比较,当阈值电压大于0.7V时,输出关闭,起到短路过流保护作用。第6脚为输出电压调节控制端,由电位器RP1及电阻R4将输出电压分压后得到调节电压检测值,调节电位器RP1可控制输出电
17、压的大小,输出电压值可由公式:VO=Vref进行估算。其中,Vref为基准电压,为2.1V。IC为专用开关型稳压集成电路L4960,其外壳接地并接散热器。IC外围电路中,除振荡电容C4选择高频电容器外,电阻R1、R2应选择允许偏差1的高精度金属膜电阻外,其余元件无特殊要求,按图中参数选取小型器件即可。由于输出电压为高频开关式,因此IC和功率三极管VT所需的散热器仅为普通稳压电源的三分之一,且性能远远高于普通的稳压电源。 图10 5-12V连续可调稳压电源电路3.6 串行通信模块设计STC89C51单片机有一个全双工的串行通信口,以便于单片机和电脑之间进行串口通信。为了与计算机进行通讯,设计了R
18、S232串行通信接口,将该接口与PC机的串口连接,可以实现单片机与PC机的串行通信,进行双向数据传输。进行串行通信要满足一定的条件,比如电脑的串口是RS232电平(-5至-15V为1,+5至+15V为0),而单片机的串口是TTL电平(大于+2.4V为1,小于+0.7V为0),两者之间必有一个电平转换电路,图11用MAX232集成电路实现RS232电平与TTL电平的相互转换。此串行通信功能模块完成源程序代码下载到STC89C51芯片中,它需要和微机上的ISP下载器软件配合使用来完成这样的功能。系统总电路为以上硬件各功能模块的有机结合,如图12所示。图11.MAX232串行通信图12. 系统总电路
19、3.7系统软件设计本设计软件主要为主程序、数据处理显示程序、按键程序设计、定时器中断服务程序四个部分。(1)主程序主要完成初始化功能,包括LED显示的初始化,中断的初始化,定时器的初始化,寄存器、标志位的初始化等。主程序流程图如图12所示。(2)数据处理显示模块程序。此模块中单片机对在1秒内的计数值进行处理,转换成r/min送显示缓存以便显示。具体算法如下:设单片机每秒计数到n个值,即n/2 (r/s)(圆盘贴两个磁钢)。则n/2 (r/s)=30n(r/min)。即只要将计数值乘以30便可得到每分钟电机的转速。数据处理显示模块流程图如图13所示。 图12 主程序流程图 图13 数据处理显示模
20、块流程图 图14.定时器1中断服务程序流程图(3)按键程序设计。按键程序包括按键防抖动处理、判键及修改项目等程序。按键流程图如图14所示。 (4)定时器1中断服务程序设计。定时器1完成计时功能,定时50ms,进行定时中断计数并每隔1s更新一次显示数据。流程图如图15所示。 图15 (3)按键程序设计。按键程序包括按键防抖动处理、判键及修改项目等程序。按键流程图如图4.3所示。 (4)定时器1中断服务程序设计。定时器1完成计时功能,定时50ms,进行定时中断计数并每隔1s更新一次显示数据。流程图如图15所示。3.8制作调试3.8.1 硬件调试 硬件调试时先分步调试硬件中各个功能模块,调试成功后再
21、进行统调。安装固定电机和霍尔传感器时,粘贴磁钢需注意,霍尔传感器对磁场方向敏感,粘贴之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。霍尔传感器探头要对准转盘上的磁钢位置,安装距离要在10mm以内才可灵敏的感应磁场变化。在磁场增强时霍尔传感器输出低电平,指示灯亮;磁场减弱时输出高电平,指示灯熄灭。当电机转动时,感应电压指示灯高频闪烁,所以视觉上指示灯不会有多大的闪烁感。当给NJK 8002D 型霍尔传感器施加15V电压时其输出端可以输出4V的感应电压。输出幅值为4V的矩形脉冲信号。LM358整形电路调试:在焊接硬件电路时需细心排除元器件和焊接等方面可能出现的故障,元器件的安装
22、位置出错或引脚插错都可能导致电路短路或实现不了电路应有的功能,甚至烧坏元器件。为方便调试,用信号发生器产生的1KHz的正弦信号送给LM358整形电路,调试直到可以输出矩形脉冲信号为止,该整形电路调试即可完成。然后以此信号为测试信号送给单片机系统,进行测量、显示等其他功能的调试。3.8.2 软件调试 测量系统与PC机连接时一定要先连接串行通信电缆,然后再将其电源线插入USB接口;拆除时先断开其电源,再断开串行通信电缆,否则极易损坏PC机的串口。在进行软件编程调试时需要用到单片机的集成开发环境MedWin V2.39 软件,编程时极易出现误输入或其他的一些语法错误,最重要的还有一些模块无语法错误却
23、达不到预期的功能,都要经过调试才能排除。MedWin V2.39 软件具有很强大的编程调试功能,能够模拟仿真实际单片机的端口和内部功能部件的状态值。该软件中有硬件调试和软件调试功能,可以观察单片机内存单元对应的运行值,可以显示单片机端口、中断、定时器1、定时器2还有串口对应的运行值。可以单步调试也可以模块调试,最好的是可以对你所怀疑的语句模块设置断点。MedWin V2.39 具有的强大的编译调试功极大地方便了对软件部分的调试。在具体调试过程中,系统将各功能模块如数据处理程序、按键程序设计、中断服务子程序、LED显示程序分别分开进行调试,最后进行主程序的整体调试。编译无误后生成目标代码BIN文
24、件采用STC 单片机下载软件STC-ISP将其下载到实验板的单片机中。下载软件的最后一步:点击软件STC-ISP界面中的下载按钮,在点击前一定要保持实验板的串行通信线及电源线与PC机连接良好,并且实验板的电源开关处于关闭状态,然后点击下载按钮,再打开实验板电源开关,此时软件将自动完成程序下载。最后将硬件和软件结合起来整体调试实现系统的测速功能。3.9设计原理分析转速是工程上一个常用的参数,旋转体的转速常以每分钟的转数来表示。其单位为 rmin。由霍尔元件及外围器件组成的测速电路将电动机转速转换成脉冲信号,送至单片机STC89C51的计数器 T0进行计数,用T1定时测出电动机的实际转速。此系统使
25、用单片机进行测速,采用脉冲计数法,使用霍尔传感器获得脉冲信号。其机械结构也可以做得较为简单,只要在转轴的圆盘上粘上两粒磁钢,让霍尔传感器靠近磁钢,机轴每转一周,产生两个脉冲,机轴旋转时,就会产生连续的脉冲信号输出。由霍尔器件电路部分输出,成为转速计数器的计数脉冲。控制计数时间,即可实现计数器的计数值对应机轴的转速值。单片机CPU将该数据处理后,通过LED显示出来。四、课程设计小结与体会霍尔传感器具有不怕灰尘、油污,安装简易,不易损坏等优点,在工业现场得到了广泛应用。利用霍尔传感器设计的转速测量系统以单片机STC89C51为数据处理核心,采用定时器定时中断的方法实现计数,对测量数据进行计算得到转
26、速数据,并将结果送数码管显示。整个测量系统硬件电路简单,容易调试,软件部分编程采用C51,有较高的编程效率。测试结果表明对电动机转速的测量精度较高,基本能够满足实际的测试需要,有一定的实际应用价值。五、参考文献1何希才,薛永毅.传感器及其应用实例M.北京:机械工业出版社,2004.12谭浩强.C程序设计(第二版)M.北京:清华大学出版社,19993谢嘉奎,宣月清,冯军 . 电子线路M.北京:高等教育出版社,20044康华光 .电子技术基础M.北京:高等教育出版社,20045胡斌 . 图表细说电子元器件M.北京:电子工业出版社,2004.56德克劳斯贝伊特.电子元件M. 北京:科学出版社,199
27、9.87余锡存,曹国华.单片机原理与接口技术M .西安:西安电子科技大学出版社,2000.7附录A部分程序清单:/=源代码_HYTC=#include #include -#include #define uchar unsigned char#define uint unsigned int/#include /const uchar code tab1=0x48,0xeb,0x52,0x62,0xe1,0x64,0x44,0xea,0x40,0x60;/const uchar code tab2=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/uchar
28、buf8=0,0,0,0,0,0,0,0;/unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code dispbit=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;unsigned char codedispcode=0x48,0xeb,0x52,0x62,0xe1,0x6
29、4,0x44,0xea,0x40,0x60,0xff,0xbf;uchar dispbuf8=0,0,0,0,0,0,10,10;uchar temp8;uchar dispcount;uchar T0count;uchar timecount;bit flag;unsigned long x;/timecount;void delay() ;void main(void) unsigned char i; P1=0xdf; TMOD=0x15;/TH1定时,模式1;TH0计数,模式1 TH0=0; TL0=0; TH1=(65536-50000)/256; TL1=(65536-50000)
30、%256; ET0=1; ET1=1;/TH0,1溢出允许中断 EA=1;/允许中断 TR1=1; TR0=1;/开始计数 while(1) if(flag=1) flag=0; x=(T0count*65536+TH0*256+TL0)*30; /x=TH0*256+TL0; for(i=0;i8;i+) tempi=0; i=0; while(x/10) /频率代码转换,存入tempi,送显示缓存dispbufi tempi=x%10; x=x/10; i+; tempi=x; for(i=0;i6;i+) dispbufi=tempi; timecount=0; T0count=0; T
31、H0=0; TL0=0; TR0=1; P0=dispcodedispbufdispcount; P2=dispbitdispcount; dispcount+; delay(); if(dispcount=8) dispcount=0; void t0(void) interrupt 1 using 0 T0count+;void t1(void) interrupt 3 using 0 TH1=(65536-46500)/256; TL1=(65536-46500)%256; timecount+; if(timecount=20) TR0=0; timecount=0; flag=1; /P0=dispcodedispbufdispcount; /P2=dispbitdispcount; / dispcount+; /if(dispcount=8) / / dispcount=0; / void delay(void)int i,j;for (i=0;i5;i+) for (j=0;j12;j+) _nop_();