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.
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:
- 1 x MegaMoto Plus
- 1 x Arduino Uno Rev3
- 1 x Mini Industrial Actuator (PA-09, ale każdy siłownik liniowy się nada)
- 1 x Power Supply (PS-20-12, ale sprawdzi się każdy zasilacz 12 V)
Łą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.

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.