Schrittmotor 28BYJ-48 mit ULN2003 Treiberplatine: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 90: Zeile 90:
| 3 || Versorgungsspannung VCC || Rot
| 3 || Versorgungsspannung VCC || Rot
|}
|}
* The sequence of control signals for 4 control wires is as follows:
*
* Step C0 C1 C2 C3
*    1  1  0  1  0
*    2  0  1  1  0
*    3  0  1  0  1
*    4  1  0  0  1
Konstruktor
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2,
                                int motor_pin_3, int motor_pin_4);
    // speed setter method:
    void setSpeed(long whatSpeed);
    // mover method:
    void step(int number_of_steps);
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Stepper.h - Stepper library for Wiring/Arduino - Version 1.1.0&thinsp;</strong>
|-
| <syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size:larger">
// ensure this library description is only included once
#ifndef Stepper_h
#define Stepper_h
// library interface description
class Stepper {
  public:
    // constructors:
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2);
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2,
                                int motor_pin_3, int motor_pin_4);
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2,
                                int motor_pin_3, int motor_pin_4,
                                int motor_pin_5);
    // speed setter method:
    void setSpeed(long whatSpeed);
    // mover method:
    void step(int number_of_steps);
    int version(void);
  private:
    void stepMotor(int this_step);
    int direction;            // Direction of rotation
    unsigned long step_delay; // delay between steps, in ms, based on speed
    int number_of_steps;      // total number of steps this motor can take
    int pin_count;            // how many pins are in use.
    int step_number;          // which step the motor is on
    // motor pin numbers:
    int motor_pin_1;
    int motor_pin_2;
    int motor_pin_3;
    int motor_pin_4;
    int motor_pin_5;          // Only 5 phase motor
    unsigned long last_step_time; // time stamp in us of when the last step was taken
};
#endif
</syntaxhighlight>
|-
|}
== Demo ==
== Demo ==
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/AlphaBot/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSchrittmotor28BYJ-48 SVN: DemoSchrittmotor28BYJ-48.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/AlphaBot/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSchrittmotor28BYJ-48 SVN: DemoSchrittmotor28BYJ-48.ino]

Version vom 20. November 2023, 11:53 Uhr

Abb. 1: Schrittmotor 28BYJ-48 mit ULN2003 Treiberplatine

Autoren: Prof. Dr.-Ing. Schneider

Einleitung

Dieser Motor ist der Klassiker zur Ansteuerung von Schrittmotoren mit Arduino-Mikrocontrrollern. Durch das vorgelagerte Getriebe erzeugt der Schrittmotor auch ohne externe Spannungsquelle eine vergleichsweise hohe Kraft (hohes Drehmoment).


Bei diesem Schrittmotor handelt es sich um einen Schrittmotor, der sich speziell für kleine Anwendungen mit dem Arduino-Board eignet. Die Besonderheit liegt darin, dass er ohne eine externe Spannungsversorgung betrieben werden kann. Der Motor entwickelt dabei ein relativ hohes Drehmoment. Dies wird durch ein Getriebe realisiert, welches innerhalb des Metallgehäuses vor dem eigentlichen Schrittmotor verbaut wurde. Dadurch wird es in dieser kompakten Bauweise überhaupt erst möglich, dass sich eine ganze Umdrehung der Antriebswelle auf 2048 Einzelschritte aufteilen lässt. Ein kleiner daraus resultierender Nachteil ist die langsame maximale Drehgeschwindigkeit.

Der Schrittmotor wird an eine Motorsteuerungsplatine angeschlossen. Diese versorgt den Motor mit ausreichend elektrischer Energie, damit die Leistung nicht von den digitalen Pins des Arduino-Boards aufgebracht werden muss. Die Steuerungsplatine gibt es in zwei Versionen, bei denen die seitlich angebrachten Pins entweder nach oben oder nach unten aus der Platine herausragen. Die Anschlussbelegung ist jedoch gleich.

Technische Daten

Tabelle 1: Technische Daten des Schrittmotor 28BYJ-48 mit ULN2003 Treiberplatine
Anzahl Phasen 4
Getriebe 1/64
Schritte pro Umdrehung 2048
Schrittweite 5,625 · 1/64
Drehmoment 34.3 Nm
Versorgungsspannung 5 V
Lautstärke <40 dB
Kabellänge 24 cm
Leehrlaufgeschwindigkeit 17 UPM
Außendurchmesser Motorgehäuse 28 mm

Pinbelegung

Abb. 2: Anschlussplan für den Betrieb am Arduino
Pin Belegung Farbe
1 Ausgang Gelb
2 Masse (GND) Schwarz
3 Versorgungsspannung VCC Rot
3 Versorgungsspannung VCC Rot
3 Versorgungsspannung VCC Rot
* The sequence of control signals for 4 control wires is as follows:
*
* Step C0 C1 C2 C3
*    1  1  0  1  0
*    2  0  1  1  0
*    3  0  1  0  1
*    4  1  0  0  1

Konstruktor

   Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2,
                                int motor_pin_3, int motor_pin_4);
   // speed setter method:
   void setSpeed(long whatSpeed);
   // mover method:
   void step(int number_of_steps);

Demo

Videos

Video 1: Arduino kurzgefasst - 28BYJ-48 der preiswerte Schrittmotor
Video 2: 28BYJ-48 stepper motor and ULN2003 Arduino
Video 3: The Cheapest Stepper Motor And How You Use It
Video 4: 28BYJ-48 Stepper Motor Disassembly

Hilfreiche Links

Datenblatt

Literatur