步进电机毕业设计带C语言程序的.docx
- 文档编号:10879874
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:15
- 大小:122.64KB
步进电机毕业设计带C语言程序的.docx
《步进电机毕业设计带C语言程序的.docx》由会员分享,可在线阅读,更多相关《步进电机毕业设计带C语言程序的.docx(15页珍藏版)》请在冰豆网上搜索。
步进电机毕业设计带C语言程序的
第1章步进电机概述
1.1步进电机的特点:
1)一般步进电机的精度为步进角的3-5%,且不累积。
2)步进电机外表允许的温度高。
步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。
3)步进电机的力矩会随转速的升高而下降。
当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。
在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
4)步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。
步进电机有一个技术参数:
空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。
在有负载的情况下,启动频率应更低。
如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。
1.2步进电机的工作原理:
步进电机是一种用电脉冲进行控制,将电脉冲信号转换成相位移的电机,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
1.3步进电机的技术参数:
1.3.1步进电机型号
本次设计所采用的电机型号:
28bjy-48四相五线微型步进电机
实物如右图
1.3.2步进电机的基本参数
第2章方案的论证
2.1控制方式的确定
步进电机控制虽然是一个比较精确的,步进电机开环控制系统具有成本低、简单、控制方便等优点,在采用单片机的步进电机开环系统中,控制系统送控制字的间隔和送控制字的顺序实际上就是控制步进电机的运行速度。
系统可用两种办法实现步进电机的速度控制。
一种是延时,一种是定时。
延时方法是在每次按键之后调用一个延时子程序,待延时结束后再次送控制字,这样周而复始就可发出一定频率的CP脉冲。
该方法简单,占用资源少,全部由软件实现,调用不同的子程序可以实现不同速度和不同方向的运行。
但占用CPU时间长,不能在运行时处理其他工作。
因此只适合较简单的控制过程。
定时方法是利用单片机系统中的定时器定时功能产生任意周期的定时信号,从而可方便的控制系统输出CP脉冲的周期。
当定时器启动后,定时器从装载的初值开始对系统及其周期进行加计数,当定时器溢出时,定时器产生中断,系统转去执行定时中断子程序将电机换向子程序放在定时中断服务程序中,定时中断一次,电机换向一次,从而实现电机的速度控制。
2.1.1脉冲序列的生成
图4.2脉冲的生成
脉冲幅值:
由数字元件电平决定。
TTL0~5V
CMOS0~10V
接通和断开时间可用延时的办法控制。
要求:
确保步进到位。
2.1.2方向控制
步进电机旋转方向与内部绕组的通电顺序相关。
四相八拍,通电顺序为:
正转:
A®AB®B®BC®C®CD®D®DA
反转:
A®AD®D®DC®C®CB®B®BA
改变通电顺序可以改变步进电机的转向
2.2脉冲分配
实现脉冲分配(也就是通电换相控制)的方法有两种:
软件法和硬件法。
本次设计采用软件法。
2.2.1通过软件实现脉冲分配
软件法是完全用软件的方式,按照给定的通电换相顺序,通过单片机的IO向驱动电路发出控制脉冲,下面以四相八拍为例
上面提到了三相六拍工作方式通电换相得正序为A-AB-B-BC-C-CD-D-DA-A,,反序为A-AD-D-DC-C-CB-B-BA-A
图4.3用软件实现脉冲分配的接口示意图
注:
P2.0:
A相驱动
P2.1:
B相驱动
P2.2:
C相驱动
P2.3:
D相驱动
三相六拍控制字如下表所示:
表4.1三相六拍工作方式的控制字
通电状态P2.3P2.2P2.12.0控制字
A000101H
AB001103H
B001002H
BC011006H
C010004H
CD11000CH
D100008H
DA100109H
注:
0代表使绕组断电,1代表使绕组通电
在程序中,只要依次将这8个控制字送到P2口,步进电机就会转动一个齿距角,每送一个控制字,就完成一拍,步进电机转过一个步距角。
2.3驱动方式的确定
用于步进电机的驱动一般有两种方法,一种是通过CPU直接来驱动,这种方法一般不宜采用,因为CPU的输出电流脉冲是特别小的它不能足以让步进电机的转动;别一种是通过CPU来间接驱动,就是把从CPU输出的信号进行放大,然后直接驱动或是再通过光电隔离间接来驱动步进电机,这种方法比较安全可靠。
固本次设计应采用CPU间接驱动步进电机。
2.4驱动电路的选择
由于单片机接口信号不够大需要通过ULN2803放大再连接到相应的电机接口,ULN2803属于高电压大电流8达林顿晶体管系列,该阵列系列中的八NPN达林顿连接晶体管是低逻辑电平数字电路(如TTL,CMOS或PMOS/NMOS)和大电流高电压要求的灯、继电器、打印机锤和其他类似负载间的接口的理想器件。
广泛用于计算机,工业消费类产品中。
所用器件有集电极开路输出和用于瞬变抑制的续流钳位二极管。
它与单片机和步进电机连接如下:
2.5基本方案的确定
因本次设计的要求,选用四相八拍步进电机,单片机选用89C51作为控制器。
选取用4511来驱动LED段选,7406作为LED位选驱动以显示电机转速。
选用2803作为步进电机的驱动芯片。
系统原理框图如下所示:
第3章硬件电路的设计
3.1单片机的选择
本次设计以CPU选用89C5l作为步进电机的控制芯片.89C51的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上.使用方便等优点,而且完全兼容MCS5l系列单片机的所有功能。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FAlshProgrAmmABleAndErAsABleReAdOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
3.2LED显示电路设计
LED使用4511驱动,CD4511是一个用于驱动共阴极LED(数码管)显示器的BCD码—七段码译码器,特点如下:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。
可直接驱动LED显示器。
CD4511是一片CMOSBCD—锁存/7段译码/驱动器,引脚排列如图3—2所示。
其中abcd为BCD码输入,a为最低位。
LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。
BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时,B1端应加高电平。
另外CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。
LE是锁存控制端,高电平时锁存,低电平时传输数据。
a~g是7段输出,可驱动共阴LED数码管。
另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观图3-1是CD4511和AT89C51配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只CD4511和LED数码管即可。
所谓共阴LED数码管是指7段LED的阴极是连在一起的,在应用中应接地。
限流电阻要根据电源电压来选取,电源电压5V时可使用300Ω的限流电阻。
图3-1
图3-2
8421BCD码对应的显示见下图:
3.3步进电机与微型机的接口电路电路原理图如下:
1.图中自上而下K1、K2、K3、K4按钮和S1、S2开关分别控制步进电机停止、一档、二挡、三档、正转反转。
2.P1.0-P1.5接控制按钮和开关,P0.0-P0.3送BCD码、P3.0-P3.3送LED段选,P2.0-P2.3送不及电机控制字。
第4章程序设计
4.1程序框图
4.2C程序
#include
Unsignedcharcodetable[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0x00};
unsignedchartemp,temp_old;
unsignedcharkey;
unsignedchari,j,k,m,s;
#include
#defineucharunsignedchar
ucharcodetab[][3]={0x02,0x07,0x03,0x08,0x08,0x01,0x08,0x02,0x01};
voidd10ms()
{
intp,q;
for(p=2;p>0;p--)
for(q=40;q>0;q--);
}
voiddelay(inti)
{inta;
a=i-1;
for(m=i;m>0;m--)
{
P0=tab[a][0];
P3=0x01;
d10ms();
P3=0x00;
P0=tab[a][1];
P3=0x02;
d10ms();
P3=0x00;
P0=tab[a][2];
P3=0x04;
d10ms();
P3=0x00;
}
}
voidsaomiao()
{
P1=0xff;
if(P1_4==0)
{
temp=P1;
temp=temp&0x0f;
if(temp!
=0x0f)
{
for(i=3;i>0;i--)
for(j=80;j>0;j--);
temp=P1;
temp=temp&0x0f;
if(temp!
=0x0f)
{
temp=P1;
temp=temp&0x0f;
switch(temp)
{
case0x0e:
key=1;
break;
case0x0d:
key=2;
break;
case0x0b:
key=3;
break;
case0x07:
key=4;
break;
}
temp=P1;
temp=temp&0x0f;
while(temp!
=0x0f)
{
temp=P1;
temp=temp&0x0f;
}
}
}
}
P1=0xff;
if(P1_5==0)
{
temp=P1;
temp=temp&0x0f;
if(temp!
=0x0f)
{
for(i=3;i>0;i--)
for(j=80;j>0;j--);
temp=P1;
temp=temp&0x0f;
if(temp!
=0x0f)
{
temp=P1;
temp=temp&0x0f;
switch(temp)
{
case0x0e:
key=8;
break;
case0x0d:
key=5;
break;
case0x0b:
key=6;
break;
case0x07:
key=7;
break;
}
temp=P1;
temp=temp&0x0f;
while(temp!
=0x0f)
{
temp=P1;
temp=temp&0x0f;
}
}
}
}
}
voidmain(void)
{
while
(1)
{
saomiao();
if(key==1)
{P1=0;
P2=0;
saomiao();
}
if(key==2)
{
temp_old=key;
for(s=0;s<8;s++)
{P2=table[s];
delay(3);
}
saomiao();
}
if(key==3)
{
temp_old=key;
for(s=0;s<8;s++)
{P2=table[s];
delay
(2);
}
saomiao();
}
if(key==4)
{
temp_old=key;
for(s=0;s<8;s++)
{P2=table[s];
delay
(1);
}
saomiao();
}
if(key==5)
{
temp_old=key;
for(s=9;s<17;s++)
{P2=table[s];
delay(3);
}
saomiao();
}
if(key==6)
{
temp_old=key;
for(s=9;s<17;s++)
{P2=table[s];
delay
(2);
}
saomiao();
}
if(key==7)
{
temp_old=key;
for(s=9;s<17;s++)
{P2=table[s];
delay
(1);
}
saomiao();
}
if(key==8)
{P1=0;
P2=0;
saomiao();
}
}
}
实物图
参考文献
[1]李朝青.单片机原理及接口技术.北京航空航天大学出版社.2006
[2]胡占齐、杨莉.机床数控技术.机械工业出版社.2010
[3]于晓东.51系列单片机丛书80C51单片机原理、开发与应用实例.中国电力出版社.2008
[4]郑锋.51单片机应用系统典型模块开发大全.中国铁道出版社.2010
追问
谢谢,能有论文参考就不错了,邮箱是bussan@
我现在已经确定用L297和L298来进行细分驱动,电路图也连好了,但是程序不会编,这篇论文貌似是用ULN2803芯片驱动的,程序可以借鉴吗?
如果能有L297和L298控制步进电机的参考程序就更好嘞
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 毕业设计 语言 程序