搜档网
当前位置:搜档网 › 完整的单片机控制步进电机程序

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

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

#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;

start_end=0;

sent_ok=0; //允许发送

EA=1; /*开放总中断*/

TMOD=0x21;

TH1 = 0xFD; // 波特率9600

TL1 = 0xFD;

SCON = 0xd0; // 设定串行口工作方式

PCON &= 0x00; // 波特率不倍增

SM2=1;

TR1 = 1;

ES=1; // 启动定时器1

T2MOD=00;

T2CON=0x00;

RCAP2H =0xEE; //赋T2的预置值0xA600,25MS,0xB800,20MS,0xCA00,15MS,0xDC00,10MS,0xEE00,5MS

RCAP2L =0x00;

TR2=1; //启动定时器

ET2=1; //打开定时器2中断

do

{

if(address_true==1)

{

address_true=0;

check_addr();

}

if(start_up==1&&start_end==0) //第一次启动

{

y1=add[common_count];

T0high = (uchar)(y1>>8) ; /*取y1的高8位*/

T0low = (uchar)(y1&0x00ff); /*取y1的低8位*/

TR0 = 1;

ET0=1; /*允许T/C0中断*/

start_end=1;

}

if(speed_change==1)

{

if(interval>=0&&interval<=0x63)

{

if(interval>common_count)

{common_count=common_count+1; }

if(interval

{common_count=common_count-1; }

}

speed_change=0;

}

if(sent_ok==1)

{

sent_ok=0;

P1_0=0;

for(i=0;i<=20;i++) {_nop_();}

TI=0; SBUF=T0high;

while(TI==0);TI=0;

TI=0; SBUF=T0low;

while(TI==0);TI=0;

P1_0=1;

for(i=0;i<=20;i++) {_nop_();}

SM2=1;

}

}

while(1);

}

void timer0(void) interrupt 1 using 3

{

P2_0=~P2_0;

y1=add[common_count];

T0high = (uchar)(y1>>8) ; /*取y1的高8位*/

T0low = (uchar)(y1&0x00ff); /*取y1的低8位*/

TH0=T0high; /*高8位T0high送定时器0的TH0*/

TL0=T0low; /*低8位T0low送定时器0的TL0*/

}

void timer2(void) interrupt 5 using 2

{

TF2=0; /*T2溢出中断需软件清0*/

speed_change=1; //速度可以改变标示,以便主程序处理

WD=!WD; /*MAX813喂狗*/

}

void inte_SERIAL() interrupt 4 using 1 /*串口0中断服务子程序*/ {

uchar key_in ;

key_in=0;

if(RI)

{

key_in=SBUF;

RI=0;

if (SM2==1)

{

if(key_in==slave_addr[2])

{

SM2=0;

address_true=1;

}

}

if ((SM2==0)&& (RB8==0))

{ if(key_in==0xff){SM2=1;}

if(key_in==0xfe)

{ /*接收主机命令引导字节,准备接收主机命令*/

cmd_in_permit=1;

}

if(cmd_in_permit==1)

{

input_order=input_order+1;

}

if (input_order==2)

{ /*接收主机命令,使从机开始调节电机*/

cmd_in_permit=0;

input_order=0;

/*interval代表控制器发给电机的转速期望值*/

interval= key_in;

sent_ok=1;

if(start_up==0){start_up=1;}

}

}

}

}

void check_addr(void)

{ /*地址核对成功,发送从机地址给主机*/

TB8=1;

RB8=0;

P1_0=0;

for(i=0;i<=25;i++) {_nop_();}

SBUF=slave_addr[2]; /*发送地址核对成功,发送从机地址给主机*/ do{} while(TI==0); TI=0;

P1_0=1;

for(i=0;i<=25;i++) {_nop_();}

TB8=0;

}

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

一、设计任务书 设计内容:用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液晶显示器的优点突出,故选择方案二。 (五)软件部分的选择 软件部分的选择主要是指编程语言的选择,编译调试工具根据设计平台选择伟福软件。编程语言主要有以下两种方案。

步进电动机控制方法

<<技能大赛自动线的安装与调试>>项目二等奖 心得二 心得二:步进电机的控制方法 我带队参加《2008年全国职业院校技能大赛自动线的安装与调试》项目,我院选手和其他院校的三位选手组成了天津代表队,我院选手所在队获得了《2008年全国职业院校技能大赛自动线的安装与调试》项目二等奖,为天津市代表队争得了荣誉,也为我院争得了荣誉。以下是我这个作为教练参加大赛的心得二:步进电机的控制方法 《2008年全国职业院校技能大赛自动线的安装与调试》项目的主要内容包括如气动控制技术、机械技术(机械传动、机械连接等)、传感器应用技术、PLC控制和组网、步进电机位置控制和变频器技术等。但其中最为重要的就是PLC方面的知识,而PLC中最重要就是组网和步进电机的位置控制。 一、 S7-200 PLC 的脉冲输出功能 1、概述 S7-200 有两个置PTO/PWM 发生器,用以建立高速脉冲串(PTO)或脉宽调节(PWM)信号波形。 当组态一个输出为PTO 操作时,生成一个50%占空比脉冲串用于步进电机或伺服电 机的速度和位置的开环控制。置PTO 功能提供了脉冲串输出,脉冲周期和数量可由用户控制。但应用程序必须通过PLC内置I/O 提供方向和限位控制。 为了简化用户应用程序中位控功能的使用,STEP7--Micro/WIN 提供的位控向导可以帮助您在几分钟内全部完成PWM,PTO 或位控模块的组态。向导可以生成位置指令,用户可以用这些指令在其应用程序中为速度和位置提供动态控制。 2、开环位控用于步进电机或伺服电机的基本信息 借助位控向导组态PTO 输出时,需要用户提供一些基本信息,逐项介绍如下: ⑴最大速度(MAX_SPEED)和启动/停止速度(SS_SPEED) 图1是这2 个概念的示意图。 MAX_SPEED 是允许的操作速度的最大值,它应在电机力矩能力的范围。驱动负载所需的力矩由摩擦力、惯性以及加速/减速时间决定。

基于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所示)

步进电机控制速度的方法

步进电机只能够由数字信号控制运行的,当脉冲提供给驱动器时,在过于短的时间里,控制系统发出的脉冲数太多,也就是脉冲频率过高,将导致步进电机堵转。要解决这个问题,必须采用加减速的办法。就是说,在步进电机起步时,要给逐渐升高的脉冲频率,减速时的脉冲频率需要逐渐减低。这就是我们常说的“加减速”方法。 步进电机转速度是根据输入的脉冲信号的变化来改变的,从理论上讲,给驱动器一个脉冲,步进电机就旋转一个步距角(细分时为一个细分步距角)。实际上,如果脉冲信号变化太快,步进电机由于内部的反向电动势的阻尼作用,转子与定子之间的磁反应将跟随不上电信号的变化,将导致堵转和丢步。 所以步进电机在高速启动时,需要采用脉冲频率升速的方法,在停止时也要有降速过程,以保证实现步进电机精密定位控制。加速和减速的原理是一样的。以加速实例加以说明:加速过程是由基础频率(低于步进电机的直接起动最高频率)与跳变频率(逐渐加快的频率)组成加速曲线(降速过程反之)。跳变频率是指步进电机在基础频率上逐渐提高的频率,此频率不能太大,否则会产生堵转和丢步。 步电机系统解决方案

加减速曲线一般为指数曲线或经过修调的指数曲线,当然也可采用直线或正弦曲线等。使用单片机或者PLC,都能够实现加减速控制。对于不同负载、不同转速,需要选择合适的基础频率与跳变频率,才能够达到最佳控制效果。指数曲线,在软件编程中,先算好时间常数存贮在计算机存贮器内,工作时指向选取。通常,完成步进电机的加减速时间为300ms以上。如果使用过于短的加减速时间,对绝大多数步进电机来说,就会难以实现步进电机的高速旋转。 深圳市维科特机电有限公司成立于2005年,是步进电机产品的销售、系统集成和应用方案提供商。我们和全球产品性价比高的生产厂家合作,结合本公司专家团队多年的客户服务经验,给客户提供有市场竞争力的步进电机系统解决方案。我们的主要产品有信浓(SHINANO KENSHI)混合式步进电机、日本脉冲(NPM)永磁式步进电机、减速步进电机、带刹车步进电机、直线步进电机、空心轴步进电机、防水步进电机以及步进驱动器、减振垫、制振环、电机引线、拖链线、齿轮、同步轮、手轮等专业配套产品。我们还供应德国TRINAMIC驱动芯片和日本NPM运动控制芯片。根据客户配套需要,我们还可以 步电机系统解决方案

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

编号: 综合智能电子 实训 (论文)说明书题目: 院(系):使用科技学院 专业:电子信息工程 学生姓名: 学号: 指导教师: 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.

步进电机控制方法

第四节 步进电机的控制与驱动 步进电机的控制与驱动流程如图4-11所示。主要包括脉冲信号发生器、环形脉冲分配器和功率驱动电路三大部分。 步进脉冲 方向电平 图4-11 步进电机的控制驱动流程 二、步进电机的脉冲分配 环形分配器是步进电机驱动系统中的一个重要组成部分,环形分配器通常分为硬环分和软环分两种。硬环分由数字逻辑电路构成,一般放在驱动器的内部,硬环分的优点是分配脉冲速度快,不占用CPU的时间,缺点是不易实现变拍驱动,增加的硬件电路降低了驱动器的可靠性;软环分由控制系统用软件编程来实现,易于实现变拍驱动,节省了硬件电路,提高了系统的可靠性。 1.采用硬环分时的脉冲分配 采用硬环分时,步进电机的通电节拍由硬件电路来决定,编制软件时可以不考虑。控制器与硬环分电路的连接只需两根信号线:一根方向线,一根脉冲线(或者一根正转脉冲线,一根反转脉冲线)。假定控制器为AT89S52单片机,晶振频率为12MHz,如图4-18:P1.0输出方向信号,P1.1输出脉冲信号。 则控制电机走步的程序如下: (1)电机正转100步 MOV 0FH,#100D ;准备走100步 CONT1: SETB P1.0 ;正转时P1.0=1 CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效) NOP ;延时(延时的目的是让驱动电路的光耦充分导通) NOP ;延时(根据驱动器的需要,调整延时) SETB P1.1 ;发步进脉冲的上升沿 MOV 0EH,#4EH ;两脉冲之间延时20000μs(决定电机的转速) MOV 0DH,#20H ;20000的HEX码为4E20 CALL DELAY ;调用延时子程序 DJNZ 0FH,CONT1 ;循环次数减1后,若不为0则继续,循环100次 RET (2)电机反转100步 MOV 0FH,#100D ;准备走100步 CONT2: CLR P1.0 ;反转时P1.0=0 CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效) NOP ;延时(延时的目的是让驱动电路的光耦充分导通) NOP ;延时(根据驱动器的需要,调整延时) SETB P1.1 ;发步进脉冲的上升沿

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

基于单片机的步进电机驱动控制 一、步进电机概述 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/9816066447.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

三相步进电机原理与控制方法资料

本模块由45BC340C型步进电机及其驱动电路组成。 (一)步进电机: 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。每输入一个脉冲信号,该电动机就转过一定的角度(有的步进电动机可以直接输出线位移,称为直线电动机)。因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。 步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。 随着数字控制系统的发展,步进电动机的应用将逐渐扩大。 步进电动机的种类很多,按结构可分为反应式和激励式两种;按相数分则可分为单相、两相和多相三种。 图1 反应式步进电动机的结构示意图 图1是反应式步进电动机结构示意图,它的定子具有均匀分布的六个磁极,磁极上绕有绕组。两个相对的磁极组成一组,联法如图所示。 模块中用到的45BC340型步进电机为三相反应式步进电机,下面介绍它单三拍、六拍及双三拍通电方式的基本原理。 1、单三拍通电方式的基本原理 设A相首先通电(B、C两相不通电),产生A-A′轴线方向的磁通,并通过转子形成闭合回路。这时A、A′极就成为电磁铁的N、S极。在磁场的作用下,转子总是力图转到磁阻最小的位置,也就是要转到转子的齿对齐A、A′极的位置(图2a);接着B相通电(A、C 两相不通电),转了便顺时针方向转过30°,它的齿和C、C′极对齐(图2c)。不难理解,当脉冲信号一个一个发来时,如果按A→C→B→A→…的顺序通电,则电机转子便逆时针方向转动。这种通电方式称为单三拍方式。 图2 单三拍通电方式时转子的位置

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切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。如果要改变电机的

步进电机速度控制系统设计

目录 1 总体方案的确定 (1) 1.1 对步进电机的分析 (1) 1.2 电机的控制方案 (2) 1.3 控制算法的方案 (3) 1.4 串口通讯的模拟 (3) 2 硬件的设计与实现 (4) 2.1 微处理器的选择 (4) 2.2 控制电路的实现 (4) 2.3 键盘和显示电路 (6) 3 软件的设计与实现 (6) 3.1 控制信号输入程序 (7) 3.2 步进电机控制程序设计 (8) 3.3 程序分析及说明 (9) 4 系统的仿真与调试 (10) 4.1 程序的调试 (11) 4.2 串口通信的调试 (11) 4.3 调试结果及分析 (11) 5 设计总结 (13) 参考文献 (14) 附录 (15)

步进电机速度控制系统设计报告 1 总体方案的确定 系统以单片机为核心,接收并分析来自键盘或串口的控制指令,经过CPU 的逻辑计算输出控制信息,让步进电机按要求转动。由于步进电机是开环元件,系统不需反馈环节,但也同时要求控制信号足够精确。此外,为实现单片机与电机之间信号对接,需要加入步进电机驱动单元。 1.1 对步进电机的分析 步进电机又叫脉冲电机,它是一种将电脉冲信号转化为角位移的机电式数模转换器。在开环数字程序控制系统中,输出控制部分常采用步进电机作为驱动元件。步进电机控制线路接收计算机发来的指令脉冲,控制步进电机做相应的转动,步进电机驱动数控系统的工作台或刀具。很明显,指令脉冲的总数就决定了数控系统的工作台或刀具的总位移量,指令脉冲的频率决定了移动的速度。因此,指令脉冲能否被可靠地执行,基本上取决于步进电机的性能。 步进电机的工作就是步进转动。在一般的步进电机工作中,其电源都是采用单极性的直流电源。要是步进电机转动,就必须对步进电机定子的各相绕组以适当的时序进行通电。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,即可达到调速的目的。本设计是用单片机输出可调脉冲作为单片机的控制信号,通过改写脉冲频率调节单片机转速。 常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小;反应式步进一般为三相,可实现大转矩输出,但噪声和振动都很大。混合式步进是指混合了永磁式和反应式的优点,它又分为两相和五相,应用最为广泛。单片机管脚输出电压一般不足以驱动步进电机转动,所以需要在单片机和步进电机之间加入驱动电路。

最新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

步进电机的PLC 控制调速方法之探索

步进电机的PLC 控制调速方法之探索 步进电机又叫做脉冲电机,是控制系统中的一种执行元件。它的作用是将脉冲信号变换为相 应的位移,即给一个脉冲电信号,步进电机就转动一个角度或前进一步。由于步进电机的位 移与脉冲个数成正比,其转向与脉冲分配到步进电机的各相绕组的相序有关。所以只要控制 指令脉冲的数量、频率及电机绕组通电的相序,便可控制步进电机的输出位移量、速度和方向。步进电机具有较好的控制性能,其启动、停止、正反转及其它任何运行方式的改变都可 在少数脉冲内完成,且可获得较高的控制精度,从而实现精确定位。同时可以通过控制脉冲 频率来控制步进电机转动的速度和加速度,从而达到调速的目的。在负载能力范围内,这些 关系不因电源电压、负载大小、环境条件的波动而变化,因而可适用于开环系统中作执行元件,使控制系统大为简化。目前,我国已较多地将步进电机用于机械加工的数控机床中,在 绘图机、轧钢机的自动控制、自动记录仪表和数模变换等方面也得到较多的应用。 可编程序控制器简称PLC,是一种数字运算操作的控制系统,专门用于工业环境设计。它的 主要特点是可靠性高、使用方便、体积小、重量轻、编程简单易学,在工业控制领域得到广 泛的应用。目前,利用PLC 技术可以方便地实现对电机速度和位置的控制,方便地进行各种 步进电机的操作,完成各种复杂的工作。它代表了先进的工业自动化革命,加速了机电一体 化的实现。 本论文以项目教学法的方式探索步进电机的PLC 控制转速方法。本设计控制要求如下:按下 启动按钮,步进电机以100Hz 的基准频率正转。按一次加速按钮,频率以50Hz 递增,最多 加速5 次;按一次减速按钮,频率以25Hz 递减,最多减速4 次。加速时为正转,减速时为反转。按下停止按钮,步进电机立即停止运行。步进电机驱动器的细分设置为1,电流设置为1.5A。 1 控制系统的硬件设计 1.1 控制系统的结构。本设计中,系统硬件部分由上位机、PLC、步进电机驱动器、步进电机、负载等组成。上位机是计算机,作为控制面板、人机交互界面和控制软件编制环境,通过与PLC 的通信,实现操作监控功能;PLC 发出脉冲信号、方向信号,通过步进电机驱动器控制步进电机的运行状态。 1.2 控制系统的硬件。 1.2.1 PLC。使用PLC 控制步进电机时,应该保证PLC 具有高速脉冲输出功能。通过选择具有 高速脉冲输出功能或专用运动控制功能的模块来实现。在本设计中,采用的是三菱系列 FX2N-32MT 型的晶体管输出型PLC。在PLC 的选型上,必须采用晶体管输出型PLC,若使用继电器型的PLC,则高速脉冲的输出很难达到控制要求。 1.2.2 步进电机。步进电机有步距角(涉及到相数)、静力矩、电流三大要素组成。根据负载的控制精度要求选择步距角大小,根据负载的大小确定静力矩,静力矩一经确定,根据电机 矩频特性曲线来判断电机的电流。一旦三大要素确定,步进电机的型号便确定下来了。 1.2.2.1 步距角的选择。步进电机的步距角取决于负载精度的要求,将负载的最小分辨率(当量)换算到电机轴上,每个当量电机应走多少角度(包括减速)。电机的步距角应等于或小 于此角度。目前市场上步进电机的步距角一般有0.36 度/0.72 度(五相电机)、0.9 度/1.8 度(二、四相电机)、1.5 度/3度(三相电机)等。 1.2.2.2 静力矩的选择。步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩。静力矩选择的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载两种。单一的惯性 负载和单一的摩擦负载是不存在的。直接起动时(一般由低速)两种负载均要考虑,加速起

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

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

相关主题