Πίνακας περιεχομένων:

Model Railway - DCC Command Station Using Arduino :: 3 βήματα
Model Railway - DCC Command Station Using Arduino :: 3 βήματα

Βίντεο: Model Railway - DCC Command Station Using Arduino :: 3 βήματα

Βίντεο: Model Railway - DCC Command Station Using Arduino :: 3 βήματα
Βίντεο: Let's learn together - DCC Decoder! (DCC model railway with Arduino 3) 2024, Νοέμβριος
Anonim
Image
Image
Κωδικός Arduino - Σταθμός εντολών με πληκτρολόγιο
Κωδικός Arduino - Σταθμός εντολών με πληκτρολόγιο

Ενημερώθηκε τον Αύγουστο 2018-δείτε το νέο Instructable:

Ενημέρωση 28 Απριλίου 2016: Τώρα 16 δυνατότητες συμμετοχής / ελέγχου σημείων στο Command Station. Οι συμμετοχές T1 - T8 είναι διαθέσιμες μέσω του πλήκτρου "B" Οι συμμετοχές T9 - T16 είναι διαθέσιμες μέσω του πλήκτρου "C"

Ενημέρωση 10 Μαρτίου 2016:

Προστέθηκε τώρα 8 δυνατότητα συμμετοχής / ελέγχου σημείων στο Command Station. Ο κώδικας Arduino ενημερώθηκε αναλόγως χρησιμοποιώντας το τυπικό πακέτο NMRA για συμμετοχές (επίσης βασισμένο σε μελέτη πακέτων δεδομένων Lenz / Atlas Compact για έλεγχο συμμετοχής).

Οι συμμετοχές Τ1 - Τ8 είναι διαθέσιμες μέσω του πλήκτρου «Β»

Βλέπε οδηγίες σχετικά με το κύκλωμα δέκτη πακέτων δεδομένων που χρησιμοποιείται και απαιτείται κωδικός Arduino.

Ενημέρωση 18 Ιανουαρίου 2016:

Έχω προσθέσει μια αντίσταση αίσθησης ρεύματος (1k5 ohm) και έναν πυκνωτή (10 uf) στο κύκλωμα και έχω τροποποιήσει τον κώδικα Arduino για διακοπή ρεύματος όταν ανιχνεύεται ρεύμα αιχμής> 3200 mAmps. Η προδιαγραφή H-bridge δηλώνει ρεύμα αίσθησης εξόδου 377 uA ανά 1 Amp στο φορτίο.

Η αντίσταση 1,5 k ohm θα παρέχει 0.565 βολτ ανά Amp στον αναλογικό πείρο 6. Με 1023 βήματα στην αναλογική είσοδο, αυτό δίνει 0.565 * 1023 /5 = 116 ανά φορτίο Amp.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (για να δώσει αποτέλεσμα σε milliamps)

Το ρεύμα φορτίου σε milliamps εμφανίζεται στο TFT

Το πλήρες πληκτρολόγιο 4x4 περιλαμβάνει λειτουργίες F1 έως F8 και άλλα 10 locos (1-19) μέσω του πλήκτρου##(για να προσθέσετε 10 στα αριθμητικά πλήκτρα ξεκινώντας από το loco 10).

Ο κώδικας arduino περιλαμβάνει το πρότυπο NMRA για byte εντολών.

Δείτε το σύνδεσμο

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

(η σελίδα 6 έχει ιδιαίτερη σημασία)

Τα πακέτα είναι διατεταγμένα σύμφωνα με τον αριθμό των βημάτων ταχύτητας, τη μακρά / σύντομη διεύθυνση και τις οδηγίες της ομάδας λειτουργιών.

Όλα τα byte εντολών προηγούνται από ένα προοίμιο των δυαδικών ψηφίων «1» 11111111 (ή πακέτου αδράνειας) που ακολουθείται από:

π.χ. Διεύθυνση 4 byte 0 00000011 0 00111111 0 10000011 0 10111111

ισοδυναμεί με loco 3, 128 βήματα ταχύτητας, κατεύθυνση προς τα εμπρός και βήμα 3 ταχύτητας (το τελικό byte είναι ο έλεγχος σφάλματος XOR)

π.χ. διεύθυνση 3 byte 0 00000011 0 10010000 0 10110011

ισοδυναμεί με loco 3, ομάδα συναρτήσεων 1, τα φώτα FL ανάβουν συν X byte (ένα bit «0» χωρίζει κάθε byte)

Δείτε το συνημμένο βίντεο επίδειξης για το loco 12.

Οι λειτουργίες F1 - F8 είναι διαθέσιμες μέσω του πλήκτρου «A», του DIR («*» πλήκτρο = κατεύθυνση) FL («0» πλήκτρο = φώτα) και το πλήκτρο «#» δίνει τις ρυθμίσεις 10 έως 19 στο αριθμητικό πληκτρολόγιο. Το πλήκτρο "D" χρησιμοποιείται τώρα για "STOP έκτακτης ανάγκης".

Χάρη σε διάφορους παρόχους στον ιστό για πηγές πληροφοριών DCC και κώδικα Arduino.

Συγκεκριμένα, αυτό το έργο ήταν εμπνευσμένο από τον Michael Blank και το «Simple DCC - a command station»

www.oscale.net/en/simpledcc

4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) 1,75 £

Μονάδα οθόνης 2,2 ιντσών 240x320 Serial SPI TFT LCD (ebay) 7,19 £

UNIVERSAL 12V 5A 60W POWER SUPPLY AC ADAPTER (ebay) 49 6,49

Nano V3.0 Για Arduino με CH340G 5V 16M συμβατό ATmega328P (ebay) 2 x £ 3.30 = £ 6,60

Module Driver Module LMD18200T για Arduino R3 (ebay) 6,99 £

Συνδέσεις, σύρμα, πίνακας vero, ποτενσιόμετρο περίπου 3,50

Σύνολο 32,52 £

Ο βασικός σταθμός εντολών χωρίς οθόνη tft και 1 x nano θα ήταν 22,03

[Σημείωση: Είναι δυνατή η προσθήκη κάρτας μνήμης στην οθόνη TFT και η τροποποίηση κώδικα για την εμφάνιση εικόνων επιλεγμένων κινητήρων, αν και οι κωδικοί βιβλιοθήκης πρέπει να τροποποιηθούν για να δημιουργηθεί περισσότερη μνήμη για το σκίτσο. Το τρέχον μέγεθος σκίτσου είναι στο μέγιστο για το TFT Arduino Nano]

Ο αρχικός κωδικός Arduino του Michael Blank ήταν για έναν κινητήρα, μόνο προς τα εμπρός / προς τα πίσω χωρίς έλεγχο λειτουργίας, χωρίς πληκτρολόγιο και οθόνη.

Έχω τροποποιήσει τον κώδικα ώστε να περιλαμβάνει 1 - 19 κινητήρες, οθόνη, κατεύθυνση, φώτα, 8 λειτουργίες, διακοπή έκτακτης ανάγκης και όριο αυτόματου ρεύματος.

Η γέφυρα LMD18200T μπορεί να μεταφέρει έως και 3 αμπέρ, γεγονός που την καθιστά κατάλληλη για όλες τις κλίμακες, συμπεριλαμβανομένης της κλίμακας G (τρένα κήπου). Η τροφοδοσία ρεύματος και τα ηλεκτρονικά είναι κατάλληλα για εσωτερική χρήση μόνο αν δεν μπορείτε να τα καταστήσετε όλα ανθεκτικά στις καιρικές συνθήκες. Έχω τον σταθμό διοίκησης στο εξοχικό με καλώδια που συνδέουν ράγες που τελειώνουν από τον τοίχο προς την πίστα.

Βήμα 1: Κωδικός Arduino - Σταθμός εντολών με πληκτρολόγιο

Ευχαριστώ τον tvantenna2759 για την επισήμανση 2 σφαλμάτων στο διάγραμμα κυκλώματος, όπου ο κώδικας Arduino δεν ταιριάζει με την καλωδίωση, τώρα ενημερωμένος (21 Οκτωβρίου 2017).

Τώρα προστέθηκαν 16 συμμετοχές στο Command Station. Δείτε το διδακτικό στο διάγραμμα κυκλώματος συμμετοχής / σημείων χρησιμοποιώντας τη μονάδα Arduino Mini Pro.

Ο τροποποιημένος κώδικας που περιλαμβάνει τον έλεγχο συμμετοχής επισυνάπτεται παρακάτω.

Βασικό πακέτο αποκωδικοποιητή αξεσουάρ είναι: 0 10AAAAAA 1 1AAACDDD 0 EEEEEEEE 1 Από την ανάλυση του πακέτου που χρησιμοποίησε ο Lenz (Compact / Atlas) για έλεγχο σημείων, χρησιμοποίησα την ακόλουθη μορφή δυαδικού πακέτου για byte 1 και 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Συμμετοχή 1β: 1000 0001 1111 1001 Συμμετοχή 2α: 1000 0001 1111 1010 / Συμμετοχή 2β: 1000 0001 1111 1011 Συμμετοχή 3α: 1000 0001 1111 1100 / Συμμετοχή 3β: 1000 0001 1111 1101 Συμμετοχή 4α: 1000 0001 1111 1110 / Συμμετοχή 4β: 1000 0001 1111 1111 tunAddr = 2 --------------------------------------------- ------------------------------------------------------ ----------------- Συμμετοχή 5α: 1000 0010 1111 1000 / Συμμετοχή 5β: 1000 0010 1111 1001 Συμμετοχή 6α: 1000 0010 1111 1010 / Συμμετοχή 6β: 1000 0010 1111 1011 Συμμετοχή 7α: 1000 0010 1111 1100 / Συμμετοχή 7β: 1000 0010 1111 1101 Συμμετοχή 8α: 1000 0010 1111 1110 / Συμμετοχή 8β: 1000 0010 1111 1111 ----------------------- ------------------------------------------------------ -------------------------------------- Συμμετοχή 9α: 1000 0011 1111 1000 / Συμμετοχή 9β: 1000 0011 1111 1001 κλπ ………

Απόσπασμα από τον τροποποιημένο κώδικα: Προσθέστε 2 ακόμη ενημερώσεις μηνύματος "struct" αποφύγετε amend_tun1 (struct Message & x) {x.data [0] = 0x81; // αποκωδικοποιητής αξεσουάρ 0x80 & διεύθυνση 1 x.data [1] = 0; }

void amend_tun2 (struct Message & x) {x.data [0] = 0x82; // αποκωδικοποιητής αξεσουάρ 0x80 & διεύθυνση 2 x.data [1] = 0; }

Προσθέστε νέο κενό για συμμετοχές: boolean read_turnout () {delay (20);

boolean change_t = false; get_key ();

εάν (key_val> = 101 && key_val <= 404 && turn == 1) {

δεδομένα = 0xf8; // = δυαδικό 1111 1000

amend_tun1 (msg [1]);

}

εάν (key_val> = 505 && key_val <= 808 && turn == 1) {

δεδομένα = 0xf8; // = δυαδικό 1111 1000

amend_tun2 (msg [1]);

}

εάν (key_val == 101 && turn == 1) {

αν (tun1 == 1) {

δεδομένα | = 0; // t1a

άλλαξε_t = true;}

αν (tun1 == 0) {

δεδομένα | = 0x01; // t1b

άλλαξε_t = true;}

}

εάν (key_val == 202 && turn == 1) {

αν (tun2 == 1) {

δεδομένα | = 0x02; // t2a

άλλαξε_t = true?

}

αν (tun2 == 0) {

δεδομένα | = 0x03; // t2b

άλλαξε_t = true? }

}

εάν (key_val == 303 && turn == 1) {

αν (tun3 == 1) {

δεδομένα | = 0x04; // t3a

άλλαξε_t = true?

}

αν (tun3 == 0) {

δεδομένα | = 0x05; // t3b

άλλαξε_t = true;}

}

εάν (key_val == 404 && turn == 1) {

αν (tun4 == 1) {

δεδομένα | = 0x06; // t4a

άλλαξε_t = true?

}

αν (tun4 == 0) {

δεδομένα | = 0x07; // f4b

άλλαξε_t = true;}

}

εάν (key_val == 505 && turn == 1) {

αν (tun5 == 1) {

δεδομένα | = 0; // t5a

άλλαξε_t = true?

}

αν (tun5 == 0) {

δεδομένα | = 0x01; // t5b

άλλαξε_t = true;}

}

και τα λοιπά ………………….

Βήμα 2: Κωδικός Arduino - Οθόνη TFT

Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT
Κωδικός Arduino - Οθόνη TFT

Το κύκλωμα οθόνης παραμένει το ίδιο με έναν τροποποιημένο κωδικό για να δείξει την κατάσταση των 16 συμμετοχών. Σημείωση: Ο κώδικας της βιβλιοθήκης καταλαμβάνει σχεδόν όλη τη μνήμη του σκίτσου του κώδικα αφήνοντας λίγο χώρο για νέες λειτουργίες. Εάν κάποιος έχει πιο αποτελεσματικό αρχείο βιβλιοθήκης για το TFT που χρησιμοποιείται εδώ, παρακαλώ ενημερώστε με.

Βήμα 3: Ελεγκτής συμμετοχής

Ελεγκτής συμμετοχής
Ελεγκτής συμμετοχής
Ελεγκτής συμμετοχής
Ελεγκτής συμμετοχής

Δείτε οδηγίες για το πώς να δημιουργήσετε τον ελεγκτή συμμετοχής / βαθμών.

Το πλήρες κύκλωμα ελέγχει 16 σημεία και 15 αξεσουάρ όπως φώτα, ήχους, πικάπ κ.λπ.

Συνιστάται: