找回密码
 立即注册

QQ登录

只需一步,快速开始

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

57步进电机蜗轮蜗杆减速器输出轴转动单片机源程序与资料,带细分

[复制链接]
跳转到指定楼层
楼主
ID:305877 发表于 2018-4-11 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用了雷赛科技型号为DM542的步进电机驱动器。处理器型号为STC89C52,本项目中选用57系列步进电机,力矩5NM


第一讲步进电机驱动器的使用
步进电机控制原理图

项目开发中采用了雷赛科技型号为DM542的步进电机驱动器。处理器型号为STC89C52本项目中选用57系列步进电机,力矩5NM,满足要求。细分数可以通过驱动器上的拨码开关(红圈中就是拨码开关)设定,细分数就是步进电机转一圈需要的脉冲数。


DM54257电机典型接法如图所示

使用步进电机驱动器大大降低了驱动步进电机工作的难度,只需要用三路信号就可以驱动步进电机运动。他们分别是PUL-DIR-ENA-,具体情况看下表。硬件设计时PUL+DIR+ENA+需要接直流+5V

为了能够使步进电机能够正常运转,单片机通过IO口给出的信号要满足上图中的时间顺序。首先需要让使能信号置为高电平。这就相当于告诉驱动器,我要开始控制你了。
然后就是给驱动器一个方向信号,高速驱动器要控制电机顺时针转动还是逆时针转动。而且这个时间是有要求的,要大于5微秒。就是使能信号给出后,大于5微秒后再给一个方向信号。
接下来就是让步进电机转起来,通过单片机输出脉冲信号,送给步进电机驱动器,进而控制步进电机。方向信号给了之后,也是需要至少大于5微秒之后再给脉冲控制信号。
具体操作请看下面的程序
  1. //本程序可以实现蜗轮蜗杆减速器输出轴转动1圈 ,细分数400,减速比1:10,4000个脉冲转一圈
  2. //------------头文件区-------------------------------------------------------------------------------------
  3. //包括:单片机芯片的配置头文件
  4. //      其他编程中需要调用的C语言自带头文件
  5. //      自己编写的专用头文件
  6. //---------------------------------------------------------------------------------------------------------

  7. #include <reg52.h>

  8. //-----------自定义区--------------------------------------------------------------------------------------
  9. //包括:常量、变量、符号等
  10. //---------------------------------------------------------------------------------------------------------
  11. sbit pul=P0^2; // 脉冲
  12. sbit dir=P0^1;//   方向                     
  13. sbit ena=P0^0;//     使能                  





  14. //---------函数声明--------------------------------------
  15. void Delay_ms(unsigned int t);// t ms延时程序函数声明

  16. //------------主程序---------------------------------------------------------------------------------------
  17. //包括:器件初始化、变量初始化、程序主循环
  18. void main()
  19. {
  20. unsigned int l;
  21. Delay_ms(2000);

  22. dir=0;   
  23.                    ena=0;
  24.                             Delay_ms(1);                               //              电机使能
  25.                                           ena=1;
  26.                                 Delay_ms(1);
  27.                            
  28.                                              for(l=0;l<4000;l++)//转4000个脉冲
  29.                                           {
  30.                                                         pul=0; //
  31.                                                Delay_ms(1);                              
  32.                                                                       pul=1; //产生一个下降沿
  33.                                                                       Delay_ms(1);               
  34.                                                       
  35.                                           }
  36.             
  37.               while(1);            
  38. }


  39. //------------延时函数--------------------------------
  40. //12MHz晶振时,t=1,精确延时1ms
  41. //输入参数t,取值0-65536,改变参数t的值设定延时时间
  42. //----------------------------------------------------
  43. void Delay_ms(unsigned int t)
  44. {      
  45.               unsigned int i;
  46.               unsigned char j,k;
  47.               for(i=t;i>0;i--)                            //3重循环完成精确1ms延时
  48.                             for(j=2;j>0;j--)
  49.                                           for(k=246;k>0;k--);
  50. }
复制代码

完整的Word格式文档51黑下载地址:
1步进电机编程.docx (660.95 KB, 下载次数: 23)



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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