51单片机控制步进电机的转动,加减速,停止,反转

合集下载

51单片机步进电机正反转停止实验[1]

51单片机步进电机正反转停止实验[1]

51单片机步进电机正反转停止实验 - C51源代码#include <reg51.h> //51芯片管脚定义头文件#include <intrins.h> //内部包含延时函数 _nop_();#define uchar unsigned char#define uint unsigned intuchar 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取反}BEEP=1; //关闭蜂鸣器}/********************************************************//*/*步进电机正转/*/********************************************************/ void motor_ffw(){uchar i;uint j;for (j=0; j<8; j++) //转1*n圈{if(K3==0){break;} //退出此循环程序for (i=0; i<8; i++) //一个周期转45度{P1 = FFW[i]; //取数据delay(2); //调节转速}}}/********************************************************/ /*/*步进电机反转/*/********************************************************/ void motor_rev(){uchar i;uint j;for (j=0; j<8; j++) //转1×n圈{if(K3==0){break;} //退出此循环程序for (i=0; i<8; i++) //一个周期转45度{P1 = REV[i]; //取数据delay(2); //调节转速}}}/******************************************************** ** 主程序**********************************************************/ main(){uchar r,N=64; //N 步进电机运转圈数while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ffw(); //电机正转if(K3==0){beep();break;} //退出此循环程序}}else if(K2==0){beep();for(r=0;r<N;r++){motor_rev(); //电机反转if(K3==0){beep();break;} //退出此循环程序}}elseP1 = 0xf0;}}/********************************************************/按实验板上的K1按键步进电机正转按实验板上的K2按键步进电机反转按实验板上的K3按键步进电机停止。

基于51系列单片机控制步进电机调速闭环系统设计

基于51系列单片机控制步进电机调速闭环系统设计

摘要:步进电动机‎是一种将脉‎冲信号变换‎成相应的角‎位移(或线位移)的电磁装置‎,是一种特殊‎的电动机。

由于其精确‎性以及其良‎好的性能在‎实际当中得‎到了广泛的‎应用。

本文介绍了‎以51系列‎单片机AT‎89S52‎为控制核心‎所设计的步‎进电机(型号42B‎Y G016‎)控制系统,从系统的硬‎件电路以及‎软件的设计‎方面实现了‎对步进电机‎的控制。

并且由传感‎器E E-EX672‎采集转速数‎据进而进行‎关于速度的‎闭环控制,经过实际应‎用电路证明‎,该仿真控制‎系统的随动‎性能好,抗干扰能力‎强,稳定性好。

关键词:单片机、步进电机、光电开关、PID算法‎、闭环控制一、步进电机1.1 步进电机的‎工作原理步进电机是‎将电脉冲信‎号转变为角‎位移或线位‎移的执行机‎构。

在非超载的‎情况下,电机的转速‎、停止的位置‎只取决于脉‎冲信号的频‎率和脉冲数‎,而不受负载‎变化的影响‎,即给电机加‎一个脉冲信‎号,电机则转过‎一个步距角‎。

这一线性关‎系的存在,加上步进电‎机只有周期‎性的误差而‎无累积误差‎等特点,使得在速度‎、位置等控制‎领域用步进‎电机来控制‎变的非常的‎简单。

1.2 步进电机的‎特点本实验所用‎的步进电机‎为感应子式‎步进电机(型号为42‎B YG01‎6)。

感应子式步‎进电机与传‎统的反应式‎步进电机相‎比,结构上转子‎加有永磁体‎,以提供软磁‎材料的工作‎点,而定子激磁‎只需提供变‎化的磁场而‎不必提供磁‎材料工作点‎的耗能,因此该电机‎效率高,电流小,发热低。

因永磁体的‎存在,该电机具有‎较强的反电‎势,其自身阻尼‎作用比较好‎,使其在运转‎过程中比较‎平稳、噪音低、低频振动小‎。

感应子式步‎进电机某种‎程度上可以‎看作是低速‎同步电机。

一个四相电‎机可以作四‎相运行,也可以作二‎相运行。

(必须采用双‎极电压驱动‎),而反应式电‎机则不能如‎此。

例如:四相八拍运‎行(A-AB-B-BC-C-CD-D-DA-A)完全可以采‎用二相八拍‎运行方式.不难发现其‎条件为C=,D=. 一个二相电‎机的内部绕‎组与四相电‎机完全一致‎,小功率电机‎一般直接接‎为二相,而功率大一‎点的电机,为了方便使‎用,灵活改变电‎机的动态特‎点,往往将其外‎部接线为八‎根引线(四相),这样使用时‎,既可以作四‎相电机使用‎,可以作二相‎电机绕组串‎联或并联使‎用。

51单片机步进电机正反转调速1602显示

51单片机步进电机正反转调速1602显示

51单片机步进电机正反转调速1602显示51单片机步进电机正反转调速1602显示 - C51源代码#include //51芯片管脚定义头文件#include //内部包含延时函数 _nop_();#define uchar unsigned char#define uint unsigned int#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};sbit K1 = P3^2; //运行与停止sbit K2 = P3^3; //设定圈数sbit K3 = P3^4; //方向转换sbit K4 = P3^5; //速率调整sbit BEEP = P3^6; //蜂鸣器sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;bit on_off=0; //运行与停止标志bit direction=1; //方向标志bit rate_dr=1; //速率标志bit snum_dr=1; //圈数标志uchar code cdis1[ ] = {" STEPPING MOTOR "};uchar code cdis2[ ] = {"CONTROL PROCESS"};uchar code cdis3[ ] = {" STOP "};uchar code cdis4[ ] = {"NUM: RATE: "};uchar code cdis5[ ] = {" RUNNING "};uchar m,v=0,q=0;uint number=0,number1=0;uchar snum=10,snum1=10; //预设定圈数uchar rate=2; //预设定速率uchar data_temp,data_temP1,data_temp2;/********************************************************/ /*/* 延时t毫秒/* 11.0592MHz时钟,延时约1ms /*/********************************************************/ void delay(uint t){uchar 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 j;for (j=0;j<100;j++){delayB(4);BEEP=!BEEP; //BEEP取反}BEEP=1; //关闭蜂鸣器delay(170);}/********************************************************/ /* /*检查LCD忙状态/*lcd_busy为1时,忙,等待。

基于51单片机的步进电机正反转可控设计与仿真

基于51单片机的步进电机正反转可控设计与仿真

2020.19设计研发基于51单片机的步进电机正反转可控设计与仿真李建中(江苏省海门中等专业学校,江苏南通,226100)摘要:步进电机是伺服控制中的关键部件,对步进电机进行精确高效地控制,是实现精密运动、制造等的重要手段。

釆用51单片机作为电机的控制核心-ULN2003A作为电机的驱动芯片,选用额定电压为5V的小型步进电机,设置正转、反转、停止、加速、减速5个按钮,其中正转、反转和停止均有对应的LED指示灯。

通过Keil进行控制程序的编写,在Proteus 中进行仿真电路的连接,结果表明:电路设计正确;步进电机能够根据按钮指令进行运转,达到了设计预期;系统可应用于某些需要高精度控制的场合。

关键词:步进电机;51单片机;ULN2003A;Keil;ProteusDesign and Simulation of Positive and Negative Rotation ofStepping Motor Based on51Single Chip MicrocomputerLi Jianzhong(Jiangsu Province Haimen Secondary Vocational School,Narrtong Jiangsu,226100)Abst r act;St epper motor is the key compone n t in servo cont r ol.It is an import a n t means to realize precise motion and manufacture to control stepping motor accurately and efficiently.51single chip microcomputer is used as the cont r ol core of the mot o r,uln2003a is used as the driving chip of the motor,the small st e pping motor with:r ated volt a ge of5V is selec t ed,and five buttons of forward rotation,reverse rotation,stop,acceleration and deceleration are set,and the corresponding LED indicator lights are used for forward rotation,reverse rotation and stop.The resuIts show that:the circuit design is correct;the stepper motor can operate according to the button command,which meets the design expectation;the system can be applied to some occasions requiring high-precision control.Keywords:stepper motor;51single chip microcomputer;ULN2003A;Keil;Proteus0引言步进电机在工业制造、数控机床、各种伺服系统中均有应用。

基于51单片机的步进电机控制-设计报告(说明书)及源程序

基于51单片机的步进电机控制-设计报告(说明书)及源程序
图3所示的电路为四相混和型步进电机晶体管驱动电路的基本方式。它的驱动电压是固定的。表1列出了全部步进开关的逻辑时序。
步数
Q1
Q2
Q3
Q4
1
1
0
1
0
2
1
0
0
1
3
0
1
0
1
4
0
1
1
0
5
1
0
1
0
表1

2.
该系统中只运用到三个控制按钮,即 “正反”,“换挡”,“启停”,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单,更使人易懂。
单片机的晶振为12MHZ;
(3)、系统电路图:
南京XX大学
指导老师:张X
课 程 设 计
基于51单片机的步进电机控制
机械电子工程学院
测控技术与仪器
XXXXX
Xxx
2012年1年4日
步进电机控制系统
[摘要]本课程设计的内容是利用51单片机,达到控制步进电机的启动、停止、正转、反转、两档速度和状态显示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2803,ULN2803具有大电流、高电压,外电路简单等优点。利用四位数码管增设电机状态显示功能,各项数据更直观。实测结果表明,该控制系统达到了设计的要求。
2.
如图2.31,采用LED数码管动态显示数据与个项参数,方法简单,容易控制,成本低。
设计如下图
图2.31
2.4驱动电路设计
驱动电路可分为:三极管直接驱动(图3),采用斩波恒流驱动方式(图2.41)和芯片驱动电路等。驱动电路的性能直接关系到步进电机走步的准确与稳定。本电路采用驱动芯片ULN2803。ULN2803是一种大电流高电压型器件,外电路简单(图2.42)。

51单片机按键控制步进电机加减速及正反转

51单片机按键控制步进电机加减速及正反转

51单片机按键控制步进电机加减速及正反转之前尝试用单片机控制42步进电机正反转,电机连接导轨实现滑台前进后退,在这里分享一下测试程序及接线图,程序部分参考网上找到的,已经实际测试过,可以实现控制功能。

所用硬件:步进电机及驱动器、STC89C52单片机、直流电源1、硬件连接图•注意:上图为共阳极接法,实际连接参考总体线路连接。

•驱动器信号端定义:PUL+:脉冲信号输入正。

( CP+ )PUL-:脉冲信号输入负。

( CP- )DIR+:电机正、反转控制正。

DIR-:电机正、反转控制负。

EN+:电机脱机控制正。

EN-:电机脱机控制负。

•电机绕组连接A+:连接电机绕组A+相。

A-:连接电机绕组A-相。

B+:连接电机绕组B+相。

B-:连接电机绕组B-相。

•电源连接VCC:电源正端“+”GND:电源负端“-”注意:DC直流范围:9-32V。

不可以超过此范围,否则会无法正常工作甚至损坏驱动器.•总体线路连接输入信号共有三路,它们是:①步进脉冲信号PUL+,PUL-;②方向电平信号DIR+,DIR-③脱机信号EN+,EN-。

输入信号接口有两种接法,可根据需要采用共阳极接法或共阴极接法。

在这里我采用的是共阴极接法:分别将PUL-,DIR-,EN-连接到控制系统的地端(接入单片机地端);脉冲输入信号通过PUL+接入单片机(代码中给的P2^6脚),方向信号通过DIR+接入单片机(代码中给的P2^4脚),使能信号通过EN+接入(不接也可,代码中未接,置空)。

按键连接见代码,分别用5个按键控制电机启动、反转、加速、减速、正反转。

注意:接线时请断开电源,电机接线需注意不要错相,相内相间短路,以免损坏驱动器。

2、代码1.#include<reg51.h>2.#define MotorTabNum 53.unsigned char T0_NUM;4.sbit K1 = P3^5; // 启动5.sbit K2 = P3^4; // 反转6.sbit K3 = P3^3; // 加速7.sbit K4 = P3^2; // 减速8.sbit K5 = P3^1; //正反转9.10.sbit FX = P2^4; // 方向11.//sbit MotorEn = P2^5; // 使能12.sbit CLK = P2^6; // 脉冲13.14.inttable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};15.16.unsigned char g_MotorSt = 0; //17.unsigned char g_MotorDir = 0; //18.unsigned char MotorTab[7] = {12, 10, 8, 6, 4, 2,1};19.20.signed char g_MotorNum = 0;21.22.void delayms(xms);23.void mDelay(unsigned int DelayTime);24.void T0_Init();25.26.void KeyScan(void);27.28.29.30.void main(void)31.{32.T0_Init();33.// MotorEn = 0; //34.FX = 0;35.while(1)36.{37.KeyScan(); //38.}39.40.41.}42.43.void T0_Init()44.{45.TMOD = 0x01;46.TH0 = (65535-100)/256; // 1ms47.TL0 = (65535-100)%256;48.EA = 1;49.ET0 = 1;50.// TR0 = 1;51.52.}53.54.void T0_time() interrupt 155.{56.// TR0 = 0;57.TH0 = (65535-100)/256;58.TL0 = (65535-100)%256;59.T0_NUM++;60.if(T0_NUM >= MotorTab[g_MotorNum]) //61.{62.T0_NUM = 0;63.CLK=CLK^0x01; //64.}65.// TR0 = 1;66.}67.68.69.//--------------------------70.void KeyScan(void)71.{72.if(K1 == 0)73.{74.delayms(10);75.if(K1 == 0)76.{77.g_MotorSt = g_MotorSt ^ 0x01;78.// MotorEn ^= 1;79.TR0 = 1;80.FX ^= 0; //反转81.}82.}83.84.if(K2 == 0)85.{86.delayms(10); //正转87.if(K2 == 0)88.{89.g_MotorDir = g_MotorDir ^ 0x01;90.FX ^= 1; //加速91.}92.}93.94.if(K3 == 0) //95.{96.delayms(5); //加速97.if(K3 == 0)98.{99.g_MotorNum++;100.if(g_MotorNum > MotorTabNum) 101.g_MotorNum = MotorTabNum; 102.}103.}105.if(K4 == 0) //106.{107.delayms(5); // 减速108.if(K4 == 0)109.{110.g_MotorNum--;111.if(g_MotorNum < 0)112.g_MotorNum = 0;113.}114.}115.116.if(K5 == 0) //117.{118.delayms(10); // 正反转119.if(K5 == 0)120.{121.g_MotorSt = g_MotorSt ^ 0x01; 122.g_MotorDir = g_MotorDir ^ 0x01; 123.MotorEn ^= 1;124.TR0 = 1;125.while(1)126.{127.FX ^= 1; //128.delayms(90000);129.FX ^= 0; //130.delayms(90000);131.}132.}133.}135.136.void delayms(xms)//延时137.{138.unsigned int x,y;139.for(x=xms;x>0;x--)140.for(y=110;y>0;y--);141.}3、常见问题解答•控制信号高于5v一定要串联电阻,否则可能会烧坏驱动器控制接口电路。

基于51单片机的步进电机调速系统(含完整代码)

基于51单片机的步进电机调速系统(含完整代码)

课程设计报告设计题目:遥控小车——基于51单片机的步进电机调速系统学院:专业:班级:学号:姓名:电子邮件:时间:成绩:指导教师:华南农业大学理学院应用物理系课程设计(报告)任务书学生姓名指导教师职称学生学号专业电子信息科学与技术题目基于51单片机的步进电机调速系统(遥控小车)任务与要求1. 设计并制作电路,利用单片计控制步进电机运转。

2. 通过键盘可以不间断地设定改变电机的转速、转向。

3. 利用显示器实时显示转速等参数。

4. 扩展功能:可设定转动步数。

开始日期2014 年3 月完成日期2014 年3 月1引言步进电机是一种将电脉冲转化为角位移的执行机构。

目前,步进机已经广泛应用于领域,例如工业生产中的机械臂的控制,照明装置和监控摄像机转动等。

步进机在装置转动、精确位移方面有很重大的作用。

本系统是基于STC89C51 单片机的遥控小车。

采用STC89C51单片机作为控制核心,通过ULN2003A驱动步进机(28BYJ-48)转动,由按键和显示屏1602组成人机交互模块,同时通过315M无线发射和接收模块向单片机输入控制信号,将整个系统固定于简易小车上,最终实现小车测试和远程遥控功能。

基本达到预定的设计要求以及功能的扩展。

2系统的设计与理论分析2.1系统总体设计2.2理论分析本设计分为两种工作模式:测试模式、遥控模式。

在电路板上有一个带锁的开关进行设置。

测试模式工作时,通过控制小车上的按键进行加速、减速、反转、设置、步数增、步数减等按键,单片机扫描按键,通过软件控制液晶模块显示对应的转速、设置的速度和步数,同时控制步进机模块进行相应的转动。

步进机的是由ULN2003A达林顿管驱动,由单片机控制输入脉冲的频率来控制步进机的转速,单片机是通过程序查表对4个I/O口输出脉冲,本次设计采用的是两相四线减速步进机,步进角为5.625°,减速比为64:1,程序采用的是8拍查表,具有较好的扭矩。

遥控模式工作时,遥控部分五个按键分别输入前、后、左、右、暂停,单片机扫描按键,通过无线发射模块发射串行编码,小车的无线接收模块接收对应的编码,送至单片机进行解码,从而控制液晶模块的显示和步进机模块的工作,进而完成功能。

51单片机实现三相六拍的步进电机控制(正反转、加减速、挡位显示)

51单片机实现三相六拍的步进电机控制(正反转、加减速、挡位显示)

51单片机实现三相六拍的步进电机控制(正反转、加减速、挡位显示)自己写的,不规范还望包含,keil和protues文件单片机源程序如下:1.#include <reg52.h>2.3.#define uchar unsigned char4.#define uint unsigned int5.uint speed = 100; //初始转速6.uint max = 200; //最慢转速7.uint min = 20; //最快转速8.9.sbit swich = P2^0; //总开关10.sbit dir = P2^1; //电机旋转方向11.sbit le1=P2^6;12.sbit le2=P2^7;13.sbit speedadd=P3^2;14.sbit speedsub=P3^3;15.16.unsigned char uca_MotorStep[]={0x01,0x03,0x02,0x06, 0x04,0x0C,0x08,0x09}; //励磁电流数组。

17.18.19.uchar leddata[]={20.21.0x3F, //"0"22.0x06, //"1"23.0x5B, //"2"24.0x4F, //"3"25.0x66, //"4"26.0x6D, //"5"27.0x7D, //"6"28.0x07, //"7"29.0x7F, //"8"30.0x6F, //"9"31.0x40, //"-"32.0x00, //熄灭33.};34.35.36.void delay1ms(void) //误差 0us37.{38.unsigned char a,b,c;39.for(c=1;c>0;c--)40.for(b=142;b>0;b--)41.for(a=2;a>0;a--);42.}43.44.void delay(uint x ) //多功能毫秒延时45.{46.uint i;47.for(i=0;i<x;i++)48.{49.delay1ms();50.}51.}52.53.54.55.void display(void)56.{57.if(swich==1)58.{59.P0= leddata[11];60.delay(1);61.le2=1;62.le1=1;63.delay(1);64.le2=0;65.le1=0;66.67.}68.else69.{70.if(dir==1)71.{72.P0= leddata[11];73.delay(1);74.le2=1;75.delay(1);76.le2=0;77.}78.else79.{80.P0 =leddata[10];81.delay(1);82.le2=1;83.delay(1);84.le2=0;85.}86.87.P0=leddata[9-(speed-20)/20];88.delay(30);89.le1=1;90.delay(5);91.le1=0;92.93.}94.}95.96.97.void Init_INT0()98.{99.EX0=1; //开启外部中断 0100.IT0=1; //设置成低电平触发,1为下降沿触发101.EX1=1; //开启外部中断 1102.IT1=1; //设置成低电平触发,1为下降沿触发103.EA=1; //开启总中断104.}105.106.void Interrupt0_handler() interrupt 0107.{108.EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰109.delay(20); //同样是为了消除抖动而产生新的中断110.if(speed>min)111.{speed=speed-20;} //限制最快转速112.else113.{speed=min;}114.while(speedadd==0);115.EA=1; //恢复中断116.}117.118.119.void Interrupt1_handler() interrupt 2120.{121.EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰122.delay(20); //同样是为了消除抖动而产生新的中断123.if(speed<max)124.{speed=speed+20;}125.else126.{speed=max;} //限制最慢转速127.while(speedsub==0);128.EA=1; //恢复中断130.131.void main()132.{133.int i; //初始化134.dir=1;135.le1=0;136.le2=0;137.138.139.start:140.if(swich==0)141.{Init_INT0();} //总开关开启,初始化中断,开始转动142.else143.{display(); goto start; }144.145.146.if(dir==1)147.seq:148.{149.while(1)150.{151.display();152.for (i=0; i<8; i++)153.{154.P1 = uca_MotorStep[i]; //取数据155.delay(speed); //调节转速156.}157.if(dir==0) //是否换向159.delay(5); // 换向延时160.goto oppo; //换向161.}162.if(swich==1) //总开关运行中关闭163.goto start; //等待开启164.165.}166.167.}168.else169.oppo:。

基于C51单片机步进电机综合控制实验

基于C51单片机步进电机综合控制实验

重庆工商大学计算机与信息工程学院学院《单片机原理及应用》课程实验报告实验名称:步进电机综合控制实验实验班级:2010级自动化专业班级:2010级自动化三班指导老师:文远熔组员:陶园2010133330 王路2010133344江洋2010133335陈娅2010133326张琴芳2010133317张丹2010133320(组长)一、摘要:本实验利用8051单片机达到控制步进电机的启动、停止、正转、反转、点动、转过指定角度、状态显示和数据指示的目的,使步进电机控制更加灵活。

步进电机驱动芯片采用ULN2003,ULN2003具有大电流、高电压,外电路简单等优点。

利用ZLG7290模块驱动LED数码管显示速度设定值。

通过这个单片机控制系统的设计来掌握步进电机的工作原理和驱动过程以及LED显示原理和ZLG7290模块的使用方法,用LED数码管显示实验要求的状态结果,设计电路的硬件接线图和实现上述要求的程序。

关键词:51单片机步进电机ZLG7290 ULN2003二、设计内容与要求:1、任务介绍:实现步进电机按规定的速度正转、反转,转过指定的角度,要有点动功能。

所有命令通过键盘输入,步进电机在运行过程中要有状态和数据指示。

2、每套设计文档应包括:系统原理说明、程序框图、电路原理图和程序清单。

三、实验器件介绍及原理:本实验采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。

在单片机环境下,用ULN2003驱动芯片驱动步进电机,用ZLG7290芯片作用下的按键控制步进电机的运行,从而达到实验要求。

其控制框图(图一)为:图一:控制框图1、系统硬件介绍1.1步进电机1.1.1相关的技术指标:a、相数:指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机,本实验用的是四相步进电机。

电机相数不同,其步距角也不同。

b、步距角:表示控制系统每发一个步进脉冲信号,电机所转动的角度。

本实验程序运行前要先测量步进电机的步距角。

AT89C51单片机控制步进电机

AT89C51单片机控制步进电机

. . . .摘要步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。

控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。

为实现单片机控制步进电机系统在数控机床上的应用,系统设计了两个外部中断,以实现步进电机在某段时间的反复正反转功能,也即数控机床的刀架自动进给运动,随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来,步进电机的应用得到很大的提高。

人们用它来驱动时钟和其他采用指针的仪器,打印机、绘图仪,磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。

此外作为执行元件,步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中,随着微电子和计算机技术的发展,它的需要量与日俱增,在各个国民经济领域都有应用。

步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。

关键词:步进电机;单片机;精度高;体积小;控制方便。

目录设计要求 (2)1.1设计要求 (2)1.2验收标准 (2)步进电机原理及硬件和软件设计 (2)2.1步进电机工作方式 (2)2.2 总体设计方框图 (5)2.3 设计原理分析 (6)2.3.1元器件介绍:步进电机 (6)2.3.2方案论证 (7)2.3.3硬件设计 (8)2.3.4元件清单 (12)2.3.5 软件设计 (13)总结 (19)致 (19)参考文献 (20)附录 (21)设计要求1.1设计要求(1)最小系统:选择AT89C51单片机为核心元件构成系统。

基于C51单片机步进电机综合控制实验

基于C51单片机步进电机综合控制实验

重庆工商大学计算机与信息工程学院学院《单片机原理及应用》课程实验报告实验名称:步进电机综合控制实验实验班级:2010级自动化专业班级:2010级自动化三班指导老师:文远熔组员:陶园2010133330 王路2010133344江洋2010133335陈娅2010133326张琴芳2010133317张丹2010133320(组长)一、摘要:本实验利用8051单片机达到控制步进电机的启动、停止、正转、反转、点动、转过指定角度、状态显示和数据指示的目的,使步进电机控制更加灵活。

步进电机驱动芯片采用ULN2003,ULN2003具有大电流、高电压,外电路简单等优点。

利用ZLG7290模块驱动LED数码管显示速度设定值。

通过这个单片机控制系统的设计来掌握步进电机的工作原理和驱动过程以及LED显示原理和ZLG7290模块的使用方法,用LED数码管显示实验要求的状态结果,设计电路的硬件接线图和实现上述要求的程序。

关键词:51单片机步进电机ZLG7290 ULN2003二、设计内容与要求:1、任务介绍:实现步进电机按规定的速度正转、反转,转过指定的角度,要有点动功能。

所有命令通过键盘输入,步进电机在运行过程中要有状态和数据指示。

2、每套设计文档应包括:系统原理说明、程序框图、电路原理图和程序清单。

三、实验器件介绍及原理:本实验采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。

在单片机环境下,用ULN2003驱动芯片驱动步进电机,用ZLG7290芯片作用下的按键控制步进电机的运行,从而达到实验要求。

其控制框图(图一)为:图一:控制框图1、系统硬件介绍1.1步进电机1.1.1相关的技术指标:a、相数:指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机,本实验用的是四相步进电机。

电机相数不同,其步距角也不同。

b、步距角:表示控制系统每发一个步进脉冲信号,电机所转动的角度。

本实验程序运行前要先测量步进电机的步距角。

51单片机控制步进电机

51单片机控制步进电机

设计方案与原理1 设计方案设计一个51单片机四相步进电机控制系统要求系统具有如下功能:(1)由I/O口产生的时序方波作为电机控制信号;(2)信号经过驱动芯片驱动电机的运转;(3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。

2 设计原理步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。

步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。

从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。

四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。

在本次设计中,我们使用的是四相单八拍的工作方式。

通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。

图 2.1 步进电机内部结构截图根据步进电机的相关相序表我们可以正常的控制电机的步进运行。

3 硬件设计根据设计要求和设计原理,我们可以绘制出基本的功能方框图,以便之后我们连接实际电路时的方便和可靠。

用键盘控制具体的功能模块,这样更能直观方便的控制整体的系统,使其达到我们预期的操作效果。

图3.1中简单描述了整个单片机系统的控制模式和控制流程,包括通过时钟电路和键盘电路,来控制ULN2003驱动电机动作。

图表图 3.1 硬件电路功能方框图4 电路原理图4.C程序代码#include <reg52.h>#define KeyPort P3#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量sbit A1=P1^0; //定义步进电机连接端口sbit B1=P1^1;sbit C1=P1^2;sbit D1=P1^3;#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//DA相通电,其他相断电#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电unsigned char Speed=1;bit StopFlag;void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);unsigned char KeyScan(void);/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS------------------------------------------------*/void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t)while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------主函数------------------------------------------------*/ main(){unsigned int i=512;//旋转一周时间unsigned int n=0;unsigned char num,vo,v;Init_Timer0();Coil_OFF;while(1) //正向{num=KeyScan(); //循环调用按键扫描if(num==1)//第一个按键,速度等级增加{if(Speed<15)Speed=Speed+2;}if(num==2)//第二个按键,速度等级减小{if(Speed>1)Speed=Speed-2;}if(num==3)//第三个按键,电机停转{Coil_OFFStopFlag=1;}if(num==4)//第四个按键,电机启动{StopFlag=0;TR0=1;}if(num==5)//第五个按键,电机反转{TR0=0;TR1=1;}if(num==6)//第六个按键,电机正传{TR0=1;TR1=0;}vo=(0.25*(20-Speed)*64*32)/1000;v=60/vo;TempData[0]=dofly_DuanMa[v/10]; //分解显示信息,如要显示68,则68/10=6 68%10=8TempData[1]=dofly_DuanMa[v%10];}}/*------------------------------------------------显示函数,用于动态扫描数码管输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。

基于51单片机的步进电机控制系统设计与实现

基于51单片机的步进电机控制系统设计与实现

基于51单片机的步进电机控制系统设计与实现步进电机控制系统是基于51单片机的一种控制系统,它主要用来控制步进电机的转动方向和转速等参数。

下面详细解释一下这个系统的设计和实现。

1. 系统硬件设计步进电机控制系统的硬件主要包括51单片机、驱动电路、步进电机和电源等部分。

其中,驱动电路是控制步进电机的关键,它通常采用L298N芯片或ULN2003芯片等常用的驱动模块。

在硬件设计方面,主要需要考虑以下几个方面:(1)步进电机的种类和规格,以便选择合适的驱动电路和电源。

(2)驱动电路的接线和参数设置,例如步进电机的相序、脉冲频率和电流大小等。

(3)电源的选取和参数设置,以满足系统的供电要求和安全性要求。

2. 系统软件设计步进电机控制系统的软件设计主要包括编写控制程序和调试程序。

其中,控制程序是用来实现步进电机的正转、反转、加速和减速等控制功能,而调试程序则用来检测系统的电路和程序的正确性和稳定性。

在软件设计方面,主要需要考虑以下几个方面:(1)确定控制程序的算法和流程,例如使用“循环控制法”或“PID控制法”等控制方法。

(2)选择编程语言和编译器,例如使用汇编语言或C语言等。

(3)编写具体的控制程序和调试程序,并进行测试和调试,以确保程序的正确性和稳定性。

3.系统实现步进电机控制系统的实现主要包括硬件组装和软件烧录两个部分。

在硬件组装方面,需要按照硬件设计图纸进行零部件的选取和电路的组装,同时进行电源和信号线的接入。

在软件烧录方面,需要使用专用的编程器将程序烧录到51单片机的芯片中,并进行相应的设置和校验。

总之,基于51单片机的步进电机控制系统是一个功能强大、应用广泛的控制系统,可以实现精密控制和自动化控制等多种应用,具有很高的实用价值和研究价值。

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

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

勘电槽洗电借专理单片机应用系统设计报告设计题目:步进电机控制器设计专业班级: _____________________________ 学生姓名:____________________________________ 指导教师:____________________________________ 设计时间:2016^ 12 月设计要求及方案可以实现步进电机正转和反转控制及速度的控制,同时实现步进电机步数的控制。

2、设计方案本次设讣采用AT89C51单片机控制一个四相步进电机。

单片机输出脉冲序列, 驱动步进电机转动;并设置开关、按键电路,来控制步进电机的2挡转速,即加速、减速;以及步数的变化,即四拍驱动方式、八拍驱动方式,同时控制步进电机的转动方向,即正转、反转。

设讣方案总体框图:单片机最小系统开关、按键电路二、步进电机简介K步进电机工作原理步进电机是一种将电脉冲转化为角位移的执行机构。

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的LI的:同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的LI的。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常丄作,驱动器就是为步进电机分时供电的多相时序控制器。

虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。

它必须山双环形脉冲信号、功率驱动电路等组成控制系统方可使用。

因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。

步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。

基于51系列单片机控制步进电机调速实验

基于51系列单片机控制步进电机调速实验

基于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所示)图1 是反应式步进电动机结构示意图,它的定子具有均匀分布的六个磁极,磁极上绕有绕组。

51单片机H桥电路控制电机正反转和PWM调速

51单片机H桥电路控制电机正反转和PWM调速

51单片机H桥电路控制电机正反转和PWM调速搭了个H桥电路,控制电机的正反转和PWM调速,程序是网上的,改改引脚就能用,电路和源程序如下:功能:P1.1按键停止,P1.2左转,P1.3右转,P1.0调速#include;#define uchar unsigned char#define uintunsigned intsbit PW1=P0^0 ;sbit PW2=P0^1 ;//控制电机的两个输入sbit accelerate=P1^0 ;//调速按键sbit stop=P1^1 ;//停止按键sbit left=P1^2 ;//左转按键sbit right=P1^3 ;//右转按键#define right_turn PW1=0;PW2=1//顺时针转动#define left_turn PW1=1;PW2=0//逆向转动#define end_turnPW1=1;PW2=1//停转uint t0=25000,t1=25000;//初始时占空比为50%uint a=25000;//设置定时器装载初值25ms设定频率为20Hzuchar flag=1;//此标志用于选择不同的装载初值uchar dflag;//左右转标志uchar count;//用来标志速度档位void keyscan();//键盘扫描void delay(uchar z);void time_init();//定时器的初始化void adjust_speed();//通过调整占空比来调整速度//**********************************//void main(){time_init();//定时器的初始化while(1){keyscan();//不断扫描键盘程序,以便及时作出相应的响应}}//*************************************// void timer0()interrupt 1 using 0{if(flag){flag=0;end_turn;a=t0;//t0的大小决定着低电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%256;//重装载初值}else{flag=1;//这个标志起到交替输出高低电平的作用 if(dflag==0)right_turn;//右转}else{left_turn; //左转}a=t1;//t1的大小决定着高电平延续时间 TH0=(65536-a)/256;TL0=(65536-a)%256;//重装载初值}void time_init(){TMOD=0x01; //工作方式寄存器软件起动定时器定时器功能方式1 定时器0 TH0=(65536-a)/256;TL0=(65536-a)%256;//装载初值ET0=1;//开启定时器中断使能EA=1;// 开启总中断TR0=0;}//****************************************// void delay(uchar z)//在12M下延时z毫秒{uint x,y;for(x=z;x>;0;x--)for(y=110;y>;0;y--);//******************************// void keyscan(){if(stop==0){TR0=0;//关闭定时器0即可停止转动end_turn;}if(left==0){TR0=1;dflag=1;//转向标志置位则左转}if(right==0){TR0=1;dflag=0;//转向标志复位则右转}if(accelerate==0){delay(5) ; //延时消抖if(accelerate==0){while(accelerate==0) ; //等待松手count++;if(count==1){t0=20000;t1=30000;//占空比为百分之60}if(count==2){t0=15000;t1=35000;//占空比为百分之70}if(count==3){t0=10000;t1=40000;//占空比为百分之80}if(count==4){t0=5000;t1=45000;//占空比为百分之90}if(count==5){count=0;}}} }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <reg52.h>
sbit inc=P3^2;
sbit dec=P3^3;
sbit zhzhd=P3^6;
sbit fazhd=P3^7;
bit flag=1;
unsigned char t=0x00; //表正反速度
void delay(unsigned int t);
void motor_ffw();
unsigned char code led7code[]=
{0x81,0xe7,0x92,0xc2,0xe4,0xc8,0x88,0xe3,0x00,0xc0};
unsigned int num=0;
unsigned char code FFW[8]={0x40,0x60,0x20,0x30,0x10,0x18,0x08,0x48}; unsigned char code FFZ[8]={0x48,0x08,0x18,0x10,0x30,0x20,0x60,0x40}; //反转
void main()
{
EA=1;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
TMOD=0x06;
TL0=0xff;
TH0=0xff;
TR0=1;
ET0=1;
P3=0x3f;
P0=led7code[num%10];
while(1)
{
motor_ffw();
}
}
void motor_ffw() /* 步进电机驱动*/ //
{
unsigned char i;
int j;
while(1)
{
for(j=0;j<12;j++) //12个周期转一圈
{ for (i=0; i<8; i++) //一个周期转30度
{
if(flag==1)
P2 = FFW[i]; //取数据
else
P2 = FFZ[i];
delay(t); //t调节转速
}
}
}
}
void int0(void) interrupt 0
{
EX0=0;
delay(10);
if(inc==0)
{
num++;
P0=led7code[num%10];
if(num%10!=0&&flag){zhzhd=0;fazhd=1;}
else if (num%10==0){zhzhd=0;fazhd=0;}
else {zhzhd=1;fazhd=0;}
switch(num%10)
{
case 0:t=0x00;break;
case 1:t=0x12;break;
case 2:t=0x11;break;
case 3:t=0x10;break;
case 4:t=0x09;break;
case 5:t=0x08;break;
case 6:t=0x07;break;
case 7:t=0x06;break;
case 8:t=0x05;break;
case 9:t=0x04;break;
}
}
while(!inc);
EX0=1;
}
void int1(void) interrupt 2
{
EX1=0;
delay(10);
if(dec==0)
{
num--;
if(num==65535)num=65529;
P0=led7code[num%10];
if(num%10!=0&&flag){zhzhd=0;fazhd=1;}
else if (num%10==0){zhzhd=0;fazhd=0;}
else {zhzhd=1;fazhd=0;}
if(num==65535)num=65529;
switch(num%10)
{
case 0:t=0x00;break;
case 1:t=0x12;break;
case 2:t=0x11;break;
case 3:t=0x10;break;
case 4:t=0x09;break;
case 5:t=0x08;break;
case 6:t=0x07;break;
case 7:t=0x06;break;
case 8:t=0x05;break;
case 9:t=0x04;break;
}
}
while(!dec);
EX1=1;
}
void huanx(void) interrupt 1
{
ET0=0;
TR0=0;
delay(10);
if(P3^4==0)
{
if(flag==1) {flag = 0;zhzhd=1;delay(500);fazhd=0;} else {flag = 1;fazhd=1;delay(500);zhzhd=0;}
}
while(!(P3^4));
ET0=1;
TR0=1;
}
// 延时程序
void delay(unsigned int t)
{
unsigned int k;
while(t--)
{
for(k=0; k<80; k++);
}
}。

相关文档
最新文档