A4988驱动步进电机
A4988一般用arduino来驱动,我是用STM32F103驱动的。
首先推一个网页,https://www.pololu.com/product/1182,上面有比较详细和专业的说明,还有一个关于限制电流使细分更精确的视频讲解,总之,专业。然后推一个datasheet,https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf
我用的是
驱动比较好写,首先要弄清楚接线方式。
代码:
motor.c
//IO初始化
void MOTOR_Init(void)
{RCC->APB2ENR|=1<<3;GPIOB->CRH&=0xff000000;GPIOB->CRH|=0x00333333;
}
//细分
// x==1 全步
// x==2 半步
// x==4 1/4步
// x==8 1/8步
// x==16 1/16步
void Step_Micr(u16 x)
{switch(x){case 1:Full_step;break;case 2:Half_step;break;case 4:Quarter_step;break;case 8:Eighth_step;break;case 16:Sixteenth_step;break;default:break;}
}
//参数
// dir:FALSE 正转TRUE反转
// period 周期
// step 脉冲
void Step_Control(u8 dir,u16 period,u32 steps)
{u32 i;for(i=0; i <= steps;i++){DIR = dir;STEP = 1;delay_us(1);STEP = 0;delay_us(period);//periodԽС£¬×ªËÙÔ½¿ì£¬²»ÒªÐ¡ÓÚ1000}
}
//此函数可抱死
// 0 抱死
// 1 正常
void Step_Enable()
{ENABLE = 0;
}motor.h
#define STEP PBout(8) //step
#define DIR PBout(9) //dir
#define MS1 PBout(10)//MS1
#define MS2 PBout(11)//MS2
#define MS3 PBout(12)//MS3
#define ENABLE PBout(13)//ENABLE
//细分宏定义
#define Full_step {MS1 = 0;MS2 = 0;MS3 = 0;}
#define Half_step {MS1 = 1;MS2 = 0;MS3 = 0;}
#define Quarter_step {MS1 = 0;MS2 = 1;MS3 = 0;}
#define Eighth_step {MS1 = 1;MS2 = 1;MS3 = 0;}
#define Sixteenth_step {MS1 = 1;MS2 = 1;MS3 = 1;} void MOTOR_Init(void);
void Step_Micr(u16 x);
void Step_Enable(void);
void Step_Control(u8 dir,u16 period,u32 steps);main.c
int main(void)
{int i=0;Stm32_Clock_Init(9);delay_init(72);MOTOR_Init();Step_Micr(1);//1/2/4/8/16 for(i=0;i<10;i++){Step_Control(FALSE,1600,200);//正转delay_ms(1000);Step_Control(TRUE,1600,200);//反转delay_ms(1000);}Step_Enable();//抱死while(1){}
}
实现全步状态下正转一圈,反转一圈,持续一会儿后抱死。
A4988驱动步进电机相关推荐
- c语言编程a4988驱动步进电机,A4988 步进电机驱动模块测试
A4988控制逻辑简单,主要分为睡眠.正反转.复位.使能.细分等模式控制. (1)睡眠模式:Sleep管脚电平置0,进入睡眠模式,驱动器输出待机模式:Sleep管脚置1,驱动器处于正常工作状态: (2 ...
- 使用Arduino与A4988 驱动步进电机
初识Arduino,有什么错漏的地方请指正. 学会使用A4988驱动电机对于DIY3D打印机,雕刻机很有帮助. 实验目的:Arduino与A4988驱动42步进电机 材料如下: Arduino uno ...
- c语言编程a4988驱动步进电机,A4988步进电机单片机驱动程序
/*************************************************************** * 实 验 名 :步进电机实验 * 实验说明 :电机启动.停止.正转. ...
- Arduino CNC电机扩展板详解(A4988驱动42步进电机)
原文地址:http://www.taichi-maker.com/homepage/reference-index/motor-reference-index/arduino-cnc-shield/ ...
- 基于51单片机驱动A4988实现步进电机逆时针转动
基于51单片机驱动A4988实现步进电机逆时针转动 一.简介 二.接线 典型接线图 实际接线 三.部分代码 引脚定义 定时器初始化 主函数 四.实验现象 五.注意事项 一.简介 A4988 是一款完全 ...
- A4988驱动NEMA步进电机(42步进电机)
A4988驱动NEMA步进电机(42步进电机) 原文地址:http://www.taichi-maker.com/homepage/reference-index/motor-reference-in ...
- 树莓派入门(八)之树莓派与A4988 驱动42步进电机
在树莓派入门(三)里面我介绍了如何驱动步进电机,当时驱动的步进电机是那种比较简单精度不是那么高的电机,今天我们驱动的是比较复杂的步进电机.当然,这里我还是以arduino为例,但是会给出树莓派的代码. ...
- 【51单片机】 ULN2003模块 驱动步进电机(5线)正反转 代码以及接线图(简单教学,一看就会)
步进电机有四相(A-B-C-D) 正向转动思路为A→B→C→D 反向转动思路为D→C→B→A 通过给每一相轮流供电,实现电机轴的360度转动 ..以下代码可直接复制使用: #include <r ...
- 【STM32篇】4988驱动步进电机
本文介绍的步进电机驱动为毕设所用,学习时也借鉴了其他博主和商家的资料,介绍的都很详细.但对于刚入门的友友萌来说,可能还会存在的一些不解.而我就是被卡在驱动电源上.下文为我对4988驱动的一些理解,希望 ...
最新文章
- 小程序开发(10)-之热力图解决方案、手绘图
- Github上都没有的“网约车”项目,终于有人给写出来了!
- 容器编排技术 -- 使用kubectl实现应用滚动更新
- li标签行内元素高度及居中
- Unix网络编程 chart
- UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】
- 【车间调度】基于matlab粒子群算法求解车间生产调度问题【含Matlab源码 245期】
- 【小伟哥AI之路】海康摄像头近距离不能对焦模糊问题
- UMLChina公众号文章精选(20220330更新精选)
- win10+hexo+github搭建个人博客
- 小米钱包笔试算法2020-12
- Java真题笔记|华为
- FAQ:redis key/value 前面出现\xAC\xED\x00\x05t\x00\x05
- android手机执行shell脚本
- 如何在任务管理器结束任务
- Whistle使用手册
- 中国质量认证中心CQC修订便携式电子设备用电池和电池组安全认证实施规则
- 集成学习(Ensemble Learning),Bagging、Boosting、Stacking
- UnityHDRP中雪地留下脚印的Shader
- android 招聘需求整理
热门文章
- 创业实践案例课程报告
- YOLOv5识别图像内苹果和香蕉
- sigaction函数中 SA_NODEFER与sa_mask之间
- 【更新!】3dMax材质ID随机生成器插件MaterialIDsRandomGenerator v2.1.2使用教程
- 腾云忆想技术文|CREDIS在TMF平台中的落地实践
- 平衡二叉树(AVL)的左旋和右旋
- VB6语言语音通知接口DEMO示例
- 【观察】加速自动驾驶落地,华为OceanStor Pacific有何“独门秘籍”?
- Windows运行(快捷键Win+R)命令大全 及 快捷键
- 中国计算机软件工程大学专业,全国开设软件工程专业院校有哪些 都有什么大学名单...