
几相的步进电机啊?用不用驱动芯片?用的话选什么型号的驱动芯片?你要说具体点啊!
先给你三相的,个不用驱动芯片的步进电机程序。(驱动电路自己做)
#include<reg51h>
#define uchar unsigned char
#define uint unsigned int
uint time
void timer1(void) interrupt 1 using 1{ //定时器0中断,定时1ms//
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
time++;
}
void delay(uint n){ //一般延时
while(--n);
}
void delay(uint dtime){ //延时
TR0=1;
while(time<=dtime);
time=0;
TR0=0;
}
void moto(bit cf,uchar n,uint dtime){ //电机驱动子程序,
uchar idata zhpai[4]={0x78,0xb8,0xd8,0xe8};
uchar idata fpai[4]={0xe8,0xd8,0xb8,0x78};
uchar i,l=0;
if(cf==0) //正转,A-B-C-A
for(i=0;i<n;i++){
P1=zhpai[l];//P17~14为输出口,分别为A、B、C、D
l++;
delay(dtime);
if(l==4)l=0;
}
else{ //反转,C-B-A-C
for(i=0;i<n;i++){
P1=fpai[l];
l++;
delay(dtime);
if(l==4)l=0;
}
}
}
void main(){
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
while(1){
moto(0,4,70);//正转,转四相,每相间隔70ms
delay(10000);
moto(1,4,70);//反转,转四相,每相间隔70ms
delay(10000);
}
}
步进电机控制方法:控制步进电机的转速、输入脉冲信号就可以控制了。
步进电机调速控制方法 控制步进电机的转速,主要通过改变控制脉冲频率来控制的,只是要注意驱动器的细分值的大小,例如如果是整步,电机每运行运转需要200个脉冲,如果半步,电机运行运转需要400个脉冲,像EZM552这类数字式驱动器,最大细分值可达512,电机每运行运转需要512、200、102400个脉冲。
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又被称之为脉冲电动机。
步进电机又称为脉冲电机,基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩。其原始模型是起源于1830年至1860年间。1870年前后开始以控制为目的的尝试,应用于氢弧灯的电极输送机构中。这被认为是最初的步进电机。
1采用一个晶体管输出的PLC用Y0或Y1作为脉冲输出,指令可按照不同厂家的PLC查指令表
2Y0或Y1为脉冲信号给步进电机控制器
3另由PLC给一个信号与步进电机控制器作为方向信号如有为正转,无信号则反转
如图,这个就是一个步进电机的正反转的运行,Y0接步进驱动器的脉冲,Y1接步进驱动器的方向,M0为ON时正转,M1为ON时反转,D0是脉冲的频率,D1是脉冲的个数。
移动速度和脉冲频率有关,在细分数一定的条件下,频率越高速度越快,行走的距离和脉冲个数有关,脉冲个数越多,行走距离越长,(在三菱这个指令中,脉冲个数为0时,是一直运行,相当于无限个数),具体的移动速度和行走距离得根据你的设置(频率,细分数,脉冲个数等)和硬件(包括步进电机的步距角,丝杆的丝距,齿轮组的齿轮比,齿轮带的传送比等)来调节。
望采纳。。。。
以上就是关于求单片机c语言控制步进电机调速程序全部的内容,包括:求单片机c语言控制步进电机调速程序、步进电机控制方法、步进电机正反转的PLC控制程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)