文章目录

  • 51单片机驱动器控制步进电机
    • 文章简介
    • 1.驱动器简介
    • 2.驱动器和单片机接线方法
    • 3.单片机程序
    • 4.实物演示视频

51单片机驱动器控制步进电机

文章简介

本文是前段时间玩步进电机精准控制的总结,关于51单片机驱动步进电机的程序(用脉冲频率控制)及接线方法。

1.驱动器简介

如图所示,以下为两相电机驱动器实物图,ENA+为驱动器使能信号+,ENA-为驱动器使能信号-。PUL+是脉冲信号+,PUL-是脉冲信号-。DIP是方向信号。 DC接供电电源,电压为24V~42V。

驱动器还可通过拨码开关调电流和调细分,上方有PU的表格为调细分的,通过拨码开关S1,S2,S3进行控制,下方有PK的表格为调电流的,通过拨码开关S4,S5,S6进行控制。拨码开关往下拨就是ON状态(开启状态)。(其他驱动器可根据规格表对比,基本同理)

2.驱动器和单片机接线方法

驱动器上A+、A-、B+、B-端通过电机上说明,按照颜色接即可。

然后驱动器ENA-,DIP-,PUL-三个端共地,接单片机的GND

这里是驱动器拨码开关的图

接着PUL+,DIR+两个端根据代码写的端口接到单片机上,下面是实物连接图。

3.单片机程序

程序通过用按键控制发送的脉冲频率,通过发送脉冲,给驱动器口PUL驱动电机, 通过按键来控制发送 500 个脉冲,精准控制步进电机在直尺上转动 1cm 。

按键一功能是发送500个脉冲,从而精准控制一厘米,为什么是发送500个脉冲,是因为驱动器可以通过拨动开关调电流,调细分,我用的是200个脉冲转一圈的状态,经过调试200个脉冲刚好转动0.4厘米,经过换算,500个脉冲为1厘米,所以实现精准控制1厘米,同理可得,其他距离的脉冲数。
按键二的功能为使电机反转,通过转换引脚电平,给驱动器DIR口状态取反,DIR控制电机正方转,故按键二控制电机方向。
两个外部中断是响应接近开关,使电机转换方向,防止电机超过限位。

#include <stc15f2k60s2.h>
#include <intrins.h>
#define u8 unsigned char
#define u16 unsigned intunsigned int h;     //无符号整形变量sbit maichong=P1^1;        //定义脉冲输出脚(PUL)
sbit zhuang=P0^3;      //定义方向引脚(DIR)
sbit  K1=P2^0;         //脉冲发送
sbit  K2=P2^1;         //转向
sbit  K3=P2^2;         //调试按键,调试中断是否能进入,可注释掉
sbit  right=P3^2      //右限位
sbit  left=P3^3;       //左限位
sbit  yuan=P0^2;       //坐标原点/**CSDN博墨**************************************/
/********CSDN博墨********************************/
/****************CSDN博墨************************/
/*************************CSDN博墨***************/
/**********************************CSDN博墨******/void Delay400us()       //400微秒延时函数
{unsigned char i, j;i = 5;j = 74;do{while (--j);} while (--i);
}void Delay10ms()       //10毫秒延时函数
{unsigned char i, j;i = 108;j = 145;do{while (--j);} while (--i);
}void right_EXINT0() interrupt 0      //外部中断函数0
{if(right==1){Delay10ms(); if(right==1){zhuang=~zhuang;}}
}void left_EXINT1() interrupt 2       //外部中断函数1
{if(left==1){Delay10ms(); if(left==1){zhuang=~zhuang;}}
}    void EXINT_init()          //外部中断初始化
{IT0=0;IT1=0;IE0=0;IE1=1;EA =1;EX0=1;EX1=1;
}void main ()               //主函数
{EXINT_init();P0M0=0XFF;P0M1=0X00;while(1){if (K1==0)            //按键1判断{Delay10ms();   //延时if (K1==0){  for(h=0;h<500;h++)//for 循环500次,发送500个脉冲{maichong=0;           Delay400us();      maichong=1;            Delay400us();}  }      }     if (K2==0)          //判断按键2{Delay10ms();  //延时if (K2==0){zhuang=~zhuang;     //引脚状态取反while(K2==0);      //判断是否松开按键}}if(K3==0){if(K3==0){P1=0X00;}}else{P1=0Xff;}}
}
/**CSDN博墨**************************************/
/********CSDN博墨********************************/
/****************CSDN博墨************************/
/*************************CSDN博墨***************/
/**********************************CSDN博墨******/

4.实物演示视频

51单片机驱动器控制步进电机

以上是之前程序调试完的视频,文章中如果有错误的地方,欢迎各位大佬指正。

51单片机通过驱动器精准控制步进电机相关推荐

  1. 51单片机蓝牙通讯精准控制步进电机简易教学

    51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...

  2. 51单片机TB6600驱动器与57BYGH255步进电机(二相)使用方法与程序

    第一次写博客,很多地方不熟悉请见谅.我目前在做一个项目,首先要解决的是用电机将某个东西吊起能使其上下移动.我选择用二相四线步进电机,用TB6600去驱动,51单片机做控制器.TB6600的使用方法我不 ...

  3. 基于51单片机的舞蹈机器人四路步进电机控制仿真

    资料编号:091  下面是相关功能视频演示: 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 功能介绍:通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资 ...

  4. 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)

    资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...

  5. Arduino UNO+TB6600驱动器按键控制步进电机启动停止

    Arduino UNO+TB6600驱动器按键控制步进电机启动停止 步进电机 TB6600驱动器 **接线说明:**重点内容!!!! //本次实验电机驱动采用共阴极接线方式 1. PUL-, DIR- ...

  6. 基于51单片机的简单风扇控制

    具体实现功能 系统由STC89C52单片机+单体数码管+LED指示灯+LM298N芯片芯片+直流电机构成. 具体功能: (1)模拟实现风扇的转动及摇头: (2)实现按键设置1 档强风,2档中风,3档弱 ...

  7. 51单片机:独立按键控制数码管计数

    //按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...

  8. 51单片机模拟交通信号灯控制系统设计

    51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...

  9. 51单片机红外通信及控制LED灯(LCD1602显示)

    51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...

最新文章

  1. 速度快到飞起 如何跟蜻蜓的大脑学习计算?
  2. 程序改错(递归函数):数字转字符
  3. Python os.makedirs try 以及 raise
  4. 开发指南专题十:JEECG微云快速开发平台--表单校验组件ValidForm
  5. Python高性能HTTP客户端库requests的使用
  6. 用纯css3和html制作一些泡沫对话框
  7. java报错空指针异常_springboot全局异常捕获,真香
  8. ProxyToken:微软 Exchange 服务器中的认证绕过新漏洞,可窃取用户邮件
  9. 17.如何正确使用TCP
  10. AngularJS 动态模板
  11. jsp中excel文件的创建与读取
  12. 浏览器被7654和2345网页劫持解决办法
  13. 机器学习——武林盟主分享机器学习之武功秘籍
  14. Hugging Face:成为机器学习界的“GitHub”
  15. Json汉化-使用JavaScript和百度翻译API免费实现Json文件的汉化
  16. 【数据集】人工智能领域比较常见的数据集汇总
  17. MEX and Increments
  18. Unity 4.6.2 iOS 64位支持
  19. 日有所思(6)——直流电机注意点
  20. ps写实计算机图标,PS临摹写实图标教程

热门文章

  1. ElasticSearch中Cat接口详解
  2. 京东图片列表、左侧导航栏、网易新闻列表、京东页面布局、京东轮播图
  3. C语言程序设计-简易文本编辑器
  4. Eclipse写js没有代码提示
  5. 16S 物种丰度热图学习
  6. 图像拼接(十):OPenCV stitching和stitching_detailed
  7. [Java8]_[增强功能]_[Base64编解码]
  8. Android 核心技术
  9. 【Math ML】Lagrange Multipliers 拉格朗日乘数
  10. 网易云音乐“王牌冤家”用户评论:评论爬虫及情感分析(SnowNLP)