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

Πώς να διαβάσετε πολλούς διακόπτες με ένα pin MCU: 4 βήματα
Πώς να διαβάσετε πολλούς διακόπτες με ένα pin MCU: 4 βήματα

Βίντεο: Πώς να διαβάσετε πολλούς διακόπτες με ένα pin MCU: 4 βήματα

Βίντεο: Πώς να διαβάσετε πολλούς διακόπτες με ένα pin MCU: 4 βήματα
Βίντεο: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, Ιούνιος
Anonim
Πώς να διαβάσετε πολλούς διακόπτες με μία καρφίτσα MCU
Πώς να διαβάσετε πολλούς διακόπτες με μία καρφίτσα MCU

Είχατε ποτέ φασαρία για ένα (τα) έργο (τα) και το έργο συνεχίζει να μεγαλώνει και να μεγαλώνει, ενώ προσθέτετε περισσότερα πράγματα σε αυτό (το αποκαλούμε Feaping Creaturism); Σε ένα πρόσφατο έργο, έχτιζα έναν μετρητή συχνοτήτων και πρόσθεσα μια γεννήτρια σήματος πέντε λειτουργιών/συνθετή συχνότητας. Σύντομα τελείωσα με περισσότερους διακόπτες από ό, τι μου είχαν μείνει διαθέσιμες καρφίτσες, οπότε τι να κάνει ένας τύπος;

Ωστόσο, σύντομα είχα επτά ακόμη διακόπτες στο Funbox μου (ναι, αυτό ονόμασα τη γεννήτρια συναρτήσεών μου … Ξέρω, δεν έχω δημιουργικότητα) και εδώ είναι ένας σύντομος οδηγός που σας δείχνει πώς μπορείτε να κάνετε το ίδιο. Δεν απαιτεί καταχωρητές βάρδιας ή συγκεκριμένα IC. Στην πραγματικότητα, δεν απαιτεί ούτε μικροελεγκτή, αν ο διακριτός ημιαγωγός είναι ο τρόπος με τον οποίο κυλάτε. Ακολουθεί ένας τρόπος με τον οποίο μπορείτε να διαβάσετε/διαχειριστείτε πολλούς διακόπτες χρησιμοποιώντας ένα μόνο pin στο AVR σας (ή άλλο μικροελεγκτή … Έχω ακούσει ότι υπάρχουν και άλλοι μικροελεγκτές εκτός από τους AVR, αλλά δεν μπορώ να φανταστώ…).:)

Βήμα 1: Τα βασικά (όχι πραγματικά)

Για να επιτευχθεί αυτό, θα χρειαστείτε μερικά στοιχεία. Βοηθάει να έχετε πληθώρα διακοπτών που πρέπει να διαχειριστείτε. Θα χρειαστείτε επίσης κάποιες αντιστάσεις και είτε έναν μικροελεγκτή που έχει ADC (Αναλογική σε Digitalηφιακή μετατροπή) είτε κάποιο άλλο τρόπο που θα θέλατε να υποδείξετε ότι ένας διακόπτης ήταν ενεργοποιημένος και ποιος διακόπτης ήταν.

Εάν θέλετε, μπορείτε να χρησιμοποιήσετε έναν ταλαντωτή ελεγχόμενης τάσης για να το δείξετε αυτό, ίσως με μερικά φώτα που αναβοσβήνουν ή εναλλακτικά, με ήχο. Σε αυτό το "ible", θα προσποιηθώ ότι χρησιμοποιούμε AVR, αλλά στον κόσμο σας μπορείτε να προσποιηθείτε ό, τι σας κάνει ευτυχισμένους. Μου λείπει ο Μπομπ Ρος.

Βήμα 2: Ο διαχωριστής τάσης

Ο διαχωριστής τάσης
Ο διαχωριστής τάσης
Ο διαχωριστής τάσης
Ο διαχωριστής τάσης

Ουσιαστικά, ο τρόπος που θα το κάνουμε αυτό είναι χρησιμοποιώντας μια τεχνική και ένα κύκλωμα που ονομάζεται διαχωριστής τάσης. Τα διαχωριστικά τάσης, όπως ίσως μαντέψατε, διαιρούν την τάση V,, σε,, με κάποια τιμή που καθορίζετε. Μπορείτε να διαιρέσετε την τάση με πολλά εξαρτήματα, συμπεριλαμβανομένων των πυκνωτών και των επαγωγέων, αλλά εδώ θα το κάνω με την καλή αντίσταση. Η ιδέα Αυτό που κάνουμε είναι η τοποθέτηση δύο εξαρτημάτων σε σειρά που θα προκαλέσουν, το καθένα ξεχωριστά, πτώση τάσης στο εξάρτημα. Κοιτάξτε την πρώτη εικόνα αν δεν έχω νόημα. Υπάρχει πιθανή διαφορά 9V από σιδηρόδρομο σε σιδηρόδρομο. Μεταξύ 9V και 0V υπάρχουν δύο αντιστάσεις σε σειρά. Καθένα από αυτά θα παρουσιάσει πτώση τάσης από μόνο του, ανάλογα με την αντίσταση, όπως πιθανώς θυμάστε από το V = IR. Εάν κάνετε μια μέτρηση τάσης μεταξύ των δύο αντιστάσεων, θα λάβετε κάποια τιμή μεταξύ 9V και 0V, ανάλογα με το πόση τάση έχει πέσει στον πρώτο αντιστάτη και πόσο μένει να πέσει πάνω από τη 2η αντίσταση, πριν από τα 0V. Υπάρχει ένας απλός τύπος για τον υπολογισμό της πτώσης τάσης σε μια αντίσταση σε αυτήν την κατάσταση και μοιάζει με αυτό. Αφήστε την τάση πάνω από την αντίσταση 1 (R1) να είναι V1 και η τάση της αντίστασης δύο (R2) να είναι V2. Δεδομένου ότι δεν μπορώ να χρησιμοποιήσω άλλο μορφοποίηση, κοιτάξτε την εικόνα 2 παρακάτω για τον τύπο … Έτσι, στο διαχωριστικό αντίστασης, η τάση Vout μπορεί να καθοριστεί από τον τύπο μας για το V2 (αφού θα αναφέρουμε το GND σε 0V). Τι σχέση έχει αυτό με την ανίχνευση μιας δέσμης διακοπτών από έναν πείρο; Λοιπόν, γύρισε σελίδα και θα σου δείξω!

Βήμα 3: Σκάλα διαίρεσης τάσης

Σκάλα διαίρεσης τάσης
Σκάλα διαίρεσης τάσης

Τώρα ας υποθέσουμε ότι έχουμε όλους τους διακόπτες μας, ίσως έξι ή οκτώ ή δεκαέξι, όλοι συνδεδεμένοι μέσω αντιστάσεων που ο καθένας λειτουργεί ως διαχωριστής τάσης έτσι ώστε όταν αλλάζει η κατάσταση του πείρου του διακόπτη, η τάση διαβάζεται και με βάση το επίπεδο τάσης, μπορεί να ξέρει ποιος διακόπτης μόλις ενεργοποιήθηκε. Κοιτάξτε παρακάτω. Στην παρακάτω εικόνα, έχω συνδέσει δύο μπλοκ διακοπτών. Το μπλοκ με το πάνω μέρος έχει δύο διακόπτες και το πιο κάτω μπλοκ έχει πέντε διακόπτες. Μπορείτε να συνδέσετε τους ξεχωριστούς διακόπτες εναλλαγής, στιγμιαίου, απτικού κλπ με τον ίδιο τρόπο. Το σημαντικό πράγμα που πρέπει να προσέξετε είναι η αντίσταση στην οποία είναι συνδεδεμένος ο διακόπτης σας. Στο παράδειγμά μου, σχεδόν διπλασίασα την αντίσταση της επόμενης αντίστασης για να δημιουργήσω ένα κενό τάσης που είναι εύκολο να μετρηθεί και δεν συγχέεται με τον διακόπτη πριν ή μετά. Αν δεν το έχετε παρατηρήσει πριν, κοιτάξτε ξανά και συνειδητοποιήστε ότι είμαστε πίσω στον παλιό μας φίλο, το διαχωριστικό αντίστασης τάσης. Η πρώτη αντίσταση, η 10k ohm, συνδέεται με 5V και η 2η αντίσταση - η αντίσταση που θα καθορίσει το Vέξω για τον πείρο SWITCH_ADC, είναι συνδεδεμένος σε κάθε διακόπτη και ως εκ τούτου, κάθε διακόπτης σχετίζεται με μια συγκεκριμένη τάση Vout που μπορεί να διαβαστεί από τον πείρο ADC που είναι συνδεδεμένος στο SWITCH_ADC. Στη συνέχεια, καθορίστε το αναμενόμενο Vout από κάθε διακόπτη έτσι

Vout = Vin * (R2 / (R1 + R2))

για το διακόπτη ένα:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V ή 240 mV

για το διακόπτη δύο:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9V ή ~ 900mV

και ούτω καθεξής.. Μη διστάσετε να αντικαταστήσετε τις δικές σας τιμές για το R2 εάν έχετε στη διάθεσή σας μόνο ορισμένες αντιστάσεις … Το βασικό εδώ είναι να διατηρήσετε ένα αρκετά μεγάλο κενό στην τάση μεταξύ των διακοπτών έτσι ώστε να κερδίσει οποιοδήποτε περιθώριο σφάλματος στο ADC » t να σας βάλουμε στην τάση που αναμένεται από έναν γειτονικό διακόπτη. Έχω διαπιστώσει ότι το πιο εύκολο πράγμα είναι να φτιάξετε τη διαχωριστική σκάλα και να βάλετε ένα πολύμετρο/βολτόμετρο στον πείρο ADC και να πιέσετε κάθε πείρο και να δείτε τι τιμές παίρνετε. Θα πρέπει να είναι αρκετά προσεκτικοί σε αυτό που υπολογίζετε. Μόλις έχετε όλες τις αναμενόμενες τιμές τάσης από κάθε διακόπτη χρησιμοποιώντας μια συγκεκριμένη αντίσταση, τότε μπορείτε να ζητήσετε από το MCU να διαβάσει την καρφίτσα ADC και να τη συγκρίνει με τις γνωστές τιμές σας για να καθορίσει ποιος διακόπτης πιέστηκε. Για παράδειγμα, ας πούμε ότι έχετε καταχωρίσει μια ρουτίνα υπηρεσίας διακοπής που θα καλείται κάθε φορά που εντοπίζεται αλλαγή στην καρφίτσα ADC. Μέσα σε αυτό το ISR, μπορείτε να διαβάσετε το ADC και να συγκρίνετε αυτήν την τιμή με τον πίνακα εναλλαγής σας. Εάν χρησιμοποιείτε τιμή ADC 8-bit, η τάση σας θα μετατραπεί σε αριθμό μεταξύ 0 και 255 που αντιστοιχεί σε τάση μεταξύ 0V και 5V. Αυτό προϋποθέτει ότι έχετε ρυθμίσει το ADC με αυτόν τον τρόπο.

Βήμα 4: Περίληψη

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

Συνιστάται: