基于单片机的直流电机控制器设计教材.docx
- 文档编号:3250288
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:1.19MB
基于单片机的直流电机控制器设计教材.docx
《基于单片机的直流电机控制器设计教材.docx》由会员分享,可在线阅读,更多相关《基于单片机的直流电机控制器设计教材.docx(13页珍藏版)》请在冰豆网上搜索。
基于单片机的直流电机控制器设计教材
江南大学
物联网工程学院
课程设计报告
课程名称:
单片机原理及应用
设计题目:
基于单片机的直流电机控制器设计
班级:
自动化
姓名:
学号:
指导教师:
赵芝璞评分:
2015年6月28日
基于单片机的直流电机控制器设计
实验目的:
通过具体小型测试系统设计,实践单片机系统设计及调试的全过程,以加深对单片机内部结构、功能和指令系统的理解,并进一步学习单片机开发系统的应用及一些外围芯片的接口和编程方法,初步掌握单片机系统的硬、软件设计技术及调试技巧。
设计要求:
1)电机转速可以平稳控制
2)通过键盘和显示器可以设置电机的转速
3)显示电机的速度趋势
仪器设备
直流电机一台
QX-MCS51单片机开发板一台
杜邦线五根
硬件线路图
单片机实物成果:
接线方法:
如图:
将P1.0,P1.1,P1.2,P1.3和J4上1IN,2IN,3IN,4IN连接
直流电动机和J8上+极以及ABC任意一极相连
通过USB线和电脑的USB接口相连
开发板原理图
主要芯片说明:
1.增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任意选择,指令代码完全兼容传统 8051.
2. 工作电压:
5.5V~3.3V(5V 单片机)/3.8V~2.0V(3V 单片机)
3. 工作频率范围:
0~40MHz,相当于普通 8051 的 0~80MHz,实际工作频率可达 48MHz
4. 用户应用程序空间为 64K 字节
5. 片上集成 512 字节 RAM
6. 通用 I/O 口 (32 个) 复位后为:
00000H , P1/P2/P3/P4 是准双向口弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程) ,无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
8. 具有 EEPROM 功能
9. 具有看门狗功能
10. 共 3 个 16 位定时器/计数器。
即定时器 T0、T1、T2
11. 外部中断 4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒
12. 通用异步串行口(UART) ,还可用定时器软件实现多个 UART
13. 工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
14.40针双列直插式封装 单片机的工作模式 1.掉电模式:
典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原 程序,掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设 2.空闲模式:
典型功耗 2mA 典型功耗 3.正常工作模式:
典型功耗 4Ma~7mA 典型功耗
共阴极则是把所有LED的阴极连接到共同接点VCC,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。
图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。
各个接口给低电平有效,时相应位的LED灯亮,来达到显示的目的。
共阳极数码管是一类数字形式的显示屏,通过对其不同的管脚输入相对的电压,会使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数。
由于它的价格便宜、使用简单、在电器,特别是家电领域应用极为广泛,空调、热水器、冰箱等等。
绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
该单片机通过USB与电脑进行连接,通过STC-ISP将用keil编辑好的单片机程序下载进入单片机的CPU,则此单片机下次使用相同的功能的时候不需要重新下载。
直流电机原理:
直流电机的结构
直流电机由定子和转子两部分组成。
在定子上装有磁极(电磁式直流电机磁极由绕在定子上的磁绕提供),其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕组,绕组通过换向器和电刷引出,直流电机结构如图1.1所示
直流电机工作原理
直流电机模型如图1.2所示,磁极N、S间装着一个可以转动的铁磁圆柱体,圆柱体表面固定线圈abcd。
当线圈流过电流时,线圈受到电磁力作用,产生旋转。
根据左手定则可知,当流过线圈中电流改变方向时,线圈的受力方向也将改变,因此通过改变线圈电流的方向实现改变电机的方向。
PWM调速原理:
所谓脉冲宽度调制是指用改变电机电枢电压接通与断开的时间的的占空比来控制电机转速的方法,称为脉冲宽度调制(PWM)。
对于直流电机调速系统,使用FPGA进行调速是极为方便的。
其方法是通过改变电机电枢电压导通时间与通电时间的比值(即占空比)来控制电机速度[1]。
PWM调速原理如图1.3所示。
在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电时间,即可让电机转速得到控制。
设电机永远接通电源时,其转速最大为Vmax,设占空比为D=t1/T,则电机的平均速度为
Vd=Vmax·D
式中,Vd——电机的平均速度
Vmax——电机全通时的速度(最大)D=t1/T——占空比
平均速度Vd与占空比D的函数曲线,如图1.4所示。
由图1.4所示可以看出,Vd与占空比D并不是完全线性关系(图中实线),当系统允许时,可以将其近似地看成线性关系(图中虚线)。
因此也就可以看成电机电枢电压Ua与占空比D成正比,改变占空比的大小即可控制电机的速度。
由以上叙述可知:
电机的转速与电机电枢电压成比例,而电机电枢电压与控制波形的占空比成正比,因此电机的速度与占空比成比例,占空比越大,电机转得越快,当占空比α=1时,电机转速最大。
设计思路:
若要实现直流电机PWM调速,就必须产生PWM波。
由于51单片机不能自行产生PWM,所以我们就要通过中断和定/计时器来完成PWM波形的产生和调制。
同时调节高低电平进行PWM调制可以迅速,高效的对电机转速实现调节。
但确无形中给系统、程序增加了相当的复杂度,难于在短时间实现。
所以我将单片机的P3.0作为直流电机的减速输入,P3.1作为直流电机的加速输入,利用定时器0来产生高峰值,通过P3.0和P3.1来控制PWM_T的长短,当PWM_T越大,高峰值在一个周期内所占的比例就越小,从而使速度变慢,进而实现控制直流电动机的效果。
数码管的输出方面,首先我通过WELA和DULA来进行位控制,选择第八个数码管作为速度等级的输出显示。
接着定义一个display函数和变量i,将0到9的数码管显示译码赋值给数组buf[],通过将之前用于控制转速的PWM_T的大小进行分级,再将不同的等级赋值给变量i,通过display函数显示变量i所决定的数组的内容,从而在第八个数码管上显示当前的速度等级
主程序流程图
数码管显示流程图
直流电机控制器程序:
#include
typedefunsignedcharuint8;
typedefunsignedintuint16;
sbitdown=P3^0;
sbitup=P3^1;
sbitWELA=P2^7;
sbitDULA=P2^6;
uint8t=0;
uint8PWM_T=0;//占空比控制变
inti=0;
unsignedcharbuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voiddisplay(inti)
{DULA=1;
P0=buf[i];
DULA=0;
}
voiddelay_1ms(uint16t)
{
uint16x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
}
/****************************************************
主程序
****************************************************/
voidmain(void)
{
WELA=1;
P0=0xfe;
WELA=0;
TMOD=0x02;//定时器0,工作模式2,8位定时模式
TH0=210;//写入预置初值(取值1-255,数越大PWM频率越高)
TL0=210;//写入预置值(取值1-255,数越大PWM频率越高)
TR0=1;//启动定时器
ET0=1;//允许定时器0中断
EA=1;//允许总中断
P1=0xff;//初始化P1,输出端口
PWM_T=30;
while
(1)
{
if(!
up)
{
if(PWM_T<250)
{
PWM_T++;
}
delay_1ms(10);
}
if(!
down)
{
if(PWM_T>0)
{
PWM_T--;
}
delay_1ms(10);
}
if(PWM_T>135){i=1;}
elseif(PWM_T>115){i=2;}
elseif(PWM_T>90){i=3;}
elseif(PWM_T>60){i=4;}
elseif(PWM_T>40){i=5;}
elseif(PWM_T>20){i=6;}
else{i=7;}
display(i);
}
}
/****************************************************
/定时器0中断模拟PWM
****************************************************/
timer0()interrupt1
{
t++;//每次定时器溢出加1
if(t==250)//PWM周期100个单位
{
t=0;//使t=0,开始新的PWM周期
P1=0x00;//输出端口
}
if(PWM_T==t)//按照当前占空比切换输出为高电平
{
P1=0xff;//
}
}
心得体会:
通过几天的单片机学习,我基本掌握了单片机使用方法,对单片机程序的编写也有了新的体会。
在进行课程设计的时候,PWM调速我很快完成了编写程序,并且在单片机上成功实现,但数码管显示速度等级的程序始终无法调试成功,我也尝试了几种显示的方法,如通过按键次数来确定速度等级等方法,最终成功找出了最简单的实现方式。
我相信这些经历,会使我在下次的编程过程中事半功倍,对我今后的学习也有激励作用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 直流电机 控制器 设计 教材
![提示](https://static.bdocx.com/images/bang_tan.gif)