Πίνακας περιεχομένων:
- Βήμα 1: Χαρακτηριστικά
- Βήμα 2: Αποποίηση ευθυνών και περαιτέρω πληροφορίες
- Βήμα 3: Υποχρεώσεις
- Βήμα 4: Στοιχεία (BOM)
- Βήμα 5: Ανάλυση συνάρτησης
- Βήμα 6: Προγραμματισμός
- Βήμα 7: Συγκόλληση και συναρμολόγηση
- Βήμα 8: Βίντεο
- Βήμα 9: Συμπέρασμα
Βίντεο: CheminElectrique (παιχνίδι δεξιοτήτων) - SRO2002: 9 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Σήμερα σας παρουσιάζω τη δημιουργία ενός παιχνιδιού που έφτιαξα για το πάρτι του σχολικού έτους για το γιο μου. Στη Γαλλία ονομάζουμε αυτά τα φεστιβάλ "kermesses", δεν ξέρω αν υπάρχουν σε άλλες χώρες και πώς ονομάζονται…
Σε αυτά τα πάρτι υπάρχουν συχνά τα ίδια παιχνίδια, αυτό θα έλεγα κλασικά παιχνίδια, και φέτος αποφάσισα να φτιάξω μια πιο σύγχρονη έκδοση ενός από αυτά τα κλασικά παιχνίδια: το "Chemin electrique" ή το "Main chaude".
Ο στόχος του παιχνιδιού είναι πολύ απλός, υπάρχει ένα σύρμα όπου περνάει ένα ηλεκτρικό ρεύμα, τότε έχετε ένα "joystick" αποτελούμενο από μεταλλικό κύκλο στο τέλος του που περνάει γύρω από το ηλεκτρικό καλώδιο και ο στόχος του παιχνιδιού είναι να διασχίσετε καλώδιο από το ένα άκρο στο άλλο χωρίς να το αγγίζετε, διαφορετικά σβήνει μια προειδοποιητική λυχνία και/ή ήχος και έχετε χάσει.
Παραδοσιακά δεν υπάρχουν πραγματικά ηλεκτρονικά για να δημιουργήσετε αυτό το παιχνίδι, μια απλή μπαταρία 12V με μια λάμπα και κάποιο ηλεκτρικό καλώδιο είναι αρκετή, αλλά είχα μερικές υπέροχες ιδέες για να κάνω το παιχνίδι πιο μοντέρνο.
Ας δούμε λοιπόν τι πρόσθεσα ως λειτουργικότητα!
Βήμα 1: Χαρακτηριστικά
Όπως μόλις είπα αυτό το παιχνίδι απλώς ανάβει ένα φως όταν ο παίκτης αγγίζει ακούσια το καλώδιο με το "joystick", συμβαίνει επίσης αρκετά συχνά το παιχνίδι να παράγει ήχο κατά την επαφή. Στην δική μου έκδοση του παιχνιδιού θα υπάρχουν συνολικά 6 μπλοκ 4 LED (πράσινο-κίτρινο-κίτρινο-κόκκινο) που θα ανάψουν ταυτόχρονα, ένας βομβητής που θα παράγει ήχο και επίσης ένας δονητής ενσωματωμένος στο χειριστήριο που θα ενεργοποιηθεί όταν υπάρχει επαφή μεταξύ του ηλεκτρικού καλωδίου και του "joystick".
Οι λυχνίες LED ανάβουν σταδιακά από πράσινο σε κόκκινο ανάλογα με το πόσο διαρκεί η επαφή μεταξύ του καλωδίου και του ελεγκτή.
Πρόσθεσα επίσης μια επιλογή του επιπέδου δυσκολίας (εύκολο-κανονικό-δύσκολο) καθώς και τη δυνατότητα ενεργοποίησης/απενεργοποίησης του δονητή και του ήχου. Η ένταση του ήχου θα είναι επίσης ρυθμιζόμενη με ποτενσιόμετρο.
Η επιλογή δυσκολίας είναι στην πραγματικότητα απλώς μια λίγο ή πολύ μεγάλη καθυστέρηση μεταξύ της στιγμής που υπάρχει επαφή μεταξύ του καλωδίου και του χειριστηρίου και της στιγμής που το παιχνίδι αρχίζει να ανάβει/κουδουνίζει/δονείται. Καθορίζω προκαθορισμένους χρόνους με προγραμματισμό, για παράδειγμα στην εύκολη λειτουργία το παιχνίδι περιμένει 1 δευτερόλεπτο πριν ενεργοποιήσει τις προειδοποιήσεις, ενώ σε δύσκολη λειτουργία οι προειδοποιήσεις θα ενεργοποιηθούν αμέσως.
Σχεδίασα το παιχνίδι έτσι ώστε να είναι εύκολο να αποσυναρμολογηθεί, αξιόπιστο και κυρίως να μην παρουσιάζει κανένα κίνδυνο για τα παιδιά που θα το χρησιμοποιήσουν. Πράγματι, δεδομένου ότι το ηλεκτρικό καλώδιο διασχίζεται από ένα ρεύμα και ότι είναι απογυμνωμένο, έπρεπε να βεβαιωθώ ότι δεν αποτελεί κίνδυνο για τους χρήστες του παιχνιδιού.
Βήμα 2: Αποποίηση ευθυνών και περαιτέρω πληροφορίες
Αποποίηση ευθυνών:
Το παιχνίδι θα τροφοδοτείται από 4 μπαταρίες 1,5V, συνολικής τάσης 6V, περιορίζω επίσης το ρεύμα που διασχίζει το καλώδιο σε λίγα μόνο μικροαμπέρ. Βρισκόμαστε λοιπόν στον τομέα της πολύ χαμηλής τάσης ασφαλείας (SELV) με εξαιρετικά χαμηλή τιμή ρεύματος προσβάσιμη από τον χρήστη.
Αλλά η προσοχή διευκρινίζω καλά ότι καμία τιμή του ηλεκτρικού ρεύματος δεν είναι ακίνδυνη, ένα ασθενές ρεύμα μπορεί σε ορισμένες περιπτώσεις να είναι επικίνδυνο για το άτομο που είναι ηλεκτρισμένο. Έκανα πολλές έρευνες σχετικά με αυτό κατά τη δημιουργία αυτού του έργου και παρόλο που δεν υπάρχει επιστημονική συναίνεση σχετικά με την οριακή τιμή πριν από την οποία το ρεύμα δεν επηρεάζει το ανθρώπινο σώμα, το ρεύμα κάποιου μικροαμπέρ που διασχίζει το ηλεκτρικό καλώδιο έχει πολύ λίγα πιθανότητα να βλάψει ένα άτομο.
Αλλά προσοχή δεν θα μπορώ να θεωρηθώ υπεύθυνος σε περίπτωση ατυχήματος! Πρέπει πάντα να προσέχετε όταν χειρίζεστε ηλεκτρικούς αγωγούς, ακόμη και σε πολύ χαμηλές τιμές ρεύματος. Σας συνιστώ να ενημερωθείτε όσο το δυνατόν περισσότερο για τους κινδύνους του ηλεκτρικού ρεύματος και τις καλές προφυλάξεις που πρέπει να λάβετε
Περαιτέρω πληροφορίες:
Αυτό το έργο λειτουργεί πολύ καλά και έχει όλα τα χαρακτηριστικά που ήθελα αλλά έχει κάποια ελαττώματα. Όταν δημιουργώ ένα ηλεκτρονικό έργο προσπαθώ όλα να είναι όσο το δυνατόν βελτιστοποιημένα από άποψη κόστους, αριθμού εξαρτημάτων, χώρου και κυρίως ότι η λειτουργία του συνόλου είναι όσο το δυνατόν πιο "λογική".
Ενώ έκανα αυτό το έργο και αφού το τελείωσα πιστεύω ότι υπάρχουν κάποιες επιλογές που έκανα που δεν είναι οι καλύτερες αλλά με πίεσε ο χρόνος, είχα μόνο 2 εβδομάδες για να κάνω τα πάντα από την αρχή (σχεδιασμός, προγραμματισμός, παραγγελία εξαρτημάτων, δημιουργία δομή, και κυρίως συναρμολόγηση όλων των στοιχείων).
Θα υποδείξω καθώς περνάω από τα στάδια κατασκευής αυτό που πιστεύω ότι θα μπορούσε να βελτιστοποιηθεί εάν έπρεπε να δημιουργήσω ξανά αυτό το παιχνίδι. Αλλά επαναλαμβάνω ότι το έργο είναι αρκετά λειτουργικό έτσι, αλλά είμαι τελειομανής…
Λυπάμαι επίσης που δεν έβγαλα περισσότερες φωτογραφίες από τα διάφορα στάδια του έργου, αλλά προτίμησα να αφοσιωθώ όσο το δυνατόν περισσότερο στο έργο για να μπορέσω να το ολοκληρώσω εγκαίρως.
Είμαι ευχαριστημένος με αυτό το έργο γιατί είχε μεγάλη επιτυχία στο σχολικό πάρτι του γιου μου, οπότε ας δούμε τι υπάρχει στην κοιλιά του θηρίου;)
Βήμα 3: Υποχρεώσεις
- Πρέπει να λειτουργεί με μπαταρία (για ασφάλεια και κινητικότητα)- Το παιχνίδι πρέπει να είναι ασφαλές (θα χρησιμοποιείται από παιδιά από 2 έως 10 ετών)
- Οι ρυθμίσεις πρέπει να είναι διαθέσιμες (επιλογή ήχου/ενεργοποίησης δονητή και επιλογή δυσκολίας)
- Οι ρυθμίσεις πρέπει να είναι απλές για να κατανοηθούν και εύκολα προσβάσιμες (πρέπει να υποτεθεί ότι το άτομο που θα φροντίσει το παιχνίδι κατά τη διάρκεια του πάρτι δεν γνωρίζει τίποτα στα ηλεκτρονικά/τεχνικά)
- Ο ήχος πρέπει να είναι αρκετά δυνατός (το παιχνίδι θα χρησιμοποιηθεί έξω σε ένα μάλλον θορυβώδες περιβάλλον).
- Το σύστημα πρέπει να είναι αφαιρούμενο στο μέγιστο για αποθήκευση και εύκολα αντικαταστάσιμα φυσικά μέρη (joystick, ηλεκτρικό καλώδιο…)
- Πρέπει να είναι ελκυστικό για τα παιδιά (αυτός είναι ο κύριος στόχος για τον οποίο παίζουν…:))
Βήμα 4: Στοιχεία (BOM)
Για τη θήκη:- ξύλινη σανίδα
- ζωγραφική
- μερικά εργαλεία για διάτρηση και κοπή….
Για το "joystick":- 1 δονητής
- υποδοχή καλωδίου 3.5 (στερεοφωνικό)
- υποδοχή υποδοχής 3.5 (στερεοφωνικό)
- ηλεκτρικό σύρμα 2,5mm²
- ένας μικρός σωλήνας PVC
ΗΛΕΚΤΡΟΝΙΚΑ ΕΞΑΡΤΗΜΑΤΑ:
- 16F628A
- 12F675
- ULN2003A
- 2 x 2N2222A
- Δίοδος Zener 2.7V
- 12 μπλε LED
- 6 πράσινες λυχνίες LED
- 6 κόκκινες λυχνίες LED
- 12 κίτρινες λυχνίες LED
- 5 αντιστάσεις 10K
- 2 αντιστάσεις 4,7Κ
- 1 αντίσταση 470 ohm
- 6 αντιστάσεις 2,2Κ
- 6 αντιστάσεις 510 ohm
- 18 αντιστάσεις 180 ohm
- 1 ποτενσιόμετρο 1Κ
- 1 διακόπτης ON-OFF
-2 διακόπτης ON-OFF-ON
- 1 βομβητής
- 1 μετατροπέας ενίσχυσης DC
- ηλεκτρικό σύρμα 2,5mm²
- 2 συνδετήρες μπανάνας αρσενικό
- 2 θηλυκές συνδέσεις μπανάνας
- υποδοχή υποδοχής 3.5 (στερεοφωνικό)
- θήκη για 4 μπαταρίες LR6
- μερικές σανίδες πρωτοτύπων PCB
Ηλεκτρονικά Εργαλεία: - Ένας προγραμματιστής για την έγχυση του κώδικα σε ένα μικροτσίπ 16F628A και 12F675 (π.χ. PICkit 2) -
Σας συμβουλεύω να χρησιμοποιήσετε το Microchip MPLAB IDE (δωρεάν λογισμικό) εάν θέλετε να τροποποιήσετε τον κώδικα αλλά θα χρειαστείτε επίσης το CCS Compiler (shareware). Μπορείτε επίσης να χρησιμοποιήσετε έναν άλλο μεταγλωττιστή, αλλά θα χρειαστείτε πολλές αλλαγές στο πρόγραμμα.
Θα σου δώσω όμως. Αρχεία HEX έτσι ώστε να μπορείτε να τα εγχύσετε απευθείας σε μικροελεγκτές.
Βήμα 5: Ανάλυση συνάρτησης
Μικροελεγκτής 16F628A (Func1): Είναι ο "εγκέφαλος" όλου του συστήματος, είναι αυτό το στοιχείο που ανιχνεύει τη θέση των διακοπτών ρυθμίσεων, το οποίο ανιχνεύει εάν υπάρχει επαφή μεταξύ του "joystick" και του ηλεκτρικού καλωδίου και που ενεργοποιεί το προειδοποιήσεις (φως, ήχος και δονητής). Επέλεξα αυτό το στοιχείο επειδή έχω ένα αρκετά μεγάλο απόθεμα και επειδή έχω συνηθίσει να προγραμματίζω μαζί του, και επειδή δεν είχα πολύ χρόνο να κάνω αυτό το έργο, προτίμησα να πάρω κάποιο υλικό που γνωρίζω καλά.
Διεπαφή ισχύος ULN2003A (Func2): Αυτό το στοιχείο χρησιμεύει ως διεπαφή τροφοδοσίας μεταξύ του 16F628A και των κυκλωμάτων που καταναλώνει περισσότερη ενέργεια από ό, τι μπορεί να προσφέρει ο μικροελεγκτής (LED, βομβητής, δονητής).
Έλεγχος βομβητή (Func3):
Το PIC 16F628A δεν μπορεί να παρέχει αρκετό ρεύμα για να τροφοδοτήσει τον βομβητή, ειδικά επειδή ο βομβητής πρέπει να τροφοδοτείται από έναν μετατροπέα ώθησης για να αυξήσει την ηχητική του ισχύ.
Πράγματι, δεδομένου ότι το συγκρότημα παρέχεται σε 6V και ότι ο βομβητής απαιτεί 12V για να λειτουργήσει στο μέγιστο, χρησιμοποιώ έναν μετατροπέα για να λάβω την καλή τάση. Έτσι χρησιμοποιώ ένα τρανζίστορ ως διακόπτη (λειτουργία μεταγωγής) για τον έλεγχο της τροφοδοσίας του βομβητή. Το συστατικό που επέλεξα είναι ένα κλασικό 2N2222A το οποίο είναι πολύ κατάλληλο για αυτή τη χρήση.
Εδώ είναι τα χαρακτηριστικά του βομβητή: 12V 25mA, αυτό σημαίνει ότι χρειάζεται θεωρητική ισχύ P = UI = 12 x 25mA = 0.3W
Υπάρχει λοιπόν απαίτηση ισχύος 0,3 W από τον μετατροπέα ενίσχυσης DC, η μονάδα ενίσχυσης DC έχει απόδοση 95%, οπότε υπάρχει περίπου 5% απώλεια. Επομένως, απαιτείται ελάχιστη ισχύς 0.3W + 5% = 0.315W στην είσοδο του μετατροπέα.
Τώρα μπορούμε να συμπεράνουμε το τρέχον Ic που θα διασχίσει το τρανζίστορ Q1:
P = U * Ic
Ic = P / U
Ic = P / Vcc-Vcesat
Ic = 0, 315 / 6-0, 3
Ic = 52mA
Τώρα υπολογίζουμε την αντίσταση βάσης που επιτρέπει στο τρανζίστορ να είναι καλά κορεσμένο:
Ibsatmin = Ic / Betamin
Ibsatmin = 52mA / 100
Ibsatmin = 0,5mA
Ibsat = K x Ibsatmin (επιλέγω συντελεστή υπερκορεσμού K = 2)
Ibsat = 2 x Ibsatmin
Ibsat = 1mA
R12 = Ur12 / Ibsat
R12 = Vcc - Vbe
R12 = (6 - 0,6) / 1mA
R12 = 5,4Κ
Κανονικοποιημένη τιμή (E12) για R12 = 4,7K
Έλεγχος δόνησης (Func4):
Όσον αφορά τον βομβητή, το 16F628A δεν μπορεί να παρέχει αρκετό ρεύμα στον δονητή το οποίο απαιτεί ρεύμα 70mA, επιπλέον πρέπει να τροφοδοτείται στο μέγιστο με τάση 3V. Έτσι επέλεξα να χρησιμοποιήσω μια δίοδο zener σε συνδυασμό με ένα τρανζίστορ για να φτιάξω έναν ρυθμιστή τάσης 2,7V για τον δονητή. Η λειτουργία της σύνδεσης zener-τρανζίστορ είναι απλή, το zener διορθώνει την τάση 2,7V στη βάση του τρανζίστορ και το τρανζίστορ «αντιγράφει» αυτήν την τάση και τροφοδοτεί την ισχύ.
Το ρεύμα που θα διασχίσει το τρανζίστορ Q2 είναι έτσι ίσο με Ic = 70mA
Τώρα υπολογίζουμε την αντίσταση βάσης επιτρέποντας στο τρανζίστορ να είναι καλά κορεσμένο:
Ibsatmin = Ic/Betamin
Ibsatmin = 70mA / 100
Ibsatmin = 0, 7mA
Ibsat = K x Ibsatmin (επιλέγω συντελεστή υπερκορεσμού K = 2) Ibsat = 2 x Ibsatmin
Ibsat = 1, 4mA
Το ελάχιστο ρεύμα στη δίοδο zener πρέπει να είναι τουλάχιστον Iz = 1mA για τη λειτουργία του, οπότε μπορούμε να συμπεράνουμε το ρεύμα που διέρχεται από την αντίσταση R13:
Ir13 = Ibsat + Iz
Ir13 = 1, 4mA + 1mA
Ir13 = 2, 4mA
Για να διασφαλιστεί ότι το ρεύμα της δίοδος zener Iz είναι πάντα στο σωστό εύρος λειτουργίας, λαμβάνεται ένα περιθώριο ασφαλείας με: Ir13_fixed = 5mA (εντελώς αυθαίρετη επιλογή τιμής)
Τώρα ας υπολογίσουμε την τιμή του R13:
R13 = U13 / Ir13_fixed
R13 = VCC-Vz / Ir13_fixed
R13 = 6-2, 7 / 5mA
R13 = 660 ωμ
Κανονικοποιημένη τιμή (E12) για R13 = 470 ohm
Θα μπορούσα να είχα επιλέξει 560 ωμ στη σειρά Ε12, αλλά δεν είχα αυτήν την τιμή, οπότε πήρα την προηγούμενη τιμή…
Μπορεί να βελτιστοποιηθεί
Όταν σχεδίασα το έργο δεν σκέφτηκα το Vbe του τρανζίστορ, οπότε αντί να έχω 2,7V για να τροφοδοτήσει τον δονητή έχω μόνο 2,7V-0,6V = 2,1V. Θα έπρεπε να είχα πάρει ένα zener 3.3V για παράδειγμα, ο δονητής θα ήταν λίγο πιο ισχυρός ακόμα κι αν το αποτέλεσμα είναι αρκετά ικανοποιητικό, δεν εκμεταλλεύομαι όλη τη δύναμη του δονητή…
LED προειδοποίησης (Func5):
Οι λυχνίες LED τοποθετούνται κάθετα σαν να σχηματίζουν ένα μετρητή: Κόκκινο
Κίτρινο2
Κίτρινο 1
Πράσινος
Όταν εντοπιστεί μια επαφή μεταξύ του "joystick" και του ηλεκτρικού καλωδίου, ανάβουν σταδιακά από πράσινο σε κόκκινο.
Τα LED συνδέονται με το VCC σε ομάδες ανάλογα με το χρώμα τους:
- Όλες οι άνοδοι των πράσινων LED είναι συνδεδεμένες μεταξύ τους
- Όλες οι άνοδοι των κίτρινων LED 1 είναι συνδεδεμένες μεταξύ τους
- Όλες οι άνοδοι των κίτρινων 2 LED είναι συνδεδεμένες μεταξύ τους
- Όλες οι άνοδοι των κόκκινων LED είναι συνδεδεμένες μεταξύ τους
Ο μικροελεγκτής τα ενεργοποιεί στη συνέχεια γειώνοντας την κάθοδό τους μέσω του ULN2003A.
Σημείωση:
Στο σχηματικό υπάρχει μόνο ένα LED κάθε χρώματος με ένα σύμβολο "X6" δίπλα του, επειδή χρησιμοποιώ μια δωρεάν έκδοση του Cadence Capture και περιορίζομαι από έναν μέγιστο αριθμό στοιχείων ανά διάγραμμα, οπότε δεν θα μπορούσα να κάνω να εμφανιστούν όλα τα LEDS …
Διαχείριση ηχητικού επιπέδου Buzzer (Func6):
Είναι απλά ένα ποτενσιόμετρο σε σειρά με τον βομβητή που καθιστά δυνατή τη ρύθμιση της έντασης του ήχου.
LED "Διακόσμησης" (Func7 - Σχηματική/Σελίδα 2):
Ο σκοπός αυτών των LED είναι να δημιουργήσουν ένα κυνήγι για τη διακόσμηση του παιχνιδιού. Ανάβουν από αριστερά προς τα δεξιά. Υπάρχουν συνολικά 12 μπλε LED: 6 στην αρχή του μαθήματος που αντιπροσωπεύουν τη γραμμή εκκίνησης και 6 στο τέλος του μαθήματος που αντιπροσωπεύουν τη γραμμή τερματισμού
Επέλεξα να κάνω μια οθόνη πολυπλεξίας για αυτές τις λυχνίες LED γιατί θα χρειαζόταν πολύ περισσότερες καρφίτσες για να τις παραγγείλω (6 ακίδες με πολλαπλή ευθυγράμμιση, 12 ακίδες χωρίς πολυπλεξία).
Επιπλέον, αναφέρεται στο φύλλο δεδομένων τους ότι το Vf είναι 4V, επομένως δεν μπορούσα να βάλω 2 LED σε σειρά (το VCC είναι 6V) και δεν μπορούσα ούτε να τα βάλω παράλληλα επειδή θεωρητικά χρειάζονται 20 mA και ότι ο μικροελεγκτής μπορεί να τροφοδοτήσει μόνο 25 mA max ανά καρφίτσα, επομένως 40mA θα ήταν αδύνατο.
Συνοψίζοντας, δεν μπορούσα να κάνω μια συσχέτιση LED (τοποθετημένη σε σειρά ή παράλληλη) και δεν είχα αρκετή καρφίτσα στον μικροελεγκτή για να τον οδηγήσω ούτως ή άλλως … Έτσι επέλεξα να χρησιμοποιήσω έναν άλλο μικροελεγκτή (12F675) 8 ακίδων για να μπορώ Χάρη σε αυτόν τον μικροελεγκτή ελέγχω την ενεργοποίηση των LED θέτοντας ένα υψηλό επίπεδο λογικής (VCC) στις ανόδους τους και χρησιμοποιώ τα PIC 16F628A και ULN2003A για να εκτελέσω την πολυπλεξία.
Μπορεί να βελτιστοποιηθεί:
Κατάλαβα κατά τη διάρκεια των δοκιμών σε ένα breadboard ότι για το ίδιο ρεύμα I = 20mA τα LED είχαν μεγάλη διαφορά στη φωτεινότητα ανάλογα με τα χρώματα τους. Για παράδειγμα με 20mA τα μπλε LED ήταν πολύ πιο φωτεινά από τα πράσινα. Δεν μου φάνηκε αισθητικό ότι ορισμένα LED ήταν πολύ πιο φωτεινά από άλλα, οπότε διαφοροποίησα την αντίσταση σε σειρά με τα μπλε LED μέχρι να αποκτήσω την ίδια φωτεινή ισχύ με τα πράσινα LED που τροφοδοτούνται με ρεύμα 20mA.
Και συνειδητοποίησα ότι τα μπλε LED είχαν την ίδια φωτεινότητα με τα πράσινα LED με ρεύμα μόλις 1mA! Που σημαίνει ότι αν το ήξερα πριν θα μπορούσα να είχα επιλέξει να βάλω τα μπλε LED σε σειρά (σε ομάδες των 2). Και χρειάστηκα μόνο 3 ακόμη καρφίτσες στο 16F675A (οι οποίες είναι διαθέσιμες), οπότε δεν χρειάστηκε να προσθέσω έναν άλλο μικροελεγκτή αφιερωμένο στη διαχείριση αυτών των LED.
Αλλά εκείνη τη στιγμή του σχεδιασμού δεν το γνώριζα, υπάρχει μερικές φορές μια μη αμελητέα διαφορά μεταξύ των χαρακτηριστικών των τεχνικών εγγράφων και των πραγματικών χαρακτηριστικών των εξαρτημάτων…
Περιορισμός του ρεύματος (Func0):
Δεν είχα προγραμματίσει αυτό το μέρος καθόλου κατά τη στιγμή του σχεδιασμού, το πρόσθεσα μόνο στο τέλος του έργου, όταν όλα είχαν ήδη τελειώσει. Στην αρχή απλά είχα συνδέσει το VCC απευθείας στο ηλεκτρικό καλώδιο με απλή αντίσταση για να βάλω την είσοδο του μικροελεγκτή που ανιχνεύει την επαφή στο έδαφος.
Αλλά όπως είπα πριν έκανα πολλές έρευνες για να μάθω εάν το ρεύμα που ρέει μέσω του ηλεκτρικού καλωδίου θα μπορούσε να είναι επικίνδυνο εάν είχε επαφή μεταξύ του καλωδίου και ενός ανθρώπινου σώματος.
Δεν βρήκα ακριβή απάντηση σε αυτό το θέμα, οπότε προτίμησα να προσθέσω αντίσταση μεταξύ του VCC και του ηλεκτρικού καλωδίου για να μειώσω όσο το δυνατόν περισσότερο το ρεύμα που διασχίζει το σύρμα.
Wantedθελα λοιπόν να βάλω μια αντίσταση υψηλής αξίας για να μειώσω το ρεύμα στη χαμηλότερη δυνατή τιμή, αλλά καθώς είχα ήδη τελειώσει το έργο και ως εκ τούτου όλα συγκολλημένα και καλωδιωμένα στις διαφορετικές κάρτες δεν μπορούσα πλέον να αφαιρέσω την αντίσταση αναδίπλωσης των 10Kohm. Ως εκ τούτου, έπρεπε να επιλέξω μια τιμή αντίστασης για να αποκτήσω τα 2/3 του VCC στον πείρο BR0 (ακίδα 6 του 16F628A), έτσι ώστε ο μικροελεγκτής να ανιχνεύει αν και είναι υψηλό λογικό επίπεδο όταν υπάρχει επαφή μεταξύ του χειριστηρίου και του ηλεκτρικού καλωδίου Το Αν είχα προσθέσει υπερβολική αντίσταση, θα είχα τον κίνδυνο ο μικροελεγκτής να μην είχε εντοπίσει την αλλαγή μεταξύ της χαμηλής λογικής κατάστασης και της υψηλής λογικής κατάστασης.
Έτσι επέλεξα να προσθέσω αντίσταση 4,7K για να αποκτήσω τάση περίπου 4V στον πείρο όταν υπάρχει επαφή μεταξύ του χειριστηρίου και του ηλεκτρικού καλωδίου. Αν προσθέσουμε σε αυτό την αντίσταση του ανθρώπινου δέρματος σε περίπτωση επαφής του ηλεκτρικού σύρματος με το χέρι για παράδειγμα, το ρεύμα που ρέει μέσω του σώματος θα είναι μικρότερο από 1mA.
Και ακόμη και αν κάποιος αγγίξει το καλώδιο, θα είναι σε επαφή μόνο με τον θετικό ακροδέκτη των μπαταριών και όχι μεταξύ του θετικού και του αρνητικού ακροδέκτη, αλλά όπως είπα στην αποποίηση ευθύνης ΠΑΝΤΑ προσέξτε τι κάνετε με το ηλεκτρικό ρεύμα.
Σημείωση: Δίσταζα για μεγάλο χρονικό διάστημα να προσθέσω αυτήν την αντίσταση καθώς το ηλεκτρικό ρεύμα που είναι πιθανώς προσβάσιμο στο χρήστη (μέσω του ηλεκτρικού καλωδίου) είναι ασθενές και ότι το συγκρότημα τροφοδοτείται από μπαταρία με τάση μόνο 6V και ότι ίσως να είναι απολύτως περιττό περιορίστε το ρεύμα από τις μπαταρίες, αλλά επειδή είναι για παιδιά, προτίμησα να λάβω όσο το δυνατόν περισσότερες προφυλάξεις.
Βήμα 6: Προγραμματισμός
Τα προγράμματα είναι γραμμένα σε γλώσσα C με MPLAB IDE και ο κωδικός είναι μεταγλωττισμένος με το CCS C Compiler.
Ο κώδικας είναι πλήρως σχολιασμένος και αρκετά απλός στην κατανόηση, αλλά θα εξηγήσω γρήγορα τις κύριες λειτουργίες των 2 κωδικών (για 16F628A και 12F675).
Το πρώτο πρόγραμμα -CheminElectrique.c- (16F628A):
Διαχείριση πολυπλεξίας LED: Λειτουργία: RTCC_isr ()
Χρησιμοποιώ το χρονόμετρο0 του μικροελεγκτή για να προκαλέσω υπερχείλιση κάθε 2ms που επιτρέπει τη διαχείριση της πολυπλεξίας των LED.
Διαχείριση εντοπισμού επαφών:
Λειτουργία: κενό κενό ()
Αυτός είναι ο κύριος βρόχος, το πρόγραμμα ανιχνεύει εάν υπάρχει επαφή μεταξύ του χειριστηρίου και του ηλεκτρικού καλωδίου και ενεργοποιεί τις λυχνίες LED/βομβητή/δονητή σύμφωνα με το χρόνο επαφής.
Δυσκολία διαχείρισης ρυθμίσεων:
Λειτουργία: long GetSensitivityValue ()
Αυτή η λειτουργία χρησιμοποιείται για τον έλεγχο της θέσης του διακόπτη που επιτρέπει την επιλογή της δυσκολίας και επιστρέφει μια μεταβλητή που αντιπροσωπεύει το χρόνο αναμονής πριν ενεργοποιήσετε τους συναγερμούς.
Διαχείριση ρυθμίσεων συναγερμού:
Λειτουργία: int GetDeviceConfiguration ()
Αυτή η λειτουργία χρησιμοποιείται για τον έλεγχο της θέσης του διακόπτη που επιλέγει την ενεργοποίηση του βομβητή και του δονητή και επιστρέφει μια μεταβλητή που αντιπροσωπεύει τους συναγερμούς που πρέπει να είναι ενεργοί.
Το δεύτερο πρόγραμμα -LedStartFinishCard.c- (12F675):
Διαχείριση ενεργοποίησης μπλε LED: Λειτουργία: κενό κενό ()
Αυτός είναι ο κύριος βρόχος του προγράμματος, ενεργοποιεί τις λυχνίες LED η μία μετά την άλλη από αριστερά προς τα δεξιά (για να δημιουργήσετε μια καταδίωξη)
Δείτε παρακάτω ένα αρχείο zip του έργου MPLAB:
Βήμα 7: Συγκόλληση και συναρμολόγηση
"Φυσικό" μέρος: Ξεκίνησα δημιουργώντας το κουτί, οπότε έκοψα ξύλινες σανίδες πάχους περίπου 5mm για την κορυφή και τις πλευρές και επέλεξα μια σανίδα πάχους 2 cm για να έχει το κάτω μέρος για να έχει περισσότερο βάρος και να μην κινείται το παιχνίδι.
Συγκέντρωσα τις σανίδες ανάμεσα στο να είμαι με κόλλα ξύλου, δεν έβαλα βίδες ή καρφιά και είναι πραγματικά συμπαγές!
Προκειμένου να γίνει το παιχνίδι πιο ελκυστικό από ένα απλό βαμμένο κουτί, ζήτησα από τη σύζυγό μου να δημιουργήσει μια διακόσμηση για το πάνω μέρος του κουτιού (γιατί πραγματικά απολαμβάνω τη γραφιστική …). Του ζήτησα να φτιάξει έναν δρόμο με στροφές (να έχει σχέση με το σύρμα …) Με δοχεία/πίνακα στις άκρες των στροφών, ώστε να μπορώ να ενσωματώσω τα προειδοποιητικά LED μου. Τα μπλε LED των διακοσμητικών θα είναι σαν τις γραμμές έναρξης και τερματισμού. Δημιούργησε ένα τοπίο στυλ "Route 66", με έναν δρόμο που διασχίζει ένα είδος ερήμου, και μετά από αρκετές εντυπώσεις για να βρει την καλή τοποθεσία των LED, ήμασταν μάλλον ευχαριστημένοι με το αποτέλεσμα!
Στη συνέχεια άνοιξα τρύπες για όλους τους συνδετήρες, τους διακόπτες και φυσικά τα LED.
Το ηλεκτρικό καλώδιο στρίβεται για να δημιουργήσει ζιγκ-ζαγκ για να αυξήσει τη δυσκολία του παιχνιδιού και κάθε άκρο του βιδώνεται σε ένα αρσενικό βύσμα μπανάνας. Οι σύνδεσμοι στη συνέχεια θα συνδεθούν με τις θηλυκές υποδοχές μπανάνας που είναι προσαρτημένες στο κάλυμμα του περιβλήματος.
Ηλεκτρονικό μέρος:
Έχω διασπάσει το ηλεκτρονικό μέρος σε πολλές μικρές πρωτότυπες κάρτες.
Υπάρχουν:
- μια κάρτα για 16F628A
- μια κάρτα για 12F675
- 6 προειδοποιητικές κάρτες LED
- 4 κάρτες για διακοσμητικά LED (γραμμή εκκίνησης και γραμμή τερματισμού)
Διορθώσαμε όλες αυτές τις κάρτες κάτω από το καπάκι του κιβωτίου και έβαλα τη θήκη μπαταρίας στο κάτω μέρος του κουτιού με τον βομβητή και τη μονάδα ενίσχυσης DC.
Όλα τα ηλεκτρονικά στοιχεία συνδέονται με περιτύλιξη καλωδίων, τα έχω ομαδοποιήσει όσο το δυνατόν περισσότερο σύμφωνα με την κατεύθυνσή τους και τα έστριψα μαζί και τα στερέωσα με θερμή κόλλα, ώστε να είναι όσο το δυνατόν πιο "καθαρά" και ειδικά να υπάρχουν δεν υπάρχουν ψευδείς επαφές ή καλώδια που αποσυνδέονται. Πραγματικά μου πήρε πολύ χρόνο για να κόψω/λωρίσω/συγκολλήσω/τοποθετήσω καλώδια σωστά!
Μέρος "Joystick":
Για το χειριστήριο πήρα ένα μικρό κομμάτι σωλήνα PVC (διάμετρος 1,5 εκατοστών και μήκος 25 εκατοστά). Και στη συνέχεια κόλλησα τη θύρα θηλυκής υποδοχής έτσι:
- ένας ακροδέκτης συνδεδεμένος με το καλώδιο στο τέλος του χειριστηρίου (ContactWire στο σχηματικό)
- ένας ακροδέκτης συνδεδεμένος με τον θετικό ακροδέκτη του δονητή (σύνδεσμος 2Α σε J1A στο σχηματικό)
- ένας ακροδέκτης συνδεδεμένος με τον αρνητικό ακροδέκτη του δονητή (σύνδεσμος 1Α σε J1A στο σχηματικό)
Έπειτα ενσωμάτωσα το καλώδιο, τον δονητή και τον σύνδεσμο του γρύλου στο εσωτερικό του σωλήνα και στερέωσα τον γρύλο με ζεστή κόλλα για να βεβαιωθώ ότι δεν κινείται τίποτα όταν συνδέεται το καλώδιο του γρύλου μεταξύ του χειριστηρίου και του άλλου τμήματος του συστήματος.
Βήμα 8: Βίντεο
Βήμα 9: Συμπέρασμα
Τώρα το έργο έχει τελειώσει, ήταν πολύ ωραίο να κάνω αυτό το έργο, παρόλο που μετανιώνω που είχα πολύ λίγο χρόνο για να το κάνω. Μου επέτρεψε να αναλάβω μια νέα πρόκληση;) Ελπίζω ότι αυτό το παιχνίδι θα λειτουργήσει για πολλά χρόνια και ότι θα διασκεδάσει πολλά παιδιά που θα γιορτάσουν το τέλος της σχολικής τους χρονιάς!
Παρέχω ένα αρχείο αρχειοθέτησης που περιέχει όλα τα έγγραφα που χρησιμοποίησα/δημιούργησα για το έργο.
Δεν ξέρω αν το στυλ γραφής μου θα είναι σωστό επειδή εν μέρει χρησιμοποιώ έναν αυτόματο μεταφραστή για να προχωρήσω γρηγορότερα και επειδή δεν μιλάω εγγενώς αγγλικά, νομίζω ότι κάποιες προτάσεις θα είναι πιθανώς περίεργες για τους ανθρώπους που γράφουν τέλεια αγγλικά.
Εάν έχετε οποιεσδήποτε ερωτήσεις ή σχόλια σχετικά με αυτό το έργο, ενημερώστε με!
Συνιστάται:
Προγραμματίστε το δικό σας παιχνίδι 2048 W/Java!: 8 βήματα
Προγραμματίστε το δικό σας παιχνίδι 2048 W/Java!: Λατρεύω το παιχνίδι 2048. Και έτσι αποφάσισα να προγραμματίσω τη δική μου έκδοση. Είναι πολύ παρόμοιο με το πραγματικό παιχνίδι, αλλά ο προγραμματισμός του ο ίδιος μου δίνει την ελευθερία να αλλάξω ό, τι θέλω όποτε θέλω. Αν θέλω ένα παιχνίδι 5x5 αντί για το τυπικό 4x4, ένα
Πραγματικό παιχνίδι Life War Tower Defense παιχνίδι: 11 βήματα
Making a Real Life War Tower Defense Game: Γεια σας, είμαστε GBU! Στην ομάδα μας ανατέθηκε μια εργασία στο VG100, Intro to Engineering, class: να σχεδιάσουμε και να δημιουργήσουμε ένα πραγματικό παιχνίδι Warzone Tower Defense Game. Το VG100 είναι μια βασική τάξη που όλοι οι πρωτοετείς καλούνται να παρακολουθήσουν στο Joint Institute (JI.) The Joint Inst
Πώς να φτιάξετε ένα ρομπότ μάχης (για οποιοδήποτε επίπεδο δεξιοτήτων): 8 βήματα
Πώς να φτιάξετε ένα ρομπότ μάχης (για οποιοδήποτε επίπεδο δεξιοτήτων): Κατά την εκκίνηση της ρομποτικής μάχης, διαπίστωσα ότι δεν υπήρχε " βήμα προς βήμα " ρομπότ μάχης για να δημιουργήσει μια πορεία, οπότε αφού έκανα πολλές έρευνες στο διαδίκτυο, αποφάσισα να συντάξω μερικά από αυτά για να δημιουργήσω έναν οδηγό για την κατασκευή ενός ρομπότ μάχης, έτσι ώστε κάποιος να
Γιγαντιαίο παιχνίδι με παιχνίδι Makey Makey: 8 βήματα
Gigantic Playable Makey Makey: Μερικοί εκπαιδευτικοί στην ομάδα μας στο Facebook, ανέβηκαν σε ένα εντελώς νέο επίπεδο αυτό το σχολικό έτος φτιάχνοντας το δικό τους γιγάντιο Makey Makeys. Η ομάδα μας θεώρησε ότι αυτή ήταν μια εξαιρετική ιδέα για τη διδασκαλία των μαθητών σχετικά με τους μικροελεγκτές. Ως εκ τούτου, ρωτήσαμε τον Διευθυντή μας
Πώς να ελέγξετε αν ένα παιχνίδι θα τρέξει στον υπολογιστή σας πριν αγοράσετε το παιχνίδι .: 4 βήματα
Πώς να ελέγξετε αν ένα παιχνίδι θα τρέξει στον υπολογιστή σας πριν αγοράσετε το παιχνίδι .: Πρόσφατα απέκτησα το Call of Duty 4 από έναν φίλο (δωρεάν θα μπορούσα να προσθέσω) επειδή δεν θα εκτελεστεί στον υπολογιστή του. Λοιπόν, ο υπολογιστής του είναι αρκετά νέος και με μπέρδεψε γιατί δεν θα λειτουργούσε. Έτσι, μετά από μερικές ώρες αναζήτησης στο διαδίκτυο, συνάντησα