AN0007 Arduino'dan Platinum COMM'a
“
Ürün Bilgileri
Özellikler
- Ürün Adı: ARDUINO'dan PLATINUM COMMS YARDIM BELGESİ
- Üretici: Dynament Limited
- Adres: Hermitage Lane Sanayi Sitesi, Kings Mill Yolu,
Mansfield, Nottinghamshire, NG18 5ER, Birleşik Krallık - İletişim: Tel: 44 (0)1623 663636, E-posta: sales@dynament.com,
Website: www.dynament.com - Sayı: 1.2, Tarih: 09/04/2025
Ürün Kullanım Talimatları
Sensörün Bağlanması
Bu veri sayfası Arduino Mega'yı örnek olarak kullanırample. Olarak bağlan
Aşağıdaki gibidir:
- 5v -> 5v Arduino pin
- 0v -> Arduino GND
- Tx -> Arduino RX1
- Rx -> Potansiyel bölücünün çıkışına gider. Giriş
Arduino Tx'e gidiyor
Cilttage Uyumluluk
Arduino 5v mantık yüksekliğini kullanırken Platinum Sensör
3.3v. Bir vol kullanıntagR1 ve R2 için önerilen değerlere sahip e bölücü
Sensörün hasar görmesini önlemek için 4K7.
Arduino IDE Kurulumu
- Arduino IDE yazılımının en yeni sürümünü şu adresten indirin:
Arduino webalan. - Araçlar bölümünden Arduino kartını, işlemciyi ve portu seçin
açılır menü.
Kod Yükleme
- Verilen örneği kopyalayınampKodu Arduino IDE'sine aktarın.
- Kodu Arduino'ya yüklemek için oka tıklayın.
- Seri monitörü açın view veri iletimi.
SSS
S: Sadece bir haberleşme portuna sahip bir Arduino Uno'm varsa ne yapmalıyım?
liman?
A: Platinum Sensörü bu porta bağlayın.
seri monitör, iletilen hex'i de gösterecektir.
"`
Uygulama Notu AN0007
ARDUINO'DAN PLATİN İLETİŞİM YARDIM BELGESİ
Dynament Sınırlı
Hermitage Lane Sanayi Sitesi Kings Mill Way Mansfield Nottinghamshire NG18 5ER Birleşik Krallık. Tel: 44 (0)1623 663636
e-posta: sales@dynament.com www.dynament.com
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 1 / 14
İçindekiler
Dynament Limited …… ... ………………………………………………………………………………………………………………………….1
Gelişmiş Dönüştürme Notları…………………………………………………………………………………………….14
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 2 / 14
Sensörün Bağlanması Bu veri sayfası Arduino Mega'yı bir örnek olarak kullanırampÖrneğin, Ardunio Mega birden fazla haberleşme portu sağlar, bu nedenle haberleşme portu 1 sensörle haberleşmek için, haberleşme portu 0 ise bilgisayara yazdırmak için kullanılır.
Arduino 5v mantık yüksekliğini kullanırken Platinum Sensör 3.3v kullanır, bu nedenle Sensöre zarar gelmesini önlemek için bir voltage bölücü kullanılmalıdır. R1 ve R2 için önerilen değerler 4K7'dir.
Şekil 1: Voltajı düşürürtagkullanılabilir seviyeye
Arduino alıcısına giden Sensör iletim hattının bir bölücüye ihtiyacı yoktur çünkü Arduino için 3.3v kabul edilebilir bir giriştir.
Sensörü çalıştırmak için 5V ve 0V'a bağlanması gerekir. Bunun için Arduino'daki pinleri kullanabilirsiniz.
Bu işlem tamamlandıktan sonra sensörün şu pinleri bağlanmış olmalıdır:
5v -> 5v Arduino pin
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Potansiyel bölücünün çıkışına gider. Giriş Arduino Tx'e gider.
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 3 / 14
Bu işlem tamamlandıktan sonra Platinum Sensörünüz gösterildiği gibi bağlanmalıdır:
Şekil 2: Sensör, lehim adaptörüyle ters çevrilmiş şekilde gösterilmiştir
Eğer sadece bir haberleşme portu olan bir Arduino kullanıyorsanız (örneğin Arduino Uno), onu bu porta bağlamanız gerekecektir; ancak seri monitörü kullandığınızda (daha sonra gösterilecektir) iletilen hex de gösterilecektir.
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 4 / 14
Arduino IDE Arduino'ya gidin webSiteye gidin ve Arduino IDE yazılımının en yeni sürümünü indirin. Kurulumdan sonra aşağıdaki ekranı görmelisiniz:
Şekil 3: Arduino ana ekranı
Araçlar açılır menüsünden kullandığınız Arduino kartını, işlemciyi ve portu seçin:
Şekil 4: Anakart, İşlemci ve Bağlantı Noktası seçeneklerini seçin
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 5 / 14
Bu örneği kopyalaampkod: void send_read_live_data_simple(); void receive_read_live_data_simple();
void kurulum() { Serial.begin(38400); Serial1.begin(38400);
}
void loop() { canlı_verileri_basit_gönder(); canlı_verileri_basit_al(); gecikme(5000);
}
void send_read_live_data_simple(){ // 0x10, 0x13, 0x06, 0x10, 0x1F, 0x00, 0x58 Serial1.write(0x10); Serial1.write(0x13); Serial1.write(0x06); Serial1.write(0x10); Serial1.write(0x1F); Serial1.write(0x00); Serial1.write(0x58);
}
void receive_read_live_data_simple(){ while (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 6 / 14
Şekil 5: Yüklemeye hazır kod
Kodu Arduino'ya yüklemek için oka tıklayın. Arduino programlandıktan sonra seri monitörü açın.
AN0007
Şekil 6: Seri Monitörü açın
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 7 / 14
Şekil 7: Seri Monitör alınan paketi gösterir
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 8 / 14
Kod Açıklaması Arduino IDE, Arduino'yu programlamak için C++ kullanır.
Bu satır bir ileri bildirimdir. Bu, Mikrodenetleyiciye programın daha alt kısımlarında `send_read_live_data_simple' ve `receive_read_live_data_simple' fonksiyonlarının çağrılacağını bildirmek için kullanılır.
Sırada kurulum fonksiyonu var. Bu kod, başlangıçta yalnızca bir kez çalıştırılır. Serial0 ve Serial1 portlarını başlatır. Serial0, seri izleme ekranında gösterilen porttur. Serial1 ise sensörle iletişim kurmak için kullanılan porttur.
Bu ana döngüdür, bu kod tekrar tekrar döngüye girer. Fonksiyon adlarını okuyarak, canlı veri yapısının basitleştirilmiş bir sürümünü okumak için bir istek gönderdiğini görebilirsiniz. Ardından, yanıtı okumak için alma portunu okur. Bundan sonra Mikrodenetleyici 5000 ms bekler.
Bu fonksiyon, canlı veri basit yapısını alma isteğini seri port 1'e yazar. Daha önce de belirtildiği gibi, yalnızca bir seri portunuz varsa Serial1'i Serial olarak değiştirmelisiniz. Komutların tam listesini görmek için Premier Sensör İletişim Protokolü belgesine bakın. Belgenin bu komut için ne yazmanız gerektiğini anlatan kısmı aşağıdadır:
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 9 / 14
Bu fonksiyon, Platinum Sensör'den alınacak veri varken okuma fonksiyonunu döngüye alır. Serial1.read(), sensöre bağlı Serial1'den veri okur ve seri monitörde görülebilmesi için Serial0'a yazdırır. Ardından, alınan her baytı bölmek ve seri monitörde daha net görünmesini sağlamak için `|' karakteri yazdırılır.
Bu işlem tamamlandıktan sonra seri monitöre yeni bir satır yazar.
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 10 / 14
Paket Ayrımı Şekil 8 ve 9, alma ve gönderme hatlarına bağlı bir seri kod çözücünün çıkışını göstermektedir.
Şekil 8: Giden Paket
Şekil 9: Gelen Paket
Şekil 10 ve 11'de sırasıyla giden ve gelen onaltılık değer, hangi komut olduğunu gösteren bir sütunla birlikte gösterilmektedir.
Şekil 10: Giden Paket Açıklaması
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 11 / 14
Şekil 11: Gelen Paket Açıklaması
Lütfen Gaz okumasının tam sayı değil, ondalık sayı olduğunu unutmayın. Bu ondalık sayı IEEE-754 biçimindedir, dönüştürmek için aşağıdaki gibi bir çevrimiçi dönüştürücü kullanabilirsiniz. Bu durumda gaz değeri -250 olarak gösterilir (o sırada hata modunda olduğundan).
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 12 / 14
Serial.read() Kullanımı
Önceki kod yalnızca seri monitöre alınan verileri yazdırıyordu. Verileri değişkenlere kaydetmek istiyorsanız, bazı ek işlemler yapmanız gerekecektir. Aldığınız paket baytlara bölünür, bu nedenle bu verilerin bir kısmını değişkenlere bağlamanız gerekir. Serial1.Read() bir int döndürür (Arduino için 16 bittir), ancak yalnızca ilk 8 bit kullanılır. Bu nedenle, verileri yalnızca 8 bitlik daha küçük bir veri türüne kopyalayabiliriz; bu durumda char kullanacağım.
sadece bir bayt uzunluğundaki paketler için bu iyi çalışır:
2 bayt veya 4 bayt uzunluğundaki paketler için verileri birleştirmeniz gerekecektir.
Bunu birçok farklı şekilde yapabilirsiniz, ben burada veriyi sola kaydırıp ardından VEYA işlemi uygulayacağım.
Bu kodu kullanarak, eğer readByte1 0x34 ise ve readByte2 0x12 ise.
(int)readByte2
// bu 0x12'yi 0x0012'ye dönüştürür.
(int)readByte2 << 8
// bu bitleri bir bayt kaydırarak 0x1200 yapar.
(int)readByte2 << 8 | readByte1 // bu daha sonra 0x34'ün 0x1234 yapmasıyla VEYAlanır.
Bunu yapmanın bir başka yolu da değerleri bir diziye koymak ve ardından diziyi istediğiniz türe dönüştürmektir:
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 13 / 14
Karakterler bir bayt uzunluğundayken, float 4 bayt uzunluğundadır. Bu nedenle, içinde değerlerimizin bulunduğu 4 karakterlik bir dizi oluşturup türünü float olarak değiştirirsek.
Bu durumda readArray, bir char dizisine işaretçidir. (float*)readArray bu kısım onu bir float dizisine işaretçiye dönüştürür ve ardından float dizisinin değerini almak için başına bir * işareti eklenir.
Gelişmiş Dönüşüm Notları
1. Serial.read(), hatalar negatif değerler döndüreceğinden char yerine int döndürür. Programınız bunu kontrol etmelidir.
2. char ve int yerine sırasıyla uint8_t ve uint16_t kullanılmalıdır, çünkü bu türlerin standart bir boyutu yoktur (benim bilgisayarımda int 32 bit iken Arduino'da 16 bittir).
3. İletişim protokolü, baytlarla doldurulmuş karakterler (kontrol karakterleri olarak da bilinir) içerir; bu, tds0045 Premier Sensör İletişim Protokolü belgesinde daha ayrıntılı olarak açıklanmıştır. Bu nedenle, canlı veri okuma paketi bazen beklenenden daha büyük olabilir.
AN0007
Sayı 1.2
09/04/2025
Değişiklik Notu 805
Sayfa 14 / 14
Belgeler / Kaynaklar
![]() |
DYNAMENT AN0007 Arduino'dan Platinum COMM'a [pdf] Kullanıcı Kılavuzu AN0007 Arduino'dan Platinum COMM'a, AN0007, Arduino'dan Platinum COMM'a, Platinum COMM'a, Platinum COMM |