Daftar Isi:

Model Railway - Stasiun Komando DCC Menggunakan Arduino :: 3 Langkah
Model Railway - Stasiun Komando DCC Menggunakan Arduino :: 3 Langkah

Video: Model Railway - Stasiun Komando DCC Menggunakan Arduino :: 3 Langkah

Video: Model Railway - Stasiun Komando DCC Menggunakan Arduino :: 3 Langkah
Video: Arcomora - Arduino Controlled Model Railway DCC Accessory Decoder 2024, Juli
Anonim
Image
Image
Kode Arduino - Stasiun Perintah Dengan Keypad
Kode Arduino - Stasiun Perintah Dengan Keypad

Diperbarui Agustus 2018 - lihat Instruksi baru:

Pembaruan 28 April 2016: Sekarang 16 kemampuan kontrol jumlah pemilih / poin ke Stasiun Komando. Jumlah pemilih T1 - T8 tersedia melalui tombol 'B' Jumlah pemilih T9 - T16 tersedia melalui tombol 'C'

Pembaruan 10 Maret 2016:

Sekarang menambahkan 8 kemampuan kontrol turnout / poin ke Command Station. Kode Arduino telah diperbarui sesuai dengan menggunakan paket standar NMRA untuk jumlah pemilih (juga berdasarkan studi paket data Lenz / Atlas Compact untuk kontrol jumlah pemilih).

Jumlah pemilih T1 - T8 tersedia melalui tombol 'B'

Lihat instruksi pada rangkaian penerima paket data yang digunakan dan kode Arduino yang diperlukan.

Pembaruan 18 Januari 2016:

Saya telah menambahkan resistor indera arus (1k5 ohm) dan kapasitor (10 uf) ke sirkuit dan mengubah kode Arduino untuk memutus daya ketika arus puncak> 3200 mAmp terdeteksi. Spesifikasi H-bridge menyatakan arus keluaran sebesar 377 uA per 1 Amp dalam beban.

Resistor 1,5 k ohm akan menghasilkan 0,565 volt per Amp pada pin analog 6. Dengan 1023 langkah pada input analog, ini memberikan beban 0,565 * 1023/5 = 116 per Amp.

A = 100 * (analogRead(AN_CURRENT)) / 116;A = A * 10; (untuk memberikan hasil dalam miliampere)

Arus beban dalam miliampere ditampilkan pada TFT

Keyboard 4x4 lengkap mencakup fungsi F1 hingga F8 dan 10 loco lainnya (1-19) melalui tombol '#' (untuk menambahkan 10 ke tombol numerik mulai dari loco 10).

Kode arduino termasuk standar NMRA untuk byte instruksi.

Lihat tautan

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

(halaman 6 memiliki relevansi khusus)

Paket-paket tersebut disusun menurut jumlah langkah kecepatan, alamat panjang/pendek dan instruksi Kelompok Fungsi.

Semua byte instruksi didahului oleh pembukaan '1' bit 11111111 (atau paket idle) diikuti oleh;

misalnya Alamat 4 byte 0 00000011 0 00111111 0 10000011 0 10111111

sama dengan loco 3, langkah kecepatan 128, arah maju dan kecepatan langkah 3 (byte akhir adalah kesalahan pemeriksaan XOR)

misalnya Alamat 3 byte 0 00000011 0 10010000 0 10110011

sama dengan loco 3, grup fungsi 1, FL menyala ditambah XOR byte (bit '0' memisahkan setiap byte)

Lihat video demonstrasi terlampir untuk loco 12.

Fungsi F1 - F8 tersedia melalui tombol 'A', DIR (tombol '*' = arah) FL (tombol '0' = lampu) dan tombol '#' memberikan locos 10 hingga 19 pada keypad numerik. Tombol 'D' sekarang digunakan untuk 'BERHENTI Darurat'.

Terima kasih kepada berbagai penyedia di web untuk sumber informasi DCC dan kode Arduino.

Secara khusus, proyek ini terinspirasi oleh Michael Blank dan 'Simple DCC - a command station'.

www.oscale.net/en/simpledcc

4x4 Matrix Array 16 Key Membran Switch Keypad (ebay) £1.75

2,2 inci 240x320 Serial SPI TFT LCD Display Module (ebay) £7,19

UNIVERSAL 12V 5A 60W POWER SUPPLY AC ADAPTOR (ebay) £6.49

Nano V3.0 Untuk Arduino dengan CH340G 5V 16M kompatibel ATmega328P (ebay) 2 x £3,30 = £6,60

Modul Driver Motor LMD18200T untuk Arduino R3 (ebay) £6,99

Konektor, kawat, papan vero, potensiometer kira-kira £3,50

Total £32,52

Stasiun perintah dasar tanpa layar tft dan 1 x nano akan menjadi £22,03

[Catatan: Anda dapat menambahkan kartu memori ke tampilan TFT dan mengubah kode untuk menampilkan gambar mesin yang dipilih, meskipun kode perpustakaan harus diedit untuk membuat lebih banyak memori untuk sketsa. Ukuran sketsa saat ini maksimal untuk TFT Arduino Nano]

Kode Arduino asli oleh Michael Blank adalah untuk satu mesin, hanya maju / mundur tanpa kontrol fungsi, tanpa keypad, dan tanpa tampilan.

Saya telah memodifikasi kode untuk memasukkan 1 - 19 mesin, tampilan layar, arah, lampu, 8 fungsi, berhenti darurat dan batas arus otomatis.

Jembatan LMD18200T dapat membawa hingga 3 amp yang membuatnya cocok untuk semua skala termasuk skala G (kereta taman). Catu daya utama dan elektronik hanya cocok untuk penggunaan di dalam ruangan kecuali Anda dapat membuatnya tahan cuaca. Saya memiliki stasiun komando di rumah musim panas dengan kabel penghubung rel yang mengalir melalui dinding ke trek.

Langkah 1: Kode Arduino - Stasiun Perintah Dengan Keypad

Terima kasih saya kepada tvantenna2759 untuk menunjukkan 2 kesalahan dalam diagram sirkuit di mana kode Arduino tidak cocok dengan kabel, sekarang diperbarui (21 Okt 2017).

Sekarang menambahkan 16 pemilih ke Stasiun Komando. Lihat instruksi pada diagram rangkaian jumlah pemilih / poin menggunakan modul Arduino Mini Pro.

Kode yang dimodifikasi termasuk kontrol jumlah pemilih terlampir di bawah ini.

Paket decoder Accessory Basic adalah: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Dari analisa paket yang digunakan oleh Lenz (Compact / Atlas) untuk point control, saya telah menggunakan format paket binary berikut untuk byte 1 dan 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Jumlah Peserta 1b: 1000 0001 1111 1001 Jumlah Peserta 2a: 1000 0001 1111 1010 / Jumlah Peserta 2b: 1000 0001 1111 1011 Jumlah Peserta 3a: 1000 0001 1111 1100 / Jumlah Peserta 3b: 1000 0001 1111 1101 Jumlah Peserta 4a: 1000 0001 1111 1110 / Jumlah Peserta 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Jumlah Peserta 5a: 1000 0010 1111 1000 / Jumlah Peserta 5b: 1000 0010 1111 1001 Jumlah Peserta 6a: 1000 0010 1111 1010 / Jumlah Peserta 6b: 1000 0010 1111 1011 Jumlah Peserta 7a: 1000 0010 1111 1100 / Jumlah Peserta 7b: 1000 0010 1111 1101 Jumlah Peserta 8a: 1000 0010 1111 1110 / Jumlah Peserta 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Jumlah Peserta 9a: 1000 0011 1111 1000 / Jumlah Peserta 9b: 1000 0011 1111 1001 dst ………

Ekstrak dari kode yang dimodifikasi: Tambahkan 2 lagi pesan 'struct' updatevoid amend_tun1 (Pesan struct & x) { x.data[0] = 0x81; // decoder aksesori 0x80 & alamat 1 x.data[1] = 0; }

void amend_tun2 (Pesan struct & x) { x.data[0] = 0x82; // decoder aksesori 0x80 & alamat 2 x.data[1] = 0; }

Tambahkan kekosongan baru untuk turnouts:boolean read_turnout() { delay(20);

boolean diubah_t = false; get_key();

if (key_val >= 101 && key_val <= 404 && turn == 1){

data = 0xf8; // = biner 1111 1000

amand_tun1(pesan[1]);

}

if (key_val >= 505 && key_val <= 808 && turn == 1){

data = 0xf8; // = biner 1111 1000

amand_tun2(pesan[1]);

}

if (key_val == 101 && belok == 1){

jika (tun1 == 1){

data |= 0; //t1a

berubah_t = benar;}

jika (tun1 == 0){

data |= 0x01; //t1b

berubah_t = benar;}

}

if (key_val == 202 && belok == 1){

jika (tun2 == 1){

data |= 0x02; //t2a

berubah_t = benar;

}

jika (tun2 == 0){

data |= 0x03; //t2b

berubah_t = benar; }

}

if (key_val == 303 && belok == 1){

jika (tun3 == 1){

data |= 0x04; //t3a

berubah_t = benar;

}

jika (tun3 == 0){

data |= 0x05; //t3b

berubah_t = benar;}

}

if (key_val == 404 && putar == 1){

jika (tun4 == 1){

data |= 0x06; //t4a

berubah_t = benar;

}

jika (tun4 == 0){

data |= 0x07; // f4b

berubah_t = benar;}

}

if (key_val == 505 && belok == 1){

jika (tun5 == 1){

data |= 0; //t5a

berubah_t = benar;

}

jika (tun5 == 0){

data |= 0x01; //t5b

berubah_t = benar;}

}

dll ………………….

Langkah 2: Kode Arduino - Tampilan TFT

Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT
Kode Arduino - Tampilan TFT

Rangkaian tampilan tetap sama dengan kode yang dimodifikasi untuk menunjukkan status 16 pemilih. Catatan: Kode perpustakaan menghabiskan hampir semua memori kode sketsa, menyisakan sedikit ruang untuk fitur baru. Jika ada yang memiliki file perpustakaan yang lebih efisien untuk TFT yang digunakan di sini, beri tahu saya.

Langkah 3: Pengontrol Jumlah Peserta

Pengontrol Jumlah Peserta
Pengontrol Jumlah Peserta
Pengontrol Jumlah Peserta
Pengontrol Jumlah Peserta

Lihat instruksi tentang cara membuat pengontrol Turnout / Poin.

Sirkuit lengkap mengontrol 16 titik dan 15 aksesori seperti lampu, suara, meja putar, dll.

Direkomendasikan: