Getting Started with Arduino and PA-12

Arduino ve PA-12'ye Başlarken

PA-12, Arduino ile kontrol edilebilen yüksek hassasiyetli bir aktüatördür. Bu PA-12 introduction kılavuzu, PA-12 Arduino API’si ile kontrol yöntemleri ve uygulamayı içerecektir.

PA-12’nin iki sürümü vardır. PA-12-R, kömürsüz (coreless) DC servo motor ve RS-485 iletişim protokolüne sahiptir. PA-12-T ise kömürlü (cored) DC servo motor ve TTL/PWM iletişim protokolüne sahiptir.

PA-12 ve Arduino ile başlamak, uygulanacak PA-12 sürümüne bağlı olacaktır. Bu eğitimde PA-12-10645012R kullanılmıştır – 1,06” vuruş mesafesi, 4.50LBS kuvvet, 12VDC coreless DC motor. Coreless motor, bu aktüatör için iletişim protokolünün RS-485 olduğunu ifade eder.

Arduino Leonardo/Uno, RS-485 iletişim protokolüne sahip değildir ancak TTL vardır. Bu eğitimde lineer aktüatör Arduino ile iletişim kurmak için TTL’den RS-485’e bir modül kullanacağız.

Arduino Module

Şekil 1 - RS-485’ten TTL’ye Arduino Modülü


PA-12 Kontrol İşlemi

PA-12, TTL veya RS-485 iletişimi üzerinden gönderilen veri paketleriyle doğrudan kontrol edilir. Her veri paketi, PA-12’nin belirli bir işlevini yerine getirmek veya cihazın mevcut durumunu almak için kullanılan bilgiler içerir. Örneğin cihazın mevcut durumu, servo kimliği, voltaj değeri, aktüatör milinin konumu vb. olabilir.

Ekipman ve Yazılım

PA-12 API

PA-12 API’si buradan. indirilebilir. Bu API aşağıdaki dosya ve klasörleri içerir:

  • PA12.ino
    • PA-12 komut yapıları ve PA-12’ye veri gönderip alan işlevleri içerir
    • Örnek kodlarda kullanılan veya kendi kodunuzda uygulayacağınız tüm işlevler bu dosyada yer alır
  • PA12.h
    • Başlık dosyası, iletişim protokolünü ve seri iletişim başlık dosyalarını içerir
    • Tüm PA12 özellikleri ve fonksiyonları için işlev ve değişken bildirimlerini içerir
    • setPosition, ServoID, presentSpeed, forceEnable
  • Yardımcı Dosyalar
  • Örnek Kodlar
    • Örnek kod, PA-12 kontrolünü kendi sisteminize kolayca uygulamak için kullanılabilir
    • Tüm örnek kodlar Arduino Leonardo ile kullanım için programlanmıştır; ancak gönderme ve alma pinleri için kullanılan değişkenler, sahip olduğunuz mikrodenetleyici/Arduino ile uyumlu olacak şekilde değiştirilebilir

PA12 Kütüphanesini İçe Aktarma

‘Sketch’ --> Include Library --> Add.ZIP Library’i seçin. PA12 klasöründe bulunan tüm dosyalar doğrudan lineer aktüatör Arduino kitaplığına aktarılacaktır. Böylece aktüatörü kontrol etmek için PA12 işlevlerini kullanabilirsiniz.

Arduino Library

Şekil 2 - Arduino Kitaplığı İçe Aktarma


PA-12 için Kullanılabilir Komutlar

Aşağıda komutların bir tablosu gösterilmektedir. Komutlar hakkında daha fazla bilgi için kodlama ayrıntıları açısından PA12.ino dosyasını inceleyin. Bu eğitimde temel komutları ele alacağız. Gelecekteki eğitimlerde daha gelişmiş işlevler ve kontrol teknikleri yer alacaktır.

Okuma Fonksiyonları

Aşağıdaki tabloda yer alan fonksiyonlar salt-okunurdur ve bir değer döndürür.

Okuma Fonksiyonu

Değişken

Açıklama

myServo.getModelNumber(ID_NUM)

ID_NUM

PA-12 model numarası

myServo.Version(ID_NUM)

ID_NUM

PA-12 motor sürüm numarası

myServo.CalStroke (ID_NUM, *Length*)

ID_NUM, Length = Short, Long, or Center

Vuruş konumu kalibrasyon kontrolü

myServo.presentVolt((ID_NUM)/10)

ID_NUM

Giriş voltajı kontrolü

myServo.presentTemperature(ID_NUM)

ID_NUM

Motorun mevcut sıcaklığı

myServo.MaxTemperature(ID_NUM)

ID_NUM

Maksimum sıcaklık sınırını okur

myServo.presentPosition(ID_NUM)

ID_NUM

Aktüatörün mevcut konumu

myServo.moving(ID_NUM)

ID_NUM

Motor durumunun dönen değeri. 1 = Hareket ediyor, 0 = Durduruldu

myServo.limitVolt(ID_NUM, *Highest/Lowest*)

ID_NUM,  High Voltage Level = Highest or  Low Voltage Level = Lowest

Yüksek veya düşük voltaj ayarını okur

myServo.alarmLed(ID_NUM)

ID_NUM

Alarm LED’inin durumunu okur. 1 = AÇIK, 0 = Kapalı

myServo.alarmShutdown(ID_NUM)

ID_NUM

Alarm kapatma modunun durumunu okur

myServo.StrokeLimit(ID_NUM, *Long/Short*)

ID_NUM, Extend Limit = Long or Retract Limit = Short

Maksimum ve minimum vuruş (stroke) sınırlarını okur

myServo.ResolutionFactor(ID_NUM)

ID_NUM

Servo motor çözünürlük faktörünü okur

myServo.movingSpeed(ID_NUM)

ID_NUM

Servo motor hız değerini okur

myServo.forceLimit(ID_NUM)

ID_NUM

Servo motorun maksimum kuvvetini okur (Geçici Ayar)

myServo.maxForce(ID_NUM)

ID_NUM

Servo motorun maksimum kuvvetini okur (Kalıcı Ayar)

Yazma Fonksiyonları

Yazma Fonksiyonu

Değişken

Açıklama

myServo(&Serial, enable_pin, Tx Level)

Seri port numarası, enable pin, iletim pini

İletişim portu ayarı

myServo.begin(*Baud Setting Value*)

Baud Ayar Değeri (Tabloya bakınız)

Seri iletişim Baud Hızı

myServo.ServoID(ID_NUM, ID_Sel)

ID_NUM, ID_Sel

Servo kimlik değerini değiştirir

myServo.ledOn(ID_NUM, *LED RGB Value*)

ID_NUM, LED RBB Değeri (Tabloya bakınız)

Belirli bir LED’i açar

myServo.MaxTemperature(ID_NUM, Temperature)

ID_NUM, Temperature

Maksimum sıcaklık sınırını yazar

myServo.goalPosition(ID_NUM, *Position Value*)

ID_NUM, Position Value (Tabloya bakınız)

İstenen vuruş (stroke) konumunu ayarlar

myServo.limitVolt(ID_NUM, *Highest/Lowest*, LimitVolt)

ID_NUM, Higher Value = Highest or Lower Value = Lowest, LimitVolt

Yüksek veya düşük voltaj ayarını belirler

myServo.alarmLed(ID_NUM, *Alarm Variable*)

ID_NUM, Alarm Bit

Alarm LED ayarı. Daha fazla bilgi için tabloya bakın.

myServo.alarmShutdown(ID_NUM, *enable*)

ID_NUM, Enable: 0 = off, 1 = on

Motor alarm kapatma ayarı. Alarm etkinse motor kapatılabilir

myServo.StrokeLimit(ID_NUM, *Long/Short*, *Position Value*)

ID_NUM, Extend Limit = Long or Retract Limit = Short, Position Value (Tabloya bakınız)

Maksimum ve minimum vuruş sınırlarını yazar

myServo.ResolutionFactor(ID_NUM, *Resolution Factor*)

ID_NUM, Resolution Factor (Tabloya bakınız)

Aktüatör vuruş konumlandırması için çözünürlük değerini ayarlar.

myServo.movingSpeed(ID_NUM, *Moving Speed Value*)

ID_NUM, Moving Speed Value (Tabloya bakınız)

Servo motor hızını ayarlar

myServo.forceLimit(ID_NUM, *Force Value*)

ID_NUM, Force Value (Tabloya bakınız)

Servo motorun maksimum kuvvetini ayarlar (Geçici Ayar)

myServo.maxForce(ID_NUM, *Force Value*)

ID_NUM, Force Value (Tabloya bakınız)

Servo motorun maksimum kuvvetini ayarlar (Kalıcı Ayar)


Değişken Ayarları

Aşağıdaki tablolar, işlevlere girilecek değişken değerlerini içerir.

Baud Hızı

Baud Değişken Değeri

Baud Hızı

16

115200

32

57600

64

19200

128

9600


LED Değeri

LED RGB Değeri

KIRMIZI

YEŞİL

MAVİ


Servo Kimliği

Servo Kimlik Değeri

0

1 - 253

254


Servo Motor Kimliği değişkeni ID_NUM için: Toplam 255 seçenek vardır. 0 değeri varsayılandır. Bireysel bir kimlik için 1 ila 253 arasında bir değer seçebilirsiniz. 254 değeri yayın (broadcast) kimliği için ayrılmıştır; dolayısıyla bir ağ içindeki tüm PA-12’leri etkinleştirir.

Alarm Ayarları

Alarm Ayarı

Alarm Ayar Değeri

Giriş Voltajı Hatası

0

Vuruş Sınırı Hatası

1

Menzil Hatası

3

Sağlama (Checksum) Hatası

4

Aşırı Yük Hatası

5

Komut Hatası

6

*Ayrılmış*

7

Vuruş Mesafesi Çözünürlük Faktörü

Çözünürlük Faktörü Değeri

Çözünürlük

1

4096

2

2048

3

1024

4

512


Çözünürlük değeri ne kadar yüksekse, konumsal doğruluk o kadar yüksektir. 

Hareket Hızı

Hareket Hızı Değeri

Hız Ayarı

0

Maks Hız

1 - 1023

1 = En Düşük, 1023 = En Yüksek


Kuvvet Değeri

Kuvvet Değeri

Kuvvet Ayarı

0 - 1023

1 = En Düşük, 1023 = En Yüksek


Konum Değeri

Konum Değeri

Konum

0 - 4095

0 = Tam Geri Çekili, 4095 = Tam Uzatılmış


Kablolama Kılavuzu

PA-12, RS-485 modülüne bağlanır ve bu modül doğrudan Arduino’ya bağlanır. PA-12’nin bu sürümü, servo motor gücü için 12VDC güç kaynağı gerektirir.

Servo Motor

RS-485 Taraf A Arduino
DI Pin 1
DE Pin 2
RE Pin 2
R0 Pin 0

 

Arduino üzerindeki Pin 0, TTL almadır. Arduino Leonardo üzerindeki Pin 1, TTL göndermedir. Örnek kodlarda Pin 2, enable (etkinleştirme) pini olarak kullanılacak şekilde ayarlanmıştır.

PA-12 4-Pin Konnektör

Değer

Siyah

GND

Kırmızı

Servo Motor +VDC

Beyaz

İletişim Pini A

Sarı

İletişim Pini B

 

Port Connections - PA-12

Şekil 3- PA-12 Port Bağlantıları

RS-485 Taraf B

Bağlantı

VCC1

+5VDC (Arduino)

A

PA-12 Beyaz Kablo

B

PA-12 Sarı Kablo

GND2

Güç Kaynağı GND ve PA-12 GND

1 RS-485 modülü, Arduino’nun +5VDC çıkışından güç alır.

2 Toprak, PA-12, güç kaynağı ve RS-485 modülü arasında ortaktır.

Örnek Kod

Bu eğitimde, PA-12’nin bazı özelliklerine başlangıç düzeyinde bir bakış sağlayan ve kendi kodunuza nasıl yazma ve okuma fonksiyonlarının eklenebileceğini gösteren üç örnek kod göstereceğiz.

  1. PA12_PresentPosition
  2. PA12_StrokeLimit
  3. PA12_ForceLimit

1. Mevcut Konum

Bu kodda kullanıcı, seri monitörde 0 ile 4095 arasında istenen konum değerini girer. Giriş yapıldıktan sonra komut PA-12’ye gönderilir ve servo motor, mili istenen konuma getirmek için çalışır. Motor hareket hâlindeyken mevcut konum, son konuma ulaşılana kadar görüntülenir. 

Arduino Code

2. Vuruş Sınırı

Bu kodda PA-12, girilen uzatma ve geri çekme sınır parametreleri içinde her 1000 ms’de bir çevrim yapar. Vuruş sınırı fonksiyonunda yer alan Long ve Short atamaları

Arduino Code

3. Kuvvet Sınırı

Burada gösterilen kuvvet sınırı kodu geçici (volatile) sürümdür. Bu, PA-12 her güç kaybettiğinde kuvvet sınırı değerinin varsayılan ayara sıfırlanacağı anlamına gelir. Kullanıcı, seri monitörden kuvvet sınırı değerini girer. Bu durumda 0 maksimum değeri düşük bir kuvvet değerini, 1023 ise maksimum kuvvet değerini ifade eder.

Arduino Code

Gelecek Eğitimler

Gelecekteki eğitimlerde şunları ele alacağız:

  • Gelişmiş işlev uygulamaları
  • TTL ve PWM sürümü PA-12 kontrolü
  • Arıza giderme teknikleri
  • Harici kontrol yöntemleri

PA-12, son kullanıcının uygulaması üzerinde doğrudan kontrol sağlamasına imkân veren, çok yönlü ve yüksek hassasiyetli bir aktüatördür. Doğru uygulama ile PA-12, sistem gereksinimleriniz ne ise onları tam olarak gerçekleştirebilir.

Ek bilgiler için lütfen bize sales@progressiveautomations.com adresinden e-posta gönderin veya ekibimizi 1-800-676-6123 numaralı telefondan arayın.