Isi kandungan:

Model Keretapi - Stesen Perintah DCC Menggunakan Arduino :: 3 Langkah
Model Keretapi - Stesen Perintah DCC Menggunakan Arduino :: 3 Langkah

Video: Model Keretapi - Stesen Perintah DCC Menggunakan Arduino :: 3 Langkah

Video: Model Keretapi - Stesen Perintah DCC Menggunakan Arduino :: 3 Langkah
Video: Part 2 - A Room with a View Audiobook by E. M. Forster (Chs 08-14) 2024, November
Anonim
Image
Image
Arduino Code - Command Station Dengan Pad Kekunci
Arduino Code - Command Station Dengan Pad Kekunci

Dikemas kini Ogos 2018 - lihat Instructable baru:

Kemas kini 28 April 2016: Kini 16 keupayaan kawalan perolehan / mata ke Command Station. Pemilih T1 - T8 boleh didapati melalui kekunci 'B'

Kemas kini 10 Mac 2016:

Kini ditambahkan 8 keupayaan kawalan keluar / mata ke Command Station. Kod Arduino telah diperbaharui dengan sewajarnya menggunakan paket standard NMRA untuk jumlah pemilih (juga berdasarkan kajian paket data Lenz / Atlas Compact untuk kawalan pemilih).

Pemilih T1 - T8 boleh didapati melalui kekunci 'B'

Lihat petunjuk di litar penerima paket data yang digunakan dan kod Arduino diperlukan.

Kemas kini 18 Jan 2016:

Saya telah menambahkan perintang rasa semasa (1k5 ohm) dan kapasitor (10 uf) ke litar dan mengubah kod Arduino untuk memotong kuasa apabila arus puncak> 3200 mAmps dikesan. H-bridge spec menyatakan arus output output 377 uA per 1 Amp dalam muatan.

Perintang 1.5 k ohm akan memberikan 0.565 volt per Amp pada pin analog 6. Dengan 1023 langkah pada input analog, ini memberikan 0.565 * 1023/5 = 116 per beban Amp.

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

Arus beban dalam miliamp ditunjukkan pada TFT

Papan kekunci 4x4 penuh merangkumi fungsi F1 hingga F8 dan 10 lokos lain (1-19) melalui kekunci '#' (untuk menambah 10 ke kekunci angka bermula dari loko 10).

Kod arduino merangkumi standard NMRA untuk bait arahan.

Lihat pautan

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

(halaman 6 sangat relevan)

Paket disusun mengikut bilangan langkah laju, alamat panjang / pendek dan arahan Kumpulan Fungsi.

Semua bait arahan didahului dengan mukadimah bit '1' 11111111 (atau paket idle) diikuti oleh;

cth. Alamat 4 bait 0 00000011 0 00111111 0 10000011 0 10111111

sama dengan loko 3, 128 langkah kelajuan, arah maju dan langkah laju 3 (bait akhir adalah pemeriksaan ralat XOR)

cth: Alamat 3 bait 0 00000011 0 10010000 0 10110011

sama dengan loko 3, kumpulan fungsi 1, lampu FL menyala ditambah byte XOR (bit '0' memisahkan setiap bait)

Lihat video demonstrasi tertutup untuk loko 12.

Fungsi F1 - F8 tersedia melalui kekunci 'A', DIR ('*' key = direction) FL ('0' key = lights) dan key '#' memberikan lokos 10 hingga 19 pada papan kekunci berangka. Kekunci 'D' kini digunakan untuk 'STOP Kecemasan'.

Terima kasih kepada pelbagai penyedia di web untuk sumber maklumat DCC dan kod Arduino.

Khususnya, projek ini diilhamkan oleh Michael Blank dan 'Simple DCC - sebuah stesen arahan'

www.oscale.net/en/simpledcc

Pad Kekunci Suis Membran 4x4 Matriks Array 16 (ebay) £ 1.75

Modul Paparan LCD Serial SPI TFT 2,2 inci 240x320 (ebay) £ 7,19

UNIVERSAL 12V 5A 60W BEKALAN KUASA AC ADAPTER (ebay) £ 6.49

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

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

Penyambung, wayar, papan vero, potensiometer kira-kira £ 3,50

Jumlah £ 32.52

Stesen arahan asas tanpa skrin tft dan 1 x nano adalah £ 22.03

[Catatan: Anda dapat menambahkan kartu memori ke layar TFT dan mengubah kod untuk menampilkan gambar mesin yang dipilih, walaupun kode perpustakaan harus diedit untuk membuat lebih banyak memori untuk sketsa. Ukuran lakaran semasa adalah maksimum untuk TFT Arduino Nano]

Kod Arduino yang asli oleh Michael Blank adalah untuk satu enjin, maju / mundur sahaja tanpa kawalan fungsi, tanpa papan kekunci dan tanpa paparan.

Saya telah mengubah kod untuk memasukkan 1 - 19 mesin, skrin paparan, arah, lampu, 8 fungsi, berhenti kecemasan dan had arus automatik.

Jambatan LMD18200T boleh memuat hingga 3 amp yang menjadikannya sesuai untuk semua skala termasuk skala G (kereta kebun). Bekalan kuasa elektrik dan elektronik sesuai untuk kegunaan dalaman sahaja melainkan anda boleh menjadikannya tahan cuaca. Saya mempunyai stesen komando di rumah musim panas dengan wayar penghubung rel keluar melalui dinding ke trek.

Langkah 1: Arduino Code - Command Station Dengan Pad Kekunci

Terima kasih kepada tvantenna2759 kerana menunjukkan 2 ralat dalam rajah litar di mana kod Arduino tidak sepadan dengan pendawaian, kini dikemas kini (21 Okt 2017).

Kini menambah 16 orang yang hadir ke Command Station. Lihat arahan pada rajah litar perolehan / mata menggunakan modul Arduino Mini Pro.

Kod yang diubahsuai termasuk kawalan pemilih dilampirkan di bawah.

Paket decoder Aksesori Asas adalah: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Dari menganalisis paket yang digunakan oleh Lenz (Compact / Atlas) untuk kawalan titik, saya telah menggunakan format paket binari berikut untuk byte 1 dan 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Perolehan 1b: 1000 0001 1111 1001 Perolehan 2a: 1000 0001 1111 1010 / Perolehan 2b: 1000 0001 1111 1011 Perolehan 3a: 1000 0001 1111 1100 / Perolehan 3b: 1000 0001 1111 1101 Perolehan 4a: 1000 0001 1111 1110 / Perolehan 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Jumlah Perolehan 5a: 1000 0010 1111 1000 / Jumlah Perwakilan 5b: 1000 0010 1111 1001 Jumlah Perolehan 6a: 1000 0010 1111 1010 / Perolehan 6b: 1000 0010 1111 1011 Perolehan 7a: 1000 0010 1111 1100 / Perolehan 7b: 1000 0010 1111 1101 Perolehan 8a: 1000 0010 1111 1110 / Perolehan 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Perolehan 9a: 1000 0011 1111 1000 / Perolehan 9b: 1000 0011 1111 1001 dll ………

Ekstrak dari kod yang diubah: Tambahkan 2 lagi kemas kini mesej 'struct' dan jangan ubah_tun1 (struct Pesan & x) {x.data [0] = 0x81; // penyahkod aksesori 0x80 & alamat 1 x.data [1] = 0; }

batal edit_tun2 (struct Pesan & x) {x.data [0] = 0x82; // penyahkod aksesori 0x80 & alamat 2 x.data [1] = 0; }

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

boolean berubah_t = salah; get_key ();

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

data = 0xf8; // = binari 1111 1000

edit_tun1 (msg [1]);

}

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

data = 0xf8; // = binari 1111 1000

edit_tun2 (msg [1]);

}

jika (key_val == 101 && turn == 1) {

jika (tun1 == 1) {

data | = 0; // t1a

berubah_t = benar;}

jika (tun1 == 0) {

data | = 0x01; // t1b

berubah_t = benar;}

}

jika (key_val == 202 && turn == 1) {

jika (tun2 == 1) {

data | = 0x02; // t2a

berubah_t = benar;

}

jika (tun2 == 0) {

data | = 0x03; // t2b

berubah_t = benar; }

}

jika (key_val == 303 && turn == 1) {

jika (tun3 == 1) {

data | = 0x04; // t3a

berubah_t = benar;

}

jika (tun3 == 0) {

data | = 0x05; // t3b

berubah_t = benar;}

}

jika (key_val == 404 && turn == 1) {

jika (tun4 == 1) {

data | = 0x06; // t4a

berubah_t = benar;

}

jika (tun4 == 0) {

data | = 0x07; // f4b

berubah_t = benar;}

}

jika (key_val == 505 && turn == 1) {

jika (tun5 == 1) {

data | = 0; // t5a

berubah_t = benar;

}

jika (tun5 == 0) {

data | = 0x01; // t5b

berubah_t = benar;}

}

dan lain-lain ………………….

Langkah 2: Arduino Code - TFT Display

Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT
Kod Arduino - Paparan TFT

Litar paparan tetap sama dengan kod yang diubah untuk menunjukkan status 16 jumlah pemilih. Nota: Kod perpustakaan mengambil hampir semua memori kod lakaran yang meninggalkan sedikit ruang untuk ciri baru. Sekiranya ada yang mempunyai fail perpustakaan yang lebih cekap untuk TFT yang digunakan di sini, beritahu saya.

Langkah 3: Pengawal Pemilih

Pengawal Perolehan
Pengawal Perolehan
Pengawal Perolehan
Pengawal Perolehan

Lihat petunjuk mengenai cara membuat pengawal Giliran / Mata.

Litar lengkap mengawal 16 titik dan 15 aksesori seperti lampu, bunyi, pusing putar, dll.

Disyorkan: