基于单片机STC89C52的直流电机PWM调速控制系统
基于STC89C52的步进电机调速系统

目录摘要 (3)一课程设计目的 (4)二系统简介 (5)2.1 步进电机工作原理简介 (5)2.2 步进电动机的励磁方式 (5)2.2.1 二相励磁 (6)2.2.2 一-二相励磁 (6)2.3 步进电机基本参数 (7)2.4 闭环PID控制原理 (8)三方案选择 (8)3.1 控制器的选择 (8)3.2 显示器的选择方案 (8)3.3 转速信号采集方案 (8)3.4 电机驱动芯片的选择 (9)四硬件总体设计 (9)4.1 系统原理框图 (9)4.2 系统电路原理图 (9)五软件总体设计 (10)六功能模块介绍 (11)6.1硬件模块 (11)6.1.1 STC89C52RC型单片机最小系统 (11)6.1.2 ULN2003APG驱动电路 (11)6.1.3 74HC14E (12)6.1.4 测速模块 (12)6.1.5 显示电路 (13)6.2软件模块 (14)6.2.1 LCD显示模块 (14)6.2.2 键盘电机模块 (16)6.2.3 PWM模块 (17)6.2.4 测速模块 (18)七验证与测试 (19)7.1验证 (19)7.2测试 (19)7.3 运行结果 (20)八小组分工...................................................................................错误!未定义书签。
九设计中的问题...........................................................................错误!未定义书签。
十参考文献. (22)附录 (23)1. 完整程序 (23)2.原理图、仿真图、PCB图 (32)摘要步进电机是一种将电脉冲信号转换成相应的角位移或线位移的电磁机械装置,属于输出与输入脉冲对应的增量驱动元件。
它具有步进数可控,运行平稳,价格便宜等优点,广泛应用于数控机床、机器人控制、绘图仪、石英钟表等数字控制和自动控制系统中。
基于51单片机STC89C52RC的直流电机软件PWM控制的基本原理

基于51单片机STC89C52RC 的直流电机软件PWM 控制的基本原理电机驱动芯片L293D 介绍:在这里直流电机的控制采用L293D 芯片。
L293D 是一款单片集成的高电压、高电流、4通道电机驱动,设计用于连接标准DTL 或TTL 逻辑电平,驱动电感负载(诸如继电线圈、DC 和步进电机)和开关功率晶体管等等。
L293D 有4个通道,每个电机需要用到2个通道,以实现电机的正反转。
为了简化为双桥应用,L293D 每个通道对(IN1与IN2为1对;IN3与IN4为1对)都配备了一个使能输入端(IN1与IN2对应使能端EN1;IN3与IN4对应使能端EN2)。
L293D 具有如下特性:1、L293D 每个通道的电流输出能力达600 mA2、L293D 每个通道的峰值输出电流达1.2 A (非重复)3、便于使能4、L293D具有过温保护5、逻辑“0”输入电压高达1.5 V(高抗噪性)6、内置箝位二极管直流电机PWM调速基本原理:在脉宽调制(PWM)控制直流电机转速的情况下,电源并非连续地向直流电机供电,而是在一个特定的频率下为直流电机提供电能。
利用不同占空比的PWM调速方波信号,调节对直流电机的通断电,能起到对直流电机调速作用。
这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上。
这样,改变L293D始能端EN1和EN2上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了直流电机转速。
软件PWM调速实例介绍:通过执行软件延时交替改变EN1输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。
用到了IN1与IN2通道对,对应的直流电机接到OUT1和OUT2上。
/********************直流电机PWM调速******************* * 处理器:STC89C52RC* 开发环境:KEIL* 名称:PWM调速*******************************************************/#include<reg51.h>//电机驱动芯片L293D输入IO口sbit IN1=P1^3;sbit IN2=P1^4;sbit EN1=P1^2;//注意:对应的直流电机接到OUT1和OUT2上。
基于STC单片机的直流电机调速系统设计

毕业设计(论文)题目:姓名:专业:学院:继续教育学院学习形式:助学单位:指导教师:2014年7月毕业设计(论文)说明书题目院别:专业:班级:设计人:指导教师:毕业设计(论文)任务书一、题目:二、基础数据三、内容要求:1. 说明部分:2. 计算部分:3. 绘图部分:四、发给日期:年月日五、要求完成日期:年月日指导教师:系主任:年月日基于STC单片机的直流调速系统设计摘要本文介绍一种基于STC89C52单片机控制的PWM直流电机脉宽调速系统。
系统以廉价的STC89C52单片机为控制核心,以直流电机为控制对象。
从系统的角度出发,对电路进行总体方案论证设计,确定电路各个的功能模块之间的功能衔接和接口设置,详细分析了各个模块的方案论证和参数设置。
整个系统利用52单片机的定时器产生1K左右的PWM脉冲,通过快速光耦6N137实现控制单元与驱动单元的强弱电隔离,采用4个9013和2个9012构成的H桥电路实现对直流电机的调速,用光电编码盘完成测速功能。
关键词:STC89C52;PWM;光耦隔离;光电编码盘Design of DC speed control system based on STC singlechip microcomputerAbstractWith the development of science and technology, automatic control system has been widely used and development in all walks of life, which the application of the automatic speed control system plays a particularly important role. DC motor as AC motor as the structure is simple, cheap, easy to manufacture, easy to maintain, but it has a good start, braking performance, it is appropriate in a wide range of smooth speed, DC speed control system is still automatically speed control system in the main form. Motor control from simple to complex, and mature into the mainstream. With the development of power electronics technology, the switching speed is faster, easier to control the full-controlled power devices MOSFET and IGBT become mainstream, pulse width modulation technology showed a greater superiority: the main circuit line is simple, need to use the power components ; switching frequency, current continuous, harmonic, motor loss and fever are small; good low-speed performance, high-speed stability, and thus a wide speed range; rapid system response performance, dynamic immunityThe design of the 89C52 MCU as the core, using the C programming language to control, using MCU internal timer adjustable rectangular wave. Start and stop the keyboard as an input to control the DC motor speed and direction, the measurement of the speed of the motor, working principle and mathematical model of the DC motor and pulse width modulation (PWM) control principles and H-bridge circuit design, based on the basic principles of design a driver circuit, a PWM technique to control the motor, the purpose of calculation of the duty cycle to achieve precise speed control the photoelectric tube as well as the code disk to measure the speed of the motor to prevent the motor stall instead burn. Speed measured by four digital tube display.Keywords: STC89C52;PWM;Optocoupler isolation;photoelectric coded disk目录摘要 (I)Abstract (II)1前言 ................................................................................................................................................... I V1.1数字直流调速的意义............................................................................................................ I V1.2研究现状综述........................................................................................................................ I V1.2.1电气传动的发展现状同时 (V)1.2.2微处理器控制直流电机发展现状 (V)2系统总体方案论证 ........................................................................................................................... I X2.1系统方案比较与选择............................................................................................................ I X2.2系统方案描述........................................................................................................................ I X 3硬件电路的模块设计. (X)3.1驱动电路方案论证设计 (X)3.1.1驱动电路方案、参数描述........................................................... 错误!未定义书签。
毕业设计(论文)基于单片机的pwm直流调速系统设计

基于单片机的PWM直流调速系统设计摘要随着时代的进步和科技的发展,电机调速系统在工农业生产、交通运输以及日常生活中起着越来越重要的作用,因此,对电机调速的研究有着积极的意义.长期以来,直流电机被广泛应用于调速系统中,而且一直在调速领域占居主导地位。
基于单片机的直流电机调速系统硬件电路的标准化程度高,制作成本低,且不受器件温度漂移的影响。
其控制软件能够进行逻辑判断和复杂运算。
系统的稳定性好,可靠性高。
直流电动机具有优良的起、制动性能,宜于在广泛范围内平滑调速。
在轧钢机、矿井卷机、挖掘机、金属切削机床、造纸机、高层电梯等领域中得到广泛应用。
本设计是基于单片机控制的PWM直流电机调速系统,系统以AT89C52单片机为核心,以2A、1000r/min小直流电机为控制对象,以L298N为H桥驱动芯片实现速度、电流反馈双闭环。
采用PID控制算法,调节PWM占空比从而控制电机两端电压,以达到调速的目的。
用4*3键盘输入有关控制信号及参数,可以实现电机的启制动、正反转、速度调节。
并在4位LED上实时显示输入参数及动态转速。
关键词:单片机、直流电机、PWM、PIDBased on SCM PWM dc speed control system designAbstractWith the progress of The Times and the development of science and technology, motor speed system in agricultural production, transportation and daily life plays a more and more important role in motor speed, therefore, the research has positive significance. For a long time, have been widely applied in dc motor control system, and has been inhabited areas in speed dominant. Based on SCM dc motor speed control system of high degree of standardization of hardware circuit, low cost, and the temperature drift. Device, The control software to logic and complex operation. The system has good stability and reliability. Dc motor with excellent, braking performance, and in a wide range smooth speed. In the mill, mine machine, excavator, metal cutting machine, paper machine, high-level elevator is widely used in the fields.The design is based on single chip microcomputer control system of dc motor control PWM, by AT89C52 singlechip system, and 1000r/min small double-a dc motor to control, L298N H bridge to drive chip realize speed, double loop current feedback. PID control algorithm, regulate and control PWM occupies emptiescompared to achieve both voltage motor speed. Use 4 * 3 keyboard input signal and the relevant control parameters, can realize the rev brake motor speed regulation, and positive &negative. And in four LED on real-time display input parameters and dynamic speed.Keywords:monolithic integrated circuits, a direct motor,PWM,PID目录基于单片机的PWM直流调速系统设计 (I)摘要 (I)Abstract (II)第一章绪论 (1)1.1课题背景 (1)1.2课题功能 (1)第二章系统硬件电路的设计 (2)2.1 系统总体设计 (2)2.1.1 系统总体设计框图 (2)2.1.2单片机的选择及其简介 (2)2.1.3 其他芯片简介 (6)2.2 PWM信号发生电路设计 (18)2.2.1 PWM的基本原理 (18)2.2.2 PWM信号发生电路设计 (20)2.2.3 H桥芯片的工作原理 (21)2.3 主电路设计 (24)2.4 转速和电流的测量 (24)2.5 AD转换 (26)2.6显示与键盘电路 (26)第三章系统软件程序的设计 (27)3.1 PID控制算法原理及流程图 (27)3.2 系统部分程序的设计 (29)3.2.1 单片机资源分配 (29)3.2.2 程序流程图 (30)结论 (32)参考文献 (34)附录................................................................................................ 错误!未定义书签。
基于89C52的双极性PWM直流电机调速程序

/**********************************************************************本实验是基于普中科技的开发板设计直流电动机双极性PWM调速实验。
*设计要求:k1控制电机正转,k2控制电机反转,k3控制电机加*速,k4控制电机减速,k5控制电机停止。
数码管显示电机转向,*速度。
实验所用电机为12V。
自带增量式光电编码器。
*电机正转时占空比>50%,且占空比越大,转速越快。
反转时占空比<50%,*且占空比越小,转速越快。
反转时数码管示数越小,转速越快。
**********************************************************************/#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit BRA=P2^5; // 刹车,接LM18200的BRA端//sbit DIR=P2^6; // 转向,不用接sbit PWM=P2^7; // 调速,接LM18200的DIR端,LM18200的PWM端口接+5V电源sbit k1=P1^0; //正转sbit k2=P1^1; //反转sbit k3=P1^2; //加速sbit k4=P1^3; //减速sbit k5=P1^4; //停止sbit ls138a=P2^2;sbit ls138b=P2^3;sbit ls138c=P2^4;uchar flag; //方向标志位uchar speed=50; //初始转速uint quan_num; //圈数,本实验中不用测圈数//uint pwm_on=50;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,// 0 1 2 3 40x6d,0x7d,0x07,0x7f,0x6f,0x40};// 5 6 7 8 9 -void delay(uint x){uchar i;while(x--){for(i=0;i<110;i++);}}/***************************************************************** 名称:init()* 功能:初始化函数,设置串口,定时器0,定时器1* 输入:无* 输出:无****************************************************************/void init(){TMOD=0x01;//定时器0工作在模式1,产生PWM波TH0=0xff; //定时100usTL0=0xa4;// IT0=1; //IT0=0低电平触发,IT0=1下降沿触发TR0=1; //开定时器0ET0=1; //开定时器0中断EA=1; //开总中断// IP=0x02;}/**************************************************************** * 名称:display()* 功能:显示子函数,显示圈数,转速和转向* 输入:圈数,转速,转向* 输出:无****************************************************************/ /*void display_sum(uint num) //圈数显示{P0=table[num%1000/100]; //显示圈数百位ls138a=1;ls138b=0;ls138c=1;delay(1);P0=table[num%100/10]; //显示圈数十位ls138a=0;ls138b=1;ls138c=1;delay(1);P0=table[num%10]; //显示圈数个位ls138a=1;ls138b=1;ls138c=1;delay(1);}*/void display_speed(uchar num) //转速显示{P0=table[num%100/10]; //显示转速十位ls138a=1;ls138b=1;ls138c=0;delay(1);P0=table[num%10]; //显示转速个位ls138a=0;ls138b=0;ls138c=1;delay(1);}void display_dir(uchar num) //方向显示{P0=table[num];ls138a=0;ls138b=1;ls138c=0;delay(1);}/**************************************************************** * 名称:dispose()* 功能:正反转加减速子函数* 输入:无* 输出:正转转速范围55-95r/min,反转转速范围5-45r/min****************************************************************/ void dispose() //按键处理{if(k5==0) //停止{// EX0=0; //关外部中断0BRA=1; //刹车}if(k1==0) //正转,转向显示0{// EX0=1; //开外部中断0BRA=0; //关刹车speed=70;PWM=1; //开电机flag=0; //电机正转标志}while(k1==0); //等待按键松开if(k2==0) //反转,转向显示1{// EX0=1; //开外部中断0BRA=0; //关刹车speed=30;PWM=1; //开电机flag=1; //电机反转标志}while(k2==0); //等待按键松开if(k3==0){delay(10);if(k3==0) //加速{if(speed>50) //正转0加速{speed=speed+5;if(speed==100){speed=95;}}if(speed<50) //反转1加速,示数越小,占空比越大,转速越快{speed=speed-5;if(speed==0){speed=5;}}}}while(k3==0); //等待按键松开if(k4==0) //减速{delay(10);if(k4==0){if(speed>50) //正转0减速{speed=speed-5;if(speed==50){speed=55;}}if(speed<50) //反转1减速,示数越大,占空比越小,转速越慢{speed=speed+5;if(speed==50){speed=45;}}}}while(k4==0);//等待按键松开}void main(){init();PWM=0;//关电机BRA=0;//关电机刹车while(1){dispose(); //按键处理display_speed(speed); //显示速度// display_sum(quan_num); //显示圈数display_dir(flag); //显示转向}}/**************************************************************** * 名称:timer0()* 功能:定时器0子函数,产生PWM波* 输入:无* 输出:无****************************************************************/ void timer0()interrupt 1 //PWM频率为1/(100us*100)=10k Hz{uchar count;TH0=0xff; //100usTL0=0xa4;if(count==speed){PWM=0; //关电}count++;if(count>=100){count=0;if(speed!=0)//如果时间是0,保持原来状态PWM=1; //开电}}/**************************************************************** * 名称:int0()* 功能:外部中断0子函数* 输入:脉冲* 输出:电机旋转圈数****************************************************************/ /*void int0() interrupt 0{uint a;if(++a>=512) //记每圈的脉冲数{a=0;quan_num++;if(quan_num>=999){quan_num=0;}}}*/。
基于AT89C52单片机的直流电机调速系统的设计

基于AT89C52单片机的直流电机调速系统的设计摘要:本设计以AT89C52单片机为控制核心,利用数模转换器DAC0832将单片机输出数字信号转换为电压值来实现对直流电机转速的调节和档位设置。
直流电机转速与档位的设置通过数码管显示来实现。
该系统具有调速精度高和调试简单的特点。
关键词:直流电机单片机转速调节DAC0832DC Motor Speed Control System based on MCU(Department of Electronic Information,Northeastern University at QinhuangdaoQinhuangdao hebei 066004,China)Abstract: The design for the control of AT89C52 microcontroller core, microcontroller output by digital to analog converter DAC0832 will convert digital signals to achieve the voltage regulation of DC motor speed and gear settings. DC motor speed and gear settings to achieve through the digital display. The system has high accuracy and easy adjustment, speed control features.Key Words: DC Motor MCU Speed control DAC0832引言:直流电机具有良好的调速性能因此在在日常生活中被广泛使用。
而随着科学水平的提高,直流电机转速的精确程度,反应速度等主要性能也越来越引起人们的重视。
本文以AT89C52单片机为核心控制器,通过DAC0832为数模转换芯片将单片机输出端数字信号转化为直流电机的电压值,从而达到简单方便,调节精度高,低功耗的特点。
89C52单片机直流电机控制器设计

89C52单片机直流电机控制器设计【摘要】本论文介绍了基于89C52单片机的小功率直流电机控制系统。
该系统主要功能为:设定直流电机的转速和转向,通过光电开关对电机测速,将测得的转速值反馈给单片机,单片机经PI运算后输出PWM信号控制电机运转。
实际测试结果表明该系统的转速误差范围小(〒20圈/分),调整时间短,转速设定方便快捷,显示直观清楚。
本文还对此系统的性能指标进行了分析。
【关键词】直流电机,PWM,PID1.前言由于单片机具有体积小、集成度高、运算速度快、运行可靠、应用灵活、价格低廉以及面向控制等特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到广泛的应用,而且发展非常迅猛。
随着单片机应用技术水平不断提高,目前单片机的应用领域已经遍及几乎所有的领域。
现在国内外工业上对电机的调速基本已经不再使用模拟调速,而采用数字调速系统,而数字调速系统大部分都是用单片机来进行控制,数字调速系统具有控制精确度高,非常稳定,受环境影响小,效率高等优点,所以在国内外的使用越来越广泛。
与交流电动机相比,直流电机结构复杂、成本高、运行维护困难,但是直流电机具有良好的调速性能、较大的启动转矩和过载能力强等许多优点,因此在许多行业仍大量应用。
近年来,直流电动机的机构和控制方式都发生了很大的变化。
随着计算机进入控制领域以及新型的电力电子功率元器件的不断出现,采用全控型的开关功率元件进行脉宽调制(Pulse Width Modulation,简称PWM)已成为直流电机新的调速方式。
这种调速方法具有开关频率高、低速运行稳定、动态性能良好、效率高等优点,更重要的是这种控速方式很容易在单片机控制系统中实现,因此具有很好的发展前景[1]。
1.1 有关技术简介1.1.1 PWM控制[1]PWM(Pulse Width Modulation)——脉冲宽度调制,简称脉宽调制,是一种最初用语无线电通信的信号调制技术,后来在控制领域中(比如电机调速)也得到了很好的应用,于是形成了独特的PWM控制技术。
STC89C52单片机直流电机的设计

摘要近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流电机具有优良的调速特性:调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,满足生产过程自动化系统各种不同的特殊要求。
本系统以STC89C52单片机为核心,通过内部定时器产生PWM波形,控制LN298大功率H桥路驱动直流电机已达到控制转速的目的。
通过数码管将速度等级显示出来,此外分别从主控制芯片的选择、显示电路的比较与选择、电机调速控制模块、电源电路与电机驱动电路四个方面进一步确定系统的总体设计方案,最后通过数码管LED显示程序设计以及电机控制子程序完成实验步骤,并在结论部分对系统调试过程中的常见的故障分析和注意事项做出了摘要说明,具有一定的理论和实际意义。
关键词:STC89C52;双向可逆控制系统;PWM调速;目录绪论 (1)1系统总体方案 (3)1.1 主控制芯片的选择 (3)1.2 显示电路的比较与选择 (4)1.3 电机调速控制模块 (4)1.4 电源电路与电机驱动电路 (4)2系统硬件方案设计 (5)2.1 系统总电路框图设计 (5)3.2 系统模块电路设计及原理 (5)3.2.1单片机最小系统设计 (5)3.2.2直流电机的调速设计 (8)3.2.3 测速发电机 (9)3.2.4 数码管显示电路设计 (9)3.2.5 L298N驱动电路设计 (11)3.2.6 按键电路电路设计 (13)3系统的软件设计 (15)3.1 系统的整体程序流程图 (15)4.2 数码管LED显示程序设计 (15)4.3 电机控制子程序 (16)5系统调试 (18)5.1 常见的故障分析 (18)5.2 系统调试注意事项 (18)结论 (18)参考文献 (19)附录一硬件原理图 (21)附录二程序源代码 (22)致谢 (24)绪论(1)课题研究的背景近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流电机具有优良的调速特性:调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,满足生产过程自动化系统各种不同的特殊要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:前言Pwm 电机调速原理对于电机的转速调整,我们是采用脉宽调制(PWM)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。
不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端EN1 和EN2 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。
此电路中用微处理机来实现脉宽调制,通常的方法有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。
(2)硬件实验自动产生PWM 信号,不占用CPU 处理的时间。
这就要用到STC89C52的在PWM模式下的计数器1,具体内容可参考相关书籍。
51 单片机PWM 程序产生两个PWM,要求两个PWM 波形占空都为80/256,两个波形之间要错开,不能同时为高电平!高电平之间相差48/256,PWM 这个功能在PIC 单片机上就有,但是如果你就要用51 单片机的话,也是可以的,但是比较的麻烦.可以用定时器T0来控制频率,定时器T1 来控制占空比:大致的的编程思路是这样的:T0 定时器中断是让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1 是让IO 口输出低电平,这样改变定时器T0 的初值就可以改变频率,改变定时器T1 的初值就可以改变占空比。
前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。
近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过 PWM 方式控制直流电机调速的方法就应运而生。
采取传统的调速系统主要有以下的缺陷:模拟电路容易随时间飘移,会产生一些不必要的热损耗,以及对噪声敏感等。
而用PWM 技术后,避免上述的缺点,实现了数字式控制模拟信号,可以大幅度减低成本和功耗。
并且 PWM 调速系统开关频率较高,仅靠电枢电感的滤波作用就可以获得平滑的直流电流,低速特性好;同时,开关频率高,快响应特性好,动态抗干扰能力强,可获很宽的频带;开关元件只需工作在开关状态,主电路损耗小,装置的效率高,具有节约空间、经济好等特点。
随着我国经济和文化事业的发展,在很多场合,都要求有直流电机 PWM 调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。
本设计任务:任务: 单片机为控制核心的直流电机PWM 调速控制系统设计的主要内容以及技术参数:功能主要包括:1) 直流电机的正转;2) 直流电机的反转;3) 直流电机的加速;4) 直流电机的减速;5) 直流电机的转速在数码管上显示;6) 直流电机的启动;7) 直流电机的停止;第二章:总体设计方案总体设计方案的硬件部分详细框图如图一所示。
数码管显示按键控制单片机PWM 电机驱动键盘向单片机输入相应控制指令,由单片机通过与其中一口输出与转速相应的PWM 脉冲,另一口输出低电平,经过信号放大、光耦传递,驱动H 型桥式电动机控制电路,实现电动机转向与转速的控制。
电动机的运转状态通过数码管显示出来。
电动机所处速度级以速度档级数显示。
正转时最高位显示“三” ,其它三位为电机转速;反转时最高位显示“F”,其它三位为电机转速。
每次电动机启动后开始显示,停止时数码管显示出“0000”。
1、系统的硬件电路设计与分析电动机PWM 驱动模块的电路设计与实现具体电路见下图。
本电路采用的是基于PWM 原理的H 型桥式驱动电路。
PWM 电路由复合体管组成H 型桥式电路构成,四部分晶体管以对角组合分为两组:根据两个输入端的高低电平决定晶体管的导通和截止。
4 个二极管在电路中起防止晶体管产生反向电压的保护作用,防止电动机两端的电流和晶体管上的电流过大的保护作用。
在实验中的控制系统电压统一为 5v 电源,因此若复合管基极由控制系统直接控制,则控制电压最高为 5V,再加上三极管本身压降,加到电动机两端的电压就只有 4V 左右,严重减弱了电动机的驱动力。
基于上述考虑,我们运用了TLP521-2 光耦集成块,将控制部分与电动机的驱动部分隔离开来。
输入端各通过一个三极管增大光耦的驱动电流;电动机驱动部分通过外接12V 电源驱动。
这样不仅增加了各系统模块之间的隔离度,也使驱动电流得到了大大的增强。
在电动机驱动信号方面,我们采用了占空比可调的周期矩形信号控制。
脉冲频率对电动机转速有影响,脉冲频率高连续性好,但带带负载能力差脉冲频率低则反之。
经实验发现,当电动机转动平稳,但加负载后,速度下降明显,低速时甚至会停转;脉冲频率在 10Hz 以下,电动机转动有明显跳动现象。
而具体采用的频率可根据个别电动机性能在此范围内调节。
通过 P10 输入高电平信号,P11 输入低电平,电机正转;通过P10 输入低电平信号,P11 输入高电平,电机反转;P10、P11 同时为高电平或低电平时,电机不转。
通过对信号占空比的调整来对电机转速进行调节。
2、系统的软件设计本系统编程部分工作采用KELI-C51 语言完成,采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别和功能、PWM 脉宽控制和数码管显示等部分的设计。
单片机资源分配如下表:①PWM 脉宽控制:本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:/*****************延时函数*************************/delays(){uchar i;for(i=5000;i>0;i--);}②键盘中断处理子程序:采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。
要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。
③显示子程序:利用数组方式定义显示缓存区,缓存区有8 位,分别存放各个数码管要显示的值。
④定时中断处理程序:采用定时方式1,因为单片机使用12M 晶振,可产生最高约为的延时。
对定时器置初值 B1E0H 可定时 20ms,即系统时钟精度可达。
当20ms 定时时间到,定时器溢出则响应该定时中断处理程序,完成对定时器的再次赋值,并对全局变量time 加1,这样,通过变量time 可计算出系统的运行时间。
3、软件设计中的特点:对于电机的启停,在PWM 控制上使用渐变的脉宽调整,即开启后由停止匀加速到默认速度,停止则由于当前速度逐渐降至零。
这样有利于保护电机。
键盘处理上采用中断方式,不必使程序对键盘反复扫描,提高了程序的效率。
第三章:系统硬件电路设计第四章:系统功能调试3、输出波形如下:4、加速分5 档,波形依次如下:5、减速分5 档,波形如下:第五章:程序/************头文件*********/#include<>#include<>#include <>/************************** //********自定义变量********/#define uint unsigned int //自定义变量#define uchar unsigned charchar gw,sw,bw,qw;uchar j; //定时次数,每次20msuchar f=5; //计数的次数sbit P10=P1^0; //PWM 输出波形 1sbit P11=P1^1; //PWM 输出波形 2sbit P12=P1^2; //正反转sbit P13=P1^3; //加速sbit P14=P1^4; //减速sbit P15=P1^5; //停止sbit P16=P1^6; //启动uchar k;uchar t; //脉冲加减/**************************/*/*********控制位定义********************/uchar code smg[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x71};// 程序存储区定义字型码表char data led[4]={0x08,0x04,0x02,0x01}; //位码uint x; //数码管显示的数值display(); //数码管显示delays(); //延时函数key();displays();/*****************************************//***************主函数********************/main (void){TMOD=0x51; //T0 方式1 定时计数T1 方式1 计数TH0=0xb1; //装入初值20MSTL0=0xe0;TH1=0x00; // 计数567TL1=0x00;TR0=1; //启动t0TR1=1; //启动t1gw=sw=bw=qw=0; //数码管初始化P0=0xc0;P2=1;while(1) //无限循环{display(); //数码管显示key();}}/*****************************************//***************数码管显示****************/display(){uchar i;gw=x%10; //求速度个位值,送到个位显示缓冲区sw=(x/10)%10; //求速度十位值,送到十位显示缓冲区bw=(x/100)%10; //求速度百位值,送到百位显示缓冲区qw=x/1000; //求速度千位值,送到千位显示缓冲区for(i=0;i<4;){P2=led[i];if(i==0) //显示个位{P0=smg[gw];delays();}else if(i==1) //显示十位{P0=smg[sw];delays();}else if(i==2) //显示百位{P0=smg[bw];delays();}else if(i==3) //显示千位{if(k==0) //正转时显示"三"{P0=0x49;delays();}else{i++; }}P0=0x71; //反转时显示"F" }}/*******************************************************//*****************延时函数*************************/delays(){uchar i;for(i=5000;i>0;i--);}/************************************************//*********t0 定时*中断函数*************/void t0() interrupt 1 using 2{TH0=0xb1; //重装t0TL0=0xe0;f--;if(k==0){if(f<t)P10=1;elseP10=0;P11=0;}else{if(f<t)P11=1;elseP11=0;P10=0;}if(f==0){ f=5;}j++;if(j==50){j=0;x=TH1*256+TL1; //t1 方式1 计数,读入计数值TH1=0x00;TL1=0x00;x++;display();}}/****************按键扫描**************/ key(){if(P12==0) //如果按下,{while(!P12) //去抖动display();k=~k;}if(P16==0) //启动{while(P16==0);IE=0x8a;}if(P13==0) //加速{while (P13==0);t++;}if(t>=5)t=5;if(P14==0) //减速{while(P14==0);t--;}if(t<1)t=1;if(P15==0) //停止{while(P15==0);EA=0;P10=0;P11=0;}}/******************************************************/。