Arduino步进电机控制程序是一种可以控制步进电机的程序,它可以帮助我们实现对步进电机的控制。步进电机是一种常见的驱动器,它可以将输入信号转换为特定的转动角度,并且具有高精度、低噪声、低耗能、高效率和高可靠性的优势。
Arduino步进电机控制程序通常包含三个部分:步进电机驱动器、Arduino板子和相关的传感器。在使用Arduino板子控制步进电机时,我们必须将Arduino板子与步进电机驱动器相连接,并根据所使用的传感器来设定相应的参数。
// 定义引脚 int dirPin = 8; // 方向引脚 int stepPin = 9; // 步进引脚 int enPin = 10; // 使能引脚 // 定义参数 int stepsPerRevolution = 200; // 此处为200步/圈 // 设定速度(1-255) int speed = 100; // 此处为100 // 设定方向(0-1) int direction = 1; // 此处为1 void setup() { pinMode(dirPin, OUTPUT); pinMode(stepPin, OUTPUT); pinMode(enPin, OUTPUT); digitalWrite(enPin, LOW); // 启动使能引脚 } void loop() { digitalWrite(dirPin, direction); // 设定方向 for (int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(speed); digitalWrite(stepPin, LOW); delayMicroseconds(speed); } }
步进电机是无刷同步电机,它将完整的旋转分成多个步骤。与无刷直流电机不同,当向其施加固定的直流电压时,它将连续旋转,步进电机以不连续的步进角旋转。
因此,步进电机被制造成具有每转12,24,72,144,180和200的步长,从而产生每步30°,15°,5°,2.5°,2°和1.8°的步进角。步进电机可以有或没有反馈控制。
想象一下在RC飞机上的电机。电机在一个方向或另一个方向上转速非常快。你可以通过给予电机的功率量来改变速度,但是你不能让螺旋桨停在特定位置。
现在想象一个打印机。打印机内有很多移动部件,包括电机。一个电机用作进纸,当墨水开始印在纸上时旋转滚轴移动纸张。此电机需要能够将纸张移动一个精确的距离,以便能够打印下一行文本或图像的下一行。
还有另一个电机连接到一个螺杆上来回移动打印头。同样,该螺杆需要移动一个精确的量,以便一个字母接一个地打印。这就是步进电机派上用场的地方。
常规的直流电动机只在方向上旋转,而步进电动机可以以精确的增量旋转。
步进电机可以根据需要转动精确的度数(或步长)。这使你可以完全控制电机,允许你将其移动到精确的位置并保持在该位置。它通过为电机内部的线圈非常短时间的供电来实现。缺点是你必须给电机一直供电,以将它保持在你想要的位置。
你现在需要知道的是,要移动步进电机,你要告诉它在一个方向或另一个方向上移动一定数量的步进,并告诉它沿那个方向步进的速度。步进电机的种类繁多。这里描述的方法可以用于推断如何使用本教程中未提到的其他电机和驱动程序。但是,始终建议你查阅针对具体型号的电机和驱动器的数据表和指南。
你将需要以下组件:
按照电路图进行连接,如下图所示。
在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。
#include <Stepper.h> const int stepsPerRevolution = 90; // change this to fit the number of steps per revolution // for your motor // initialize the stepper library on pins 8 through 11: Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); void setup() { // set the speed at 60 rpm: myStepper.setSpeed(5); // initialize the serial port: Serial.begin(9600); } void loop() { // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); // step one revolution in the other direction: Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }
该程序驱动单极或双极步进电机。电机连接到Arduino的数字引脚8-11。
电机将在一个方向上旋转一圈,然后在另一个方向上旋转一圈。
此示例将向你展示如何读取模拟引脚0上的模拟输入。输入从analogRead()转换为电压,并打印输出到Arduino软件(IDE)的串口监视器...
dialog模块提供了api来展示原生的系统对话框,例如打开文件框,alert框,所以web应用可以给用户带来跟系统应用相同的体验.对话框...
Electron 应用打包为舒缓 Windows 下路径名过长的问题,也略对require加速以及简单隐匿你的源代码,你可以通过极小的源代码改动...
在安卓设备上使用 Chrome 远程调试功能你的网页内容在移动设备上的体验可能和电脑上完全不同。Chrome DevTools 提供了远程调试功...
任何数据分析和可视化工作都涉及使用广泛的数据过滤。Tableau有很多种过滤选项来满足这些需求。有许多内置函数用于对使用维度和...
grunt.task注册、执行和加载外部任务。参见task lib source和task util lib source获取更多信息。The task API当一个任务正在执...
介绍ToggleButtonBar控件提供了一组水平或垂直按钮,以保持其选定或取消选择的状态。类声明以下是 mx.controls.ToggleButtonBar ...