< >
Home » Arduino库教程 » Arduino库教程-Stepper-Stepper Speed Control

Arduino库教程-Stepper-Stepper Speed Control

Stepper Speed Control

  • 步进电机,由于其独特的设计,可以没有任何反馈机制而控制到一个高度的准确性。一个步进电机的轴,安装有一系列的磁铁,是由一系列的电磁线圈控制,这些线圈按一个特定的序列排列正负极,尤其是向前或向后移动一小“步”。

  • 有两种类型的步进电机,单极型双极型晶体管,而且知道你正在使用哪种类型是非常重要的。每种电机,都有一个不同的电路。示例代码将控制两种电机。看看单极性和双极性电机的原理图,和关于如何连接你的电机的信息。

  • 在这个例子中,一个在模拟输入A0的电位器(或其他传感器)通过Arduino Stepper 库被用来控制一个步进电机的转速。无论是单极或双极电机,均由数字引脚8,9,10,和11控制步进。

  • 如果你正在使用一个单极型步进电机,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 - speed control

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.
 A potentiometer is connected to analog input 0.

 The motor will rotate in a clockwise direction. The higher the potentiometer value,
 the faster the motor speed. Because setSpeed() sets the delay between steps,
 you may notice the motor is less responsive to changes in the sensor value at
 low speeds.

 Created 30 Nov. 2009
 Modified 28 Oct 2010
 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() {
  // nothing to do inside the setup
}

void loop() {
  // read the sensor value:
  int sensorReading = analogRead(A0);
  // map it to a range from 0 to 100:
  int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
  // set the motor speed:
  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);
    // step 1/100 of a revolution:
    myStepper.step(stepsPerRevolution / 100);
  }
}

[Get Code]
更多

  • Stepper myStepper = Stepper(steps, pin1, pin2, pin3, pin4)
  • stepper.setSpeed()
  • stepper.step()
  • Stepper library reference
  • Motor Knob: 使用一个电位器控制一个高度精确的步进电机。
  • StepperOneRevolution - 顺时针旋转一圈,逆时针旋转一圈。
  • StepperOneStepAtATime - 一步一步转动轴来检查电机是否正确接线。
  • StepperSpeedControl - 用电位器控制步进速度。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: arduino库教程, arduino stepper speed control