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

Continu de slaglengte van een actuator verlengen & intrekken met een borstelloze DC-motor

Guninder Malhi
Guninder Malhi
PA Engineer

Deze handleiding helpt bij het begrijpen van de bediening van een borstelloze DC-motorcontroller in combinatie met een Arduino en een lineaire actuator. Dit programma kan worden gebruikt om de slaglengte van een actuator continu te verlengen en in te trekken.

Voordat we beginnen, lopen we de componenten door die we in deze handleiding zullen gebruiken:

  1. Arduino Mega (Arduino Uno kan ook worden gebruikt).
  2. LC-241.
  3. PA-14 met een borstelloze motor.
  4. PS-13-12-voeding.
  5. Jumperkabels.

 Arduino-codering

De lineaire actuator heeft 2 sets draden, één set is voor de motor en de andere set is voor de eindschakelaars. Het schema in de bovenstaande afbeelding laat zien hoe je de componenten met elkaar verbindt.

PIN-SETUP-CODE

int out_lim = 45; // pin voor de buitenste eindschakelaar

int in_lim = 53;  // pin voor de binnenste eindschakelaar

int run_f = 25;  // startpin op de controller
int run_r = 30;  // omkeerpin op de controller

Dit deel van de code verzorgt de initialisatie van de pinnen die worden gebruikt voor het ontvangen en verzenden van gegevens. In dit geval zijn alle digitale pinnen gebruikt, maar analoge kunnen ook worden gebruikt.

SETUP-LOOP-CODE

void setup() {

  Serial.begin(9600);  // initialiseert seriële communicatie met 9600 bits per seconde
  pinMode(out_lim, INPUT_PULLUP); // configureert pin 45 als invoerpin
  pinMode(in_lim, INPUT_PULLUP); // configureert pin 53 als invoerpin
  pinMode(run_f, OUTPUT); // configureert pin 25 als uitvoerpin
  pinMode(run_r, OUTPUT); // configureert pin 30 als uitvoerpin

 

  retract(); // trekt de slaglengte bij het opstarten in

  delay(500);
  }


De “setup”-lus configureert welke pinnen voor uitvoer en welke voor invoer worden gebruikt. Zoals in de code te zien is, worden pinnen die zijn verbonden met de eindschakelaars gebruikt om de status van de eindschakelaars uit te lezen, en pinnen die zijn verbonden met “RUN” en “REV” op de LC-241 worden gebruikt om ernaar te schrijven. Aanvankelijk voert de code ook een retractiefunctie uit om eerst volledig in te trekken voordat gestart wordt.

FUNCTIEDEFINITIES-CODE

void extend() // deze functie laat de motor draaien

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

 }

void retract() // deze functie keert de draairichting van de motor om
{
  digitalWrite(run_f, LOW);
  digitalWrite(run_r, LOW);
}

void run_stop() // deze functie schakelt de motor uit
{
  digitalWrite(run_f, HIGH);
  digitalWrite(run_r, HIGH);
}


Dit deel legt de functies uit die worden gebruikt om het motorvermogen en de richting te regelen. We schakelen de motor in of uit door “0” of “1” naar de “RUN”-pin te schrijven en vervolgens dezelfde commando’s naar de “REV”-pin om de draairichting van de motor om te keren.

HOOFDLUS-CODE

Void loop() {

   int out_lim_state = digitalRead(out_lim);     // leest de eindschakelaars en slaat hun waarde op
  int in_lim_state = digitalRead(in_lim);

   Serial.print("waarde buitenste eindschakelaar "), Serial.println(out_lim_state); // 0 -> eindschakelaar is ingedrukt
   Serial.print("waarde binnenste eindschakelaar "), Serial.println(in_lim_state);  // 1 -> eindschakelaar is niet ingedrukt

  if (out_lim_state == 0 && in_lim_state == 1) // als de buitenste eindschakelaar is ingedrukt en de binnenste niet (volledig uitgeschoven)
   {
   retract(); // trek de slaglengte in
   }

   else if (out_lim_state == 1 && in_lim_state == 0) // als de binnenste eindschakelaar is ingedrukt en de buitenste niet (volledig ingetrokken)
  {
   extend(); // verleng de slaglengte
  }

 

De “loop”-lus leest in feite de ingangen van de eindschakelaars om te controleren of de schakelaars zijn ingedrukt en wijzigt op basis daarvan simpelweg de richting van de motor.

De meeste lineaire actuatoren op de markt worden geleverd met een borstelmotor (DC), waardoor de beschikbare inschakelduur het min of meer onmogelijk maakt om de unit continu te laten draaien. Bij Progressive Automations geven we onze klanten de vrijheid om te kiezen voor een borstelloze DC-motor voor ons PA-14-model, waardoor ze nog meer opties hebben voor hun projecten.