Arduino库教程-Stepper-Stepper One Step At A Time
One step at a time
步进电机,由于其独特的设计,可以没有任何反馈机制而控制到一个高度的准确性。一个步进电机的轴,安装有一系列的磁铁,是由一系列的电磁线圈控制,这些线圈按一个特定的序列排列正负极,尤其是向前或向后移动一小“步”。
有两种类型的步进电机,单极型和双极型晶体管,而且知道你正在使用哪种类型是非常重要的。每种电机,都有一个不同的电路。示例代码将控制两种电机。看看单极性和双极性电机的原理图,和关于如何连接你的电机的信息。
在这个例子中,一个在模拟输入A0上的电位器(或其他传感器)是用通过Arduino Stepper 库来控制步进电机的运动。无论是单极或双极电机,均由数字引脚8,9,10,和11控制步进。
如果你正在使用一个单极型步进电机,Arduino或genuino开发板将会连接到一个U2004达林顿管阵列。或者连接到SN754410NE H-桥,如果你有一个双极电机。
在这个例子中,电机将一次走一步,非常缓慢。您可以使用这个来测试你已经让你的步进电机的四线正确连上正确的引脚。如果连接正确,所有的步骤都应该在同一个方向。你也可以用这个程序来计算你的电机在一个周期中所走的步骤的数量。
如果你正在使用一个单极型步进电机,Arduino或genuino开发板将会连接到一个U2004达林顿管阵列。或者连接到SN754410NE H-桥,如果你有一个双极电机。
更多关于这两种类型的差异的信息,请看Tom Igoe's page on stepper motors。
硬件要求
- Arduino or Genuino Board
- 10k ohm 电位器
- 步进电机
- U2004 达林顿管阵列 (如果用单极型电机)
- SN754410ne H-桥 (如果用双极型电机)
- 合适的为你的步进电机供电的电源
- 连接线
- 面包板
电路
下面你会发现电路为单极性和双极性步进电机。在任何一种情况下,最好是你的步进电机从外部供电,因为直接从你的Arduino电路板供电,他们会汲取太多能量。
在这两种电路里,连接一个10K的电位器到电源和接地,而它的wipper输出到模拟引脚A0。
注意:下面的两个电路都是四线配置。两条线配置将不会与提供的代码一起工作。
单极型步进电路和原理图
双极型步进电路和原理图
样例代码
对单极型和双极型步进机
/*
Stepper Motor Control - one step at a time
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor will step one step at a time, very slowly. You can use this to
test that you've got the four wires of your stepper wired to the correct
pins. If wired correctly, all steps should be in the same direction.
Use this also to count the number of steps per revolution of your motor,
if you don't know it. Then plug that number into the oneRevolution
example to see if you got it right.
Created 30 Nov. 2009
by Tom Igoe
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // 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);
int stepCount = 0; // number of steps the motor has taken
void setup() {
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one step:
myStepper.step(1);
Serial.print("steps:");
Serial.println(stepCount);
stepCount++;
delay(500);
}
[Get Code]
更多
- Stepper myStepper = Stepper(steps, pin1, pin2, pin3, pin4)
- stepper.setSpeed()
- stepper.step()
- Stepper library reference
- Motor Knob: 使用一个电位器控制一个高度精确的步进电机。
- StepperOneRevolution - 顺时针旋转一圈,逆时针旋转一圈。
- StepperOneStepAtATime - 一步一步转动轴来检查电机是否正确接线。
- StepperSpeedControl - 用电位器控制步进速度。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号