标题: 五一单片机控制四线双极性步进电机的各种源程序 [打印本页]

作者: 历经百态    时间: 2017-10-28 21:07
标题: 五一单片机控制四线双极性步进电机的各种源程序
用五一单片机来控制步进电机的几种转动方式


原理图:


1 单四拍工作的源程序
2 双四拍工作的源程序
3 半步八拍方式的源程序
4 细分的源程序
技术资料\
271398.pdf
2916应用.pdf
UDN2916应用.pdf
UDN2916英文1.pdf
步进电机细分.pdf

局部原理图.jpg
步进电机接线图.jpg


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

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



  25. void delay(int time);

  26. /***************************************
  27. 函数功能:产生脉冲控制步进机
  28. 正转:A/  A/B  B  AB  A  AB/  B/  A/B/
  29. I0 I1 均为0 以最大电流输出(没有四分) 均为1不输出电流
  30. **************************************/
  31. void Go()
  32. {         
  33.         //A/  A拍反向电流
  34.         PH1 = 0;         //PH1为0 A组线圈为反向电流
  35.     I01 = 0;
  36.         I11 = 0;         //以最大电流输出(没细分) 以下相同 均是此意思
  37.         
  38.         
  39.         PH2 = 1;     //PH2为1 B组线圈为正向电流
  40.         I02 = 1;
  41.         I12 = 1;     //关闭电流输出,以下相同均是此意思
  42.       
  43.    

  44.         delay(speed);

  45.          // A/B  AB拍 A为反向电流  B为正向电流
  46.     PH1 = 0;     //PH1为0 A组线圈为反向电流
  47.     I01 = 0;
  48.         I11 = 0;
  49.         

  50.         PH2 = 1;     //PH2为1 B组线圈为正向电流
  51.         I02 = 0;
  52.         I12 = 0;


  53.         

  54.         delay(speed);
  55.         //B          B拍 B为正向电流
  56.         PH1 = 1;
  57.     I01 = 1;
  58.         I11 = 1;
  59.         
  60.          PH2 = 1;
  61.         I02 = 0;
  62.         I12 = 0;
  63.         
  64.         delay(speed);
  65.         //AB   AB拍 均为正向电流

  66. ……………………

  67. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
四线双极性.rar (4.09 MB, 下载次数: 147)




作者: dongdonggod    时间: 2018-2-12 15:36
看看  谢谢
作者: sunbbk    时间: 2018-2-13 12:51
厉害 学习一下
作者: 小辑轻舟    时间: 2018-4-7 16:24
学习一下了,感谢楼主
作者: ABCD丁    时间: 2018-6-7 23:25
我想问一下就是步进电机的四个管脚怎么接呢?我的是A A/ B B/ 型的
作者: lengyu309    时间: 2018-6-13 22:48
delay(speed);有什么作用?为什么是speed?
作者: swxg123    时间: 2018-9-9 10:19
现在四线两相电机可不好买
作者: lindeijun1    时间: 2020-2-9 15:51
谢谢楼主分享!!!
作者: Wojtekzhang123    时间: 2020-5-7 17:39
lengyu309 发表于 2018-6-13 22:48
delay(speed);有什么作用?为什么是speed?

speed是程序里面宏定义的,其实是代表了一个数值,来调整速度的
作者: 999999999FFFFFF    时间: 2021-3-27 16:52
小辑轻舟 发表于 2018-4-7 16:24
学习一下了,感谢楼主

这个介绍详细着
作者: Yaolp123    时间: 2021-5-23 09:52
可以用定时器实现吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1