arduino通过CNC SHIELD(A4988)控制两个步进电机
arduino通过CNC SHIELD(A4988)控制两个步进电机
目的
本例程使用arduino通过CNC SHIELD(A4988模块)控制两个步进电机运动
内容来源
修改太极创客关于AccelStepper步进电机库的原始代码
太极创客链接: http://www.taichi-maker.com/homepage/arduino-tutorial-index/arduino-hardware/motor-9/
修改的代码如下,实际使用中发现Y电机一直朝一个方向转,想要反方向转需要在run函数前定义旋转方向,排除了硬件问题,不知道是为什么,如果有老哥知道还麻烦评论说一下。
/**本例程使用arduino通过CNC SHIELD(A4988模块)控制两个步进电机运动*步进电机接线:*A+ A- B+ B-*红 蓝 绿 黑*红 绿 蓝 黄
*/#include "AccelStepper.h"// 电机步进方式定义
#define FULLSTEP 4 //全步进参数
#define HALFSTEP 8 //半步进参数#define EN 8 //步进电机使能端,低电平有效
#define X_DIR 5 //X轴步进电机方向控制
#define Y_DIR 6 //y轴步进电机方向控制
#define Z_DIR 7 //z轴步进电机方向控制
#define X_STP 2 //x轴步进控制
#define Y_STP 3 //y轴步进控制
#define Z_STP 4 //z轴步进控制// 定义两个步进电机对象
// X电机设置为全步进运行,Y电机设置为全步进运行
AccelStepper stepperX(FULLSTEP,X_STP,X_DIR);//建立步进电机对象1
AccelStepper stepperY(FULLSTEP,Y_STP,Y_DIR);//建立步进电机对象2void setup()
{ //将步进电机用到的IO管脚设置成输出pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT);//pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT);pinMode(EN, OUTPUT);digitalWrite(EN, LOW);stepperX.setMaxSpeed(10000); // 设置电机最大速度为1500stepperX.setAcceleration(5000.0); // 设置电机加速度200.0stepperX.setSpeed(500); // 初始化电机速度为300stepperY.setMaxSpeed(10000); // 设置电机最大速度为1500stepperY.setAcceleration(5000.0); // 设置电机加速度200.0stepperY.setSpeed(500); // 初始化电机速度为300
}void loop()
{ // 转动一定圈数if ( stepperX.currentPosition() == 0 && stepperY.currentPosition() == 0 ){// X电机转动一周stepperX.moveTo(2048); // Y电机转动一周stepperY.moveTo(2048); } else if ( stepperX.currentPosition() == 2048 && stepperY.currentPosition() == 2048 ){stepperX.moveTo(0); // 不知道为什么不能回转stepperY.moveTo(0); } stepperX.run(); // 1号电机运行//digitalWrite(Y_DIR, false);stepperY.run(); // 2号电机运行// //匀速运行
// stepperX.setSpeed(1500);
// //digitalWrite(Y_DIR, false);
// stepperY.setSpeed(1500);
// stepperX.runSpeed();
// stepperY.runSpeed();
}
arduino通过CNC SHIELD(A4988)控制两个步进电机相关推荐
- ARDUINO:控制两台步进电机同步运转
要控制两台步进电机同步进行运转,即同时起步,同时加速,同时到达最大速度,同时减速,最后同时停止. 这是要有一定的算法的: 假如B1电机所走的路程是B2的n倍,在同时起步的前提下,v1=n*v2,a1= ...
- Arduino(2560)控制两个步进电机通过控制器
Arduino 2560控制两个步进电机 用arduino和步进电机控制器驱动两个步进电机,具体的接线过程和怎样连接都在图片上. 准备工具: 两个步进电机(我用的是J42): Arduino板(我用的 ...
- 89c52单片机控制两个步进电机正反转加减速(程序+仿真)
89c52单片机控制两个步进电机正反转加减速(程序+仿真) 先上图: 源代码: /*********************************************************** ...
- 单片机控制两个步进电机画圆_基于单片机的步进电机转速控制设计详解(附程序)...
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角.这 ...
- 单片机控制两个步进电机画圆_51单片机控制两个步进电机
/*----------------------------------------------- 步进电机控制 ------------------------------------------- ...
- ros中的电机速度控制_【RosBot】控制两路步进电机-学习笔记1-Arduino中文社区 - Powered by Discuz!...
本帖最后由 动手党 于 2017-12-11 20:05 编辑 收到之前比赛兑换的RosBot 基础板,顺便做一个学习笔记吧 一. 板子做工和用料 rosbot主板1.jpg (302.71 KB, ...
- Arduino Uno开发板+电机驱动扩展版CNC Shield V3.0硬件说明
陈拓 2023/03/24-2023/03/29 1. Arduino CNC Shield V3.00电机驱动扩展版 注意:板子左侧中间的玻璃管是玻封保险丝. Arduino CNC Shield可 ...
- proteus仿真arduino控制两位数码管
前面我们用arduino控制一位数码管,知道了控制数码管的原理.这里我们增加了一位,其显示的原理基本一样.只不过本质上不是两位同时点亮,而是轮换点亮.下面是原理图: 我们来看看代码的实现: int P ...
- 利用Arduino+TB6600驱动模块控制两相四线42减速步进电机
实验目的:利用Arduino+TB6600驱动模块控制两相四线42减速步进电机 材料: Arduino Nano *1 TB6600驱动器 *1 42减速步进电机*1 面包板 ...
最新文章
- python里面的之前打过的记忆信息-Python关键语句备忘录,拯救你的记忆
- mysql max connects_mysql max_connections 总是 4190
- 从2-3-4树谈到Red-Black Tree(红黑树)
- 【转】一个安全测试的CheckList
- 冒充中科大少年班校友被打脸!AI 公司创始人被扒清华硕士和斯坦福博士均造假...
- c# 十六进制转为字节_如何在C#中将具有十六进制内容的字节数组转换为具有十进制的字符串...
- 系统管理员不可不知的三条黄金法则
- Java中异常处理示例
- android华为状态栏字体颜色,Flutter修改状态栏颜色以及字体颜色
- Sublime增加GBK编码格式
- 数字营销浪潮下,企业如何打赢流量反欺诈攻防战?
- Qt知识点梳理 —— 静态函数发送信号
- POI 单元格设置背景颜色失效(背景色设置方式),以及背景颜色生效后单元格边框线消失问题解决
- Postman批量运行
- 怎么设置360主页的html,360安全浏览器怎么设置主页 设置主页原来这么简单
- 双电阻差分电流采样_1206 0.35R采样毫欧电阻等规格参数应用详情
- HTML外边框塌陷什么意思,html-margin塌陷 :
- 黑色素瘤的最新研究进展(2021年5月)
- 二级python——(三)format()方法的基本使用
- IP地址及子网掩码介绍及计算详解