直流电机的驱动.docx
- 文档编号:12894817
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:15
- 大小:96.27KB
直流电机的驱动.docx
《直流电机的驱动.docx》由会员分享,可在线阅读,更多相关《直流电机的驱动.docx(15页珍藏版)》请在冰豆网上搜索。
直流电机的驱动
目录
中文摘要1
英文摘要1
1引言1
1.1设计目的1
1.2设计要求1
1.3设计方法.............................................................................................................................1
2设计方案及原理1
2.1设计方案及组成框图1
2.2设计原理2
3硬件电路设计2
3.1电机驱动设计2
3.2按键设计2
3.3液晶设计3
3.4主电路设计3
4软件设计3
4.1程序流程图3
4.2C语言程序5
5系统仿真结果5
6总结5
参考文献5
附录6
1引言
1.1设计目的
通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,锻炼系统设计和应用能力,包括单片机系统设计的软件和硬件两部分。
培养创新意识,提高动手能力和分析问题、解决问题的能力。
1.2设计要求
本设计主要是基于AT89C51单片机的直流电动机的控制,通过查阅相关资料,选择适合的整体设计方案,设计出其硬件电路图,在硬件的基础上完成其软件设计,并在proteus环境下完成其仿真调试,最后根据设计过程,完成实验报告。
1.3设计方法
用AT89C51单片机作为控制器,用独立按钮与单片机口相连采用中断的方式对按键进行判断,通过对PWM值的改变控制直流电动机。
2设计方案及原理
2.1设计方案及组成框图
51系列的单片机学习简单,易于理解,它有自己独立的定时系统,可以利用定时器模拟输出PWM对电机进行控制,所以本设计选用AT89C51单片机做控制器。
矩阵键盘按键多且控制与独立键盘相比比较麻烦,本设计中只需要五个按键,故选用独立按键。
查询方式可以对按键信号进行处理,但是查询的控制方法软件设计较为复杂,对信号的采集不够准确,由于51系列的单片机有两个外部中断端口,利用中断的方式控制使软件更加简洁。
虽然可以在proteus看到电机的转动情况,但是观察不方便,不能准确的了解电机的运转速度,故为了方便观测电机的运转情况加入了液晶显示模块,本设计采用LM016L液晶显示器。
系统结构框图如图1所示。
图1系统框图
2.2设计原理
AT89C51单片机芯片中有自己独立的定时系统和中断处理方式,而且定时器有四种工作方式可供使用者选择,本设计采用定时器T0的第二种工作方式,设定定时器的定时周期为1ms,通过定时器来模拟输出PWM对直流电机进行控制,并根据按键的信号来改变PWM的值,实现电机的状态转换控制,AT89C51单片机有两个外部中断端口,利用它的中断处理方式可以对按键输入信号进行实时的处理,控制电机的运转情况。
3硬件电路设计
3.1电机驱动设计
L298是直流电动机和步进电动机两用的驱动芯片。
在其直流工作电压时,信号端电压为4~6V、控制端电压为5~36V,对直流电机进行驱动是可采用PWM信号平滑调速,可实现电机正反转控制,调速范围大而且启动性能好,启动转矩大。
故经常用在直流电动机的驱动中。
L298与电机及单片机的硬件连接如图2所示。
图2L298与电机连接图
3.2按键设计
本设计采用独立按键,电路如图3所示
图3按键连接图
3.3液晶设计
由于液晶的使能、写入端及复位端接在P0口,所以要接上拉电阻,其连接如图4所示。
图4液晶连接电路图
3.4主电路设计
主电路由控制器AT89C51单片机的晶振电路和复位电路、按键、液晶、电机驱动部分组成,总设计电路如图5所示。
图5总设计电路
4软件设计
4.1程序流程图
主程序流程图如图6所示。
图6主程序流程图
子程序流程图如图7所示。
图7子程序流程图
4.2C语言程序
见附录。
5系统仿真结果
根据设计利用仿真软件进行仿真并给出结果,运行结果如图8所示。
图8仿真结果
6总结
本次单片机课程设计我做的是基于单片机的直流电机的调速,用AT89C51单片机作为控制器,用独立按钮与单片机口相连采用中断的方式对按键进行判断,实现用PWM控制直流电动机,在液晶上显示PWM的占空比,在PROTUES仿真中可以清楚地看到电机的旋转。
通过此次单片机课程设计,我学到了很多的东西,对单片机有了更好的认识,我学会了PROTUES的仿真,不仅巩固了以前所学过的知识,而且把所学的理论知识与实践相结合起来,才能提高自己的综合实力。
在此次设计的过程中,也遇到了不少困难,发现了自己的不足之处,如对以前所学过的知识理解得不够深刻,掌握得不够牢固,这次课程设计之后,一定把以前所学过的知识重新温故,提高对知识的实际应用能力。
参考文献
[1]王思明,张金敏等.单片机原理及应用系统设计[M].北京:
科学出版社,2012:
139-168
[2]严天峰.单片机应用系统设计与仿真调试[M].北京:
北京航空航天大学出版社,2005:
10-36
[3]常喜茂,孔英会,付小宁.C51基础与应用实例[M].北京:
电力工业出版社,2008:
925-931
附录
#include
#defineuintunsignedint
#defineucharunsignedchar//宏定义
sbitk1=P3^4;//启动/停止按键
sbitk2=P3^5;//减速按键
sbitk3=P3^6;//加速按键
sbitk4=P3^7;//正反转按键
sbitk5=P3^2;//模式控制
sbitRS=P0^5;
sbitRW=P0^6;
sbitE=P0^7;//液晶D,E的定义
sbitENA=P1^2;//电机驱动IN1,IN2使能信号
sbitIN1=P1^0;//电机输入线
sbitIN2=P1^1;
bitmodel=1;//手动/自动,默认手动
bitdirec=1;//转向标志,默认为正转
intrate=1;//高电平时间常数
intnum=0;//1ms中断记录
intcount=0;//1ms中断记录,自动模式加速时间常数
ucharcodetab1[]="Dire:
Model:
";
ucharcodetab2[]="Rate:
T:
1ms";
/*****************延时子程序*********************************/
voiddelay_xus(uintx)
{
while(x--);
}
voiddelay(uintx)
{
uinty;
for(;x>0;x--)
for(y=110;y>0;y--);
}
/****************LCD********************************/
voidw_com(uintcom)//写命令
{
RS=RW=E=0;
P2=com;
E=1;
delay_xus
(1);
E=0;
}
voidw_data(uintdat)//写数据
{
RS=1;RW=E=0;
P2=dat;
E=1;
delay_xus
(1);
E=0;
}
voidw_shuzu(intaddr,ucharcode*p)//显示字符串
{
inti;
w_com(0x80+addr);
delay_xus
(1);
for(i=0;p[i]!
='\0';i++)
{
w_data(p[i]);
delay_xus
(1);
}
}
voiddisp()//显示速度、转向、模式
{
if(rate<10)
{
w_com(0x80+0x45);
delay_xus
(1);
w_data('');
delay_xus
(1);
w_com(0x80+0x46);
delay_xus
(1);
w_data(rate%10+0x30);//数字转换成ASCII
delay_xus
(1);
}
else
{
w_com(0x80+0x45);
delay_xus
(1);
w_data(rate/10+0x30);
delay_xus
(1);
w_com(0x80+0x46);
delay_xus
(1);
w_data(rate%10+0x30);
delay_xus
(1);
}
if(direc==1)
{
w_shuzu(0x06,"F");
}
else{w_shuzu(0x06,"R");}
if(model==0)w_shuzu(0x0f,"H");
elsew_shuzu(0x0f,"A");
}
/*************主程序初始化**************************************/
voidinit()
{
w_com(0x38);
delay_xus
(1);
w_com(0x0c);//开显示
delay_xus
(1);
delay
(2);
w_shuzu(0x00,tab1);
w_shuzu(0x40,tab2);
disp();
ENA=0;
TMOD=0X01;
TH0=0XFC;//(65536-1000)=FC18(1ms)
TL0=0X18;
ET0=1;
TR0=0;
EX1=1;
IP=0X02;//定时器0为中断最高优先级
EA=1;
}
/****************按键处理程序*********************************/
voidkeyscan()
{
if(k1==0)//启停
{
delay(120);
if(k1==0)
{
TR0=~TR0;
ENA=~ENA;
rate=1;
}
}
if(k2==0&&model==0)//减速
{
delay(120);
if(k2==0&&model==0)
{
rate-=2;
if(rate<=1)rate=1;
}
}
if(k3==0&&model==0)//加速
{
delay(120);
if(k3==0&&model==0)
{
rate+=2;
if(rate>=29)rate=29;
}
}
if(k4==0&&model==0)//转向
{
delay(120);
if(k4==0&&model==0)
{
direc=~direc;
}
}
if(k5==0&&ENA==0)//模式选择
{
delay(120);
if(k5==0&&ENA==0)
{
model=~model;
}
}
disp();//状态改变,及时更新数据
}
/***************主程序***********************************/
voidmain()
{
init();
while
(1);
}
/**************中断服务程序***********************************/
voidextern1()interrupt2//外部中断0
{
keyscan();
}
voidtimer0()interrupt1//定时器0
{
num++;
if(num>=31)num=0;
if(direc==1)//正转
{
if(num<=rate)//高电平持续时间
{
IN1=1;
IN2=0;
}
elseIN1=IN2=0;//低电平持续时间
}
else//反转
{
if(num<=rate)
{
IN1=0;
IN2=1;
}
elseIN1=IN2=0;
}
if(model==1)//自动模式下,执行,加速时间常数
{
count++;
if(count==1500)//1.5s后占空常数增加,加速
{
rate+=2;
if(rate>=29)rate=29;
count=0;
disp();
}
}
TH0=0XFC;//65536-1000=FC18
TL0=0X18;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 驱动