1、本科毕业论文 (20 届) 基于霍尔传感器的转速测量系统设计 所在学院 专业班级 电气工程自动化 学生姓名 指导教师 完成日期 基于霍尔传感器的转速测量系统设计 1 摘 要 转速是发动机重要的工作参数之一,也是其它参数计算的重要依据。针对工业上常见 的发动机设计了以单片机 STC89C51 为控制核心的转速测量系统。系统利用霍尔传感器作 为转速检测元件,并利用设计的调理电路对霍尔转速传感器输出的信号进行滤波和整形, 将得到的标准方波信号送给单片机进行处理。实际测试表明,该系统能满足发动机转速测 量要求。 关键词:转速测量,霍尔传感器,信号处理,数据处理 基于霍尔传感器的转速测量系统设计 2 A
2、bstract The rotate speed is one of the important parameters for the engine, and it is also the important factor that calculates other parameters. The rotate speed measurement system for the common engine is designed with the single chip STC89C51. The signal of the rotate speed is sampled by the Hall
3、 sensor, and it is transformed into square wave which will be sent to single chip computer. The result of the experiment shows that the measurement system is able to satisfy the requirement of the engine rotate speed measurement. Key words: rotate speed measurement, Hall sensor, signal processing, d
4、ata processing 基于霍尔传感器的转速测量系统设计 3 目 录 1 前言 4 2 系统概述 4 2.1 系统组成 4 2.2 处理方法 5 2.3 系统工作原理 6 3 系统硬件电路设计 7 3.1 单片机主控电路设计 7 3.2 脉冲产生电路设计 9 3.3 按键电路设计 .10 3.4 数据显示电路设计 .11 3.5 稳压电源设计 .13 3.6 串行通信模块设计 .14 4 系统软件设计 .16 5 制作调试 .18 5.1 硬件 调试 .18 5.2 软件调试 .19 6 测试结果分析 .19 结论 21 参考文献 22 致谢 23 附录 A.24 基于霍尔传感器的转速测
5、量系统设计 4 1 前言 在工农业生产和工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、 电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要测量和显示其转 速。要测速,首先要解决的是采样问题。测量转速的方法分为模拟式和数字式两种。模 拟式采用测速发电机为检测元件,得到的信号是模拟量。早期直流电动机的控制均以模 拟电路为基础,采用运算放大器,非线性集成电路以及少量的数字电路组成,控制系统 的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难。数字式通常采用光 电编码器、圆光栅、霍尔元件等为检测元件,得到的信号是脉冲信号。随着微型计算机 的广泛应用,单片机技术的日新月
6、异,特别是高性能价格比的单片机的出现,转速测量 普遍采用以单片机为核心的数字式测量方法,使得许多控制功能及算法可以采用软件技 术来完成,智能化微电脑代替了一般机械式或模拟式结构,并使系统能达到更高的性能。 采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效 率。 直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速。测速电机的电 压高低反映了转速的高低,在许多需要调速或快速正反向电力拖动领域中得到了广泛的 应用。从控制的角度来看,直流调速还是交流拖动系统的基础。本文介绍一种用 STC89C51 单片机测量小型电动机转速的方法。系统以单片机 STC89C51 为控
7、制核心,用 NJK-8002D 霍尔集成传感器作为测量小型直流电机转速的检测元件,经过单片机数据处理, 用 8 位 LED 数码管动态显示小型直流电机的转速。 2 系统概述 2.1 系统组成 系统由传感器、信号预处理电路、处理器、显示器和系统软件等部分组成。传感器 部分采用霍尔传感器,负责将电机的转速转化为脉冲信号。信号预处理电路包含待测信 号放大、波形变换、波形整形电路等部分,其中放大器实现对待测信号的放大,降低对待 测信号的幅度要求,实现对小信号的测量;波形变换和波形整形电路实现把正负交变的 信号波形变换成可被单片机接受的 TTL/CMOS 兼容信号。 处理器采用 STC89C51 单片机
8、, 显示器采用 8 位 LED 数码管动态显示。系统原理框图如图 2.1 所示: 基于霍尔传感器的转速测量系统设计 5 图 2.1 转速测量系统原理框图 系统软件主要包括测量初始化模块、信号频率测量模块、浮点数算术运算模块、浮 点数到 BCD 码转换模块、显示模块、按键功能模块、定时器中断服务模块。系统软件框 图如图 2.2 所示。 频 率 测 量 模 块 显 示 模 块初 始 化 模 块 浮 点 数 算 术 运 算 模 块浮 点 数 到 BCD码 转 换 模 块 图 2.2 系统软件框图 2.2 处理方法 系统的设计以 STC89C51 单片机为核心,利用它内部的定时/计数器完成待测信号频
9、率的测量。测速实际上就是测频,通常可以用计数法、测脉宽法和等精度法来进行测试。 所谓计数法,就是给定一个闸门时间,在闸门时间内计数输入的脉冲个数;测脉宽法是 利用待测信号的脉宽来控制计数门,对一个高精度的高频计数信号进行计数。由于闸门 与被测信号不能同步,因此,这两种方法都存在1 误差的问题,第一种方法适用于信号 频率高时使用,第二种方法则在信号频率低时使用。等精度法则对高、低频信号都有很 好的适应性。此系统采用计数法测速。单片机 STC89C51 内部具有 2 个 16 位定时/计数 器 ,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。 在构成为定时器时,每个机器
10、周期加 1(使用 12MHz 时钟时,每 1us 加 1),这样以机器周 期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部引脚发生从 1 到 0 的跳变时计数器加 1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入 每个机器周期被采样一次,这样检测一次从 1 到 0 的跳变至少需要 2 个机器周期(24 个振 信 号 处 理 RAM串 口霍 尔 传 感 器 键 盘电 机 LED显 示单 片 机 基于霍尔传感器的转速测量系统设计 6 荡周期),所以最大计数速率为时钟频率的 1/24(使用 12MHz 时钟时 ,最大计数速率为 500KHz)。定时/计数器的工作由相应的运行
11、控制位 TR 控制,当 TR 置 1 时,定时/计数器开 始计数,当 TR 清 0 时,停止计数。 2.3 系统工作原理 转速是工程上一个常用的参数,旋转体的转速常以每分钟的转数来表示。其单位为 rmin。由霍尔元件及外围器件组成的测速电路将电动机转速转换成脉冲信号,送至单 片机 STC89C51 的计数器 T0 进行计数,用 T1 定时测出电动机的实际转速。此系统使用单 片机进行测速,采用脉冲计数法,使用霍尔传感器获得脉冲信号。其机械结构也可以做 得较为简单,只要在转轴的圆盘上粘上两粒磁钢,让霍尔传感器靠近磁钢,机轴每转一 周,产生两个脉冲,机轴旋转时,就会产生连续的脉冲信号输出。由霍尔器件
12、电路部分 输出,成为转速计数器的计数脉冲。控制计数时间,即可实现计数器的计数值对应机轴 的转速值。单片机 CPU 将该数据处理后,通过 LED 显示出来。 2.3.1 霍尔传感器 霍尔传感器是对磁敏感的传感元件,由磁钢、霍耳元件等组成。测量系统的转速传 感器选用 SiKO 的 NJK-8002D 的霍尔传感器,其响应频率为 100KHz,额定电压为 5- 30(V) 、检测距离为 10(mm) 。其在大电流磁场或磁钢磁场的作用下,能测量高频、工频、 直流等各种波形电流。该传感器具有测量精度高、电压范围宽、功耗小、输出功率大等 优点,广泛应用在高速计数、测频率、测转速等领域。输出电压 425V,
13、直流电源要有 足够的滤波电容,测量极性为 N 极。安装时将一非磁性圆盘固定在电动机的转轴上,将 磁钢粘贴在圆盘边缘,磁钢采用永久磁铁,其磁力较强,霍尔元件固定在距圆盘 1-10mm 处。当磁钢与霍尔元件相对位置发生变化时,通过霍尔元件感磁面的磁场强度就会发生 变化。圆盘转动,磁钢靠近霍尔元件,穿过霍尔元件的磁场较强,霍尔元件输出低电平; 当磁场减弱时,输出高电平,从而使得在圆盘转动过程中,霍尔元件输出连续脉冲信号。 这种传感器不怕灰尘、油污,在工业现场应用广泛。 2.3.2 转速测量原理 霍尔器件是由半导体材料制成的一种薄片,器件的长、宽、高分别为 l、。 若在垂直于薄片平面(沿厚度 )方向施
14、加外磁场,在沿方向的两个端面加一外电 场,则有一定的电流流过。由于电子在磁场中运动,所以将受到一个洛仑磁力,其大小 为: qVBf 式中:f洛仑磁力, 载流子电荷, 载流子运动速度, 磁感应强度。 基于霍尔传感器的转速测量系统设计 7 这样使电子的运动轨迹发生偏移,在霍尔元器件薄片的两个侧面分别产生电子积聚 或电荷过剩,形成霍尔电场,霍尔元器件两个侧面间的电位差 称为霍尔电压。HU 霍尔电压大小为: (mV) HURdBI/ 式中: 霍尔常数, 元件厚度, 磁感应强度, 控制电流HR 设 , 则 = (mV)Kd/KI/ 为霍尔器件的灵敏系数(mV/mA/T),它表示该霍尔元件在单位磁感应强度
15、和单位 控制电流下输出霍尔电动势的大小。应注意,当电磁感应强度反向时,霍尔电动势 也反向。图 2.3 为霍耳元件的原理结构图。 若控制电流保持不变,则霍尔感应电压将随外界磁场强度而变化,根据这一原理, 可以将两块永久磁钢固定在电动机转轴上转盘的边沿,转盘随被测轴旋转,磁钢也将 跟着同步旋转,在转盘附近安装一个霍尔元件,转盘随轴旋转时,霍尔元件受到磁钢 所产生的磁场影响,输出脉冲信号。传感器内置电路对该信号进行放大、整形,输出 良好的矩形脉冲信号,测量频率范围更宽,输出信号更精确稳定,已在工业,汽车, 航空等测速领域中得到广泛的应用。其频率和转速成正比,测出脉冲的周期或频率即 可计算出转速。 图
16、 2.3 霍耳元件的原理结构图 3 系统硬件电路设计 3.1 单片机主控电路设计 系统选用 STC89C51 作为转速信号的处理核心。STC89C51 包含 2 个 16 位定时/计 数器、4K8 位片内 FLASH 程序存储器、4 个 8 位并行 I/O 口。16 位定时/计数器用于 实现待测信号的频率测量。8 位并行口 P0、P2 用于把测量结果送到显示电路。4K8 位 片内 FLASH 程序存储器用于放置系统软件。STC89C51 与具有更大程序存储器的芯片管脚 基于霍尔传感器的转速测量系统设计 8 兼容,如:89C52(8K8 位)或 89C55(32K8 位),为系统软件升级打下坚实
17、的物质基础。 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 位定时
18、器/计数器; 一个片内震荡器及时钟电路; 计数脉冲输入 T0 T1 P0 P1 P2 P3 TXD RXD 0INT1 中断输入 图 3.1 STC89C51 单片机结构框图 STC89C51系列单片机中HMOS工艺制造的芯片采用双列直插(DIP)方式封装,有40个引 脚。STC89C51单片机40条引脚说明如下: (1)电源引脚。V 正常运行和编程校验 (8051/8751)时为 5V 电源,V 为接地端。C S (2)I/O 总线。P - P (P0 口) ,P - P (P1 口) ,P - P (P2 口) ,0.7.0.17.0.27. P - P (P3 口)为输入/输出引线。0.
19、37. 时钟源 CPU 串行接口并行 I/O 接口 中断系统 特殊功能寄 存器 SFR 128 字节 RAM 定时/计数 器 T0、T1 4K ROM(EPROM ) (8031 无) 基于霍尔传感器的转速测量系统设计 9 (3)时钟。 XTAL1:片内震荡器反相放大器的输入端。 XTAL2:片内震荡器反相放器的输出端,也是内部时钟发生器的输入端。 (4)控制总线。 由 P3 口的第二功能状态和 4 根独立控制线 RESET、EA、ALE、PSEN 组成。 值得强调的是,P3 口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。如 表 3.1 所示。 表 3.1 P3 口线的第二功能定义
20、: STC89C51 单片机的片外总线结构: 地址总线(AB):地址总线宽为 16 位,因此,其外部存储器直接寻址为 64K 字节,16 位地址总线由 P0 口经地址锁存器提供 8 位地址(A0 至 A7) ;P2 口直接提供 8 位地址(A8 至 A15) 。 数据总线(DB):数据总线宽度为 8 位,由 P0 提供。 控制总线(CB):由 P3 口的第二功能状态和 4 根独立控制线 RESET、EA、ALE、PSEN 组成。 3.2 脉冲产生电路设计 LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电 源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的
21、工作条件下,电源 电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单 电源供电的使用运算放大器的场合。 LM358 的封装形式有塑封 8 引线双列直插式和贴片式。 特性: P3 口引脚及线号 引脚 第二功能 P3.0 (10) RXD 串行输入口 P3.1 (11) TXD 串行输出口 P3.2 (12) INT0 外部中断 0 P3.3 (13) INT1 外部中断 1 P3.4 (14) T0 定时器 0 外部输入 P3.5 (15) T1 定时器 1 外部输入 P3.6 (16) WR 外部数据存储器写脉冲 P3.7 (17) RD 外部数据存储器读脉冲 基于霍
22、尔传感器的转速测量系统设计 10 3 2 6 7 4 LM324 3 2 6 7 4 LM324 3 2 6 7 4 LM358 R11K R2 1K R310K R4 1K R6 10K R5 10K Rf10K +15V +15V -15V -15V -15V +15V U0 +15V Port 内部频率补偿 直流电压增益高(约 100dB) 单位增益频带宽(约 1MHz) 电源电压范围宽:单电源(330V) 双电源(1.5 一15V) 低功耗电流,适合于电池供电 低输入偏流 低输入失调电压和失调电流 共模输入电压范围宽,包括接地 差模输入电压范围宽,等于电源电压范围 输出电压摆幅大(0
23、至 Vcc-1.5V) 如图 3.2 所示,信号预处理电路为系统的前级电路,其中霍尔传感元件 b,d 为两电 源端,d 接正极,b 接负极;a,c 两端为输出端,安装时霍尔传感器对准转盘上的磁钢,当 转盘旋转时,从霍尔传感器的输出端获得与转速率成正比的脉冲信号,传感器内置电路 对该信号进行放大、整形,输出良好的矩形脉冲信号,图中 LM358 部分为过零整形电路 使输入的交变信号更精确的变换成规则稳定的矩形脉冲,便于单片机对其进行计数。 b c H d a 图 3.2 信号预处理电路 3.3 按键电路设计 通过软件设置按键开关功能: 按 K0 清零、复位 按 K1 显示计时时间 基于霍尔传感器的
24、转速测量系统设计 11 按 K2 显示计数脉冲数 此按键电路为低电平有效,当无按键按下时,单片机输入引脚 P1.0、P1.1、P1.2、P1.3 端口均为高电平。当其中任一按键按下时,其对应的 P1 端口变 为低电平,在软件中利用这个低电平设计其功能。软件中还设置了按键防抖动误触发功 能,软件中设置定时器 1 50ms 中断一次,每次中断都对按键进行扫描,如果扫描到有 按键按下,则延迟 10ms,再次进行键扫描,若仍有按键按下,则按键为真,并从 P1 口读 取数据,低电平对应的即为有效按键,如图 3.3 所示。 图 3.3 按键电路图 3.4 数据显示电路设计 3.4.1 数码管结构和显示原理
25、 图 3.4 为数码管的引脚接线图,实验板上以 P0 口作输出口,经 74LS244 驱动,接 8 只共阳数码管 S0-S7。表 3.2 为驱动 LED 数码管的段代码表为低电平有效,1-代表对应的 笔段不亮,0-代表对应的笔段亮。若需要在最右边(S0)显示“5” ,只要将从表中查得 的段代码 64H 写入 P0 口,再将 P2.0 置高,P2.1-P2.7 置低即可。设计中采用动态显示, 所以其亮度只有一个 LED 数码管静态显示亮度的八分之一。 表 3.2 驱动 LED 数码管的段代码 d p e c g b f a 十六进制数字 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2
26、 P0.1 P0.0 共阴 共阳 0 1 0 1 1 0 1 1 1 B7 48 1 0 0 0 1 0 1 0 0 14 EB 2 1 0 1 0 1 1 0 1 AD 52 3 1 0 0 1 1 1 0 1 9D 62 4 0 0 0 1 1 1 1 0 1E E1 5 1 0 0 1 1 0 1 1 9B 64 6 1 0 1 1 1 0 1 1 BB 44 7 0 0 0 1 0 1 0 1 15 EA 基于霍尔传感器的转速测量系统设计 12 8 1 0 1 1 1 1 1 1 BF 40 9 1 0 0 1 1 1 1 1 9F 60 图 3.4 数码管的引脚接线 这里设计的系统先
27、用 6 位 LED 数码管动态显示小型直流电机的转速。当转速高于六 位所能显示的值(999999)时就会自动向上进位显示。 3.4.2 缓冲器 74LS244 系统总线中的地址总线和控制总线是单向的,因此驱动器可以选用单向的,如 74LS244。74LS244 还带有三态控制,能实现总线缓冲和隔离,74LS244 是一种三态输出的 八缓冲器和线驱动器,该芯片的逻辑电路图和引脚图如图 3.5 所示。 从图可见,该缓冲器有 8 个输入端,分为两路1A11A4,2A12A4。同时 8 个输 出端也分为两路1Y11Y4,2Y12Y4,分别由 2 个门控信号 1G 和 2G 控制,/1G, /2G 三态
28、允许端(低电平有效)。当 1G 为低电平时,1Y11Y4 的电平与 1A11A4 的电平 相同,即输出反映输入电平的高低;同样,当 2G 为低电平时,2Y12Y4 的电平与 2A12A4 的电平相同。而当 1G(或 2G)为高电平时,输出 1Y11Y4(或 2Y12Y4)为 高阻态。经 74LS244 缓冲后,输入信号被驱动,输出信号的驱动能力加大了。74LS244 缓 冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器和定向发送器 等。常用的缓冲器还有 74LS240,241 等。 基于霍尔传感器的转速测量系统设计 13 图 3.5 74LS244 逻辑电路图 74LS244
29、的极限参数如下: 电源电压 7V 输入电压 5.5V 输出高阻态时高电平电压 5.5V 利用上述器件设计的显示电路如图 3.6 所示。8 个共阳的 LED 数码管(S0-S7)同名 的引脚连接在一起,由单片机 P0 口通过 74LS244 驱动(段控制) ,R12-R19 为限流电阻。 单片机 P2 口的 8 个引脚分别通过三极管 Q0-Q7 控制 8 个 LED 数码管的公共端(位控制) 。 单片机的主时钟为 12MHz。 P0 口 和 P2 口都是准双向口,输出时需要接上拉电阻。P0 内部没有上拉电阻,P2 口内部有弱上拉。所以 P0 口外围电路设计为低电平有效,高电平无效。要使数码管 S
30、0- S7 的其中一个亮,其对应的 P2 端口要置高,P2 的其余端口置低。如要让 S0 数码管亮, 则要将 P2.0 置高,P2.1-P2.7 置低即可。 系统将定时把显示缓冲区的数据送出,在数码管 LED 上显示。 图 3.6 显示电路 3.5 稳压电源设计 如图 3.7 所示为 5-12V 连续可调稳压电源,采用 L4960 芯片制作的输出电流可达 10A,输出电压在 512V 间连续可调,是一个实用的开关型稳压电源。其工作原理为: 220V 交流电源经变压器 T1 降压,桥堆 VD1 整流,C1、C2 滤波后得到一直流电压。 IC 第、脚为直流电压输入端,其最高输入电压为+40V。该直
31、流电压经 IC 内部的 振荡器调制为 200kHz 左右的高频开关电压,振荡器的开关频率由外接振荡电容器 C4 决 定。当 C4 的值取为 3300pF 时,电源的开关频率约为 200kHz;R3、C6 为环路调节放大器 的频率补偿网络,由第 7 脚输入。IC 第脚为抑制输入端,其闭锁电压的阈值为 0.7V, 输出电压经取样电阻 R2 反馈至第脚后与 R1 比较,当阈值电压大于 0.7V 时,输出关闭, 起到短路过流保护作用。第 6 脚为输出电压调节控制端,由电位器 RP1 及电阻 R4 将输出 电压分压后得到调节电压检测值,调节电位器 RP1 可控制输出电压的大小,输出电压值 可由公式:VO
32、=Vref 进行估算。其中,Vref 为基准电压,为 2.1V。4/1RLh IC 为专用开关型稳压集成电路 L4960,其外壳接地并接散热器。IC 外围电路中,除 振荡电容 C4 选择高频电容器外,电阻 R1、R2 应选择允许偏差1的高精度金属膜电阻 外,其余元件无特殊要求,按图中参数选取小型器件即可。由于输出电压为高频开关式, 基于霍尔传感器的转速测量系统设计 14 因此 IC 和功率三极管 VT 所需的散热器仅为普通稳压电源的三分之一,且性能远远高于 普通的稳压电源。 图 3.7 5-12V 连续可调稳压电源电路 3.6 串行通信模块设计 STC89C51 单片机有一个全双工的串行通信口
33、,以便于单片机和电脑之间进行串口通 信。为了与计算机进行通讯,设计了 RS232 串行通信接口,将该接口与 PC 机的串口连接, 可以实现单片机与 PC 机的串行通信,进行双向数据传输。进行串行通信要满足一定的条 件,比如电脑的串口是 RS232 电平(-5 至-15V 为 1,+5 至+15V 为 0) ,而单片机的串口 是 TTL 电平(大于+2.4V 为 1,小于+0.7V 为 0) ,两者之间必有一个电平转换电路,图 3.8 用 MAX232 集成电路实现 RS232 电平与 TTL 电平的相互转换。此串行通信功能模块完 成源程序代码下载到 STC89C51 芯片中,它需要和微机上的
34、ISP 下载器软件配合使用来完 成这样的功能。系统总电路为以上硬件各功能模块的有机结合,如图 3.9 所示。 图 3.8 MAX232 串行通信 基于霍尔传感器的转速测量系统设计 15 图 3.9 系统总电路 4 系统软件设计 本设计软件主要为主程序、数据处理显示程序、按键程序设计、定时器中断服务程 序四个部分。 (1)主程序主要完成初始化功能,包括 LED 显示的初始化,中断的初始化,定时器的初 始化,寄存器、标志位的初始化等。主程序流程图如图 4.1 所示。 (2)数据处理显示模块程序。此模块中单片机对在 1 秒内的计数值进行处理,转换成 r/min 送显示缓存以便显示。具体算法如下:设单
35、片机每秒计数到 n 个值,即 n/2 (r/s) (圆盘贴两个磁钢)。则 n/2 (r/s)=30n(r/min)。即只要将计数值乘以 30 便可得到每分钟 电机的转速。数据处理显示模块流程图如图 4.2 所示。 基于霍尔传感器的转速测量系统设计 16 开 始LED显 示 缓 存初 始 化时 钟 寄 存 器 初 始 化 定 时 器 中 断 初 始 化LED显 示 初 始 化调 用 数 据 处 理 程 序 调 用 显 示 子 程 序调 用 按 键 处 理 程 序 秒标志位 f l a g = 1 处理转速 , 转换成 r / m i n 转速的 1 6 进制数转换成 1 0 进制 B C D 码
36、 送显示缓冲器 返回 图 4.1 主程序流程图 图 4.2 数据处理显示模块流程图 读 P1口取 有 效 按 键 位判 断 有 无 键 按 下 ? 延 时 10ms 判 断 按 键 存 在 否 ?P1.0=? 清 零 , 复 位P1.=0? 显 示 时 间 返 回 YN N YNY P1.2=0?显 示 转 速YNYN 键 扫 描 基于霍尔传感器的转速测量系统设计 17 图 4.3 按键程序流程图 (3)按键程序设计。按键程序包括按键防抖动处理、判键及修改项目等程序。按键 流程图如图 4.3 所示。 (4)定时器 1 中断服务程序设计。定时器 1 完成计时功能,定时 50ms,进行定时中 断计
37、数并每隔 1s 更新一次显示数据。流程图如图 4.4 所示。 基于霍尔传感器的转速测量系统设计 18 重 置 定 时 初 值入 栈 保 护 50ms计 数 标 志 timecount加 1timecount=20? 读 取 TH0计 数 值出 栈 恢 复 返 回 NY 图 4.4 定时器 1 中断服务程序流程图 5 制作调试 5.1 硬件调试 硬件调试时先分步调试硬件中各个功能模块,调试成功后再进行统调。安装固定电机 和霍尔传感器时,粘贴磁钢需注意,霍尔传感器对磁场方向敏感,粘贴之前可以先手动 接近一下传感器,如果没有信号输出,可以换一个方向再试。 霍尔传感器探头要对准转盘上的磁钢位置,安装距
38、离要在 10mm 以内才可灵敏的感应 磁场变化。在磁场增强时霍尔传感器输出低电平,指示灯亮;磁场减弱时输出高电平, 指示灯熄灭。当电机转动时,感应电压指示灯高频闪烁,所以视觉上指示灯不会有多大 的闪烁感。当给 NJK 8002D 型霍尔传感器施加 15V 电压时其输出端可以输出 4V 的感应电 读 P1口取 反 后 取 有 效 按 键 位 判 断 有 无 键 按 下 ?延 时 10ms防 抖 再 读 键 判 断判 断 按 键 存 在 否 ? P1.0=? P1.0=1? 相 应 项 目 设 定P1.=0? 设 置 修 改 项 目 返 回 YN N YY Y NN Y 基于霍尔传感器的转速测量系
39、统设计 19 压。输出幅值为 4V 的矩形脉冲信号。 LM358 整形电路调试:在焊接硬件电路时需细心排除元器件和焊接等方面可能出现的 故障,元器件的安装位置出错或引脚插错都可能导致电路短路或实现不了电路应有的功 能,甚至烧坏元器件。为方便调试,用信号发生器产生的 1KHz 的正弦信号送给 LM358 整 形电路,调试直到可以输出矩形脉冲信号为止,该整形电路调试即可完成。然后以此信 号为测试信号送给单片机系统,进行测量、显示等其他功能的调试。 5.2 软件调试 测量系统与 PC 机连接时一定要先连接串行通信电缆,然后再将其电源线插入 USB 接 口;拆除时先断开其电源,再断开串行通信电缆,否则
40、极易损坏 PC 机的串口。 在进行软件编程调试时需要用到单片机的集成开发环境 MedWin V2.39 软件,编程时 极易出现误输入或其他的一些语法错误,最重要的还有一些模块无语法错误却达不到预 期的功能,都要经过调试才能排除。MedWin V2.39 软件具有很强大的编程调试功能,能 够模拟仿真实际单片机的端口和内部功能部件的状态值。该软件中有硬件调试和软件调 试功能,可以观察单片机内存单元对应的运行值,可以显示单片机端口、中断、定时器 1、定时器 2 还有串口对应的运行值。可以单步调试也可以模块调试,最好的是可以对你 所怀疑的语句模块设置断点。MedWin V2.39 具有的强大的编译调试
41、功极大地方便了对软 件部分的调试。在具体调试过程中,系统将各功能模块如数据处理程序、按键程序设计、 中断服务子程序、LED 显示程序分别分开进行调试,最后进行主程序的整体调试。编译无 误后生成目标代码 BIN 文件 采用 STC 单片机下载软件 STC-ISP 将其下载到实验板的单片机中。下载软件的最后 一步:点击软件 STC-ISP 界面中的下载按钮,在点击前一定要保持实验板的串行通信 线及电源线与 PC 机连接良好,并且实验板的电源开关处于关闭状态,然后点击下载按 钮,再打开实验板电源开关,此时软件将自动完成程序下载。最后将硬件和软件结合起 来整体调试实现系统的测速功能。 6 测试结果分析
42、 设计基本完成题目中的各项要求,其中电机转速的测量比较精确,与实际转速相差 10 转/分左右,精度在全量程范围内优于 10 转/分,存在一定的误差,经分析主要是由 以下原因造成: 1)由于电机的转盘是采用塑料盘片磨制而成,高速旋转时容易打飘不稳,导致获得 基于霍尔传感器的转速测量系统设计 20 的脉冲信号频率与实际转速有一定的误差。 2) 中断处理的进入和中断处理程序都会有一定时间的误差,从而导致定时时间的误 差,这也是造成测量误差的一个因素。 3)在固定装置时,由于是手动操作,从而导致初始获得信号有一定的时差。 基于霍尔传感器的转速测量系统设计 21 结 论 霍尔传感器具有不怕灰尘、油污,安
43、装简易,不易损坏等优点,在工业现场得到了 广泛应用。利用霍尔传感器设计的转速测量系统以单片机 STC89C51 为数据处理核心, 采用定时器定时中断的方法实现计数,对测量数据进行计算得到转速数据,并将结果送 数码管显示。整个测量系统硬件电路简单,容易调试,软件部分编程采用 C51,有较高的 编程效率。测试结果表明对电动机转速的测量精度较高,基本能够满足实际的测试需要, 有一定的实际应用价值。 基于霍尔传感器的转速测量系统设计 22 参 考 文 献 1何希才,薛永毅.传感器及其应用实例M.北京:机械工业出版社,2004.1 2谭浩强.C 程序设计(第二版)M.北京:清华大学出版社,1999 3谢
44、嘉奎,宣月清,冯军 . 电子线路M.北京:高等教育出版社,2004 4康华光 .电子技术基础M.北京:高等教育出版社,2004 5胡斌 . 图表细说电子元器件M.北京:电子工业出版社,2004.5 6德克劳斯贝伊特.电子元件M. 北京:科学出版社,1999.8 7余锡存,曹国华.单片机原理与接口技术M .西安:西安电子科技大学出版社,2000.7 基于霍尔传感器的转速测量系统设计 23 致谢 附录 A 部分程序清单: /=源代码 _HYTC= #include 基于霍尔传感器的转速测量系统设计 24 #include - #include #define uchar unsigned char
45、 #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 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=
46、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,0x64,0x44,0xea,0x40,0x60,0xff,0xbf; uchar dispbuf8=0,0,0,0,0,0,10,10; uchar temp8; uchar dispcount; uchar T0count; uc
47、har 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)%256; ET0=1; ET1=1;/TH0,1 溢出允许中断 EA=1;/允许中断 TR1=1; TR0=1;/开始计数 while(1) if(flag=1) flag=0; 基于霍尔传感器的转速
48、测量系统设计 25 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; TH0=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=2