MP28GA步进电机C语言测试程序
步进电机控制设计(C程序设计语言)
接口课程设计任务书学生姓名专业班级指导老师工作单位计算机学院题目:步进电机控制设计(C程序设计语言)一、内容:在MIFID微机实验台上以双八拍的方式控制步进电机运行,用按钮控制启动和停止。
接口硬件电路图见说明书。
二、要求:1、控制步进电机运行的相序表存储在文件中。
2、按下SW1按钮,从文件中取出一个相序数据,从并行接口8255A的PA口输出,使步进电机运行。
相序数据在CRT上显示。
按下SW2按钮,步进电机运行停止。
3、SW1按钮的数字量由PC1输入,SW2按钮的数字量由PC0输入,4、设计程序运行时的界面友好。
三、进度安排:指导教师签名:年月日系主任(责任教师)签名:年月日一.设计目的和内容目的:通过步进电机控制实验,学习并行接口电路及其控制程序的设计原理与方法。
内容:在MIFID微机实验台上以双八拍的方式控制步进电机运行,用按钮控制启动和停止。
接口硬件电路图见说明书。
要求:1、控制步进电机运行的相序表存储在文件中。
2、按下SW1按钮,从文件中取出一个相序数据,从并行接口8255A的PA口输出,使步进电机运行。
相序数据在CRT上显示。
按下SW2按钮,步进电机运行停止。
3、SW1按钮的数字量由PC1输入,SW2按钮的数字量由PC0输入,4、设计程序运行时的界面友好。
二、实验预备知识可编程并行接口8255是一个具有两个8位(A端口和B端口)和两个4位(C端口)并行I/O端口的芯片。
在与外设进行数据传输时,把A、B、C3个端口分为两组。
A组由A端口和C端口的高4位组成。
B组由B端口和C端口的低4位组成。
为了满足多种数据传输的要求,可以通过对8255的编程用方式控制字设置3种工作方式来实现。
这3种工作方式为:方式0(基本I/O工作方式);方式1(选通I/O工作方式);方式2(双向传送方式)。
8255的控制字有工作方式控制字和C端口的位置位/复位控制字。
工作方式控制字是必须要预先设定的,C端口的位置位/复位控制字可视需要而定。
步进电机驱动原理及应用程序
∙ULN2003步进电机驱动原理及应用程序∙发布时间:2011-5-9 10:38:11 | 来源: 第一价值网| 查看: 1191次| 收藏| 打印TAG:ULN2003 步进电机驱动 ULN2003原理 ULN2003应用程序步进电机的基本原理我就不说了,百度能找出一大片来,,简而言之就是能够通过输入脉冲的个数,确定旋转的角位移,一般用他来控制小车轮子的偏移角度等。
来看看步进电机:型号为MP28GA的步进电机(左)和ULN2003APG的驱动芯片(右),具体参数如下:电压DC.V电阻(25°C)Ω步距角°减速比牵入转矩mN.m自定位转矩mN.m5 50 5.625/64 1/64 ≥40≥34.3空载牵入频率Hz空载牵出频率Hz绝缘电阻DC.500V绝缘介电强度AC.600V.1mA.1S温升K噪音dB(A)≥500≥900≥50MΩ无击穿或飞弧<40 <40 MP28GA的步进电机相关参数接线端导线分配顺序序号颜色 1 2 3 4 5 6 7 8 5 红 + + + + + + + + 4 橙 - - - 3 黄 - - -2 粉- - -1 蓝 - - -ULN2003APG的驱动芯片驱动原理图如下所示:FOSC = 12MHz说得通俗uln2003相当于继电器的作用,例如7个继电器的一端连某电压[也即uln2003电源电压](<50)在一起,而另一端作为则作为输出,又好如一个二极管,只不过因电路集成功能的因素,输出的电压等同于uln2003的电压罢了,常用于步进电机;--------------------------------------------------; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!; 本步进电机步进角为5.625度 . 一圈360 度, 需要64个脉冲完成!!!;--------------------------------------------------; A组线圈对应P2.4; B组线圈对应P2.5; C组线圈对应P2.6; D组线圈对应P2.7; 正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转5.625度);------------------------------------------------ORG 0000HLJMP MAINORG 0100HMAIN:;----------------------------正转MOV R3,#192 ;正转3圈共192个脉冲START:MOV R0,#00HSTART1:MOV P2,#00HMOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ START ;对A的判断,当A=0时则转到START MOV P2,ALCALL DELAYINC R0DJNZ R3,START1MOV P2,#00HLCALL DELAY1;-----------------------------反转MOV R3,#64 ;反转一圈共64个脉冲START2:MOV P2,#00HMOV R0,#05START3:MOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ START2MOV P2,ACALL DELAYINC R0DJNZ R3,START3MOV P2,#00HLCALL DELAY1LJMP MAIN;---------------------------转速控制DELAY: MOV R7,#40 ;步进电机的转速M3: MOV R6,#248DJNZ R6,$DJNZ R7,M3RET;---------------------------延时控制DELAY1: MOV R4,#20 ;2S 延时子程序DEL2: MOV R3,#200DEL3: MOV R2,#250DJNZ R2,$DJNZ R3,DEL3DJNZ R4,DEL2RET;---------------------------正反转表TABLE:DB 30H,60H,0C0H,90H; 正转表DB 00; 正转结束DB 30H,90H,0C0H,60H; 反转表DB 00; 反转结束END/**************************************//*杭州电子&计算机工作室*//* *//*步进电机演示程*//*目标器件:AT89S51 *//*晶振:11.0592MHZ *//*编译环境:Keil 7.50A *//****************************//*************包含头文件*******/#include/**************端口定义****************/ sbit key = P1^4;/*********************************函数功能:延时子程序入口参数:出口参数:*****************************************/ void delay(void){int k;for(k=0;k<500;k++);}/*************************************函数功能:主程序入口参数:出口参数:********************************/void main(){P1=0x00; //输出全高key=1; //按键置输入状态while(1) //主循环{if(key==1) //无键按下正转{P1=0xFC; //1100delay();P1=0xF6; //0110delay();P1=0xF3; //0011delay();P1=0xF9; //1001delay();}else //有键按下反转{P1=0xFC; //1100delay();P1=0xF9; //1001delay();P1=0xF3; //0011delay();P1=0xF6; //0110delay();}}}1.步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
c语言实现单片机控制步进电机加减速源程序
C 语言实现单片机控制步进电机加减速源程序1. 引言在现代工业控制系统中,步进电机作为一种常见的执行元件,广泛应用于各种自动化设备中。
而作为一种常见的嵌入式软件开发语言,C 语言在单片机控制步进电机的加减速过程中具有重要的作用。
本文将从单片机控制步进电机的加减速原理入手,结合 C 语言的编程技巧,介绍如何实现单片机控制步进电机的加减速源程序。
2. 单片机控制步进电机的加减速原理步进电机是一种能够精确控制角度的电机,它通过控制每个步骤的脉冲数来实现旋转。
在单片机控制步进电机的加减速过程中,需要考虑步进电机的加速阶段、匀速阶段和减速阶段。
在加速阶段,需要逐渐增加脉冲的频率,使步进电机的转速逐渐增加;在匀速阶段,需要保持恒定的脉冲频率,使步进电机以匀速旋转;在减速阶段,需要逐渐减小脉冲的频率,使步进电机的转速逐渐减小。
这一过程需要通过单片机的定时器和输出控制来实现。
3. C 语言实现步进电机加减速的源程序在 C 语言中,可以通过操作单片机的 GPIO 来控制步进电机的旋转。
在编写源程序时,需要使用单片机的定时器模块来生成脉冲信号,以控制步进电机的旋转角度和速度。
以下是一个简单的 C 语言源程序,用于实现步进电机的加减速控制:```c#include <reg52.h>void main() {// 初始化定时器// 设置脉冲频率,控制步进电机的加减速过程// 控制步进电机的方向// 控制步进电机的启停}```4. 总结与回顾通过本文的介绍,我们了解了单片机控制步进电机的加减速原理和 C 语言实现步进电机加减速源程序的基本思路。
掌握这些知识之后,我们可以更灵活地应用在实际的嵌入式系统开发中。
在实际项目中,我们还可以根据具体的步进电机型号和控制要求,进一步优化 C 语言源程序,实现更加精准和稳定的步进电机控制。
希望本文能为读者在单片机控制步进电机方面的学习和应用提供一定的帮助。
5. 个人观点与理解在我看来,掌握 C 语言实现单片机控制步进电机加减速源程序的技术是非常重要的。
步进电机控制程序(c语言51单片机)
// pri_dj = Pme );
if( i == set_pwm_width ) { P1 = 0xff; i = 0; one _round_flg = 0; while ( !one_round_flg & key_puse );}
if(!key_puse) { delay(4ms); if(!key_puse) break; }
while ( key_puse & key_clear ); delay ( 8ms );
if ( !key_clear ) { round_num = 0; display(); }
if ( !key_puse ) break; }
while( !key_puse ); delay(8ms);
while( !key_puse ); }
set_display_num(); for(i = 0; i < LEDLen ; i ++){
P0 = 0xf0; P0 = P0 | LEDBuf[i] ; if(i==0) led_1000 = 0; //P0^4 if(i==1) led_100 = 0; //P0^5 if(i==2) led_10 = 0; //P0^6 if(i==3) led_1 = 0; //P0^7
delay ( 1ms ); tmp = (~(P2 | 0xF0)); P2 = 0x7F; // 0111 1111
delay ( 1ms ); tmp = (~(P2 | 0xF0)) * 10 + tmp; set_round_num = set_round_num + tmp * 100; set_round_num = set_round_num * Chilun_Num;
步进电机驱动电路+C语言驱动程序共5页word资料
/*********兰州交通大学电子电工实验中心*********/ /*******************2009-8-2********************/ #include"reg51.h"#include"intrins.h"#include"math.h"#include"absacc.h"#define PORTA XBYTE[0x8500]#define PORTB XBYTE[0x8502]#define PORTC XBYTE[0x8504]#define PORTC0 XBYTE[0x8506]#define nop _nop_()#define Right_RUN 1#define Left_RUN 0unsigned long RunSpeed=76;unsigned char RUNState=1;sbit RS=P2^0;sbit RW=P2^1;sbit E=P2^2;sbit P17=P1^7;bit flag=0;unsigned char xx[]="speed(n/min):";unsigned char SD[]="76";char state[2][14]={"direction:cw","direction:ccw"}; unsigned char FLG,INMA=0;unsigned char t,s=0x01;unsigned int a;main()void OPJIAN();unsigned char JIAN();unsigned char JIANZHI();void speed();void SHOW_LCD();void show_state();void write1();void writ2(unsigned char i);void delay();void time();void busy();unsigned char i;i=0x90;PORTC0=i;i=0x01;TMOD=i;t=0x10;a=0x0f;TH0=0x10;TL0=0x0f;FLG=INMA;SHOW_LCD();show_state();EA=1;ET0=1;TR0=1;while(1)i=JIAN();if(i!=0)time();time();i=JIAN();if(i!=0)INMA=JIANZHI();OPJIAN();time();if(FLG!=INMA||flag==1){ FLG=INMA;SHOW_LCD();show_state();flag=0;void SHOW_LCD()/*lcd设置程序*/ P1=0x38;write1();delay();P1=0x38;write1();delay();P1=0x38;write1();delay();P1=0x01;write1();delay();P1=0x0f;write1();delay();P1=0x06;write1();delay();P1=0x0c;write1();void show_state()/*状态显示程序*/ unsigned char i=0;P1=0x80;write1();while(xx[i]!='\0')writ2(xx[i]);i++;delay();i=0;while(SD[i]!='\0')writ2(SD[i]);delay();i++;P1=0xc0;write1();i=0;if(RUNState==Right_RUN)while(state[0][i]!='\0')writ2(state[0][i]);i++;elseif(RUNState==Left_RUN)while(state[1][i]!='\0')writ2(state[1][i]);i++;void write1()/*lcd写控制字*/RS=0;RW=0;E=0;busy();E=1;void writ2( unsigned char i)/*lcd写数据*/ { P1=i;RS=1;RW=0;E=0;busy();E=1;void delay()/*延时程序*/unsigned char i;for(i=0;i<100;i++)i=i;void time(){ unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<30;j++)j=j;void busy() //判断LCD是否忙doP1=0xff;RS=0;RW=1;E=0;nop;E=1;}while(P17==1);unsigned char JIAN()/*判断是否有键按下*/ unsigned char i,j;i=0xff;PORTA=i;time();i=0x00;PORTB=i;j=PORTA;j=~j;j=j&(0x0f);return j;unsigned char JIANZHI()/*读键值程序*/unsigned i,j,d,k,m=1;i=0xfe;k=0x01;doPORTB=i;j=PORTA;m=j&(0x01);if(m==0)d=k/2;elsem=j&(0x02);if(m==0)d=k/2+4;elsem=j&(0x04);if(m==0)d=k/2+8;elsem=j&(0x08);if(m==0)d=k/2+12;k=k+2;i=i<<1;i=i|(0x01);}while(m!=0);return d;void OPJIAN() /* 键值处理程序*/switch(INMA)case 0x08: {RUNState=Right_RUN;s=0xf7;}break;case 0x09: {RUNState=Left_RUN;s=0x01;}break;case 0x0b: {flag=1;t=t-2;RunSpeed=5000000/(65536-t*256-a);speed();}break;case 0x0f: {flag=1;t=t+2;RunSpeed=5000000/(65536-t*256-a);speed();}void speed()/*速度处理程序*/unsigned char i=0;SD[0]=RunSpeed/100+48;SD[1]=RunSpeed%100/10+48;SD[2]=RunSpeed%10+48;void time1(void) interrupt 1 using 2TR0=0;PORTC=s;if(RUNState==0)s=(s<<1);if(s==0x10)s=0x01;elses=s>>1;if(s==0x0f)s=0xf7;TH0=t;TL0=a;TR0=1;。
C51单片机实现128细分步进电机驱动程序
Quardrant0, 229, 112,
Quardrant0, 228, 115,
#define PWM2disable(); CCAPM2&=0xBD; //停止P1.5引脚输出PWM
#define PWM3disable(); CCAPM3&=0xBD; //停止P1.6引脚输出PWM
#define PWM4disable(); CCAPM4&=0xBD; //停止P1.7引脚输出PWM
#define MotorPowerOff 0x03 //电机掉电
//定义细分表结构
typedef struct tagSubdivideTable{
unsigned char mQuardrant; //象限0-3
#define PWM4enable(); CCAPM4|=0x42; //配置P1.7引脚为PWM输出
#define PWM0disable(); CCAPM0&=0xBD; //停止P1.3引脚输出PWM
#define PWM1disable(); CCAPM1&=0xBD; //停止P1.4引脚输出PWM
#define CCAP3G 0XFD
#define CCAP4G 0XFE
#define CCAP5G 0XFF
#define CCAP0L 0XEA
#define CCAP1L 0XEB
#define CCAO2L 0XEC
#define CCAP3L 0XED
}WorkInformation;
sbit PhaseA = 0X90^4
sbit PhaseB = 0X90^5
C语言控制直流电机步进电机
{
unsigned int i;
for(; t > 0; t--)
{
for(i = 0; i < 125; i++); //1ms
}
}
/*************************************************************************************/
#endif
/***********************************************************************/
/***********************************************************************/
}
//**********************//
//控制驱动芯片函数
//**********************//
void execute_motor()
{
switch(motor_change_mank)
{
case 0: //刹停标志位
{
IN1 = 1;
IN2 = 1;
ENA = 1;
}break;
case 1://正转标志位
{
IN1 = 1;
IN2 = 0;
ENA = 1;
}break;
case 2: //反转标志位
{
IN1 = 0;
IN2 = 1;
ENA = 1;
}break;
default:break;
}
}
//**********************//
步进电机实验C语言程序
步进电机转动测试程序
**********************************************************************************/
lzj781219参考设计材料包含项目源代码屏幕录像指导项目运行截图项目设计说明书任务书报告书以及文献参考翻译等完整的设计文件及源代码资料请联系68661508索要步进电机的驱动信号必须为脉冲信号
/******************************步进电机的驱动*************************************
uchar code table2[]={0x03,0x09,0x0c,0x06}; /*反转表*/
#define motor P0
void delay(uchar ms) /*延时*/
{
uchar j;
while(ms--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
uchar i,j;
/*头文件*/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define nop() _nop_()
uchar code table1[]={0x03,0x06,0x0c,0x09}; /*正转表*/
C语言测控系统程序设计-步进电机实验报告
C语言测控系统程序设计步进电机控制实验报告实验的目的:1.掌握计算机并行接口的工作原理与使用方法。
2.了解步近电机的工作原理与步进电机驱动器的使用。
3.学习控制步进电机位置、速度的实时软件设计。
实验要求:1.步进电机向某一方向转4周,然后再向另一方向转2周。
注意观察是否回到原来的起始位置(旋转结束后旋钮的指向是否停在原来位置)。
2.提高步进电机转速,旋转5周。
注意观察是否出现失步现象估计步进电机的带载启动频率。
*3.编写“升速-恒速-减速”控制程序。
起始频率应低于步进电机的带载启动频,恒速运行时的频率应高于步进电机的带载启动频。
整个运行过程应是整圈数,注意观察是否有振荡和丢步现象。
程序清单和注释:实验要求一的程序:#include <dos.h>#include <stdio.h>void delay(unsigned int m){unsigned int i,j,z;for(i=0;i<10000;i++)for(j=0;j<10;j++)for(z=0;z<m;z++);}void plus(int m){outportb(0x378,0x01); delay(m);outportb(0x378,0x00); delay(m);}void minus(int m){outportb(0x378,0x02); delay(m);outportb(0x378,0x03); delay(m);}void main(){long n;for(n=0;n<6400;n++) {plus(20);}for(n=0;n<3200;n++) {minus(20);}}实验要求二的程序:void main(){long n;for(n=0;n<8000;n++){plus(10);}}实验要求三的程序:void main(){long n;int m=25;for(n=0;n<4800;n++){plus(m);if(n%480==0)m=m-2;}for(n=0;n<3200;n++){plus(m);}for(n=0;n<4800;n++){m=m+2;if(n%480==0)m=m+2; }}。
步进电机调试程序
三相六拍//四相八拍#include <reg52.h>#definde uchar unsigned charuchar code corotation[3]= {0x01,0x03,0x02,0x06,0x04,0x05};//电机正转uchar code rollback[3]= {0x05,0x04,0x06,0x02,0x03,0x01};//电机反转unsigned code corotation [4]={0x8,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; unsigned code rollback []={0x8,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};unchar key;void delay(unchar a) //延时子程序{unchar i,j;for(i=0;i<a;i++)for(j=0;j<200;j++);}void rotate(uchar temp[],uchar num ) //转动子程序{uchar i;while(1){p1=0xF0|temp[i]; //取其中的一步送P1口delay(10)i++;if(i==num){i=0}else{i=i;}if((P1&0xF0)!=0xF0) //若有按键按下,则返回主程序reture;}}void main(){while(1){key=P1&0xF0; //提取按键信息if(key!= &0xF0) //查询是否有键按下,若没有则继续查询{delay(1) //延时消抖if(key==(P1&0xF0)) //确认有效键按下{switch(key){case 0x70:rotate(corotation,3);break; //三拍方式正向转动case 0xB0:rotate(rollback,3);break; //三拍方式反向转动 default:break;}}}}}#include <reg52.h>#definde uchar unsigned charuchar code corotation[3]= {0x01,0x03,0x02,0x06,0x04,0x05};//电机正转uchar code rollback[3]= {0x05,0x04,0x06,0x02,0x03,0x01};//电机反转sbit key01=P3^4;sbit key02=P3^6;sbit key03=P3^7;void delay(unchar a) //延时子程序{unchar i,j;for(i=0;i<a;i++)for(j=0;j<200;j++);}void rotate(uchar temp[],uchar num ) //转动子程序{uchar i;while(1){P3=0xF0|temp[i]; //取其中的一步送P1口delay(10)i++;if(i==num){i=0}else{i=i;}if((P3&0xF0)!=0xF0) //若有按键按下,则返回主程序reture;}}void main(){While(1){if(key01=1)rotate(corotation,3);if(key02=1)rotate(rollback,3);if(key03=1)break;}。
298模块步进电机测试程序
//***************************************************************************** *************//// 程序名称:28BYJ-48步进电机测试程序// 功能描述:步进电机分别以单四拍、双四拍、八拍驱动方式驱动,正反转各360度// 单片机:AT89S52,FOSC=12MHz// 硬件连接:P1.0----INA// P1.1----INB// P1.2----INC// P1.3----IND// 驱动板的驱动电压和芯片逻辑供电电压均为5V;// 步进电机红线接+5V驱动电压,橙黄粉蓝分别接OUT1、OUT2、OUT3、OUT4,// 注意外接电源要与单片机共地。
// 维护记录:2012.11.2 双龙电子科技//***************************************************************************** ************//#include<reg52.h>#define uint unsigned int#define uchar unsigned charuint i,j,k;uint N=128;//主轴旋转度数设置,度数D=N*45/减速比,采用1:16减速比的步进电机,旋转度数即为D=128*45/16=360度uchar code single_pos[4]={0x07,0x0b,0x0d,0x0e};//单四拍驱动方式正转表D-C-B-Auchar code single_rev[4]={0x0e,0x0d,0x0b,0x07};//单四拍驱动方式反转表A-B-C-Duchar code double_pos[4]={0x06,0x03,0x09,0x0c};//双四拍驱动方式正转表AD-DC-CB-BA uchar code double_rev[4]={0x0c,0x09,0x03,0x06};//双四拍驱动方式反转表AB-BC-CD-DA uchar code eight_pos[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//八拍驱动方式正转表AD-D-DC-C-CB-B-BA-Auchar code eight_rev[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//八拍驱动方式反转表A-AB-B-BC-C-CD-D-DAvoid delay(uint z);void m_single_pos();void m_single_rev();void m_double_pos();void m_double_rev();void m_eight_pos();void m_eight_rev();void main(){while(1){m_single_pos();//单四拍驱动方式正转360度delay(200);m_single_rev();//单四拍驱动方式反转360度delay(200);m_double_pos();//双四拍驱动方式正转360度delay(200);m_double_rev();//双四拍驱动方式反转360度delay(200);m_eight_pos();//八拍驱动方式正转360度delay(200);m_eight_rev();//八拍驱动方式反转360度delay(200);}}/********************延时z毫秒**************************************/void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*******************单四拍驱动正转(N*45/16)度***********************/void m_single_pos(){for(k=0;k<N;k++){j=0;for(i=0;i<4;i++)//在单四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度{P1=single_pos[j];delay(5);//适当延时,保证转子转动时间,延时过短会丢拍j++;}}}/*******************单四拍驱动反转(N*45/16度)***********************/void m_single_rev(){for(k=0;k<N;k++){j=0;for(i=0;i<4;i++)//在单四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度{P1=single_rev[j];delay(5);j++;}}}/*******************双四拍驱动正转(N*45/16)度***********************/void m_double_pos(){for(k=0;k<N;k++){j=0;for(i=0;i<4;i++)//在双四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度{P1=double_pos[j];delay(8);j++;}}}/*******************双四拍驱动反转(N*45/16)度***********************/void m_double_rev(){for(k=0;k<N;k++){j=0;for(i=0;i<4;i++)//在双四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度{P1=double_rev[j];delay(8);j++;}}}/*******************八拍驱动正转(N*45/16)度***********************/void m_eight_pos(){for(k=0;k<N;k++){j=0;for(i=0;i<8;i++)//在八拍工作方式下,一个脉冲转子转动角度为5.625度,八拍共45度{P1=eight_pos[j];delay(2);j++;}}}/*******************八拍驱动反转(N*45/16)度***********************/void m_eight_rev(){for(k=0;k<N;k++){j=0;for(i=0;i<8;i++)//在八拍工作方式下,一个脉冲转子转动角度为5.625度,八拍共45度{P1=eight_rev[j];delay(2);j++;}}}。
MP28GA步进电机
MP28GA步进电机+ULN2003APG驱
动相关资料
前些日子在淘宝采购了一个步进电机,一直没用,丢在角落里面。
今天实验室停电了,在出租房里有些无聊翻出来研究了下。
步进电机的基本原理我就不说了,百度能找出一大片来,懒的百度的可以点我,简而言之就是能够通过输入脉冲的个数,确定旋转的角位移,一般用他来控制小车轮子的偏移角度等。
来看看我买到的步进电机:
如题目所示,我买到的是型号为MP28GA的步进电机(左)和ULN2003APG的驱动芯片(右),具体参数如下:
MP28GA的步进电机相关参数
步进电机相励磁的励磁顺序如下表所示:
ULN2003APG的驱动芯片驱动原理图如下所示:。