电机测速系统_第1页
电机测速系统_第2页
电机测速系统_第3页
电机测速系统_第4页
电机测速系统_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单片机课程设计报告书题目:直流小电机测速系统 院系名称:自动化学院学生姓名: 专业名称:测控技术与仪器班 级:时间:2012年5 月 电机测速系统一、 设计目的随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。因此设计一种较为理想的电机测速控制系统是非常有价值的。二、 设计要求 1.用按键控制电机起停;2.电机有两种速度,通

2、过按键来改变速度;3.通过数码管显示每分钟或每秒的转速。三、设计器材 器件名称 数量STC89C52单片机 1ST151光电传感器 1四位一体数码管 1电阻各种阻值若干电容10uf 1个 30pf 2个晶振12MHz 1按键 4单排排阻 2开关1直流电机1四、设计方案及分析(包含设计电路图)1 STC89C52单片机介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,

3、与工业标准的MCS-51指令集和输出管脚相兼容。(1)单片机最小系统单片机最小系统电路如图所示,由主控器STC89C52、时钟电路和复位电路三部分组成。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。图 单片机最小系统(2)晶振电路(3)复位电路复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。2. ST151 光电转速传感器是根

4、据光敏二极管工作原理制造的一种感应接收光强度变化的电子器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。它包含调制光源,由光敏元件等组成的光学系统、放大器、开关或模拟量输出装置。光电式传感器由独立且相对放置的光发射器和收光器组成。当目标通过光发射器和收光器之间并阻断光线时,传感器输出信号。由于叶轮的旋转,当叶轮扇叶进入凹槽遮挡着发光二极管时,光敏三极管没接收光,输出为零;当叶轮扇叶通过光电传感器时,光敏三极管接收光在ST151电路输出为频率信号。3. 设计思路电机光敏三极管 信号转换LED显示单片机处理光敏二极管通过ST151光电传感器接收电机扇叶转动切割的次数获得脉冲,从而通

5、过单片机T1口接收高低电平,计数器在定时器的定时范围内记录脉冲个数,通过计算将转速送给数码管并进行显示。4. 程序框图开始数码管的初始化定时器中断初始化定时器定时1msY定时器1定时标志位清0,外部中断0计数N继续等待定时计数数码管显示结束五. 程序参见附录一。六系统仿真 参见附录二。七、设计体会与收获这次课程设计我们组做的是直流电机调节转速。通过对单片机编程来控制转速,并设有开始/暂停键、加速键、减速键以及复位键。此次试验我们进行了分工合作,比较有效率而且都能从中学到一些知识,而我主要做了直流电机的部分。直流电机调速的原理是调节高低电平的占空比从而改变直流电动机电枢两端电压,达到调速的目的。

6、设置TH0、TL0的初始值为9CH,然后在程序中利用按键产生中断调用来改变单元的值就可以改变占空比。在实际实验当中,我们发现当高电平<50%时,电机带不起来,因此我们选择610档位工作。程序设计以及电路板的焊接,其主要问题是程序的合理设计和电路的调试过程。在焊接过程中,我遇到了直流电机转不动的问题,经过综合分析,要加一个反相器增大其电流,提高转速;还有一点是,电路不稳定,必须用手拨才带动它转,其次在低于四档时也转不动。程序设计是最难的一块了,程序设计不能很好的对应上电路,不能达到理想的效果。这些问题经过一一排查最终得以解决。此次实验中我们也遇到了很多问题,不过都通过查资料或者和其他组同学

7、沟通或者请教老师解决了。我们在课本中学到的单片机知识也得到了实践,为以后工作打下了基础。附录一 程序#include <reg52.h>#include <intrins.h>#include"digital_tube.h"#define SPEED_MAX 10#defineSPEED_MIN 4#definecontrol_period100/unit 1us#definelong_press_time200#definestep_val 1sbitmotor_dc =P13;/控制电机转速sbittest_port=P25;/测试引脚sbit

8、run_stop =P10; /开始停止按键sbit speed_add=P11; /加速键sbit speed_sub=P12; /减速键void system_init(void);/系统初始化子程序void timer_init(void);/定时器初始化子程序void motor_dc_init(void);/电机初始化子程序void key_scan(void);/按键扫描子程序void delay_xms(unsigned int );/延时程序(ms)void delay_xus(unsigned int );/延时程序(us)void motor_dc_control(void

9、);/电机驱动子程序/*定义全局变量*/unsigned int speed_val;unsigned int impulse_count;/脉冲计数单元unsigned int impulse_count_tmp;/脉冲计数暂存器bit run_stop_flag;/开始停止标志位bitrefresh_flag;/刷新标志位unsigned char speed_ge=0,speed_shi=0,speed_bai=0;/显示用个十百位unsigned int cnt_motor=0,cnt_impulse=0;/电机控制单元和脉冲单元unsigned char start_stop_act

10、ion;/启停动作/*/void main(void) system_init();/系统初始化 for(;) digital_tube_display(); void motor_dc_init(void)motor_dc=0;void timer_init(void)TCON |= 0X01;/将外部中断设置成下降沿触发方式 TMOD |= 0x01;/将定时器0设置成工作方式1,-16为定时器方式 TH0=(65536-control_period)/256; TL0=(65536-control_period)%256; /将定时器0装人初值 IE =0x83;/开启总中断,外部中断0

11、和定时器中断0 TR0 =1;/打开定时器 void system_init(void)run_stop_flag =0;/default value is stoprefresh_flag =1;/default value is refreshimpulse_count =0;impulse_count_tmp=0;speed_val =8;/default speed value is 5-104motor_dc_init();/电机驱动初始化digital_tube_clear();/变量清零程序test_port=1;timer_init(); /定时器初始化start_stop_a

12、ction=10; void delay_xms(unsigned int xms)/延时毫秒程序unsigned int i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);void delay_xus(unsigned int xus) /延时微秒程序unsigned int i;for(i=xus;i>0;i-)_nop_();/键盘扫描函数void key_scan(void) signed int tmp=speed_val; if(run_stop=0)delay_xms(10);if(run_stop=0)while(!run_stop

13、);run_stop_flag=run_stop_flag;refresh_flag=1; if(speed_add=0)delay_xms(10);if(speed_add=0)while(!speed_add);tmp+=step_val;if(tmp>SPEED_MAX) tmp=SPEED_MAX; speed_val=tmp; refresh_flag=1; if(speed_sub=0)delay_xms(10);if(speed_sub=0)while(!speed_sub);tmp-=step_val;if(tmp<SPEED_MIN) tmp=SPEED_MIN;

14、speed_val=tmp;refresh_flag=1; void motor_dc_control(void)/电机控制程序if(start_stop_action-)if(run_stop_flag && cnt_motor<8)motor_dc=1;elsemotor_dc=0;elseif(run_stop_flag && cnt_motor<speed_val) motor_dc=1;elsemotor_dc=0; void extern0_server(void) interrupt 0/中断0子程序 impulse_count+;/递加void timer0_server(void) interrupt 1 /定时器0的中断处理程序TR0=0; TH0=(65536-control_period)/256;/(65536-INIT)%256 3ms TL0=(65536-control_per

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论