STC89C52单片机控制28byj-48步进电机正反转变速
基于52单片机的28BYJ48步进电机运用
基于52单片机的28BYJ48步进电机运用52单片机是一种常见的单片机芯片,具有强大的处理能力和丰富的IO口,广泛用于各种电子产品中。
28BYJ48步进电机是一种小型步进电机,结构简单、价格低廉,常用于精密定位和控制系统。
本文将介绍基于52单片机的28BYJ48步进电机的应用。
一、28BYJ48步进电机介绍28BYJ48步进电机是一种4相5线小型步进电机,具有步距角度为5.625度、步相精度高、转速可调等特点。
它由一个固定齿状转子和一个旋转齿状定子组成,通过改变定子的相序来实现转动。
由于其结构简单、价格低廉、定位精度高等特点,广泛应用于机器人、摄像头云台、家电等领域。
二、52单片机的应用52单片机是一种基于MCS-51指令集的高性能8位单片机电路板,具有128KB的存储空间和23个可编程IO口。
它可以用于控制步进电机的转向、转速、步距等参数,实现精确的定位和运动控制。
三、基于52单片机的28BYJ48步进电机应用1.简单控制通过编程设置52单片机的IO口输出电平,可以实现对步进电机的简单控制。
例如,通过高低电平交替输出,可以实现电机的正反转。
2.精密定位利用52单片机的定时器和计数器功能,可以精确计算电机转动的步数,从而实现精密定位。
通过编程控制电机按照指定的步距和步数转动,可以将其用于精密位置控制系统。
3.运动控制结合传感器和52单片机的输入输出功能,可以实现对步进电机的运动控制。
例如,通过接入光电传感器或编码器,可以实时监测电机的转动角度和速度,并通过编程控制电机的转动,实现对运动速度和位置的精确控制。
4.多电机协同控制通过串行通信或CAN总线等方式,多个步进电机可以与单个52单片机进行协同控制。
通过编程设置不同电机的控制参数,可以实现多电机的同步运动和协同工作。
5.扩展应用利用52单片机的扩展IO口和外部模块接口,可以实现更多功能的扩展应用。
例如,结合显示模块和键盘模块,可以实现对步进电机的参数设置和状态显示;结合无线通信模块,可以实现远程控制和监控等功能。
基于STC89C52的步进电机调速系统
目录摘要 (3)一课程设计目的 (4)二系统简介 (5)2.1 步进电机工作原理简介 (5)2.2 步进电动机的励磁方式 (5)2.2.1 二相励磁 (6)2.2.2 一-二相励磁 (6)2.3 步进电机基本参数 (7)2.4 闭环PID控制原理 (8)三方案选择 (8)3.1 控制器的选择 (8)3.2 显示器的选择方案 (8)3.3 转速信号采集方案 (8)3.4 电机驱动芯片的选择 (9)四硬件总体设计 (9)4.1 系统原理框图 (9)4.2 系统电路原理图 (9)五软件总体设计 (10)六功能模块介绍 (11)6.1硬件模块 (11)6.1.1 STC89C52RC型单片机最小系统 (11)6.1.2 ULN2003APG驱动电路 (11)6.1.3 74HC14E (12)6.1.4 测速模块 (12)6.1.5 显示电路 (13)6.2软件模块 (14)6.2.1 LCD显示模块 (14)6.2.2 键盘电机模块 (16)6.2.3 PWM模块 (17)6.2.4 测速模块 (18)七验证与测试 (19)7.1验证 (19)7.2测试 (19)7.3 运行结果 (20)八小组分工...................................................................................错误!未定义书签。
九设计中的问题...........................................................................错误!未定义书签。
十参考文献. (22)附录 (23)1. 完整程序 (23)2.原理图、仿真图、PCB图 (32)摘要步进电机是一种将电脉冲信号转换成相应的角位移或线位移的电磁机械装置,属于输出与输入脉冲对应的增量驱动元件。
它具有步进数可控,运行平稳,价格便宜等优点,广泛应用于数控机床、机器人控制、绘图仪、石英钟表等数字控制和自动控制系统中。
单片机数码管显示+步进电机正反加速转动C语言程序
{
if(jia_key == 0)
{
delay(5);
if(jia_key == 0)
{
num++; //速度标识位
feng_ming_qi();
while(jia_key == 0) ;
for(k=125;k>0;k--);
}
/***************************************************************************************************/
void xianshi ( )//显示程序
{
delay(50);
if(zf_key ==0)
{
flag=~flag;
feng_ming_qi();
while(zf_key == 0);
}
}
if(stop_key == 0)
{
{
uchar j;
uint i;
for(j=0+table_begin;j<4+table_begin;j++)
{
P1 = code_table[j];
for(i=0;i<maichong;i++)
{
xianshi();
}
{
tong = 0xff;
tong = on[0];//位选为0;
liang = table[show_num];
delay(3);
liang = 0xff;
}
/***************************************************************************************************/
基于STC89C52单片机的步进电机控制技术研究与实现.doc
基于STC89C52单片机的步进电机控制技术研究与实现-【摘要】本文采用以STC89C52单片机为核心,进行了步进电机控制系统的软硬设计,实现了步进电机的起停、正反转、调速等控制,并实现了电机转速的实时显示。
经实验验证,该系统具有软硬件设计合理、运行稳定可靠、抗干扰能力强及实时显示性好等特点。
【关键词】步进电机;STC89C52;调速1.引言随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都具有广泛的应用。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
应用单片机实现步进电机控制系统的设计,具有成本低、使用灵活的特点,广泛应用于数控机床、机器人、工业自动控制以及各种可控有定位要求的机械工具等应用领域。
本文介绍的步进电机控制系统,采用以STC89C52单片机为核心的低成本、高精度、微型化的硬件电路和软件设计方法。
该步进电机硬件控制电路分为电源模块、按键控制模块、步进电机及驱动模块、测速模块及显示模块等部分组成。
整个系统软件设计采用模块化设计方法,由主程序、预置子程序、正转子程序、反转子程序、加减速和显示子程序等模块组成。
通过向步进电机驱动电路发送控制信号,实现对步进电机的起停、正反转、调速等控制,并实时显示电机转速。
经反复实验证明,本套系统软硬件设计合理、抗干扰能力强、实时显示性能良好。
2.系统总体设计方案根据步进电机控制系统设计要求,整个控制系统电路可以分为电源模块、按键控制模块、步进电机驱动模块、步进电机模块、测速模块、显示模块等部分。
步进电机控制系统方框图如图1所示。
3.系统硬件电路设计根据系统功能需求分析,绘制出系统原理图如图2所示。
3.1 单片机外围控制电路单片机工作的外围控制电路主要包括晶振电路和STC单片机下载电路等,其对应电路如图2中所示。
3.2 按钮控制电路本步进电机控制系统中控制按钮包括启停按钮,正转按钮,反转按钮,加速按钮及减速按钮等。
3.3 驱动电路因为步进电机工作时的驱动电流比单片机端口所能提供的要大得多,单片机要控制电机的运动就不能直接将端口与电机各相相连,必须使用一定的接口电路和驱动电路。
基于STC89C52单片机的步进电机控制系统设计与实现毕业设计
毕业设计设计题目:基于STC89C52单片机的步进电机控制系统设计与实现毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:指导教师签名:日期:日期:注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它基于单片机的步进电机控制系统设计与实现摘要步进电机是一种纯粹的数字控制电动机,是一种受电脉冲信号控制的无刷式直流电动机,是现代定位驱动装置的核心,广泛应用在机械、电力、纺织、电子、仪表、印刷以及航空航天、船舶、兵器等国防工业等领域。
基于STC89c52单片机的步进电机控制系统设计
显示 、 人机互动等 四个 模块 组成 ; 实现 的功能 有 ( 1 ) 键盘 上相应 的 按键可 以控 制步进 电机停 止 、 转动 、 转 速的快 慢 、 正反转 等 ; ( 2 ) 通 过L E D 可 以 显 示 电机 的 工 作 状 态 , 如 转 速 的大小 , 转 动方 向 等 ; ( 3 ) 通 过 人 机 互 动 可 以灵 活 的对 电机 进 行 控 制 , 随 时 可 以 改 变 对 步 进 电机 的操作 ; 3系 统 硬 件 设 计 3 . 1 单 片机 模 块 该设计用 S T C8 9 c 5 2 单 片机 , 单片机 的 P 1 . 0 一P 1 . 3 接 步进 电机 驱 动器 。脉 冲信号 由延 时函数 产生 , 通 过单 片 机 的 P 1 . 0口输 出, 可 以通过 改变延 时 函数 的延时 时间来调 整电机 的转速 , 通过键 盘 的按钮 , 就可 以改变延时 函数 的延时 时间从 而改变 电机 的转 速 , P 0 口接 L E D数码管 , 可 以显示 当前 的电机转速 状态 。单 片机 的 P 3 . 0 P 3 . 4 接按 键电路 。振荡 电路 的晶振频 率为 : 1 1 . 0 5 9 2 MH z 。
基于 S T C 8 9 c 5 2 单 片机 的 步进 电 机 控 制 系统 设 计
邢聪聪 杨 成 邵 帅
( 西北 民族 大学电气工程 学院
【 摘 妻】 本设 计是 基 于 S T C 8 9 c 5 2 单 片机 的 步进 电机控 制 系统 , 步进 电 机 转动是 通 过将 单 片机 产 生 的信 号 脉 冲 转换 成 步进 电机 相 应 的 角位 移, 从 而 实现 工作 的驱 动 ; 该设 计 结构 简单 , 易于操 作 , 精度较高, 成本 较低 , 使 用 灵活等 特 点。 【 关键 词】 s T c 8 9 c 5 2 ; 步进 电机 ; 信 号脉 冲
最新单片机课程设计步进电机启动停止正反转
单片机课程设计步进电机启动停止正反转单片机课程设计报告步进电机控制设计姓名:黄盛海 201030480108詹志勋 201030480125郑榕生 201030480128 班级: 10车辆工程1班指导老师:李震姜晟日期: 2012.6.18~6.20 华南农业大学工程学院摘要:步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。
本次课程设计主要采用AT89S52芯片,用汇编语言编写出电机的正转、反转、加速、减速、停止程序,通过单片机、电机的驱动芯片ULN2003以及相应的按键实现以上功能,并且步进电机的工作状态要用相应的发光二极管显示出来。
控制系统主要由硬件设计和软件设计两部分组成。
其中,硬件设计包括单片机的最小系统模块、电源模块、控制模块、步进电机ULN2003A驱动模块、彩灯显示模块5个功能模块的设计。
并且通过仿真控制系统对硬件、软件进行了调试和改善,实现了上述功能。
本系统具有智能性、实用性及可靠性的特点。
关键词:步进电机单片机电脉冲驱动系统汇编语言目录1、课程设计目的及要求 (4)2、整体系统分析 (4)3、硬件系统分析 (6)4、软件系统分析 (10)5、调试结果 (10)6、结论 (11)7、参考文献 (12)附一:源程序 (12)1. 课程设计目的及要求1.1 课程设计目的①增进对单片机的感性认识,加深对单片机理论方面的理解;②掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O口、A/D转换等;③了解和掌握单片机应用系统的软硬件设计过程及实现方法。
1.2 课程设计要求①设计一个步进电机控制器,要求用多个按键控制电机的启动/停止、加速、减速、反转等控制功能;②用彩灯显示电机的转动状态,如加速就控制彩灯快速闪烁,减速则控制彩灯慢速闪烁等。
2. 整体系统分析2.1步进电机控制工作原理步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。
单片机对28BYJ-48步进电机的控制设计
单片机对28BYJ-48步进电机的控制设计再重新看一下上面的步进电机外观图和内部结构图:步进电机一共有5根引线,其中红色的是公共端,连接到 5 V 电源,接下来的橙、黄、粉、蓝就对应了A、B、C、D 相;那么如果要导通A 相绕组,就只需将橙色线接地即可,B 相则黄色接地,依此类推;再根据上述单四拍和八拍工作过程的讲解,可以得出下面的绕组控制顺序表,如表9-1所示:我们板子上控制步进电机部分是和板子上的显示控制的74HC138 译码器部分复用的P1.0~P1.3,关于跳线我们在第3章已经讲过了,通过调整跳线帽的位置可以让P1.0~P1.3控制步进电机的四个绕组,如图9-5所示。
图9-5 显示译码与步进电机的选择跳线如果要使用电机的话,需要把4个跳线帽都调到跳线组的左侧(开发板上的实际位置),即左侧针和中间针连通(对应原理图中的中间和下边的针),就可以使用P1.0 到P1.3 控制步进电机了,如要再使用显示部分的话,就要再换回到右侧了。
那如果大家既想让显示部分正常工作,又想让电机工作该怎么办呢?跳线帽保持在右侧,用杜邦线把步进电机的控制引脚(即左侧的排针)连接到其它的暂不使用的单片机IO 上即可。
再来看一下我们步进电机的原理图,步进电机的控制电路如图9-6所示。
图9-6 步进电机控制电路诚然,单片机的IO 口可以直接输出0 V 和5 V 的电压,但是电流驱动能力,也就是带载能力非常有限,所以我们在每相的控制线上都增加一个三极管来提高驱动能力。
由图中可以看出,若要使 A 相导通,则必须是Q2 导通,此时 A 相也就是橙色线就相当于接地了,于是A 相绕组导通,此时单片机P1 口低4位应输出0b1110,即0xE;如要A、B 相同时导通,那么就是Q2、Q3 导通,P1 口低4位应输出0b1100,即0xC,依此类。
4-四相五线减速步进电机28BYJ-48原理仿真及演示程序(解读
减速步进电机28BYJ-48的原理如下图:中间部分是转子,由一个永磁体组成,边上的是定子绕组。
当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。
依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。
而改变磁场切换的时间间隔,就可以控制步进电机的速度了,这就是步进电机的驱动原理。
由于步进电机的驱动电流较大,单片机不能直接驱动,一般都是使用ULN2003达林顿阵列驱动,当然,使用下拉电阻或三极管也是可以驱动的,只不过效果不是那么好,产生的扭力比较小。
参考:减速步进电机28BYJ-48最简单的驱动方法28BYJ-48的内部结构请见这里下面是一个步进电机的演示程序:#include <reg52.h>sbit key=P2^0; //按键控制步进电机的方向unsigned char speed=5; //步进电机的转速//八拍方式驱动,顺序为A AB B BC C CD D DAunsigned char codeclockWise[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x0d};void delay(unsigned char z){unsigned char x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}void main(){unsigned char i;while(1){for(i=0;i<8;i++){if(key) //按键未按下,正转{P0=clockWise[i];delay(speed);}else //按键按下,反转{P0=clockWise[8-i];delay(speed);}}}}Proteus仿真图及Keil源文件下载:/filebox/down/fc/79bf41133cc59eaf2ca9531a5382557 b/835705302/blog/item/7d9eb519397d7e1d34fa4148.html。
STC89C52RC步进电机控制程序
while(x--);
}
void main()
{
unsigned int i;
while(1)
{
if(k1==0)
{
delay_ms(100);
if(k1==0)//按下不动,正转
{
for(i=0;i<8;i++)
{
set_IO(ZZ[i]);
delay_ms(200);
}
}
}
if(k2==0)
{
unsigned char code FZ[]= {0x06, 0x07, 0x03, 0x0B, 0x09, 0x0D, 0x0C, 0x0E};//反转
//定义步进电机四相接口
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
//定义按键
sbit k1=P3^2;
sbit k2=P3^3;
//将步进电机四个口设置为一组I/O,只占用四个I/O口
void set_IO(unsigned char n)
{
D1 = n & 1;
D2 = n >> 1 & 1;
D3 = n >> 2 & 1;
D4 = n >> 3 & 1;
}
void delay_ms(unsigned int x)//延时毫秒级
stc89c52rc步进电机控制程序plc控制步进电机程序步进电机的控制程序pwm控制步进电机程序步进电机控制器单片机控制步进电机步进电机控制步进电机驱动程序plc控制步进电机步进电机的控制方法
四相五线步进电机控制程序。
STC89C52单片机控制28byj-48步进电机正反转变速
STC89C52单片机控制28byj-48型步进电机正反转、加减速C语言编写。
在网上找了好久,都没找到合适的,无奈之下,只能用自己写写了。
写的不好,大家勿喷。
主要实现功能,正反转,加减速,暂停。
晚上在宿舍用手机拍的,手机不好,光线也不好。
拍的更不好。
用的是LUN2003驱动板。
刚接触电机,也不是很了解。
看到网上好多一样的文章,所以一些原理就不讲了,直接上源码了。
因为初学,很多要改进的地方。
如果你有更高效率的算法,请联系我QQ394511647,一起讨论,谢谢。
定义的旋转相序为双相八拍。
在代码中都标出来了。
我都测试过了,是可以加减速的,就是加减速还不够完善。
希望大家改改。
源码:/*****************************************************************************/ #include <reg52.h>#define uint unsigned int#define uchar unsigned charuchar code ccw[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//逆时针uchar code cw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//顺时针uchar a,temp;sbit K1 = P1^4;//逆时针sbit K2 = P1^5;//顺时针sbit K3 = P1^6;//暂停sbit K4 = P3^2;//加速sbit K5 = P3^3;//减速void SETP_MOTOR_cw(uchar n);//顺时针void SETP_MOTOR_ccw(uchar n);//逆时针void DelayMS();//延时void speed();//变速void fddelay(uchar b);//防抖uchar N = 192;//外圈数跑3圈(减速比为1:64)uchar num;void main(){while(1){if(K1 == 0){SETP_MOTOR_ccw(N);if(K3 == 0) break;}else if(K2 == 0){SETP_MOTOR_cw(N);if(K3 == 0) break;}else{P0 = 0x00;}}}void DelayMS()//延时{uchar i;uchar ms;ms = num;while(ms--){for(i=0;i<115;i++);}}void fddelay(uchar b)//防抖{uchar i;while(b--){for(i=0; i<120; i++);}}void SETP_MOTOR_ccw(uchar n)//逆时针{uint i,j;num = 2;for(i=0;i<8*n;i++){speed();for(j=0;j<8;j++){if(K3 == 0) break;P0 = ccw[j];if(K2==0){SETP_MOTOR_cw(N);return;}DelayMS();}}}void SETP_MOTOR_cw(uchar n)//顺时针{uint i,j;num = 2;for(i=0;i<8*n;i++){speed();for(j=0;j<8;j++){if(K3 == 0) break;P0 = cw[j];if(K1==0){SETP_MOTOR_ccw(N);return;}DelayMS();}}}void speed()//变速{while(K4==0){fddelay(5);if(K4==1) //这里是判断按键按下弹起来,然后执行num{num+=10;}}while(K5==0){fddelay(5);if(K5==1){num-=10;}}}/**************************************完*************************************/。
28byj48型步进电机的控制方法
28BYJ48型步进电机的控制方法2011-03-13 23:02:00|分类:单片机技术|举报|字号订阅前不久弄到一只28BYJ48型步进电机,没有资料,从网上查找,搜到一些资料,但按照网上介绍的程序实验,都没有成功。
后来根据资料的原理部分,试着自己编写了一段程序,经过多次实验调试,终于成功了。
哈哈,收获不小步进电机是一种将电脉冲转化为角位移的执行设备。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。
我们可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时我们可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
28BYJ48型步进电机是四相八拍电机,电压为DC5V~DC12V。
当对步进电机按一定顺序施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号使得步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A……),双(双相绕组通电)四拍(AB-BC-CD-DA-AB……),四相八拍(A-AB-B-BC-C-CD-D-DA-A……)。
本例是使用四相八拍驱动方式实现的。
下面是我写的C语言控制程序实现28BYJ48型步进电机正转五圈然后倒转五圈的效果://************************************************* *******************************//*标题:步进电机正反转演示程序 *//*文件:步进电机正反转演示.C *//*日期: 2011-3-13 *//*环境:使用自制单片机最小系统板测试通过 *//************************************************* *******************************//*描述: 28BYJ-48步进电机正反转控制 *//*电机使用端口:P1.0、P1.1、P1.2、P1.3 *//*单双八拍工作方式:A-AB-B-BC-C-CD-D-DA *//************************************************* *******************************#include <reg51.h>#include <intrins.h>//**********************正向旋转相序表*****************************unsigned char codeFFW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //**********************反向旋转相序表*****************************unsigned char codeREV[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //***********************延时子程序********************************void delay(unsigned int t){unsigned int k;while(t--){for(k=0; k<125; k++){}}}//**********************步进电机正转******************************void motor_ffw(unsigned int n) {unsigned char i;unsigned int j;for (j=0; j<8*64*n; j++){for (i=0; i<8; i++){P1 = FFW[i];delay(1);}}}//*********************步进电机反转******************************** void motor_rev(unsigned int n) {unsigned char i;unsigned int j;for (j=0; j<8*64*n; j++){for (i=0; i<8; i++){P1 = REV[i];delay(1);}}}//*************************主程序********************************* main(){while(1){motor_ffw(5); //电机正转5圈delay(1000);motor_rev(5); //电机反转5圈delay(1000);}}下面是赠送的几篇网络励志文章需要的便宜可以好好阅读下,不需要的朋友可以下载后编辑删除!!谢谢!!出路出路,走出去才有路“出路出路,走出去才有路。
基于STC89C52单片机红外遥控步进电机
项目名称:基于STC89C52单片机红外遥控步进电机一、摘要>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>二、关键词>>>>>>>>>>>>>>>>>>>>>>>>>>>>>三、STC89S52概述>>>>>>>>>>>>>>>>>>>>>>1.概述>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2.主要性能>>>>>>>>>>>>>>>>>>>>>>>>>>3.单片机引脚分布图>>>>>>>>>>>>>>>>>>>四、功能描述及分析>>>>>>>>>>>>>>>>>>>>>>五、软件描述>>>>>>>>>>>>>>>>>>>>>>>>>>>1.程序流程图>>>>>>>>>>>>>>>>>>>>>>>>2.判断编码电平流程图>>>>>>>>>>>>>>>>>六、操作说明>>>>>>>>>>>>>>>>>>>>>>>>>>>七、实施步骤>>>>>>>>>>>>>>>>>>>>>>>>>>>1.步骤>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2.PCB制作流程>>>>>>>>>>>>>>>>>>>>>>>3.原理图及电路分析>>>>>>>>>>>>>>>>>>>>八、项目制作原件清单>>>>>>>>>>>>>>>>>>>>九、项目程序>>>>>>>>>>>>>>>>>>>>>>>>>>>>十、毕业作品实物照>>>>>>>>>>>>>>>>>>>>>>> 十一、毕业设计总结>>>>>>>>>>>>>>>>>>>>>>>一、摘要随着我国工业化、信息化进程的高速发展,电子信息产业蓬勃发展,国内对单片机及其外围设备研究越来越深入,实用也越来越广泛。
51单片机C语言和汇编控制28BYJ48步进电机程序
void delay(void) //步进电机延时
{
int i=0;
for(i=0;i<30;i++);
}
void Delay(unsigned int t)
//最常用的延时函数,已经反复使用过
{
while(t--);
}
/************************************************************
P0=0x08; delay(); P0=0x04; delay(); P0=0x02; delay(); P0=0x01; delay(); break; case DOWNQUICK : P0=0x01; delay(); P0=0x02; delay(); P0=0x04; delay(); P0=0x08; delay(); break; }
P0=0xF3;//0011 delay();
P0=0xF6;//0110 delay(); }
}
}
C 语言程序 2: #include <reg51.h> #include <absacc.h> #define UPQUICK 25 #define DOWNQUICK 30
sbit P10=P2^0; sbit P11=P2^1; sbit P12=P2^2; sbit P13=P2^3;
{ for(n=0;n<20;n++) {P0=0xFC;//1100 delay();
P0=0xF6;//0110 delay();
P0=0xF3;//0011 delay();
P0=0xF9;//1001 delay(); }
基于STC89C52单片机的步进电机控制系统设计说明
电气与电子信息工程学院《单片机》课程设计报告题目:基于STC89C52单片机的步进电机控制系统设计专业班级:电气工程及其自动化学号:姓名:指导教师:设计时间:设计地点:单片机课程设计成绩评定表指导教师签字:2013 年 12 月日课程设计任务书2013~2014 学年第 1 学期专业班级:指导教师:工作部门:一、课程设计题目单片机课程设计二、课程设计内容(含技术指标)1.设计目的及要求(1)根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,完成仿真操作。
要求概念清楚、方案合理、方法正确、步骤完整;(2)熟悉、掌握各种外围接口电路芯片的工作原理和控制方法;(3)熟练使用单片机汇编语言或C51进行软件设计;(4)熟练使用Proteus、Keil软件进行仿真电路测试;(5)熟练使用Protel软件设计印刷电路板;(6)学会查阅有关参考资料和手册,并能正确选择有关元器件和参数;(7)编写设计说明书,参考毕业设计论文格式撰写设计报告。
2.设计内容(题目名称:基于STC89C52单片机的步进电机控制系统设计)步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。
控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,加速及减速等功能。
三、课程设计考核办法与成绩评定根据过程、报告、答辩等确定设计成绩,成绩分优、良、中、及格、不及格五等。
2013年11月一、方案论证1.1 设计任务及要求①以AT89C52芯片为核心,实现四线四相步进电机的正转、反转、加速以及减速功能。
基于单片机AT89C52的步进电机的控制器设计
2012届毕业生毕业设计说明书题目:基于单片机的步进电机的控制器设计院系名称:信息科学与工程学院专业班级:电子信息科学与技术学生姓名:学号:指导教师:教师职称:2012年月日毕业设计外文摘要Title The design of the control system ofStep—motorAbstractStepper motor control can be achieved in different ways, can be used early analog circuits, digital circuits or a combination of analog and digital circuit means. With the rapid development of science and technology in recent years, the application of SCM is a growing, while traditional control test drive rapid updates. This paper describes a core component of the AT89C52, as the signal generated by logic control and microcontroller technology and assembly language programming designed stepper motor control system, Start and stop of the stepping motor to handle the switch manually by people. In addition, this system also adds a stepper motor forward reverse, acceleration and deceleration, the screen display. Meanwhile, through software simulation in proteus, too can be seen that the approximation of the true effect of the simulation results.Keywords stepper motor microcontroller AT89C52 proteus simulation目次摘要 (2)Abstract (3)1 绪论 (5)1.1 课题研究的目的和意义 (5)1.2 国内外研究现状 (6)1.3 课题研究的主要内容和要求 (3)2 步进电机常见的控制方案论证 (8)2.1 基于电子电路控制 ....................................................... 错误!未定义书签。
步进电机的控制
基于STC89C52单片机的步进电机控制选题依据:3月15日参观工业展步进电机特点:①步进电机的角位移与输入脉冲数严格成正比,因此当它转一转后,没有累计误差,具有良好的跟随性。
②由步进电机与驱动电路组成的开环数控系统,既非常方便、廉价,也非常可靠。
同时,它也可以有角度反馈环节组成高性能的闭环数控系统。
③步进电机的动态响应快,易于启停、正反转及变速。
④速度可在相当宽的范围内平滑调节,低速下仍能保证获得很大的转矩,因此一般可以不用减速器而直接驱动负载。
⑤步进电机只能通过脉冲电源供电才能运行,它不能直接用交流电源或直流电源。
⑥步进电机自身的噪声和振动比较大,带惯性负载的能力强。
⑦工作原理:步进电机是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。
当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促使电机旋转的原因。
设计要求:实现功能如下:(1)控制步进电机实现启停、正转和反转;(2)控制步进电机转速;(3)实现对步进电机圈数的预置;(4)能够及时有效地对步进电机周围的温度进行控制(LED 亮与灭);(5)同步显示步进电机所转圈数及速度;(6)实时显示时间(万年历)(待定)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STC89C52单片机控制28byj-48型步进电机正反转、加减速
C语言编写。
在网上找了好久,都没找到合适的,无奈之下,只能用自己写写了。
写的不好,大家勿喷。
主要实现功能,正反转,加减速,暂停。
晚上在宿舍用手机拍的,手机不好,光线也不好。
拍的更不好。
用的是LUN2003驱动板。
刚接触电机,也不是很了解。
看到网上好多一样的文章,所以一些原理就不讲了,直接上源码了。
因为初学,很多要改进的地方。
如果你有更高效率的算法,请联系我QQ394511647,一起讨论,谢谢。
定义的旋转相序为双相八拍。
在代码中都标出来了。
我都测试过了,是可以加减速的,就是加减速还不够完善。
希望大家改改。
源码:
/*****************************************************************************/ #include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code ccw[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//逆时针
uchar code cw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//顺时针
uchar a,temp;
sbit K1 = P1^4;//逆时针
sbit K2 = P1^5;//顺时针
sbit K3 = P1^6;//暂停
sbit K4 = P3^2;//加速
sbit K5 = P3^3;//减速
void SETP_MOTOR_cw(uchar n);//顺时针
void SETP_MOTOR_ccw(uchar n);//逆时针
void DelayMS();//延时
void speed();//变速
void fddelay(uchar b);//防抖
uchar N = 192;//外圈数跑3圈(减速比为1:64)uchar num;
void main()
{
while(1)
{
if(K1 == 0)
{
SETP_MOTOR_ccw(N);
if(K3 == 0) break;
}
else if(K2 == 0)
{
SETP_MOTOR_cw(N);
if(K3 == 0) break;
}
else
{
P0 = 0x00;
}
}
}
void DelayMS()//延时
{
uchar i;
uchar ms;
ms = num;
while(ms--)
{
for(i=0;i<115;i++);
}
}
void fddelay(uchar b)//防抖
{
uchar i;
while(b--)
{
for(i=0; i<120; i++);
}
}
void SETP_MOTOR_ccw(uchar n)//逆时针{
uint i,j;
num = 2;
for(i=0;i<8*n;i++)
{
speed();
for(j=0;j<8;j++)
{
if(K3 == 0) break;
P0 = ccw[j];
if(K2==0)
{
SETP_MOTOR_cw(N);
return;
}
DelayMS();
}
}
}
void SETP_MOTOR_cw(uchar n)//顺时针{
uint i,j;
num = 2;
for(i=0;i<8*n;i++)
{
speed();
for(j=0;j<8;j++)
{
if(K3 == 0) break;
P0 = cw[j];
if(K1==0)
{
SETP_MOTOR_ccw(N);
return;
}
DelayMS();
}
}
}
void speed()//变速
{
while(K4==0)
{
fddelay(5);
if(K4==1) //这里是判断按键按下弹起来,然后执行num
{
num+=10;
}
}
while(K5==0)
{
fddelay(5);
if(K5==1)
{
num-=10;
}
}
}
/**************************************完*************************************/。