基于单片机的步进电机设计.docx
- 文档编号:5340551
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:20
- 大小:1.04MB
基于单片机的步进电机设计.docx
《基于单片机的步进电机设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于单片机的步进电机设计
目录
1.课程设计目的3
2.课程设计要求3
3.课程设计报告内容4
4.电路图及仿真设计10
5.总结15
6.程序源代码15
基于单片机的步进电机驱动
1.课程设计目的
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
2.课程设计要求
2.1设计目的
一、进一步熟悉和掌握单片机的结构和工作原理。
二、掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
三、通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。
四、通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
五、通过完成一个包括电路设计和程序开发的完整过程,为以后的工作打下良好的基础。
2.2设计要求
一、能控制电机正反转,有正转和反转按钮
二、在一定范围内可控制转速,有加速和加速按钮。
三、可在不断电源的情况下暂停,有一个暂停按钮。
四、在停止、正转、反转的时候,分别有指示灯指示工作状态。
五、有状态观察指示灯,可观察电动机A、B、C、D相的状态以观察电动机的旋转状态。
六、通过改变程序而改变电动机的驱动方式:
单四拍、双四拍、单双八拍。
3.课程设计报告内容
3.1电机驱动方式
本次试验采用的步进电机内部结构为:
采用型号20BY-0型,它使用+5V直流电源,步距角为18度。
电机线圈由四相组成,即A、B、C、D四相,驱动方式为二相激磁方式,引
脚颜色
绿色:
GND
黄色:
A
红色:
B
蓝色:
C
白色:
D
驱动方法:
单四拍:
A→B→C→D
双四拍:
AB→BC→CD→DA
单双八拍:
A→AB→B→BC→C→CD→D→DA
双四拍驱动:
相顺序从0到1称为一步,电机轴将转过18度,0→1→2→3→0则称为通电一周,转轴将转过72度,若循环进行这种通电一周的操作,电机便连续的转动起来,而进行相反的通电顺序如0→3→2→1→0将使电机同速反转。
通电一周的周期越短,即驱动频率越高,则电机转速越快,但步进电机的转速也不可能太快,因为它每走一步需要一定的时间,若信号频率过高,可能导致电机失步,甚至只在原步颤动。
3.2按键控制
P1口接六个按钮,包括正转,反转,停止,低速,中速,高速,分别实现对应的功能来控制电机。
正转和反转按钮功能实现代码:
voidmykey()
{if(K1==0)//判断K1键有无按下即正转按钮有无按下
{DelayMS(5);//延时再次判断,消除抖动。
if(K1==0)motordirect=0;}
if(K2==0)//判断K2键有无按下即反转按钮有无按下
{DelayMS(5);/延时再次判断,消除抖动
if(K2==0)motordirect=1;}}
停止按钮功能实现代码:
if(K3==0)//判断K3键有无按下即停止按钮有无按下
{MOTER_flg=0;P2=0xFE;//P2.0停止指示
}else{MOTER_flg=1;}
3.3流程图
1、控制流程图
2、程序流程图
3.4数码管显示
用数码管显示当前电机速度处于低、中、高档哪一档。
0代表速度为原始转速,1为低速档,2为中速档,3为高速档。
voidmyshow()
{
X=0;
if(N==200)
{P0=LEDSHOW[0];}
if(K4==0)
{P0=LEDSHOW[1];}
if(K5==0)
{P0=LEDSHOW[2];}
if(K6==0)
{P0=LEDSHOW[3];}
}
3.5芯片端口分配及原理图
AT89C52接线原理图,如图3.5.1
图3.5.1AT89C52芯片接线原理图
AT89C52端口分配表,如表1所示:
表1AT89C52芯片端口分配功能表
端口
功能
P1.0
K1,正转按键
P1.1
K2,反转按键
P1.2
K3,停止按键
P1.3
K4,低速按键
P1.4
K5,中速按键
P1.5
K6,高速按键
P1.6
数码管选通位
P2.0
停止指示灯
P2.1
正转指示灯
P2.2
反转指示灯
P3.1
A相
P3.3
C相
P3.5
B相
P3.7
D相
P0.0
数码管a
P0.1
数码管b
P0.2
数码管c
P0.3
数码管d
P0.4
数码管e
P0.5
数码管f
P0.6
数码管g
P0.7
小数点DP
P1.7
K7,切换驱动方式
步进电机驱动板实物图:
驱动板与单片机连接图:
4.电路图及仿真设计
4.1设计完成原理图如下
1、在电路连接完成后,将写好的程序放入单片机,电机正转,正转灯亮,数码管显示0运行如图4.1所示。
图4.1电机常速运行图
2、按下反转按钮,电机反转,反转灯亮,数码管显示0,如图4.2所示。
图4.2电机反转图
3、按下停止按钮,电机停转,数码管显示0,如图4.3所示。
图4.3电机停转图
4、按下低速档,数码管显示1,电机反转,反转灯亮,如图4.4所示。
图4.4电机低速运转图
5、按下中速档,数码管显示2,电机反转,反转灯亮,如图4.5所示。
图4.5电机中速运转图
6、按下高速档,数码管显示3,电机反转,反转灯亮,如图4.6所示。
图4.6电机高速运转图
7、按下驱动切换K7,数码管显示,电机转,单四拍灯亮,如图4.7所示。
图4.7电机驱动方式单双八拍运转图
5.总结
回顾起此次单片机课程设计,我仍感慨颇多,学到了很多的东西。
同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。
在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。
对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西。
因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。
6.程序源代码
#include
#defineucharunsignedchar
#defineuintunsignedint
uintMOTER_flg=1;//0:
电机控制禁止,1:
电机控制使能
intmotordirect=0;
uintT_Count=0;
sbitK1=P1^0;
sbitK2=P1^1;
sbitK3=P1^2;
sbitK4=P1^3;
sbitK5=P1^4;
sbitK6=P1^5;
sbitX=P1^6;
sbitK7=P1^7;
intN=200;
intLEDSHOW[10]={0xC0,0xF9,0xA4,0xB0};
ucharF0_Rotation[4]={0x02,0x20,0x08,0x80};//正转表格
ucharB0_Rotation[4]={0x22,0x28,0x88,0x82};//反转表格
//ucharF1_Rotation[4]={0x82,0x88,0x28,0x22};//双四拍正转表格
//ucharB1_Rotation[4]={0x82,0x88,0x28,0x22};//双四拍反转表格
ucharF1_Rotation[8]={0x02,0x22,0x20,0x28,0x08,0x88,0x80,0x82};//单双八拍正转表格
ucharB1_Rotation[8]={0x02,0x82,0x80,0x88,0x08,0x28,0x20,0x22};//单双八拍反转表格
//#defineLEDP1^0
//延时
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=0;i<120;i++);
}
}
//按键扫描
voidmykey()
{
if(K1!
=0)
{
DelayMS(5);
if(K1==0)
motordirect=0;
}
if(K2==0)
{
DelayMS(5);
if(K2==0)
motordirect=1;
}
}
//显示控制
voidmyshow()
{
X=0;
if(N==200)
{P0=LEDSHOW[0];}
if(K4==0)
{P0=LEDSHOW[1];}
if(K5==0)
{P0=LEDSHOW[2];}
if(K6==0)
{P0=LEDSHOW[3];}
}
//主程序
voidmain()
{
inti;
//开始循环
while
(1)
{
if(K7==0)
{
if(K3==0)
{
MOTER_flg=0;
P2=0xF6;//P2.0停止指示灯
}
else
{
MOTER_flg=1;
}
if(MOTER_flg==1)
{
//for(i=0;i<8;i++)
for(i=0;i<4;i++)
{
if(motordirect==0)
{P3=F0_Rotation[i];
P2=0xF5;//P2.1正转指示灯
}
else
{P3=B0_Rotation[i];
P2=0xF3;//P2.2反转指示灯
}
if(K4==0)
N=300;
if(K5==0)
N=150;
if(K6==0)
N=100;
DelayMS(N);
}
mykey();
myshow();
}
}
else
{
if(K3==0)
{
MOTER_flg=0;
P2=0xEF;//P2.0停止指示灯
}
else
{
MOTER_flg=1;
}
if(MOTER_flg==1)
{
//for(i=0;i<8;i++)
for(i=0;i<8;i++)
{
if(motordirect==0)
{P3=F1_Rotation[i];
P2=0xED;//P2.1正转指示灯
}
else
{P3=B1_Rotation[i];
P2=0xEB;//P2.2反转指示灯
}
if(K4==0)
N=300;
if(K5==0)
N=150;
if(K6==0)
N=100;
DelayMS(N);
}
mykey();
myshow();
}
}
}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 步进 电机 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)