Getting Started with Arduino and PA-12

Erste Schritte mit Arduino und PA-12

Anna Sapiga
Anna Sapiga
PA Engineer

Der PA-12 ist ein hochpräziser Aktuator, der mit Arduino gesteuert werden kann. Diese Einführung in den PA-12 wird Steuerungsmethoden und Implementierungen mit der PA-12 Arduino API vorstellen.

Es gibt zwei Versionen des PA-12. Der PA-12-R hat einen bürstenlosen DC-Servomotor und ein RS-485-Kommunikationsprotokoll. Der PA-12-T hat einen DC-Servomotor mit Kern und ein TTL/PWM-Kommunikationsprotokoll.

Der Einstieg in den PA-12 und Arduino hängt von der Version des PA-12 ab, die implementiert wird. In diesem Tutorial wird der PA-12-10645012R verwendet – 1,06" Hublänge, 4,50 LBS Kraft, 12VDC bürstenloser DC-Motor. Der bürstenlose Motor bedeutet, dass das Kommunikationsprotokoll für diesen Aktuator RS-485 ist.

Der Arduino Leonardo/Uno hat kein RS-485-Kommunikationsprotokoll, aber er hat TTL. Wir werden ein TTL zu RS-485-Modul verwenden, um in diesem Tutorial mit dem linearen Aktuator Arduino zu kommunizieren.

Arduino-Modul

Abbildung 1 - RS-485 zu TTL Arduino-Modul


PA-12 Steuerungsbetrieb

Der PA-12 wird direkt mit Datenpaketen gesteuert, die über TTL oder RS-485-Kommunikation gesendet werden. Jedes Datenpaket enthält Informationen, die verwendet werden, um eine bestimmte Funktion des PA-12 auszuführen oder den aktuellen Status des Geräts zu empfangen. Der aktuelle Status des Geräts könnte beispielsweise die Servo-ID, den Spannungswert, die Position der Aktuatorstange usw. sein.

Ausrüstung und Software

PA-12 API

Die PA-12 API kann hier. Diese API enthält die folgenden Dateien und Ordner:

  • PA12.ino
    • Enthält die PA-12-Befehlsstrukturen und Funktionen, die Daten zu/von dem PA-12 übertragen und empfangen
    • Alle Funktionen, die in den Beispielcodes verwendet werden oder in Ihrem Code implementiert werden, sind in dieser Datei gespeichert
  • PA12.h
    • Die Header-Datei enthält das Kommunikationsprotokoll und die Header-Dateien für die serielle Kommunikation
    • Enthält Funktions- und Variablendeklarationen für alle PA12-Funktionen und -Funktionalitäten
    • setPosition, ServoID, presentSpeed, forceEnable
  • Hilfsdateien
  • Beispielcodes
    • Der Beispielcode kann verwendet werden, um die PA-12-Steuerung einfach in Ihr eigenes System zu implementieren
    • Alle Beispielcodes sind für die Verwendung mit Arduino Leonardo programmiert, jedoch können die Variablen, die für die Übertragungs- und Empfangspins verwendet werden, geändert werden, um mit dem Mikrocontroller/Arduino, den Sie bereits haben, kompatibel zu sein

Um die PA12-Bibliothek zu importieren

Wählen Sie 'Sketch' --> Bibliothek einfügen --> ZIP-Bibliothek hinzufügen. Alle Dateien im PA12-Ordner werden direkt in die Arduino-Bibliothek des linearen Aktuators importiert. Dies ermöglicht es Ihnen, die PA12-Funktionen zur Steuerung des Aktuators zu verwenden.

Arduino-Bibliothek

Abbildung 2 - Import der Arduino-Bibliothek


Verfügbare Befehle für PA-12

Eine Tabelle der Befehle wird unten angezeigt. Für weitere Informationen zu den Befehlen überprüfen Sie die PA12.ino für Codierungsinformationen. Wir werden die grundlegenden Befehle in diesem Tutorial behandeln. Zukünftige Tutorials werden fortgeschrittenere Funktionen und Steuerungstechniken umfassen.

Lesefunktionen

Die Funktionen in der folgenden Tabelle sind schreibgeschützt und geben einen Wert zurück.

Lesefunktion

Variable

Beschreibung

myServo.getModelNumber(ID_NUM)

ID_NUM

PA-12 Modellnummer

myServo.Version(ID_NUM)

ID_NUM

PA-12 Motorversionsnummer

myServo.CalStroke (ID_NUM, *Länge*)

ID_NUM, Länge = Kurz, Lang oder Zentrum

Überprüfung der Kalibrierung der Hublänge

myServo.presentVolt((ID_NUM)/10)

ID_NUM

Überprüfung der Eingangsspannung

myServo.presentTemperature(ID_NUM)

ID_NUM

Aktuelle Temperatur des Motors

myServo.MaxTemperature(ID_NUM)

ID_NUM

Lesen Sie die maximale Temperaturgrenze

myServo.presentPosition(ID_NUM)

ID_NUM

Aktuelle Position des Aktuators

myServo.moving(ID_NUM)

ID_NUM

Zurückgegebener Wert des Motorstatus. 1 = In Bewegung, 0 = Gestoppt

myServo.limitVolt(ID_NUM, *Höchster/Niedrigster*)

ID_NUM, Hoher Spannungspegel = Höchster oder Niedriger Spannungspegel = Niedrigster

Lesen Sie die Hoch- oder Niedrigspannungseinstellung

myServo.alarmLed(ID_NUM)

ID_NUM

Liest den Status der Alarm-LED. 1 = EIN, 0 = Aus

myServo.alarmShutdown(ID_NUM)

ID_NUM

Liest den Status des Alarmabschaltmodus

myServo.StrokeLimit(ID_NUM, *Lang/Kurz*)

ID_NUM, Ausdehnungsgrenze = Lang oder Rückzugsgrenze = Kurz

Liest die maximalen und minimalen Hublängenbegrenzungen

myServo.ResolutionFactor(ID_NUM)

ID_NUM

Liest den Auflösungsfaktor des Servomotors

myServo.movingSpeed(ID_NUM)

ID_NUM

Liest den Wert der Servomotor-Geschwindigkeit

myServo.forceLimit(ID_NUM)

ID_NUM

Liest die maximale Kraft des Servomotors (flüchtige Einstellung)

myServo.maxForce(ID_NUM)

ID_NUM

Liest die maximale Kraft des Servomotors (nichtflüchtige Einstellung)

Schreibfunktionen

Schreibfunktion

Variable

Beschreibung

myServo(&Serial, enable_pin, Tx Level)

Serienportnummer, Aktivierungspin, Übertragungs-Pin

Einstellung des Kommunikationsports

myServo.begin(*Baudrate-Einstellwert*)

Baudrate-Einstellwert (siehe Tabelle)

Serielle Kommunikationsbaudrate

myServo.ServoID(ID_NUM, ID_Sel)

ID_NUM, ID_Sel

Ändern Sie den Servo-ID-Wert

myServo.ledOn(ID_NUM, *LED RGB-Wert*)

ID_NUM, LED RBB-Wert (siehe Tabelle)

Schaltet eine bestimmte LED ein

myServo.MaxTemperature(ID_NUM, Temperatur)

ID_NUM, Temperatur

Schreiben Sie die maximale Temperaturgrenze

myServo.goalPosition(ID_NUM, *Positionswert*)

ID_NUM, Positionswert (siehe Tabelle)

Setzen Sie eine gewünschte Hublängenposition

myServo.limitVolt(ID_NUM, *Höchster/Niedrigster*, LimitVolt)

ID_NUM, Höherer Wert = Höchster oder Niedriger Wert = Niedrigster, LimitVolt

Setzen Sie die Hoch- oder Niedrigspannungseinstellung

myServo.alarmLed(ID_NUM, *Alarmvariable*)

ID_NUM, Alarmbit

Alarm-LED-Einstellung. Siehe Tabelle für weitere Informationen.

myServo.alarmShutdown(ID_NUM, *aktivieren*)

ID_NUM, Aktivieren: 0 = aus, 1 = ein

Einstellung zur Alarmabschaltung des Motors. Wenn der Alarm aktiviert ist, kann der Motor abgeschaltet werden.

myServo.StrokeLimit(ID_NUM, *Lang/Kurz*, *Positionswert*)

ID_NUM, Ausdehnungsgrenze = Lang oder Rückzugsgrenze = Kurz, Positionswert (siehe Tabelle)

Schreibt die maximalen und minimalen Hublängenbegrenzungen

myServo.ResolutionFactor(ID_NUM, *Auflösungsfaktor*)

ID_NUM, Auflösungsfaktor (siehe Tabelle)

Setzt den Auflösungswert für die Positionierung der Hublänge des Aktuators.

myServo.movingSpeed(ID_NUM, *Wert der Bewegungsgeschwindigkeit*)

ID_NUM, Wert der Bewegungsgeschwindigkeit (siehe Tabelle)

Setzt die Geschwindigkeit des Servomotors

myServo.forceLimit(ID_NUM, *Kraftwert*)

ID_NUM, Kraftwert (siehe Tabelle)

Setzt die maximale Kraft des Servomotors (flüchtige Einstellung)

myServo.maxForce(ID_NUM, *Kraftwert*)

ID_NUM, Kraftwert (siehe Tabelle)

Setzt die maximale Kraft des Servomotors (nichtflüchtige Einstellung)


Variablen Einstellungen

Die folgenden Tabellen enthalten den Variablenwert, der in die Funktionen eingegeben wird.

Baudrate

Baudvariablenwert

Baudrate

16

115200

32

57600

64

19200

128

9600


LED-Wert

LED RGB-Wert

ROT

GRÜN

BLAU


Servo-ID

Servo-ID-Wert

0

1 - 253

254


Für die Servo-Motor-ID-Variable ID_NUM: Es stehen insgesamt 255 Optionen zur Verfügung. Der Wert 0 ist die Standardeinstellung. Sie können einen Wert von 1 bis 253 für eine individuelle ID auswählen. Der Wert 254 ist für eine Broadcast-ID reserviert, die alle PA-12 innerhalb eines Netzwerks aktiviert.

Alarmeinstellungen

Alarmeinstellung

Wert der Alarmeinstellung

Eingangsspannungsfehler

0

Hublängenfehler

1

Bereichsfehler

3

Prüfziffernfehler

4

Überlastfehler

5

Instruktionsfehler

6

*Reserviert*

7

Hublängenauflösungsfaktor

Wert des Auflösungsfaktors

Auflösung

1

4096

2

2048

3

1024

4

512


Je höher der Auflösungswert, desto höher die Positionsgenauigkeit.

Bewegungsgeschwindigkeit

Wert der Bewegungsgeschwindigkeit

Geschwindigkeitseinstellung

0

Maximale Geschwindigkeit

1 - 1023

1 = Niedrigster, 1023 = Höchster


Kraftwert

Kraftwert

Krafteinstellung

0 - 1023

1 = Niedrigster, 1023 = Höchster


Positionswert

Positionswert

Position

0 - 4095

0 = Vollständig zurückgezogen, 4095 = Vollständig ausgefahren


Verdrahtungsanleitung

Der PA-12 ist mit dem RS-485-Modul verbunden, das dann direkt mit dem Arduino verbunden ist. Diese Version des PA-12 benötigt eine 12VDC-Stromversorgung für die Stromversorgung des Servomotors.

Servomotor

RS-485 Seite A Arduino
DI Pin 1
DE Pin 2
RE Pin 2
R0 Pin 0

 

Pin 0 am Arduino ist der TTL-Empfang. Pin 1 am Arduino Leonardo ist die TTL-Übertragung. Pin 2 innerhalb der Beispielcodes ist so eingerichtet, dass er als Aktivierungspin verwendet wird.

PA-12 4-Pin-Stecker

Wert

Schwarz

GND

Rot

Servomotor +VDC

Weiß

Kommunikationspin A

Gelb

Kommunikationspin B

 

Portverbindungen - PA-12

Abbildung 3 - PA-12 Portverbindungen

RS-485 Seite B

Verbindung

VCC1

+5VDC (Arduino)

A

PA-12 Weißer Draht

B

PA-12 Gelber Draht

GND2

Stromversorgungs-GND und PA-12 GND

1 Das RS-485-Modul erhält Strom von der +5VDC-Ausgabe des Arduino.

2 Die Erde wird zwischen dem PA-12, der Stromversorgung und dem RS-485-Modul geteilt.

Beispielcode

In diesem Tutorial werden wir drei Beispielcodes anzeigen, die einen ersten Einblick in einige der Funktionen des PA-12 geben und wie sie Schreib- und Lesefunktionen in Ihren eigenen Code implementieren können.

  1. PA12_Präsentposition
  2. PA12_Hublängenbegrenzung
  3. PA12_Kraftbegrenzung

1. Aktuelle Position

In diesem Code gibt der Benutzer den gewünschten Positionswert zwischen 0 und 4095 im seriellen Monitor ein. Nach der Eingabe wird der Befehl an den PA-12 gesendet, der dann den Servomotor aktiviert, um die Stange in die gewünschte Position zu bewegen. Während der Motor in Bewegung ist, wird die aktuelle Position angezeigt, bis die Endposition erreicht ist.

Arduino-Code

2. Hublängenbegrenzung

In diesem Code führt der PA-12 alle 1000 ms innerhalb der eingegebenen Ausdehnungs- und Rückzugsgrenzen einen Zyklus durch. Die Bezeichnungen Lang und Kurz befinden sich in der Hublängenbegrenzungsfunktion

Arduino-Code

3. Kraftbegrenzung

Der hier angezeigte Kraftbegrenzungscode ist die flüchtige Version. Das bedeutet, dass jedes Mal, wenn der PA-12 die Energie verliert, der Wert der Kraftbegrenzung auf die Standardeinstellung zurückgesetzt wird. Der Benutzer gibt den Wert der Kraftbegrenzung über den seriellen Monitor ein. In diesem Fall bedeutet der maximale Kraftwert von 0 einen niedrigen Kraftwert, und 1023 bedeutet einen maximalen Kraftwert.

Arduino-Code

Zukünftige Tutorials

In zukünftigen Tutorials werden wir behandeln:

  • Implementierung fortgeschrittener Funktionen
  • TTL- und PWM-Version PA-12-Steuerung
  • Fehlerbehebungstechniken
  • Externe Steuerungsmethoden

Der PA-12 ist ein vielseitiger und hochpräziser Aktuator, der es dem Endbenutzer ermöglicht, die direkte Kontrolle über seine Anwendung zu erreichen. Mit der richtigen Implementierung kann der PA-12 genau das erreichen, was Ihre Systemanforderungen sein könnten.

Für weitere Informationen senden Sie uns bitte eine E-Mail an sales@progressiveautomations.com oder rufen Sie unser Team unter 1-800-676-6123 an.