
Altium Designer画的L298N直流电机与步进电机可编程驱动控制模块电路原理图和PCB图如下:(51hei附件中可下载工程文件)
简要说明: 一、尺寸:长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<reg52.h>
- /*------宏定义------*/
- #define uchar unsigned char
- #define uint unsigned int
- /*****P1.0=A ;P1.1=B ;P1.2=A' ; P1.3=B'****/
- /*******************************正转数组**************************************************/
- code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04}; //两相四线八拍工作方式
- /*******************************反转数组**************************************************/
- code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //两相四线八拍工作方式
- uchar keycan=0; //键值
- int y=15;//定义转动速度,数值越大电机转速越慢反之则快
- sbit P2_0=P2^0;//正转按键
- sbit P2_1=P2^1;//反转按键
- sbit P2_2=P2^2;//电机减速
- sbit P2_3=P2^3;//电机加速
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay(i)//延时函数
- {
- uchar j,k;
- for(j=0;j<i;j++)
- for(k=0;k<250;k++);
- }
- /********************************************************************
- 正转运行函数
- *********************************************************************/
- void zrun()// 正转运行
- {
- uchar z;
- for(z=0;z<8;z++)
- {
- P1=runz[z];
- delay(y);
- }
- }
- /********************************************************************
- 反转运行函数
- *********************************************************************/
- void frun()// 反转运行
- {
- uchar z;
- 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)
- {
- case 1: zrun(); //键值等于1 正转
- break;
- case 2: 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调速。可参考下图表: 五、此板驱动直流电机测试程序 
【测试程序】 - /********************************************************************
- 汇诚科技
- 实现功能:直流电机调试程序
- 使用芯片:AT89S52 或者 STC89C52
- 晶振:11.0592MHZ
- 编译环境:Keil
- 作者:zhangxinchun
- *********************************************************************/
- #include<reg52.h>
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- sbit P2_0=P2^0;//M1启动
- sbit P2_1=P2^1;//M1停止
- sbit P2_2=P2^2;//M2启动
- sbit P2_3=P2^3;//M2停止
- sbit P1_0=P1^0;//M1
- sbit P1_1=P1^1;//M1
- sbit P1_2=P1^2;//M2
- sbit P1_3=P1^3;//M2
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay(uchar t)//延时程序
- {
- uchar m,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;
- }}
- }
- }
复制代码
【图片展示】 【应用举例】 |