找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机四线双极性+五线四相步进电机案例程序(细分+半步八拍方式+双四拍+单四拍)

[复制链接]
跳转到指定楼层
楼主
1、现发布只配有4线双极性步进电机

2、四线双极性步进电机与五线四相步进电机程序不通用

3、五线四相步进电机若只是震动,可适当增大延时即可



电路原理图如下:


细分单片机源程序如下:
  1. /*************************************************************************************
  2. *  标题:  步进电机试验四(采用2细分)                                                                                         *
  3. *                                                                                                                                                                          *
  4. *    通过本例程了解步进马达使用及驱动程序编写                                                                                 *
  5. *;   单相四拍通电驱动时序:                                                          *
  6. *;   正转: A/  B  A  B/                                                                                                                         *
  7. *    反转: B/  A  B  A/                                                                                              *
  8. *                                                                                                                                                                     *
  9. *    UDN2916电流控制真值表:                                                                                                                 *
  10. *          I0    I1        输出电流                                                                                                                 *
  11. *          L            L                  最大                                                                                                                         *
  12. *          H                L                  最大*2/3                                                                                                                 *
  13. *          L                H                  最大*1/3                                                                                                                 *
  14. *     H     H         0                                                                     *
  15. *   请学员一定要消化掉本例程                                                                    *
  16. *   注意:J14短路冒需断开                                                                                    *
  17. **************************************************************************************/  
  18. #include "reg52.h"

  19. #define speed 38
  20. //Motor
  21. sbit PH1 = P1^0;          //定义管脚
  22. sbit PH2 = P1^1;
  23. sbit I01 = P1^2;
  24. sbit I11 = P1^3;
  25. sbit I02 = P1^4;
  26. sbit I12 = P1^5;
  27.                                     
  28. unsigned char TableA[] = { 0XF7,0XFB,0XF3};         //A线圈细分表
  29. unsigned char TableB[] = { 0XeF,0XdF,0XcF};         //B线圈细分表

  30. void delay(int time);

  31. /***************************************
  32. 函数功能:产生单相四拍脉冲控制步进机 2细分
  33. **************************************/
  34. void Go()
  35. {        char i ,temp;
  36.      //A
  37.     PH1 = 0;  //PH1为0 则A线圈为反向电流
  38.         for(i = 0; i<3; i++)
  39.         {  temp = P1;
  40.            P1 = TableA[i];
  41.            P1 = P1&temp;
  42.            delay(1);
  43.          }
  44.         

  45.         PH2 = 0;  //PH2为0 则B线圈为反向电流
  46.         I02 = 1;
  47.         I12 = 1;   //输出0

  48.         delay(speed);
  49.         //0
  50.         PH1 = 0;  //PH1为0 则A线圈为反向电流
  51.     I01 = 1;  //输出0
  52.         I11 = 1;
  53.         

  54.         PH2 = 1;  //PH2为1 则B线圈为正电流
  55.         for(i = 0; i<3; i++)
  56.         {  temp = P1;
  57.            P1 = TableB[i];
  58.            P1 = P1&temp;
  59.            delay(1);
  60.          }

  61.         delay(speed);
  62.         //B
  63.         PH1 = 1;   //PH1为1 则A线圈为正向电流
  64.         for(i = 0; i<3; i++)
  65.         {  temp = P1;
  66.            P1 = TableA[i];
  67.            P1 = P1&temp;
  68.            delay(1);
  69.          }

  70.         PH2 = 1;  //PH2为1 则B线圈为正向电流
  71.         I02 = 1;  //输出0
  72.         I12 = 1;
  73.                    ////
  74.         delay(speed);
  75.         //0
  76.         PH1 = 1;   //PH1为1 则A线圈为正向电流
  77.         I01 = 1;
  78.         I11 = 1;
  79.         

  80.         PH2 = 0;   //PH2为0 则B线圈为反向电流
  81.         for(i = 0; i<3; i++)
  82.         {  temp = P1;
  83.            P1 = TableB[i];
  84.            P1 = P1&temp;
  85.            delay(1);
  86.          }
  87.         delay(speed);
  88.                

  89.         
  90. }
  91. /*******************延时函数****************************/
  92. void delay(int time)
  93. {
  94.   int i,j;
  95.   
  96.   for(j=0; j <= time; j++)
  97.    for(i =0 ; i <= 120; i++);
  98. }


  99. void main()
  100. {

  101.   while(1)
  102.   {
  103.    
  104.     Go();  //步进电机运行
  105.         
  106.   }

  107. }
复制代码
  1. /*************************************************************************************
  2. *  标题:  步进电机试验二(双四拍方式)                                                                                                                         *
  3. *                                                                                                                                                                          *
  4. *    通过本例程了解步进马达使用及驱动程序编写                                                                                 *
  5. *;   双四拍工作方式:                                                                    *
  6. *;   正转:A/B   AB   AB/  A/B/                                                                                       *
  7. *         反转:A/B/  AB/  AB   A/B
  8. *   
  9. *    UDN2916电流控制真值表:
  10. *         I0    I1       输出电流
  11. *          L            L                  最大
  12. *          H                L                  最大*2/3
  13. *          L                H                  最大*1/3
  14. *     H     H         0                                                                     *
  15. *  请学员一定要消化掉本例程                                                                    *
  16.    J14短路冒需断开                                                                                                   *
  17. **************************************************************************************/  
  18. #include "reg52.h"

  19. #define speed 2
  20. //Motor
  21. sbit PH1 = P1^0;          //定义管脚
  22. sbit PH2 = P1^1;
  23. sbit I01 = P1^2;
  24. sbit I11 = P1^3;
  25. sbit I02 = P1^4;
  26. sbit I12 = P1^5;



  27. void delay(int time);

  28. /***************************************
  29. 函数功能:产生脉冲控制步进机
  30. 正转:A/B   AB   AB/  A/B/
  31. I0 I1 为低电平时,均以最大电流输出
  32. **************************************/
  33. void Go()
  34. {         //A
  35.     PH1 = 0;  //PH1为0 则A线圈为反向电流
  36.     I01 = 0;
  37.         I11 = 0;
  38.         

  39.         PH2 = 1;   //PH2为1 则B线圈为正向电流
  40.         I02 = 0;
  41.         I12 = 0;

  42.         delay(speed);
  43.         //0
  44.         PH1 = 1;  //PH1为1 则A线圈为正向电流
  45.     I01 = 0;
  46.         I11 = 0;
  47.         

  48.         PH2 = 1;
  49.         I02 = 0;
  50.         I12 = 0;

  51.         delay(speed);
  52.         //B
  53.         PH1 = 1;  //PH1为1 则A线圈为正向电流
  54.     I01 = 0;
  55.         I11 = 0;
  56.         

  57.         PH2 = 0;   //PH2为0 则B线圈为反向电流
  58.         I02 = 0;
  59.         I12 = 0;
  60.                    ////
  61.         delay(speed);
  62.         //0
  63.         PH1 = 0;
  64.         I01 = 0;
  65.         I11 = 0;
  66.         

  67.         PH2 = 0;  
  68.         I02 = 0;
  69.         I12 = 0;
  70.             
  71.         delay(speed);
  72.         
  73.         
  74. }
  75. /*******************延时函数****************************/
  76. void delay(int time)
  77. {
  78.   int i,j;
  79.   
  80.   for(j=0; j <= time; j++)
  81.    for(i =0 ; i <= 120; i++);
  82. }

  83. void main()
  84. {

  85.   while(1)
  86.   {
  87.    
  88.     Go();  //步进电机运行
  89.         
  90.   }

  91. }
复制代码


所有资料51hei提供下载:
51单片机步进马达案例.rar (3.78 MB, 下载次数: 118)



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

使用道具 举报

沙发
ID:1 发表于 2018-11-15 17:02 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:652775 发表于 2019-12-13 08:58 | 只看该作者
资料很好,收下了。谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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