Isi kandungan:

Garden Train - Arduino Wireless NMRA DCC: 4 Langkah (dengan Gambar)
Garden Train - Arduino Wireless NMRA DCC: 4 Langkah (dengan Gambar)

Video: Garden Train - Arduino Wireless NMRA DCC: 4 Langkah (dengan Gambar)

Video: Garden Train - Arduino Wireless NMRA DCC: 4 Langkah (dengan Gambar)
Video: Давайте учиться вместе - резюме для DCC Decoder! (Модель железной дороги DCC с Arduino 4) 2024, Jun
Anonim
Image
Image
Reka Bentuk Sistem
Reka Bentuk Sistem

Lebih jauh dari instruksi sebelumnya dengan DCC pada sistem rel mati, saya telah mengembangkan gagasan ini lebih jauh dengan Stesen Perintah DCC yang dipegang tangan dengan papan kekunci dan paparan LCD. Command Station mengandungi semua pengekodan yang diperlukan untuk arahan NMRA DCC, namun alih-alih menyambung ke rel, data dipindahkan oleh modul radio RF24L01 + ke penerima yang dipasang di dalam trak atau di bawah loko - di mana sahaja bilik membenarkan.

Sudah tentu, lokasi anda mesti dilengkapi dengan penyahkod keupayaan muatan yang sesuai dengan motor enjin.

Langkah 1: Reka Bentuk Sistem

Reka Bentuk Sistem
Reka Bentuk Sistem

Arduino Pro Mini adalah inti reka bentuk. Menggunakan Fritzing untuk mengembangkan litar dan menghasilkan PCB.

Saya dapat menggunakan PCB yang sama untuk pemancar dan penerima sehingga menjimatkan kos.

Pemancar mempunyai sambungan untuk papan kekunci dan LCD sementara penerima tidak memerlukannya dan menggunakan jambatan H untuk membekalkan output DCC untuk loko.

Perkembangan selanjutnya merangkumi sambungan untuk jambatan H yang lebih besar jika diperlukan untuk lokasi yang lebih berkuasa.

PCF8574 boleh dihapus jika anda menggunakan paparan LCD yang disertakan dengan ransel yang membolehkan sambungan SCA / SCL di Arduino memberi makan paparan hanya dengan menggunakan 2 wayar. Senarai bahagian: Jumlah = kira-kira £ 60 untuk DCC Command Station + 1 penerima Kos tambahan penerima = £ 10.00 setiap satu. + bateri

Arduino Pro Mini. x 2 = £ 4.00

Pad kekunci membran 4x3 = £ 3.00

Paparan LCD 20 x 4 = £ 7.00

PCF5874 = £ 1.80

NRF24L01 +. modul radio x 2 = £ 5.80

Pembuatan PCB dengan potongan 10 (atau papan Vero boleh digunakan) = £ 24 atau £ 4,80 untuk 2off

3.3 v Regulator = £ 0.17 (pek 25 dari RS Comp)

5v Regulator LM7805 = £ 0,30

H-bridge SN754410ne = £ 3.00

Lloytron boleh dicas semula 2700 maH AA bateri x 12 = £ 22.00. (bateri berkadar maH rendah lebih murah)

Kapasitor, periuk, pin, penyambung, dan lain-lain = £ 2.00 lebih kurang

Lampiran 190x110x60 mm = £ 8.00

Pemancar - pengecas / bateri telefon = £ 2.00

Langkah 2: Pemancar

Pemancar
Pemancar

Gambarajah litar ditunjukkan di mana pin D2 hingga D8 pada Arduino Pro Mini disambungkan ke papan kekunci. Potensiometer 100k ohm disambungkan ke pin Analog A0 untuk penyesuaian kelajuan. Pin SDA dan SCL membentuk cip PCF8574 disambungkan ke pin A4 dan A5 pada Arduino Pro Mini dengan menggunakan wayar yang disolder ke pin pada lapisan atas Pro Mini.

Lakaran Arduino dilampirkan untuk dimuat turun.

Saya telah menggunakan paparan LCD 20 x 4 yang membolehkan 4 baris maklumat dengan 20 aksara setiap baris. Pad kekunci menyediakan menu berikut:

1 hingga 9 = alamat loko * = arah 0 = lampu # = Menu fungsi untuk kekunci 1 hingga 8

Penerangan asas mengenai lakaran Arduino Pro Mini: Garis kod ini menyusun pesanan DCC dalam format HEX. Struktur Mesej msg [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // idle msg

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 bait alamat

};

Untuk menyimpan tetapan untuk setiap loko, serangkaian susunan disusun seperti berikut:

int la [20]; // array untuk menyimpan nombor loko

int sa [20]; // array untuk menahan nilai kelajuan

int fda [20]; // array untuk menahan dir

int fla [20]; // array untuk menahan lampu

int f1a [20]; // array untuk menggembirakan1…..

int f8a [20]; // array untuk menyeronokkan8

Untuk membolehkan arahan DCC dipinda semasa kita pergi:

Untuk arahan kelajuan: batal edit_speed (struct Pesan & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg dengan 28 langkah laju}

Untuk arahan Fungsi:

batal edit_group1 (struct Pesan & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg dengan arahan kumpulan satu 0x80}

Gelung utama lakaran:

gelung void (kekosongan) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

hantar_data_1 (); // hantar data secara wayarles

kelewatan (10);

hantar_data_3 (); // paparkan data pada paparan LCD

hantar_data_4 (); // paparkan data pada monitor bersiri}

jika (baca_fungsi ()) {

assemble_dcc_msg_group1 ();

hantar_data_1 ();

kelewatan (10);

hantar_data_3 (); }}

Kemas kini data apabila kelajuan berubah:

boolean read_locoSpeed () Ini mengesan tetapan alamat, kelajuan atau arah loko baru dan mengubah 'data' HEX dengan sewajarnya. Di sini saya telah menentukan 28 langkah kelajuan dan untuk memenuhi standard NMRA S 9.2, data kelajuan mesti dijumpai dari jadual carian dalam 'speed_step ()'

void speed_step () {switch (locoSpeed) {

kes 1: data | = 0x02; rehat;

kes 2: data | = 0x12; rehat;

kes 3: data | = 0x03; rehat;

………

kes 28: data | = 0x1F; rehat; }}

Kemas kini data apabila fungsinya berubah:

fungsi_bacaan_boolean ()

if (fla [locoAdr] == 0) {data = 0x80;

} // lampu kepala dimatikan

jika (fla [locoAdr] == 1) {

data = 0x90;

} // lampu kepala menyala

Untuk setiap Fungsi:

if (f2a [locoAdr] == 0) {data | = 0; }. // Fungsi 2 mati

jika (f2a [locoAdr] == 1) {

data | = 0x02; // Fungsi 2 on} 'data' dibangun dengan menggabungkan ['| =' gabungan sedikit demi sedikit atau] kod HEX untuk setiap Fungsi.

Langkah 3: Penerima

Penerima
Penerima

Gambarajah litar ditunjukkan di mana pin 5 dan 6 Arduino Pro Mini digunakan untuk memberikan isyarat DCC yang dibekalkan ke jambatan H. Pasangan H-bridge disambungkan secara selari untuk meningkatkan kapasiti semasa. Bergantung pada arus yang dilukis oleh loko, heatsink mungkin diperlukan untuk dipasang pada alat DIP 16 pin, atau jambatan H tugas berat mungkin disambungkan secara luaran.

Sketsa Arduino dilampirkan untuk dimuat turun. Isyarat DCC dibuat dari jam yang berjalan pada 2MHZ

batal SetupTimer2 () melakukan kerja ini.

Jam termasuk 'denyutan pendek' (58us) untuk '1' dalam data DCC dan 'denyut panjang' (116us) untuk '0' dalam data DCC.

Gelung tidak sah, mendapat data dari radio dan jika terdapat rentetan yang sah, data tersebut akan ditukar menjadi data DCC.

gelung void (void) {if (radio.available ()) {bool done = false; selesai = radio.read (inmsg, 1); // baca data yang diterima

char rc = inmsg [0]; // masukkan watak yang dibaca ke dalam larik ini

jika (rc! = 0) {. // jika watak tidak sama dengan sifar

dalamString.concat (rc); // membina mesej}

if (rc == '\ 0') {// jika watak adalah '/ 0' akhir mesej

Serial.println (inString); // mencetak mesej yang dipasang

tali(); // de-build mesej rentetan untuk mendapatkan arahan DCC

} } }

Langkah 4: Jalankan Locos

Jalankan Locos
Jalankan Locos

Untuk mengelakkan gangguan data dari menjalankan banyak kereta api di landasan yang sama, anda mesti memutuskan hubungan antara roda dan trek untuk setiap loko dan trak yang digunakan.

Nikmati kereta api percuma tanpa mengira keadaan trek - apa bezanya! Tidak perlu repot, tidak berhenti-henti dan tidak perlu pembersihan.

Bateri yang saya gunakan adalah LLoytron AA x 12. yang boleh dicas semula. Saya telah membina pengecas terutamanya untuk mereka yang mengecas 6 pada satu masa. (lihat arahan)

Disyorkan: