搜档网
当前位置:搜档网 › 单片机控制步进电机

单片机控制步进电机

单片机控制步进电机
单片机控制步进电机

目录

一、设计任务和要求........................................1 二、设计思路..............................................1 三、系统硬件设计..........................................2 3.1单片机电路原理介绍....................... .............3 3.2电机和驱动器电路原理介绍...............................4 3.3显示锁存电路原理介绍...................................5 3.4数码管原理.............................................6 四、系统软件设计...........................................7 五、调试过程与结果.........................................8 六、总结与体会.............................................9 七、参考资料..............................................10 八、附录..................................................10 附录一、总电路图..........................................11 附录二、电路源程序........................................12 附录三、元件清单..........................................17 附录四、实物图.. (18)

一、设计任务和要求

电机控制课程设计是考察学生利用所学过的电机控制专业知识,进行综合的电机控制系统设计并最终完成实际系统连接,能够使学生对电气与自动化的专业知识进行综合应用,培养学生的创新能力和团队协作能力,提高学生的动手实践能力。最终形成一篇符合规范的设计说明书,并参加综合实践答辩,为后期的毕业设计做好准备。

本次设计考核的能力主要有:

1)专业知识应用能力,包括电路分析、电子技术、单片机、检测技术、电

气控制、电机与拖动、微特电机及其驱动、计算机高级语言、计算机辅

助设计、计算机办公软件等课程,还包括本专业的拓展性课程如变频器、组态技术、现场总线技术、伺服电机等课程。

2)项目设计与运作能力,团队协作能力,技术文档撰写能力,PPT汇报与

口头表达能力。

3)电气与自动化系统的设计与实际应用能力。

要求完成的工作量包括:

1)制作实际成品,并现场演示效果。

2)学生结合课题进行PPT演讲与答辩。

3)学生上交课题要求的各类设计技术文档。

二、设计思路

本次设计是以单片机为核心,通过控制模块发出信号,经单片机处理后,向步进电机的驱动器和状态显示模块发出触发信号,使得步进电机接收到驱动器的触

发信号,就开始动作;状态显示模块显示当前步进电机的转速。电源为各个模块提供电能,让每个模块都能正常工作的基础;步进电机不能识别单片机发出的信号,应有驱动模块将单片机发出的信号进行转换、放大;才可以让步进电机做出相应的动作;驱动器在这里起到桥梁作用,为单片机与步进电机的连接而采用的;步进电机有单、双拍及单双混合式工作方式,课程设计采用四相五线式步进电机(双四拍工作方式),驱动模块应具备四根相线,才能满足步进电机的要求,驱动模块选取ULN2003芯片,ULN2003特点是低电压,低功率控制元件,符合课程设计要求;现在是智能化的时代,通过PC机发出要求,硬件做出相应的反馈动作,课程设计的控制模块就涉及到PC机,通过单片机串口通信,就可以与PC 机连接、通信,这样就可以远距离,可监视、控制步进电机的运转速度;显示模块通过一对四联式的数码管构成,能够时时刻刻反映电机的状态,PC机与数码管都可以显示电机的运转速度,二者的区别在于数码管是固定在某个地方,给人指示的作用,而PC机是作为控制而显示的;各个模块都是独立的个体,软件程序是将整个模块合理的统一调度起来,完成课程设计任务。

三、系统硬件设计

可分单元电路进行原理介绍。

1、单片机电路原理介绍:

单片机图

3.1.1 89C51单片机简介

其管脚图如图3-2所示。其各引脚功能如下:

VCC:供电电压。

GND:接地。

P0~P3口:4个8位I/O端口,每

个端口既可以用作输入,也可用作输出。

P3口也可作为AT89C51的一些特殊功能

口。P3.0 RXD(串行输入口);

P3.1 TXD(串行输出口);

P3.2 /INT0(外部中断0);

P3.3 /INT1(外部中断1);

P3.4 T0(计时器0外部输入);

P3.5 T1(计时器1外部输入);

P3.6 /WR(外部数据存储器写选

通);

P3.7 /RD(外部数据存储器读选

通)。

RST:复位输入。当振荡器复位器

件时,要保持RST脚两个机器周期的高电平时间。图3-2 89C51芯片引脚图ALE:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,CPU只访问片外ROM程并执行外部存储器中的指令;当/EA端保持高电平时,CPU只访问片内Flash ROM并执行内部存储器中的指令。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2、电机和驱动器电路原理介绍

图2电机和驱动器图

2.1 ULN2003工作原理:ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直

接相连,可以直接处理原先需要标准逻辑缓冲

器来处理的数据。ULN2003 工作电压高,工

作电流大,灌电流可达500mA,并且能够在

关态时承受50V 的电压,输出还可以在高

负载电流并行运行。ULN2003 采用

DIP—16 或SOP—16 塑料封装。

ULN2003内部还集成了一个消线圈反电动

势的二极管,可用来驱动继电器。它是双列

16脚封装,NPN晶体管矩阵,最大驱动电压

=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。ULN是集成达林顿管IC,内部还集成了一个消线圈反电图2.1 芯片ULN2003

动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。

在本系统中采用了四相五线型步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促使电机旋转的原因。

2.2 驱动模块的工作原理

图 2.1中IN1~IN4引脚经四个与非门接单片机引脚RD0~RD3,引脚

OUT1~OUT4连接到步进电动机的4个引脚。这样单片机发出的信号经过ULN2003放大后从OUT1-OUT4口分别输出到电机的A、B、C、D相线,即可驱动步进电机转动了。

3、显示锁存电路原理介绍

图3锁存电路图

该电路工作原理:74hc573是8位三态D触发器(如图3-10所示)。1脚是输出控制端,1脚=L,使能输出;1脚=H,高阻。11脚是时钟,下降沿触发.。

在数码管显示方面,要维持一个数据的显示,

往往要持续的快速的刷新。尤其是在四段八位数码

管等这些要选通的显示设备上。在人类能够接受的

刷新频率之内,大概每三十毫秒就要刷新一次。这

就大大占用了处理器的处理时间,消耗了处理器的

处理能力,还浪费了处理器的功耗。锁存器的使用

可以大大的缓解处理器在这方面的压力。当处理器

把数据传输到锁存器并将其锁存后,锁存器的输出

引脚便会一直保持数据状态直到下一次锁存新的数

据为止。图3-10 74HC573引脚结构图

4、数码管原理

图4数码管电路图

此模块由一个四位一体的共阴极数码管和排阻组成。四位一体数显数码管用

于步进电机转速的显示,转速数据通过单片机的P2.0~P2.7口输出先经由

74HC574锁存器锁存再传送给数码管进行显示。

4位一体共阴极数码管,其内部段已连接好,引脚如图3-12所示。a、b、c、d、

e、f、g、dP为段引脚,A1、A2、A3、A4分别表示四个数码管的位。

5、串口电路原理51单片机有一个全双工的串行通讯口,所以单片机和计算

机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一

图5 串口模块

个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第

2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,串口电路图第15脚和单片机的20脚连接。

四、系统软件设计

图4.1主程序流程图

图4.3数据处理流程图

软件程序中分主程序部分(设置外部中断0、数码管显示、数据锁存、按键延时消抖)、步进电机正反转参数设置部分、数码管显示延时部分。

其中主程序的主要功能是系统初始参数的设置及按钮的检测,若按钮SW1按下则系统开始工作,反之系统停止工作;外部中断0部分控制脉冲频率,它决定了步进电机转速的快慢;数据锁存部分将单片机P2口输出信号进行锁存,并调用数码管显示延时程序对数码管按位输送数据;数码管显示部分则设定了所要显示的电机转速;步进电动机正反转参数设置由表4-1所示进行设定。

五、调试过程与结果

(1)将各元器件在线路板上进行排版;

(2)按原理图接线;

(3)先测试4位一体数码管的极性

调试过程还是比较成功的,电机能够正常的运转,数码管能够成功的显示电机当前的转速。

六、总结与体会

“实践出真知”!这次课程设计的确使我受益匪浅。

通过本次电机控制课程设计,我们对微特电机及其驱动课程的知识有了进一步的理解和掌握。尤其是在单片机、步进电动机的还有C语言编程的学习上都有了很大的收获。在设计电路时,我们充分应用我们所学的知识,在不断的思考和改进中,将它们设计结合在一起去实现我们想要的结果。这培养了我们对专业知识的综合运用能力和在处理问题时的逻辑思维能力。同时通过这次课程设计也复习了Proteus仿真和Protel绘制原理图的一些基本操作。

在本次课程设计中最能锻炼人的编程环节,因为在这一个环节中,出现的问题是最多,也是最麻烦的。在此过程中,我们发现了修改完善程序的重要性,则我们在编程中要仔细检查自己的程序,考虑到各种可能发生的情况。虽然改写的过程是很需要耐心考验的,但却一步步增强自己的能力,相信通过这次课程设计它对我们以后的学习及工作都会产生重要的影响。

本次课程设计中,我们小组分工合作,从确立课题到绘制原理图、编程再到最后的实物制作与答辩都能有条不紊的进行着,想要有好的学习效率,团队协作非常重要,也是通过这次课程设计,培养了我们的团队精神,这在以后的无论是在生活、学习还是工作中,都是大有帮助的。

总而言之,这次的课程设计让我们体验到了先苦后甜的感觉,让我们收获满满,带着这份甜,带着这份收获,以后的我们会更加的努力,不断前进。

七、 参考资料

参考资料不低于5篇,参考书目要求与本设计课题相关。 格式参考:

[1] 侯文霞. 变频调速技术在中央空调控制中的应用[J].机床电器.2002第二期.

[2] 韩常. PLC 编程及应用[M]. 北京:机械工业出版社,2005.

[3] 彭虎,周佩玲,傅忠谦.微机原理与接口技术[Z].北京:电子工业出版社,2008

[4] 张齐,朱宁西.单片机应用系统设计技术——基于C51的Proteus 仿真[Z].北

京:电子工业出版社,2009

[5]周荷琴,吴秀清.微型计算机原理与节后技术[Z].合肥:中国科技大学出版社。

2009

八、 附录

附录一:总电路图

附录二:电路源程序 #include #include #include "timer0.h" #include "display.h" #include "uart.h" //Motor

sbit CoilA = P1^0; sbit CoilB = P1^1;

sbit CoilC = P1^2;

sbit CoilD = P1^3;

#define uint unsigned int

#define uchar unsigned char

#define STEPNUM 48 //步进电机一圈的步数

///////////////////////////////////////

//步进电机驱动

unsigned char StepNumber=0;

bit StepGapFlag,StrRecvOkFlag;

uchar str1Print[]="Timer0's value is:"; //测试用

uchar i,UartSendArray[8]={0, 0, 0, 0, 0, '\r','\n','\0'}; //测试用:'\r','\n'为换行符,'\0'为结束符

uchar str2Print[]="UartRecvArray value is:"; //测试用

uchar UartPrintArray[6]={0, 0, 0, '\r','\n','\0'}; //测试用

uchar UartRecv,UartRecvArray[5]=0; //定义串行口接收数据变量uint time0value,speedvalueRPM;

uchar disData[]={11,11,11,11,11,0,0,0};

void InitMotor()

{

CoilA = 0;

CoilB = 0;

CoilC = 0;

CoilD = 0;

}

void SetMotor()

{

switch(StepNumber)

{

case 0:

if(StepGapFlag)

{

if(disData[0]==10)

P0 = 0x03; //0000 0011

else

P0 = 0x0c;

_nop_();

StepNumber = 1;

StepGapFlag=0;

}

break;

case 1:

if(StepGapFlag)

{

P0 = 0x09; //0b0000 1001;

_nop_();

StepNumber = 2;

StepGapFlag=0;

}

break;

case 2:

if(StepGapFlag)

{

if(disData[0]==10)

P0 = 0x0c; //0b0000 1100;

else

P0 = 0x03;

_nop_();

StepNumber = 3;

StepGapFlag=0;

}

break;

case 3:

if(StepGapFlag)

{

P0= 0x06; //0b0000 0110;

_nop_();

StepNumber = 0;

StepGapFlag=0;

}

break;

}

}

void main()

{ InitTimer0();//初始化定时器

InitMotor(); //电机停止

Init_SerialCom();

while(1)

{

if(speedvalueRPM != 0)

SetMotor();

if(StrRecvOkFlag)

{

StrRecvOkFlag = 0;

if((UartRecvArray[0]-0x30)<5)

disData[0] = 10;

else

disData[0] = 15;

disData[1] = UartRecvArray[1]-0x30;

disData[2] = UartRecvArray[2]-0x30;

disData[3] = UartRecvArray[3]-0x30;

speedvalueRPM = disData[1]*100+disData[2]*10+disData[3];

//speedvalueRPM/60得到1s转的圈数

//speedvalueRPM/60*STEPNUM 得到步进电机转1圈需加的脉冲数

//1000000/(speedvalueRPM/60*STEPNUM) 得到每个脉冲的时间间隔

time0value = 1000000/(speedvalueRPM*STEPNUM/60);//单位us //=================以下为测试用,串口输出定时器0的定时时间us======

UartSendArray[0] = time0value/10000+0x30;

UartSendArray[1] = time0value/1000%10+0x30;

UartSendArray[2] = time0value/100%10+0x30;

UartSendArray[3] = time0value%100/10+0x30;

UartSendArray[4] = time0value%10+0x30;

UartPrintArray[0] = UartRecvArray[0];

UartPrintArray[1] = UartRecvArray[1];

UartPrintArray[2] = UartRecvArray[2];

UartSendStr(&str1Print);

UartSendStr(&UartSendArray);

UartSendStr(&str2Print);

UartSendStr(&UartPrintArray);

//================================================================ }

display(disData);

}

}

/*************************************

*************************************/

void ISR_Timer0(void) interrupt 1

{

uint temp;

temp = 65536-time0value;

TH0=temp/256; //12M

TL0=temp%256;

StepGapFlag=1;

}

void UART_ISR (void) interrupt 4 using 3 //中断函数不用声明

{

if(RI==1)

{

RI=0;

UartRecv=SBUF;

if(UartRecv != '\0')

{

UartRecvArray[i]=UartRecv;

i++;

}

if(i == 4) //假定输入的速度值为3个字符

{

i=0;

StrRecvOkFlag=1;

}

}

}

附录三:元件清单

附录四:实物图片

单片机控制步进电机和数码管显示

一、设计任务书 设计内容:用80C51单片机设计一个步进电机控制器 设计要求: 1.用8015设计一个四相步进电机。 2.可控制步进电机的启动与停止,正转与反转。 3.10档速度调节。 4.点动控制。 5.可显示电机运行参数。 二、设计总体方案 (一)控制方式的选择 控制主要用于电机速度和方向的转换。控制方式有按键控制和开关控制两种。按键较开关而言,操作更加简便,故选按键控制。 方案一:独立按键。独立按键可自由连接,线路简单。 方案二:编码式键盘。编码式键盘的按键接触点接于74LS148芯片。当键盘上没有闭合时,所有按键都断开,当某一键闭合时,该键对应的编码由74LS148输出。 本次设计所需按键不多,不需要采用复杂编码,考虑硬件条件、线路连接和经济性等方面,选择方案一。 (二)电机电路设计方案的选择 由于条件的限制,对于电机的选择只能是实验台上最小步距角18°的电机,其中已包含了驱动电路。 (三)单片机的选择 方案一:AT89C51高性能8位单片机,内部集成CPU、存储器、寄存器、I/O接口,从而构成较为完整的计算机,价格便宜。 方案二:C8051F005单片机,该单片机是完全集成的混合信号系统及芯片,具有8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还继承了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,执行速度快,但价格较贵。 本次课程设计是在仿真环境下进行,没有太过考虑单片机选择的问题,但就设计本身来讲,从物美价廉的角度考虑,选择方案一较合适。 (四)显示方案的选择 方案一:采用LED数码管。LED数码管是轮流现实的,其利用人烟的视觉暂留特性,使人感觉不到数码管闪动,看到每只数码管都常亮。利用其显示必须不停给数码管数据输入口循环赋值,显示内容较多,编程和接线较为复杂。 方案二:采用LCD1602液晶显示器。LCD1602具有功率小,效果明显,变成容易等优点,且它最多能显示2×16个字符,可以轻松满足设计要求。 由上可知,LCD1602液晶显示器的优点突出,故选择方案二。 (五)软件部分的选择 软件部分的选择主要是指编程语言的选择,编译调试工具根据设计平台选择伟福软件。编程语言主要有以下两种方案。

基于51系列单片机控制步进电机调速实验 (自动保存的)

基于51系列单片机控制步进电机调速实验 实验指导书 仇国庆编写 重庆邮电大学自动化学院 自动化专业实验中心 2009年2月

基于51系列单片机控制步进电机调速实验 实验目的及要求: 1、熟悉步进电机的工作原理 2、熟悉51系列单片机的工作原理及调试方法 3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量) 4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。速度设定由键盘设定,步进电机的反馈速度由LED 数码管显示。 实验原理: 步进电机控制原理 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所 以又称为脉冲电动机。随着数字控制系统的发展,步进电动机的应用将 逐渐扩大。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来 进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由 脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号 可以由单片机产生。 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几 何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻 两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐, B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)

基于单片机的步进电机控制系统

编号: 综合智能电子 实训 (论文)说明书题目: 院(系):使用科技学院 专业:电子信息工程 学生姓名: 学号: 指导教师: 2010年 1 月 6 日

目录 引言 第1章简介 1.1 步进电机 第2章步进电机原理 2.1 步进电机的工作原理 2.1.1结构及基本原理 2.1.2 电机的步进顺序 第3章系统的硬件设计 3.1 系统设计方案 3.2 主从机硬件部件介绍 3.2.1A T89S51简介 3.2.2 TGI2864E简介 3.2.3MAX485 串行通信 3.2.4TIP122 3.2.5 MOC70T2 3.3 LCD显示电路设计 3.4 电机驱动模块设计 第4章系统的软件实现 4.1 系统软件主流程图 4.2 系统初始化流程图 4.3 部分子程序 第五章总结 致谢 参考文献 摘要:本文使用单片机、步进电机驱动芯片、字符型LCD和键盘阵列,构建了集步进电机控制器和驱动器为一体的步进电机控制系统。二维工作台作为被控对象通过步进电机驱动滚珠丝杆在X/Y轴方向联动。文中讨论了一种以最少参数确定一条圆弧轨迹的插补方法和步进电机变频调速的方法。步进电机控制系统的开发采用了软硬件协同仿真的方法,可以有效地减少系统开发的周期和成本。最后给出了步进电机控制系统的使用实例。

关键词:步进电机控制系统,插补算法,变频调速,软硬件协同仿真 In this paper, microcontroller, stepper motor driver chips, character LCD and keypad array, build a set of stepper motor controller and driver as one of the stepping motor control system. Two-dimensional table as a charged object by stepper motor drive ball screw in X / Y axis linkage. This paper discusses a minimum of parameters to determine the trajectory of a circular interpolation method and the method of frequency control stepper motor. Stepper motor control system has been developed using the software and hardware co-simulation method, can effectively reduce the system development cycle and cost. Finally, the stepper motor control system application examples.

基于单片机的步进电机驱动控制

基于单片机的步进电机驱动控制 一、步进电机概述 1.步进电机的定义 步进电机指的是以数字脉冲信号作为电机线或教位移的控制信号,并以数字脉冲频率对电机的转速进行控制的动力控制系统。 在负载正常范围的情况下,步进电机的运行状态只和数字脉冲发生器提供的信号的频率和脉冲占空比有关,一般情况下,电机的状态不受负载的影响。电机的运行角度只和每次所给予的脉冲信号强度有关,而电机的运行速度也只和脉冲信号的频率有直接关 系。这种采用弱点控制强电的控制方式使得步进电机在速度、位移等控制领域有着普通电机不能比拟的优势。 2.驱动控制系统框图 步进电机控制系统有着精确控制、运行稳定的特性,这一其他电机不能比拟的优势使得步进电机得到了广泛的应用。而一般对步进电机控制系统的驱动必须要包含脉冲信 号发生部分,功放部分和驱动控制部分等几个模块电路,我们根据这些通过的模块电路,可将步进电机控制系统的通用框图绘制如下: 在上图的步进电机驱动控制系统方框图中,控制步进电机运行状态的脉冲信号一 般由集成芯片产生,可以是单片机、等智能芯片,也可以是一般的数字电路集成芯片。信号分配环节则要根据步进电机的型号来选择,如四相步进电机有四相四拍和四相 八拍种信号分配的方式;两相步进电机有两相四拍和八拍等脉冲加载形式。功放部分 在驱动环节上显得尤为重要。动态平均电流是步进电机转矩大小的决定因素,前提条件 是电机的速度。电机力矩与平均电流成正比,驱动系统对电机的反电势消弱越多,则平 均电流就越大。 我们一般可以用恒压和恒压串电阻的方法来驱动,或者在条件允许的情况下我们可以用高低压驱动、恒流和细分数等方法来驱动实际的应用过程种,多采用数字集成驱 动芯片作为步进电机的驱动手段。 二、现阶段国内外步进电机驱动的常用方式 1.变频器控制方式 使用变频器对步进电机进行驱动控制时,可以很好的解决步进电机在启动和停止时 容易失步的问题,提高了系统的控制精度。但是变频器的应用成本较高,结构和操作也 比较复杂,无形中提高步进电机的控制难度。 2.PLC控制方式 使用ABB、西门子、欧姆龙等国际知名生产制造商研发的系列产品可以 实现对步进电机的理想化控制,但是基于核心的步进电机控制系统成本高昂,且 难以实现精确控制,在本系统中不太适合。 3.单片机控制方式 随着嵌入式系统在工业控制领域中的广泛应用,以单片机特别是系列单片机 作为控制核心的步进电机控制电路在生产生活领域得到了普及,单片机有着大规模数字

完整的单片机控制步进电机程序

#include "reg52.h" #include "INTRINS.H" #include #include #define uint unsigned int #define uchar unsigned char void check_addr(void); /*地址核对*/ uchar code slave_addr[4]={00, 01, 02, 255}; /*从机地址*/ uchar idata T0low, T0high,common_count,input_order,cmd_in_permit,interval; uchar sent_ok,speed_change,start_up,start_end,address_true,i; uint y1; uint code add[100]={60006,62771,63693,64154,64430,64614,64746,64845,64922,64983,65033,65075,651 11,65141,65167,65190,65211,65229,65245,65260,65273,65285,65296,65306,65315,65323,65331 ,65339,65345,65352,65358,65363,65368,65373,65378,65382,65387,65390,65394,65398,65401,6 5404,65407,65410,65413,65416,65418,65421,65423,65425,65428,65430,65432,65434,65435,654 37,65439,65441,65442,65444,65445,65447,65448,65450,65451,65452,65453,65455,65456,65457 ,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65469,65470,6 5471,65472,65472,65473,65474,65475,65475,65476,65477,65477,65478,65478,65479,65480,654 80,65481}; sbit P2_0=P2^0; /*作输入步进电机的脉冲信号发送口*/ sbit P2_2=P2^2; /*作输入步进电机的旋转方向信号发送口*/ sbit P1_0=P1^0; /*作串口输出信号的使能口, P1_0=0时接通串口,输出信号*/ sbit WD=P1^7; /*看门狗*/ main() { P2_0=0; P2_2=0; /*步进电机的旋转方向待试验后确定*/ P1_0=1; /*开机时需要关断,串口发送功能,需要时再接通*/ WD=1; /*看门狗先为1,电平翻转为喂狗*/ i=0; common_count=0; cmd_in_permit=0; input_order=0; interval=0; address_true=1; speed_change=0; start_up=0;

51单片机控制四相步进电机解析

51单片机控制四相步进电机 2009年07月21日星期二 12:44 51单片机控制四相步进电机 2009-03-01 18:53 接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。这几天给自己的任务就是搞定步进电机的单片机控制。以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下 图所示: 详细内容: https://www.sodocs.net/doc/506561819.html,/31907887_d.h tml

拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。 如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四

线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图: C51程序代码为: 代码一 #include static unsigned int count; static unsigned int endcount; void delay(); void main(void)

51单片机控制步进电机程序及硬件电路图

#include static unsigned int count; //计数 static int step_index; //步进索引数,值为0-7 static bit turn; //步进电机转动方向 static bit stop_flag; //步进电机停止标志 static int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快static int spcount; //步进电机转速参数计数 void delay(unsigned int endcount); //延时函数,延时为endcount*0.5毫秒 void gorun(); //步进电机控制步进函数 void main(void) { count = 0; step_index = 0; spcount = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; //允许CPU中断 TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许 TH0 = 0xFE;

TL0 = 0x0C; //设定时每隔0.5ms中断一次TR0 = 1; //开始计数 turn = 0; speedlevel = 2; delay(10000); speedlevel = 1; do{ speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=0; }while(1); } //定时器0中断处理 void timeint(void) interrupt 1 { TH0=0xFE; TL0=0x0C; //设定时每隔0.5ms中断一次count++; spcount--; if(spcount<=0) { spcount = speedlevel; gorun(); } } void delay(unsigned int endcount) { count=0; do{}while(count

51单片机驱动步进电机的方法(详解)

51单片机驱动步进电机的方法2019.02 这款步进电机的驱动电压12V,步进角为7.5度. 一圈360 度, 需要48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用51驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。 ;****************************************************************************** ;*************************步进电机的驱动*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19

;--------------------------------------------------------------------------------- ; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!! ; 本步进电机步进角为7.5度. 一圈360 度, 需要48 个脉冲完成!!! ;--------------------------------------------------------------------------------- ; A组线圈对应P2.4 ; B组线圈对应P2.5 ; C组线圈对应P2.6 ; D组线圈对应P2.7 ; 正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转7.5 度) ;---------------------------------------------------------------------------------- ;----------------------------正转-------------------------- ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R3,#144 正转3 圈共144 脉冲 START: MOV R0,#00H START1: MOV P2,#00H MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ START 对A 的判断,当A = 0 时则转到START MOV P2,A LCALL DELAY INC R0 DJNZ R3,START1 MOV P2,#00H LCALL DELAY1 ;-----------------------------反转------------------------ MOV R3,#144 反转一圈共144 个脉冲 START2: MOV P2,#00H

用单片机控制步进电机

用单片机控制步进电机 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 一、步进电机常识 常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。 二、永磁式步进电机的控制 下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。 图1是35BY型永磁步进电机的外形图,图2是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。要使用步进电机转动,只要轮流给各引出端通电即可。将COM端标识为C,只要AC、 C、BC、 C,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM端接正电源,那么只要用开关元件(如三极管),将A、、B、轮流接地。 下表列出了该电机的一些典型参数: 表1 35BY48S03型步机电机参数 型号步距角相数电压电流电阻最大静转距定位转距转动惯量 35BY48S03 7.5 4 12 0.26 47 180 65 2.5 有了这些参数,不难设计出控制电路,因其工作电压为12V,最大电流为0.26A,因此用一块开路输出达林顿驱动器(ULN2003)来作为驱动,通过P1.4~P1.7来控制各线圈的接通与切断,电路如图3所示。开机时,P1.4~P1.7均为高电平,依次将P1.4~P1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。如果要改变电机的

最新51单片机控制四相步进电机电路图汇总

51单片机控制四相步进电机电路图

51单片机控制四相步进电机 接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。这几天给自己的任务就是搞定步进电机的单片机控制。以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下图所 示: 拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。 如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图:

C51程序代码为: 代码一 #include static unsigned int count; static unsigned int endcount; void delay(); void main(void) { count = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0;

EA = 1; //允许CPU中断TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许TH0 = 0xFC; TL0 = 0x18; //设定时每隔1ms中断一次 TR0 = 1; //开始计数 startrun: P1_3 = 0; P1_0 = 1; delay(); P1_0 = 0; P1_1 = 1; delay(); P1_1 = 0; P1_2 = 1; delay(); P1_2 = 0; P1_3 = 1; delay(); goto startrun; } //定时器0中断处理 void timeint(void) interrupt 1

基于51单片机的步进电机控制-

基于51单片机的步进电机控制 [摘要]本课程设计的内容是利用51单片机,达到控制步进电机的启动、 停止、正转、反转、两档速度和状态显示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2803,ULN2803具有大电流、高电压,外电路简单等优点。利用四位数码管增设电机状态显示功能,各项数据更直观。实测结果表明,该控制系统达到了设计的要求。 关键字:步进电机、数码管、51单片机、ULN2803 一步进电机与驱动电路 1.1 什么是步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 1.2 步进电机的种类 步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛。 1.3 步进电机的特点 1.精度高一般的步进电机的精度为步进角的3-5%,且不累积。可在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,这是步进电动机最突出的优点 2.过载性好其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合; 3.控制方便步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算机控制带来了很大的方便,反过来,计算机的出现也为步进电机开辟了更为广阔的使用市场;

单片机步进电机控制实训报告.doc

单片机课程设计——步进电动机系统实训报告 李会民 电子工程系应用电子高职(3)08-1班 二00九年十二月

步进电机控制实训报告 一、实验要求 利用P0输出脉冲序列,74LS244输入开关量,开关K2-K8控制步进电机转换(分6挡).K0,K1控制步进电机转向.必须要K2-K8中一开关和K0,K1中一开关同时为‵1′时步进电机才启动,其他情况步进电机不工作. 步进电机驱动原理是通过对它每线圈中的电流的顺序切换来使电机作步进式旋转.驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速.微电脑控制电机步进电机最合适. 二、实验目的 (a)了解步进电机控制的基本原理 (b)掌握控制步进电机转动编程方法 三、单片机控制原理及电路连线 单片机是用来为步进电机进行控制的,给电机提供时序脉冲,让电机以某一种方式进行运转。硬件部分设计 AT89C51 外围电路设计包含有三部分的设计:键盘模块,晶振模块及复位模块。 通过按键的输入,单片机作为控制的中心决定步进电机的正转,反转,启动及停止等操作。同时通过单片机实现电子时钟控制步进电机。 键盘设计。考虑有两种方式:需要上拉电阻的方式和不需要上拉电阻的方式。由于单片内部设有小的上拉电阻,当外围电路很小时,是可以不考虑前一种方式的。我们的键盘只是起到输入时序的作用,并没有外带大的电路,所以我们选择第二种方式: 当K_1按下时:步进电机处于启动状态; 当K_2按下时:步进电机处于停止状态; 当K_3按下时:步进电机处于正向状态; 当K_4按下时:步进电机处于反向状态; 基于AT89C51的步进电机驱动器控制系统电路原理可以表示为如下图:

51单片机实现步进电机控制

摘要 8051单片机控制步进电机进行简单的转速控制,包括启停变换转速控制等。利用利用https://www.sodocs.net/doc/506561819.html,单片机实验箱以模拟电压提供电机转速设定值,使用并行模数转换芯片ADC0809 进行电压信号的采集和数据处理转换得到速度给定的数字量,通过单片机的P1 口控制步进电机的控制端,使其按一定的控制方式进行转动。调节步进电机转速,使其与给定值相当,最后,利用ZLG7290模块驱动LED数码管显示速度设定值。通过这个单片机控制系统的设计来掌握A/D转换的原理,了解步进电机的工作原理,掌握它的转速控制方式和调速方法,并且掌握LED显示原理和ZLG7290模块的使用方法,用LED数码管显示模数转换的结果,设计电路的硬件接线图和实现上述要求的程序。最后实现通过改变模拟电压就可以改变步进电机的转速控制,并且在LED 数码管上显示步进电机的转速这一功能。 关键词:51单片机调速步进电机LED显示

绪论 在进行51单片机的学习和实验过程中曾利用51单片机对步进电机进行过简单的控制,包括利用https://www.sodocs.net/doc/506561819.html,单片机试验箱对步进电机进行转角控制,方向控制等。即按照设定的转动角度步进电机进行动作,来实现步进电机的实时控制,通过设定的方向来实现步进电机的方向反转控制等,并利用利用ZLG7290模块驱动LED数码管显示步进电机的设定值与步进电机实际所转过过的角度,同时显示步进电机的旋转方向等。 这次所进行的步进电机转速控制系统是对步进电机的另一种控制,即实现步进电机的转速控制而不是单单的转动角度控制,并且是通过模拟量输入来时时的控制步进电机的转速。并且通过数码管来显示出所设定的步进电机的转速。

单片机实现步进电机控制

科信学院 单片机系统设计项目(三级项目) 设计说明书 (2012/2013学年第二学期) 题目:基于单片机的步进电机控制______ __ 专业班级:通信工程10级1班___ __ 学生姓名:彭斯媛刘洋何亚惠_ ____ 刘萌李赛___ __ 学号: 100312102 100312101 100312110 100312120 100312128___ __ 指导教师:马小进、贾少锐、李晓东、付佳_ 设计周数: 2周____ ___ :__ ___ 2013年6月21日 设计成绩:

目录 1 步进电机的简介 (3) 1.1 什么是步进电机 (3) 1.2 步进电机的分类 (3) 1.3 步进电机的特点 (3) 1.4 步进电机的原理 (3) 1.5步进电机的驱动电路 (4) 2 89C51单片机 (6) 2.1 单片机引脚图 (6) 2.2 单片机简介 (6) 2.2.1主要特性 (6) 2.2.2 管脚说明 (6) 2.2.3 振荡器特性 (8) 2.2.4 芯片擦除 (9) 3 硬件程序设计 (9) 3.1 系统总体框图 (9) 3.2 最小系统 (10) 3.3驱动部分 (10) 3.4 状态指示部分 (11) 3.5 按键部分 (11) 3.6 时钟部分 (12) 4 Proteus仿真总图 (12) 5实物图 (13) 6系统程序 (13) 7课程设计总结 (15) 8参考文献 (16)

1步进电机简介 1.1什么是步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 1.2步进电机的分类 步进电机分永磁式(PM)、反应式(VR)、和混合式(HB)三种。永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为 1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为 1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。 1.3步进电机的特点 1.精度高 一般的步进电机的精度为步进角的3-5%,且不累积。可在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,这是步进电动机最突出的优点; 2.过载性好 其转速不受负载大小的影响,不像普通电机,当负载加大时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的场合; 3.控制方便 步进电机是以“步”为单位旋转的,数字特征比较明显,这样就给计算机控制带来了很大的方便,反过来,计算机的出现也为步进电机开辟了更为广阔的使用市场; 4.整机结构简单 传统的机械速度和位置控制结构比较复杂,调整困难,使用步进电机后,使得整机的结构变得简单和紧凑。

步进电机的单片机控制

本设计采用凌阳16 位单片机SPCE061A对步00进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。 步进电机的单片机控制 作者:李通刘志垠 摘要:本设计采用凌阳16 位单片机SPCE061A对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机;同时,用4X4的键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74L S164作为4位单个数码管的显示驱动,从单片机输入信号;利用凌阳单片机的语音功能播报电机的转速。 关键词:步进电机单片机数码管 一、方案论证与比较 1、本设计的重点在于对步进电机的控制和驱动,设计中受控电机为四相六线制的步进电机(内阻33欧,步进1.8度,额定电压12V) 方案一:使用多个功率放大器件驱动电机 通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行

放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。 方案二:使用L298N芯片驱动电机 L298N芯片可以驱动两个二相电机(如图1-1),也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。 图1-1 通过比较,使用L298N芯片充分发挥了它的功能,能稳定地驱动步进电机,且价格不高,故选用L298N驱动电机。而使用L298N时,可以用L297来提供时序信号,可以节省单片机IO口的使用;也可以直接用单片机模拟出时序信号,由于控制并不复杂,故选用后者。 2、数码管显示电路的设计 方案一:串行接法 设计中要显示4位数字,用74LS164作为显示驱动,其中带锁存,使用串行接法可以节约IO口资源,但要使用SIO,发送数据时容易控制。 方案二:并行接法 使用并行接法时要对每个数码管用IO口单独输入数据,占用资源较多。

单片机控制步进电机驱动器原理

单片机控制步进电机驱动器原理 步进电机在控制系统中具有广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、 电磁差分器、或角位移发生器等。 有时从一些旧设备上拆下的步进电机(这种电机一般没有损坏)要改作它用,一般需自己设计驱动器。 本文介绍的就是为从一日本产旧式打印机上拆下的步进电机而设计的驱动器。 本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。 1. 步进电机的工作原理 该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1是该四相反应式步进电机工作原理示意图。 图1 四相步进电机步进示意图 开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。 当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转 动。 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示: a. 单四拍 b. 双四拍c八拍 图2.步进电机工作时序波形图 2.基于AT89C2051的步进电机驱动器系统电路原理 步进电机驱动器系统电路原理如图3:

基于单片机控制步进电机

课程设计(论文)说明书 题目:基于单片机控制步进电机 院(系): 专业:自动化 学生姓名:杨健 学号:0316680007 指导教师:薛云灿 职称: 2017年5 月1日

本课程设计的要求是用51系列单片机对步进电机进行控制,对单片机控制步进电机系统的控制方式和软件设计进行研究,分别从速度控制,正反转进行详细的分析,步进电机是一种常用的执行机构,它的用途是将电脉冲转化为角位移。当步进驱动收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可控制角位移量,从而达到准确定位的目的。 关键字:单片机;步进电机;控制系统;

In this paper, the design used 51microcontroller series of stepper motor control SCM control of the stepper motor control system and software design of the study from the speed and direction, stepper motor electromechanical control the implementation. When stepping drivers receive a pulse signal it stepper motor driven in the direction set by a fixed rotating angular displacement, thus achieving the purpose of accurate positioning; pass control to control the pulse Frequency of motor rotation speed and acceleration so as to achieve the purpose of speed. Key words:Single slice machine;Stepper motor;Control system

51单片机驱动步进电机__终极完整版

51单片机驱动步进电机__终极(完整版) 在这里介绍一下用51单片机驱动步进电机的方法。这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈360 度 , 需要 48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用51驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩 不是很大,大家可自行加大驱动电压到12V。

;************************************************ ****************************** ;************************* 步进电机的驱动 *************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19 ;--------------------------------------------------------------------------------- ; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!! ; 本步进电机步进角为 7.5度 . 一圈 360 度 , 需要48 个脉冲完成!!! ;--------------------------------------------------------------------------------- ; A组线圈对应 P2.4 ; B组线圈对应 P2.5 ; C组线圈对应 P2.6 ; D组线圈对应 P2.7 ; 正转次序: AB组--BC组--CD组--DA组 (即一个脉冲,正转 7.5 度) ;---------------------------------------------------------------------------------- ;----------------------------正转

51单片机控制四相步进电机(详细)

。今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下图所示: 拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为3 60/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。

如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图:

制作的实物图如下:

C51程序代码为: 代码一 #include static unsigned int count; static unsigned int endcount; void delay(); void main(void) { count = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; //允许CPU中断 TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许

TH0 = 0xFC; TL0 = 0x18; //设定时每隔1ms中断一次 TR0 = 1; //开始计数 startrun: P1_3 = 0; P1_0 = 1; delay(); P1_0 = 0; P1_1 = 1; delay(); P1_1 = 0; P1_2 = 1; delay(); P1_2 = 0; P1_3 = 1; delay(); goto startrun; } //定时器0中断处理 void timeint(void) interrupt1 { TH0=0xFC; TL0=0x18; //设定时每隔1ms中断一次 count++; } void delay() { endcount=2; count=0; do{}while(count

相关主题