文档库 最新最全的文档下载
当前位置:文档库 › 单片机控制步进电机正反转的实际应用程序

单片机控制步进电机正反转的实际应用程序

单片机控制步进电机正反转的实际应用程序
单片机控制步进电机正反转的实际应用程序

单片机控制步进电机正反转的实际应用程序

/*这是一个控制步进电机正反转的实际应用程序*/

/*选用的是三相步进电机驱动器,p14口线用做步进电机的脉冲控制*/

/*p13口线用做步进电机的方向控制。p15,p16,p17是光耦开关量输入*/

/*信号端,p20,p21,p22,p23与x25045看门狗存储器相连*/

/*k7,k8键是设定步进电机转动速度参数的加减键*/

/*k9是启动运行键,按一下k9,步进电机开始运行,直到p17口线有信号输入才停止*/ /*k10是停止键,任何时候按下k10都将停止步进电机当前的运行*/

/*k11是步进运行键,按一下,步进电机动一下*/

/*k12键是反向运行键,按一下,步进电机开始反向运行,知道p15口线有信号才停止*/ /*如果p16口线有信号输入,则只有k12键才起作用,其它键都没反应。*/

START:do;

$INCLUDE(REG51.DCL)

DECLARE (addrl,n,I,j,ok,ds) byte; /*定义变量*/

declare l(5) byte;

declare (dat,data) byte at (30h);

declare delay word;

DECLARE ACO(11) BYTE CONSTANT (05h,9fh,23h,0bh,99h,49h,/*定义LED段码表*/ 41h,1fh,01h,09h,00h);

declare si literally 'p21',sck literally 'p20'; /*X25045囗线定义*/

declare so literally 'p22',cs literally 'p23';

dog:procedure; /* 初始化看门狗x25045 */

cs=1;

call time(1);

cs=0;

call time(1);

cs=1;

end dog;

run:procedure; /*步进电机运行脉冲输出程序*/

if ok=1 then

call dog;

do;

p14=0;

call time(1);

p14=1;

call time(1);

end;

end run;

DISPLAY:PROCEDURE(L0,L10); /*显示子程序*/

DECLARE (L0,L10) BYTE; /*定义显示二位*/

n=L10;

n=aco(n); /*十位数BCD码译成段码*/

sbuf=n; /*十位数送164显示*/

do while ti=0; /*等待发送结束*/

call dog; /*看门狗定时器复位*/

end;

n=L0;

n=aco(n);

sbuf=n; /*个位数送164显示*/

do while ti=0;

call dog;

end;

end display;

outbyt: procedure(da); /*向看门狗存储器写入一字节*/ declare (i,da) byte;

j=da; /*将要写入的字节赋给临时变量J */

do i=0 to 7; /*左移8位,送到口线si */

sck=0;

j=scl(j,1);

si=cy;

sck=1; /*每移一位数据,跟一个时钟信号*/

end;

end outbyt;

inbyt: procedure; /* 从看门狗存储器读出一字节*/ declare (i,di) byte;

j=0;

do i=0 to 7;

sck=1;

sck=0;

cy=so;

j=scl(j,1); /*从看门狗存储器读出一字节送入临时变量j*/ end;

dat=j;

end inbyt;

wrenable: procedure; /* 置看门狗写使能*/

sck=0;

cs=0;

; /* write enable command */

call outbyt(06h); /* x25045 写使能指令06h */

cs=1;

sck=0;

end wrenable;

wrdisable: procedure; /* 置看门狗写禁止*/

sck=0;

cs=0;

; /* write disable command */

call outbyt(04h);

sck=0;

cs=1;

end wrdisable;

wrregister: procedure; /* 写状态寄存器*/

sck=0;

cs=0;

dat=01h; /* write register command */

call outbyt(dat);

; /* 00h--1.4S, 20h--200MS, 10h--600MS, 30h--disable Wdog */ call outbyt(00h); /* 设定看门狗定时时间*/

;

sck=0;

cs=1;

call time(200); /* wait to complete writting cycle */

end wrregister;

rdregister:procedure; /* 读看门狗状态寄存器*/

sck=0;

cs=0;

; /* register read command */

call outbyt(05h);

call inbyt; /* status register read in */

sck=0;

cs=1;

end rdregister;

wbyte:procedure; /* 看门狗存储器字节写入子程序*/ declare comm byte;

sck=0;

cs=0;

comm=02h; /* 写指令02h */

call outbyt(comm);

call outbyt(addrl);

call outbyt(dat); /* send one byte data to X25043 */

cs=1;

sck=0;

call time(150);

end wbyte;

rbyte:procedure; /*看门狗存储器字节读出子程序*/

declare comm byte;

sck=0;

cs=0;

comm=03h; /* read command */

call outbyt(comm);

call outbyt(addrl);

call inbyt; /* read one byte to */

sck=0;

cs=1;

end rbyte;

incdata: procedure; /* 参数修改--"加"键处理子程序+ */

if p10=0 then /* 如果K7键按下*/

do;

do while p10=0; /* 等待键松开有效*/

call dog; /* 此处必需调用看门狗复位子程序("喂狗"),否则程序将被看门狗复位*/ end;

data=data+1; /* 设定值+1 */

if data>99 then data=1; /* 规定设定值的上限*/

L(1)=data MOD 10; /*将设定值的十位数拆出来送给十位数显示变量L(1) */

L(2)=data/10; /*将设定值的个位数拆出来送给个位数显示变量L(2) */

call display(L(1),L(2)); /* 将改变后的设定值送164显示出来*/

call time(200); /* 延时*/

call dog;

call time(200);

call dog;

call wrenable; /* 置存储器写使能*/

addrl=00h; /* 置存储器地址*/

dat=l(1);

call wbyte; /* 将变量L(1)的值写入存储器00h位置*/

call wrenable;

addrl=01h;

dat=l(2);

call wbyte; /* 将变量L(2)的值写入存储器01h位置*/

end;

end incdata;

decdata: PROCEDURE; /* 参数修改---"减"键处理子程序- */

IF p11=0 THEN /* k8 键处理子程序*/

do;

do while p11=0;

call dog;

end;

DATA=DATA-1; /* 设定值-1 */

if data=0 then data=99;

L(1)=data MOD 10;

L(2)=data/10;

call display(l(1),l(2));

call dog;

call time(200);

call dog;

call time(200);

call dog;

call wrenable;

addrl=00h;

dat=l(1);

call wbyte;

call wrenable;

addrl=01h;

dat=l(2);

call wbyte;

end;

END decdata;

starton: PROCEDURE; /* start */

declare sd byte;

if p12=0 THEN /* K9键处理子程序*/

do;

do while p12=0;

call dog;

end;

if p17=0 then ok=0; /* 如果p17 口线上有信号输入,则运行标志置0 (停止运行)*/ p13=1; /* 置步进电机正向运转*/

call time(200);

call dog;

do while ok=1; /* 当运行标志为1时,执行速度延时操作*/

do sd= 0 to data; /* 根据设定值data的数值延时来确定步进电机运行时的脉冲给定速度*/

call dog;

end;

end;

END starton;

step: PROCEDURE; /* step */

declare sd byte;

p13=1; /* 置步进电机正向运转*/

call time(200);

IF p33=0 THEN /* k11键处理子程序*/

do;

if p17=0 then ok=0; /* 如果p17上有信号输入,则停止运行*/

do while p33=0;

do sd= 0 to data; /* 调用延时,调整步进电机的运行速度*/

call dog;

call time(2);

end;

call run;

call dog;

end;

end;

ok=0;

END step;

back: PROCEDURE; /* 反向运行处理子程序*/

declare sd byte;

IF p34=0 THEN

do;

do while p34=0;

call dog;

end;

if p15=0 then ok=0; /* 反向运行时,如果遇到p15上有信号输入,则停止步进电机运行*/ p13=0; /* 置步进电机反向运行*/

call time(200);

call dog;

do while ok=1;

do sd=0 to data; /*根据设定值调节步进电机的运行速度*/

call dog;

call time(2);

end;

call run;

if (p15=0 or p32=0 ) then ok=0; /* p15 或p32 口线任意一个有信号输入,停止运行*/ end;

end;

END back;

MAIN$PROGRAM: /* 初始化主程序*/

ea=0; /* 关中断*/

SCON=00h; /*置串口方式0 ,串行数据输出模式*/

PCON=00h;

tmod=11h;

enable; /* 开中断(ea=1) */

SCK=0;cs=1; /* 定义存储器口线初始状态*/

call wrenable;

call wrregister; /* 看门狗存储器初始化*/

call wrenable;

call dog;

p2=0ffh; /* 初始化各个口线的状态*/

p1=0ffh;ok=0;

p14=1;p32=1;p33=1;p34=1;

p13=1;

ADDRL=00h; /* 上电复位后从存储器中读出设定的速度值*/

CALL rbyte;

l(1)=dat;

addrl=01h;

call rbyte;

l(2)=dat;

DATA=L(1)+L(2)*10; /*将读出的值合并成十进制,存入变量data中*/ /* 以下是主循环程序*/

LOOP:

IF p10=0 THEN CALL incdata; /* 检测各个按键是否有按下*/

IF p11=0 THEN CALL decdata;

if p12=0 then

do;

ok=1;

call starton;

end;

if p34=0 then

do;

ok=1;

call back;

end;

if p33=0 then

do;

ok=1;

call step;

end;

call dog;

CALL DISPLAY(L(1),L(2)); /* 将设定值送164显示*/

call dog;

CALL TIME(100);

call dog;

GOTO LOOP;

END START;

西门子S 系列PLC控制步进电机进行正反转的方法

1、主程序先正转,等到正转完了就中断,中断中接通个辅助触点(),当闭合,住程序中的反转开始运做。这样子就OK了。 2、用PTO指令让OR 高速脉冲,另一个点如做方向信号,就可以控制正反转了,速度快慢就要控制输出脉冲周期了,周期越短速度越快,如果你速度很快的话请考虑缓慢加速,不然它是启动不了的,如果方向也变的快的话就要还做一个缓慢减速,不然它振动会蛮厉害,而且也会失步。 3、程NETWORK 1 // 用于单段脉冲串操作的主程序(PTO) // 首次扫描时,将映像寄存器位设为低 // 并调用子程序0 LD R 1 CALL SBR_0 NETWORK 1 // 子程序0开始 LD MOVB 16#8D SMB67 // 设置控制字节: // - 选择PTO操作 // - 选择单段操作 // - 选择毫秒增加 // - 设置脉冲计数和周期数值 // - 启用PTO功能 MOVW +500 SMW68 // 将周期设为500毫秒。 MOVD +4 SMD72 // 将脉冲计数设为4次脉冲。 ATCH INT_0 19 // 将中断例行程序0定义为 // 处理PTO完成中断的中断。 ENI // 全局中断启用

PLS 0 // 激活PTO操作,PLS0 =》 MOVB 16#89 SMB67 // 预载控制字节,用于随后的 // 周期改动。 NETWORK 1 // 中断0开始 // 如果当前周期为500毫秒: // 将周期设为1000毫秒,并生成4次脉冲 LDW= SMW68 +500 MOVW +1000 SMW68 PLS 0 CRETI NETWORK 2 // 如果当前周期为1000毫秒: // 将周期设为500毫秒,并生成4次脉冲 LDW= SMW68 +1000 MOVW +500 SMW68 PLS 0序注释 艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。 如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城。

基于单片机ATS控制步进电机正反转

基于单片机A T S控制步进 电机正反转 The latest revision on November 22, 2020

目录 步进电机 (7) 附件A 源程序 .......................................... (12) 附件B 仿真结果 (15) 致谢 (18)

摘要 能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。本文介绍一种用AT89S52作为核心部件进行逻辑控制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。本控制系统采用单片机控制,通过人为按动开关实现步进电机的开关,复位。该系统还增加了步进电机的加速及减速功能。具有灵活方便、适用范围广的特点,基本能够满足实践需求。 关键词: AT89S52 步进电机 ULN2003 第一章系统分析 框图设计 根据系统要求画出基于AT89S52单片机的控制步进电机的控制框图如图2-1所示。

图2-1基于AT89C52单片机的控制步进电机的控制框图 系统主要包括单片机、复位电路、晶振电路、按键电路、步进电机及驱动电路几部分。 晶振电路 AT89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。 晶振模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。最常用的两种类型是晶振模块和集成RC振荡器(硅振荡器)。晶振模块提供与分立晶振相同的精度。硅振荡器的精度要比分立RC振荡器高,多数情况下能够提供与陶瓷谐振槽路相当的精度。图2-2为晶振电路。 图2-2 晶振电路 第二章系统设计 硬件连接图 根据图2-1,可以设计出单片机控制步进电机的硬件电路图,如图3-1所示。

电动机正反转实验报告

实验一三相异步电动机的正反转控制线路 一、实验目的 1、掌握三相异步电动机正反转的原理和方法。 2、掌握手动控制正反转控制、接触器联锁正反转、按钮联锁正反转控制线路的不同接法。 二、实验设备 三相鼠笼异步电动机、继电接触控制挂箱等 三、实验方法 1、接触器联锁正反转控制线路 (1) 按下“关”按钮切断交流电源,按下图接线。经指导老师检查无误后,按下“开”按钮通电操作。 (2) 合上电源开关Q1,接通220V三相交流电源。 (3) 按下SB1,观察并记录电动机M的转向、接触器自锁和联锁触点的吸断情况。 (4) 按下SB3,观察并记录M运转状态、接触器各触点的吸断情况。 (5) 再按下SB2,观察并记录M的转向、接触器自锁和联锁触点的吸断情况。 Q1 23 220V

图1 接触器联锁正反转控制线路 3、按钮联锁正反转控制线路 (1)按下“关”按钮切断交流电源。按图2接线。经检查无误后,按下“开”按钮通电操作。 (2) 合上电源开关Q 1,接通220V 三相交流电源。 (3) 按下SB 1,观察并记录电动机M 的转向、各触点的吸断情况。 (4) 按下SB 3,观察并记录电动机M 的转向、各触点的吸断情况。 (5) 按下SB 2,观察并记录电动机M 的转向、各触点的吸断情况。 Q 1 220V

图2 按钮联锁正反转控制线路 四、分析题 1、接触器和按钮的联锁触点在继电接触控制中起到什么作用? 实验二交流电机变频调速控制系统 一﹑实验目的 1.掌握交流变频调速系统的组成及基本原理; 2.掌握变频器常用控制参数的设定方法; 3. 掌握由变频器控制交流电机多段速度及正反向运转的方法。 二﹑实验设备 1.变频器;2. 交流电机。 三、实验方法 (一)注意事项 参考变频器的端子接线图,完成变频器和交流电机的接线。主要使用端子为R﹑S ﹑T;U﹑V﹑W;PLC﹑FWD﹑REV﹑BX﹑RST﹑X1﹑X2﹑X3﹑X4﹑CM。 变频器电源输入端R﹑S﹑T和电源输出端U﹑V﹑W均AC380V高电压﹑大电流信号,任何操作都必须在关掉总电源以后才能进行。

51单片机PWM控制直流电机正反转

//程序说明:使用内部时//PWM0=P3^7PWM1=P3^5 PWM2=P2^0 PWM3=P2^4 #include #define uchar unsigned char #define uint unsigned int sbit PWM0=P3^7; sbit PWM1=P3^5; sbit PWM2=P1^2; sbit PWM3=P1^3; uint i,j; void PWM_init() { CMOD=0x00;//PCA计数脉冲选择内部时钟fosc/12(0x02:fosc/2) CL=0x00;//PCA赋初值 CH=0x00; CR=1; //开始计数 } void zheng(uchar ZKB) { CCAP0L=255*(40-ZKB)/100;//占空比设置 CCAP0H=255*(40-ZKB)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM0=0x42;// 8位PWM模式 CCAP1L=255*(40-0)/100;//占空比设置 CCAP1H=255*(40-0)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM1=0x42;// 8位PWM模式 CR=1; //开始计数 } void fan(uchar ZKB) { CCAP0L=255*(40-0)/100;//占空比设置 CCAP0H=255*(40-0)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM0=0x42;// 8位PWM模式 CCAP1L=255*(40-ZKB)/100;//占空比设置 CCAP1H=255*(40-ZKB)/100;//CL由ff-00溢出时,CCAP0H的值装入CCAP0L CCAPM1=0x42;// 8位PWM模式 CR=1; //开始计数 } void Delay(uint t) //延时函数

西门子S系列PLC控制步进电机进行正反转的方法

西门子S系列P L C控制步进电机进行正反转 的方法 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

1、主程序先正转,等到正转完了就中断,中断中接通个辅助触点(),当闭合,住程序中的反转开始运做。这样子就OK了。 2、用PTO指令让 OR 高速脉冲,另一个点如做方向信号,就可以控制正反转了,速度快慢就要控制输出脉冲周期了,周期越短速度越快,如果你速度很快的话请考虑缓慢加速,不然它是启动不了的,如果方向也变的快的话就要还做一个缓慢减速,不然它振动会蛮厉害,而且也会失步。 3、程NETWORK 1 // 用于单段脉冲串操作的主程序(PTO) // 首次扫描时,将映像寄存器位设为低 // 并调用子程序0 LD R 1 CALL SBR_0 NETWORK 1 // 子程序0开始 LD MOVB 16#8D SMB67 // 设置控制字节: // - 选择PTO操作 // - 选择单段操作 // - 选择毫秒增加 // - 设置脉冲计数和周期数值 // - 启用PTO功能 MOVW +500 SMW68 // 将周期设为500毫秒。 MOVD +4 SMD72 // 将脉冲计数设为4次脉冲。 ATCH INT_0 19 // 将中断例行程序0定义为 // 处理PTO完成中断的中断。 ENI // 全局中断启用

PLS 0 // 激活PTO操作,PLS0 =》 MOVB 16#89 SMB67 // 预载控制字节,用于随后的 // 周期改动。 NETWORK 1 // 中断0开始 // 如果当前周期为500毫秒: // 将周期设为1000毫秒,并生成4次脉冲 LDW= SMW68 +500 MOVW +1000 SMW68 PLS 0 CRETI NETWORK 2 // 如果当前周期为1000毫秒: // 将周期设为500毫秒,并生成4次脉冲 LDW= SMW68 +1000 MOVW +500 SMW68 PLS 0序注释 艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。 如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城。

实验一 电动机正反转实验

实验一电动机正反转实验 一、实验目的 1、通过练习实现与、或、非逻辑功能,熟悉PLC编程方法。 2、熟悉ZY17PLC12BC实验箱的使用方法。 二、实验器材 1、ZY17PLC12BC型可编程控制器实验箱 1台 2、PC机或FX-20P-E编程器 1台 3、编程电缆 1根 4、连接导线若干 三、实验原理 (1)LD、LDI指令用于将触点接到母线上。另外,与后述的ANB指令组合,在分支起点处也可使用。 (2)OUT指令是对输出继电器、辅助继电器、状态继电器、定时器,计数器的线圈的驱动指令、对于输入继电器不能使用。 (3)并行输出指令可多次使用。 2、触点串联(AND/ANI) 说明: (1)用AND、ANI、指令,可进行触点的串联连接。串联触点的个数没有限制,该指令可以多次重复使用。 (2)OUT指令后,通过触点对其他线圈使用OUT指令称之为纵接输出。这种纵接输出,如果顺序不错,可以多次重复,

3、触点并联(OR/ORI) (1)OR、ORI用作为1个触点的并联连接指令。如果连接2个以上的触点串联连接的电路块的并联连接时,要用后述的ORB指令。 (2)OR、ORI指令是从该指令的当前步开始对前面的LD、LDI指令并联连接。并联连接的次数无限制,但由于编程器和打印机的功能对此有限制,所以并联连接的次数实际上是有限制的。 (1)两个以上的触点串联连接的电路称之为串联电路块。串联电路块并联连接时,分支的开始用LD、LDI指令,分支的结束用ORB指令。 (2)ORB指令与后述的ANB等均为无操作元件号的指令。 (1)分支电路并联电路块与前面电路串联连接时,使用ANB指令。分支的起点用LD、LDI指令。并联电路块结束后,使用ANB指令与前面电路串联。 (2)若多个并联电路块顺次用ANB指令与前面电路串联连接,则ANB的使用次数没有限制, (3)虽然可以连续使用ANB指令,但这时与ORB指令同样要注意LD、LDI指令的使用次数限制(8次以下)。 6、程序结束(END) 7、控制要求 本实验利用PLC控制电机正反转。发光二极管KM1亮模拟电机正转,发光二极管KM2

步进电机启动停止正反转控制程序的汇编语言的实现

DELAY 1MS MACRO TIME ;延时宏命令 LOCAL AA LOCAL BB PUSH CX MOV CX,TIME AA: PUSH CX MOV CX,1000 BB: NOP LOOP BB POP CX LOOP AA POP CX ENDM DATA SEGMENT TABA DB 01H,03H,02H,06H,04H,05H;正转的模型 TABB DB 05H,04H,06H,02H,03H,01H;反转的模型DATA ENDS CODE SEGMENT ZZ PROC NEAR PUSH DS MOV AX,DATA MOV DS,AX MOV AX,0 PUSH AX MOV DX,203H MOV AL,80H OUT DX,AL ;8255的控制字设定 MOV DX,200H MOV AL,0 OUT DX,AL ;先输出制动命令 MOV CX,360 ;设定正转步数 DD: MOV BL,6 ;六拍 MOV DX,200H LEA DI,TABA ;指针指向正转的数字模型 CC: MOV AL,[DI] OUT DX,AL DELAY 1MS 10 INC DI ;指针加1,指向下一步的数字模型 DEC BL ;拍数减1 JNZ CC ;六拍未结束,则继续循环 LOOP DD;360个周期的六拍未结束,继续循环 ZZ ENDP

FZ PROC NEAR MOV CX,400 ;设定反转步数 FF: MOV BL,6 MOV DX,200H LEA DI,TABB ;指针指向反转的数字模型 EE: MOV AL,[DI] OUT DX,AL DELAY 1MS 10 DEC DI ;指针减1,指向反转下一步数字模型 DEC BL JNZ EE LOOP FF FZ ENDP MOV DX,200H MOV AL,0 OUT DX,AL ;结束后,输出制动命令 RET MAIN ENDP CODE ENDS END START

PLC控制实验--变频器控制电机正反转

实验二十八变频器控制电机正反转 一、实验目的 了解变频器外部控制端子的功能,掌握外部运行模式下变频器的操作方法。二、实验设备 序号名称型号与规格数量备注 1 网络型可编程控制器高级实验装置THORM-D 1 2 实验挂箱CM51 1 3 电机WDJ26 1 4 实验导线3号/4号若干 5 通讯电缆USB 1 6 计算机 1 自备 三、控制要求 1.正确设置变频器输出的额定频率、额定电压、额定电流。 2.通过外部端子控制电机启动/停止、正转/反转。 3.运用操作面板改变电机启动的点动运行频率和加减速时间。 四、参数功能表及接线图 1.参数功能表 序号变频器参数出厂值设定值功能说明 1 n1.00 50.00 50.00 最高频率 2 n1.05 1.5 0.01 最低输出频率 3 n1.09 10.0 10.0 加速时间 4 n1.10 10.0 10.0 减速时间 5 n2.00 1 1 操作器频率指令旋钮有效 6 n2.01 0 1 控制回路端子(2线式或3线式) 7 n4.04 0 1 2线式(运转/停止(S1)、正转/反转(S2)) 注:(1)设置参数前先将变频器参数复位为工厂的缺省设定值(2)设定n0.02=0可设定及参照全部参数 2.变频器外部接线图 五、操作步骤

1.检查实验设备中器材是否齐全。 2.按照变频器外部接线图完成变频器的接线,认真检查,确保正确无误。 3.打开电源开关,按照参数功能表正确设置变频器参数。 4.打开开关“K1”,观察并记录电机的运转情况。 5.旋转操作面板频率设定旋钮,增加变频器输出频率。 6.关闭开关“K1”,变频器停止运行。 7.打开开关“K1”、“K2”,观察并记录电机的运转情况。 六、实验总结 1.总结使用变频器外部端子控制电机正反转的操作方法。 2.总结变频器外部端子的不同功能及使用方法。

单片机控制直流电机正反转资料

目录 第1章总体设计方案 (1) 1.1 总体设计方案 (1) 1.2 软硬件功能分析 (1) 第2章硬件电路设计 (2) 2.1 单片机最小系统电路设计 (2) 2.2直流电机驱动电路设计 (2) 2.3 数码管显示电路设计 (4) 2.4 独立按键电路设计 (5) 2.5 系统供电电源电路设计 (5) 2.5.1直流稳压电路中整流二极管的选取: (6) 2.5.2直流稳压电路中滤波电容的选取: (6) 第3章系统软件设计 (7) 3.1 软件总体设计思路 (7) 3.2 主程序流程设计 (7) 附录1 总体电路图 (10) 附录2 实物照片 (11) 附录3 C语言源程序 (12)

第1章总体设计方案 1.1 总体设计方案 早期直流传动的控制系统采用模拟分离器件构成,由于模拟器件有其固有的缺点,如存在温漂、零漂电压,构成系统的器件较多,使得模拟直流传动系统的控制精度及可靠性较低。随着计算机控制技术的发展,微处理器已经广泛使用于直流传动系统,实现了全数字化控制。由于微处理器以数字信号工作,控制手段灵活方便,抗干扰能力强。所以,全数字直流调速控制精度、可靠性和稳定性比模拟直流调速系统大大提高。所以,本次实习采用了驱动芯片来驱动直流电机,并运用单片机编程控制加以实现。 系统设计采用驱动芯片来控制的,所以控制精度和可靠性有了大幅度的提高,并且驱动芯片具有集成度高、功能完善的特点,从而极的大简化了硬件电路的设计。 图1.1 直流电机定时正反转方案 1.2 软硬件功能分析 本次实习直流电机控制系统以STC89C52单片机为控制核心,由按键输入模块、LED显示模块及电机驱动模块组成。采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L293D直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转控制;同时单片机不停的将变化的定时时间送到LED数码管完成实时显示。

单片机课设步进电机控制正反转(单片机爱好者)

单片机课程设计报告设计题目:步进电机控制系统 学院机械工程学院 专业机械设计制造及其自动化 班级 姓名 学号 指导教师 湖北工业大学 2010 年秋季学期

目录 1.设计目的 (2) 2.设计的主要内容和要求 (2) 3.题目及要求功能分析 (2) 4.设计方案 (5) 4.1 整体方案 (5) 4.2 具体方案 (5) 5.硬件电路的设计 (6) 5.1 硬件线路 (6) 5.2 工作原理 (7) 5.3 操作时序 (8) 6. 软件设计 (8) 6.1 软件结构 (8) 6.2 程序流程 (9) 6.3 源程序清单 (9) 7. 系统仿真 (9) 8. 使用说明 (10) 9. 设计总结 (10) 参考文献 (11) 附录 (12)

步进电机的控制 1.设计目的 (1)熟悉单片机编程原理。 (2)熟练掌握51单片机的控制电路和最小系统。 (3)单片机基本应用系统的设计方法。 2.设计的主要内容和要求 (1)查阅资料,了解步进电机的工作原理。 (2)通过单片机给参数控制电机的转动。 (3)通过按钮控制启停及反转。 (4)其他功能。 3.题目及要求功能分析 步进电机:步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其精度高等特点,广泛应用于各种工业控制系统中。 三相单、双六拍步进电机的结构和工作原理: 三相单、双六拍步进电机通电方式:这种方式的通电顺

电机正反转实验

电机正反转实验 一.实验目的 1.了解机床电气中三相电机的正反转控制和星三角启动控制。 2.掌握电动机的常规控制电路设计。 3.了解电动机电路的实际接线。 4.掌握GE FANUC 3I系统的电动机启动程序编写。 二.实验原理和电路 交流电动机有正转启动和反转启动,而且正反转可以切换,启动时,要求电动机先接成星型连接,过几秒钟再变成三角形连接运行。PLC控制电动机的I/O 地址如下表所示: PLC模拟控制电动机I/O地址表 输入输出 器件(触摸屏M)说明器件说明I1(M21)正转Q2 正转 I2(M22)反转Q3 星形 I3(M23)停止Q4 三角形 Q5 反转 电动机星三角启动电气接口图:

模块的现场接线 接线前请熟悉接线图,我们在这里简单介绍下输入输出模块的接线方法,在接下来的实验中不再赘述。详细请见第一章的模块介绍。 ●输入模块现场接线 IC694MDL645,数字量输入模块,提供一组共用一个公共端的16个输入点,如图所示。该模块即可以接成共阴回路又可以接成共阳回路,这样在硬件接线时就非常灵巧方便。但在本系统中,我们统一规定本模块接成共阳回路,即1号端子由系统提供负电源,外部输入共阳。 IC694MDL645数字量输入模块现场接线 ●输出模块现场接线 IC694MDL754,数字输出模块,提供两组(每组16个)共32个输出点。每组

有一个共用的电源输出端。这种输出模块具有正逻辑特性;它向负载提供的源电流来自用户共用端或者到正电源总线。输出装置连接在负电源总线和输出点之间。这种模块的输出特性兼容很广的负载,例如:电动机、接触器、继电器,BCD 显示和指示灯。用户必须提供现场操作装置的电源。每个输出端用标有序号的发光二极管显示其工作状态(ON/OFF)。这个模块上没有熔断器。接线必须注意。 即:17端接正电源,18端接负电源及外部负载的共阴端。 IC694MDL754数字量输出模块现场接线 三:实验步骤: 1.编写PLC程序,可参照参考程序,并检查,保证其正确。 2.按照电器接口图接线。 3.下载程序。 4.置PLC于运行状态,按下启动键,观察电机运行。 5.实验结束后,关电源,整理实验器材。 四:实验器材 1.GE FANUC 3I系统一套 2.PYS3电机正反转模块一块 3.网线一根 4.KNT连接导线若干

基于单片机的直流电机控制(正反转、开关控制)

基于单片机的直流电机控制(正反转,开关控制)原理图如下: 程序如下: /*用电机来代表门的转动情况*/ #include //定义变量 sbit kaimen=P0^0; sbit zanting=P0^1; sbit fanxiang=P0^2; sbit P2_0=P2^0; sbit P2_1=P2^1; bit Flag = 1;//定义电机正反向标志 //函数声明 void motor_turn(void); //正反向控制 void Timer0_init(void); //定义定时器0初始化 /******************************延时处理***************************/ void Delay(unsigned int z)

{ unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /***************************************************************/ void Timer0_int(void) interrupt 1 using 1//定时器0中断处理主要用来处理换方向的时候 { TR0 = 0; TL0=(65536-50000)/ 256; //定时50ms TH0=(65536-50000)% 256; TR0 = 1; if(Flag == 1)//代表改变方向 { P2_0 = 0; P2_1 = 1; } else //方向不变 { P2_1 = 0; P2_0 = 1; } } /****************开始转动:人满时候开始转动**************/ void motor_start(void) { if(kaimen==1) { //Delay(10); if(kaimen==1) { P2_0 = 0; P2_1 = 1; } } } /***************有人但是人未满时或者有夹到人的时候暂停*************/ void motor_pause(void) { if(zanting==1) { Delay(10);

步进电机正反转控制C语言程序 只为初学者

只为初学者的步进电机正反控制程序 #include<> #define uchar unsigned char #define uint unsigned int #define MotorData P2 //步进电机控制接口定义 sbit zheng=P3^0; sbit fan=P3^1; sbit stop=P3^2; uchar phasecw[8] ={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//正转 uchar phaseccw[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//反转 //ms延时函数 void delay(uint t) { uint k; while(t--) { for(k=0; k<125; k++); } } void Delay_xms(uint x) { uint i,j; for(i=0;i

void Motor_work(uint t) { uchar i,j; switch(t) { case 0: while(1) {if(stop==0) break; for(i=0;i<8;i++) {MotorData=phasecw[i]; delay(50);//转速调节 } } break; case 1: while(1) {if(stop==0) break; for(j=0;j<8;j++) {MotorData=phaseccw[j]; delay(50);//转速调节 } } break; } } //停止转动 void Motor_test(void) { if(zheng==0) { Delay_xms(10); if(zheng==0) Motor_work(0); } if(fan==0) { Delay_xms(10); if(fan==0) Motor_work(1); } } //主函数 void main(void) {

基于单片机原理的步进电机的正反转程设计报告书

基于单片机原理的步进电机的正反转程设计报告书

电机控制课程设计报告书题目基于单片机原理的步进电机的正反转

目录....................................................................... 错误!未定义书签。摘要...................................................................... 错误!未定义书签。 1.概述................................................................... 错误!未定义书签。 1.1课程设计的任务和要求 ............................ 错误!未定义书签。 1.2设计思路框架............................................ 错误!未定义书签。 1.3设计方案的模块解释................................ 错误!未定义书签。 2.系统硬件设计 ..................................................... 错误!未定义书签。 2.1单片机最小系统原理介绍 ........................ 错误!未定义书签。 2.1.1 AT89C51的工作原理 ....................... 错误!未定义书签。 2.1.2复位电路的工作原理 ...................... 错误!未定义书签。 2.1.3晶振电路的工作原理 ...................... 错误!未定义书签。 2.2电机驱动电路原理介绍 ............................ 错误!未定义书签。 3.系统软件设计 ..................................................... 错误!未定义书签。 3.1系统流程图 ............................................... 错误!未定义书签。 3.2系统程序分析............................................ 错误!未定义书签。4.调试过程与结果 .............................................. 错误!未定义书签。5.总结与体会 ...................................................... 错误!未定义书签。 6.参考资料............................................................. 错误!未定义书签。 7.附录.................................................................... 错误!未定义书签。

步进电机正反转控制及转速显示

/***************************************************** 程序调试成功 *********************************************************/ #include #define uchar unsigned char #define uint unsigned int sbit wale = P1^4; sbitdula = P1^5; sbitjia_key=P3^3; sbitjian_key=P3^2; sbitZ_key=P3^0; sbitF_key=P3^1; sbit Z_LED=P1^0; sbit F_LED=P1^1; sbit J_LED=P1^2; sbit JA_LED=P1^3; uint flag; ucharnum,show_num=2,maichong=4,table_begin; uchar code SHU[10]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阳数码管驱动信号0---9,不显示 uchar code table[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3};//电机正反转 void delay(uchar x) { uint y; for(;x>0;x--) for(y=0;y<124;y++); } void display() //显示函数 { uint a; a=num; if(a<10) a=a+1; else a=a%10; wale=1; P0=0xfb; wale=0; dula=1; P0=SHU[(num/10)]; dula=0; delay(10);

步进电机正反转程序

步进电机正反转程序 #include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码 uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; ////四相八拍反转编码 sbit K1 = P3^2; //正转 sbit K2 = P3^3; //反转 sbit K3 = P3^4; //停止 sbit BEEP = P3^6; //蜂鸣器 /********************************************************/ /* /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms /* /********************************************************/ void delay(uint t) { uint k; while(t--) {

for(k=0; k<125; k++) { } } } /********************************************************** / void delayB(uchar x) //x*0.14MS { uchar i; while(x--) { for (i=0; i<13; i++) { } } } /********************************************************** / void beep() { uchar i; for (i=0;i<100;i++) { delayB(4); BEEP=!BEEP; //BEEP取反

单片机控制三相异步电动机正反转

摘要 我的这次毕业设计论文主要介绍了三相异步电动机的发展史,及国的现状和单片机远距离控制三相异步电动机未来的应用前景。并且阐述了三相异步电动机正转、反转、停止的控制原理,如何用红外遥控设备实现电动机的正转、反转、停止三种状态的切换。还阐述了单片机远距离控制三相异步电动机的设计方案,并绘制了原理图和PCB板图,撰写了程序源代码。实现了对三相异步电动机正转、反转、停止的控制。这期间主要使用protel99se 软件绘制原理图和制板,使用proteus7.1软件进行程序代码的仿真和功能的理论验证。最后通过硬件的调试验证程序代码的实际功能,完成对单片机远距离控制三相异步电动机的设计。 关键词 红外遥控设备、单片机;三相异步电动机电机、控制器。

目录 摘要 (Ⅰ) 第一章、引言 (1) 第二章、三相异步电机控制系统 (2) 第三章、 AT89C52 单片机 (4) 第四章、红外遥控器设计 (6) 第五章、三相异步电动机原理与控制 (8) 第六章、实现 (11) 第七章、结构图 (30) 结论 (31) 参考文献 (32) 致 (33) 附录 (34)

第一章、引言 1.1三相异步电动机发展史 在国外,费拉里斯和特斯拉发明多相交流系统后,19世纪80年代中期,多沃罗沃尔斯基发明了三相异步电动机。并在后来得到了广泛的应用。三相异步电动机是交流电动机的一种,又称感应电机。具有结构简单,制造容易,坚固耐用,维修方便,成本低廉等一系列优点。因其具有较高的效率及接近于恒速的负载特性,故能满足绝大多部分工农业生产机械的拖动要求,从而成为各类电机中产量最大,运用最广的一种电动机。 1.2我国三相异步电动机发展 我国电动机的研究及制造起始于本世纪50年代后期。从50年代后期到60年代后期,主要是高等院校和科研机构为研究一些装置而使用或开发少量产品。这些产品以多段结构三相异步电动机为主。70年代初期,电动机的生产和研究有所突破。除反映在驱动器设计方面的长足进步外,对电动机本体的设计研究发展到一个较高水平。70年代中期至80年代中期为成品发展阶段,新品种高性能电动机不断被开发。80年代后三相异步电动机已经得到广泛的应用。 1.3单片机远距离控制三相异步电动机的应用前景 目前,随着电子技术、控制技术以及电动机本体的发展和变化,单片机远距离控制三相异步电动机系统已经受到广泛的应用。因为在很多工业生产中,很多工厂的环境很差,工人在现场工作,很容易患各种职业病,不管是对工厂还是对工人都是很大的损失。因此,随着社会的需要,机械设备的远程控制的出现对工厂的生产起到了很大的帮助。提高了社会生产力,对未来的社会发展有很深远的意义。因此,单片机远距离控制三相异步电动机的发展前景非常广。

步进电机正反转程序 一

步进电机正反转程序一 #include <reg51.h> //51芯片管脚定义头文件 #include <intrins.h> //内部包含延时函数_nop_(); #define uchar unsigned char #define uint unsigned int uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码 uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; ////四相八拍反转编码 sbit K1 = P3^2; //正转 sbit K2 = P3^3; //反转 sbit K3 = P3^4; //停止 sbit BEEP = P3^6; //蜂鸣器 /********************************************************/ /* /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms /* /********************************************************/ void delay(uint t) { uint k; while(t--) { for(k=0; k<125; k++) { } } } /**********************************************************/ void delayB(uchar x) //x*0.14MS { uchar i; while(x--) { for (i=0; i<13; i++) { } } } /**********************************************************/

基于单片机的电动机正反转控制

成绩 课程设计报告 题目:基于单片机的电动机正反转控制设计 学生姓名:xxx 学生学号:xxxxxxxxxxxx 系别:电气信息工程学院 专业:自动化 届别:2013 指导教师:xxx 电气信息工程学院 基于单片机的电动机正反转控制

学生:xxx 指导教师:xxx 电气信息工程学院自动化系 1 课程设计的任务与要求 1.1 课程设计的任务 利用AT89C51单片机设计并实现电动机正反转控制及其相关功能。通过本次设计了解并掌握51系列的单片机的结构及其使用方法。 1.2 课程设计的要求 该设计要求能够具有以下功能: (1)开启后器件没有任何反应。 (2)闭合正转开关按钮电动机开始正转。 (3)闭合反转开关按钮电动机开始反转。 (4)闭合停转开关按钮电动机停止转动。 1.3 课程设计的研究基础 该设计包括硬件和软件设计两部分。 硬件部分包括:直流电动机,电磁继电器,7路反相器,6路反相器。 软件部分包括:基于51单片机的c语言程序。 设计中的相关研究部分介绍如下: (1)直流电动机部分:更改直流电动机的正负极就可以实现对直流电动机的正反转控制,更改可以使用继电器实现。 (2)电磁继电器部分:通过更改电磁继电器的正负极可以实现对电磁继电器中电磁的有无进行控制。再间接通过电磁的有无控制继电器中开关的打开与闭合。 (3)7路反相器部分:通过反相器可以更改输入电平的高低与其高低值(即当输入为高电压输出为低电压并且低电压为接地电压,当输入为低电压是输出为高电压并且电压强度与接com端相同)。其实质就是为了供给与继电器相适合的高低电压,所以如果没有该部分,则供给继电器的高低电压就有单片机提供,而单片机的输出高低电平为定值,因此需要此部分。 (4)6路反相器部分:该部分是为了结合7路反相器部分使用的,因为负负得正,正正得正。 2 电动机正反转系统方案制定

实验一 三相异步电动机的正反转控制实验报告

实验一三相异步电动机的正反转控制实验报告 实验目的 ⑴了解三相异步电动机接触器联锁正反转控制的接线和操作方法。 ⑵理解联锁和自锁的概念。 ⑶掌握三相异步电动机接触器的正反转控制的基本原理与实物连接的要求。 实验器材 三相异步电动机(M 3~)、万能表、联动空气开关(QS1)、单向空气开关(QS2)、交流接触器(KM1,KM2)、组合按钮(SB1,SB2,SB3)、端子排7副、导线若干、螺丝刀等。实验原理 三相异步电动机的旋转方向是取决于磁场的旋转方向,而磁场的旋转方向又取决于电源的相序,所以电源的相序决定了电动机的旋转方向。任意改变电源的相序时,电动机的旋转方向也会随之改变。 实验操作步骤 连接三相异步电动机原理图如图所示,其中线路中的正转用接触器KM1和反转用的接触器KM2,分别由按钮SB2和反转按钮SB2控制。控制电路有两条,一条由按钮SB1和KM1线圈等组成的正转控制电路;另一条由按钮SB2和KM2线圈等组成的反转控制电路。 当按下正转启动按钮SB1后,电源相通过空气开关QS1,QS2和停止按钮SB3的动断接点、正转启动按钮SB1的动合接点、接触器KM和其他的器件形成自锁,使得电动机开始正转,当按下SB3时,电动机停止转动,在按下SB2时,接触器KM和其他的器件形成自锁反转。安装接线 1在连接控制实验线路前,应先熟悉各按钮开关、交流接触器、空气开关的结构形式、动作原理及接线方式和方法。 2 在不通电的情况下,用万用表检查各触点的分、合情况是否良好。检查接触器时,特别需要检查接触器线圈电压与电源电压是否相符。 3将电器元件摆放均匀、整齐、紧凑、合理,并用螺丝进行安装,紧固各元件时应用力均匀,紧固程度适当。

相关文档
相关文档 最新文档