ARDUINO:控制两台步进电机同步运转

要控制两台步进电机同步进行运转,即同时起步,同时加速,同时到达最大速度,同时减速,最后同时停止。
这是要有一定的算法的:
假如B1电机所走的路程是B2的n倍,在同时起步的前提下,v1=n*v2,a1=n*v2, 才能保证以上的同步结果。


ARDUINO:控制两台步进电机同步运转_第1张图片

本文程序是在太极创客程序的基础上对其修改后的,接线方式完全保持不变。主要的修改如下:

1, data(电机指令参数)和 stepperNum(控制电机编号) 两个变量改为数组;

2,data(电机指令参数)和 stepperNum(控制电机编号) 两个变量由int改为long int;

3, runUserCmd()例程中if语句逻辑关系的修改。
 

在输入以下命令后,可以看到两个步进电机的运行始终保持同步:

 a100,20
 x500,10
 m10240,2048

/* Arduino通过AccelStepper库控制28BYJ-48步进电机示例程序-2
  by 太极创客(www.taichi-maker.com)
  可通过Arduino IDE 串口监视器输入电机指令
  本程序旨在演示move/moveTo/runToNewPosition区别 (两个28BYJ-48电机演示)
  
  如需获得本示例程序详细电路信息以及如何使用Arduino控制电机的更多知识,请参考太极创客网站:
  http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/accelstepper-library/
 
 * 电机指令列表
 * 'o' 利用currentPosition获取当前电机输出轴位置并通过串口监视器输出该信息
 * 'v' 利用moveTo函数使电机运行到用户指定坐标位置,moveTo函数不会“block”程序。
 *     例:v1024 - 将电机moveTo到1024位置
 * 'm' 利用move函数使电机运行相应步数。move函数不会“block”程序。
 *     例:m1024 - 使电机运行1024步 
 * 'r' 利用runToNewPosition函数让电机运行到用户指定坐标位置。runToNewPosition函数功能
 *     与moveTo函数功能基本相同。唯一区别是runToNewPosition函数将“block”程序运行。
 *     即电机没有到达目标位置前,Arduino将不会继续执行后续程序内容。
 *     这一点很像Arduino官方Stepper库中的step函数。
 *     例:r1024 - 将电机ru

你可能感兴趣的:(智能机器,编程语言)