直流电机调速Word文档格式.docx
- 文档编号:16477079
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:27
- 大小:289.51KB
直流电机调速Word文档格式.docx
《直流电机调速Word文档格式.docx》由会员分享,可在线阅读,更多相关《直流电机调速Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
下图1为系统整体方框图,其以单片即为核心,其中按键来调节欲使电机的转速,根据设定的转速输出PWM控制信号,来控制驱动电路。
同时,DS18B20测出电机和霍尔传感器测出电机转速并送至单片机,并经液晶屏显示。
图1系统整体方框图
具体实现功能如下:
(1)系统上电后,液晶屏显示时间00:
00,并开始走时,电机温度及转速数据。
此时电机转速为22r/min;
(2)按下转速设定键“SET”,进入转速设定状态,每按一下加速按钮“+”,转速增加1r/min,按一下减速按钮“—”,转速减少1r/min;
当设定完成后,按下“SET_OK”键,电机将按设定的转速运行,调速范围是22~122r/min;
三、基本原理
根据电机学可知,直流电动机转速
的表达式为:
式中为电枢端电压;
为电枢电流;
为电枢电路总电阻;
为每极磁通量;
为电动机结构参数。
由上式可知,直
流电动机的转速控制方法可分为两大类:
对励磁磁通进行控制的励磁控制方法和对电枢电压进行控制的电枢控制法。
其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈的电感较大,动态响应较差,所以这种控制方法很少使用。
本设计是基于单片机的PWM调速方法,即在保证励磁恒定不变的情况下,采用PWM来实现电动机的调速。
开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制来控制电枢电压,达到调速的目的。
直流电动机PWM调速控制原理图如下所示:
图2PWM调速控制原理图
当开关管的驱动信号为高电平时,开关管导通,直流电动机电枢绕组两端有电压Us。
后,驱动信号变为低电平,开关管截止,电机电枢两端电压为0。
后,驱动信号重新变为高电平,开关管重复前面的过程。
由此,电机的电枢绕组两端的电压平均值为:
式中D为占空比,
。
由此可见,在电源电压不变的情况下,电枢两端的电压的平均值
取决于占空比D的大小,改变D的值也就改变了电枢两端电压的平均值,从而达到控制电机转速的目的,即实现PWM调速。
改变占空比的方法有定宽调频法、调宽调频法和定频调宽法。
四、电路各模块介绍
(1)核心控制单片机及其扩展电路
图3核心控制单片机及其扩展电路
(2)PWM调速原理及驱动电路模块
L298可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。
5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。
其原理图如下:
图4L298内部原理图
L298驱动模块与单片机和电机的接线口如下,其中4脚和8脚为12V直流电。
6脚为使能端,当其为1时电机有效。
5脚接单片机的PWM控制信号。
2、3脚为驱动模块输出的电机电枢电压,通过调节PWM的占空比就可改变输出电压,从而控制了转速。
图5L298引脚图图6L298与单片机接线图
(3)液晶显示及接口电路
1602为工业字符型液晶,能够同时显示16x02即32个字符。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。
因为1602识别的是ASCII码,可以用ASCII码直接赋值,还可以用字符型常量或变量赋值,如'
A’。
其与单片机的接线如下所示:
其中1、2脚为电源线,3脚接一个10K的电位器来调节对比度。
4脚RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5脚R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作,在本设计中,因为只有对液晶屏的写操作,因此该脚接地。
6脚LCDEN端为使能端,下降沿使能。
7脚至14脚为并行的数据线接口。
15和16脚为背光电源端。
图7LCD1602与单片机的接线图
(4)温度传感器接口电路
DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
其具有一下特点:
(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)测温范围-55℃~+125℃,固有测温分辨率0.5℃。
(3)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
(4)适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电。
单片机与DS18B20的接口电路如下:
图8DS18B20引脚图图9DS18B20与单片机接线图
(5)霍尔传感器接口电路
霍尔转速传感器是一种小型封闭式传感器,具有性能稳定、功耗小、抗干扰能力强、使用温度范围宽等优点。
其原理是当磁力线穿过传感器上感应元件时产生霍尔电势经过霍尔芯片的放大整形后,成力电信号供二次仪表使用。
使用时,只要在旋转物体上粘一块小磁钢,传感器固定在离磁钢一定距离内,对准磁钢S极即可进行测量,当电机转轴上的磁钢转到霍尔传感器上方时,3脚就输出一个矩形脉冲,将其引到单片机中断P3^2口,来一个脉冲计一次数,在设定的时间到时去读取计数值,通过计算就可得出电机的转速。
图10霍尔传感器引脚图图11霍尔传感器接线图
下图为制作出的实物图,经测试,电路一切均按预定功能运行,很好完成了实训要求。
图12实物图
五、软件设计
在本设计中,整个硬件系统选用了STC公司89C54RD+单片机来完成对各个模块的管理与处理。
上电后,单片机首先要进行整个系统的初始化,包括开中断、定时器赋初值、1602LCD液晶屏的初始化等工作。
然后,系统进入如电机温度采集、液晶显示和SET键扫描的循环运作中,并且处理中断程序。
当检测到SET键即转速设定键有效时,执行键盘处理程序,此时可通过按键来加减设定要电机将运行的转速,当检测到SET_OK键有效时,跳出键盘处理程序,并按设定的转速计算出新的定时器初值,改变了PWM的占空比,电机电枢电压改变,转速改变,整个系统主流程图如下所示:
下图为温度传感器数据采集的程序流程图,首先要对DS18B20进行初始化处理,再发出跳过ROM匹配命令,启动温度转换,当转换完成后,发出ROM匹配命令,读取出温度值,再计算出适于液晶显示的数值来。
`
在主程序运行中,会有各种中断需要处理,其中外部中断0对转速进行测量,当来一次中断,转速加一次。
定时器0是用来完成PWM的处理,当PWM为高电平时,将其清零,并计算出定时器在低电平时的计时初值,反之,计算出高电平的计时初值。
定时器1中断用来处理时间和转速测量的中断服务,其程序流程图如下所示:
在主程序初始化时,赋TH1=0X3B,TL1=0X3C,即定时50ms。
中断一次,为了避免在程序处理中再次引起中断,TR1=0,即关定时器中断,同时再次给定时器赋初值为TH1=0X3B,TL1=0X3C。
flag自加一次,当flag=20时,即定时1S,则S自加1,i也自加1。
当得出S=60时,即一分钟到,分jia1,当分为60时,清零;
当i=30s时,将外部中断0的计数值赋给测量转速变量,计算出适于液晶显示的值来并另TR1=1,即打开定时器1,定时器1中断服务结束。
六、总结与致谢
时光如流水,转眼之间我们已经到了大三的期末,我们的专业课程已经基本上完。
为了弥补我们在实践环节的不足,学院特意安排了两周的实训来抹去我们在这个环节的空白。
还安排了专门的老师做指导,老师的题目贴近实际。
一直专注与理论学习的我们,对于这些具体的项目顿时迷茫,不知道如何下手。
我们的实训指导老师张老师耐心的指导我们,在第一次见面的时候,教给我们一些基础知识,教我们首先一步步的来,应该先从查资料入手,先确定自己的题目,然后着力去资料,不要记着动手去做。
第一次见面后,我们组就先确定了自己的题目:
直流电机的控制。
根据老师的指导,稳扎稳打。
我们首先从选择系统入手,我们选择了STC系列的单片机作为我们的主处理芯片。
因为入门很简单,我们做过关于它的实验,可以说是略有了解,对于我们以后的系统的实现有很大的帮助。
电路的布局,焊接等方面我们以前都没有涉及,其中出现了很多插曲,我们的板子经过了许多次的重做,其中很多次都很想放弃,可是最终还是坚持走下来,查电路,改电路,万用表,示波器,我们的一天都在这个循环之中。
最后在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期两周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解.虽然最后结果是出来了,可这与老师的精心指导是分不开的,他引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以说老师是功不可抹的.
通过此次实训,我们的能力得到了提高,通过组队的方式,我们组员一起完成课题,增进了我们之间的友谊,并且团队意识得到了提高。
课题的完成后,我们对单片机系统有了进一步的了解,直流电机控制做了进一步的研究,学习了传感器的使用,驱动电路的设计,电路的布线,原理图的制作等方面的知识。
我们也从中体验到了做研究的严谨,我们尝到了成功的果实,体会了其中的快乐。
总而言之,此次实训,对我的意义是重大的,我们还希望以后又多次机会参加此类的实训项目。
大三结束了,学院给我们安排了为期两周的实训,这次实训的意义非凡。
我们的学习只注重了理论知识,可是对于实践环节是有所欠缺的。
所以此次实训,就是针对我们的薄弱环节进行弥补。
感谢学院给我们提供的此次机会,我们会用心去学习,用我们的实际行动来回报学院对我们的栽培与教育。
参考文献
1.李群芳肖看单片机原理、接口及应用清华大学出版社2009
2.蔡纯洁杨维坚等PIC全系列单片机原理与开发【M】.合肥:
中国科学技术大学出版社,2003
3.李双庆丘鹰,等.常用半导体器件简明手册【M】.北京:
国防工业出版社,1989
4.王晓明.电动机的单片机控制.北京:
北京航空航天大学出版社,2002
5.张永福等.传感器敏感元器件大全,北京:
电子工业出版社,1993
6.张琛基于51单片机的直流电机测速与调速系统2010
7.丁学文.电力拖动控制系统【M】.北京:
机械工业出版社,2007.9
8.华伟,周文定.现代电力电子器件及其应用【M】.北京:
北京交通大学出版社.2002
9.谭浩强.C语言程序设计【M】.北京:
清华大学出版社.2005
10.贾玉璞,王臣,基于单片机控制的PWM直流调速系统【J】.长春:
包头钢铁学院学报,2005,24(04):
334—337.
11.王为青,邱文勋.51单片机应用开发案例精选.人民邮电出版社.2007,8.
12.郭惠,吴迅.单片机C语言程序设计完全手册.电子工业出版社.2008.10
/*------------------------------------------------------
四个独立按键、直流电机一部、1602液晶显示屛一块
霍尔传感器一个、DS18B20温度传感器一个
--------------------------------------------------------*/
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
//显示的字符串
ucharcodetable1[]="
speed:
"
;
ucharcodetable2[]="
r/m"
ucharnum;
//电机温度变量
intwendu;
ucharwx;
ucharwy;
ucharwz;
ucharminute=0,second=0;
//T0计时初值变量
uchartep;
//PWM状态
uinttime_0=56936;
//T0在PWM低电平时初值
uinttime_1=64136;
//T0在PWM高电平时初值
ucharcount=0;
//外部中断0计数值
ucharnx=0,z1=0,z2=0,z3=0;
//测量到的转速
ucharflag=0,i=0;
//定时器1计时标志量
ucharstatus=0;
sbitDS=P1^0;
sbitP00=P3^7;
//控制的PWM输出
sbitset=P1^4;
//设定
sbitplus=P1^5;
//电机反转
sbitminus=P1^6;
//电机加速调节
sbitset_ok=P1^7;
//设定结束
sbitlcdrs=P2^0;
//1602使能端
sbitlcden=P2^1;
ucharn=22;
//初始转速
inttemp;
ucharflag1;
charstr[5];
//温度数组
voiddelay1(void)
{
_nop_();
}
voiddelayb(uintcount)//delay
uinti;
while(count)
{
i=200;
while(i>
0)
i--;
count--;
}
voiddsreset(void)//DS18B20初始化
DS=0;
i=103;
0)i--;
DS=1;
i=4;
bittmpreadbit(void)//读一位
bitdat;
i++;
//小延时一下
dat=DS;
i=8;
while(i>
return(dat);
uchartmpread(void)//读一个字节
uchari,j,dat;
dat=0;
for(i=1;
i<
=8;
i++)
j=tmpreadbit();
dat=(j<
<
7)|(dat>
>
1);
//读出的数据最低位在最前面,这样刚好一个字节在DAT里
return(dat);
//将一个字节数据返回
voidtmpwritebyte(uchardat)
{//写一个字节到DS18B20里
ucharj;
bittestb;
for(j=1;
j<
j++)
testb=dat&
0x01;
dat=dat>
1;
if(testb)//写1部分
i++;
else
//写0部分
voidtmpchange(void)//发送温度转换命令
dsreset();
//初始化DS18B20
delayb
(1);
//延时
tmpwritebyte(0xcc);
//跳过序列号命令
tmpwritebyte(0x44);
//发送温度转换命令
inttmp()//获得温度
floattt;
uchara,b;
dsreset();
delayb
(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
//发送读取数据命令
a=tmpread();
//连续读两个字节数据
b=tmpread();
temp=b;
temp<
temp=temp|a;
//两字节合成一个整型变量。
tt=temp*0.0625;
//得到真实十进制温度值,因为DS18B20
//可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度。
temp=tt*10+0.05;
//放大十倍,这样做的目的将小数点后第一位
//也转换为可显示数字,同时进行一个四舍五入操作。
returntemp;
//返回温度值
}
voiddelay(uintz)//延时子函数
for(z;
z>
0;
z--);
voidtemperature_DS1820()//电机温度的测量
tmpchange();
delay(200);
wendu=tmp();
wx=wendu/100+0x30;
wy=wendu%100/10+0x30;
wz=wendu%10+0x30;
voidwrite_com(ucharcom)//1602写指令
lcdrs=0;
P0=com;
delay(5);
lcden=1;
lcden=0;
voidwrite_data(uchardate)//1602写数据
lcdrs=1;
P0=date;
voidlcd1602_init()
write_com(0x38);
//工作方式
write_com(0x0C);
//开显示
write_com(0x01);
//清屏
write_com(0x06);
//指针自动加1
write_com(0x80);
//指向第一位
voiddislay_lcd()
{
//显示时间
for(num=0;
num<
5;
num++)
{delay(5);
switch(num)
case0:
write_data(minute/10+0x30);
break;
case1:
write_data(minute%10+0x30);
case2:
write_data('
:
'
);
case3:
write_data(second/10+0x30);
case4:
write_data(second%10+0x30);
2;
'
}
//显示温度值
T'
='
write_data(wx);
write_data(wy);
.'
write_data(wz);
write_data(0xdf);
write_data(0x43);
write_com(0x80+0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 调速
![提示](https://static.bdocx.com/images/bang_tan.gif)