Πίνακας περιεχομένων:
- Βήμα 1: Κωδικός Arduino - Σταθμός εντολών με πληκτρολόγιο
- Βήμα 2: Κωδικός Arduino - Οθόνη TFT
- Βήμα 3: Ελεγκτής συμμετοχής
Βίντεο: Model Railway - DCC Command Station Using Arduino :: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Ενημερώθηκε τον Αύγουστο 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
Το κύκλωμα οθόνης παραμένει το ίδιο με έναν τροποποιημένο κωδικό για να δείξει την κατάσταση των 16 συμμετοχών. Σημείωση: Ο κώδικας της βιβλιοθήκης καταλαμβάνει σχεδόν όλη τη μνήμη του σκίτσου του κώδικα αφήνοντας λίγο χώρο για νέες λειτουργίες. Εάν κάποιος έχει πιο αποτελεσματικό αρχείο βιβλιοθήκης για το TFT που χρησιμοποιείται εδώ, παρακαλώ ενημερώστε με.
Βήμα 3: Ελεγκτής συμμετοχής
Δείτε οδηγίες για το πώς να δημιουργήσετε τον ελεγκτή συμμετοχής / βαθμών.
Το πλήρες κύκλωμα ελέγχει 16 σημεία και 15 αξεσουάρ όπως φώτα, ήχους, πικάπ κ.λπ.
Συνιστάται:
Μοντέλο ελεγχόμενου μοντέλου Railway Layout V2.5 - PS/2 Interface: 12 βήματα
Μοντέλο ελεγχόμενου πληκτρολογίου Διάταξη σιδηροδρόμων V2.5 | PS/2 Interface: Χρησιμοποιώντας μικροελεγκτές Arduino, υπάρχουν πολλοί τρόποι ελέγχου των μοντέλων των διατάξεων σιδηροδρόμων. Ένα πληκτρολόγιο έχει ένα μεγάλο πλεονέκτημα ότι έχει πολλά πλήκτρα για να προσθέσει πολλές λειτουργίες. Εδώ ας δούμε πώς μπορούμε να ξεκινήσουμε με μια απλή διάταξη με ατμομηχανή και
Κωδικοποιήστε ένα CustomCmd Script για Windows Command Prompt: 6 βήματα
Κωδικοποιήστε ένα CustomCmd Script για Windows Command Prompt: Χρησιμοποιείτε πολύ CMD; Δέχομαι! Αλλά πολλοί άνθρωποι - συμπεριλαμβανομένου και εμένα - πιστεύουν ότι είναι πολύ βαρετό. Σήμερα θα κωδικοποιήσω ένα σενάριο που θα μας επιτρέψει να προσαρμόσουμε το CMD αρκετά ώστε να είναι διασκεδαστικό. Ας ξεκινήσουμε! ΚΩΔΙΚΟΣ ΛΗOWΗ ΣΤΟ ΚΑΤΩ ΤΟΥ ΑΡΤΙΚΛΕΙΟΥ WIL
Model Train WiFi Control Using MQTT: 9 βήματα
Model Train WiFi Control Using MQTT: Έχοντας ένα παλιό σύστημα μοντέλου τρένου κλίμακας TT, είχα μια ιδέα πώς να ελέγξω τα locos ξεχωριστά. Με αυτό κατά νου, πήγα ένα βήμα παραπέρα και κατάλαβα τι χρειάζεται όχι μόνο για τον έλεγχο των τρένων αλλά για να έχετε κάποιες επιπλέον πληροφορίες σχετικά με το
Flash AT Command Firmware to ESP01 Module (απαιτεί προσαρμογέα USB σε TTL): 5 βήματα
Flash AT Command Firmware to ESP01 Module (απαιτεί προσαρμογέα USB σε TTL): Του Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
Dorm Power Station/Souped Up NiMH Charging Station: 3 Βήματα
Dorm Power Station/Souped Up NiMH Charging Station: Έχω ένα χάος από έναν σταθμό παραγωγής ηλεκτρικής ενέργειας. Wantedθελα να συμπυκνώσω όλα όσα φορτίζονταν σε έναν πάγκο εργασίας και να έχω χώρο για συγκόλληση/κλπ σε αυτόν. Λίστα πραγμάτων: Κινητό τηλέφωνο (σπασμένο, αλλά φορτίζει τις μπαταρίες του τηλεφώνου μου, έτσι είναι πάντα συνδεδεμένο και τρέχει φορτίσεις