How To Control The Timing Of A Linear Actuators Motion

Jak sterować czasem ruchu siłownika liniowego?

Guest Writer
Guest Writer
PA Engineer

W naszym najnowszym wpisie z serii "Jak to zrobić" pokażemy, jak kontrolować czas ruchu siłownika liniowego za pomocą mikrokontrolera. Mikrokontrolery dają ogromną swobodę w sterowaniu ruchem i to tylko jeden z niemal nieskończonych sposobów dostępnych w tej dziedzinie. W zależności od aplikacji, projekt przykładowy z tego artykułu możesz dostosować do swoich wymagań — możesz dodać kolejny siłownik z ustawionym czasem lub wzmocnić zasilacz, aby obsłużył mocniejszy siłownik liniowy. Decyzja należy do Ciebie.

Sprawdź wszystkie nasze mikrokontrolery, aby zyskać pełną kontrolę nad swoim siłownikiem!

Sterowanie ruchem za pomocą mikrokontrolera

Do kontrolowania czasu ruchu siłownika liniowego użyjemy mikrokontrolera Arduino, ale zadziała każdy mikrokontroler. Ponieważ jednak korzystamy z shielda, mikrokontroler musi być z nim kompatybilny. Przeprowadzimy Cię przez różne parametry, które możesz dostosować, aby zmienić prędkość siłownika liniowego.

 

Czego będziesz potrzebować

W tym przykładzie użyjemy następujących komponentów do sterowania siłownikiem liniowym:

Przeglądaj naszą pełną gamę elektrycznych siłowników liniowych, odpowiednich do każdego zastosowania!

Łączenie komponentów

Skoro mamy już potrzebne elementy, musimy wszystko połączyć. Na szczęście dzięki użyciu nakładki (shield) połączenia są proste, w przeciwieństwie do osobnej płytki wymagającej dodatkowego okablowania i lutowania.

Najpierw podłączmy nasz siłownik do nakładki LC-80 MegaMoto Plus, podpinając dwa przewody z siłownika do zacisków śrubowych A/B na LC-80. Następnie należy połączyć LC-80 z zasilaczem, w tym przypadku PS-20-12. Robimy to, podłączając przewody dodatni i ujemny z zasilacza do zacisków BAT +/- na LC-80.

Na koniec łączymy LC-80 z LC-066 — to tak proste, jak nałożenie jednej płytki na drugą, jak na zdjęciu poniżej.

 

Zdjęcie mikrokontrolerów firmy Progressive Automations

Wybierz odpowiedni system sterowania dla swojego siłownika i zobacz naszą ofertę!


Dostosowywanie kodu

Aby w pełni kontrolować ruch naszego siłownika, wykonamy proste programowanie siłownika liniowego na Arduino. Przygotowaliśmy przykładowy kod, w którym siłownik wysuwa się, a następnie chowa po 10 sekund w każdą stronę, w cyklu 300 sekund.

//Use the jumpers on the board to select which pins will be used

int EnablePin1 = 13;

int PWMPinA1 = 11;

int PWMPinB1 = 3;

int extendtime = 10 * 1000;  // 10 seconds, times 1000 to convert to milliseconds

int retracttime = 10 * 1000; // 10 seconds, times 1000 to convert to milliseconds

int timetorun = 300 * 1000; // 300 seconds, times 1000 to convert to milliseconds

int duty;

int elapsedTime;

boolean keepMoving;

void setup() {

  Serial.begin(9600);

  pinMode(EnablePin1, OUTPUT);//Enable the board

  pinMode(PWMPinA1, OUTPUT);

  pinMode(PWMPinB1, OUTPUT);//Set motor outputs

  elapsedTime = 0; // Set time to 0

  keepMoving = true; //The system will move

}//end setup

void loop() {

  if (keepMoving) 

  {

    digitalWrite(EnablePin1, HIGH); // enable the motor

    pushActuator();

    delay(extendtime);

    stopActuator();

    delay(10);//small delay before retracting

    pullActuator();

    delay(retracttime);

    stopActuator();

    elapsedTime = millis();//how long has it been?

    if (elapsedTime > timetorun) {//if it's been 300 seconds, stop

      Serial.print("Elapsed time is over max run time. Max run time: ");

      Serial.println(timetorun);

      keepMoving = false;  

    }

  }//end if

}//end main loop

void stopActuator() {

  analogWrite(PWMPinA1, 0);

  analogWrite(PWMPinB1, 0); // speed 0-255

}

void pushActuator() {

  analogWrite(PWMPinA1, 255);

  analogWrite(PWMPinB1, 0); // speed 0-255

}

void pullActuator() {

  analogWrite(PWMPinA1, 0);

  analogWrite(PWMPinB1, 255);//speed 0-255

}

 

Ważne jest, by przejść przez kod linia po linii, aby zrozumieć, co się dzieje. Dzięki temu możesz go dostosować do całej gamy innych zadań. Na teraz najważniejsza jest jednak pierwsza sekcja i funkcja setup, które koncentrują się na przypisywaniu pinów i ustawieniu prędkości cyklu.

Musisz skonfigurować piny na LC-80 tak, aby odpowiadały temu, co jest w pierwszej sekcji kodu — poprzez ustawienie zworek na LC-80 lub modyfikację kodu. W tym przypadku ustaw pin "Enable" na D13, pin "PWMA" na D11 oraz pin "PWMB" na D3. Pin „Enable” kontroluje i zasila silnik; bez niego siłownik przestanie się poruszać i nie będzie można nim sterować. Piny „PWMA” i „PWMB” sterują wysuwaniem i chowaniem siłownika. W tym przykładzie nie potrzebujemy pinów „Sensor”, więc nie musisz nic tam wybierać.

Sterowanie czasowe siłownika liniowego jest już gotowe. Możesz wgrać kod do Arduino za pomocą ich IDE (pobierz ze strony Arduino). Gdy Twój siłownik zacznie się wysuwać i chować, pobaw się ustawieniami w kodzie — spróbuj zmienić czas wysuwu/chowania, ponownie wgraj program do Arduino i zobacz, jak reaguje siłownik liniowy. Modyfikując te wartości w kodzie, możesz kontrolować prędkość oraz całkowity czas cyklu ruchu w zależności od potrzeb aplikacji.


Podsumowanie

Poniżej zamieściliśmy wideo z pracy siłownika sterowanego czasowo. W przykładzie wideo chcieliśmy pokazać inny sposób zmiany timingu, więc ustawiliśmy wysuwanie i chowanie po 5 sekund w cyklu 20‑sekundowym.

Jak wspomniano wcześniej, to tylko jeden z przykładów modyfikowania ruchu siłownika przy pomocy naszych mikrokontrolerów. Jeśli masz własną, niestandardową metodę sterowania, możemy zbudować system sterowania dokładnie pod Twoje wymagania dzięki pomocy naszego doświadczonego zespołu inżynierów. Przeprowadzą Cię przez cały proces i zadbają, abyś miał pełną kontrolę nad swoimi urządzeniami. Jeśli chcesz dowiedzieć się więcej o procesie zamówień niestandardowych, zajrzyj na naszą stronę zamówień niestandardowych.