基于霍尔传感器的电机转速测量系统Word文件下载.docx

上传人:b****3 文档编号:17043702 上传时间:2022-11-28 格式:DOCX 页数:30 大小:308.18KB
下载 相关 举报
基于霍尔传感器的电机转速测量系统Word文件下载.docx_第1页
第1页 / 共30页
基于霍尔传感器的电机转速测量系统Word文件下载.docx_第2页
第2页 / 共30页
基于霍尔传感器的电机转速测量系统Word文件下载.docx_第3页
第3页 / 共30页
基于霍尔传感器的电机转速测量系统Word文件下载.docx_第4页
第4页 / 共30页
基于霍尔传感器的电机转速测量系统Word文件下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于霍尔传感器的电机转速测量系统Word文件下载.docx

《基于霍尔传感器的电机转速测量系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于霍尔传感器的电机转速测量系统Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。

基于霍尔传感器的电机转速测量系统Word文件下载.docx

4.3.4报警程序设计18

4.3.5转速程序的设计18

4.3.6软件程序基础知识准备19

5软件调试20

5.1Proteus及KEIL软件简介20

5.1.1Proteus软件20

5.1.2KEIL软件20

5.2应用KEIL软件进行程序调试21

5.3Proteus软件仿真21

5.3.1仿真步骤21

5.3.2仿真实例22

5.4硬件软件联合调试25

5.4.1联调步骤25

5.4.2搭接检查步骤26

6结论27

附录28

参考文献34

致谢35

1.3设计任务与要求

1.3.1设计任务

根据学校毕业设计的要求,设计一个功能满足设计要求、工作稳定、以单片机为核心的基于霍尔传感器的电机转速测量系统,能够实现在电机工作时转速的测量,并在发生故障时能及时的发出报警信号。

本设计包括完整的硬件设计和相应的软件设计。

1.3.2设计要求

首先选定传感器,霍尔传感器具有灵敏、可靠、体积小巧、无触点、无磨损、使用寿命长、功耗低等优点,综合了电机转速测量系统的要求。

其次设计一个单片机小系统,掌握单片机接口电路的设计技巧,学会利用单片机的定时器和中断系统对脉冲信号进行测量或计数。

再次实时测量显示并有报警功能,实时测量根据脉冲计数来实现转速测量的方法。

要求霍尔传感器转速为0~5000r/min。

2课题方案设计

2.1系统总体设计要求

如果把霍尔传感器按预定位置有规律地布置在轨道上,当永磁体经过它时,可以从测量电路上测得脉冲信号。

根据脉冲信号的分布可以测出电机速度。

2.2系统模块结构论证

2.2.1霍尔测速模块论证与选择

方案一:

采用霍尔元件传感器即霍尔片;

霍尔片可分为贴片型和直插型。

由于贴片型不常用,因此选择直插型。

选型号为A3144的霍尔片作为霍尔测速模块的核心,该霍尔片体积小,安装灵活,可用于测速,且与普通的磁钢片配套使用,价格一般为2.5~3元。

方案二:

采用霍尔传感器;

选型号为CHV-25P/10的霍尔传感器,其额定电压为10v,输出信号5v/25mA,电源为12~15v。

体积大,价格一般为40~120元之间不等。

从性价比方面综合考虑因此选择方案一。

2.2.2计数器模块论证与选择

可以采用片外计数器和片内计数器两个方案。

片外计数器的方案是指采用8253等片外的专用计数芯片进行脉冲计数,单片机控制8253的技术过程,并在技术完毕后读取计数值。

片内计数方案是指采用单片机的内部计数器完成对脉冲的计数过程。

使用片内的计数器的优点在于降低单片机系统的成本。

每到一个脉冲将会产生一个T1的计数,在T0产生的100ms中断完成后,T1的中断溢出次数就是所需要计的脉冲数。

特点在于:

使用了内部的T1作为外部脉冲的计数器,并且,为了避免计数器的溢出,将T1的初值设为0。

2.2.3显示模块论证与选择

采用8段LED数码管作为显示模块核心。

数码管显示器件相对便宜,但是耗能大、编写程序相对麻烦,工作量大。

采用LCD液晶显示器作为显示模块核心。

LCD显示器工作原理简单,编程方便,节能环保。

因此选择方案二。

2.2.4报警模块论证与选择

采用蜂鸣器与发光二极管作为声光报警主要器件。

该方案不论在硬件和焊接方面还是在编写软件方面都简单方便,而且成本低廉。

采用语音播报系统作为声光报警的核心。

该方案更具人性化、智能化,但是就该设计要求而言,方案过于复杂,相对成本过高,工作量偏大。

因此选择方案一。

2.2.5电源模块论证与选择

采用交流220V/50Hz电源转换为直流5V电源作为电源模块。

该方案实施简单,电路搭建方便,可作为单片机开发常备电源使用。

采用干电池串并联达到5V作为电源模块。

该方案实施简单,无需搭建电路,但相对该方案不够稳定,电池耗电快,带负载后压降过高,可能无法使系统稳定持续运行。

方案三:

采用可充电锂电池结合稳压模块作为电源模块。

该方案简单易行,而且相对稳定、误差小,但该方案相对价格过高,针对该设计要求性价比低。

2.2.6单片机模块论证与选择

选用P89C51的单片机速度极快、功耗低、体积小、资源丰富,有各种不同的规格,最快的达100MPS,引脚还可编程确定功能

PhilipsP89C51RD2有4个PDA,属于兼容版。

方案比较:

因为项目的目标是测速系统的应用,所以我还是选用了方案一中51系列的单片机,因为51的架构十分典型。

选择方案一中51系列单片机我认为主要考虑以下方面:

1.价格便宜;

2.开发手段便宜;

3.自己动手焊接相对容易。

2.3转速测量方案论证

转速的测量方法很多,根据脉冲计数来实现转速测量的方法主要有M法(测频法)、T法(测周期法)和MPT法(频率周期法),该系统采用了M法(测频法)。

由于转速是以单位时间内转数来衡量,在变换过程中多数是有规律的重复运动[4]。

2.3.1方案一电机轴一侧贴磁片

使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。

如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。

在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试[5]。

2.3.2方案二电机转轴加测速转盘

传感器采用霍尔器件将电机的转速转化为脉冲信号,处理器采用89C205l单片机.计数器采用单片机片内汁数器完成对脉冲的计数,显示器采用字符型液晶显示器1602进行显示。

系统原理框图如图3-1所示。

系统工作过程:

测量转速的霍尔传感器与机轴相连接,机轴每转一周,产生一定的脉冲个数,霍尔器件电路部分输出,成为转速计数器的计数脉冲。

控制计数时间,即可实现计数器的计数值对应机轴的转速值。

单片机CPU将数据处理后,通过LCD显示出来。

转速的测量转速传感器由磁钢、霍尔元件组成。

将一非磁性圆盘固定装在电机转轴上,圆盘边缘等距离用环氧树脂粘贴块状磁钢,磁钢采用永久磁[6]。

图2-1霍尔传感器检测信号图

2.3.3方案对比

方案一与方案二综合进行对比,发现方案一最少只需一粒磁片即可达到所需要求,简单方便,经济实惠,并易于操作。

因此经比较选择方案一。

2.4小结

本章通过总体设计进行对方案选择的最终确定,研究了霍尔测速、计数器、显示、报警、电源、单片机等各部分模块的可行性方案。

介绍了系统各模块结构并进行方案的比较、论证和最终的选择。

3系统总体设计

3.1总体硬件设计

基于霍尔传感器的速度测量系统工作过程是:

测量转速的霍尔传感器和机轴同轴连接,机轴每转一周,产生一定量的脉冲个数,由霍尔器件电路部分输出。

经光电耦合后,成为转速计数器的计数脉冲。

同时传感器电路输出幅度为12v的脉冲经光电耦合后降为5v,保持同89C51逻辑电平相一致。

CPU将该值数据处理后,在LCD上显示出来。

一旦超速,CPU通过喇叭和指示灯发出声、光报警信号[7]。

3.1.1硬件原理图

以单片机AT89C5l为控制核心,用霍尔集成传感器作为测量转速的检测元件,最后用字符型液晶显示器1602(HD44780控制)显示的小型直流电动机转速的方法,是数字式测量方法,智能化微电脑代替了传统的机械式或模拟式结构。

系统硬件原理图如图3-1所示[8]。

图3-1硬件原理图

3.1.2硬件电路设计总图

在原理图基础上对各部分进行了详细的设计,硬件电路图如图3-2所示。

图3-2硬件电路图

3.2系统子模块简介

本文介绍一种用AT89C51单片机测量小型电动机转速的方法。

系统以单片机AT89C5l为控制核心.用霍尔集成传感器作为测量小型直流电机转速的检测元件,经过单片机数据处理,用字符型液晶显示器1602显示小型直流电机的转速。

另外系统还可完成对电机的开关控制、系统工作时间、当前时间及电机状态的显示。

单片机转速测量系统。

组成单片机转速测量系统的有传感器、处理器、计数器和显示器四个部分组成。

3.2.1传感器部分

主要分为两个部分。

第一部分是利用霍尔器件将电机转速转化为脉冲信号;

第二个部分是使用光耦,将传感器输出的信号和单片机的计数电路两个部分隔开,减少计数的干扰。

用于测量的A44E集成霍尔开关,磁钢用直径D=6.004mm,长度为L=3.032mm的钕铁硼磁钢。

电源用直流,霍尔开关输出由四位半直流数字电压表测量,磁感应强度B用95A型集成霍尔元件测量[9]。

图3-3霍尔片管脚管脚接线

3.2.2计数器

3.2.3处理器

处理器是单片机,采用的是89C51单片机。

3.2.4LCD显示部分

显示部分有两个功能,在正常的情况下,通过LCD显示当前的频率数值,当电机的转速超出一定的范围后,通过灯光和蜂鸣器进行报警。

3.2.5外接报警部分

在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警。

用I/O定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。

比如为2500Hz的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O口每200μs翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty的方波,再通过三极管放大就可以驱动这个蜂鸣器了。

由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放电流就可以了[10]。

4软件设计

4.1程序设计步骤

第一步分析问题,明确任务要求,对于复杂的问题,还要讲要解决的问题抽象成数学模型,即用数学表达式来描述。

第二步确定算法,即根据实际问题和指令系统的特点确定完成这一任务须经历的步骤。

第三步根据所选择的算法,确定内存单元的分配:

使用那些寄存器:

程序运行中的中间数据及结果存放在那些单元,以利于提高程序的效率和运行速度:

然后制定出解决问题的步骤和顺序,画出程序的流程图。

第四步根据流程图,编写源程序。

第五步上机对原程序进行编译、调试。

4.2程序流程图

电机转速测量需要经过的4个基本步骤:

1是控制方式;

2是确定计数方式;

3是信号输入方式;

4是计数值的读取;

通过89C51,单片机完成对电机转速脉冲计数的控制,读取寄存器完成转速频率的确定。

而SGN电机脉冲信号连到

引脚。

计数次数为3次,将3次结果取平均,从而提高计数的稳定性和精确性。

其测量过程是测量转速的霍尔传感器和电机机轴同轴连接,机轴每转一周,产生一定量的脉冲个数,由霍尔器件电路输出。

经过电耦合器后,即经过隔离整形电路后,成为转数计数器的计数脉冲。

同时霍尔传感器电路输出幅度为12V的脉冲经光电耦合后降为5V,保持同单片机AT89C51逻辑电平相一致,控制计数时间,即可实现计数器的计数值对应机轴的转速值。

主CPU将该值数据处理后,在LCD液晶显示器上显示出来[11]。

本系统采用89C51中的

中断对转速脉冲计数。

定时器T0工作于定时方式,工作于方式1。

每到1s读一次外部中断

计数值,此值即为脉冲信号的频率,根据式(4-1)可计算出电机的转速。

当直流电机通过传动部分带圆盘旋转时,霍尔传感器根据圆盘上得磁片获得一系列脉冲信号。

这些脉冲信号通过单片机系统定时/计数器

计数,定时器T0定时。

定时器T0完成100次溢出中断的时间T除以测得的脉冲数m,经过单位换算,就可以算得直流电机旋转的速度。

直流电机转速计算公式:

n=60·

m/(N1·

N)(rpm)(4-1)

其中:

n为直流电机转速,N为栅格数,N1为T0中断次数,m为

在规定时间内测得的脉冲数,T为定时器T0定时溢出时间[12]。

4.2.1主程序流程图

主程序工作过程如下。

先进行初始化设置各定时器初值,然后判断是否启动系统进行测量。

如果是,就启动系统运行。

如果不是就等待启动。

启动系统后,霍尔传感器检测脉冲到来后,启动外部中断,每来一个脉冲中断一次,记录脉冲个数。

同时启动T0定时器工作,每1秒定时中断一次,读取记录的脉冲个数,即电机转速。

连续采样三次,取平均值记为一次转速值。

再进行数值的判断,若数值高于5000rpm则报警并返回初始化阶段,否则就进行正常速度液晶显示。

图4-1主流程图

4.2.2中断服务流程图

在处于中断服务程序阶段,首先进行关中断设置。

其次进行对

位进行的脉冲个数计数的数值读取。

再次对

、T0进行赋初值并且进行关中断设置。

最后进行中断返回。

一、外部计数中断

图4-2外部中断流程图

二、定时器中断

图4-3T0中断流程图

4.3软件程序设计

4.3.1主程序设计

主程序在对定时器、计数器、堆栈等进行初始化后即判断标志位是否为1,如果为1,说明要求对数据进行计算处理,首先将标志位清零,以保证下次能正常判断,然后进入数据处理程序,由于这里的闸门时间为1s,而显示要求为转/分,因此,要将测到的数据进行转换,转换的方法是将测得的数据乘以60,但由于转轴上安装有4只磁钢,每旋转一周可以得到4个脉冲,因此,要将测得的数据除以4,所以综合起来,将测得的数据乘以60/4=15即可得到每分钟的转速。

计算得到的结果是二进制的整数,要将数据送往显示缓冲区需要将该数转化为BCD码。

运算得到的是压缩BCD码,需要将其转换为非压缩BCD码,从标号CBCD开始的一段程序即作了这样的处理[13]。

定时器T0用作4ms定时发生器,在定时中断程序中进行数码管的动态扫描,同时产生1s的闸门信号。

1s闸门信号的产生是通过一个计数器Count,每次中断时间为4ms,每计250次即为1s,到了1s后,即清除计数器Count,然后关闭作为计数器用的INT0,读出TH0、TL0中的数值,分别送入SpCount和SpCount+1单元,将T0中的值清空,置标志位为1,要求主程序进行速度值的计算。

这里还有一个细节,用作1s闸门信号产生的Count每次中断都会加1,而INT0却有一个周期是被关闭的,因此,计数值是251而不是250。

系统采用外部晶振,系统时钟SYSCLK等于18432000,T0定时1ms,初始化时TH0=(-SY-SCLK/1000)》8;

TL0=-(SYSCLK/1000)。

等待1s到,输出转速脉冲个数N,计算电机转速值。

将1s内的转速值换算成1min内的电机转速值,并在LCD上输出测量结果[14]。

/*------------------------主函数-------------------------*/

voidmain()

{

int_all();

//全局初始化

while

(1)

{

disp_count();

//数据处理

if(zhuan>

5000)//转速警告

{

warning=1;

}

if(zhuan<

4999)

warning=0;

write_command(0x80);

for(i=0;

i<

sizeof(display)-1;

i++)

write_data(display[i]);

//LCD显示

delay(5);

}

}

4.3.2中断服务程序设计

/*-------------------外部中断0计数程序-------------------*/

voidcounter(void)interrupt0

EX1=0;

//关外部中断0

count++;

//计数加1

if(count==4)//4次循环为电机转一圈

{

count=1;

//初始化计数

z++;

//转圈计数加1

EX1=1;

//开外部中断0

/*-----------------内部中断0计时计数程序-----------------*/

voidTime0(void)interrupt2using0

TH0=0x4c;

//50ms定时

TL0=0x00;

msec++;

if(msec==20)//50*20=1S

msec=0;

zhuan=z;

z=0;

4.3.3显示程序设计

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。

每次输入指令前都要判断液晶模块是否处于忙的状态。

向LCD输入的数据有两种,一种是指令,一种是数据。

指令是负责初始化LCD与LCD显示字符是什么位置。

数据是告诉该显示什么。

命令与数据是RS端的高低电平来确定。

数据开始的时候是由LCDCS高电平开始,低电平结束。

图4-4显示流程图

/*--------------------向LCD1602写命令--------------------*/

voidwrite_command(ucharcommand)

rs=0;

//选择写命令

P0=command;

//向LCD写命令

lcdcs=1;

//信号使能端高电平

lcdcs=0;

//信号使能端低电平

/*-------------------------------------------------------*/

/*--------------------向LCD1602写数据--------------------*/

voidwrite_data(uchardata0)

rs=1;

//选择写数据

P0=data0;

//向LCD写数据

//信号使能端高电平

//信号使能端低电平

4.3.4报警程序设计

蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。

蜂鸣器程序设计思路:

本程序通过在输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中Delay延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。

更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。

代码为:

if(zhuan>

5000)

4.3.5转速程序的设计

测速的方法决定了测速信号的硬件连接,测速实际上就是测频,因此,频率测量的一些原则同样适用于测速。

通常,可以用计数法、测脉宽法和等精度法来进行测试。

所谓计数法,就是给定一个闸门时间,在闸门时间内计数输入的脉冲个数;

测脉宽法是利用待测信号的脉宽来控制计数门,对一个高精度的高频计数信号进行计数。

由于闸门与被测信号不能同步,因此,这两种方法都存在±

1误差的问题,第一种方法适用于信号频率高时使用,第二种方法则在信号频率低时使用。

等精度法则对高、低频信号都有很好的适应性[15]。

/*-----------------------数据处理------------------------*/

voiddisp_count()

display[9]=(zhuan/1000+'

0'

);

/转换转速的千位

display[10]=(zhuan/100%10+'

//转换转速的百位

display[11]=(zhuan/10%10+'

//转换转速的十位

display[12]=(zhuan%10+'

4.3.6软件程序基础知识准备

针对AT89C51单片机,头文件AT89x51.h给出了特殊功能寄存器SFR所有端口的定义。

其次,C语言编程基础:

十六进制表示字节0x5a:

二进制为01011010B;

0x6E为01101110。

如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位而丢掉高8位。

TMOD=(TMOD&

0xf0)|0x05;

表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。

While

(1);

表示无限执行该语句,即死循环。

语句后的分号表示空循环体,也就是{;

在引脚输出方波编程方法:

(比如P3.2引脚)

#include//该头文档中有单片机内部资源的符号化定义,其中包含P3.2//

voidmain(void)//void表示没有输入参数,也没有函数返值,这入单片机运行的复位入口//

While

(1)//非零表示真,如果为真则执行下面循环体的语句//

P3_2=1;

//给P3_2赋值1,引脚P3.2就能输出高电平VCC//

P3_2=0;

//给P3_2赋值0,引脚P3.2就能输出低电平GND//

}//由于一直为真,所以不断输出高、低、高、低……,从而形成方波//

5软件调试

5.1Proteus及Keil软件简介

5.1.1Proteus软件

Proteus软件是一种低投资的电子设计自动化软件,提供可仿真数字和模拟、交流和直流等数千种元器件和多达30多个元件库。

Proteus软件提供多种现实存在的虚拟仪器仪表。

此外,Proteus还提供图形显示功能,可以将线路上变化的信号

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1