基于51单片机和霍尔开关传感器的转速测量仪
基于霍尔传感器的电机转速测量系统设计讲解
摘要在当今工业生产过程中,越来越多的场合需要测量电机的转速,转速已成为电机最重要的工作参数之一。
测量转速的方法有许多,最常用的两种方法为:光电式传感器测转速,霍尔式传感器测转速。
本文将着重介绍基于单片机的霍尔式传感器测量转速。
关键词:霍尔传感器,单片机,转速。
目录1引言 (2)2设计要求 (2)3方案论证 (2)3.1测量方法的选型 (3)3.2核心处理模块的方案 (3)3.2.1控制芯片的选型 (3)3.2.2采用51单片机测量的方案论证 (4)3.2.3软件系统设计方案 (4)3.3电机转速测量模块的方案 (5)3.4电机转速控制方案 (5)3.5显示模块方案 (6)4系统设计 (6)4.1单片机模块 (6)4.1.1 51单片机介绍 (6)4.1.2系统的复位电路 (8)4.1.3系统时钟电路设计 (8)4.1.4 IO口管脚分配 (9)4.2电机转速控制 (9)4.3显示模块 (10)4.3.1 LCD1602介绍和指令 (10)4.3.2LCD1602的工作时序 (13)4.4霍尔传感器模块 (13)5.软件系统设计 (14)5.2程序模块 (15)5.2.1数据采集处理部分和PWM输出部分 (15)5.2.2 LCD1602显示部分 (16)参考文献 (17)原理图 (18)1.引言转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,速度测量的精度直接影响系统的控制情况,它是关系测控效果的一个重要因素。
不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。
本系统以AT89C51单片机为控制核心,用霍尔传感器作为测量小型直流电机转速的检测元件,经过单片机实时数据处理,用LCD1602显示小型直流电机的转速。
本系统可对转速0—3000r/min 进行高精度测量。
且还可扩展更宽的测量范围。
2.设计要求基于霍尔传感器的电机转速测量系统设计,测量范围:0-3000转/分,测量精度:±3转/分,实时显示。
基于51单片机的直流电机转速测控系统设计
基于51单片机的直流电机转速测控系统设计0 引言目前使用的电机模拟控制电路都比较复杂,测量范围与精度不能兼顾,且采样时间较长,难以测得瞬时转速。
本文介绍的电机控制系统利用PWM 控制原理,同时结合霍尔传感器来采集电机转速,并经单片机检测后在显示器上显示出转速值,而单片机则根据传感器输出的脉冲信号来分析转速的过程量,并超限自动报警。
本系统同时设置有按键操作仪表,可用于调节电机的转速。
1 系统方案的制定直流电机控制系统主要是以C8051 单片机为核心组成的控制系统,本系统中的电机转速与电机两端的电压成比例,而电机两端的电压与控制波形的占空比成正比,因此,由MCU 内部的可编程计数器阵列输出PWM 波,以调整电机两端电压与控制波形的占空比,从而实现调速。
本系统通过霍尔传感器来实现对直流电机转速的实时监测。
系统的设计任务包括硬件和软件两大部分,其中硬件设计包括方案选定、电路原理图设计、PCB 绘制、线路调试:软件设计包括内存空间的分配,直流电机控制应用程序模块的设计,程序调试、软件仿真等。
2 硬件设计C8051 是完全集成的混合信号系统级MCU 芯片,具有64 个数字I/O 引脚,片内含有VDD 监视器、看门狗定时器和时钟振荡器,是真正能独立工作的片上系统,并能快捷准确地完成信号采集和调节。
同时也方便软件编程、干扰防制、以及前向通道的结构优化。
本单片机控制系统与外部连接可实时接收到外部信号,以进行对外部设备的控制,这种闭环系统可以较准确的实现设计要求,从而制定出一个合理的方案,图1 所示是电机测控系统框图。
本系统先由单片机发出控制信号给驱动电机,同时通过传感器检测电机的转速信号并传送给单片机,单片机再通过软件将测速信号与给定转速进行比较,从而决定电机转速,同时将当前电机转速值送LED 显示。
此外,也可以通过。
基于霍尔传感器的电机转速测量
基于霍尔传感器的电机转速测量发布时间:2021-05-28T09:38:57.652Z 来源:《电力设备》2021年第2期作者:沈俊杰程海玉[导读] 本文设计了一种根据51单片机和霍尔传感器的直流电机转速测量系统来测量电机的转速。
(嘉兴学院南湖学院浙江嘉兴 314001)摘要:在生活的过程中,许多地方都应用到了电机,但伴随着生活的不断进步、需求的不断扩大,老式的电机转速测量已经不能满足其扩张的需要,所以,对电机转速的测量提出了非常高的要求。
对电机转速的精确测量也是保证电动机正常运行的必要因素之一。
以为了更好的测量电机的转速保证电动机能良好工作,本文设计了一种根据51单片机和霍尔传感器的直流电机转速测量系统来测量电机的转速。
本文主要应用了霍尔传感器的工作原理和设计理念,结合现实器件设计组装,采用脉冲计数法实现转速的测量,详细阐述了霍尔传感器测速系统的工作过程及原理,采用分布组装的方法进行软件设计,通过液晶显示屏直接显示电机的转速值来设计了测量模块、速度模块、报警模块和显示模块的C51程序,并用Proteus软件进行了仿真测试。
前言:改革开放前,我国的电机工业生产十分不堪,全国只有少数几个工厂有制造和组装电机的能力,现如今也只是出于起步阶段,虽然已有了自己的电机工业体系,但是在电机转速测量方面还是有所欠缺,不同的公司都有不同的测试方法。
我国大部分企业主要采用手工检测,较少的企业同时采用自动检测,但仅仅是这样还是不够的。
我们的设计构想的第一步是用单片机来识别电机的脉冲信号是测量其转速。
第二步是用霍尔器件作为测速系统中的传感器,采用霍尔器件有众多优点,适应性强、测量范围大、且价格便宜。
因此本文采用霍尔传感器来检测电机产生的脉冲信号。
测速原理:测速方法很多。
根据脉冲计数测量速度的方法有三种:M法(频率测量法)、T法(周期测量法)和MPT法(频率周期法)。
本文主要采用M法(测频法)。
由于速度是用单位时间的转数来表示的,所以它一般是变换过程中有规律的重复运动。
(完整版)基于51单片机和霍尔开关传感器的转速测量仪毕业论文
基于51单片机和霍尔传感器的转速测量仪摘要系统由传感器、信号处理、系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号;信号处理电路(反相器74LS14)包含待测信号整形反相等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTLCMOS兼容信号。
处理器采用51单片机,显示器采用单片机开发板自带的8位LED数码管动态显示。
课题背景在工农业生产和工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。
模拟式采用测速发电机为检测元件,得到的信号是模拟量,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难。
数字式通常采用光电编码器、圆光栅、霍尔元件等为检测元件,得到的信号是脉冲信号。
单片机技术的日新月异,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法,使得许多控制功能及算法可以采用软件技术来完成。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
本课题,是要利用霍尔传感器来测量转速。
由磁场的变化来使霍尔传感器产生脉冲,由单片机计数,经过数据计算转化成所测转速,再由数码管显示出来。
1.硬件部分概述1.1系统组成框图系统框图原理如图1-1所示,系统由传感器、信号处理、数码管显示、蜂鸣器超速报警和系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号。
信号处理电路反相器74LS14)包含待测信号波形变换、波形整形等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTLCMOS兼容信号。
处理器采用51单片机,显示器采用8位LED数码管动态显示。
1.2霍尔传感器测转速原理及特性霍尔传感器是对磁敏感的传感元件,由磁钢、霍耳元件等组成。
测量系统的转速传感器选用SiKO 的jk8002c的霍尔传感器,其响应频率为100KHz,额定电压为5-30(V)、检测距离为10(mm)。
基于51单片机测电机转速的设计
基于51单片机测电机转速的设计[摘要]:本课题设计了一种基于单片机的电子测速仪,测速仪以89C51为数据处理主控芯片。
测速仪的主要组成部分:霍尔传感器、以89C51芯片为核心的密码锁的数据处理与控制电路、输出显示电路。
另外系统还有LED报警灯,单片机复位电路等。
测速电路的关键问题是物理信号到电信号的转换,以及脉冲的产生、报警与复位。
同时该测速仪具有低能耗、体积小、使用方便,非接触等优点,具有很强的使用价值[关键词]:单片机;测速仪51 singlechip design of measurement of motor speed based onAbstract:This project is to design a kind of electronic measurement instrument based on single chip microcomputer, velocimetry using 89C51 as main control chip data processing.Main components: Holzer velocimetry sensors, taking the 89C51 chip as the corecryptographic data processing and control circuit, the lock output display circuit.Another system and LED warning lamp, microprocessor reset circuit etc.. The keyproblem of conversion speed measuring circuit is a physical signal to electrical signal,and the pulse generation, alarm and reset. At the same time, the instrument has theadvantages of low energy consumption, small volume, convenient use, non - contactand other advantages, has the very strong use valueKeywords:MCU; velocimetry目录第一章绪论 (3)1.1测速仪的背景与分类 (3)1.2测速仪的运用于发展 (3)1.3本设计的意义与要求.................................................. .1 第二章单片机测速仪的主要元件介绍.. (2)2.1单片机89c51的介绍 (2)2.2 霍尔元件的介绍 (5)2.3比较器LM393的介绍............................................................................. (6)第三章基于单片机测速的工作概述以及原理分析 (9)3.1基于单片机测速的工作概述 (9)3.2系统硬件总电路图............................................................................. .. (9)3.3检测电路模块............................................................................. (9)3.4复位电路模块 (10)3.5晶振电路模块 (11)3.6电源电路模块 (11)3.7显示电路模块............................................................................. (12)3.8报警电路模块............................................................................. (12)第四章单片机测速系统组成 (13)4.1转速测量系统原理框图 (13)4.2系统软件框图 (13)第五章系统软件设计 (14)5.1系统流程序 (14)5.1.1系统主程序流程图............................................................................. (14)5.1.2测速程序流............................................................................. . (15)5.1.3 显示流程图............................................................................. (16)5.2程序............................................................................. . (21)第六章单片机测速电路实物运行 (22)6.1实物整体图......................................................... .226.2 测速显示 (23)6.2.1转速显示............................................................................. (23)6.2.2低速报警显............................................................................. . (24)6.2.3高速报警显示............................................................................. (25)小结............................................................................. ............................................................................... . (26)致谢 (27)附录一单片机测速PCB原理图............................................................................. . (28)附录二单片机测速元器件清单............................................................................. .. (29)参考文献............................................................................. ............................................................................... . (30)第一章绪论1.1测速仪的分类目前测量电机转速的方法很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。
基于霍尔传感器的电机转速测量系统设计
3 . 程 序 v o i d c o u n t e r ( v o i d )i n t e r r u p t 0 { c o u n t + +: i f ( c o u n t % 6 = = 0 )/ / 6次循 环 为 电机 转 一 圈 {z s + + : / / 转圈计 数加 1 )
—
』
}
。 I ( d i s p l a y f i ] ) :/ / 1 C D显 示 / / d Ma y m S ( 5 0 O ) ‘
一
v o i d d e l a y l m s ( i n t X )/ / 延时 函数 {
i n t i , J :
/ / 5 0 m s定 时
/ / 5 0 . 2 0 = 1 5
T M O D = O x 0 1 :
T H O = T H M1 :
—
T L O = T L _ M 1 : i n i t _ L C M( ): w h i 1 e ( f b = = 0 )
i f ( 斗 + m s e c : = 2 O ) {f b = l :)
1
( 二 ) 定 时 器 中 断 l _ 工 作 过 程 T T O定时器每 1秒定时中断一次,读 取记 录的脉冲个数 。 2 . 流 程 图 如 图 6所 示 :
嘲硅
( 三 )程序 m a i n 0
{P 2 0 = I :
P 2 0 = 0:
I E = 0 x 8 3 :
{)
E A = 0:
i f ( z s > = l O 0 0 )
P 2 0 = I:
霍尔传感器电机转速测量系统设计
霍尔传感器电机转速测量系统设计09电子1班刘荣 090406130 摘要:本文介绍了霍尔传感器测速的原理,设计了基于单片机AT89C51的直流电机转速测量系统。
完成了电机转速测量系统的硬件电路设计、霍尔传感器测量电路的设计、显示电路的设计。
测量转速的霍尔传感器和机轴同轴连接,机轴每转一周,产生一定量的脉冲个数,由霍尔器件电路部分输出幅度为12V的脉冲。
经光电隔离器后成为输出幅度为5V转数计数器的计数脉冲。
控制定时器计数时间,即可实现对电机转速的测量。
在显示电路设计中,通过1602实现在LCD上直观地显示电机的转速值。
并对电机转速测量系统的硬件电路、显示电路进行了调试。
与软件配合,采用模块化方法进行了软件设计,编制了电机转速的测量设计了测量模块、转速模块、报警模块、显示模块等的C51程序,并通过PROTEUSE软件进行了仿真,实现了显示、报警功能。
仿真实验表明所设计的硬件电路及软件程序是正确的,满足设计要求。
关键词:电机转速测量;霍尔传感器;单片机;89C51;LCD液晶显示Abstract:The principles of motor speed measurements with hall sensor was described in this article and DC motor speed measurement system which is based on AT89C51 was designed, and the corresponding hardware circuit designs was also completed accordingly. The hall sensor is connected with crankshaft by coaxial junction. Every revolution of the crankshaft will generate a certain amount of pulses whose amplitude is 12v. The opto-coupler turns these certain amount of pulses into 5-amplitude count impulse. The motor speed can be measured by controlling the time. In the design of display circuit, the number of motor speed is displayed in LCD directly through 1602. The motor speed measurement system and the hardware circuits, display circuit function are debugged to cooperate with the software to display and alarm users. Combination of hardware circuit design, softwares were designed by a modular approach using C51 program, such as the motor speed measurement module, alarm module, display module etc., All these programs were simulated through PROTEUSE.The simulation results have proved that the hardware circuits design and software program is correct, and the system can meet the designing requirement completely.Key WordS: Motor Speed Measurement; Hall Sensor; Microcomputer; 89C51;LCD正文根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件。
基于霍尔传感器的测速仪设计毕业设计论文
基于霍尔传感器的测速仪设计【摘要】霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。
使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。
这种传感器不怕灰尘、油污,在工业现场应用广泛。
【关键词】传感器原理;检测技术;检测速度;一、测速仪功能简介测速是工农业生产中经常遇到的问题,测速仪表具有很重要的意义。
要测速,首先要解决是采样的问题。
在使用模拟技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。
使用单片机技术进行测速,可以采用简单的脉冲计数法。
只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数,即可获得转速的信息。
二、霍尔传感器介绍霍尔传感器是对磁敏感的传感元件,常用于开关信号采集的有CS3020、CS3040等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。
如图1所示是CS3020的外形图,将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。
如图1所示,这种传感器不怕灰尘、油污,在工业现场应用广泛。
图1 CS3020三、基于霍尔传感器的测速仪系统设计1、系统总体结构基于霍尔传感器的测速仪系统总体结构如图2所示:图2基于霍尔传感器的测速仪系统结构图2、信号获取电路图3是测速电路的信号获取部分,在电源输入端并联电容C6用来滤去电源尖啸,使霍尔元件稳定工作。
HR3020表示霍尔元件,采用3020,在霍尔元件输出端(引脚3)与地并联电容C7滤去波形尖峰,再接一个上拉电阻R15,然后将其接入LM393的引脚3。
转速测量系统设计基于51单片机的转速测量系统
由专业人员将敏感元件和相应的测量电路、传递机构以适当的形式制成不同类型、不同用处的传感器,根据原理输出电量。该电量可以是模拟量或数字量,现代传感器还可以输出开关量,用于数字逻辑电路。
(3)通过测量仪表拾取被测信号
目前有许多测量仪表用于各种测量中,有大信号输出、有BCD码输出等,但价格昂贵,专业性强,一般不适合通用系统。通用的转速测量系统大都采用一种俗称“码盘”的传感装置,将圆形的码盘固定在转轴上,码盘上有若干规则排列的小孔,用光电偶来输出电信号,以反映转速对应关系,即是将转轴的速度以脉冲形式反映出来,通常有计要求,在系统工作原理的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。
摘要
本文是基于51单片机的转速测量系统,其测量方法较多,随着单片机对脉冲信号的处理能力越来越强大,使得全数字量系统越来越普及,并且使转速测量系统也可以用全数字化处理。
本设计利用霍尔效应对旋转物体进行检测的转速测量系统。该系统采用UGN3144霍尔传感器把转速信息转换为电压输出,输出电压经整形电路送入STC89C51单片机进行数据处理并用四位7段LED显示器显示测量结果。文中首先阐述了构成该系统的原理、硬件的实现方法,在该系统中对信号频率进行测量是首要任务,通过各种测量方法的对比下,该系统应采用测频法测量。其次,在软件设计部分,此系统包含系统初始化程序的设计、数据接收和处理程序的设计、显示程序的设计三个模块。最终,给出各部分的原理框图、电路图及转速测量的程序流程图,并编出其具体的程序。
3.单片机
单片机是整个测量系统的主要部分,担负对前端脉冲信号的处理、计算、以及信号的同步,计时等任务,其次,将测量的数据经计算后,将得到的转速值传送到显示接口中,用数码管显示数值。在本系统中考虑到计数的范围、使用的定时,计数器的个数及I/O口线,预选用89C51单片机。具体工作情况在后讨论。
基于51单片机和霍尔传感器的测速
基于51单片机和霍尔传感器的测速1. 小项目简介主要采用stc89c51/52单片机作为主控,由霍尔传感器作为测速的基本模块,采用按键控制速度快慢,数码管显示当前速度。
最后成品图如下:2.电源部分1.电源供电的功率尽可能的稍微大一些,我是采用罗马仕充电宝供电(5V,2.1A输出口)。
因为电源功率过小,将造成电机无法带动,或者数码管闪烁等硬件上的bug。
2.如果电源的电压高于5V,需要在电源输入端使用一个稳压电路,将输入电压稳压到5V给单片机,和其他外设供电。
防止电压过高造成器件损坏。
3.硬件部分1. stc89c51/52的最小系统注意:如果使用一般的USB接口供电,当电机转动时候,可能照成单片机的管脚供电不稳定,所以需要在单片机的IO的外接上拉排阻。
P3口不需要。
9针排阻如下:有小点的一端是公共端,需要和电源5V连接,其余口和单片机管脚一一对应焊接就行。
2. 霍尔传感器注意引脚,窄的一面来看引脚顺序:这里的VOUT口可以直接连接单片机的外部中断1口,可以经过一个电压比较器lm393之类的在给单片机。
3. 直流电机马达驱动51单片机的IO口输出的电流过小,驱动直流电机马达效果不明显,达不到后期变速,需要使用一个三极管(9015\9013这类都可以)放大电路去驱动马达:示范电路如下:(电阻根据自己需要修改)4. 共阴数码管//数码管位选sbit S1=P2^4;sbit S2=P2^5;sbit S3=P2^6;sbit S4=P2^7;//数码管段选:P1的八个IO口。
连线的时候一定根据下列图示的段选(注意注意注意:容易连错)4.软件部分1.软件工程整体图:2.main.c文件代码:自己创建一个51单片机的keil工程文件,将下面代码拷贝到自己工程文件下的main.c文件替换即可/************************************************************** ************************* 基于51单片机测速* 实现现象:按下按键K1减速按下按键K2加速外部中断1对应IO口P3^3注意事项:电机速度不能过快,否则会造成数码管显示不稳定*************************************************************** ************************/#include 'reg52.h' //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;//测试端口(根据自己需要决定)sbit led=P0^0; //将单片机的P0.0端口定义为led/************************************************************** ****************************************************核心部分**************************************************************************************************************** ************************///占空比u16 time = 0; // 定义占空比的变量u16 count=30; //定义占空比上限sbit PWM=P0^1;// P0.1输出pwm//速度u16 zhuansu=0; //转速初值为0u16 jishu = 0; //jishu的变量初值为0u8 flag = 0; //定时器1计数变量//按键sbit k1=P2^0;sbit k2=P2^1;sbit k3=P2^2;sbit k4=P2^3;//数码管位选sbit S1=P2^4;sbit S2=P2^5;sbit S3=P2^6;sbit S4=P2^7;//数码管位选:P1的八个IO口//共阴数码管段选u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值//数码管存储中间变量unsigned char Display_data[4];/************************************************************** ****************** 函数名 : delay* 函数功能 : 延时函数,i=1时,大约延时10us*************************************************************** ****************/void delay(u16 i){while(i--);}//定时器和外部中断1的初始化函数void InitSyetem(){//配置外部中断1:采集霍尔传感器触发下降沿IT1 = 1; //选择下降沿触发EX1 = 1; //打开外部中断1//定时器0,1工作方式1TMOD=0x11; //定时或者计数模式控制寄存器//定时器0配置:产生PWM波TH0=(65536-10)/256;//赋初值定时10usTL0=(65536-10)%256;//sET0=1;//开定时器0中断TR0=1;//启动定时器0//定时1:测速TH1=(65536-10000)/256;//赋初值定时10msTL1=(65536-10000)%256;ET1=1;//开定时器0中断TR1=1;//启动定时器0PX1=1;//设置优先级PT1=1;//设定定时器1为最高优先级EA=1;//开总中断}//外部1中断服务函数void Service_Int1() interrupt 2{jishu++; //霍尔下降沿一次就记一次数if(jishu == 100) //累加计数有100次,总时间为100 * 10ms = 1s{led^=led; //led闪烁}}//定时0处理函数产生PWM 调速原理———在PWM高电平时候驱动电机转动在PWM低电平时候让电机停止转动void Service_Timer0() interrupt 1{TR0=0;//赋初值时,关闭定时器TH0=(65536-10)/256;//赋初值定时TL0=(65536-10)%256;//0.01msTR0=1;time++; //计数变量if(time>=100) time= 0; //清零标志变量if(time<=count) //小于设定值,输出高电平{PWM = 1;}elsePWM = 0;}//定时器1中断处理显示转速void Service_Timer1() interrupt 3{TR1=0;//赋初值时,关闭定时器TH1=(65536 - 10000) / 256;TL1=(65536 - 10000) % 256;//定时10msTR1=1;flag++; //计数变量加if(flag==100) //计时到达1s 测量此时的转速{// led=~led; //led状态取反zhuansu = jishu; //监测霍尔传感器总共计数次数jishu=0; //转速置0flag=0; //清除计数变量}}//数码管处理函数void Deal_data(){Display_data[3]=smgduan[zhuansu/1000]; //数码管高位Display_data[2]=smgduan[zhuansu/100%10];//去第二位Display_data[1]=smgduan[zhuansu/10%10];Display_data[0]=smgduan[zhuansu%10]; //数码管低位}/************************************************************** ****************** 函数名 : DigDisplay* 函数功能 : 数码管动态扫描函数,循环扫描4个数码管显示*******************************************************************************/void DigDisplay(){u8 i;for(i=0;i<4;i++){switch(i) //位选,选择点亮的数码管,{case 0 : S1 = 0; S2 = 1; S3 = 1; S4 = 1;break; //点亮第一位数码管case 1 : S2 = 0; S1 = 1; S3 = 1; S4 = 1;break;case 2 : S3 = 0; S1 = 1; S2 = 1; S4 = 1;break;case 3 : S4 = 0; S1 = 1; S2 = 1; S3 = 1;break;}P1=Display_data[i];//发送段码delay(5); //间隔一段时间扫描时间越少,一起亮且显示越稳定;时间越多,是流水点亮P1=0x00;//消隐时间过快时,每个数码管将会有重影}}/************************************************************** ****************** 函数名 : keypros* 函数功能 : 按键处理函数,判断按键K1是否按下*************************************************************** ****************/void keypros(){if(k1==0) //检测按键K1是否按下{delay(100); //消除抖动一般大约10ms 时间的估算100*n=1(s) if(k1==0) //再次判断按键是否按下{led=~led; //led状态取反count+=10;if(count >= 90) //设置一个上限count+=90;}while(!k1); //检测按键是否松开为假时候说明按键没有释放}if(k2==0) //检测按键K1是否按下{delay(100); //消除抖动一般大约10msif(k2==0) //再次判断按键是否按下{led=~led; //led状态取反count-=10;if(count <= 10){count = 10;}}while(!k2); //检测按键是否松开}}/************************************************************** ****************** 函数名 : main* 函数功能 : 主函数* 输入 : 无* 输出 : 无*************************************************************** ****************/void main(){led = 0; //上电熄灭小灯P1 = 0x00; //上电初始化熄灭数码管InitSyetem();//定时器和外部中断1的初始化函数while(1){keypros(); //按键处理函数Deal_data(); //数据处理函数DigDisplay(); //数码管显示函数}}。
基于51单片机的光电传感器转速计设计
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char/*----1602 Part------*/sbit RS = P2^4; //定义端口sbit RW = P2^5;sbit EN = P2^6;#define RS_CLR RS=0#define RS_SET RS=1#define RW_CLR RW=0#define RW_SET RW=1#define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0/*---------ISR Part-----------*/uint timer=0,timer1=0,PWM_timer=0;/*---------KEY Part-----------*/sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;char key1_flag=0,key2_flag=0,key3_flag=0;/*---------MOTOR Part-----------*/sbit PWM=P1^4;int pwm_num=5;char exchange_flag=0; //切换显示 minute or second/*---------REV Part-----------*/sbit REV_flag=P1^5;uint grating=0; //光栅数uchar ge_num=0,shi_num=0,bai_num=0,qian_num=0,tens_num=0,percentile_num=0;/*---------MAIN Part-----------*//*------------------------------------------------ T=tx2+5 uS------------------------------------------------*/ void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------ mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/ void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------判忙函数------------------------------------------------*/ bit LCD_Check_Busy(void){DataPort= 0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0x80);}/*------------------------------------------------写入命令函数------------------------------------------------*/ void LCD_Write_Com(unsigned char com){// while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;}/*------------------------------------------------写入数据函数------------------------------------------------*/void LCD_Write_Data(unsigned char Data){//while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;}/*------------------------------------------------清屏函数------------------------------------------------*/void LCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}while (*s){LCD_Write_Data( *s);s ++;}}/*------------------------------------------------写入字符函数------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}/*------------------------------------------------初始化函数------------------------------------------------*/void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x01); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/}/*--------------KEY------------------*/void key(){if(!KEY1){DelayMs(10);if(!KEY1){pwm_num++;if(pwm_num>=19) pwm_num=19;while(!KEY1);}}if(!KEY2){DelayMs(10);if(!KEY2){pwm_num--;if(pwm_num<=1) pwm_num=1;while(!KEY2);}}if(!KEY3){DelayMs(5);if(!KEY3){exchange_flag=!exchange_flag;while(!KEY3);}}}/*-------------REV--------------*/unsigned char Trg;unsigned char Cont;void REVRead(){unsigned char ReadData = REV_flag^0xff; // 1Trg = ReadData & (ReadData ^ Cont); // 2Cont = ReadData; // 3 if(Trg==0x01){grating++; //记录光栅数目}}/*--------------ISR------------------*/ void ISR_init(){TMOD=0x01;TH0=(65536-1000)/256; //1msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;}void T0_ISR()interrupt 1{TH0=(65536-1000)/256; //1msTL0=(65536-1000)%256;PWM_timer++;timer++;REVRead();if(PWM_timer==0){PWM = 1;}if(PWM_timer==pwm_num){PWM = 0;}if(PWM_timer==20){PWM = 1;PWM_timer =0;}if(timer==1) //1ms 扫描一次{timer1++;timer=0;}if(timer1==1000) //1000ms 计算一次光栅数量{if(exchange_flag==0){ge_num=grating/20%10; //20 plus per revshi_num=grating/20%1000/100 ;bai_num=grating/20%1000/100;qian_num=grating/20%10000/1000;tens_num=grating%20/10; //十分位percentile_num=grating%20%10; //百分位 }if(exchange_flag==1){grating=grating*60; //REV per secondge_num=grating/20%10; //20 plus per revshi_num=grating/20%1000/100 ;bai_num=grating/20%1000/100;qian_num=grating/20%10000/1000;tens_num=grating%20/10; //十分位percentile_num=grating%20%10; //百分位 }grating=0;timer1=0;}}/*------------------------------------------------主函数------------------------------------------------*/void main(void){ISR_init();LCD_Init();PWM = 0;LCD_Write_String(0,0,"THE REV IS:");while (1){//LCD_Clear();key();if(exchange_flag==0){LCD_Write_Char(1,1,qian_num+0x30);LCD_Write_Char(2,1,bai_num+0x30);LCD_Write_Char(3,1,shi_num+0x30);LCD_Write_Char(4,1,ge_num+0x30);LCD_Write_Char(5,1,'.');LCD_Write_Char(6,1,tens_num+0x30);LCD_Write_Char(7,1,percentile_num+0x30);LCD_Write_String(9,1,"rad/sec");}if(exchange_flag==1){LCD_Write_Char(1,1,qian_num+0x30);LCD_Write_Char(2,1,bai_num+0x30);LCD_Write_Char(3,1,shi_num+0x30);LCD_Write_Char(4,1,ge_num+0x30);LCD_Write_Char(5,1,'.');LCD_Write_Char(6,1,tens_num+0x30);LCD_Write_Char(7,1,percentile_num+0x30);LCD_Write_String(9,1,"rad/min");}}}。
基于c51的转速测量课程设计论文
基于单片机的转速测量显示装置设计目录课程设计任务书 (1)一概述 (2)1.1背景概述和应用介绍: (2)1.2 总体设计方案 (3)1.2.1硬件电路设计思路 (3)1.2.2软件设计思路 (3)二硬件电路的设计 (4)2.1传感器的选型 (4)2.1.1霍尔元件的应用 (4)2.1.2UGN3144霍尔开关元件 (4)2.2.传感器接口电路设计 (6)2.3单片机最小系统的设计 (7)2.3.1AT89C51单片机的简介 (7)2.3.2复位电路 (10)2.3.3时钟电路 (10)2.4显示电路的设计 (11)三系统软件设计 (15)3.1主程序初始化 (15)3.2主程序流程图程序流程图 (17)四仿真及结果 (19)4.1软件调试 (19)4.2仿真结果 (20)设计总结 (22)参考文献 (23)附录一:原理图 (24)附录二:单片机程序 (25)致谢 (27)一 概 述1.1背景概述和应用介绍:智能化转速测量可以对转速进行测量,电机在运行的过程中,需要对其平稳性进行监测,适时对转速的测量有效地可以反映电机的状况。
本系统主要由传感器,单片机AT89C51构成。
可以对大范围转速进行测量,测量的转速精度高,实现对电机转速的测量。
单片机的英文名称是Micro Controller unit,缩写为MCU ,又称为微控制器,它是一种面向控制的大规模集成电路芯片。
它具有功能强、体积小、可靠性高、应用简单灵活,因而使用非常广泛,有力地推动各行业的技术发展和更新换代。
本文首先在第二章绪论介绍了此系统的功能、技术指标以及主要内容等;在第三章论述了总体设计过程,确定了技术指标及器件的选择;第四章着重描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性;在第五章中重点剖析了软件设计的过程;最后在第六章中具体论述单片机、电平转换电路、通信的处理及调试。
系统主要实现功能是:AT89C51单片机接收传感器传来的脉冲信号,单片机根据中断,以及内部定时器进行记数计算出电机转速送到LED 显示。
用51单片机及霍尔传感器制作的测速器电路图
测量转速,使用霍尔传感器,被测轴安装有12只磁钢,即转轴每转一周,产生12个脉冲,要求将转速值(转/分)显示在数码管上。
程序如下:DISPBUF EQU 5AH ;显示缓冲区从5AH开始SeCCoun EQU 59HSpCoun EQU 57H ;速度计时器单元57H和58H,高位在前(57H单元中)Count EQU 56H ;显示时的计数器SpCalc bit 00h ;要求计算速度的标志Hidden EQU 16 ;消隐码ORG 0000HAJMP STARTORG 1BHJMP TIMER1 ;定时中断1入口ORG 30HSTART: MOV SP,#5FH ;设置堆栈MOV P1,#0FFHMOV P0,#0FFHMOV P2,#0FFH ;初始化,所有显示器、LED灭MOV TMOD,#00010101B ;定时器T1工作于方式1,定时器0工作方式1 MOVTH1,#HIGH(65536-4000)MOV TL1,#LOW(65536-4000)SETB TR1SETB ET1 ;开定时器1中断SETB EALOOP: JNB SpCalc,LOOP ;如果未要求计算,转本身循环;标号:MULD功能:双字节二进制无符号数乘法;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求:2字节MOV R2,SpCounMOV R3,SpCoun+1MOV R6,#0MOV R7,#5 ;测得的数值是每秒计数值,转为每分转速(每一转测12次,故乘5而非60)CALL MULD;标号:HB2功能:双字节十六进制整数转换成双字节BCD码整数;入口条件:待转换的双字节十六进制整数在R6、R7中。
;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
;影响资源:PSW、A、R2~R7 堆栈需求:2字节MOV A,R4MOV R6,AMOV A,R5MOV R7,A ;将乘得的结果送R6R准备转换,这里结果不可能超过2字节CALL HB2CBCD:MOV DISPBUF,R3 ;最高位MOV A,R4 ;ANL A,#0F0H ;去掉低4位SWAP A ;将高4位切换到低4位MOV DISPBUF+1,AMOV A,R4ANL A,#0FHMOV DISPBUF+2,AMOV A,R5ANL A,#0F0HSWAP AMOV DISPBUF+3,AMOV A,R5ANL A,#0FHMOV DISPBUF+4,ACLR SpCalc ;清计算标志JMP LOOP;主程序到此结束TIMER1: PUSH ACC;ACC入栈PUSH PSW ;PSW入栈SETB RS0 ;工作区1JNB TR0,SETTR0 ;如果T0未运行,则开启T0 JMP GO1SETTR0:SETB TR0GO1:INC SecCoun ;秒计数器加1MOV A,SecCounCJNE A,#251,Go2 ;如果未到1s则转CLR TR0 ;1s到了,则停止T0的运行MOV SpCoun,TH0MOV SpCoun+1,TL0 ;读取计数值CLR AMOV TH0,AMOV TL0,A ;清计数器SETB SpCalc ;要求主程序计算速度MOV SecCoun,#0 ;清秒计数器Go2:INC COUNT ;用于显示的计数器MOV A,COUNTCLR CSUBB A,#6JZ N1JMP N2N1: MOV COUNT,#0N2: MOV A,#DISPBUFADD A,COUNTMOV R0,A ;指向当前要显示的显示缓冲区MOV A,@R0 ;取第一个待显示数MOV DPTR,#DISPTAB ;字形表首地址MOVC A,@A+DPTR ;取字形码MOV P0,A ;将字形码送P0位(段口)MOV A,COUNTMOV DPTR,#BitTab ;字位表首地址MOVC A,@A+DPTRORL P2,#11111100BANL P2,AMOV TH1,#HIGH(65536-4000)MOV TL1,#LOW(65536-4000)POP PSWPOP ACCRETIBitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBHDISPTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0F FH……其他数学运算程序(略)主程序在对定时器、计数器、堆栈等进行初始化后即判断标志SpCalc是否为1,如果为1,说明要求对数据进行计算处理,首先将SpCalc标志清零,以保证下次能正常判断,然后进入数据处理程序,由于这里的闸门时间为1s,而显示要求为转/分,因此,要将测到的数据进行转换,转换的方法是将测得的数据乘以60,但由于转轴上安装有12只磁钢,每旋转一周可以得到12个脉冲,因此,要将测得的数据除以12,所以综合起来,将测得的数据乘以5即可得到每分钟的转速。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机和霍尔传感器的转速测量仪摘要系统由传感器、信号处理、系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号;信号处理电路(反相器74LS14)包含待测信号整形反相等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTL/CMOS兼容信号。
处理器采用51单片机,显示器采用单片机开发板自带的8位LED数码管动态显示。
课题背景在工农业生产和工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。
模拟式采用测速发电机为检测元件,得到的信号是模拟量,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难。
数字式通常采用光电编码器、圆光栅、霍尔元件等为检测元件,得到的信号是脉冲信号。
单片机技术的日新月异,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法,使得许多控制功能及算法可以采用软件技术来完成。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
本课题,是要利用霍尔传感器来测量转速。
由磁场的变化来使霍尔传感器产生脉冲,由单片机计数,经过数据计算转化成所测转速,再由数码管显示出来。
1.硬件部分概述1.1系统组成框图系统框图原理如图1-1所示,系统由传感器、信号处理、数码管显示、蜂鸣器超速报警和系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号。
信号处理电路反相器74LS14)包含待测信号波形变换、波形整形等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTL/CMOS 兼容信号。
处理器采用51单片机,显示器采用8位LED 数码管动态显示。
1.2霍尔传感器测转速原理及特性霍尔传感器是对磁敏感的传感元件,由磁钢、霍耳元件等组成。
测量系统的转速传感器选用SiKO 的 jk8002c 的霍尔传感器,其响应频率为100KHz ,额定电压为5-30(V )、检测距离为10(mm )。
其在大电流磁场或磁钢磁场的作用下,能测量高频、工频、直流等各种波形电流。
该传感器具有测量精度高、电压范宽、功耗小、输出功率大等优点,广泛应用在高速计数、测频率、测转速等领域。
输出电压4~25V ,直流电源要有足够的滤波电容,测量极性为N 极。
安装时将一非磁性圆盘固定在电动机的转轴上,将磁钢粘贴在圆盘边缘,磁钢采用永久磁铁,其磁力较强,霍尔元件固定在距圆盘1-10mm 处。
当磁钢与霍尔元件相对位置发生变化时,通过霍尔元件感磁面的磁场强度就会发生变化。
圆盘转动,磁钢靠近霍尔元件,穿过霍尔元件的磁场较强,霍尔元件输出低电平;当磁场减弱时,输出高电平,从而使得在圆盘转动过程中,霍尔元件输出连续脉冲信号。
这种传感器不怕灰尘、油污,在工业现场应用广泛。
1.3转速测量原理霍尔器件是由半导体材料制成的一种薄片,器件的长、宽、高分别为 l 、b 、d 。
若在垂直于薄片平面(沿厚度 d )方向施加外磁场B ,在沿l 方向的两个端面加一外电场,则有一定的电流流过。
由于电子在磁场中运动,所以将受到一个洛仑磁力,其大单片机机控制三位数码管显示转速霍尔传感器采集转速脉冲信号反相器信号处理图1-1系统框图蜂鸣器超速报警图1-2 霍尔元件的原理结构图式中:f —洛仑磁力, q —载流子电荷, V —载流子运动速度, B —磁感应强度。
这样使电子的运动轨迹发生偏移,在霍尔元器件薄片的两个侧面分别产生电子积聚或电荷过剩,形成霍尔电场,霍尔元器件两个侧面间的电位差H U 称为霍尔电压。
霍尔电压大小为: HUH R =d B I /⨯⨯(mV)式中:H R —霍尔常数, d —元件厚度,B —磁感应强度, I —控制电流 设 HKH R =d /, 则HU=H K d B I /⨯⨯(mV) HK为霍尔器件的灵敏系数(mV/mA/T),它表示该霍尔元件在单位磁感应强度和单位控制电流下输出霍尔电动势的大小。
应注意,当电磁感应强度B 反向时,霍尔电动势也反向。
图2为霍耳元件的原理结构图。
1.4反相器74LS14介绍74LS14是六反相施密特触发器。
不存在放大的功能。
是施密特触发电路功能。
当输入电压由低向高变化时,若电压超过正向阈值电压Vt+,输出为低电平。
当输入电压由高向低变化时,输入电压要低于另一个阈值电压Vt-时,输出为高电平。
管脚定义如下:A 端为输入端,Y 端为输出端,一片芯片一共6路,即 1,3,5,9,11,13 为输入端, 2,4,6,8,10,12 为输出端,输出结果与输入结果反向。
74LS14管脚图 即如果输入端为高电平, 那么输出为低电平。
如果输入低电平,输出为高电平。
2.1软件基本功能介绍设计软件主要为主程序、数据处理显示程序、定时器中断服务程序和蜂鸣器报警四个部分。
(1)主程序主要完成初始化功能,包括LED显示的初始化,中断的初始化,定时器的初始化,寄存器、标志位的初始化等。
主程序流程图如图5所示。
(2)数据处理显示模块程序。
此模块中单片机对在10秒内的计数值进行处理,转换成r/min送显示缓存以便显示。
具体算法如下:设单片机每秒计数到n个值,即n (r/s)(圆盘贴两个磁钢)。
则n (r/s)=6n(r/min)。
即只要将计数值乘以6便可得到每分钟电机的转速。
程序流程图如下图所示。
(3)定时器1中断服务程序设计。
定时器1完成计时功能,定时50ms,进行定时中断计数并每隔10s更新一次显示数据。
流程图如下图所示。
3.制作调试3.1硬件调试霍尔传感器探头要对准转盘上的磁钢位置,安装距离要在10mm以内才可灵敏的感应磁场变化。
在磁场增强时霍尔传感器输出低电平,指示灯亮;磁场减弱时输出高电平,指示灯熄灭。
当电机转动时,感应电压指示灯高频闪烁,所以视觉上指示灯不会有多大的闪烁感。
当给JK 8002c型霍尔传感器施加5V电压时其输出端可以输出3V的感应电压。
输出幅值为3V的矩形脉冲信号。
3.2软件调试测量系统与PC机连接时一定要先连接串行通信电缆,然后再将其电源线插入USB 接口;拆除时先断开其电源,再断开串行通信电缆,否则极易损坏PC机的串口。
采用AT单片机下载相应的软件,将其下载到实验板的单片机中。
下载软件的最后一步:点击软件界面中的[下载]按钮,在点击前一定要保持实验板的串行通信线及电源线与PC机连接良好,并且实验板的电源开关处于关闭状态,然后点击[下载]按钮,再打开实验板电源开关,此时软件将自动完成程序下载。
最后将硬件和软件结合起来4.测试结果分析设计基本完成题目中的各项要求,其中转速的测量比较精确,与实际转速相差10 转/分左右,精度在全量程范围内优于10转/分,存在一定的误差,经分析主要是由以下原因造成:1)由于转盘是直接采用磁铁旋转而成,手动旋转时容易打飘不稳,导致获得的脉冲信号频率与实际转速有一定的误差。
2) 中断处理的进入和中断处理程序都会有一定时间的误差,从而导致定时时间的误差,这也是造成测量误差的一个因素。
3)在固定装置时,由于是手动操作,从而导致初始获得信号有一定的时差。
5.结论霍尔传感器具有不怕灰尘、油污,安装简易,不易损坏等优点,在工业现场得到了广泛应用。
利用霍尔传感器设计的转速测量系统以单片机AT89C51为数据处理核心,采用定时器定时中断的方法实现计数,对测量数据进行计算得到转速数据,并将结果送数码管显示。
整个测量系统硬件电路简单,容易调试,软件部分编程采用C51,有较高的编程效率。
测试结果表明对电动机转速的测量精度较高,基本能够满足实际的测试需要,有一定的实际应用价值。
6.心得体会本此设计,主要进行了以下几方面的工作:首先,复习了上学期所学的传感器,在其中着重学习并理解霍尔传感器的工作原理;其次,根据老师所提供的传感器,查找搜集其特性,制作设计方案;然后,完成测转速系统的硬件选型和电路设计;最后,完成系统的软件流程图设计。
根据我们所选的题目,编出了实验的程序。
总体来讲,此次设计的题目比较简单。
通过这次的设计,又查阅了相关资料,与老师所讲的结合,基本上掌握了数码管动态显示的原理。
在单片机上演示成功后,结合所发的板子修改了程序,但是在将程序考到开发板上之后偶遇到了一些问题。
显示的结果与与预想的不同,经过反复试验最终搞清楚的其中的原理。
对于定时器、计数器的中断,有了深入认识。
怎么算初值,怎么申请中断,怎么响应,返回到什么位置等更深层次的应用并学为己有。
并且学会了有多个等待多个中这一点我觉得很有用。
这次设计,有程序,有硬件,有理论,有实践,通过它们的结合,我所学到的知识形成了一个系统,不再是孤立的,而是硬件与软件的结合,提高了自己的程序运用能力,对于编程的思路有了更进一步的悟性。
不再是一个机械的运用,而是根据具体情况来编写自己的程序,有了一定的灵活运用能力。
以前实验是只有单片机的程序,这次与传感相结合,不仅使我又一次的加深了对软件编程的理解,还从实际出发,有了一个更整体的认识。
对于霍尔传感器的基本原理更有了进一步的理解。
霍尔传感器具有不怕灰尘、油污,安装简易,不易损坏等优点,在工业现场得到了广泛应用。
测试结果表明对电动机转速的测量精度较高,基本能够满足实际的测试需要,有一定的实际应用价值。
就本课题而言,并末实现真正工业意义上的测转速控制,今后还应在控制的实现上进一步深入的探讨,这类研究将对工业测转速有着深远的影响,是一个值得深入的方向。
在此期间,本组每位同学都在尽自己最大的努力来完成设计任务,都认识到了设计的意义与目的。
指导老师也很辛苦的了,在这里,深表对老师和各组员的感谢!。
最终完成图:附录程序:#include<reg52.h>#define uchar unsigned charunsigned long num,speed,count;uchar j,k;sbit dula=P2^6;sbit wela=P2^7;sbit beep=P2^3;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};void init(void) //定义名为init的初始化子函数{ //init子函数开始,分别赋值TMOD=0X51;TH1=0; //计数器初始值TL1=0;TH0=(65536-45872)/256;TL0=(65536-45872)%256; //定时器T0 定时50msEA=1;EX0=1;IT0=1;ET0=1;TR1=1;ET1=1;}void delay(uchar i){for(j=i;j>0;j--)for(k=110;k>0;k--);}void display(uchar bai,uchar shi,uchar ge)//显示函数,数码管前三位显示转速{wela=1;P0=0xfe;wela=0;P0=0xff;//消影dula=1;P0=table[bai];dula=0;delay(5);wela=1;P0=0xfd;wela=0;P0=0xff;//消影dula=1;P0=table[shi];delay(5);wela=1;P0=0xfb;wela=0;P0=0xff;//消影dula=1;P0=table[ge];dula=0;delay(5);}void time()interrupt 1 //T0定时{TH0=(65536-45872)/256;//定时50ms TL0=(65536-45872)%256;num++;if(num==200)//到了200则10秒时间到 {num=0;speed=count;count=0;}}。