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

Αισθητήρας αφής 5-καλωδίων: 10 βήματα
Αισθητήρας αφής 5-καλωδίων: 10 βήματα

Βίντεο: Αισθητήρας αφής 5-καλωδίων: 10 βήματα

Βίντεο: Αισθητήρας αφής 5-καλωδίων: 10 βήματα
Βίντεο: 5 Δωρεάν Εφαρμογές Windows 10 που ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΛΕΙΠΟΥΝ Από Κανένα PC 2024, Ιούλιος
Anonim
Αισθητήρας αφής 5-καλωδίων
Αισθητήρας αφής 5-καλωδίων

Γεια γεια!

Έχει περάσει πολύς καιρός από τότε που εργάζομαι σε αυτόν τον ιστότοπο και αρκετά έχουν αλλάξει φαίνεται! Είμαι τελικά έτοιμος να επιστρέψω πίσω από το τιμόνι για ένα άλλο έργο και νομίζω ότι ήρθε η ώρα να αλλάξω λίγο τα πράγματα μόνος μου!

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

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

Είμαι πολύ ενθουσιασμένος για αυτό το νέο έργο και είμαι ενθουσιασμένος για να δω πόσο καλά λειτουργεί!

Σήμερα απλώς θα αποκτήσουμε έναν απλό πίνακα αφής 5-Wire που θα λειτουργεί με DP-32.

Ας αρχίσουμε!

Βήμα 1: Τι θα χρειαστείτε

Αυτό που θα χρειαστείτε
Αυτό που θα χρειαστείτε

Επειδή αυτό το σεμινάριο αφορά τη λειτουργία ενός μόνο αισθητήρα, δεν χρειάζεστε πολλά πέρα από έναν μικροελεγκτή και την οθόνη αφής.

  • Ένας μικροελεγκτής.

    Χρησιμοποιώ το DP32 μου με ενσωματωμένη σανίδα ψωμιού γιατί καθιστά απλό απλό το πρωτότυπο

  • Ποικιλία καλωδίων και καλωδίων.

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

  • Ο τίτλος 5-αγωγών με αντίσταση αφής!

    Είχα έναν πίνακα αφής με 4 σύρματα, αλλά το καλώδιο της κορδέλας έσπασε

Και αυτό είναι!

Βήμα 2: Τι είναι το 5-wire Resistive Touch Panel;

Τι είναι το 5-wire Resistive Touch Panel
Τι είναι το 5-wire Resistive Touch Panel
Τι είναι το 5-wire Resistive Touch Panel
Τι είναι το 5-wire Resistive Touch Panel
Τι είναι το 5-wire Resistive Touch Panel
Τι είναι το 5-wire Resistive Touch Panel

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

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

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

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

Στην τρίτη εικόνα, μπορείτε να δείτε πώς αλλάζει η διαμόρφωση για να μας επιτρέψει να αισθανθούμε κατά μήκος του άξονα Υ. Με αυτόν τον τρόπο, μπορούμε να πούμε πού σε 2-δ χώρο αγγίζει το δάχτυλό μας!

Βήμα 3: Καλωδίωση

Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση

Όπως πιθανότατα μπορείτε να δείτε στις παραπάνω εικόνες, έχω συνδέσει τις τέσσερις γωνίες μου η καθεμία με τη δική της ψηφιακή ακίδα εξόδου. Αυτό θα μου επιτρέψει να τα θέσω ξεχωριστά σε υψηλά ή χαμηλά. Ο πείρος του αισθητήρα μου συνδέεται με έναν αναλογικό πείρο εισόδου. Το ωραίο σε μια οθόνη αφής 5-καλωδίων, σε αντίθεση με μια 4-καλωδιακή, είναι ότι χρειάζεστε μόνο έναν αναλογικό πείρο, ενώ ένα 4σύρμα απαιτεί 2.

Η καλωδίωσή σας μπορεί να διαφέρει, φυσικά, αλλά η καλωδίωσή μου έχει ως εξής:

Το αναλογικό 0 (pin 6) συνδέεται με τον αισθητήρα (μεσαίο pin)

Digitalηφιακό 3 συνδέεται με το πάνω δεξιά (πάνω-πιο pin)

Digitalηφιακό 2 συνδέεται προς τα επάνω-αριστερά (δεύτερη κορυφαία πινέζα)

Το Digitalηφιακό 1 συνδέεται με το Κάτω-Αριστερά (δεύτερη κάτω καρφίτσα)

Το 0ηφιακό 0 συνδέεται με το Κάτω-Δεξί (το κάτω-πιο pin)

Αξίζει να σημειώσω ξανά ότι χρησιμοποιώ καλώδιο 6 καλωδίων για να μπω μεταξύ του μικροελεγκτή και του πίνακα. Άφησα την επάνω καρφίτσα αυτού του καλωδίου ασύνδετη.

Βήμα 4: Ανάπτυξη λογισμικού

Ανάπτυξη λογισμικού
Ανάπτυξη λογισμικού

Στο παρελθόν, συνήθως έριχνα ένα ολοκληρωμένο αρχείο λογισμικού για να το χρησιμοποιήσετε, ίσως με μια σύντομη περιγραφή του τι κάνουν όλα. Δεν μου αρέσει αυτό. Θέλω αυτή η σειρά να αφορά έργα σε εξέλιξη και για το σκοπό αυτό θα συμπεριλάβω την πραγματική ανάπτυξη αυτού του λογισμικού από την αρχή μέχρι το τέλος.

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

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

Βήμα 5: Αναβοσβήνει κατάσταση μηχανήματος

Αναβοσβήνει το State Machine
Αναβοσβήνει το State Machine

Η πρώτη μου κίνηση είναι να αλλάξω τη λειτουργία αναλαμπής από μία που βασίζεται στην "καθυστέρηση ()" σε μηχανή κατάστασης.

Για εκείνους που δεν χρησιμοποιούνται για εναλλαγή δηλώσεων, λειτουργεί παρόμοια με μια δήλωση if. Αυτό (στο πορτοκαλί πλαίσιο) δοκιμάζει τη μεταβλητή "κατάστασης" (η οποία ξεκινά από το 0). Στη συνέχεια, μεταβαίνει στην υπόθεση για την τρέχουσα κατάστασή μας. Θα δείτε ότι η θήκη 0 και 2 είναι υπεύθυνες για την ενεργοποίηση και απενεργοποίηση της λυχνίας LED (αντίστοιχα), ενώ η θήκη 1 και 3 είναι υπεύθυνη για την αναμονή μεταξύ των διακοπτών.

Βήμα 6: Αναβοσβήνει το κουμπί

Κουμπί αναβοσβήνει
Κουμπί αναβοσβήνει
Κουμπί αναβοσβήνει
Κουμπί αναβοσβήνει
Κουμπί αναβοσβήνει
Κουμπί αναβοσβήνει

Στη συνέχεια, ήθελα να χρησιμοποιηθεί το κουμπί για να αναβοσβήνει το φως. Αντί να το περιπλέξω υπερβολικά, απλώς μετακίνησα όλες τις καταστάσεις προς τα κάτω κατά μία (η κατάσταση 0 γίνεται κατάσταση 1 κ.λπ.). Όταν το κάνετε αυτό, προσέξτε να αυξήσετε τις καταστάσεις εξόδου καθώς και την ίδια την κατάσταση (δείτε εικόνα 3).

Διαγράψα επίσης τη δεύτερη κατάσταση "αναμονής". Αυτό σημαίνει ότι το κουμπί ανάβει το φως για ένα δευτερόλεπτο και μπορείτε να το πατήσετε ξανά αμέσως μόλις απενεργοποιηθεί.

Αξίζει να σημειωθεί ότι αυτό το σύστημα καταργεί αυτόματα το κουμπί για εμάς, επειδή πρέπει να περιμένουμε να σβήσει το LED πριν επιστρέψουμε στην κατάσταση 0 όπου το κουμπί μπορεί να ενεργοποιήσει ξανά τον κύκλο.

Βήμα 7: Σειριακή επικοινωνία

Σειριακή Επικοινωνία
Σειριακή Επικοινωνία
Σειριακή Επικοινωνία
Σειριακή Επικοινωνία

Αυτή η ενημέρωση είναι πολύ μικρή. Το μόνο που ήθελα να κάνω ήταν να δημιουργήσω μια Σειριακή σύνδεση και να στείλω μηνύματα. Στην πρώτη εικόνα, μπορείτε να δείτε ότι ξεκινάω το Serial στη λειτουργία εγκατάστασης (). Μέσα στο μηχάνημα κατάστασής μας, πρόσθεσα γραμμές στις καταστάσεις 1 και 3 που θα στέλνουν απλά μηνύματα στον υπολογιστή μέσω σειριακής σειράς.

Βήμα 8: Ανάγνωση συντεταγμένων

Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης
Συντεταγμένες ανάγνωσης

Είναι καλό που το τελευταίο βήμα ήταν εύκολο, γιατί αυτό ήταν ένα χάλια.

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

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

Πράγματα που πρέπει να σημειωθούν: Υπάρχουν τρία βήματα "αναμονής" τώρα. Ένα για κάθε διαμόρφωση του πίνακα αφής, για να εγκατασταθούν οι τάσεις πριν από τη μέτρηση και ένα για να δοθεί χρόνος στο κουμπί για σωστή αποσύνδεση. Αυτά τα βήματα αναμονής είναι ο λόγος που ήθελα να δώσω τόσο στο κουμπί όσο και στην οθόνη αφής τις δικές τους μεταβλητές ώρας.

Σημείωση: Η σταθερά DEBOUNCE_TIME μπορεί να είναι λίγο χαμηλή. Μη διστάσετε να το αυξήσετε.

Βήμα 9: Καθαρισμός

Καθαρισμό
Καθαρισμό
Καθαρισμό
Καθαρισμό
Καθαρισμό
Καθαρισμό

Φτάσαμε στην τελική έκδοση του κώδικα για αυτό το έργο!

Αρχικά, έχω προσθέσει μια συνάρτηση που ονομάζεται loop_diff () για τον υπολογισμό του χρόνου που έχει παρέλθει. Το εσωτερικό ρολόι για το DP32 είναι ένα ανυπόγραφο μακρύ και, αν και είναι εξαιρετικά απίθανο, υπάρχει η πιθανότητα το ρολόι να κάνει βρόχο κάποια στιγμή κατά τη διάρκεια εκτέλεσης αυτού του κώδικα*. Σε αυτή την περίπτωση, αφαιρώντας απλώς τον τρέχοντα χρόνο από τον χρόνο που έχει αποθηκευτεί σε btn_time ή panel_time θα μας δώσει κάτι περίεργο, οπότε έγραψα το loop_diff () για να εντοπίσω πότε εμφανίζονται βρόχοι και να συμπεριφερόμαστε ανάλογα.

Έχω κάνει και λίγο καθαρισμό. Έχω καταργήσει τη μεταβλητή "state_time" που δεν χρησιμοποιείται πλέον. Έχω αλλάξει από την ετικέτα LED_BUILTIN (που είναι πρότυπο Arduino) στην ετικέτα PIN_LED1 (η οποία είναι τυπική για το chipKit και το DP32). Έχω επίσης αφαιρέσει όλα τα μηνύματα μέσω Serial σχετικά με την έναρξη και τον τερματισμό της διαδικασίας, γεγονός που καθιστά τα δεδομένα μας μέσω Serial πολύ πιο καθαρά.

*Έκανα τα μαθηματικά πριν από χρόνια και νομίζω ότι για τη συνάρτηση millis () θα χρειαζόταν κάτι σαν μια εβδομάδα σταθερού χρόνου εκτέλεσης πριν η μεταβλητή κυλήσει.

Βήμα 10: Τελικές σκέψεις

Τελικές σκέψεις
Τελικές σκέψεις

Και αυτό είναι!

Εάν έχετε ακολουθήσει, θα πρέπει τώρα να έχετε μια οθόνη αφής εργασίας συνδεδεμένη στον μικροελεγκτή σας! Αυτό ήταν ένα μικρό έργο, αλλά είναι μέρος ενός μεγαλύτερου έργου. Δουλεύω για κάτι σαν το Plate and Ball του 271828 και έχω πολύ δρόμο να διανύσω μέχρι να συμβεί αυτό. Θα προσπαθήσω να σας πάρω μαζί μου για όλη τη διαδικασία και κάθε μέρος θα πρέπει να είναι το δικό του μικρό έργο.

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

Ευχαριστώ και θα τα πούμε την επόμενη φορά!

Συνιστάται: