L298N电机可编程控制器设计原理图PCB图及例程.docx
《L298N电机可编程控制器设计原理图PCB图及例程.docx》由会员分享,可在线阅读,更多相关《L298N电机可编程控制器设计原理图PCB图及例程.docx(14页珍藏版)》请在冰豆网上搜索。
L298N电机可编程控制器设计原理图PCB图及例程
L298N直流电机步进电机可编程驱动控制器
简要说明:
一、尺寸:
长88mmX宽67mmX高35mm
二、主要芯片:
L298N、光电耦合器
三、工作电压:
输入电压(5V~30V)输入电压的大小由被控制电机的额定电压决定。
四、可驱动直流(5~30V之间电压的直流电机或者步进电机)
五、最大输出电流2A(瞬间峰值电流3A)
六、最大输出功率25W
七、特点:
1、具有信号指示
2、转速可调
3、抗干扰能力强
4、具有续流保护
5、可单独控制两台直流电机
6、可单独控制一台步进电机
7、PWM脉宽平滑调速(可使用PWM信号对直流电机调速)
8、可实现正反转
9、采用光电隔离
10、P3口全部引出
11、四位LED灯指示
12、四位按键输入(可以对AT89S52单片机编程实现任何控制)
产品最大特点:
可以对AT89S52单片机编程实现任意控制被控的直流电机或者步进电机。
适用场合:
单片机学习、电子竞赛、产品开发、毕业设计。
。
。
注意啦:
本产品提供例程(附带原理图以及说明!
)
【标注图片】
【步进电机接线图】
【直流电机接线图】
【应用原理图】
实例一:
步进电机的控制实例
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。
一、步进电机最大特点是:
1、它是通过输入脉冲信号来进行控制的。
2、电机的总转动角度由输入脉冲数决定。
3、电机的转速由脉冲信号频率决定。
二、步进电机的驱动电路
根据控制信号工作,控制信号由单片机产生。
(或者其他信号源)
三、控制步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
(注意:
如果脉冲频率的速度大于了电机的反应速度,那么步进电机将会出现失步现象)。
四、此板驱动步进电机测试程序
说明:
以AT89S52单片机控制单元,C语言编程!
【测试程序】
/********************************************************************
汇诚科技
实现功能:
正转_反转_减速_加速程序
使用芯片:
AT89S52或者STC89C52
晶振:
11.0592MHZ
编译环境:
Keil
作者:
zhangxinchun
淘宝店:
汇诚科技
*********************************************************************/
#include
/*------宏定义------*/
#defineucharunsignedchar
#defineuintunsignedint
/*****P1.0=A;P1.1=B;P1.2=A';P1.3=B'****/
/*******************************正转数组**************************************************/
codeunsignedcharrunz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04};//两相四线八拍工作方式
/*******************************反转数组**************************************************/
codeunsignedcharrunf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05};//两相四线八拍工作方式
ucharkeycan=0;//键值
inty=15;//定义转动速度,数值越大电机转速越慢反之则快
sbitP2_0=P2^0;//正转按键
sbitP2_1=P2^1;//反转按键
sbitP2_2=P2^2;//电机减速
sbitP2_3=P2^3;//电机加速
/********************************************************************
延时函数
*********************************************************************/
voiddelay(i)//延时函数
{
ucharj,k;
for(j=0;j
for(k=0;k<250;k++);
}
/********************************************************************
正转运行函数
*********************************************************************/
voidzrun()//正转运行
{
ucharz;
for(z=0;z<8;z++)
{
P1=runz[z];
delay(y);
}
}
/********************************************************************
反转运行函数
*********************************************************************/
voidfrun()//反转运行
{
ucharz;
for(z=0;z<8;z++)
{
P1=runf[z];
delay(y);
}
}
/********************************************************************
主函数
*********************************************************************/
main()
{
while
(1)
{
if(P2_0==0)//如果电机正转按键按下
{
keycan=1;//键值等于1
}
if(P2_1==0)//如果电机反转按键按下
{
keycan=2;//键值等于2
}
switch(keycan)
{
case1:
zrun();//键值等于1正转
break;
case2:
frun();//键值等于2反转
break;
}
if(P2_2==0)//电机减速
{
y+=2;
}
if(P2_3==0)//电机加速
{
y-=2;
}
}
}
/********************************************************************
结束
*********************************************************************/
实例二:
直流电机的控制实例
使用直流/步进两用驱动器可以驱动两台直流电机。
分别为M1和M2。
引脚A,B可用于输入PWM脉宽调制信号对电机进行调速控制。
(如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接)实现电机正反转就更容易了,输入信号端IN1接高电平输入端IN2接低电平,电机M1正转。
(如果信号端IN1接低电平,IN2接高电平,电机M1反转。
)控制另一台电机是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。
(反之则反转),PWM信号端A控制M1调速,PWM信号端B控制M2调速。
可参考下图表:
电机
旋转方式
控制端IN1
控制端IN2
控制端IN3
控制端IN4
输入PWM信号改变脉宽可调速
调速端A
调速端B
M1
正转
高
低
/
/
高
/
反转
低
高
/
/
高
/
停止
低
低
/
/
高
/
M2
正转
/
/
高
低
/
高
反转
/
/
低
高
/
高
停止
低
低
/
/
/
高
五、此板驱动直流电机测试程序
【测试程序】
/********************************************************************
汇诚科技
实现功能:
直流电机调试程序
使用芯片:
AT89S52或者STC89C52
晶振:
11.0592MHZ
编译环境:
Keil
作者:
zhangxinchun
*********************************************************************/
#include
#defineucharunsignedchar//宏定义无符号字符型
#defineuintunsignedint//宏定义无符号整型
sbitP2_0=P2^0;//M1启动
sbitP2_1=P2^1;//M1停止
sbitP2_2=P2^2;//M2启动
sbitP2_3=P2^3;//M2停止
sbitP1_0=P1^0;//M1
sbitP1_1=P1^1;//M1
sbitP1_2=P1^2;//M2
sbitP1_3=P1^3;//M2
/********************************************************************
延时函数
*********************************************************************/
voiddelay(uchart)//延时程序
{
ucharm,n,s;
for(m=t;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
主函数
*********************************************************************/
main()
{
while
(1)
{
if(P2_0==0){delay(3);if(P2_0==0)//M1启动
{
P1_0=1;
P1_1=0;
}}
if(P2_1==0){delay(3);if(P2_1==0)//M1停止
{
P1_0=1;
P1_1=1;
}}
if(P2_2==0){delay(3);if(P2_2==0)//M2启动
{
P1_2=1;
P1_3=0;
}}
if(P2_3==0){delay(3);if(P2_3==0)//M2停止
{
P1_2=1;
P1_3=1;
}}
}
}
/********************************************************************
结束
*********************************************************************/
【图片展示】
【应用举例】