Photo of a brushless DC motor controller when paired with an Arduino and a linear actuator

Erweitern und Retraktieren Sie kontinuierlich die Hublänge eines Aktuators mit einem bürstenlosen Gleichstrommotor.

Guninder Malhi
Guninder Malhi
PA Engineer

Dieses Tutorial hilft, die Steuerungen eines bürstenlosen DC-Motorcontrollers zu verstehen, wenn er mit einem Arduino und einem Linearantrieb kombiniert wird. Dieses Programm kann verwendet werden, um den Hublänge eines Aktuators kontinuierlich zu verlängern und zu verkürzen.

Bevor wir beginnen, lassen Sie uns die Komponenten durchgehen, die wir in diesem Tutorial verwenden werden:

  1. Arduino Mega (auch Arduino Uno kann verwendet werden).
  2. LC-241.
  3. PA-14 mit einem bürstenlosen Motor.
  4. PS-13-12 Netzteil.
  5. Jumper-Kabel.

 Arduino-Codierung

Der Linearantrieb hat 2 Kabelsätze, die herauskommen, ein Satz ist für den Motor und der andere Satz ist für die Endschalter. Das Schema in der obigen Abbildung zeigt, wie die Komponenten miteinander verbunden werden.

PIN-SETUP-CODE

int out_lim = 45; // Pin des äußeren Endschalters

int in_lim = 53;  // Pin des inneren Endschalters

int run_f = 25;  // Lauf-Pin am Controller
int run_r = 30;  // Rückwärts-Pin am Controller

Dieser Teil des Codes kümmert sich um die Initialisierung der Pins, die zum Empfangen und Senden von Daten verwendet werden. In diesem Fall wurden alle digitalen Pins verwendet, aber auch analoge können verwendet werden.

SETUP-LOOP-CODE

void setup() {

  Serial.begin(9600);  // initialisiert die serielle Kommunikation mit 9600 Bit pro Sekunde
  pinMode(out_lim, INPUT_PULLUP); // konfiguriert Pin 45 als Eingabepin
  pinMode(in_lim, INPUT_PULLUP); // konfiguriert Pin 53 als Eingabepin
  pinMode(run_f, OUTPUT); // konfiguriert Pin 25 als Ausgabepin
  pinMode(run_r, OUTPUT); // konfiguriert Pin 30 als Ausgabepin

 

  retract(); // zieht den Hublänge beim Start zurück

  delay(500);
  }


Die „Setup“-Schleife konfiguriert, welche Pins für die Ausgabe und welche für die Eingabe verwendet werden. Wie im Code zu sehen ist, werden Pins, die mit Endschaltern verbunden sind, verwendet, um die Zustände der Endschalter zu lesen, und Pins, die mit „RUN“ und „REV“ am LC-241 verbunden sind, werden verwendet, um an ihn zu schreiben. Zunächst führt der Code auch eine Rückzugsfunktion aus, um vollständig zurückzuziehen, bevor er startet.

FUNKTIONSDEFINITIONEN-CODE

void extend() // diese Funktion ermöglicht es dem Motor zu laufen

{
 digitalWrite(run_f, LOW);
 digitalWrite(run_r, HIGH);

 }

void retract() // diese Funktion kehrt die Richtung des Motors um
{
  digitalWrite(run_f, LOW);
  digitalWrite(run_r, LOW);
}

void run_stop() // diese Funktion deaktiviert den Motor
{
  digitalWrite(run_f, HIGH);
  digitalWrite(run_r, HIGH);
}


Dieser Teil erklärt die Funktionen, die verwendet werden, um die Motorleistung und -richtung zu steuern. Wir werden den Motor aktivieren oder deaktivieren, indem wir „0“ oder „1“ an den „RUN“-Pin schreiben und dann die gleichen Befehle an den „REV“-Pin, um die Richtung des Motors umzukehren.

HAUPTSCHLEIFENCODE

Void loop() {

   int out_lim_state = digitalRead(out_lim);     // liest die Endschalter und speichert ihren Wert
  int in_lim_state = digitalRead(in_lim);

   Serial.print("Wert des äußeren Endschalters "), Serial.println(out_lim_state); // 0 -> Endschalter ist gedrückt
   Serial.print("Wert des inneren Endschalters "), Serial.println(in_lim_state);  // 1 -> Endschalter ist nicht gedrückt

   if (out_lim_state == 0 && in_lim_state == 1) // wenn der äußere Endschalter gedrückt ist und der innere nicht (vollständig ausgefahren)
   {
   retract(); // zieht den Hublänge zurück
   }

   else if (out_lim_state == 1 && in_lim_state == 0) // wenn der innere Endschalter gedrückt ist und der äußere nicht (vollständig zurückgezogen)
  {
   extend(); // verlängert den Hublänge
  }

 

Die „Loop“-Schleife liest im Grunde die Eingaben von den Endschaltern, um zu überprüfen, ob die Schalter gedrückt sind oder nicht, und ändert dann basierend darauf einfach die Richtung des Motors.

Die meisten der auf dem Markt erhältlichen Linearantriebe sind mit einem bürstenbehafteten DC-Motor ausgestattet, sodass der verfügbare Arbeitszyklus mit diesem Motor es etwas unmöglich macht, die Einheit kontinuierlich zu betreiben. Bei Progressive Automations geben wir unseren Kunden die Freiheit, sich für einen bürstenlosen DC-Motor für unser Modell PA-14 zu entscheiden, was ihnen noch mehr Optionen für ihre Projekte bietet.