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.

Ş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
- Arduino Leonardo
- TTL’den RS-485’e Modül
- PA-12-10645012R Aktüatör
- +12VDC Güç Kaynağı
- Jumper Kablolar
- Arduino IDE
- PA-12 Arduino API
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.

Ş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.

| 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 |

Ş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.
- PA12_PresentPosition
- PA12_StrokeLimit
- 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.

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ı

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.

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.