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

Garden Train - Arduino Wireless NMRA DCC: 4 βήματα (με εικόνες)
Garden Train - Arduino Wireless NMRA DCC: 4 βήματα (με εικόνες)

Βίντεο: Garden Train - Arduino Wireless NMRA DCC: 4 βήματα (με εικόνες)

Βίντεο: Garden Train - Arduino Wireless NMRA DCC: 4 βήματα (με εικόνες)
Βίντεο: Cheap and Amazing! DCC-EX 2 Years Later 2024, Ιούνιος
Anonim
Image
Image
Σχεδιασμός Συστήματος
Σχεδιασμός Συστήματος

Πέρα από το προηγούμενο εκπαιδευτικό με το DCC για το σύστημα νεκρών σιδηροδρόμων, ανέπτυξα την ιδέα περαιτέρω με έναν χειροκίνητο σταθμό εντολών DCC με πληκτρολόγιο και οθόνη LCD. Ο Σταθμός Εντολών περιέχει όλη την κωδικοποίηση που απαιτείται για τις οδηγίες του NMRA DCC, ωστόσο, αντί για σύνδεση με τις ράγες, τα δεδομένα μεταφέρονται μέσω της μονάδας ραδιοφώνου RF24L01+ σε δέκτη τοποθετημένο σε φορτηγό ή κάτω από το loco - όπου το επιτρέπει το δωμάτιο.

Φυσικά, τα locos σας πρέπει να είναι εξοπλισμένα με αποκωδικοποιητή ικανότητας φόρτωσης που ταιριάζει στους κινητήρες του κινητήρα.

Βήμα 1: Σχεδιασμός συστήματος

Σχεδιασμός Συστήματος
Σχεδιασμός Συστήματος

Το Arduino Pro Mini βρίσκεται στην καρδιά του σχεδιασμού. Χρήση του Fritzing για την ανάπτυξη του κυκλώματος και την παραγωγή PCB.

Iμουν σε θέση να χρησιμοποιήσω το ίδιο PCB τόσο για πομπό όσο και για δέκτη, εξοικονομώντας έτσι κάποιο κόστος.

Ο πομπός έχει συνδέσεις για πληκτρολόγιο και LCD, ενώ ο δέκτης δεν τις απαιτεί και χρησιμοποιεί τη γέφυρα H για να παρέχει την έξοδο DCC για το loco.

Μια περαιτέρω εξέλιξη περιλαμβάνει συνδέσεις για μια μεγαλύτερη γέφυρα Η, εάν απαιτείται για πιο ισχυρές τοποθεσίες.

Το PCF8574 μπορεί να διαγραφεί εάν χρησιμοποιείτε οθόνη LCD που συνοδεύει το σακίδιο που επιτρέπει στις συνδέσεις SCA / SCL στο Arduino να τροφοδοτούν την οθόνη χρησιμοποιώντας μόνο 2 καλώδια. Λίστα μερών: Σύνολο = περίπου £ 60 για το DCC Command Station + 1 δέκτης Επιπλέον κόστος δέκτη = 10,00 £ περίπου το καθένα. + μπαταρίες

Arduino Pro Mini. x 2 = 4,00

Πληκτρολόγιο μεμβράνης 4x3 = 3,00 £

20 x 4 οθόνη LCD = 00 7,00

PCF5874 = 80 1,80

NRF24L01+. μονάδες ραδιοφώνου x 2 = £ 5,80

Κατασκευή PCB για 10 off (ή μπορεί να χρησιμοποιηθεί σανίδα Vero) = 24 or ή 4,80 for για 2 off

3.3 v Ρυθμιστής = 0,17 ((συσκευασία των 25 από RS Comp)

5v Ρυθμιστής LM7805 = 30 0,30

H-γέφυρα SN754410ne = 3,00 £

Lloytron επαναφορτιζόμενες μπαταρίες ΑΑ 2700 maH x 12 = 22,00. (οι μπαταρίες με χαμηλότερη βαθμολογία maH είναι φθηνότερες)

Πυκνωτές, κατσαρόλες, καρφίτσες, συνδετήρες κλπ = 2,00 £ περίπου

Περίβλημα 190x110x60 mm = £ 8,00

Πομπός - φορτιστής / μπαταρία τηλεφώνου = 2,00

Βήμα 2: Πομπός

Πομπός
Πομπός

Το διάγραμμα κυκλώματος εμφανίζεται όπου οι ακίδες D2 έως D8 στο Arduino Pro Mini συνδέονται με το πληκτρολόγιο. Ένα ποτενσιόμετρο 100k ohm είναι συνδεδεμένο με τον αναλογικό πείρο A0 για ρύθμιση της ταχύτητας. Οι καρφίτσες SDA και SCL που σχηματίζουν το τσιπ PCF8574 συνδέονται με τις ακίδες A4 και A5 στο Arduino Pro Mini μέσω συγκολλημένων καλωδίων στις καρφίτσες στο επάνω στρώμα του Pro Mini.

Το σκίτσο Arduino επισυνάπτεται για λήψη.

Έχω χρησιμοποιήσει οθόνη LCD 20 x 4 που επιτρέπει 4 γραμμές πληροφοριών με 20 χαρακτήρες ανά γραμμή. Το πληκτρολόγιο παρέχει το ακόλουθο μενού:

1 έως 9 = διεύθυνση loco * = κατεύθυνση 0 = φώτα # = Μενού λειτουργιών για τα πλήκτρα 1 έως 8

Βασική περιγραφή του σκίτσου Arduino Pro Mini: Αυτή η γραμμή του κώδικα διευθετεί το μήνυμα DCC σε μορφή HEX. strukt Μήνυμα μηνύματος [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // αδρανές msg

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 byte διεύθυνση

};

Για να αποθηκεύσετε τις ρυθμίσεις για κάθε loco, μια σειρά από πίνακες ρυθμίζονται ως εξής:

int la [20]; // πίνακας για τη διατήρηση αριθμών loco

int sa [20]; // πίνακας για τη διατήρηση τιμών ταχύτητας

int fda [20]; // πίνακας για κράτηση σκην

int fla [20]; // πίνακας για τη συγκράτηση φώτων

int f1a [20]; // πίνακας για να κρατάτε τη διασκέδαση1…..

int f8a [20]; // πίνακας για διατήρηση της διασκέδασης8

Για να ενεργοποιήσουμε τις οδηγίες DCC να τροποποιηθούν όπως προχωράμε:

Για οδηγίες ταχύτητας: void amend_speed (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg με 28 βήματα ταχύτητας}

Για οδηγίες λειτουργίας:

void amend_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg με οδηγίες ομάδας 1x0x80}

Ο κύριος βρόχος του σκίτσου:

void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

send_data_1 (); // αποστολή δεδομένων μέσω ασύρματης σύνδεσης

καθυστέρηση (10)?

send_data_3 (); // εμφάνιση δεδομένων στην οθόνη LCD

send_data_4 (); // εμφάνιση δεδομένων σε σειριακή οθόνη}

εάν (λειτουργία_ανάγνωσης ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

καθυστέρηση (10)?

send_data_3 (); }}

Ενημέρωση δεδομένων όταν αλλάζει η ταχύτητα:

boolean read_locoSpeed () Αυτό ανιχνεύει μια νέα διεύθυνση loco, ρύθμιση ταχύτητας ή κατεύθυνσης και τροποποιεί ανάλογα τα «δεδομένα» του HEX. Εδώ έχω καθορίσει 28 βήματα ταχύτητας και για να πληρώσω το πρότυπο NMRA S 9.2, τα δεδομένα ταχύτητας πρέπει να βρεθούν από έναν πίνακα αναζήτησης στο 'speed_step ()'

void speed_step () {switch (locoSpeed) {

περίπτωση 1: δεδομένα | = 0x02; Διακοπή;

περίπτωση 2: δεδομένα | = 0x12; Διακοπή;

περίπτωση 3: δεδομένα | = 0x03; Διακοπή;

………

περίπτωση 28: δεδομένα | = 0x1F; Διακοπή; }}

Ενημέρωση δεδομένων όταν αλλάζουν οι λειτουργίες:

boolean read_function ()

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

} // τα φώτα κεφαλής σβηστά

εάν (fla [locoAdr] == 1) {

δεδομένα = 0x90;

} // τα φώτα κεφαλής αναμμένα

Για κάθε συνάρτηση:

εάν (f2a [locoAdr] == 0) {δεδομένα | = 0; }. // Λειτουργία 2 απενεργοποιημένη

εάν (f2a [locoAdr] == 1) {

δεδομένα | = 0x02; // Η συνάρτηση 2 σε} 'δεδομένα' δημιουργείται συνδυάζοντας ['| =' σύνθετο bitwise ή] τους κωδικούς HEX για κάθε συνάρτηση.

Βήμα 3: Δέκτης

Δέκτης
Δέκτης

Το διάγραμμα κυκλώματος εμφανίζεται όπου οι ακίδες 5 και 6 του Arduino Pro Mini χρησιμοποιούνται για την παροχή του σήματος DCC που παρέχεται στη γέφυρα Η. Τα ζεύγη H-γέφυρας συνδέονται παράλληλα για να αυξήσουν τη χωρητικότητα ρεύματος. Ανάλογα με το ρεύμα που αντλεί το loco, μπορεί να απαιτείται η τοποθέτηση μιας ψύκτρας στη συσκευή DIP 16 ακίδων ή μια εξωτερική γέφυρα H βαρέως τύπου.

Το σκίτσο Arduino επισυνάπτεται για λήψη. Το σήμα DCC αποτελείται από ένα ρολόι που λειτουργεί στα 2MHZ

void Το SetupTimer2 () κάνει αυτή τη δουλειά.

Το ρολόι περιλαμβάνει «σύντομους παλμούς» (58us) για «1» σε δεδομένα DCC και «μεγάλους παλμούς» (116us) για «0» σε δεδομένα DCC.

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

void loop (void) {if (radio.available ()) {bool done = false? done = radio.read (inmsg, 1); // διαβάστε τα ληφθέντα δεδομένα

char rc = inmsg [0]; // βάλτε χαρακτήρα που διαβάζεται σε αυτόν τον πίνακα

εάν (rc! = 0) {. // αν ο χαρακτήρας δεν είναι ίσος με το μηδέν

inString.concat (rc); // δημιουργήστε το μήνυμα}

if (rc == '\ 0') {// if ο χαρακτήρας είναι '/0' τέλος μηνύματος

Serial.println (inString); // εκτυπώστε το συναρμολογημένο μήνυμα

σειρά(); // απο-κατασκευή του μηνύματος συμβολοσειράς για λήψη οδηγιών DCC

} } }

Βήμα 4: Εκτελέστε τα Locos

Εκτελέστε τα Locos
Εκτελέστε τα Locos

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

Απολαύστε δωρεάν τρένα ανεξάρτητα από τις συνθήκες της πίστας - τι διαφορά! Χωρίς ταλαιπωρία, χωρίς εκκίνηση και χωρίς καθαρισμό.

Οι μπαταρίες που χρησιμοποίησα επαναφορτίζονται LLoytron AA x 12. Έχω φτιάξει έναν φορτιστή ειδικά για αυτές που φορτίζει 6 κάθε φορά. (βλ. εκπαιδευτικό)

Συνιστάται: