【51单片机】 A4988驱动模块驱动四线步进电机
A4988是控制双极步进电机的驱动模块,在本文中,我们学习如何使用它控制步进电机。
A4988的逻辑电压范围是:3~5.5V,如果配备较好的散热条件每相最大电流可达2A,在没有配备散热器的情况下,每相连续电流最好控制在1A范围内。
先来看图:
---------------------------------------------------------------------------------------------------
从右边自上而下分析:
VMOT、GND:
外接电源正负极,用来给步进电机供电的。
(注意:购买时看一下驱动电压参数,电压不要过高,小的步进电机在4-9v,如果选择12v供电,启动启动没多久就会发烫严重)
建议加个电容,起滤波作用,主要是电机启动时瞬时电流很大,保护驱动板免受瞬时电压的冲击 。
2B 2A 1A 1B:
接步进电机的四根线,不清楚顺序的可以问商家。
VDD、GND:
单片机的VCC、GND接到上面。
从左边自上而下分析:
ENABLE:
使能端,低电平工作,高电平则模块关机。
MS1、MS2、MS3:
细分设置,通过单片机IO口控制三个脚的高低电平设置细分,有1,2,4,8,16这5种细分,决定电机运行速度,具体见表1:
RESET:
复位,置0复位。复位后系统将回归到原始A4988 I/O端口控制状态;
SLEEP:
睡眠模式,接低电平则电机断电,高电平则电机上电。
默认高电平,无需从单片机单独引个IO口。
图一中将SLEEP和RESET针脚连接起来,目的是将RESET针脚设置为高电平,以便模块可控。
STEP:
脉冲输入,用于控制电机旋转的步数控制,输入一个方波,电机转动一步。
以1.8°电机,16细分为例,就是(1.8/16)°
说白了就是控制一个I/O口不断的高、低电平切换↓
void step(void)
{ STEP=0; //脉冲输入Delay(1); //延时 Delay(1)=1msSTEP=1; Delay(1);
}
DIR:
方向控制,低电平正转,高电平反转。
正转代码↓
#include <reg51.h>
/**********************延时函数****************/
void Delay(unsigned int xms) //延时函数 @12.000MHz Delay(1)=1ms
{unsigned char i, j;while(xms--) {i = 2;j = 239;do{while (--j);}while (--i);}
}
/***********************************************/
sbit DIR=P2^0; //方向控制,低电平正转,高电平反转
sbit STEP=P2^1; //脉冲输入,控制高低电平不断变化
sbit ENABLE=P2^5; //使能端,低电平启动
/***********分配细分方式引脚************/
sbit MS3=P2^2;
sbit MS2=P2^3;
sbit MS1=P2^4;
#define MS {MS1=0;MS2=1;MS3=0;} //选择细分方式4,可修改MS1~MS3的值选择细分方式//选择细分方式看表1
void steep(void)
{ STEP=0; //脉冲输入Delay(1); //延时 Delay(1)=1msSTEP=1; Delay(1);
}
void UP_dj(void) //正转
{DIR=0; //低电平正转step();}
void DN_dj(void) //反转
{DIR=1; //高电平反转step();
}
void main() //主函数
{MS //选择细分方式4ENABLE=0; //使能端,低电平启动while(1){UP_dj(); //正转}
}
正反转代码↓
#include <reg51.h>
unsigned int i,j;
/**********************延时函数****************/
void Delay(unsigned int xms) //延时函数 @12.000MHz Delay(1)=1ms
{unsigned char i, j;while(xms--) {i = 2;j = 239;do{while (--j);} while (--i);}
}
/***********************************************/
sbit DIR=P2^0; //方向控制,低电平正转,高电平反转
sbit STEP=P2^1; //脉冲输入,控制高低电平不断变化
sbit ENABLE=P2^5; //使能端,低电平启动
/***********分配细分方式引脚************/
sbit MS3=P2^2;
sbit MS2=P2^3;
sbit MS1=P2^4;
#define MS {MS1=0;MS2=1;MS3=0;} //选择细分方式4,可修改MS1~MS3的值选择细分方式//选择细分方式看表1
void step(void)
{ STEP=0; //脉冲输入Delay(1); //延时 Delay(1)=1msSTEP=1; Delay(1);
}
void UP_dj(void) //正转
{DIR=0; //低电平正转step();}
void DN_dj(void) //反转
{DIR=1; //高电平反转step();
}
void main() //主函数
{MS //选择细分方式4ENABLE=0; //使能端,低电平启动while(1){ for(i=0;i<5000;i++){ENABLE=0; //使能端,低电平启动UP_dj(); //正转}ENABLE=1; //高电平停止Delay(1000); //停止1sfor(j=0;j<5000;j++){ ENABLE=0; //启动DN_dj(); //反转}ENABLE=1; //高电平停止Delay(1000); //停止1s } }
延时函数的生成↓
利用烧录软件生成延时函数 新手学习
【51单片机】 A4988驱动模块驱动四线步进电机相关推荐
- 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)
资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...
- 51单片机蓝牙通讯精准控制步进电机简易教学
51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...
- 74hc164驱动数码管c语言程序,基于51单片机的74HC164驱动数码管显示程序与仿真
基于51单片机的74HC164驱动数码管显示程序与仿真 基于51单片机的74HC164驱动一位数码管显示程序与仿真 #include #include #define uchar unsigned c ...
- GC9A01-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)
GC9A01-TFT屏幕驱动 & 整理有stm32/51单片机/arduino等驱动代码 前言 关于GC9A01 stm32驱动 引脚接线 代码移植 文件复制 端口修改 显示函数 中文汉字数组 ...
- 基于51单片机的舞蹈机器人四路步进电机控制仿真
资料编号:091 下面是相关功能视频演示: 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 功能介绍:通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资 ...
- ST7735-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)
ST7735-TFT屏幕驱动 & 整理有stm32/51单片机/arduino等驱动代码 前言 关于ST7735 stm32驱动 引脚接线 代码移植 文件复制 端口修改 显示函数 中文汉字数组 ...
- 基于51单片机的OLED驱动方式(iic通讯方式)
基于51单片机的OLED驱动方式(iic通讯方式) 前言: 本人从事硬件开发,自学软件,因为发现在学习过程中,有很多问题对于没有项目实战经验的新手来讲太难解决了,可以说基本上是无从下手.现将自己学习过 ...
- 51单片机 IIC OLED驱动显示通用程序模板
51单片机 IIC OLED驱动显示通用程序模板 本模板是通过中景园OLED屏幕资料中提取保留ASCII字符集,点阵大小:6x8和8X16. 汉字取模方式 取模软件:pctolcd2002 /汉字取模 ...
- 51单片机实战教程(33 步进电机的驱动与控制)
步进电机虽然同为电机的一种,但不能像直流电机或者交流电机那样按额定电压与电流给线圈通上直流或交流电机就可正常运转.它需要专用的驱动器或驱动电路供电,才可正常工作.每给驱动器一个脉冲信号,电机就转动一定 ...
最新文章
- (四十三)java版spring cloud+spring boot+redis多租户社交电子商务平台-eureka集群整合config配置中心...
- Can't create layer 289 of type Squeeze in function 'cv::dnn::dnn4_v20190902::LayerData::getLaye
- VTK:Points之DensifyPoints
- 调焦后焦实现不同距离成像_“物镜校正环调节”对显微成像的影响
- 蚂蚁金服井贤栋:区块链和人工智能是影响未来的关键技术
- linux之权限管理_1
- [react] 在使用react过程中你都踩过哪些坑?你是怎么填坑的?
- 性能高1倍,价格低3/4!数据库实时同步新选择!
- 力扣——最长公共前缀
- python更换tkinter图标样式
- CentOS 5.5 安装VirtualBox
- 优化无极限:从96秒到1.5秒
- 启明星辰ADLab西南团队负责人王东:智能化的安全——设备应用ICS
- python cox模型_基于Cox比例风险模型的失效时间预测
- Java学习笔记(13)-构造方法
- 各种数据类型的取值范围(总结全)
- 阿里P9又有新瓜,而我却是技术圈的一股清流
- 微软首次公开 GitHub 产品路线图
- php程序员学什么语言好就业_中高级PHP程序员应该掌握哪些技术?
- springboot高校失物招领系统的设计与实现毕业设计源码121441
热门文章
- 智慧环保监测管理系统架构详情分析
- 腾讯确认QQ大规模盗号,iPhone14无缘Type-C,第四大运营商5G正式放号,今日更多大新闻在此...
- Amazon EMR 实战心得浅谈
- 数字钥匙最新进展文章
- 后序遍历c语言程序,C++对树进行后序遍历的代码
- Amazon Kinesis简介
- python docx模块如何删除段落_在pythondocx中更改段落格式
- 使用Topshelf创建Windows服务
- .net 中用TopShelf 实现windows服务
- 计算机网络第七版所有知识点,2019考研统考408计算机网络必背知识点(7)