51单片机控制直流电机PWM调速
基于MC51单片机的直流电机PWM调速系统汇总

基于MC51单片机的直流电机PWM调速系统摘要本文介绍一种基于MC51单片机控制的PWM直流电机脉宽调速系统,并且系统采用转速与电流双闭环检测,将直流电机的转速与电流信息及时反馈给单片机,借助于软件编程使单片机及时调整输出PWM的占空比来对直流电机进行工作范围内调速。
系统以廉价的MC51单片机为控制核心,以直流电机为控制对象。
从系统的角度出发,对电路进行总体方案论证设计,确定电路各个的功能模块之间的功能衔接和接口设置,详细分析了各个模块的方案论证和参数设置。
整个系统利用51单片机的定时器产生10K 左右的PWM脉冲,通过带有功率驱动作用的TLP250光耦实现控制单元与驱动单元的强弱电隔离,采用2片IGBT和MOSFET等一类电压型功率开关管专用驱动芯片IR2110,驱动IGBT—FGA25N120构成的H桥电路实现对直流电机的调速,利用AH49E线性霍尔元件与A DC0809制作成电流与转速传感器分别测量电机的电枢电流与转速,再配合利用TL431、线性光耦PC817和A DC0809实现系统的PID双闭环控制,提高整个系统的智能化、自动化水平,为工业生产应用提供可能。
关键字MC51,PWM,光耦隔离, PID ,IR2110,IGBTAbstractThis article describes the MC51 Microcontroller based DC motor PWM pulse width speed control system, and the system uses the speed and current dual-loop detection, the DC motor speed and current information and timely feedback to the microcontroller, by means of software programming the microcontroller to adjust the output PWM duty cycle to work on the range of DC motor speed control. Cheap MC51 SCM system as the control center for the control of a DC motor object. From the system point of view, the circuit design of the overall demonstration program to determine the function of each circuit module and the interface between the functional interface settings, detailed analysis of the demonstration program of each module and parameter settings. Microcontroller using the system timer 51 of about 10K PWM pulse generated by the role with a power drive control unit and TLP250 optocoupler drive unit to achieve the strength of electrical isolation, the use of two IGBT and MOSFET, and other similar voltage power switch dedicated driver chips IR2110, driving IGBT-FGA25N120 H bridge circuit composed of DC motor speed control, the use of linear Hall element and ADC0809 AH49E made into current and speed sensors were used to measure the motor armature current and speed, coupled with the use of TL431, linear optocoupler PC817 and the ADC0809 to achieve double-loop PID control system to improve the whole system of intelligent, automated level of applications for industrial production possible.Keywords MC51, PWM, opto isolation, PID, IR2110, IGBT目录摘要 (1)1.前言 (5)1.1数字直流调速的意义 (5)1.2研究现状综述 (6)1.2.1电气传动的发展现状 (6)1.2.2微处理器控制直流电机发展现状 (6)1.3直流电动机调速概述 (7)1.3.1直流电机调速原理 (7)1.3.2直流调速系统实现方式 (9)2.系统总体方案论证 (11)2.1系统方案比较与选择 (11)2.2系统方案描述 (12)3.硬件电路的模块设计 (14)3.2逻辑延时电路方案论证设计 (19)3.3驱动电路方案论证设计 (20)3.3.1驱动电路方案、参数描述 (20)3.3.2 IR2110驱动电路中IGBT抗干扰设计 (22)3.3.3 IR2110功率驱动介绍 (24)3.3.3.1 IR2100内部结构原理图及管脚说明 (24)3.3.3.2 IR2110的自举电路 (25)3.3.3.3 IGBT H桥驱动电路原理 (26)3.4隔离电路方案论证设计 (31)3.4.1 TLP250光耦隔离 (31)3.5稳压可调电源设计 (32)3.6速度反馈环设计 (34)3.6.1脉冲信号的获得 (34)3.6.2测速电路硬件电路设计 (35)4.2主要程序设计分析 (46)4.2.1定时器0中断服务函数 (46)4.2.2占空比调节函数 (46)4.2.3 PID控制算法程序如下: (47)7.参考文献 (49)1.前言1.1数字直流调速的意义现在电气传动的主要方向之一是电机调速系统采用微处理器实现数字化控制。
基于51系列单片机的直流电机PWM调速系统设计

基于51系列单片机的直流电机PWM调速系统设计
随着社会的发展,直流电机作为机械设备中重要的驱动件,已经被越来越多的应用起来,而PWM(脉冲宽度调制)技术是控制直流电机转速的有效方法。
本文介绍了一种基于
51系列单片机的直流电机PWM调速系统设计,该调速系统可以实现对直流电机的转速调节。
首先,本文详细描述了该调速系统的硬件结构,包括51系列单片机控制器,PWM模块,旋转编码器,按键,LED指示灯,直流电机等构成组件。
其中,51系列单片机控制器负责
信号的采集和处理,PWM模块负责调节直流电机的转速,旋转编码器负责实时测量直流电
机的转速,按键和LED指示灯则用于进行键盘操作和系统状态指示。
接着,本文提出了该系统的主要程序流程设计。
首先,通过旋转编码器获取当前直流
电机的转速,并经过51系列单片机的实时校准,作为调节直流电机的转速的PWM信号的
参考值。
然后,通过按键输入参考值,调节PWM模块的输出比例,从而调节直流电机的转速。
最后,将调节结果通过LED指示灯反馈出来,用于系统状态的指示。
整个调速系统的设计都在51系列单片机上完成,功能完善。
基于51单片机的PWM直流电机调速系统的开题报告

基于51单片机的PWM直流电机调速系统的开题报告一、选题背景无人机、智能小车、智能家居等智能设备的出现给我们的生活带来了很多便利,这些设备中大多数都是由直流电机驱动,而直流电机的速度控制非常关键。
基于此,本次毕业设计选题基于51单片机实现PWM控制直流电机转速。
通过选题研究,可以学习到单片机控制电机的基本原理、PWM技术的应用、电机控制电路的搭建、硬件电路的设计等方面的知识。
二、选题意义本次设计选题的实现可以为直流电机的调速提供有效的解决方案。
同时,通过研究不同类型的电机控制方法,可以有效提高电机控制的精度和灵活性,丰富我们的电子知识储备。
三、研究内容通过研究,本次设计的具体内容包括以下几个方面:1. 了解直流电机的基本工作原理及其特性。
2. 介绍51单片机的基本原理,编写程序控制单片机输出PWM信号。
3. 建立电机控制电路,使用PWM信号控制直流电机转速。
4. 通过实验对电机的控制效果进行验证,分析控制效果与不同参数的关系,优化控制方法。
四、研究方法本次设计选题的研究方法主要包括理论分析和实验验证两个部分。
1. 理论分析:通过学习相关理论知识,了解控制电路的原理、调速器的设计方法等。
2. 实验验证:建立实验平台进行实验验证,通过实验数据分析调试电路、程序。
五、预期目标通过本次毕业设计的研究,预期达到以下目标:1. 掌握51单片机的编程基本知识。
2. 了解 PWM 技术的原理,掌握 PWM 频率、占空比的调节方法。
3. 了解直流电机的基本工作原理及其特性,建立电机控制电路进行控制。
4. 能够根据实验数据分析控制效果与不同参数的关系,优化控制方法并提高控制效果。
六、论文结构本次毕业设计选题所涉及的论文结构如下:第一章:绪论1.1 研究背景及选题意义1.2 研究目的和意义1.3 研究现状和发展趋势1.4 研究内容和方法第二章:理论分析2.1 直流电机的基本原理2.2 51单片机的基本原理2.3 PWM技术的基本原理2.4 电机控制电路设计第三章:系统设计3.1 硬件设计3.2 调速器设计3.3 程序设计第四章:系统实现与测试4.1 数据采集与实验测试4.2 实验结果分析4.3 结果优化与改进第五章:总结与展望5.1 工作总结5.2 未来研究方向参考文献。
51单片机控制直流电机PWM调速

51单片机控制直流电机PWM调速
实验目的
1.掌握脉宽调制(PWM) 的方法。
2.用程序实现脉宽调制,并对直流电机进行调速控制。
实验设备
PC 机一台,单片机最小系统,驱动板、直流电机,连接导线等
实验原理
1.PWM (Pulse Width Modulation) 简称脉宽调制。
即,通过改变输出脉冲
的占空比,实现对直流电机进行调压调速控制。
2.实验线路图:
实验内容:
1. 利用实验室提供的单片机应用系统及直流电机驱动电路板,编制控制程序,实现直流电机PWM调速控制。
实验思考题
本实验中是通过改变脉冲的占空比,周期T 不变的方法来改变电机转速的,还有什么办法能改变电机的转速,应该怎么实现?
附件:
L298简介:
L298N 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。
基于C51单片机的直流电机PWM调速控制(包含原理图及C源代码)

基于C51单片机的直流电机PWM调速控制--SQ这是最近一阶段自己学习所获,现分享与大家。
这里采用A T89C52单片机做主控制芯片,实现两路直流电机的PWM调速控制,另外还可以实现转向、显示运行时间、显示档位等注:考虑小直流电机自身因素,调速范围仅设有四级电路原理图:C语言程序源代码:/******************** 硬件资源分配*********************/数码管:显示电机状态(启停、正反、速度)、运行时间、是否转弯按键:K4 启动/暂停K3 正反转/转弯允许K2 加速/左转/运行时间清零K1 减速/右转/停止定时器:T0 数码管动态显示,输出PWMT1 运行时间记录********************************************************//*******主程序文件PWM.c******/#include <reg52.h>#include "Afx.h"#include "Config.c"#define CIRCLE 5 //脉冲周期//按键定义uchar key,key_tmp=0, _key_tmp=0;//显示定义uchar LedState=0xF0; //LED显示标志,0xF0不显示,Ox00显示uchar code LED_code_d[4]={0xe0,0xd0,0xb0,0x70}; //分别选通1、2、3、4位uchar dispbuf[4]={0,0,0,0}; //待显示数组uchar dispbitcnt=0; //选通、显示的位uchar mstcnt=0;uchar Centi_s=0,Sec=0,Min=0; //分、秒、1%秒//程序运行状态标志bit MotState=0; //电机启停标志bit DirState=0; //方向标志0前,1后uchar State1=-1;uchar State2=-1;uchar State3=0;uchar State4=-1;uchar LSpeed=0;uchar RSpeed=0;//其他uint RunTime=0;uint RTime_cnt=0;uint LWidth;uint RWidth; //脉宽uint Widcnt=1;uint Dispcnt;//函数声明void key_scan(void);void DisBuf(void);void K4(void);void K3(void);void K2(void);void K1(void);void disp( uchar H, uchar n );void main(void){P1|=0xF0;EA=1;ET0=1;ET1=1;TMOD=0x11;TH0=0xFC;TL0=0x66; //T0,1ms定时初值TH1=0xDB;TL1=0xFF; //T1,10ms定时初值TR0=1;Widcnt=1;while(1){key_scan();switch(key){case 0x80: K1(); break;case 0x40: K2(); break;case 0x20: K3(); break;case 0x10: K4(); break;default:break;}key=0;DisBuf();LWidth=LSpeed;RWidth=RSpeed;}}//按键扫描**模拟触发器防抖void key_scan(void){key_tmp=(~P3)&0xf0;if(key_tmp&&!_key_tmp) //有键按下{key=(~P3)&0xf0;}_key_tmp=key_tmp ;}//按键功能处理/逻辑控制void K4(void){if(State4==-1){State4=1;TR1=1;dispbuf[3]=1;LedState=0x00; //打开LEDMotState=1; //打开电机LSpeed=1;RSpeed=1; //初速设为1}else if(State4==1){State4=0;TR1=0;MotState=0; //关闭电机}else if(State4==0){MotState=1;if(State3==0){State4=1;TR1=1;}else if(State3==1){LSpeed=2;RSpeed=2;}}}void K3(void){if(State4==1)DirState=!DirState;if(State4==0){if(State3==0){State3=1; //可以转向标志1可以,0不可以TR1=1;dispbuf[3]=9;MotState=1;LSpeed=2;RSpeed=2;}else if(State3==1){State3=0;TR1=0;dispbuf[3]=0;MotState=0;}}}void K2(void){if(State4==1&&LSpeed<4&&RSpeed<4){LSpeed++;RSpeed++;}else if(State4==0){if(State3==0){//State4=-1;//LedState=0xF0;MotState=0;Sec=0;Min=0;}else if(State3==1&&LSpeed<4&&RSpeed<4){//TurnState=0;LSpeed=2;RSpeed++;}}}void K1(void){if(State4==1&&LSpeed>1&&RSpeed>1){LSpeed--;RSpeed--;}else if(State4==0){if(State3==0){State4=-1;LedState=0xF0;MotState=0;}else if(State3==1&&LSpeed<4&&RSpeed<4){//TurnState=1;LSpeed++;RSpeed=2;}}}//显示预处理void DisBuf(void){if(RTime_cnt==100){Sec++;RTime_cnt=0;}if(Sec==60){Min++;Sec=0;}if(State4==1){dispbuf[0]=Sec%10;dispbuf[1]=Sec/10;dispbuf[2]=Min;if(!DirState) //正转dispbuf[3]=LSpeed;if(DirState) //反转dispbuf[3]=LSpeed+4;}if(State4==0){if(State3==0){dispbuf[0]=Sec%10;dispbuf[1]=Sec/10;dispbuf[2]=Min;dispbuf[3]=0;}if(State3==1){dispbuf[0]=RSpeed;dispbuf[1]=LSpeed;dispbuf[2]=Min;dispbuf[3]=9;}}}//LED驱动void disp( uchar H, uchar n ){P1=n;P1|=LedState ;P1|=LED_code_d[H];}//T0中断**显示/方波输出void Time_0() interrupt 1{TH0=0xFC;TL0=0x66;Widcnt++;Dispcnt++;//电机驱动/方波输出if(Widcnt>CIRCLE){Widcnt=1;}if(Widcnt<=LWidth)LMot_P=!DirState&&MotState;elseLMot_P=DirState&&MotState;LMot_M=DirState&&MotState;if(Widcnt<=RWidth)RMot_P=!DirState&&MotState;elseRMot_P=DirState&&MotState;RMot_M=DirState&&MotState;//显示if(Dispcnt==5){disp(dispbitcnt,dispbuf[dispbitcnt]);dispbitcnt++;if(dispbitcnt==4){dispbitcnt=0;}Dispcnt=0;}}//T1中断**运行时间void Time_1() interrupt 3{TH1=0xDB;TL1=0xFF;RTime_cnt++;}/******配置文件Afx.h******/#ifndef _AFX_#define _AFX_typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;#endif/******IO配置文件Config.c******/#ifndef _Config_#define _Config_#include "Afx.h"#include <reg52.h>//显示定义sbit led=P3^2;//电机引脚定义sbit LMot_P=P2^2; sbit LMot_M=P2^3; sbit RMot_P=P2^0; sbit RMot_M=P2^1;#endif。
基于51单片机的PWM直流电机调速

基于51单片机的PWM直流电机调速在现代社会,PWM直流电机已经成为各类机械设备不可或缺的动力源。
为了更好地控制电机的转速和输出功率,我们需要进行PWM调速操作。
本文将简要介绍如何基于51单片机实现PWM直流电机的调速。
一、PWM调速原理PWM调速是一种通过改变电机供电电压的占空比来调整电机转速和功率的方法。
当一个周期内高电平所占的时间比较短时,电机得到的平均电流和平均转矩也相应减小,电机的速度和功率也随之降低。
反之,当高电平所占的时间比较长时,电机得到的平均电流和平均转矩也相应增大,电机的速度和功率也随之提高。
因此,通过改变PWM信号的高电平占空比,可以实现直流电机的调速、调功等功能,极大地提高了电机的效率和可控性。
二、硬件电路搭建根据上述PWM调速原理,我们需要搭建一个控制板,将51单片机的PWM输出与直流电机相连。
具体电路如下:1、选择合适的电源供电,一般为12V/24V直流电源。
2、使用L298N模块作为直流电机驱动模块,将模块的电源接到电源供电上,将模块的IN1和IN2引脚分别接到51单片机的P1^0和P1^1引脚上,将直流电机的正负极分别接到模块的OUT1和OUT2引脚上。
3、将51单片机的P1^2引脚连接到一个脉冲宽度计波形滤波器(LCF)的输入端,并将输出端接到L298N模块的ENA引脚上。
4、调整脉冲宽度计波形滤波器的参数,以达到合理的PWM输出波形。
5、建立一个按键,将按键的一端接到51单片机的P3^2引脚上,将另一端接到单片机的地端。
6、根据需要进行其他接线。
三、软件程序设计根据上述硬件电路,我们需要进行相应的软件程序设计,以实现基于51单片机的PWM 直流电机调速。
以下是程序设计的主要步骤:1、在程序中定义需要使用的IO口。
2、调用定时器初始化程序,设置定时器的时钟频率、计数器值和工作方式等参数。
3、编写一个PWM输出函数,实现对PWM信号的输出。
4、编写一个ADC采样函数,读取ADC转换器的值,并根据采样值输出一定的PWM信号。
51单片机PWM电机调速程序

51单片机PWM电机调速程序#include#define TH0_TL0 (65536-1000)//设定中断的间隔时长unsigned char count0 = 50;//高电平的占空比unsigned char count1 = 0;//比较用的临时变量bit Flag = 1;//电机正反转标志位,1正转,0反转sbit Key_add=P2 ^ 0; //电机减速sbit Key_dec=P2 ^ 1; //电机加速sbit Key_turn=P2 ^ 2; //电机换向sbit PWM1=P2^6;//PWM 通道 1,反转脉冲sbit PWM2=P2^7;//PWM 通道 2,正转脉冲unsigned char Time_delay;void Delay(unsigned char x);void Motor_speed_high(void);void Motor_speed_low(void);void Motor_turn(void);void Timer0_init(void);void Delay(unsigned char x){Time_delay = x;while(Time_delay != 0);//等待中断,可减少PWM输出时间间隔}void Motor_speed_high(void)//{if(Key_add==0){Delay(10);if(Key_add==0){count0 += 5;if(count0 >= 100){count0 = 100;}}while(!Key_add);//等待键松开}}void Motor_speed_low(void){if(Key_dec==0){Delay(10);if(Key_dec==0){count0 -= 5;if(count0 <= 0){count0 = 0;}}while(!Key_dec );}}void Motor_turn(void) {if(Key_turn == 0) {Delay(10);if(Key_turn == 0) {Flag = ~Flag;}while(!Key_turn);}}void Timer0_init(void) {TMOD=0x01; //定时器0工作于方式1 TH0=TH0_TL0/256;TL0=TH0_TL0%6;TR0=1;ET0=1;EA=1;}void main(void){Timer0_init();while(1){Motor_turn();Motor_speed_high();Motor_speed_low();}}void Timer0_int(void) interrupt 1 using 1 {TR0 = 0;//设置定时器初值期间,关闭定时器TL0 = TH0_TL0 % 256;TH0 = TH0_TL0 / 256 ;//定时器装初值TR0 = 1;if(Time_delay != 0)//延时函数用Time_delay--;}if(Flag == 1)//电机正转{PWM1 = 0;if(++count1 < count0) {PWM2 = 1;}elsePWM2 = 0;if(count1 >= 100) {count1=0;}}else //电机反转{PWM2 = 0;if(++count1 < count0) {PWM1 = 1;}elsePWM1 = 0;if(count1 >= 100){count1=0;}}}这个程序是我转来的下载在硬件上是能通过的。
基于51单片机的大功率直流有刷电机的PWM调速控制

基于51单片机的大功率直流有刷电机的PWM调速控制本人最近一直想用51 单片机来设计制作一个大功率直流有刷电机PWM 调速控制器。
由于平时工作忙,没时间。
所以,这个东东花了我很长时间。
每天晚上下了班,回家就弄,一直搞到十一二点钟才休息。
期间,也花了我不少钱,也失败了N 次。
终于,功夫不负有心人,我终于成功了,哈哈~~。
由于这个是大功率的直流有刷电机PWM 调速控制器,所以就不能用晶体管来驱动了,必须用MOS 管来驱动。
MOS 管不仅驱动能力强,而且效率高。
为了提高系统的稳定性,可靠性,适用范围广等特点,本系统,采用双电源供电。
控制电路一组电源,电压分别为5V 和15V。
功率输出部分一组电源,以适应不同电压的电动机。
至于功率,可以根据实际情况,通过并联MOS 管来决绝,但同时也要修改下驱动电路的相关参数,否则就很有可能炸MOS 管!另外,本人也考虑过在单片机的PWM 脉冲输出端与驱动电路之间,通过光耦来连接,实现光电隔离,提高系统的稳定性。
但后来又担心光耦的频率响应速率,可能会给驱动电路带来信号的衰减或者错误的信号等因素,造成降低系统的效率或者损坏MOS 管。
也许是我多虑了吧。
呵呵,不过我看到网上好多资料都是用的光电隔离。
目前,这个版本的调速控制器,共4 路PWM 脉冲输出,分别提供给:上,下MOS 管驱动电路正转信号。
上,下MOS 管驱动电路反转信号。
待机状态下一个红色的LED 灯闪烁,电机运行的各种状态指示,可以低速,中速,高速三个档运行。
并可以实现刹车和倒车功能。
这个目前可以达到至少100W 不成问题。
我现在采用的是一个12V 80W 的直流有刷电机。
低速运行时的电压为:3.7V,中速时:6.5V,高速时:10.5V。
目前这个东东只是实现了最基本的控制功能。
还不具有其它功能,如,电机过流保护,欠压保护(用蓄电池做电源时,。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机控制直流电机PWM调速
实验目的
1.掌握脉宽调制 (PWM) 的方法。
2.用程序实现脉宽调制,并对直流电机进行调速控制。
实验设备
PC 机一台,单片机最小系统,驱动板、直流电机,连接导线等
实验原理
1.PWM (Pulse Width Modulation) 简称脉宽调制。
即,通过改变输出脉冲
的占空比,实现对直流电机进行调压调速控制。
2.实验线路图:
实验内容:
1. 利用实验室提供的单片机应用系统及直流电机驱动电路板,编制控制程序,实现直流电机PWM调速控制。
实验思考题
本实验中是通过改变脉冲的占空比,周期T 不变的方法来改变电机转速的,还有什么办法能改变电机的转速,应该怎么实现
附件:
L298简介:
L298N 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO 端口来提供模拟时序信号。