直流电机PWM调速系统的设计与仿真_第1页
直流电机PWM调速系统的设计与仿真_第2页
直流电机PWM调速系统的设计与仿真_第3页
直流电机PWM调速系统的设计与仿真_第4页
直流电机PWM调速系统的设计与仿真_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

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

2、和产生适合要求的PWM信号,该PWM信号通过驱动芯片电路进行直流调速,使输出电压平均值和功率可以按照PWM信号的占空比而变化,从而达到对直流电机调速的目的。拨码开关输入01范围的占空比,用LCD1602作为主液晶显示器,显示输入的占空比控制电机转速,能够实现较好的人机交互。拨码开关输入模块AT89c51单片机LCD1602显示模块电机驱动模块直流电机示波器显示PWM波形用压控振荡器(可用555电路构成)来模拟直流电机的运行总体方案设计框图三、硬件电路图3.1 PWM产生方式(1)PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。

3、PWM可以应用在很多方面,比如:电机调速、温度控制、压力控制等等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开的电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。正因为如此,PWM又被称为“开关驱动装置”。PWM波形如图所示:PWM波形图设电机始终接通电路时,电机转速最大为,设占空比为:则电机的平均转速为其中指的是电机的平均速度,是指电机在全通电时最大速度,D指的是占空比。由上面的公式可见,当改变占空比D时,就可以得到不同电机平均速度,从而达到调速的目的。(2)单片机片内软件生

4、成PWM信号PWM信号采用单片机定时中断的方式软件模拟产生,这样实现比较容易,可以节约硬件成本。/=定时器0初始化设置=/=定时器0初始化设置=void Time0_Init() /定时器0初始化函数TMOD=0x01; /定时器0为工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; /初始化为定时时间为50msET0=1; /开定时器0中断TR0=1; /开定时器EA=1; /开总开关/=定时器0中断服务程序= void timer0_server(void) interrupt 3 if(PWM_flag) TH0=(65536-PWM_da

5、ta*200)/256; TL0=(65536-PWM_data*200)%256; PWM=1; PWM_flag=PWM_flag; else TH1=(45536+PWM_data*200)/256; TL1=(45536+PWM_data*200)%256; /初始化为定时时间为20ms PWM=0; PWM_flag=PWM_flag; 3.2拨码开关模块的设计本设计输入用8位的拨码开关,能产生256数值,每一种数值对应于一个占空比的值,当输入为256时,最大的占空比为99%,能调节到最大的电机转速。3.3显示模块的设计本设计用LCD1602作为显示模块,它是一种专门用来显示字母、数

6、字、符号等的点阵型液晶模块,可以显示两行,提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。3.4直流电机驱动模块本设计采用光电隔离器,光耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,然后把信号通过晶体管IRF640进行放大,驱动直流电机的驱动和调速。3.3模拟直流电机测速模块555定时器,构成简单的振荡电路,利用电阻和电容充放电原理,是输出端产生方波信号,即可模拟简单的脉冲,代替电机的测速,电机测速一般都是利用霍尔元件测出电机转了多少圈,电机转一圈,霍尔元件检测电机触发的脉冲,则会输出响应的信号。光电隔离主要用来处理控制部分和强电部分的信号,减少控制部分

7、受强电的干扰。起隔离作用。四、程序流程图开始LCD1602、定时器t1和t0初始化拨码开关设置PWM值主函数把数据送到LCD1602,显示转速,并调节电机的转速等待重新设置PWM值YN五、仿真说明(1)初始界面时,拨码开关没有设置PWM,直流电机处于停止状态,LCD1602显示PWM为000% 在LCD上显示Motor_Speed为256,这就是在一定时间内低电平的数目。由于INT0是属于低电平输入中断类型的,根据这个原理再通过计数器T1来记录INT0的中断次数即是转速。(2)通过调节拨码开关的值,使占空比增大,从而使直流电机的转速变大。 六、心得体会本设计通过仿真基本能实现对直流电机的调速和

8、测速。课程设计重点在于对单片机的应用与理解,引入了555芯片的使用与了解其作用,对掌握驱动直流电机的方法有一定得要求,通过这几天网上的一些相关资料的查阅,顺利的完成了这个课程设计,但在仿真过程中的一些细节问题上还有着纰漏,在电机的测速的模块的编程不够完美。通过本次课程设计,加深了之前的单片机知识和相应仿真软件的使用。拓宽了本人的知识面,拓展了视野和思维。设计一个直流电机调速系统,无论从学习还是实践的角度上来说,对电气专业的大学生都会产生积极的作用,有利于提高学习热情。参考文献:1.单片机技术及系统设计 周美娟 清华大学出版社2.微型计算机控制技术实用教程 潘新民 王燕芳 电子工业出版社 附录#

9、include#include#include#include#include /=#define uchar unsigned char#define uint unsigned int/=#define Data_Bus P1sbit PWM=P30;bit PWM_flag=0;unsigned char Time_flag=0;unsigned char DSW_data=0x00;unsigned char PWM_data=0;unsigned int Speed_data=0;unsigned char PWM_Precent5=0x30,0x30,%;unsigned char

10、 MotorSpeed5=0x30,0x30,0x30;/-/- 函数声明 -void delay(uint);void delay_ms(unsigned int ii);/1ms延时函数void get_PWM(void);void get_Speed(void);/=延时子函数=void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void delay_ms(unsigned int ii)/1ms延时函数unsigned int i,x;for (x=0;xii;x+) for (i=0;i200;i+);/=外部中断

11、0初始化程序=void Init_int0(void) EX0=1;/开外部中断0 IT0=1;/触发 EA=1;/=外部中断0服务程序= void Int0_server(void) interrupt 0 EA=0; Speed_data+; EA=1;/=定时器0初始化设置=void Time0_Init() /定时器0初始化函数TMOD=0x01; /定时器0为工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256; /初始化为定时时间为50msET0=1; /开定时器0中断TR0=1; /开定时器EA=1; /开总开关/=定时器0中断服务程序

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

13、er1_server(void) interrupt 3 if(PWM_flag) TH1=(65536-PWM_data*200)/256; TL1=(65536-PWM_data*200)%256; PWM=1; PWM_flag=PWM_flag; else TH1=(45536+PWM_data*200)/256; TL1=(45536+PWM_data*200)%256; /初始化为定时时间为20ms PWM=0; PWM_flag=PWM_flag; /=get_PWM=void get_PWM(void) DSW_data=Data_Bus; if(DSW_data=0x00)

14、TR1=0; PWM=0; PWM_Precent0=0x30; PWM_Precent1=0x30; else PWM_data=DSW_data*100/256; PWM_Precent0=PWM_data/10+0x30; PWM_Precent1=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(); Init_int0(); Time0_Init(); init_timer1(); LCD_init(); /LCD1602初始化 LCD_write_command(0x01

温馨提示

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

评论

0/150

提交评论