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

Nepretržite vysúvajte a zasúvajte zdvih aktuátora s bezkefovým jednosmerným motorom

Guninder Malhi
Guninder Malhi
PA Engineer

Tento návod pomôže pochopiť ovládanie ovládača bezkefového jednosmerného motora v kombinácii s Arduinom a lineárnym aktuátorom. Tento program možno použiť na nepretržité vysúvanie a zasúvanie zdvihu aktuátora.

Skôr než začneme, prejdime si komponenty, ktoré budeme v tomto návode používať:

  1. Arduino Mega (možno použiť aj Arduino Uno).
  2. LC-241.
  3. PA-14 s bezkefovým motorom.
  4. Napájací zdroj PS-13-12.
  5. Prepojovacie vodiče.

a0Programovanie Arduina

Lineárny aktuátor má dva zväzky vodičov: jeden pre motor a druhý pre koncové spínače. Schéma na obrázku vyššie ukazuje, ako komponenty zapojiť.

PIN SETUP CODE

int out_lim = 45; // pin pre vonkajší koncový spínač

int in_lim = 53;a0 // pin pre vnútorný koncový spínač

int run_f = 25;a0 // pin RUN na ovládači
int run_r = 30;a0 // pin REV na ovládači

Táto časť kódu zabezpečuje inicializáciu pinov, ktoré sa použijú na príjem a odosielanie údajov. V tomto prípade sa použili všetky digitálne piny, no možno použiť aj analógové.

SETUP LOOP CODE

void setup() {

a0a0Serial.begin(9600);a0 // inicializuje sériovú komunikáciu rýchlosťou 9600 bitov za sekundu
a0 pinMode(out_lim, INPUT_PULLUP); // nastaví pin 45 ako vstupný pin
a0 pinMode(in_lim, INPUT_PULLUP); // nastaví pin 53 ako vstupný pin
a0 pinMode(run_f, OUTPUT); // nastaví pin 25 ako výstupný pin
a0 pinMode(run_r, OUTPUT); // nastaví pin 30 ako výstupný pin

a0

a0 retract(); // pri štarte zasunie zdvih

a0a0delay(500);
a0 }


Slučka „setup“ určuje, ktoré piny budú použité ako výstupné a ktoré ako vstupné. Ako je vidieť v kóde, piny pripojené ku koncovým spínačom sa použijú na čítanie stavov koncových spínačov a piny pripojené k „RUN“ a „REV“ na LC-241 sa použijú na zápis. Na začiatku kód tiež spustí funkciu zasunutia, aby sa pred štartom úplne zasunul.

FUNCTION DEFINITIONS CODE

void extend() // táto funkcia umožní spustenie motora

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

a0}

void retract() // táto funkcia zmení smer motora
{
a0 digitalWrite(run_f, LOW);
a0 digitalWrite(run_r, LOW);
}

void run_stop() // táto funkcia vypne motor
{
a0 digitalWrite(run_f, HIGH);
a0 digitalWrite(run_r, HIGH);
}


Táto časť vysvetľuje funkcie použité na riadenie výkonu a smeru motora. Motor budeme zapínať a vypínať zápisom „0“ alebo „1“ na pin „RUN“ a následne rovnakými príkazmi na pin „REV“ na zmenu smeru motora.

MAIN LOOP CODE

Void loop() {

a0a0 int out_lim_state = digitalRead(out_lim);a0 a0a0// prečíta koncové spínače a uloží ich hodnotu
a0 int in_lim_state = digitalRead(in_lim);

a0a0 Serial.print("hodnota vonkajšieho koncového spínača "), Serial.println(out_lim_state); // 0 -> koncový spínač je stlačený
a0a0 Serial.print("hodnota vnútorného koncového spínača "), Serial.println(in_lim_state);a0 // 1 -> koncový spínač nie je stlačený

a0 if (out_lim_state == 0 && in_lim_state == 1) // ak je stlačený vonkajší koncový spínač a vnútorný nie (úplne vysunutý)
a0a0 {
a0 a0retract(); // zasunúť zdvih
a0a0 }

a0a0 else if (out_lim_state == 1 && in_lim_state == 0) // ak je stlačený vnútorný koncový spínača0 a0a vonkajší nie (úplne zasunutý)
a0 {
a0 a0extend(); // vysunúť zdvih
a0 }

a0

Slučka „loop“ v zásade len číta vstupy z koncových spínačov, kontroluje, či sú stlačené, a na základe toho mení smer motora.

Väčšina lineárnych aktuátorov na trhu je vybavená kefovým jednosmerným motorom, takže dostupný pracovný cyklus pri takomto motore do istej miery znemožňuje jednotku nepretržite prevádzkovať. V Progressive Automations dávame zákazníkom možnosť zvoliť si pre náš model PA-14 bezkefový jednosmerný motor, čím získajú ešte viac možností pre svoje projekty.