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

Ελεγκτής δικτύου αισθητήρα θερμοκρασίας ανθεκτικής σε σφάλματα: 8 βήματα
Ελεγκτής δικτύου αισθητήρα θερμοκρασίας ανθεκτικής σε σφάλματα: 8 βήματα

Βίντεο: Ελεγκτής δικτύου αισθητήρα θερμοκρασίας ανθεκτικής σε σφάλματα: 8 βήματα

Βίντεο: Ελεγκτής δικτύου αισθητήρα θερμοκρασίας ανθεκτικής σε σφάλματα: 8 βήματα
Βίντεο: 💦Blackview BV9200 HONEST Αντικραδασμική ΚΡΙΤΙΚΗ 2024, Νοέμβριος
Anonim
Ελεγκτής δικτύου αισθητήρων θερμοκρασίας ανθεκτικός σε σφάλματα
Ελεγκτής δικτύου αισθητήρων θερμοκρασίας ανθεκτικός σε σφάλματα

Αυτό το Instructable σάς δείχνει πώς να μετατρέψετε μια πλακέτα Arduino Uno σε χειριστήριο μίας χρήσης για ένα σύνολο αισθητήρων θερμοκρασίας DS18B20 που μπορούν να αυτοματοποιήσουν την απομόνωση ελαττωματικών αισθητήρων.

Το χειριστήριο μπορεί να διαχειριστεί έως 8 αισθητήρες με το Arduino Uno. (Και πολύ περισσότερο με το Arduino Mega ή με μια μικρή τροποποίηση λογισμικού.)

Βήμα 1: Ιστορία πίσω…

Πριν από μερικά χρόνια δημιούργησα ένα δίκτυο αισθητήρων θερμοκρασίας DS18B20 στο θερμοκήπιο του πατέρα μου για τον ελεγκτή θέρμανσης με βάση pi. Δυστυχώς, η αξιοπιστία του ελεγκτή ήταν χαμηλή κυρίως λόγω των συχνών διακοπών του αισθητήρα. Δοκίμασα πολλαπλές ρυθμίσεις - παρασιτική ισχύς, άμεση ισχύς, σύνδεση του δικτύου με pi καθώς και σύνδεση με προσαρμοσμένη πλακέτα που βασίζεται σε Atmega (ο κύριος σκοπός ήταν η οδήγηση κινητήρων βαλβίδων).

Το χειρότερο, η αξιοπιστία του δικτύου αισθητήρων μειώθηκε κυρίως τις χειμερινές νύχτες, ενώ το καλοκαίρι δεν υπήρχαν σχεδόν καθόλου προβλήματα! Τι στο καλό συμβαίνει εδώ;

Για να διερευνήσουμε ποιος αισθητήρας προκαλεί το πρόβλημα, προέκυψε η ανάγκη ενεργοποίησης/απενεργοποίησης τους ένα προς ένα ή ενεργοποίησης οποιουδήποτε συνδυασμού τους.

Βήμα 2: Πώς λειτουργεί

Το DS18B20 (ο αισθητήρας θερμοκρασίας) χρησιμοποιεί ιδιόκτητο πρωτόκολλο 1 καλωδίου που επιτρέπει σε πολλούς αισθητήρες να μοιράζονται κοινή σύνδεση δεδομένων (αυτό το ένα καλώδιο). Αυτός ο κοινός σύνδεσμος δεδομένων συνδέεται με έναν από τους ακροδέκτες GPU του Arduino και με + 5 V μέσω αντίστασης έλξης-τίποτα ασυνήθιστο, πολλά εκπαιδευτικά κείμενα καλύπτουν αυτήν τη ρύθμιση.

Το κόλπο είναι ότι τα καλώδια τροφοδοσίας κάθε αισθητήρα συνδέονται με δικούς τους (αποκλειστικούς) ακροδέκτες GPIO, έτσι ώστε να μπορούν να ενεργοποιούνται και να απενεργοποιούνται ξεχωριστά. Για παράδειγμα, εάν ένας αισθητήρας έχει καλώδιο Vcc συνδεδεμένο στον ακροδέκτη #3 και GND στον ακροδέκτη #2, η ρύθμιση του πείρου #3 στο HIGH παρέχει ισχύ για τον αισθητήρα (δεν προκαλεί έκπληξη) ενώ η ρύθμιση του πείρου #2 στο LOW παρέχει γείωση (λίγη έκπληξη για μου). Η ρύθμιση και των δύο ακίδων στη λειτουργία εισόδου (σχεδόν) απομονώνει πλήρως τον αισθητήρα και την καλωδίωση του - ανεξάρτητα από την αστοχία (π.χ. συντόμευση) που συμβαίνει στο εσωτερικό του, δεν θα επηρεάσει τους άλλους.

(Είναι δίκαιο να πω ότι η σύνδεση του καλωδίου δεδομένων με κάτι άλλο που συνδέεται κάπως με το Arduino θα προκαλέσει πράγματι παρεμβολές, αλλά είναι σχεδόν αδύνατο στη ρύθμιση μου).

Παρατηρήστε ότι το DS18B20 καταναλώνει έως 1, 5 mA ενώ ένας πείρος Arduino μπορεί να πηγάζει / βυθίζεται έως και 40 mA, οπότε είναι απόλυτα ασφαλές να τροφοδοτείτε τους αισθητήρες απευθείας από καρφίτσες GPIO.

Βήμα 3: Υλικό & Εργαλεία

Υλικό

  • 1 πίνακας Arduino UNO
  • 3 γυναικείες κεφαλίδες: 1 × 4, 1 × 6 και 1 × 6 (ή περισσότερο - τις έκοψα από μία κεφαλίδα 1 × 40)
  • μια κόλλα
  • ένα κομμάτι γυμνού σύρματος κουπ (τουλάχιστον 10 cm)
  • μια μονωτική ταινία
  • συγκόλληση αναλώσιμων (σύρμα, ροή …)

Εργαλεία

  • εξοπλισμός συγκόλλησης (σίδερο, κάτοχοι,…)
  • μικρές πένσες κοπής

Βήμα 4: Διορθώστε τα πράγματα μαζί

Διορθώστε τα πράγματα μαζί
Διορθώστε τα πράγματα μαζί

Κολλήστε τις γυναικείες κεφαλίδες καρφίτσας στις κεφαλίδες του πίνακα Arduino:

  1. Κεφαλίδα 1 × 4 δίπλα στην "αναλογική" κεφαλίδα καρφιτσών, πλάι-πλάι με ακίδες A0 – A4
  2. Κεφαλίδα 1 × 6 δίπλα στην πρώτη ψηφιακή κεφαλίδα καρφιτσών, από πλευρά σε πλευρά με καρφίτσες 2-7
  3. Κεφαλίδα 1 × 6 δίπλα στη δεύτερη ψηφιακή κεφαλίδα καρφιτσών, πλάι-πλάι με ακίδες 8-13

Παρατηρήστε ότι οι κεφαλίδες μου είναι λίγο μεγαλύτερες … δεν έχει μειονεκτήματα και πλεονεκτήματα υποθέτω.

Βήμα 5: Wire Things Together

Wire Things Together
Wire Things Together
Wire Things Together
Wire Things Together

Καλωδίωση της γραμμής λεωφορείων 1 καλωδίων:

  1. Συνδέστε όλα τα καλώδια των κολλημένων κεφαλίδων στην "ψηφιακή" πλευρά (δίπλα στις ακίδες 2-13) συγκολλώντας ένα κομμάτι γυμνού σύρματος σε αυτά
  2. Συγκολλήστε το άκρο αυτού του καλωδίου στο καλώδιο ακίδων SCL (εσωτερικά συνδεδεμένο με A5)
  3. Συνδέστε όλα τα καλώδια της κολλημένης κεφαλίδας στην "αναλογική" πλευρά (ακίδες A0 -A3) συγκολλώντας ένα κομμάτι γυμνού σύρματος σε αυτά
  4. Συγκολλήστε το άκρο αυτού του καλωδίου σε καλώδια A4 και A5 (χρησιμοποίησα τα A5 και A6 επειδή έχω μια πλακέτα που έχει A6 & A7)
  5. Συγκολλήστε μια αντίσταση 4k7 μεταξύ του άλλου άκρου αυτού του καλωδίου και του καλωδίου πείρου +5 V

Σημειώσεις:

  • Οι καρφίτσες A0 – A5, αν και επισημαίνονται ως «αναλογικές», μπορούν να χρησιμοποιηθούν και ως ψηφιακές ακίδες GPIO.
  • Ο ακροδέκτης SCL στην "ψηφιακή" πλευρά είναι εσωτερικά συνδεδεμένος με το A5 στην "αναλογική" πλευρά. που συνδέεται με τις επικεφαλίδες, σχηματίζει τη γραμμή λεωφορείου 1 καλωδίου
  • Το A4 (χρησιμοποιείται ως αναλογική είσοδος) μετρά την τάση του διαύλου για διαγνωστικούς σκοπούς. Αυτός είναι ο λόγος για τον οποίο συνδέεται απευθείας με το λεωφορείο.
  • Χρησιμοποίησα A6 αντί A4 επειδή έχω μια πλακέτα που έχει A6 & A7; Αρχικά ήθελα να χρησιμοποιήσω το A7 ως κύριο δίαυλο 1 καλωδίου, αλλά αυτές οι δύο ακίδες δεν μπορούν να ρυθμιστούν ώστε να είναι ψηφιακά GPIO.
  • Για να αποτρέψετε τη λανθασμένη σύνδεση των συνδετήρων του αισθητήρα, μπορείτε να παραλείψετε / κόψετε τη μη χρησιμοποιημένη επαφή (δεν είναι συνδεδεμένη σε κανένα καλώδιο) από κάθε αρσενικό σύνδεσμο και να την εισάγετε στην αντίστοιχη οπή στην κολλημένη κεφαλίδα πείρου.

Βήμα 6: Σύνδεση αισθητήρων

Σύνδεση αισθητήρων
Σύνδεση αισθητήρων

Μόλις δημιουργήσατε έναν πίνακα από οκτώ υποδοχές 2 × 2. Μπορείτε να κολλήσετε και να συναρμολογήσετε 2 × 2 συνδετήρες Dupont σε καλώδια αισθητήρων και να τα συνδέσετε σε αυτές τις πρίζες. Το λογισμικό διαμορφώνει τις ακίδες έτσι ώστε οι ακίδες να είναι ακίδες GND και οι περιττές ακίδες είναι καρφίτσες Vcc. Για κάθε αισθητήρα, ο πείρος Vcc είναι απλώς πείρος GND + 1. Ένας από τους άλλους δύο πείρους της υποδοχής 2 × 2 (ένας από αυτούς τους δύο στην κολλημένη και συγκολλημένη κεφαλίδα) είναι για το καλώδιο δεδομένων του αισθητήρα. Δεν έχει σημασία ποια χρησιμοποιείτε.

Βήμα 7: Λογισμικό ελεγκτή

Λογισμικό ελεγκτή
Λογισμικό ελεγκτή

Το σκίτσο SerialThermometer εκτελεί τον ελεγκτή. Μπορείτε να το βρείτε στο github. Ανοίξτε και ανεβάστε χρησιμοποιώντας το Arduino IDE.

Βήμα βήμα:

  1. Ανοίξτε το Arduino IDE και εγκαταστήστε τη βιβλιοθήκη DallasTemperature και όλες τις εξαρτήσεις της μέσω του Sketch | Συμπεριλάβετε τη Βιβλιοθήκη | Διαχείριση Βιβλιοθηκών.
  2. Κλωνοποίηση αποθετηρίου git. Εάν δεν είστε εξοικειωμένοι με το git, κάντε λήψη και αποσυσκευάστε αυτό το zip οπουδήποτε στον υπολογιστή σας.
  3. Ανοίξτε το σκίτσο SerialThermometer στο Arduino IDE.
  4. Συνδέστε την τροποποιημένη πλακέτα Arduino στον υπολογιστή σας μέσω καλωδίου USB (τυπικός τρόπος)
  5. Ανεβάστε το σκίτσο χρησιμοποιώντας το Arduino IDE
  6. Άνοιγμα σειριακής οθόνης μέσω εργαλείων | Σειριακή οθόνη
  7. Θα πρέπει να δείτε διαγνωστική έξοδο που περιέχει αρκετές φυσικές μετρήσεις ακολουθούμενες από ενδείξεις θερμοκρασίας - κάθε υποδοχή αισθητήρα σε μία γραμμή. Εάν ο αριθμός αισθητήρων διαφέρει όταν ενεργοποιείται ξεχωριστά και όταν είναι όλοι ενεργοποιημένοι μαζί), διαγνωστικοί βρόχοι μέχρι να επιλυθούν. Αλλά μην ανησυχείτε, επίσης το διαγνωστικό παρέχει μετρήσεις θερμοκρασίας!

Δείτε την σχολιασμένη εικόνα για περισσότερες λεπτομέρειες σχετικά με τη διαγνωστική έξοδο.

Βήμα 8: Συμπέρασμα

Έχω μια ισχυρή αίσθηση ότι οι αστοχίες του δικτύου αισθητήρων μου προκλήθηκαν από την υψηλή χωρητικότητα της μεγάλης καλωδίωσής μου - περίπου 10 m καλωδίου LIYY 314 (3 × 0, 14 mm²) για κάθε αισθητήρα. Τα πειράματά μου έδειξαν ότι η επικοινωνία διακόπτεται εάν υπάρχει χωρητικότητα γύρω ή μεγαλύτερη από 0,01 μF μεταξύ διαύλου 1 καλωδίου και γείωσης, νομίζω ότι επειδή η αντίσταση έλξης 4k7 δεν είναι σε θέση να τραβήξει το δίαυλο στα + 5 V αρκετά γρήγορα για να συμμορφωθεί με τα όρια πρωτοκόλλου Το

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

Αλλά και ο 5ος αισθητήρας (28: ff: f2: 41: 51: 17: 04: 31) φαίνεται αρκετά άρρωστος (ίσως λάθος συγκόλληση), οπότε μπορώ να ερευνήσω περαιτέρω!

Συνιστάται: