步进电机的程序该怎么写

步进电机的程序该怎么写,第1张

我没有写过PLC的,只写过单片机的哦...你网上搜下,蛮多的,主塌派铅要是理解了就好...步进嘛,就是你给它一个突变的信号,它就走一步的,不然就不叫步进撒...也就是你触发它一下,它跑一步,且只跑一步的哦...懂了吧?

内容: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=0i<4i++) //4相

{

P1=F_Rotation[i] //输出对应的相 可以自行换成反转表格

Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag)

{

P0=0x7C//显示 b 标示反转

for(i=0i<4i++) //4相

{

P1=B_Rotation[i] //输出对应的相

Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

}

/******************************************************************/

/* 中断入口函数 */

/******************************************************************/

void ISR_Key(void) interrupt 2 using 1

{

Delay(300)

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

}

给一个以前高明哪桐中写的步进电机程序给你,不知道行不行,如果步缓手进电机不一样应该是不行的,高中写的,激坦也没有改过,估计不是怎么严谨,写得也不好,不过希望能帮到你。用51单片机写的

#define _121_C_

#include "reg51.h"

#include "121.h"

#include "intrins.h"

sbit k1=P1^7

sbit k2=P1^6

sbit cp=P1^0

sbit dir=P1^1//dir的值可改变电机方向 dir=1电机向左 dir=0电机向右

sbit r=P1^2//右

sbit l=P1^3//左

bit f=0,ff=0

unsigned int qq=0,ww=0,q=17

yanshi(unsigned int q)

{

while(q--)

}

main()

{

while(1)

{

while(k1==1)

{

if(f==0)dir=1

if(r==1){dir=0f=1}

if(qq<920&&dir==0)//电机刻度归零,数据都不一样要实测?

{

cp=1yanshi(1)

cp=0qq++yanshi(5)

if(qq>919)q=0

}?

else if(dir==1){cp=1yanshi(1)cp=0yanshi(5)qq=0}

if(k2==1)ff=0

if(k2==0&&ff==0&&q<16)

{

dir=0q++

for(ww=0ww<1378ww++)

{

cp=1yanshi(1)cp=0yanshi(5)

}

}

}

while(k1==0)

{

f=0

if(l==1)dir=1

else if(r==1)dir=0

cp=1yanshi(1)cp=0yanshi(5)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12479059.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-24
下一篇2023-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存