直流电机PWM调速系统的设计与仿真.doc

上传人:scccc 文档编号:13253507 上传时间:2021-12-20 格式:DOC 页数:17 大小:881.50KB
返回 下载 相关 举报
直流电机PWM调速系统的设计与仿真.doc_第1页
第1页 / 共17页
直流电机PWM调速系统的设计与仿真.doc_第2页
第2页 / 共17页
直流电机PWM调速系统的设计与仿真.doc_第3页
第3页 / 共17页
直流电机PWM调速系统的设计与仿真.doc_第4页
第4页 / 共17页
直流电机PWM调速系统的设计与仿真.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《直流电机PWM调速系统的设计与仿真.doc》由会员分享,可在线阅读,更多相关《直流电机PWM调速系统的设计与仿真.doc(17页珍藏版)》请在三一文库上搜索。

1、直流电机PWM调速系统的设计与仿真、引言1本课题设计的目的和要求1. 直流电机PW调速系统的目的:(1)熟悉直流电机PW调速系统的整体运行过程和总体布局(2)掌握该硬件电路的设计方法(3)掌握电机PWM调速系统程序的设计和调试2. 直流电机PWM调速系统的要求(1)可输入01范围的占空比,占空比可用电位器输入、拨码开关输入或键 盘输入。(2)设计电机驱动电路,根据输入的占空比控制电机转速。(3)检测电机转速,并用LED或LCD显示。(4)在PROTUE下仿真。二、系统总体框图与原理说明2.1总体方案原理及设计框图本设计是基于AT89C51为核心的直流调速器,由单片机控制和产生适合要求的 PWM

2、信号,该PWMS号通过驱动芯片电路进行直流调速,使输出电压平均值和功率可以 按照PWM&号的占空比而变化,从而达到对直流电机调速的目的。拨码开关输入01范围的占空比,用LCD1602作为主液晶显示器,显示 输入的占空比控制电机转速,能够实现 较好的人机交互。总体方案设计框图三、硬件电路图ifnri!二Z? C2mFEZZ7 C2rarD9AJ1LCD 1LI-M-iM.41-科>TbI d»X«£iC-XTKJ-KTIB<I 1KUM JKjfbA-bMVT«|Tr jdi和山cACFTPJ-jM!-iJF«i*r-jjir

3、rm iPJ.-Q3&FmF>lF-JJifiTFFm.Fl.-iTf-ii> kiJ-PT1站审P-lJWIM tEFI見哥!-?7z|23.1 PWM产生方式(1) pwm脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两 端的电压,从而达到控制要求的一种电压调整方法。PWM可以应用在很多方面,比如:电机调速、温度控制、压力控制等等。在PWM区动控制的调整系统中,按一个固定的频率来接通和断开的电源,并且根据 需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。正因为如此,

4、 PW又被称为“开关驱动装置” 。PWM波形如图所示:PW波形图3设电机始终接通电路时,电机转速最大为 Vmax,设占空比为:t1T则电机的平均转速为maxVa其中V a指的是电机的平均速度,V max是指电机在全通电时最大速度,D指的是占空比。 由上面的公式可见,当改变占空比 D时,就可以得到不同电机平均速度 Va,从而达到调 速的目的。(2)单片机片内软件生成PW信号PW信号采用单片机定时中断的方式软件模拟产生,这样实现比较容易,可以节约硬件成本。/=定时器 0 初始化设置=/=定时器 0 初始化设置=void Time0_lnit() /定时器0初始化函数TMOD=0x01; /定时器0

5、为工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; / 初始化为定时时间为 50msET0=1; /开定时器0中断TR0=1; /开定时器EA=1; /开总开关 /=定时器 0 中断服务程序=void timer0_server(void) in terrupt 3if(PWM_flag)TH0=(65536-PWM_data*200)/256;TL0=(65536-PWM_data*200)%256;PWM=1;PWM_flag=PWM_flag;elseTH1=(45536+PWM_data*200)/256;TL1=(45536+PWM_

6、data*200)%256; /初始化为定时时间为 20msPWM=0;PWM_flag=PWM_flag;3.2拨码开关模块的设计个占空比的本设计输入用8位的拨码开关,能产生256数值,每一种数值对应于值,当输入为256时,最大的占空比为99%能调节到最大的电机转速。4DSW1LM016L订 EXTPWn_Pr-ec.ent: 33%riotor Speed: 257CO Q LU0CO Q LU (Z) >O T- CXI CO 寸 99卜> > > tT K LU QQQQQQQQ3.3显示模块的设计本设计用LCD1602作为显示模块,它是一种专门用来显示字母、数

7、字、符号等的点 阵型液晶模块,可以显示两行,提供各种控制命令,如:清屏、字符闪烁、光标闪烁、 显示移位等多种功能。5LCD1LIXZ1O1GLPWn_Pe-c-ent =1not-on SRee-cJ =2 5 S望昼里 程走亠 8ES8388&3.4直流电机驱动模块本设计采用光电隔离器,光耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,然后把信号通过晶体管IRF640进行放大,驱动直流电机的驱动和调速。3.3模拟直流电机测速模块555定时器,构成简单的振荡电路,利用电阻和电容充放电原理,是输出端产生方 波信号,即可模拟简单的脉冲,代替电机的测速,电机测速一般都是利用

8、霍尔元件测出 电机转了多少圈,电机转一圈,霍尔元件检测电机触发的脉冲,贝U会输出响应的信号。 光电隔离主要用来处理控制部分和强电部分的信号,减少控制部分受强电的干扰。起隔 离作用。67二 02vTECl1 mF yT丘LJ3四、程序流程图8五、仿真说明(1)初始界面时,拨码开关没有设置 PWM直流电机处于停止状态,LCD1602显示PW为 000%在LCD上显示Motor_Speed为256,这就是在一定时间内低电平的数目。由于INTO是属于低电平输入中断类型的,根据这个原理再通过计数器T1来记录INT0的中断次数即是转速。9#(2)通过调节拨码开关的值,使占空比增大,从而使直流电机的转速变大

9、gOFFON1 l=MIZZMjADIPSW_8<TEX7DSW1-J#®.LCD1PUnJrtcenl: m llotor-Sp&ed: 256妙¥ECEuj 8231"巾可.-r六、心得体会本设计通过仿真基本能实现对直流电机的调速和测速。课程设计重点在于对单片机的 应用与理解,引入了 555芯片的使用与了解其作用,对掌握驱动直流电机的方法有一定得 要求,通过这几天网上的一些相关资料的查阅,顺利的完成了这个课程设计,但在仿真过 程中的一些细节问题上还有着纰漏,在电机的测速的模块的编程不够完美。通过本次课程设计,加深了之前的单片机知识和相应仿真软件的

10、使用。拓宽了本人 的知识面,拓展了视野和思维。设计一个直流电机调速系统,无论从学习还是实践的角度上来说,对电气专业的大学生都会产生积极的作用,有利于提高学习热情。周美娟潘新民王燕芳清华大学出版社 电子工业出版社参考文献:1. 单片机技术及系统设计2. 微型计算机控制技术实用教程附录#in clude<reg52.h>#in clude<math.h>#i ncludevstri ng.h>#in clude<absacc.h>#i nclude<lcd1602.h>/=#defi ne uchar un sig ned char#defi

11、ne uint un sig ned int/=#defi ne Data_Bus P1sbit PWM=P3A0;bit PWM_flag=0;un sig ned char Time_flag=0;un sig ned char DSW_data=0x00;un sig ned char PWM_data=0;un sig ned int Speed_data=0;un sig ned char PWM_Prece nt5=0x30,0x30,'%'un sig ned char MotorSpeed 5=0x30,0x30,0x30;/函数声明延时函数void delay

12、( uin t);void delay_ms( un sig ned int ii);/1msvoid get_PWM(void);void get_Speed(void);/=延时子函数= void delay( uint z)uint x,y;for(x=z;x>0;x_)for(y=110;y>0;y-);void delay_ms( un sig ned int ii)/1ms延时函数un sig ned int i,x;for (x=0;x<ii;x+)for (i=0;i<200;i+);=外部中断 0 初始化程序=void In it_i nt0(void

13、)EX0=1;开外部中断0IT0=1; 触发EA=1;/=外部中断 0 服务程序=void In t0_server(void) in terrupt 0EA=0;Speed_data+;EA=1;/=定时器 o 初始化设置= void TimeOnit() / 定时器0初始化函数TMOD=0x01; /定时器0为工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; / 初始化为定时时间为 50msET0=1; /开定时器0中断TR0=1; /开定时器EA=1; /开总开关/=定时器 0 中断服务程序= void Time0_Int() inter

14、rupt 1 /定时器 0 中断子函数TH0=(65536-50000)/256;TL0=(65536-50000)%256; / 初始化为定时时间为 50msTime_flag+;if(Time_flag=20)Time_flag=0;get_Speed();=定时器1初始化设置=计算方波数 void ini t_timer1(void)TMOD|=0x10; /定时器1为工作方式1 16bitTH1=0xFF;TL1=0xFE;ET1=1; /开定时器1中断TR1=1; /开定时器EA=1; /开总开关/=定 时器 1 中断服务程序=void timer1_server(void) in

15、terrupt 3 if(PWM_flag)TH1=(65536-PWM_data*200)/256;TL1=(65536-PWM_data*200)%256;PWM=1;PWM_flag=PWM_flag;elseTH1=(45536+PWM_data*200)/256;TL1=(45536+PWM_data*200)%256; / 初始化为定时时间为 20msPWM=0;PWM_flag=PWM_flag;=get_PWM= void get_PWM(void)DSW_data=Data_Bus;if(DSW_data=0x00)TR1=0;PWM=0;PWM_Prece nt0=0x30

16、;PWM_Prece nt1=0x30;elsePWM_data=DSW_data*100/256;PWM_Prece nt0=PWM_data/10+0x30;PWM_Prece nt1=PWM_data%10+0x30;TR1=1;=get_Speed= void get_Speed(void)MotorSpeed0=Speed_data/100+0x30;MotorSpeed1=Speed_data/10%10+0x30;MotorSpeed2=Speed_data%10+0x30;Speed_data=0;/- 主函数void main()PWM=0;get_PWM();In it_i

17、 nt0();Time0_l ni t();in it_timer1();LCDn it();/LCD1602初始化LCD_write_comma nd(0x01);/LCD 清屏delay_ms(10);DisplayChar(0,1,"PWM_Prece nt:");DisplayChar(13,1,PWM_Prece nt);DisplayChar(0,0,"Motor_Speed:");DisplayChar(13,0,MotorSpeed);while(1)get_PWM();DisplayChar(13,1,PWM_Prece nt);DisplayChar(13,0,MotorSpeed);16

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1