找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6709|回复: 3
打印 上一主题 下一主题
收起左侧

L298N无刷直流步进电机驱动控制器电路图PCB与单片机源程序等资料

[复制链接]
跳转到指定楼层
楼主

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语言编程!
【测试程序】
  1. /********************************************************************
  2.                             汇诚科技
  3. 实现功能:正转_反转_减速_加速程序
  4. 使用芯片:AT89S52 或者 STC89C52
  5. 晶振:11.0592MHZ
  6. 编译环境:Keil
  7. 作者:zhangxinchun
  8. 淘宝店:汇诚科技  
  9. *********************************************************************/
  10. #include<reg52.h>
  11. /*------宏定义------*/
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. /*****P1.0=A ;P1.1=B ;P1.2=A' ; P1.3=B'****/
  15. /*******************************正转数组**************************************************/
  16. code unsigned char runz[8]={0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04};  //两相四线八拍工作方式
  17. /*******************************反转数组**************************************************/
  18. code unsigned char runf[8]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05};  //两相四线八拍工作方式
  19. uchar keycan=0;                            //键值
  20. int y=15;//定义转动速度,数值越大电机转速越慢反之则快
  21. sbit P2_0=P2^0;//正转按键
  22. sbit P2_1=P2^1;//反转按键
  23. sbit P2_2=P2^2;//电机减速
  24. sbit P2_3=P2^3;//电机加速
  25. /********************************************************************
  26.                             延时函数
  27. *********************************************************************/
  28. void delay(i)//延时函数
  29.   {
  30.       uchar              j,k;
  31.       for(j=0;j<i;j++)
  32.       for(k=0;k<250;k++);
  33.   }
  34. /********************************************************************
  35.                             正转运行函数
  36. *********************************************************************/
  37. void zrun()// 正转运行
  38. {
  39.    uchar z;
  40.    for(z=0;z<8;z++)
  41.        {
  42.          P1=runz[z];
  43.          delay(y);
  44.        }
  45. }
  46. /********************************************************************
  47.                             反转运行函数
  48. *********************************************************************/
  49. void frun()// 反转运行
  50. {
  51.      uchar z;
  52.      for(z=0;z<8;z++)
  53.         {
  54.             P1=runf[z];
  55.             delay(y);
  56.          }
  57. }
  58. /********************************************************************
  59.                             主函数
  60. *********************************************************************/
  61. main()
  62. {
  63.    while(1)
  64.     {
  65.        if(P2_0==0) //如果电机正转按键按下
  66.       {
  67.         keycan=1;              //键值等于1
  68.       }
  69.          if(P2_1==0) //如果电机反转按键按下
  70.       {
  71.         keycan=2;              //键值等于2
  72.        }
  73.                            switch (keycan)
  74.                           {
  75.                            case 1: zrun();  //键值等于1 正转
  76.                                                         break;
  77.                            case 2: frun();  //键值等于2 反转
  78.                            break;
  79.                            }
  80.                    if(P2_2==0)  //  电机减速
  81.       {
  82.         y+=2;
  83.       }
  84.          if(P2_3==0)   // 电机加速
  85.       {                                         
  86.         y-=2;
  87.        }
  88.    }
  89. }
复制代码

实例二:直流电机的控制实例
使用直流/步进两用驱动器可以驱动两台直流电机。分别为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
正转
/
/
/
反转
/
/
/
停止
/
/
/

五、此板驱动直流电机测试程序

【测试程序】
  1. /********************************************************************
  2.                             汇诚科技
  3. 实现功能:直流电机调试程序
  4. 使用芯片:AT89S52 或者 STC89C52
  5. 晶振:11.0592MHZ
  6. 编译环境:Keil
  7. 作者:zhangxinchun   
  8. *********************************************************************/
  9. #include<reg52.h>
  10. #define uchar unsigned char//宏定义无符号字符型
  11. #define uint unsigned int  //宏定义无符号整型
  12. sbit P2_0=P2^0;//M1启动
  13. sbit P2_1=P2^1;//M1停止
  14. sbit P2_2=P2^2;//M2启动
  15. sbit P2_3=P2^3;//M2停止
  16. sbit P1_0=P1^0;//M1
  17. sbit P1_1=P1^1;//M1
  18. sbit P1_2=P1^2;//M2
  19. sbit P1_3=P1^3;//M2
  20. /********************************************************************
  21.                             延时函数
  22. *********************************************************************/
  23. void delay(uchar t)//延时程序
  24. {
  25. uchar m,n,s;
  26. for(m=t;m>0;m--)
  27. for(n=20;n>0;n--)
  28. for(s=248;s>0;s--);
  29. }
  30. /********************************************************************
  31.                             主函数
  32. *********************************************************************/
  33. main()
  34. {
  35. while(1)
  36.    {
  37.        if(P2_0==0){delay(3);if(P2_0==0)//M1启动
  38.          {
  39.                        P1_0=1;                                                           
  40.                                           P1_1=0;
  41.           }}
  42.        if(P2_1==0){delay(3);if(P2_1==0)//M1停止
  43.          {
  44.                        P1_0=1;
  45.                                           P1_1=1;
  46.                               }}
  47.                  if(P2_2==0){delay(3);if(P2_2==0)//M2启动
  48.          {
  49.                        P1_2=1;
  50.                                             P1_3=0;
  51.           }}
  52.        if(P2_3==0){delay(3);if(P2_3==0)//M2停止
  53.          {
  54.                        P1_2=1;
  55.                                           P1_3=1;
  56.                               }}
  57.     }
  58. }
复制代码


【图片展示】
【应用举例】



全部资料51hei下载地址:
直流步进电机可编程控制器DXP资料.rar (152.91 KB, 下载次数: 62)
L298N电机可编程控制器设计原理图PCB图及例程.doc (6 MB, 下载次数: 40)
配套参考程序.rar (8.08 MB, 下载次数: 41)
原理图.doc (41 KB, 下载次数: 44)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:320487 发表于 2018-5-2 15:08 | 只看该作者
正好需要驱动步进电机  这个程序试试看
谢谢呀
回复

使用道具 举报

板凳
ID:1013588 发表于 2023-8-3 14:17 | 只看该作者
下载学习,楼主给力
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表