Arduino ve doğrusal aktüatörle birlikte kullanılan fırçasız DC motor kontrol ünitesinin fotoğrafı.

Fırçasız DC Motor ile Bir Aktüatörün Vuruş Mesafesini Sürekli Uzatın ve Geri Çekin

Bu eğitim, bir fırçasız DC motor sürücüsünün, Arduino ve bir lineer aktüatörle eşlendiğinde kontrollerini anlamanıza yardımcı olacaktır. Bu program, bir aktüatörün vuruş mesafesini sürekli olarak uzatıp geri çekmek için kullanılabilir.

Başlamadan önce, bu eğitimde kullanacağımız bileşenleri gözden geçirelim:

  1. Arduino Mega (Arduino Uno da kullanılabilir).
  2. LC-241.
  3. Fırçasız motorlu PA-14.
  4. PS-13-12 güç kaynağı.
  5. Jumper kablolar.

 Arduino Kodlama

Lineer aktüatörden iki kablo seti çıkar; bir set motor içindir, diğer set ise limit anahtarları içindir. Yukarıdaki şekildeki şema, bileşenlerin birbirine nasıl bağlanacağını göstermektedir.

PIN KURULUM KODU

int out_lim = 45; // dış limit anahtarı pini

int in_lim = 53; // iç limit anahtarı pini

int run_f = 25; // kontrolcüde çalıştırma pini
int run_r = 30; // kontrolcüde ters yön pini

Kodun bu kısmı, veri alıp göndermek için kullanılacak pinlerin başlatılmasını sağlar. Bu örnekte tüm dijital pinler kullanılmıştır; ancak analog pinler de kullanılabilir.

KURULUM DÖNGÜSÜ KODU

void setup() {

  Serial.begin(9600); // saniyede 9600 bit ile seri iletişimi başlat
pinMode(out_lim, INPUT_PULLUP); // 45 numaralı pini giriş pini olarak ayarla
pinMode(in_lim, INPUT_PULLUP); // 53 numaralı pini giriş pini olarak ayarla
pinMode(run_f, OUTPUT); // 25 numaralı pini çıkış pini olarak ayarla
pinMode(run_r, OUTPUT); // 30 numaralı pini çıkış pini olarak ayarla

 

retract(); // başlangıçta vuruş mesafesini geri çek

  delay(500);
}


“setup” döngüsü, hangi pinlerin çıkış, hangilerinin giriş olarak kullanılacağını yapılandırır. Kodda görüldüğü üzere, limit anahtarlarına bağlı pinler limit anahtarı durumlarını okumak için, LC‑241 üzerindeki “RUN” ve “REV” pinlerine bağlı pinler ise ona yazmak için kullanılır. Başlangıçta kod, çalışmaya başlamadan önce tamamen geri çekmek için bir geri çekme fonksiyonunu da çalıştırır.

FONKSİYON TANIMLARI KODU

void extend() // bu fonksiyon motorun çalışmasını sağlar

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

 }

void retract() // bu fonksiyon motorun yönünü tersine çevirir
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, LOW);
}

void run_stop() // bu fonksiyon motoru devre dışı bırakır
{
digitalWrite(run_f, HIGH);
digitalWrite(run_r, HIGH);
}


Bu bölüm, motor gücünü ve yönünü kontrol etmek için kullanılan fonksiyonları açıklar. Motoru “RUN” pinine “0” veya “1” yazarak etkinleştirip devre dışı bırakacağız; ardından motorun yönünü tersine çevirmek için aynı komutları “REV” pinine yazacağız.

ANA DÖNGÜ KODU

Void loop() {

  int out_lim_state = digitalRead(out_lim); // limit anahtarlarını okur ve değerini kaydeder
int in_lim_state = digitalRead(in_lim);

  Serial.print("outer limit switch value "), Serial.println(out_lim_state); // 0 -> limit anahtarı basılı
  Serial.print("inner limit switch value "), Serial.println(in_lim_state); // 1 -> limit anahtarı basılı değil

if (out_lim_state == 0 && in_lim_state == 1) // dış limit anahtarı basılıysa ve iç anahtar basılı değilse (tamamen uzatılmış)
  {
retract(); // vuruş mesafesini geri çek
  }

  else if (out_lim_state == 1 && in_lim_state == 0) // iç limit anahtarı basılı ve dış anahtar basılı değilse (tamamen geri çekilmiş)
{
extend(); // vuruş mesafesini uzat
}

 

“loop” döngüsü temel olarak, anahtarların basılı olup olmadığını kontrol etmek için limit anahtarlarından girişleri okur ve buna göre sadece motorun yönünü değiştirir.

Piyasadaki lineer aktüatörlerin çoğu, fırçalı bir DC motorla gelir ve bu motorla mevcut görev döngüsü, ünitenin sürekli çalıştırılmasını bir ölçüde imkânsız kılar. Progressive Automations olarak müşterilerimize PA‑14 modelimiz için fırçasız DC motor seçme özgürlüğü sunuyor, böylece projeleri için daha fazla seçenek sağlıyoruz.