直流电机PWM调速.docx
- 文档编号:5932332
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:252.09KB
直流电机PWM调速.docx
《直流电机PWM调速.docx》由会员分享,可在线阅读,更多相关《直流电机PWM调速.docx(18页珍藏版)》请在冰豆网上搜索。
直流电机PWM调速
直流电机转速的PWM控制测速
王鹏辉
姬玉燕
摘要
本设计采用PWM的控制原理来完成对直流电机的正转、反转以及其加速、减速过程的控制,在此过程中是通过单片机的定时器加上中断的方式产生不同时长的高低电压脉冲信号来完成。
并通过霍尔传感器对直流电机的转速进行测定,最后将实时测定的转速数值1602液晶屏上。
关键词:
PWM控制直流电机霍尔传感器1602液晶显示屏L298驱动
一、设计目的:
了解直流电机工作原理,掌握用单片机来控制直流电机系统的硬件设计方法,熟悉直流电机驱动程序的设计与调试,能够熟练应用PWM方法来控制直流电机的正反转和加减速,提高单片机应用系统设计和调试水平。
1.1系统方案提出和论证
转速测量的方案选择,一般要考虑传感器的结构、安装以及测速范围与环境条件等方面的适用性;再就是二次仪表的要求,除了显示以外还有控制、通讯和远传方面的要求。
本说明书中给出两种转速测量方案,经过我和伙伴查资料、构思和自己的设计,总体电路我们有两套设计方案,部分重要模块也考虑了其它设计方法,经过分析,从实现难度、熟悉程度、器件用量等方面综合考虑,我们才最终选择了一个方案。
下面就看一下我们对两套设计方案的简要说明。
1.2方案一:
霍尔传感器测量方案
霍尔传感器是利用霍尔效应进行工作的?
其核心元件是根据霍尔效应原理制成的霍尔元件。
本文介绍一种泵驱动轴的转速采用霍尔转速传感器测量。
霍尔转速传感器的结构原理图如图3.1,霍尔转速传感器的接线图如图3.2。
传感器的定子上有2个互相垂直的绕组A和B,在绕组的中心线上粘有霍尔片HA和HB,转子为永久磁钢,霍尔元件HA和HB的激励电机分别与绕组A和B相连,它们的霍尔电极串联后作为传感器的输出。
图3.1霍尔转速传感器的结构原理图
方案霍尔转速传感器的接线图
缺点:
采用霍尔传感器在信号采样的时候,会出现采样不精确,因为它是靠磁性感应才采集脉冲的,使用时间长了会出现磁性变小,影响脉冲的采样精度。
1.3方案二:
光电传感器
整个测量系统的组成框图如图3.2所示。
从图中可见,转子由一直流调速电机驱动,可实现大转速范围内的无级调速。
转速信号由光电传感器拾取,使用时应先在转子上做好光电标记,具体办法可以是:
将转子表面擦干净后用黑漆(或黑色胶布)全部涂黑,再将一块反光材料贴在其上作为光电标记,然后将光电传感器(光电头)固定在正对光电标记的某一适当距离处。
光电头采用低功耗高亮度LED,光源为高可靠性可见红光,无论黑夜还是白天,或是背景光强有大范围改变都不影响接收效果。
光电头包含有前置电路,输出0—5V的脉冲信号。
接到单片机89C51的相应管脚上,通过89C51内部定时/计时器T0、T1及相应的程序设计,组成一个数字式转速测量系统。
图3.2测量系统的组成框图
优点:
这种方案使用光电转速传感器具有采样精确,采样速度快,范围广的特点。
综上所述,方案二使用霍尔传感器来作为本设计的最佳选择方案。
二、设计内容:
直流电机的正反转控制,转速测定、调节及其显示。
三、工作原理
3.1直流电机
直流电机的结构由定子和转子两大部分组成。
直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,磁场由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。
运行时转动的部分称为转子,其主要作用产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。
导体受力的方向用左手定则确定。
这一对电磁力形成了作用于电枢的一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。
如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。
当电枢转了180°后,导体cd边转到N极下,导体ab边转到S极下时,由于直流电源供给的电流方向不变,仍从电刷A流入,经过导体cd、ab后,从电刷B流出。
这时导体cd边受力方向变为从右向左,导体ab边受力方向是从左向右,产生的电磁转矩的方向仍为逆时针方向。
因此,电枢一经转动,由于换向器配合电刷对电流的换向作用,直流电流交替地由导体ab和cd流入,使线圈边只要处于N极下,其中通过电流的方向总是由电刷A流入的方向,而在S极下时,总是从电刷B流出的方向。
这就保证了每个极下线圈边中的电流始终是一个方向,从而形成一种方向不变的转矩,使电动机能连续地旋转。
这就是直流电动机的工作原理。
3.2直流电机驱动
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。
4脚VS接电源电压,VS电压范围VIH为+2.5~46V。
输出电流可达2.5A,可驱动电感性负载。
1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。
L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。
5,7,10,12脚接输入控制电平,控制电机的正反转。
EnA,EnB接控制使能端,控制电机的停转。
表1是L298N功能逻辑图。
In3,In4的逻辑图与表1相同。
由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。
同为低电平电机停止,同为高电平电机刹停。
二、系统总体框图与原理说明
2.1总体方案原理及设计框图
本设计是基于AT89c51为核心的直流调速器,由单片机控制和产生适合要求的PWM信号,该PWM信号通过驱动芯片电路进行直流调速,使输出电压平均值和功率可以按照PWM信号的占空比而变化,从而达到对直流电机调速的目的。
拨码开关输入0~1范围的占空比,用LCD1602作为主液晶显示器,显示输入的占空比控制电机转速,能够实现较好的人机交互。
拨码开关输入模块
AT89c51单片机
LCD1602显示模块
电机驱动模块
直流电机
示波器显示PWM波形
用压控振荡器(可用555电路构成)来模拟直流电机的运行
总体方案设计框图
三、硬件电路图
3.1PWM产生方式
(1)PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。
PWM可以应用在很多方面,比如:
电机调速、温度控制、压力控制等等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开的电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。
正因为如此,PWM又被称为“开关驱动装置”。
PWM波形如图所示:
PWM波形图
设电机始终接通电路时,电机转速最大为
,设占空比为:
则电机的平均转速为
其中
指的是电机的平均速度,
是指电机在全通电时最大速度,D指的是占空比。
由上面的公式可见,当改变占空比D时,就可以得到不同电机平均速度
从而达到调速的目的。
(2)单片机片内软件生成PWM信号
PWM信号采用单片机定时中断的方式软件模拟产生,这样实现比较容易,可以节约硬件成本。
//===================定时器0初始化设置===================
//===================定时器0初始化设置===================
voidTime0_Init()//定时器0初始化函数
{
TMOD=0x01;//定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//初始化为定时时间为50ms
ET0=1;//开定时器0中断
TR0=1;//开定时器
EA=1;//开总开关
}
//==================定时器0中断服务程序===============
voidtimer0_server(void)interrupt3
{
if(PWM_flag)
{
TH0=(65536-PWM_data*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作为显示模块,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,可以显示两行,提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能。
3.4直流电机驱动模块
本设计采用L298D,传输电信号。
它对输入、输出电信号有良好的隔离作用,然后,驱动直流电机的驱动和调速。
3.3模拟直流电机测速模块
555定时器,构成简单的振荡电路,利用电阻和电容充放电原理,是输出端产生方波信号,即可模拟简单的脉冲,代替电机的测速,电机测速一般都是利用霍尔元件测出电机转了多少圈,电机转一圈,霍尔元件检测电机触发的脉冲,则会输出响应的信号。
光电隔离主要用来处理控制部分和强电部分的信号,减少控制部分受强电的干扰。
起隔离作用。
四、程序流程图
开始
LCD1602、定时器t1和t0初始化
开关PWM值
主函数把数据送到LCD1602,显示转速,并调节电机的转速
等待
重新设置PWM值
Y
N
五、仿真说明
(1)初始界面时,拨码开关没有设置PWM,直流电机处于停止状态,LCD1602显示PWM为000%
在LCD上显示Motor_Speed为256,这就是在一定时间内低电平的数目。
由于INT0是属于低电平输入中断类型的,根据这个原理再通过计数器T1来记录INT0的中断次数即是转速。
(2)通过调节开关的值,使占空比增大,从而使直流电机的转速变大。
六、心得体会
本设计通过仿真基本能实现对直流电机的调速和测速。
课程设计重点在于对单片机的应用与理解,引入了L298D芯片的使用与了解其作用,对掌握驱动直流电机的方法有一定得要求,通过这几天网上的一些相关资料的查阅,顺利的完成了这个课程设计,但在仿真过程中的一些细节问题上还有着纰漏,在电机的测速的模块的编程不够完美。
通过本次课程设计,加深了之前的单片机知识和相应仿真软件的使用。
拓宽了本人的知识面,拓展了视野和思维。
设计一个直流电机调速系统,无论从学习还是实践的角度上来说,对电气专业的大学生都会产生积极的作用,有利于提高学习热情。
附录
#include
#include
#include
#include
#include
//==========================
#defineucharunsignedchar
#defineuintunsignedint
//==========================
#defineData_BusP1
sbitPWM=P3^0;
bitPWM_flag=0;
unsignedcharTime_flag=0;
unsignedcharDSW_data=0x00;
unsignedcharPWM_data=0;
unsignedintSpeed_data=0;
unsignedcharPWM_Precent[5]={0x30,0x30,'%'};
unsignedcharMotorSpeed[5]={0x30,0x30,0x30};
//--------------------------
//-------函数声明--------
voiddelay(uint);
voiddelay_ms(unsignedintii);//1ms延时函数
voidget_PWM(void);
voidget_Speed(void);
//====================延时子函数=========================
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddelay_ms(unsignedintii)//1ms延时函数
{
unsignedinti,x;
for(x=0;x { for(i=0;i<200;i++); } } //===================外部中断0初始化程序=============== voidInit_int0(void) { EX0=1;//开外部中断0 IT0=1;//触发 EA=1; } //==================外部中断0服务程序=================== voidInt0_server(void)interrupt0 { EA=0; Speed_data++; EA=1; } //===================定时器0初始化设置=================== voidTime0_Init()//定时器0初始化函数 { TMOD=0x01;//定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//初始化为定时时间为50ms ET0=1;//开定时器0中断 TR0=1;//开定时器 EA=1;//开总开关 } //==================定时器0中断服务程序=============== voidTime0_Int()interrupt1//定时器0中断子函数 { TH0=(65536-50000)/256; TL0=(65536-50000)%256;//初始化为定时时间为50ms Time_flag++; if(Time_flag==20) { Time_flag=0; get_Speed(); } } //====================定时器1初始化设置===============计算方波数 voidinit_timer1(void) { TMOD|=0x10;//定时器1为工作方式116bit TH1=0xFF; TL1=0xFE; ET1=1;//开定时器1中断 TR1=1;//开定时器 EA=1;//开总开关 } //==================定时器1中断服务程序=============== voidtimer1_server(void)interrupt3 { 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============================ voidget_PWM(void) { DSW_data=Data_Bus; if(DSW_data==0x00) { TR1=0; PWM=0; PWM_Precent[0]=0x30; PWM_Precent[1]=0x30; } else { PWM_data=DSW_data*100/256; PWM_Precent[0]=PWM_data/10+0x30; PWM_Precent[1]=PWM_data%10+0x30; TR1=1; } } //==================get_Speed============================ voidget_Speed(void) { MotorSpeed[0]=Speed_data/100+0x30; MotorSpeed[1]=Speed_data/10%10+0x30; MotorSpeed[2]=Speed_data%10+0x30; Speed_data=0; } //------主函数----------- voidmain() { PWM=0; get_PWM(); Init_int0(); Time0_Init(); init_timer1(); LCD_init();//LCD1602初始化 LCD_write_command(0x01);//LCD清屏 delay_ms(10); DisplayChar(0,1,"PWM_Precent: "); DisplayChar(13,1,PWM_Precent); DisplayChar(0,0,"Motor_Speed: "); DisplayChar(13,0,MotorSpeed); while (1) { get_PWM(); DisplayChar(13,1,PWM_Precent); DisplayChar(13,0,MotorSpeed); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 PWM 调速