(参考)基于AT89C的智能光电转速计[]
- 格式:doc
- 大小:1.20 MB
- 文档页数:16
基于AT89C51控制的直流电动机双环调速系统
刘东汉;陈学珍
【期刊名称】《微计算机信息》
【年(卷),期】2006(000)04Z
【摘要】介绍了采用AT89C51作为控制器核心。
晶闸管触发和转速测量等环节都实现全数字化的微机控制电动机双闭环调速系统。
较详细说明了调速系统的硬件组成和软件设计。
【总页数】3页(P67-68,19)
【作者】刘东汉;陈学珍
【作者单位】湖北黄石理工学院
【正文语种】中文
【中图分类】TN36
【相关文献】
1.基于负载观测的直流电动机调速系统无源控制 [J], 黄嘉伟;王宏华
2.基于神经网络PID控制的串励直流电动机调速系统 [J], 程辉;周洪
3.基于分段模糊控制的直流电动机调速系统 [J], 董育亮;朱张青
4.基于AT89C51控制的直流电动机双环调速系统 [J], 刘东汉;陈学珍
5.基于BP神经网络PID控制的无刷直流电动机调速系统设计 [J], 王寿福;
因版权原因,仅展示原文概要,查看原文内容请购买。
目录1.1单片机技术课程设计任务书 (3)1.1.1课程设计任务 (3)1.1.2课程设计目的 (3)1.1.3课程设计要求 (3)1.1.4课程设计内容 (3)1.1.5课程设计报告要求 (3)1.1.6课程设计进度表安排 (4)1.1.7课程设计考核办法 (4)1.2总体设计方案(画出一个实现电路功能的大致框图) (5)2.硬件电路(各组成部分电路)设计及其原理说明 (6)2.1转速信号采集 (6)2.2转速信号处理电路 (7)2.3测量系统主机部分设计 (9)2.3.1复位电路 (9)2.3.2晶振电路 (11)2.3.3最小系统的仿真 (12)2.4显示部分设计 (13)3.软件系统设计 (18)3.1语言的选用 (18)3.2主程序初始化 (19)3.2.1定时器的初始化 (19)3.2.2中断允许控制 (20)4.元器件的选择及其相关技术数据,参数的计算 (22)4.1传感器 (22)4.2放大器 (24)4.3单片机AT89C52 (25)4.4LED显示器 (29)5.总体电路原理图及其整个电路的工作原理.............................................. 错误!未定义书签。
5.1总体电路原理图见附表A。
........................................................... 错误!未定义书签。
5.2转速测量系统的原理。
................................................................... 错误!未定义书签。
5.2.1转速测量方法........................................................................ 错误!未定义书签。
5.2.2转速测量原理........................................................................ 错误!未定义书签。
收稿日期:2009-02-13作者简介:王朕(1979 ),男,山东聊城人,硕士研究生,讲师,主要从事电力电子技术、电路及单片机研究.基于AT89C51的电机转速测量仪的设计与实现王 朕1,刘学锋2,刘陵顺1(1.海军航空工程学院控制工程系,山东烟台 264001; 2.鲁东大学物理与电子工程学院,山东烟台 264001)摘要:采用AT89C51单片机和光电编码器设计开发了用于某型装备电机转速测量的转速测量仪,并给出了测量仪的电路图和部分程序,实验结果表明该测量仪测量具有精度高、抗干扰能力强、体积小、性价比高等优点.关键词:单片机;光电编码器;转速测量中图分类号:TP368.1文献标识码:A 文章编号:1006-0707(2009)05-0019-03在某些工业自动控制领域、某些装备应用上,经常会遇到各种需要测量电机转速的场合.传统的电机转速测量方法是采用直流测速机,其原理是由被测电机拖动测速发电机,再对测速发电机产生的电压进行测量,在将电压换算成转速.采用测速发电机测速主要缺点如下:首先,测速发电机作为被测电机的负载,必然对转速产生影响,在一定情况下影响测量精度;其次,测速发电机电压作为模拟量,无法直接与数字控制系统连接,必须经过A/D 转换,增加系统控制的复杂程度;最后,由于制造工艺的限制,测速发电机的性能很难有大的提高,在某些场合测速发电机甚至影响整个系统的性能[1-2].本文中针对这种情况,设计并实现了以AT 89C51单片机为核心的电机转速测量仪,该测量仪已应用于某型装备,实验结果表明该测量仪不仅满足了装备的测速要求,而且相对于直流测速机更具有测量精度高、体积小、性价比高等优点.常用的转速测量方法有T 法、M 法和M/T 法,综合考虑三种方法的优缺点及测量要求,本文采用M 测速法,即:在一定的采样时间内测出光电编码器的脉冲数,脉冲数除以编码盘的孔数再除以定时时间就是电机的转速,即根据公式(2)换算成转速[3].1 硬件电路设计[4-6]由于该测量仪不需要键盘输入,故硬件电路仅由主电路、转速测量电路、显示电路组成,其电路原理图如图1所示.图1 电路原理第30卷 第5期四川兵工学报2009年5月1.1 主电路主电路采用ATMEL 公司生产的AT 89C51单片机.其中,T0和T1都工作在模式1,T0用作定时器,T1用作计数器,当T 1引脚上出现一个1到0的跳变时,计数器加1,直到T0定时时间到,进入中断程序;然后对T1中的数据进行处理,对T0、T1进行重新装载、设置中断后,中断返回.1.2 转速测量电路转速测量电路由光电编码器及脉冲整形电路组成,如图2所示,其中编码盘加在电机转轴上,随电机同步转动.光电编码器由脉冲编码盘、发光二极管和光敏三极管组成.其中,光电编码器有直射式和反射式两种,图2所示即为直射式.发光二极管发出的光通过编码盘的孔射到光敏三极管上后,三极管导通输出一个低电平;当二极管发出的光被编码盘遮住时,三极管截止输出一个高电平.因此,当编码盘转动时,三极管集电极输出一系列脉冲,脉冲经74HC14整形后输入T1脚,故计数器T 1中的数据除以编码盘的孔数再除以定时时间,即得到了电机的转速.光电编码器的特点是输出精度高、抗干扰能力强、受温度变化影响小,因此使得该测量仪测量精度很高.图2 光电编码器原理1.3 显示电路显示电路使用了4个LED 显示器,由4个CD4511BP 芯片驱动,故满足显示转速的范围0~9999r/min 的要求.七段数码管的驱动由CD4511BP 完成,该芯片是一种集成了显示译码、显示码锁存电路的数码管专用驱动芯片.在其输入脚写入B CD 码,在输出脚上就得到与数码管相对应的十进制数据.显示电路原理图如图3所示,根据CD45111及数码管的电气参数,其电阻阻值选为470 .(图中只给出一个CD4511BP 和一个LED 数码管的连接,其余三个与此相同).图3 LED 显示电路原理2 软件设计[4-5]2.1 程序流程图系统上电复位后,首先对单片机自身进行初始化,包括设置堆栈指针、设置定时器和计数器的工作方式及初始值、中断的开启等,然后进入循环显示、脉冲计数、转速计算、数制转换等子程序.软件流程图如图4(虚线框内为中断处理程序流程).其中,脉冲计数由硬件电路通过计数器T1(P3.5)对输入的脉冲进行计数,经计算在定时器T0定时时间内可以满足测速范围0~9999r/min 的要求;其他各模块的具体程序见2.2部分.图4 程序流程2.2 模块程序程序采用汇编语言编写,采用KEIL51软件和TKS 仿真器进行程序调试.各部分功能的程序如下.2.2.1 脉冲计数程序由硬件电路知,AT89C51的T1引脚外接脉冲输入,因此脉冲计数可使用T1作为计数器来实现计数;采样时间可由T0定义.本文中定义T1为16位计数器,T0为16位定时器,定时0.05s.部分程序及注释如下.MOV TMOD,#41H ;定义定时/计数器工作模式和工作方式;T1--16位外部中断计数器,T0--16位定时器MOV TL0,#0AFH ;设置T0的初始值:定时为0.05s,;公式:X=65535-50000=15535D=3CAFHMOV TH0,#3C H20四川兵工学报MOV TL1,#00H;设置T1的计数初始值0MOV TH1,#00HSE TB TR0;开启T0SE TB TR1;开启T1SE TB ET0;允许T0中断SE TB EA;允许单片机响应中断2.2.2 转速计算程序转速计算的公式为n=60mP(r/min)(1)其中,m存在T1的计数寄存器中, =0.05s,P=32,即转速公式为n=75m2(r/min)(2)根据上述计算公式,先取脉冲数,分别置于寄存器R6、R7中,然后清计数器,再重新装载定时初始值以开始下一轮计数.对已经取得的脉冲数按公式(2)进行计算,先进行乘法后进行除法运算,将得到的转速置于寄存器R3、R4中,部分代码如下.MOV R7,TH1;取脉冲数,R7中存高8位,R6中存低8位MOV R6,TL1MOV TH1,#00H;清计数器计数值,使其开始下一轮的计数MOV TL1,#00HMOV TL0,#0AFH;重新开始定时MOV TH0,#03CHMOV A,R6;m*75D=m*4BHMOV B,#04B HMUL ABMOV R3,A..MOV A,R4RRC A;除法到此做完,转速存在R3、R4组成的16位存储单元中,此时为2进制数.2.2.3 数制转换程序上节中已求出十六进制的转速,需将其转换为十进制数进行编码后再输出显示.该部分程序如下.HB2:CLR AMOV R3,AMOV R4,AMOV R5,AMOV R1,#10H;转换16位,即两字节,需要循环16次,;循环次数存在R1中HB3:MOV A,R7RLC AMOV R3,ADJNZ R1,HB3END2.2.4 显示功能程序由硬件电路,显示驱动芯片连接在P1、P2口上,因此向P1、P2口写数据即可实现数据显示功能.代码如下: DISPLAY:;下面是进行静态显示的代码,寄存器R4中存十进制转速数的千位和百位,R5中存十进制转速数的十位和个位.MOV P1,R4MOV P2,R5SJMP DISPLAY3 结束语本文中采用光电编码器及AT89C51制作的电机转速测量仪已成功用于某型装备,实验结果表明该测速仪不仅测速准确、精度高,而且体积小、性价比高、使用方便,因而具有较高的实用价值和市场前景.参考文献:[1] 刘和平,周小军.一种由单片89C52构成的高精度转速测量仪[C]//重庆市电机工程学会2000年学术会议论文.重庆:重庆市电机工程学会,2000.[2] 赵霞.利用89C52三个定时器实现精密测速[C]//2003年全国单片机及嵌入式系统学术年会论文集(下册).北京:北京航空航天大学出版社,2003. [3] 肖慧.单片机在线测速软件的设计.仪器仪表学报(增刊)[J].2005,26(8):423-424.[4] 张毅刚,彭喜源,谭晓昀.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1997.[5] 徐建军.MC S-51系列单片机应用及接口技术[M].北京:人民邮电出版社,2003.[6] 姚彩虹.基于AT89C52的机车光电转速传感器测控仪设计[J].自动化仪表,2006,27(10):26-27.21王 朕,等:基于AT89C51的电机转速测量仪的设计与实现。
目录中文摘要 (1)英文摘要 (2)1 引言 (2)1.1 课题的研究意义 (2)31.2 设计任务 (3)2 系统设计及模块分析 (3)2.1系统平台简介 (3)2.2 PWM模块 (5)2.4 LCD模块 (5)3 系统的软件设计与实现 (8)3.1 系统软件简介 (9)3.2 编程语言简介 (9)3.3 设计流程及分析 (10)4 调试与实验结果 (13)4.1 系统测试结果 (14)4.2 设计心得 (14)结论 (14)谢辞 (14)参考文献 (14)附录 1 系统硬件原理图 (14)基于STC89C51直流电机控制系统的设计与实现摘要:转速是直流电机运行中的一个重要物理量,如何准确、快速而又方便地测量电机转速,极为重要。
本文阐述了基于单片机的直流电动机转速控制系统的特点和优势,介绍了在STC89C51单片机实验开发平台上,对直流电动机进行测速和控制的相关算法及软、硬件实现。
设计中软件设计采用C语言编程,硬件设计采用PWM方式驱动电动机,利用霍尔元器件测量电动机的转速,在液晶显示屏(LCD)上实时显示电机的转速值。
另外还可以通过3×3矩阵键盘输入电动机转速的设定值,在电动机转速的可控范围内控制电动机转速,使电动机的实际转速值等于设定值,并在液晶显示屏(LCD)上同时显示设定值与实际转速值,便于比较。
最后对实验数据进行了分析。
关键词:直流电动机,PWM,液晶显示屏(LCD),转速测量Abstract: Speed is an important physical quantity in the operation of the DC-motor. How to measure the speed of DC-motor exactly, rapidly and conveniently is highly significant. The design expatiates on the advantages of SCM in the DC-motor speed modification system. The algorithm about the measurement and the control of the DC-motor, as well as the software and hardware methods to realize the requirement based on the STC89C51 experiment development platform is introduced. In this design, the PWM manner , while the Hall device is utilized to measure the speed of the motor. The numerical value will have a real-time display on the LCD screen. In addition, the setting value of the speed can be inputted through the 3×3 matrix keyboard. It can control the speed of the DC-motor in its controllable bounds, which makes the actual speed value equal to the setting value. The LCD screen will display the setting value and the actual speed value simultaneously that is convenient for the comparison between the two values. In conclusion, the data got from the experiment have been analyzed.Keywords: DC-motor, PWM, LCD, speed measurement1 引言1.1 课题的研究意义直流电机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动系统中得到了广泛的应用。
摘要在测量电动机的转速中,测量转速的方法分为模拟式和数字式两种。
模拟式采用测速发电机为检测元件,得到的信号是模拟量。
数字式通常采用光电编码器,霍尔元件等为检测元件,得到的信号是脉冲信号。
由于微型计算机迅速发展,特别是高性价比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法。
本设计是由增量式光电编码器,89C51单片机,二极管,蜂鸣器以及一些必要的运算放大器组成的电机转速检测系统。
本设计的主要功能是:在电机运行过程中,检测系统对转速进行实时监控,转速如果超过200r/min,则发出报警;如果转速低于200r/min,则正常运行。
本设计的优点是:硬件电路简单,软件编译简单,测量速度快捷,整体价格低廉,电路功耗低等特点。
但由于在硬件系统中的测量误差与计算中不可避免的舍入误差,使得测量系统含有一定的误差。
关键字:光电编码器,单片机,蜂鸣器,T法测速,T0定时器/计数器一、系统方案的选定本设计的设计目的是:设计一个由单片机控制的电机转速检测系统,实时监测电机的转速,达到设定值,声音报警提示。
通过设计,掌握光电编码器的工作原理和控制系统的设计步骤,进一步提高综合运用知识的能力。
设计要求是:选择光电编码器,设计电机转速检测系统,转速超过200r/min,自动报警提示。
所以根据设计目的与功能要求,选择增量式光电编码器,选定光电编码器的INT),或P3.4(T0)引脚把光电编码器输出0~5V的T法测速法;通过P3.2(0方波脉冲序列,引入单片机内;通过单片机内部的TO定时器/计数器的功能,计算出光电编码器每个脉冲的时间间隔Tc;通过公式n=60/Z/Tc=60f/Z·M(Z=倍频系数X编码器光栅数)计算出电动机的实时转速N;通过编好的软件,拿实时转速N与规定转速上限n=200r/min比较,如果实时转速N大于200r/min,系统报警(蜂鸣器发声),红色报警灯亮;如果实时转速N小于200r/min,系统正常工作,不会报警,绿色工作指示灯亮。
应用光电传感器测量转速的电路设计 简述:本次设计应用了AT89C51单片机,采用光电传感器测量电机转速的方法,其中硬件系统包括脉冲信号的产生模块、脉冲信号的处理模块和转速的显示模块三个模块,采用C 语言编程,结果表明该方法具有简单、精度高、稳定性好的优点。
关键词:转速测量 单片机 光电传感器 脉冲信号 一、 概述 在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、卷扬机、机床主轴等旋转设备的试验、运转和控制中,常需要分时或连续测量和显示其转速及瞬时转速。
目前国内外测量电机转速的方法有很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。
计数测速法又可分为机械式定时计数法和电子式定时计数法。
其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点。
加之激光光源、光栅、光学码盘、CCD 器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。
而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。
这次设计的内容包含了多个方面,从脉冲信号的产生模块、脉冲信号的处理模块和转速的显示模块三个模块入手,全面锻炼了我们信号采集,处理和分析的工作能力。
二、 选用器材AT89C51单片机,4位数码管,9013三极管4个,9014三极管一个,按钮一个,12M 晶振1个,30pF 电容3个,180、3.3K 、4.7K 、20K 、10K 欧电阻各1个,马达1个,光电门一个。
三、转速测量系统的原理…………………………装………………………………订………………………………线………………………………………………………………1、转速测量方法转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。
4--13mm。
实物封装;其电阻值随光强的增加而减小。
光敏电阻广泛用于
的开关特性,检测转盘转速比较容易实
附录一原理图:
仿真图:
附录二PCB图:
附录三程序清单:
// 1602 2*16字符第一行0x80 第二行0xc0
// 24C02存储 0x00-0x06: 99 99 99 99 cm
// 0x2e,0x6b,0x6d,0x06,0x07,0x20,0x3d 0x30-0x36开始是数字0-9
//------头--------------------------------------------------------
//申明
#include "REG52.H"
#include "INTRINS.H"
#define uchar unsigned char
#define uint unsigned int
//轮周长1.57m及各位值 1ms取 1.57*(1/1>*1000*100/8
#define spee 19625
#define roun 12500
#define mile_h 1
#define mile_m 5
#define mile_l 7
unsigned char code display_kecheng[]={"Dan Pian Ji Ke She! "}。
//单片机课设
unsigned char code display_timu[] ={"Guang Dian Zhuan Su!"}。
//光电转速计
unsigned char code display_xingming[]={"Yu Guang Sun Dai Chen Di Hu "}。
//姓名
unsigned char code display_xuehao[] ={"10211807208 10211807209 10211807231 "}。
//学号
unsigned char code display_round[] ={"*Round= . r/s"}。
//显示速度unsigned char code display_speed[] ={"*Spped= . m/s"}。
//显示速度unsigned char code display_mile[] ={"* Mile= . km"}。
//显示里程
unsigned char code digit[]={"0123456789"}。
//数字代码
//单片机IO连接
#define LCD1602A_IO P0
sbit LCD1602A_RS = P1^0。
sbit LCD1602A_RW = P1^1。
sbit LCD1602A_EN = P1^2。
sbit AT24C02_SDA = P3^0。
sbit AT24C02_SCL = P3^1。
sbit SIGN = P3^3。
sbit KEY = P3^4。
//液晶驱动函数定义 `
void LCD_RD_BUSY(void>。
//读忙信号
void LCD_WR_CMD(uchar>。
//写操作命令
void LCD_WR_DAT(uchar>。
//写数据
void LCD_WR(uchar,uchar>。
//输出一个字符
//存储IC驱动函数定义
void AT24C02_START(void>。
//开启
void AT24C02_STOP(void>。
//停止
void AT24C02_CK(void>。
//时钟
void AT24C02_WR_byte(uchar>。
//写入单字节
uchar AT24C02_RD_byte(void>。
//读入单字节
uchar AT24C02_RD(uchar>。
//从24c02的地址address中读取一个字节数据
void AT24C02_WR(uchar,uchar>。
//向24c02的address地址中写入一字节数据info
void AT24C02_WRAMD(void>。
//向AT24C02写入数据
void AT24C02_RDAMD(void>。
//向AT24C02读出数据
//函数定义
void _init(void>。
//软硬件初始化
void LCD_init(void>。
//显示题目,姓名,学号初始化void AT24C02_init(void>。
//里程初始化
void T1_INT1_init(void>。
//定时器初始化
void dis_speed(void>。
//显示速度
void dis_round(void>。
//显示转速
void dis_dis(void>。
//显示里程
void key_cont(void>。
//按键控制显示void _nus(uchar>。
//us延时
void _nms(uchar>。
//ms延时
//变量定义
uchar d_var[6]={0,0,0,0,0,0}。
//距离的cm值0x00-0x05双数计算uint timej。
//时间周期个数
uint timei。
//显示周期
uint int_tp。
//周期个数传递
uint sj。
//s指示计数存储
uint ml。
//里程末位 0.01m
uint sh。
//显示转变
//------主体--------------------------------------------------------
//主函数
void main(>
{
_init(>。
while(1>
{
key_cont(>。
}。
}
//----END---------------------------------------------------------------。