Arduino Lektion 56: 4 Phasen Schrittmotor steuern

Schrittmotor 28BYJ-48 mit Treiberplatine ULN2003
Schrittmotor 28BYJ-48 mit Treiberplatine ULN2003

In diesem Tutorial möchte ich gerne den 5V , 4 Phasen Schrittmotor mit Treiberplatine ULN2003 vorstellen.

Schrittmotor 28BYJ-48 mit Treiberplatine ULN2003
Schrittmotor 28BYJ-48 mit Treiberplatine ULN2003

Bezug

Den 5 V, 4 Phasen Schrittmotor vom Typ „28BYJ-48 ULN2003“ kann man über eBay.de und amazon.de günstig erwerben. Wobei man darauf achten sollte das es das „komplett Set“ ist, denn es gibt den Motor und die Platine einzeln jedoch ist das „komplett Set“ günstiger zu erwerben.

Technische Daten des  4 Phasen Schrittmotor

  • Betriebsspannung des Schrittmotors 5V
  • Betriebsspannung der Platine 5V / 12V (einstellbar über einen Jumper)
  • Abmaße
    • Durchmesser des Motors 28mm
    • Platinengröße 40,5mm x 21,3mm

Der Schrittmotor hat eine Übersetzung mit einem Zahnradgetriebe von 1: 64 d.h. für eine Umdrehung von 360° benötigt dieser Schrittmotor

360° : 64 Schritte = 5,625°  pro Schritt.

Bei einer Halbschritt Übersetzung bedeutet das, dass wir 64 * 64 Schritt für eine volle Umdrehung benötigen.
64 * 64 = 4096 Schritte pro voller Umdrehung

Diese Berechnung erfolgte aus den Angaben aus dem Datenblatt des Schrittmotors 28BYJ-48.

Aufbau

Für den Aufbau der Schaltung verwende ich einen Wemos D1 mini, dieser verfügt über ein Wifi Modul welches wir später in einem Beispiel verwenden wollen.

Aufbau - Schrittmotor am Wemos D1 Mini
Aufbau – Schrittmotor am Wemos D1 Mini

Der Schrittmotor wird mit einer Treiberplatine geliefert (Bezeichnung UNL2003) an diese kann man eine 5V oder 12V Versorgungsspannung anlegen. Die 5V liefert der Microcontroller, jedoch sollte man hier aufpassen das die Last des Motors nicht zu hoch wird denn mit der Last steigt die Stromaufnahme und der Microcontroller ist hier leider begrenzt.

UNL2003 Wemos D1 mini
IN1 D5
IN2 D6
IN3 D8
IN4 D7
GND
+ 5V

Schaltung

Schaltung - Wemos D1 Mini und Schrittmotor
Schaltung – Wemos D1 Mini und Schrittmotor

Ermitteln der Kraft des Schrittmotors

Der Schrittmotor hat je nach Geschwindigkeit eine stärkere bzw. geringere Kraft um ein Objekt wie zbsp. eine Welle zu bewegen. Ich möchte nun einmal einen kleinen Versuch starten eine 0,5l Wasserflasche aus einer Höhe von ca. 75cm anzuheben. Dabei werde ich die Flasche immer mehr füllen und auch die Geschwindigkeit erhöhen.

Aufbau Winde zum ermitteln der Kraft des Schrittmotors
Aufbau Winde zum ermitteln der Kraft des Schrittmotors

Es konnte ermittelt werden das, der Schrittmotor eine Maximale Kraft von 300g (3Nm) ab der Geschwindigkeitsstufe 2 aufbringen kann. Die Stufe 1 ist die Schnellste kann jedoch weniger Kraft aufbringen.

Tabelle mit den Messergebnissen
Tabelle mit den Messergebnissen

Quellcode

Für die nachfolgenden Beispiele wird die Bibliothek „Arduino-and-ULN2003-Stepper-Motor-Driver“ von rydepier benötigt. Diese Bibliothek kann man sich aus dem GitHub Repository herunterladen.

Wie man eine Bibliothek in der Arduino IDE installiert habe ich im Tutorial Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.

Einfaches Beispiel

Der Bibliothek „StepperMotor“ liegt bereits ein Beispiel bei welches nach einer kleinen Konfiguration sofort lauffähig ist.

Video

Wemos D1 Mini mit 4 Phasen Schrittmotor 28BYJ-48 und Teiberplatine ULN2003

Webseite zum steuern des Schrittmotors 28BYJ-48 mit Treiberplatine ULN2003

Durch einen Kommentar auf einem meiner früheren Beiträge, bin ich auf eine wohl performantere Lösung von Seitenaufrufen hingewiesen worden. Dieses möchte ich nun in diesem Beispiel anwenden.

Die Webseite soll auf einem mobilen Endgerät laufen daher wähle ich die Einstellung für einen AccessPoint.

Damit sich mein Handy (Huawei P20 lite) mit dem Netzwerk verbinden konnte,  musste ich die Mobilen Daten sowie die Einstellung „WLAN+“ unter den WLAN Einstellungen deaktivieren.

Erstellen der Webseite

Die Webseite muss als String im Sketch hinterlegt werden. Ich schreibe zuerst die Seite in einem Editor wie Notepad++ oder PSPad da diese mit einem entsprechenden Highlighting beim schreiben unterstützt.

Webseite für die Steuerung des Schrittmotors
Webseite für die Steuerung des Schrittmotors
Quellcode der Webseite

Nachfolgend nun den Quellcode für die Webseite.
Dieser Code muss noch um die echte IP-Adresse des Servers ergänzt werden dieses wird dann im Quellcode des Sketches erfolgen.

Dieser Html Code muss nun in den Arduino Sketch eingefügt werden. Dazu werde ich diesen Code auf das Minimum reduzieren, d.h. alle unnötigen Leerzeichen sowie Zeilenumbrüche werden entfernt.

Das kann man per Hand oder aber auch bequem über eine Seite wie https://www.willpeavy.com/minifier/ lösen.

Das Ergebnis zu meinem Code wäre:

Die Lesbarkeit ist nun auf fast 0% gesunken, jedoch sind durch diese Art der Komprimierung die Bytes welche für den String benötigt werden gesunken.

Ergebnis der Komprimierung durch Minify einer Html Seite
Ergebnis der Komprimierung durch Minify einer Html Seite

Damit diese Seite später in dem Sketch verwendet werden kann müssen alle Anführungszeichen escaped werden, d.h. es muss ein Backslash „\“ davor gestellt werden. Dieses mache ich in der Anwendung NotePad++ durch die Funktion „Suchen & Ersetzen“.

Durch das bearbeiten der Seite kann diese nun nicht mehr mit einem Browser vernünftig dargestellt werden.

Aufbau des Sketches in der Arduino IDE

Erzeugen des AccesssPoints

Wie man einen AccessPoint einrichtet habe ich im Tutorial Wemos D1 Mini (ESP8266) als AccessPoint einrichten bereits beschrieben, daher möchte ich hier auf die Besonderheit eingehen damit dieser eine Webseite anzeigen kann.

Wir benötigen für die Anzeige einer Webseite zusätzlich einen Serverdienst diesen binden wir über die Bibliothek „ESP8266WebServer.h“ in den Sketch ein. Der Webserver läuft über den Port 80 (dies ist der übliche Port für einen HTTP Webserver).

Wenn dieser Sketch ausgeführt wird, dann wird als erstes auf dem seriellen Monitor der Arduino IDE folgende Ausgabe sichtbar:

Ausgabe auf dem seriellen Monitor der Arduino IDE
Ausgabe auf dem seriellen Monitor der Arduino IDE

Wir sollten also nun das gesicherte Netzwerk „WemosAP“ sehen.
Hat man sich erfolgreich zum Netzwerk verbunden so navigiert man mit
einen beliebigen Browser zur IP-Adresse „192.168.4.1“ es sollte
dann die Ausgabe „Hallo Welt!“ erscheinen.

Ausgabe im Browser (Google Chrome)
Ausgabe im Browser (Google Chrome)

Ersetzen wir also nun den Text „Hallo Welt!“ gegen unsere Webseite und ersetzen im JavaScript Block den Platzhalter für die IP-Adresse durch die echte.

Screenshot Schrittmotorsteuerung (mobile Ansicht)
Screenshot Schrittmotorsteuerung (mobile Ansicht)

Sketch mit der Webseite und dem Code für den Schrittmotor

 

Verwandte Beiträge

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*