单片机PWM控制直流电机的速度

合集下载

单片机电机控制

单片机电机控制

单片机电机控制引言:单片机作为一种集成电路芯片,广泛应用于各个领域,尤其在电机控制方面发挥着重要作用。

本文将介绍单片机在电机控制中的应用及相关知识,以及常见的控制方法和技术。

一、单片机在电机控制中的应用单片机在电机控制中的应用广泛,包括直流电机控制、步进电机控制、交流电机控制等。

通过单片机的控制,可以实现电机的启停、速度调节、方向控制等功能。

1. 直流电机控制:直流电机是一种常见的电机类型,广泛应用于各个领域。

单片机可以通过PWM信号控制直流电机的转速和方向。

通过改变PWM信号的占空比,可以控制直流电机的速度,通过改变PWM信号的正负脉冲,可以控制直流电机的正转和反转。

2. 步进电机控制:步进电机是一种精密控制的电机,常用于需要准确定位的应用中。

单片机可以通过控制步进电机驱动器的信号,实现步进电机的精确控制。

通过改变驱动器信号的频率和脉冲数,可以控制步进电机的转速和步距。

3. 交流电机控制:交流电机是一种常见的电机类型,广泛应用于各个领域。

单片机可以通过外部电路和传感器,获取交流电机的相关信号,从而实现对交流电机的控制。

常见的控制方法包括矢量控制、电流控制和速度控制等。

二、电机控制的常见方法和技术在单片机电机控制中,常见的方法和技术有PWM调速、PID控制、闭环控制等。

1. PWM调速:PWM调速是一种通过改变PWM信号的占空比来调节电机转速的方法。

通过改变占空比,可以改变电机的平均电压和平均功率,从而实现电机的调速功能。

PWM调速具有调速范围广、控制精度高的优点,在电机控制中被广泛应用。

2. PID控制:PID控制是一种比例、积分和微分控制的方法,常用于对电机速度和位置的控制。

通过测量电机的反馈信号和设定值,PID控制可以根据误差的大小来调整控制器的输出,从而实现电机的精确控制。

3. 闭环控制:闭环控制是一种通过反馈信号来调节电机控制器输出的方法。

通过测量电机的反馈信号,可以实时调整控制器的输出,从而实现对电机的精确控制。

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

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

第一章:前言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 方式控制直流电机调速的方法就应运而生。

基于单片机控制的直流电机调速系统设计

基于单片机控制的直流电机调速系统设计

基于单片机控制的直流电机调速系统设计一、引言直流电机在工业自动化领域中广泛应用,其调速系统的设计是实现自动控制的关键。

本文将介绍一种基于单片机控制的直流电机调速系统设计方案,主要包括电机原理、硬件设计、软件设计以及实验结果与分析等内容。

二、电机原理直流电机是一种将直流电能转换为机械能的装置,其原理基于电磁感应和安培定律。

电机由定子和转子两部分组成,定子上绕有恒定电流,产生磁场,而转子上带有电流,与定子的磁场互相作用,产生力矩使电机旋转。

三、硬件设计1.单片机选择在本设计中,选择了一款功能强大、性能稳定的单片机作为控制核心,例如使用ST C89C51单片机。

该单片机具有丰富的GP IO口和定时器/计数器等外设,适合进行电机控制。

2.电机驱动电路设计电机驱动电路主要包括功率电源、运放电路和驱动电路。

其中,功率电源为电机提供稳定的直流电源,运放电路用于信号放大和滤波,驱动电路则根据控制信号控制电机的转速。

3.速度测量电路设计为了实时监测电机的转速,需要设计速度测量电路。

常见的速度测量电路包括光电编码器、霍尔传感器等,通过测量转子上感应物体的变化来获得电机的转速信息。

四、软件设计1.程序框架软件设计的目标是实现对电机转速的控制和监测。

基于单片机的软件设计主要包括主程序的编写、中断服务程序的编写以及定时器的配置等。

2.控制算法常见的直流电机调速算法包括电压调速法、P WM调速法等。

根据实际需求选择合适的算法,并根据测量到的转速信号进行反馈控制,实现对电机转速的精确控制。

五、实验结果与分析设计完成后,进行实验验证。

通过设置不同的转速需求,观察电机的实际转速与设定转速的误差,并分析误差原因。

同时还可以测试电机在不同负载下的转速性能,以评估系统的稳定性和鲁棒性。

六、总结基于单片机控制的直流电机调速系统设计是实现自动控制的重要应用。

本文介绍了该系统的硬件设计和软件设计方案,并展示了实验结果。

通过系统实现电机转速的精确控制,可以广泛应用于工业自动化领域。

基于单片机的直流电机PWM调速控制系统的设计

基于单片机的直流电机PWM调速控制系统的设计

基于单片机的直流电机PWM调速控制系统的设计第一章:前言1.1前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。

近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过PWM方式控制直流电机调速的方法就应运而生。

采取传统的调速系统主要有以下的缺陷:模拟电路容易随时间飘移,会产生一些不必要的热损耗,以及对噪声敏感等。

而用PWM技术后,避免上述的缺点,实现了数字式控制模拟信号,可以大幅度减低成本和功耗。

并且PWM调速系统开关频率较高,仅靠电枢电感的滤波作用就可以获得平滑的直流电流,低速特性好;同时,开关频率高,快响应特性好,动态抗干扰能力强,可获很宽的频带;开关元件只需工作在开关状态,主电路损耗小,装置的效率高,具有节约空间、经济好等特点。

随着我国经济和文化事业的发展,在很多场合,都要求有直流电机PWM调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。

1.2本设计任务:任务: 单片机为控制核心的直流电机PWM调速控制系统设计的主要内容以及技术参数:功能主要包括:1)直流电机的正转;2)直流电机的反转;3)直流电机的加速;4)直流电机的减速;5)直流电机的转速在数码管上显示;6)直流电机的启动;7)直流电机的停止;第二章:总体设计方案总体设计方案的硬件部分详细框图如图一所示。

示数码管显PWM单片机按键控制电机驱动基于单片机的直流电机PWM调速控制系统的设计键盘向单片机输入相应控制指令,由单片机通过P1.0与P1.1其中一口输出与转速相应的PWM脉冲,另一口输出低电平,经过信号放大、光耦传递,驱动H型桥式电动机控制电路,实现电动机转向与转速的控制。

51单片机控制直流电机PWM调速

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端口来提供模拟时序信号。

基于Proteus的单片机PWM直流电机速度控制系统设计

基于Proteus的单片机PWM直流电机速度控制系统设计

万方数据
万方数据
万方数据
万方数据
基于Proteus的单片机PWM直流电机速度控制系统设计
作者:乔志杰, 曾金明
作者单位:乔志杰(安徽电子信息职业技术学院), 曾金明(解放军蚌埠汽车士官学校 安徽蚌埠233030)
刊名:
九江学院学报(自然科学版)
英文刊名:Journal of Jiujiang University(natural sciences)
年,卷(期):2013,28(3)
参考文献(9条)
1.张靖武;周灵彬单片机系统的Proteus设计与仿真 2007
2.肖云茂;孙毅;张华兴基于Proteus的PC机对步进电机运动控制仿真[期刊论文]-{H}机械设计与制造 2009(04)
3.陈景贤单片机控制的直流电机PWM调速控制器设计[期刊论文]-{H}湛江师范学院学报 2008(03)
4.杨靖用单片机控制的直流电机调速系统[期刊论文]-{H}机床电器 2008(01)
5.董继承;黄宇带时钟的数字温度计的设计与制作[期刊论文]-{H}中国科技信息 2007(08)
6.茹占军;谢家兴基于AT89S52单片机直流电机调速系统的设计[期刊论文]-软件导刊 2010(08)
7.王毅;王平;苏伟达基于数字PID控制的直流电机控制系统的设计[期刊论文]-福建师范大学学报 2010(04)
8.陈艳;李娜娜;杨永双Proteus和Keil在单片机教学中的应用 2009(20)
9.李明基于Proteus的单片机对步进电机运动控制仿真[期刊论文]-{H}价值工程 2012(05)
引用本文格式:乔志杰.曾金明基于Proteus的单片机PWM直流电机速度控制系统设计[期刊论文]-九江学院学报(自然科学版)2013(3)。

单片机产生PWM信号控制直流电机调速的源代码

单片机产生PWM信号控制直流电机调速的源代码

单片机产生PWM信号控制直流电机调速的源代码本例程利用2051的T0产生双路PWM信号,推动L293D或L298N为直流电机调速,程序已通过调试。

接L298N时相应的管脚上最好接上10K的上拉电阻。

有什么不对的地方欢迎大家批评指正!/* =======直流电机的PWM速度控制程序======== *//* 晶振采用11.0592M,产生的PWM的频率约为91Hz */#include<reg51.h>#include<math.h>#define uchar unsigned char#define uint unsigned intsbit en1=P1^0; /* L298的Enable A */sbit en2=P1^1; /* L298的Enable B */sbit s1=P1^2; /* L298的Input 1 */sbit s2=P1^3; /* L298的Input 2 */sbit s3=P1^4; /* L298的Input 3 */sbit s4=P1^5; /* L298的Input 4 */uchar t=0; /* 中断计数器*/uchar m1=0; /* 电机1速度值*/uchar m2=0; /* 电机2速度值*/uchar tmp1,tmp2; /* 电机当前速度值*//* 电机控制函数index-电机号(1,2); speed-电机速度(-100—100) */void motor(uchar index, char speed){if(speed>=-100 && speed<=100){if(index==1) /* 电机1的处理*/{m1=abs(speed); /* 取速度的绝对值*/if(speed<0) /* 速度值为负则反转*/{s1=0;s2=1;}else /* 不为负数则正转*/{s1=1;s2=0;}}if(index==2) /* 电机2的处理*/{m2=abs(speed); /* 电机2的速度控制*/if(speed<0) /* 电机2的方向控制*/{s3=0;s4=1;}else{s3=1;s4=0;}}}}void delay(uint j) /* 简易延时函数*/{for(j;j>0;j--);}void main(){uchar i;TMOD=0x02; /* 设定T0的工作模式为2 */ TH0=0x9B; /* 装入定时器的初值*/TL0=0x9B;EA=1; /* 开中断*/ET0=1; /* 定时器0允许中断*/TR0=1; /* 启动定时器0 */while(1) /* 电机实际控制演示*/{for(i=0;i<=100;i++) /* 正转加速*/{motor(1,i);motor(2,i);delay(5000);}for(i=100;i>0;i--) /* 正转减速*/{motor(1,i);motor(2,i);delay(5000);}for(i=0;i<=100;i++) /* 反转加速*/{motor(1,-i);motor(2,-i);delay(5000);}for(i=100;i>0;i--) /* 反转减速*/{motor(1,-i);motor(2,-i);delay(5000);}}}void timer0() interrupt 1 /* T0中断服务程序*/{if(t==0) /* 1个PWM周期完成后才会接受新数值*/{tmp1=m1;tmp2=m2;}if(t<tmp1) en1=1; else en1=0; /* 产生电机1的PWM信号*/ if(t<tmp2) en2=1; else en2=0; /* 产生电机2的PWM信号*/ t++;if(t>=100) t=0; /* 1个PWM信号由100次中断产生*///4级速度可调:0、1、2、3;对应占空比:0、1/4、2/4、3/4#include<reg52.h>sbit key=P3^6;sbit motor=P2^4;unsigned char key_scan(void);void motor_set(unsigned char v) ;void motor_init(void);unsigned char PWM_H=0,n=0,i=0;void main(){motor_init();while(1){if (key_scan() == 1){motor_set(i%4);}}}//电机转动void motor_run() interrupt 3{if(n<PWM_H) motor=1;else motor=0;n++;if(n>=4) n=0;}//速度控制,4级速度可调:0、1、2、3;对应占空比:0、1/4、2/4、3/4 void motor_set(unsigned char v){if (v>3) v=3;if (v == 0) TR1 = 0;else{TR1 = 1;PWM_H = v;}}//电机初始化void motor_init(void){EA=1;ET1=1;TMOD=TMOD & 0X0F | 0x20;}//扫描按键unsigned char key_scan(void){unsigned char on = 0,i;while(1){if(key==0) //判断是否按下{for(i=0;i<100;i++); //软件延时if(key==0) //再次判断是否按下{on = 1;break; //跳出循环}}}while(key==0);return 1;}}。

基于51单片机的直流电机PWM调速系统

基于51单片机的直流电机PWM调速系统

DOI:10.16660/ki.1674-098X.2018.13.108基于51单片机的直流电机PWM调速系统吴一平(浙江农林大学工程学院 浙江杭州 311300)摘 要:本文介绍了以单片机STC89C51和L298控制的直流电机PWM (脉宽调制)调速系统,主要介绍了用单片机软件实现PWM调整电机转速的基本原理及选择。

硬件电路实现了对电机的正转、反转、快速停止、加速,停止的控制。

软件电路给出了主程序、子程序流程图以及Proteus的仿真结果。

关键词:单片机STC89C51 脉宽调制 直流电机中图分类号:TN710 文献标识码:A 文章编号:1674-098X(2018)05(a)-0108-02直流电动机是将直流电能转换为机械能的电动机,相比其他类型电动机具有更好的调速性能,因此,直流电动机在工农业中被广泛应用。

本文对基于单片机STC89C51的直流电机PWM调速系统进行介绍,以期实现直流电机最优化方案。

1 直流电机PWM调速选择及原理直流电动机的调速方法有改变改变磁通量、改变电枢回路串联电阻以及改变电枢电压三种。

在电枢回路串联电阻,调速范围不大并且铜耗大,不经济。

弱磁调速中当磁通量Φ在低速时受磁极饱和限制,在高速时受换向器结构强度和换向火花的限制,而且由于励磁圈电感较大,动态响应较差,因此采用改变电枢电压的调速方法。

PWM(Pulse Width Modulation),全称为脉冲宽度调制,可以改变电枢电压值。

PWM的优点是精度高,易于控制,运行稳定。

PWM调速方法有三种,分别为定频调宽法、调宽调频法和定频调宽法。

前两种方法在调速时会改变控制脉冲的频率,而控制脉冲的频率与系统固有频率接近时会引起震荡,因此本文选用定频调宽法。

调速原理计算如下:占空比,D=t1t1+t2=t1T式中,T为电压变化周期;t1为一个周期内高电平持续时间;t2为一个周期内低电平持续时间;电机电压平均值U=DU0,式中,U0为总电压。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用单片机控制直流电机的速度
直流调速器就是调节直流电动机速度的设备,上端和交流电源连接,下端和直流电动机连接,直流调速器将交流电转化成两路输出直流电源,一路输入给直流电机砺磁(定子),一路输入给直流电机电枢(转子),直流调速器通过控制电枢直流电压来调节直流电动机转速。

同时直流电动机给调速器一个反馈电流,调速器根据反馈电流来判断直流电机的转速情况,必要时修正电枢电压输出,以此来再次调节电机的转速。

直流电机的调速方案一般有下列3种方式:
∙1、改变电枢电压;
∙2、改变激磁绕组电压;
∙3、改变电枢回路电阻。

使用单片机来控制直流电机的变速,一般采用调节电枢电压的方式,通过单片机控制PWM1,PWM2,产生可变的脉冲,这样电机上的电压也为宽度可变的脉冲电压。

根据公式
U=aVCC
其中:U为电枢电压;a为脉冲的占空比(0<a<1);VCC直流电压源,这里为5V。

电动机的电枢电压受单片机输出脉冲控制,实现了利用脉冲宽度调制技术(PWM)进行直流电机的变速。

因为在H桥电路中,只有PWM1与PWM2电平互为相反时电机才能驱动,也就是PWM1与PWM2同为高电平或同为低电平时,都不能工作,所以上图中的实际脉冲宽度为B,
我们把PWM波的周期定为1ms,占空比分100级可调(每级级差为10%),这样定时器T0每0.01ms产生一次定时中断,每100次后进入下一个PWM波的周期。

上图中,占空比是60%,即输出脉冲的为0.6ms,断开脉冲为0.4ms,这样电枢电压为5*60%=3V。

我们讨论的是可以正转反转的,如果只按一个方向转,我们就只要把PWM1置为高电平或低电平,只改变另一个PWM2电平的脉冲变化即可,,如下图(Q4导通,Q3闭合,电机只能顺时针调整转动速度)
C语言代码:
#include<AT89X52.h>
#define uchar unsigned char #define uint unsigned int
sbit K5=P1^4;
sbit K6=P1^5;
sbit PWM1=P1^0;
sbit PWM2=P1^1;
sbit FMQ=P3^6;
uchar ZKB1,ZKB2;
void delaynms(uint aa)
{
uchar bb;
while(aa--)
{
for(bb=0;bb<115;bb++) //1ms基准延时程序
{
;
}
}
}
void delay500us(void)
{
int j;
for(j=0;j<57;j++)
{
;
}
}
void beep(void)
{
uchar t;
for(t=0;t<100;t++)
{
delay500us();
FMQ=!FMQ; //产生脉冲
}
FMQ=1; //关闭蜂鸣器
delaynms(300);
}
void main(void)
{
TR0=0; //关闭定时器0
TMOD=0x01; //定时器0,工作方式1
TH0=(65526-100)/256;
TL0=(65526-100)%256; //100us即0.01ms中断一次 EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器T0
ZKB1=50; //占空比初值设定
ZKB2=50; //占空比初值设定
while(1)
{
if(!K5)
delaynms(15); //消抖
if(!K5) //确定按键按下
{
beep();
ZKB1++; //增加ZKB1
ZKB2=100-ZKB1; //相应的ZKB2就减少 }
}
if(!K6)
{
delaynms(15); //消抖
if(!K6) //确定按键按下
{
beep();
ZKB1--; //减少ZKB1
ZKB2=100-ZKB1; //相应的ZKB2增加 }
}
if(ZKB1>99)
ZKB1=1;
if(ZKB1<1)
ZKB1=99;
}
}
void time0(void) interrupt 1
{
static uchar N=0;
TH0=(65526-100)/256;
TL0=(65526-100)%256;
N++;
if(N>100)
N=0;
if(N<=ZKB1)
PWM1=0;
else
PWM1=1;
if(N<=ZKB2)
PWM2=0;
else
PWM2=1;
//显现:电机转速到最高后,也就是N为1或99时,再按一下,就变到99或1,//电机反方向旋转以最高速度。

相关文档
最新文档