基于单片机转数测量设计报告.docx

上传人:b****4 文档编号:4828264 上传时间:2023-05-07 格式:DOCX 页数:17 大小:424.35KB
下载 相关 举报
基于单片机转数测量设计报告.docx_第1页
第1页 / 共17页
基于单片机转数测量设计报告.docx_第2页
第2页 / 共17页
基于单片机转数测量设计报告.docx_第3页
第3页 / 共17页
基于单片机转数测量设计报告.docx_第4页
第4页 / 共17页
基于单片机转数测量设计报告.docx_第5页
第5页 / 共17页
基于单片机转数测量设计报告.docx_第6页
第6页 / 共17页
基于单片机转数测量设计报告.docx_第7页
第7页 / 共17页
基于单片机转数测量设计报告.docx_第8页
第8页 / 共17页
基于单片机转数测量设计报告.docx_第9页
第9页 / 共17页
基于单片机转数测量设计报告.docx_第10页
第10页 / 共17页
基于单片机转数测量设计报告.docx_第11页
第11页 / 共17页
基于单片机转数测量设计报告.docx_第12页
第12页 / 共17页
基于单片机转数测量设计报告.docx_第13页
第13页 / 共17页
基于单片机转数测量设计报告.docx_第14页
第14页 / 共17页
基于单片机转数测量设计报告.docx_第15页
第15页 / 共17页
基于单片机转数测量设计报告.docx_第16页
第16页 / 共17页
基于单片机转数测量设计报告.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机转数测量设计报告.docx

《基于单片机转数测量设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机转数测量设计报告.docx(17页珍藏版)》请在冰点文库上搜索。

基于单片机转数测量设计报告.docx

基于单片机转数测量设计报告

课程名称传感器

项目名称基于霍尔传感器的电机转速测量系统设计

年级电科121班

专业电子信息科学与技术

学生姓名岑万双

学号1207010032

 

2015年12月21日

目录

摘要2

引言3

1.系统设计4

1.1硬件设计4

1.1.1.原理图4

1.1.2硬件电路4

(一)霍尔传感器5

(二)处理器6

(三)LCD显示和报警6

1.2软件设计6

1.2.1主程序6

(一)工作过程6

(二)流程图7

(三)程序7

1.2.2中断程序8

(一)外部计数中断8

(二)定时器中断9

1.2.3显示模块相关程序10

2.PROTUES仿真结果14

结论17

摘要

本设计以对电机转速的测量为目的,以51单片机作为主控制器,使用霍尔传感器对电机转速进行测量。

采用仿真软件Protues进行硬件搭接,并利用Keil软件对所写C程序进行编译、仿真,利用LCD1602显示其具体转速。

首先介绍了霍尔传感器的基本概念及其原理,其次阐述了霍尔传感器测速系统的工作过程,利用脉冲计数法实现了对转速的测量,通过LCD1602直观地显示转速值,仿真结果表明所设计的系统是正确的。

 

引言

在生产过程中,经常会遇到各种需要和显示其转速的场合。

测量转速的方法分为模拟式和数字式两种。

模拟式采用测速发电机为检测元件,得到的信号是模拟量。

数字式通常采用光电编码器、霍尔元件等为检测元件,得到的信号是脉冲信号。

随着微型计算机的广泛应用,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法,智能化微处理器代替了一般机械式或模拟式结构。

 

1.系统设计

把霍尔传感器和机轴同轴连接,利用开关型霍尔传感器将电动机转速转化为单片机可以识别的脉冲信号,将脉冲信号送入单片机,外部中断计数并设置定时器中断时间,每1s读一次外部中断计数值,此值为脉冲信号的频率,最后由电机转速计算公式得到转速。

在正常的情况下,通过LCD显示当前的转速数值,同时时刻更新,保证测量的实时性:

当电机的转速超出一定的范围后,通过蜂鸣器进行报警。

1.1硬件设计

1.1.1.原理图

以单片机AT89C51为控制核心,霍尔集成传感器作为测量转速的检测元件,最后用字符型液晶显示器1602显示转速数值,当转速超过一定值或停止时报警。

原理图如图1所示:

图1

1.1.2硬件电路

在原理图基础上对硬件电路进行了详细的设计,硬件电路图如图2所示:

图2

(一)霍尔传感器

利用霍尔传感器将电机转速转化为脉冲信号。

测量用霍尔器件A3144为开关型霍尔集成电路,是将霍尔元件、稳压电路、放大器、施密特触发器、OC门等电路做在同一个芯片。

当外加磁场强度超过规定的工作点时,OC门由高阻态变为导通状态,输出变为低电平;当外加磁场强度低于释放点时,OC门重新变为高阻态,输出高电平。

通过上拉电阻可将其输出接入逻辑电路。

该芯片具有尺寸小、稳定性好、灵敏度高等特点,有两种封装形式,一种是3脚贴片微小型封装,后缀为“LT”:

另一种是3脚直插封装,后缀为“UA”。

霍尔器件A3144管脚及其接线如图3所示:

图3

(二)处理器

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

通过89C51,单片机完成对电转

速脉冲计数的控制,读取寄存器完成转速频率的确定。

而电机脉冲信号连到INTO引脚。

INTO中断对转速脉冲计数。

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

每到ls读一次外部中断INTO计数值,此值即为脉冲信号的频率。

根据下式可计算出电机的转速,电机转速计算公式:

其中n为电机转速,f为电机脉冲信号频率,z为转轴旋转一霍

尔传感器产生的脉冲数。

(三)LCD显示和报警

在正常的情况下,通过LCD显示当前的转速数值,当电机的转超

出一定的范围后,产生一个控制信号控制相应模块进行报警。

1.2软件设计

1.2.1主程序

(一)工作过程

先初始化,设置各中断初值,检测脉冲到来后,启动外部中断,每来一个脉冲中断一次,记录脉冲个数;同时启动T0定时器工作,每1秒定时中断一次,读取记录的脉冲个数,即电机脉冲信号频率,根据公式计算出电机的转速,再进行数值的判断,若数值高于1000则报警,否则就进行正常速度液晶显示。

(二)流程图

如图4所示:

图4

(三)程序

main()

{LED=1;

Lcd1602_Delay1ms(1000);

LED=0;

LcdInit();

do

{

TMOD=0x01;//定时器0方式1

TH0=0x3C;//装载50ms定时初值

TL0=0xB0;

TCON=0x11;//启动定时中断和外中断0下降沿触发

IE=0x83;//允许定时和外部中断响应

while(fb==0);

if(zs>=1000)

{

LED=1;//转数大于1000R/S控制灯亮

Lcd1602_Delay1ms(1000);

}

display1();

}

while

(1);

}

1.2.2中断程序

(一)外部计数中断

1.工作过程

每来一个电机脉冲信号,INTO产生中断计数。

2.流程图

如图5所示:

图5

3.程序

voidcountv(void)interrupt0//外部中断程序

{

count++;

if(count%6==0)

{zs++;}

}

(二)定时器中断

1.工作过程

TTO定时器每1秒定时中断一次,读取记录的脉冲个数。

2.流程图

如图6所示:

图6

3、程序

voidtim0(void)interrupt1//定时中断程序

{

TH0=0x3C;//50ms定时

TL0=0xB0;

msec++;

if(msec%20==0)//20*50ms=1s,1s定时到

{

EA=0;

fb=1;

}

}

1.2.3显示模块相关程序

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

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

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

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

数据是告诉该显示什么。

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

/*******************************************************************************

*函数名:

data_chang

*函数功能:

将转数的每一位依次存到数组中

*输入:

*输出:

*******************************************************************************/

voiddata_chang()//数据转换程序

{

SZ[0]=(zs/1000%10+'0');//转换转数的千位

SZ[1]=(zs/100%10+'0');//转换转数的白位

SZ[2]=(zs/10%10+'0');//转换转数的十位

SZ[3]=(zs%10+'0');//转换转数的个位

zs=0;

msec=0;

count=0;

}

 

/*******************************************************************************

*函数名:

display1

*函数功能:

将数组中的每一个依次显示

*输入:

*输出:

*******************************************************************************/

voiddisplay1()//显示子程序

{

inti;

data_chang();//数据处理

LcdWriteCom(0xc4);

for(i=0;i<5;i++)

{LcdWriteData(SZ[i]);}

Lcd1602_Delay1ms(1000);

}

 

/*******************************************************************************

*函数名:

Lcd1602_Delay1ms

*函数功能:

1ms延时

*输入:

c

*输出:

*******************************************************************************/

voidLcd1602_Delay1ms(uintc)//误差0us

{

uchara,b;

for(;c>0;c--)

{

for(b=199;b>0;b--)

{

for(a=1;a>0;a--);

}

}

}

 

/*******************************************************************************

*函数名:

LcdWriteCom

*函数功能:

向LCD写入一个字节的命令

*输入:

com

*输出:

*******************************************************************************/

voidLcdWriteCom(ucharcom)//写入命令

{

LCD1602_RS=0;//选择发送命令

LCD1602_RW=0;//选择写入

LCD1602_E=1;//使能

LCD1602_DATAPINS=com;//放入命令

Lcd1602_Delay1ms(5);//等待数据稳定

LCD1602_E=0;//写入时序

}

voidLcdWriteData(uchardat)//写入数据

{

LCD1602_RS=1;//选择输入数据

LCD1602_RW=0;//选择写入

LCD1602_E=1;//写入时序

LCD1602_DATAPINS=dat;//写入数据

Lcd1602_Delay1ms(5);//保持时间

LCD1602_E=0;

}

 

/*******************************************************************************

*函数名:

LcdInit()

*函数功能:

初始化LCD屏

*输入:

*输出:

*******************************************************************************/

voidLcdInit(void)//LCD初始化子程序(8位传输)

{inti;

LcdWriteCom(0x38);//开显示

LcdWriteCom(0x0c);//开显示不显示光标

LcdWriteCom(0x06);//写一个指针加1

LcdWriteCom(0x01);//清屏

LcdWriteCom(0x83);//设置数据指针起点

for(i=0;i<10;i++)

{

LcdWriteData(Pa[i]);

}

LcdWriteCom(0xc9);

LcdWriteData('R');

LcdWriteData(0x2f);

LcdWriteData('S');

}

 

2、PROTUES仿真结果

对于本系统的霍尔传感器产生的脉冲信号,利用软件中信号脉冲代替,其频率的值就代表霍尔传感器产生的频率,霍尔传感器6个脉冲信号表明转一圈,即转数N=f/6。

当频率为f=1k:

理论值N=1000/6=166.667,测量值N=166,没有误差。

图7

图8

当频率为f=5k:

理论值N=4000/6=833.3,测量值N=667,没有误差。

图9

当频率为f=4.8k:

理论值N=4800/6=800,测量值N=790,测不准,有误差。

图10

当频率为f=4.9k:

理论值N=4900/6=816.6,测量值N=1099,测不准,误差较大。

图11

当频率为f=5k:

理论值N=5000/6=833.3,测量值N=2265,结果与实际值不服,不能测量。

图11

由以上测试结果可以看出,当转数高于800R/S以后就测不准,小于800R/S可以使用本系统进行精准测量。

 

结论

本文给出了一种单片机实现电机转速的测量系统,克服了传统方法测量的不足,可以实现电机转速不同区段的精度测量。

该速度测量系统具有测量速度快、测量精度高、灵敏度高的优点,不但可应用于一般的机电控制过程中进行速度测量,而且可应用于其它要求转速精确测量系统中。

我可以通过提高单片机晶振频率,进一步提高测量的范围上线,但只能是在51单片机的处理接受范围内进行提高晶振源。

 

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2