导航:首页 > 编程知识 > 同步步进电机如何编程

同步步进电机如何编程

发布时间:2024-05-18 15:24:53

⑴ 姹傚ぇ绁炲府蹇欑紪鍐欏崟鐗囨満鎺у埗姝ヨ繘鐢垫満C璇瑷缂栫▼锛屽浘鐗囧備笅锛孉T89C51鍗曠墖鏈哄洓鐩稿叓鎷嶏紝ULN2004椹卞姩鑺鐗

#include "reg52.h"
//Motor
sbit A = P2^0; //瀹氫箟绠¤剼
sbit b = P2^1;
sbit C = P2^2;
sbit D = P2^3;

///////////////////////////////////////
//姝ヨ繘鐢垫満椹卞姩
unsigned char MotorStep=0;
unsigned int MotorTimer = 0;
unsigned int MotorDelay,Speed=1,TIM,CT;

#define speed 8 // 璋冩暣閫熷害 鏁板间笉瑕佽剧殑澶浣 浣庝簡浼氬紩璧烽渿鍔ㄣ

/*****************************************************
* 鍒濆嬪寲椹杈 *
******************************************************/
void InitMotor()
{
A = 1;
b = 1;
C = 1;
D = 1;
}

void SetMotor()
{
// if(Speed == 0) return;

MotorDelay=Speed; //璋冩暣閫熷害
switch(MotorStep)
{
case 0:
if(TIM) // A
{
A = 0; //0xf1
b = 1;
C = 1;
D = 1;
MotorStep = 1;
TIM=0;
}
break;

case 1: // AB
if(TIM)
{
A = 0; //0xf3
b = 0;
C = 1;
D = 1;
MotorStep = 2;
TIM=0;
}
break;

case 2: //B
if(TIM)
{

A = 1;
b = 0; //0xf2
C = 1;
D = 1;

MotorStep = 3;
TIM=0;
}
break;

case 3: //BC
if(TIM)
{
A = 1;
b = 0; //0xf6
C = 0;
D = 1;
MotorStep = 4;
TIM=0;
}
break;
case 4: //C
if(TIM)
{
A = 1;
b = 1; //0xf4
C = 0;
D = 1;
MotorStep = 5;
TIM=0;
}
break;
case 5: //CD
if(TIM)
{
A = 1;
b = 1; //0xfc
C = 0;
D = 0;
MotorStep = 6;
TIM=0;
}
break;
case 6: //D
if(TIM)
{
A = 1;
b = 1; //0xf8
C = 1;
D = 0;
MotorStep = 7;
TIM=0;
}
break;
case 7: //DA
if(TIM)
{
A = 0;
b = 1; //0xf9
C = 1;
D = 0;
MotorStep = 0;
TIM=0;
}
break;

}

}

void system_Ini()
{
TMOD|= 0x11;
TH0=0xDC; //11.0592M
TL0=0x00;
IE = 0x8A;
TR0 = 1;

}

main()
{ system_Ini();
InitMotor();
while(1)
{
SetMotor();

}

}

/************************************************
* *
* 瀹氭椂涓鏂寤舵椂 *
************************************************/
void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;

if( CT++==speed)
{TIM=1;
CT=0;
}
}

⑵ 步进电机怎么编写控制程序

步进电机编程一般有几点。细分数,结构比例,加速度,减速度。最大频率限值,最小起跳频率。
1:原点。
2:速度,距离(相对位置,绝对位置)。速度模式
3:停止。等待
如果多轴的或开关,传感器比较多的位置控制就比较复杂了。有很多变量和跳转。这取决于控制器功能和底层程序开发和运用。
根据你问的情况,应该是写上层程序。中层都已经做好了,写程序需要对使用的芯片和代码非常熟悉,逻辑关系比较了解,运动结构也有一定的认知。

⑶ 关于51单片机控制步进电机编程(c语言),求助

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharkey_l,key,i;

ucharcodetemp1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

ucharcodetemp2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};

ucharcodeaa[16]=":";

ucharcodesmg[]="";

sbite=P2^6;

sbitrs=P2^4;

sbitrw=P2^5;

voiddelay(inttt)

{

while(tt--);

}

voidw_cmd(uchardd)

{

rs=0;

rw=0;

e=0;

delay(50);

P0=dd;

e=1;

delay(50);

e=0;

delay(50);

}

voidw_dat(uchardd)

{

rs=1;

rw=0;

e=0;

delay(50);

P0=dd;

e=1;

delay(50);

e=0;

}

voidinit(ucharsmg4[],uchartime[])

{

w_cmd(0x38);

delay(2000);

w_cmd(0x38);

delay(500);

w_cmd(0x38);//注意顺序,设置工作方式,显示模式设置

delay(500);

w_cmd(0x08);//注意顺序,关闭显示

w_cmd(0x01);//清屏

w_cmd(0x07);//光标·画面滚动模式设置

w_cmd(0x0c);//显示及光标模式设置

w_cmd(0x80);//

for(i=0;i<16;i++)

w_dat(time[i]);

w_cmd(0x80+0X40);

for(i=0;i<16;i++)

w_dat(smg4[i]);

}

voidTb(ucharsmg[],ucharn,uchars,ucharl,uchard)

{

unsignedcharm;

w_cmd(0x82);

for(m=n;m<s;m++)

w_dat(smg[m]);

w_cmd(0x80+0X42);

for(m=l;m<d;m++)

w_dat(smg[m]);

}

voidmain()

{

init(aa,aa);

while(1)

{

P1=0xf0;

key_l=P1;

if(key_l!=0xf0)

{

delay(100);

if(key_l!=0xf0)

{

P1=key_l|0x0f;

key=P1;

}

}

switch(key)

{

case0xee:Tb(smg,0,10,11,21);

for(i=0;i<8;i++)

{

P2=temp1[i];

delay(500);

}

break;

case0xde:Tb(smg,0,10,19,29);

for(i=0;i<8;i++)

{

P2=temp1[i];

delay(300);

}

break;

case0xbe:Tb(smg,0,10,30,40);

for(i=0;i<8;i++)

{

P2=temp1[i];

delay(100);

}

break;

case0x7e:P2=0xff;Tb(smg,0,10,39,49);break;

case0xed:Tb(smg,50,60,11,21);

for(i=0;i<8;i++)

{

P2=temp2[i];

delay(200);

}

break;

case0xdd:Tb(smg,50,60,19,29);

for(i=0;i<8;i++)

{

P2=temp2[i];

delay(120);

}

break;

case0xbd:P2=0xff;Tb(smg,50,60,40,50);break;

}

}

}

⑷ 三菱PLC控制步进电机的最简单的程序

M206:正转

M207:反转

Y0:脉冲输出

Y1:反转信号

D4200:频率(用于控制速度,数据来源于触摸屏)

K99999999:脉冲数量

K100:加速时间

向左转|向右转

如图,这个就是一个步进电机的正反转的运行,Y0接步进驱动器的脉冲,Y1接步进驱动器的方向,M0为ON时正转,M1为ON时反转,D0是脉冲的频率,D1是脉冲的个数。

移动速度和脉冲频率有关,在细分数一定的条件下,频率越高速度越快,行走的距离和脉冲个数有关,脉冲个数越多,行走距离越长,(在三菱这个指令中,脉冲个数为0时,是一直运行,相当于无限个数),具体的移动速度和行走距离得根据你的设置(频率,细分数,脉冲个数等)和硬件(包括步进电机的步距角,丝杆的丝距,齿轮组的齿轮比,齿轮带的传送比等)来调节。

⑸ 用c语言程序实现步进电机的正反转加减速的编程

内容:1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/

#include <reg52.h>

bit Flag;//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{

unsigned char i;

EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开

while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);

Flag=!Flag; //s3按下触发一次,标志位取反

}

⑹ 三菱 步进电机 PLC编程

PLC控制步进电机的实例(图与程序)

⑺ 给位大神,控制步进电机自动工作,不用plc和单片机。最好用电脑控制或者控制器。该如何控制,如何编程

这个问题好解决,可以使用表控TPC8-8TD的控制器来控制步进电机,特点就是简单、易行。使用表格设置方式,用鼠标在表格上设置,无需专业技术。这个型号的表控是8路输入8路输出的,具有4路脉冲输出端,最多可以同时控制4个步进电机。还有个特点是:不仅可以控制步进电机,还可以同时控制气缸、交流电机等更多的负载同时工作。

下图是功能设置表的图片:

上图是控制单台步进电机的接线示意图,表控由Y1输出脉冲信号,由Y输出方向信号到步进电机驱动器。还有2轴和4轴的接线图这里从略,需要的可以到网上下载。

阅读全文

与同步步进电机如何编程相关的资料

热点内容
加密狗检测工具下载 浏览:889
智慧灯app怎么使用 浏览:617
tcl手机升级程序 浏览:188
跳出了icloud密码重置 浏览:110
哪里能查信用卡数据 浏览:191
结婚请柬哪个app靠谱 浏览:932
qq无法阅读pdf文件 浏览:284
ai导出pdf文件有轮廓线 浏览:819
刷机时数据线插台式电脑哪里 浏览:432
手机qq怎样隐身登陆 浏览:339
cdelete导致程序崩溃 浏览:783
小米4手机设置铃声在哪个文件夹里 浏览:184
linuxnet论坛源码下载 浏览:241
手机修改文件后缀名 浏览:32
jsvideofullscreen 浏览:120
梦幻模拟战1修改代码 浏览:928
cad有nc编程功能吗怎么用 浏览:573
js调用外部js 浏览:273
苹果手机照片后期软件 浏览:333
linux自动备份oracle数据库 浏览:447

友情链接