İçindekiler:

Model Demiryolu - Arduino Kullanan DCC Komuta İstasyonu:: 3 Adım
Model Demiryolu - Arduino Kullanan DCC Komuta İstasyonu:: 3 Adım

Video: Model Demiryolu - Arduino Kullanan DCC Komuta İstasyonu:: 3 Adım

Video: Model Demiryolu - Arduino Kullanan DCC Komuta İstasyonu:: 3 Adım
Video: Arduino Leanardo Project || USB Keyboard || HID Device || #Shorts || #ShortVideo | #TrendingVideo 2024, Temmuz
Anonim
Image
Image
Arduino Kodu - Tuş Takımlı Komuta İstasyonu
Arduino Kodu - Tuş Takımlı Komuta İstasyonu

Ağustos 2018'de güncellendi - yeni Eğitilebilir Dosyaya bakın:

28 Nisan 2016 Güncellemesi: Artık Komuta İstasyonuna 16 katılım / puan kontrol yeteneği. T1 - T8 katılımları 'B' tuşu ile kullanılabilir T9 - T16 katılımları 'C' tuşu ile kullanılabilir

10 Mart 2016 Güncellemesi:

Şimdi Komuta İstasyonuna 8 katılım / puan kontrol yeteneği eklendi. Arduino kodu, katılımlar için NMRA standart paketi kullanılarak uygun şekilde güncellenmiştir (ayrıca katılım kontrolü için Lenz / Atlas Compact veri paketlerinin çalışmasına dayanmaktadır).

T1 - T8 katılımları 'B' tuşu ile kullanılabilir

Kullanılan veri paketi alıcı devresi ve gerekli Arduino kodu hakkındaki talimatlara bakın.

18 Ocak 2016 Güncellemesi:

Devreye bir akım algılama direnci (1k5 ohm) ve kapasitör (10 uf) ekledim ve > 3200 mAmp'lik bir tepe akımı algılandığında gücü kesmek için Arduino kodunu değiştirdim. H köprüsü özelliği, yükte 1 Amper başına 377 uA çıkış algılama akımı belirtir.

1,5 k ohm direnç, analog pin 6'da Amp başına 0,565 volt verir. Analog girişte 1023 adım ile bu, Amp yükü başına 0,565 * 1023 / 5 = 116 verir.

A = 100 * (analogRead(AN_CURRENT)) / 116;A = A * 10; (miliamper olarak sonuç vermek için)

Miliamper cinsinden yük akımı TFT'de görüntülenir

Tam 4x4 klavye, F1'den F8'e kadar işlevleri ve '#' tuşuyla (lokomotif 10'dan başlayarak sayısal tuşlara 10 eklemek için) başka bir 10 lokomotifi (1-19) içerir.

Arduino kodu, talimat baytları için NMRA standardını içerir.

Bağlantıya bakın

www.nmra.org/sites/default/files/s-9.2.1_20…

(sayfa 6 özellikle önemlidir)

Paketler hız adım sayısı, uzun/kısa adres ve Fonksiyon Grubu komutlarına göre düzenlenir.

Tüm talimat baytlarından önce '1' bit 11111111 (veya boş paket) ve ardından gelen;

Örneğin. 4 baytlık bir adres 0 00000011 0 00111111 0 10000011 0 10111111

loco 3, 128 hız adımı, ileri yön ve hız adımı 3'e eşittir (bitiş baytı XOR hata kontrolüdür)

örneğin A 3 bayt adres 0 00000011 0 10010000 0 10110011

loco 3, fonksiyon grubu 1, FL yanıyor artı XOR baytına eşittir (her baytı bir '0' bit ayırır)

loco 12 için ekteki tanıtım videosuna bakın.

F1 - F8 işlevleri, 'A' tuşu, DIR ('*' tuşu = yön) FL ('0' tuşu = ışıklar) aracılığıyla kullanılabilir ve '#' tuşu sayısal tuş takımında 10 ila 19 arası locos verir. 'D' tuşu artık bir 'Acil DURDURMA' için kullanılıyor.

DCC bilgi kaynakları ve Arduino kodu için web'deki çeşitli sağlayıcılar sayesinde.

Bu proje özellikle Michael Blank ve 'Basit DCC - bir komuta istasyonu'ndan ilham almıştır.

www.oscale.net/en/simpledcc

4x4 Matris Dizisi 16 Anahtar Membrane Switch Tuş Takımı (ebay) £1,75

2,2 inç 240x320 Seri SPI TFT LCD Ekran Modülü (ebay) £7,19

EVRENSEL 12V 5A 60W GÜÇ KAYNAĞI AC ADAPTÖRÜ (ebay) 6,49 £

Nano V3.0 CH340G 5V 16M uyumlu ATmega328P (ebay) ile Arduino için 2 x 3,30 £ = 6,60 £

Arduino R3 (ebay) için Motor Sürücü Modülü LMD18200T £6,99

Konektörler, tel, vero kartı, potansiyometre yaklaşık 3,50 £

Toplam 32,52 £

Tft ekranı ve 1 x nano olmayan temel komut istasyonu 22,03 £ olur

[Not: TFT ekranına bir hafıza kartı eklemek ve seçilen motorların resimlerini görüntülemek için kodu değiştirmek mümkündür, ancak çizim için daha fazla hafıza oluşturmak için kütüphane kodlarının düzenlenmesi gerekir. Mevcut çizim boyutu, TFT Arduino Nano için maksimumda]

Michael Blank'ın orijinal Arduino kodu tek motor içindi, sadece ileri/geri fonksiyon kontrolü, tuş takımı ve ekran yoktu.

Kodu 1 - 19 motor, bir ekran, yön, ışıklar, 8 fonksiyon, acil durdurma ve otomatik akım limitini içerecek şekilde değiştirdim.

LMD18200T köprüsü 3 ampere kadar taşıyabilir, bu da onu G ölçeği (bahçe trenleri) dahil tüm ölçekler için uygun hale getirir. Şebeke güç kaynağı ve elektronik aksam, tamamen hava koşullarına dayanıklı hale getiremediğiniz sürece yalnızca iç mekanda kullanıma uygundur. Yazlık evde, duvardan raylara uzanan ray bağlantı telleri olan komuta istasyonum var.

Adım 1: Arduino Kodu - Tuş Takımlı Komuta İstasyonu

Arduino kodunun kablolamayla eşleşmediği devre şemasındaki 2 hatayı işaret ettiği için tvantenna2759'a teşekkürler, şimdi güncellendi (21 Ekim 2017).

Şimdi Komuta İstasyonuna 16 katılım eklendi. Arduino Mini Pro modülünü kullanarak katılım / puan devre şemasındaki talimatlara bakın.

Katılım kontrolünü içeren değiştirilmiş kod aşağıda eklenmiştir.

Temel Aksesuar kod çözücü paketi: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Lenz (Compact/Atlas) tarafından nokta kontrolü için kullanılan paketin analizinden, bayt 1 ve 2 için aşağıdaki ikili paket formatını kullandım: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Katılım 1b: 1000 0001 1111 1001 Katılım 2a: 1000 0001 1111 1010 / Katılım 2b: 1000 0001 1111 1011 Katılım 3a: 1000 0001 1111 1100 / Katılım 3b: 1000 0001 1111 1101 Katılım 4a: 1000 0001 1111 1110 / Katılım 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Katılım 5a: 1000 0010 1111 1000 / Katılım 5b: 1000 0010 1111 1001 Katılım 6a: 1000 0010 1111 1010 / Katılım 6b: 1000 0010 1111 1011 Katılım 7a: 1000 0010 1111 1100 / Katılım 7b: 1000 0010 1111 1101 Katılım 8a: 1000 0010 1111 1110 / Katılım 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Katılım 9a: 1000 0011 1111 1000 / Katılım 9b: 1000 0011 1111 1001 vb ………

Değiştirilmiş koddan alıntı: 2 tane daha 'struct' mesajı ekleyin updatevoid amend_tun1 (struct Message & x) { x.data[0] = 0x81; // aksesuar kod çözücü 0x80 & adres 1 x.data[1] = 0; }

void amend_tun2 (struct Message & x) { x.data[0] = 0x82; // aksesuar kod çözücü 0x80 & adres 2 x.data[1] = 0; }

Katılımlar için yeni boşluk ekleyin:boolean read_turnout() { delay(20);

boolean değiştirildi_t = yanlış; anahtarı al();

if (key_val >= 101 && key_val <= 404 && dönüş == 1){

veri = 0xf8; // = ikili 1111 1000

amend_tun1(mesaj[1]);

}

if (key_val >= 505 && key_val <= 808 && dönüş == 1){

veri = 0xf8; // = ikili 1111 1000

amend_tun2(mesaj[1]);

}

if (key_val == 101 && dönüş == 1){

if (tun1 == 1){

veri |= 0; // t1a

change_t = doğru;}

if (tun1 == 0){

veri |= 0x01; // t1b

change_t = doğru;}

}

if (key_val == 202 && dönüş == 1){

if (tun2 == 1){

veri |= 0x02; // t2a

change_t = doğru;

}

if (tun2 == 0){

veri |= 0x03; // t2b

change_t = doğru; }

}

if (key_val == 303 && dönüş == 1){

if (tun3 == 1){

veri |= 0x04; // t3a

change_t = doğru;

}

if (tun3 == 0){

veri |= 0x05; // t3b

change_t = doğru;}

}

if (key_val == 404 && dönüş == 1){

if (tun4 == 1){

veri |= 0x06; // t4a

change_t = doğru;

}

if (tun4 == 0){

veri |= 0x07; // f4b

change_t = doğru;}

}

if (key_val == 505 && dönüş == 1){

if (tun5 == 1){

veri |= 0; // t5a

change_t = doğru;

}

if (tun5 == 0){

veri |= 0x01; // t5b

change_t = doğru;}

}

vesaire ………………….

Adım 2: Arduino Kodu - TFT Ekran

Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran
Arduino Kodu - TFT Ekran

Gösterim devresi, 16 katılımın durumunu göstermek için değiştirilmiş bir kodla aynı kalır. Not: Kitaplık kodu, taslak kodu belleğinin neredeyse tamamını kaplar ve yeni özellikler için çok az yer bırakır. Burada kullanılan TFT için daha verimli bir kitaplık dosyası olan varsa lütfen bana bildirin.

Adım 3: Katılım Kontrolörü

Katılım Kontrolörü
Katılım Kontrolörü
Katılım Kontrolörü
Katılım Kontrolörü

Katılım / Puan denetleyicisinin nasıl yapılacağına ilişkin talimata bakın.

Komple devre 16 noktayı ve ışıklar, sesler, döner tabla vb. 15 aksesuarı kontrol eder.

Önerilen: