Homepage Wiki Forum Buy

Schrittmotor

Aus GNUBLIN

Schwierigkeitsgrad Voraussetzung Gnublin Familie
Gnublin logo easy.png Grundkenntnisse Konsole Alle

Inhaltsverzeichnis


In diesem Artikel wird beschrieben wie man den Schrittmotor aus dem Schrittmotoren Starterkit TMC220 oder das Gnublin Schrittmotor Modul mit I2C ansteuert.

Module motor.jpg


Quickstart

Das Demoprogramm ist bereits bei der Gnublin Distribution (ab 18.1.13) dabei, heißt gnublin-step und ist automatisch installiert. Es ermöglicht das Anfahren einer bestimmten (absoluten) Position.

gnublin-step -p 3200

Der Motor macht eine komplette Drehung. Möchte man wieder zurückdrehen gibt man ein:

root@gnublin:~# gnublin-step -p 0

Man gibt immer eine Zielposition an. Der Motor hat bei 3200 genau eine komplette Umdrehung. 6400 wären zwei Umdrehungen. Möchte man jetzt wieder eine Umdrehung Zurück gibt man wieder 3200 an. Wie ein langes Lineal kann man sich diese Skala vorstellen.

Falls man mehrere Schrittmotor-Platinen besitzt kann man mit dem Parameter -a die Adresse der gewünschten Platine ansprechen.

root@gnublin:~# gnublin-step -a 0x60 -p 3200

Den vollen Funktionsumfang von gnublin-step findet man unten im Softwareabschnitt

Vorbereitung

Was wird benötigt?

  1. Schrittmotor Starterkit (Achtung der Motor benötigt eine Spannungsversorgung von 8V - 29V)
  2. oder Schrittmotor und TMC222 Controller
  3. oder Schrittmotor und Gnublin Schrittmotor Modul

In der neuen GNUBLIN Distribution ist alles entsprechend vorbereitet. Verwenden man das alte ELDK Dateisystem kann es sein, dass man noch zwei Sachen zusätzlich benötigt:

  1. I2C Device /dev/i2c-1 (falls noch nicht vorhanden einfach mit mknod /dev/i2c-1 c 89 1 erstellen)
  2. i2c-pnx modul (bei dem neuesten Gnublin-Kernel als builtin vorhanden)

Hardware verbinden

Zuerst muss natürlich die I2C Schnittstelle verbunden werden.

Besitzt man das Gnublin Schrittmotor Modul, so muss man lediglich das Flachbandkabel mit dem Gnublin verbinden. Achtung das Flachbandkabel muss mit dem roten Kabel in Richtung der SD Karte zeigen

Besitzt man das Schrittmotor Starterkit, so muss man einfach die Leitung SDA, SCL, und GND vom Gnublin mit den Leitungen an der Platine verbinden. Die Versorgung der Motoren muss extern geschehen (8-29V). Hierfür verbinden wir den Pluspol der Versorgungsquelle mit VCC auf der TCM222 Platine und GND mit Masse der externen Versorgung.

Danach kann man eigentlich schon mit der Ansteuerung beginnen.

Software

gnublin-step

Das Demoprogramm ist bereits bei der Gnublin Distribution (ab 18.1.13) dabei, heißt gnublin-step und ist automatisch installiert. Es ermöglicht das Anfahren einer bestimmten (absoluten) Position.

Man findet das Demoprogramm ebenfalls im Gnublin-Distribution git im Verzeichnis gnublin/lpc3131/examples/gnublin-step

Das Demoprogramm kann von überall aufgerufen werden. Ein Beispielaufruf sieht folgendermaßen aus:

root@gnublin:~# gnublin-step -p 3200

Der Motor macht eine komplette Drehung. Möchte man wieder zurückdrehen gibt man ein:

root@gnublin:~# gnublin-step -p 0

Der Wertebereich liegt zwischen 0 und 65536 im 1/16 Microstepping Modus, wobei eine komplette Umdrehung 3200 Steps entspricht. (2 Umdrehungen also 6400 usw.)

Parameter

Parameter Funktion Wertebereich default
-h Gibt eine Hilfe aus
-f <i2c-device> Angabe des i2c-device /dev/i2c-1
-j Ausgabe erfolgt im Jason Format 0
-b Ausgabe erfolgt im bare Format (minimal) 0
-a <i2c-address> Übergibt die Addresse des I2C-Modules 0x60
-p <position> Gibt die gewünschte Position an
-i <Irun> Übergibt den Spulenstrom für Fahrbetrieb integer: 0 - 15 15
-d <iholD> Übergibt den Spulenstrom für den Stillstand (Haltemoment) integer: 0 - 15 1
-x <vmaX> Gibt die Maximalgeschwindigkeit an integer: 0 - 15 8
-n <vmiN> Gibt die Minimalgeschwindigkeit an (Beschleunigung) integer: 0 - 15 0
-o <new_address> Übergibt die neue Adresse des Moduls 0x62 - 0x76

Erklärung der wichtigsten Parameter

-p <position> Damit wird angegeben, an welche Position der Schrittmotor fahren soll. Nach dem einstecken des Controllers befindet er sich an Position 0. Das Fahren von Position 0 bis 3200 ergibt eine komplette Umdrehung des Motors, bis 6400 zwei Umdrehungen usw.

-i <Irun> Mit dem Parameter irun kann der Spulenstrom für Fahrbetrieb übergeben werden. Die nachfolgende Tabelle enthällt die einstellbaren Ströme:

Irun / Ihold Einstellung Spitzenstrom (mA)
0 59
1 71
2 84
3 100
4 119
5 141
6 168
7 200
8 238
9 283
10 336
11 400
12 476
13 566
14 673
15 800

-d <iholD> Dadurch kann der Haltestrom gemäß der oben stehenden Tabelle eingestellt werden. Je höher der Strom gesetzt wird, desto größer ist das Haltemoment des Motors, jedoch erhöht sich auch der Stromverbrauch im Stillstand enorm.

-x <vmaX> Der vmax Parameter übergibt die höchste zulässige Geschwindigkeit des Motors. Einstellbar ist diese von 0 (langsamste) bis 15 (schnellste).

-n <vmiN> Mit dem vmin Parameter wird die Minimalgeschwindigkeit übergeben. Der Wert wird als Verhältnis von 1/32 bis 15/32 der Maximalgeschwindigkeit (vmax) interpretiert. Wird der Wert 0 übergeben, ist vmin = vmax gesetzt, und der motor fährt direkt mit vmax an. Die nachfolgende Grafik zeigt das Geschwindigkeits-/Beschleunigungsverhalten des Controllers:

Velocity step.png

Wird eine neue Position übergeben, beginnt der Motor mit der Geschwindigkeit vmin und steigert diese bis vmax erreicht ist. Vor erreichen der neuen Position wird die Geschwindigkeit auf vmin reduziert.

-o <new_address> Durch den new_address Parameter kann eine neue Slave-Adresse in den OTG (one time programmable) Speicher des Controllers geschrieben werden.

ACHTUNG: ist ein Bit des OTG einmal gesetzt, kann es nicht mehr rückgäng gemacht werden!

Beispielaufrufe per Konsole

  • ganz schnell von A nach B
root@gnublin:~# gnublin-step -x 15 -p 3000
  • präzise von A nach B
root@gnublin:~# gnublin-step -x 1 -n 1 -d 15 -p 0
  • Extrem viel Kraft
root@gnublin:~# gnublin-step -x 8 -i 15 -d 15 -p 3000
  • ... Stromsparend
root@gnublin:~# gnublin-step -x 8 -i 1 -d 0 -p 3000
  • Schrittmotor-Controller mit anderer Adresse
root@gnublin:~# gnublin-step -a 0x76 -x 8 -i 1 -d 0 -p 3000
In anderen Sprachen