PLC怎样直接驱动步进电机

PLC怎样直接驱动步进电机,第1张

PLC是不能直接驱动步进电机,需要通过对应的驱动器才能实现对型腊步进电机卜顷滑控制,对于脉冲控制型驱动器如EZM552,需要对驱动器发送控制脉冲和方向信号,对于调速型驱动器如EZD552,只需给启停和方向信号即可实现乎绝对电机的控制。接线图可以参考下图:

51单片机驱动直流电机程序(用的是l298n芯片):

#include<reg51.h>

#include<math.h>

#define uint unsigned int

#define uchar unsigned char

#define N 100

sbit s1=P1^0//电机驱动口

sbit s2=P1^1//电机驱动口

sbit s3=P1^2//电老码机驱动口

sbit s4=P1^3//电机驱动口

sbit en1=P1^4//电机使能端

sbit en2=P1^5//电机使能端

sbit LSEN=P2^0//光电对管最左

sbit LSEN1=P2^1//光电对管左1

sbit LSEN2=P2^2//光电对管左2

sbit RSEN1=P2^3//光电对腊闹管右1

sbit RSEN2=P2^4//光电对管右2

sbit RSEN=P2^5//光轮含罩电对管最右

uint pwm1=0,pwm2=0,t=0

void delay(uint xms)

{

uint a

while(--xms)

{

for(a=123a>0a--)

}

}

void motor(uchar speed1,uchar speed2)

{

if(speed1>=-100&&speed1<=100)

{

pwm1=abs(speed1)

if(speed1>0)

{

s1=1

s2=0

}

if(speed1==0)

{

s1=1

s2=1

}

if(speed1<0)

{

s1=0

s2=1

}

}

if(speed2>=-100&&speed2<=100)

{

pwm2=abs(speed2)

if(speed2>0)

{

s3=1

s4=0

}

if(speed2==0)

{

s3=1

s4=1

}

if(speed2<0)

{

s3=0

s4=1

}

}

}

void go_forward(uint speed)

{

s1=1

s2=0

s3=1

s4=0

pwm1=speed

pwm2=speed

}

void go_back(uint speed)

{

s1=0

s2=1

s3=0

s4=1

pwm1=speed

pwm2=speed

}

void stop()

{

s1=1

s2=1

s3=1

s4=1

pwm1=0

pwm2=0

}

void turn_right(uint P1,uint P2) //右转函数

{

s1=1

s2=0

s3=0

s4=1

pwm1=P1

pwm2=P2

}

void turn_left(uint P1,uint P2) //左转函数

{

s1=0

s2=1

s3=1

s4=0

pwm1=P1

pwm2=P2

}

void tracking()

{

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) //没有检测到

{

go_forward(100)

}

if((LSEN1==1)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) //左一检测到

{

turn_left(40,80)//左转 右轮 》左轮

delay(N)

}

if((LSEN1==0)&&(LSEN2==1)&&(RSEN1==0)&&(RSEN2==0)) //左二检测到

{

turn_left(40,60)//左转 右轮 》左轮

delay(N)

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==1)&&(RSEN2==0)) //右一检测到

{

turn_right(60,4)//右转 左轮 》右轮

delay(N)

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==1)) //右二检测到

{

turn_right(80,40)//右转 左轮 》右轮

delay(N)

}

if((LSEN1==1)&&(LSEN2==1))

{

turn_left(0,100)

delay(1000)

}

if((RSEN1==1)&&(RSEN2==1))

{

turn_right(100,0)

delay(1000)

}

}

void avoidance()

{

}

void init()

{

TMOD=0x02//timer0 同时配置为模式2, 8自动重装计数模式

TH0=156//定时器初值设置100us中断

TL0=156

ET0=1

EA=1

TR0=1//开启总中断

}

void main()

{

init()

while(1)

{

tracking()

}

}

void timer0() interrupt 1 //电机驱动 提供PWM信号

{

if(t<pwm1)

en1=1

else

en1=0

if(t<pwm2)

en2=1

else

en2=0

t++

if(t>100)

t=0

}

扩展资料

L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。一般情况下,功率部分的电压应大于6V否则芯片可能不能正常工作。

参考资料来源:百度百科-l298n


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

原文地址: http://outofmemory.cn/yw/12564538.html

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

发表评论

登录后才能评论

评论列表(0条)

保存