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

Pidentele ja lyhennä jatkuvasti toimilaitteen iskun pituutta harjattomalla DC‑moottorilla

Guninder Malhi
Guninder Malhi
PA Engineer

Tämä opas auttaa ymmärtämään harjattoman DC‑moottorin ohjaimen hallintaa, kun se yhdistetään Arduinoon ja lineaariseen toimilaitteeseen. Tätä ohjelmaa voidaan käyttää pidentämään ja lyhentämään toimilaitteen iskun pituutta jatkuvasti.

Ennen kuin aloitamme, käydään läpi tämän oppaan komponentit:

  1. Arduino Mega (myös Arduino Uno käy).
  2. LC‑241.
  3. PA‑14 harjattomalla moottorilla.
  4. PS‑13‑12 virtalähde.
  5. Hyppylangat.

 Arduino‑ohjelmointi

Lineaarisesta toimilaitteesta tulee ulos kaksi johdinsarjaa: toinen on moottorille ja toinen rajakytkimille. Yllä olevan kuvan kytkentäkaavio näyttää, miten komponentit johdotetaan yhteen.

PINNIEN MÄÄRITYS ‑KOODI

int out_lim = 45; // ulomman rajakytkimen pinni

int in_lim = 53;  // sisemmän rajakytkimen pinni

int run_f = 25;  // ohjaimen RUN‑pinni
int run_r = 30;  // ohjaimen REV‑pinni

Tämä koodin osa huolehtii sellaisten pinnien alustuksesta, joita käytetään datan vastaanottoon ja lähetykseen. Tässä tapauksessa käytettiin kaikkia digitaalisia pinnejä, mutta myös analogisia voidaan käyttää.

SETUP‑SILMUKAN KOODI

void setup() {

  Serial.begin(9600);  // alustaa sarjaviestinnän nopeudella 9600 bittiä sekunnissa
  pinMode(out_lim, INPUT_PULLUP); // määrittää pinnin 45 tuloksi
  pinMode(in_lim, INPUT_PULLUP); // määrittää pinnin 53 tuloksi
  pinMode(run_f, OUTPUT); // määrittää pinnin 25 lähdöksi
  pinMode(run_r, OUTPUT); // määrittää pinnin 30 lähdöksi

 

  retract(); // vetää iskun pituuden sisään käynnistyksessä

  delay(500);
  }


”setup”‑silmukka määrittää, mitä pinnejä käytetään lähtöön ja mitä tuloon. Koodista nähdään, että rajakytkimiin kytkettyjä pinnejä käytetään rajakytkinten tilojen lukemiseen ja LC‑241:n ”RUN”‑ ja ”REV”‑pinneihin kytkettyjä pinnejä kirjoittamiseen. Aluksi koodi suorittaa myös palautusfunktion vetääkseen mekanismin kokonaan sisään ennen aloitusta.

FUNKTIOIDEN MÄÄRITELMÄT ‑KOODI

void extend() // tämä funktio käynnistää moottorin

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

 }

void retract() // tämä funktio kääntää moottorin suunnan
{
  digitalWrite(run_f, LOW);
  digitalWrite(run_r, LOW);
}

void run_stop() // tämä funktio poistaa moottorin käytöstä
{
  digitalWrite(run_f, HIGH);
  digitalWrite(run_r, HIGH);
}


Tässä osassa selitetään moottorin tehon ja suunnan hallintaan käytetyt funktiot. Otamme moottorin käyttöön tai poistamme sen käytöstä kirjoittamalla ”0” tai ”1” ”RUN”‑pinniin ja sitten samat komennot ”REV”‑pinniin moottorin suunnan vaihtamiseksi.

PÄÄSILMUKAN KOODI

Void loop() {

   int out_lim_state = digitalRead(out_lim);     // lukee rajakytkimet ja tallentaa niiden arvon
  int in_lim_state = digitalRead(in_lim);

   Serial.print("ulomman rajakytkimen arvo "), Serial.println(out_lim_state); // 0 -> rajakytkin on painettu
   Serial.print("sisemmän rajakytkimen arvo "), Serial.println(in_lim_state);  // 1 -> rajakytkintä ei ole painettu

  if (out_lim_state == 0 && in_lim_state == 1) // jos ulompi rajakytkin on painettu eikä sisempi (täysin ulkona)
   {
   retract(); // vedä isku sisään
   }

   else if (out_lim_state == 1 && in_lim_state == 0) // jos sisempi rajakytkin on painettu eikä ulompi (täysin sisällä)
  {
   extend(); // pidennä iskua
  }

 

”loop”‑silmukka lukee käytännössä vain rajakytkimiltä tulevat tulot tarkistaakseen, onko kytkimiä painettu, ja vaihtaa sen perusteella moottorin suuntaa.

Useimmissa markkinoilla olevissa lineaarisissa toimilaitteissa on harjallinen tasavirtamoottori, jolloin kyseisen moottorin käytettävissä oleva käyttösuhde tekee yksikön jatkuvasta ajosta jokseenkin mahdotonta. Progressive Automationsilla annamme asiakkaillemme mahdollisuuden valita PA‑14‑malliimme harjattoman DC‑moottorin, mikä antaa entistä enemmän vaihtoehtoja projekteihin.