Πολυκαναλικός θερμοστάτης στο arduino uno. Ανεμιστήρας χρησιμοποιώντας arduino, το οποίο εξαρτάται από τη θερμοκρασία. Στοιχεία ενός ελεγκτή PID

Σχηματικό διάγραμμα ενός αυτοσχέδιου θερμοστάτη τεσσάρων καναλιών με ένδειξη θερμοκρασίας, κατασκευασμένο με βάση το Arduino UNO, LM325 και με οθόνη 1602A, σας επιτρέπει να ελέγχετε τέσσερα ξεχωριστά φορτία.

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

Η λειτουργία ενός θερμομέτρου τεσσάρων καναλιών και το πρόγραμμά του περιγράφονται με μεγάλη λεπτομέρεια στο προηγούμενο άρθρο (L.1), οπότε εδώ θα μιλήσουμε μόνο για αλλαγές για την υλοποίηση της λειτουργίας ενός θερμοστάτη τεσσάρων καναλιών.

διάγραμμα κυκλώματος

Το σχηματικό διάγραμμα φαίνεται στο Σχ.1.

Ρύζι. 1. Σχηματικό διάγραμμα θερμοστάτη στο Arduino UNO, LM325 με οθόνη 1602A.

Σε αντίθεση με το πρώτο κύκλωμα (L.1), υπάρχουν τέσσερις διακόπτες τρανζίστορ φορτωμένοι στις περιελίξεις του ρελέ K1-K4, οι οποίοι ελέγχουν τέσσερις διαφορετικές συσκευές θέρμανσης (H1-H4). Οι εντολές ελέγχου για αυτά τα πλήκτρα προέρχονται από τέσσερις ψηφιακές θύρες D9-D12 της πλακέτας ARDUINO UNO.

Πρόγραμμα

Το πρόγραμμα φαίνεται στον πίνακα 1.

Τραπέζι 1.

Η πρώτη διαφορά είναι ότι οι θύρες είναι ρυθμισμένες να ελέγχουν τους θερμαντήρες. Αυτές είναι οι θύρες D9-D12, ορίζονται εδώ:

pinMode(12, OUTPUT);

pinMode(11, OUTPUT);

pinMode(10, OUTPUT);

pinMode(9, OUTPUT);

Μπορείτε να επιλέξετε άλλες ελεύθερες ψηφιακές θύρες, αφού συνδέσετε την ένδειξη, υπάρχουν ακόμα οι D8 και D13. Αλλά ο συγγραφέας επέλεξε αυτά: D9, D10, D11, D12. Η δεύτερη διαφορά είναι ότι η λειτουργία σύγκρισης if χρησιμοποιείται για τον έλεγχο των θερμαντήρων. Στις γραμμές:

εάν (θερμ< -15)digitalWrite(12, HIGH);

if(temp > -15)digitalWrite(12, LOW);

εάν (τέμπι< 1)digitalWrite(11, HIGH);

if(tempi > ​​1)digitalWrite(11, LOW);

εάν (θερμοκρασία 2< 20)digitalWrite(10, HIGH);

if(temp2 > 20)digitalWrite(10, LOW);

εάν (θερμοκρασία 3< 10)digitalWrite(9, HIGH);

if(temp3 > 10)digitalWrite(9, LOW);

Αυτές οι γραμμές υποδεικνύουν σε ποια θερμοκρασία, ποιο λογικό επίπεδο πρέπει να είναι στην αντίστοιχη θύρα. Για παράδειγμα, εάν η θερμοκρασία του πρώτου αισθητήρα (T1) είναι κάτω από -15°C, θα υπάρχει μια λογική μονάδα στη θύρα D12. Όταν η θερμοκρασία του δεύτερου αισθητήρα (T2) είναι κάτω από 1°C, η θύρα D11 θα είναι μια λογική μονάδα.

Όταν η θερμοκρασία του τρίτου αισθητήρα (TS) είναι κάτω από 20°C, η θύρα D10 θα είναι μια λογική μονάδα. Όταν η θερμοκρασία του τέταρτου αισθητήρα (T4) είναι κάτω από 10°C, η θύρα D9 θα είναι μια λογική μονάδα. Φυσικά, οι θερμοκρασίες μπορούν να ρυθμιστούν και εντελώς διαφορετικές - όσες χρειάζονται για μια συγκεκριμένη εφαρμογή αυτής της συσκευής.

Επιπλέον, ήδη στην τελική συσκευή, εάν είναι απαραίτητο, είναι εύκολο να αλλάξουν. Για να το κάνετε αυτό, πρέπει να συνδέσετε έναν προσωπικό υπολογιστή στη θύρα USB της πλακέτας ARDUINO UNO και να κάνετε λήψη ενός προγράμματος με άλλα δεδομένα σχετικά με τα όρια θερμοκρασίας. Κατ 'αρχήν, για το σκοπό αυτό, μπορεί να παρέχεται υποδοχή USB στο σώμα της τελικής συσκευής.

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

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

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

Λεπτομέριες

Οποιοσδήποτε ηλεκτρομαγνητικός ηλεκτρονόμος K1-K4 μπορεί να χρησιμοποιηθεί με περιελίξεις 12V και επαφές αρκετά ισχυρές για τον έλεγχο συγκεκριμένων θερμαντήρων.

Τα στάδια εξόδου μπορούν επίσης να γίνουν σύμφωνα με άλλα σχήματα, για παράδειγμα, σε οπτο-μίστορ. Σε αυτή την περίπτωση, οι αντίστοιχες θύρες της πλακέτας ARDUINO UNO συνδέονται, μέσω αντιστάσεων περιορισμού ρεύματος, LED οπτο-simistors ή των λεγόμενων «ρελέ στερεάς κατάστασης».

Karavkin V. RK-08-17.

Βιβλιογραφία: 1. Karavkin V. - Θερμόμετρο τεσσάρων καναλιών στο ARDUINO UNO, RK-06-17.

Το κύριο καθήκον του ελεγκτή του ψυγείου είναι να διατηρεί τη ρυθμισμένη θερμοκρασία στο θάλαμο. Αυτό θα γίνει από τον ελεγκτή θερμοκρασίας αλλάζοντας την ηλεκτρική ισχύ στη μονάδα Peltier.

Στο προηγούμενο μάθημα, αναπτύξαμε έναν ρυθμιστή ισχύος. Η σχέση μεταξύ ισχύος και ρυθμιστών θερμοκρασίας μοιάζει με αυτό.

  • Ο ελεγκτής θερμοκρασίας λαμβάνει τη μετρούμενη θερμοκρασία, τη συγκρίνει με τη ρυθμισμένη θερμοκρασία και υπολογίζει τη ρυθμισμένη τιμή ισχύος για τον ελεγκτή ισχύος.
  • Ο ρυθμιστής ισχύος παράγει ένα PWM που αντιστοιχεί στη δεδομένη ισχύ.

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

Ελεγκτής PID.

Στο προηγούμενο μάθημα, μίλησα λεπτομερώς για . Τόνισε τα δυνατά και τα αδύνατα σημεία του.

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

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

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

Τα ακόλουθα εμπλέκονται στο σχηματισμό του σήματος εξόδου του ελεγκτή PID:

  • Αναλογικά- η τιμή είναι ανάλογη με το σφάλμα αναντιστοιχίας (η διαφορά μεταξύ του συνόλου και των πραγματικών τιμών της ελεγχόμενης παραμέτρου).
  • Ενσωμάτωση συστατικούείναι το αναπόσπαστο σφάλμα ασυμφωνίας.
  • Διαφοροποιητικό συστατικόείναι η παράγωγος του σφάλματος ασυμφωνίας.

Η μαθηματική μορφή του νόμου του ελεγκτή PID έχει τη μορφή:

o(t) = P + I + D = K p e(t) + K i ∫e(t)dt + K d de(t)/dt

  • o(t) – σήμα εξόδου.
  • Το P είναι η αναλογική συνιστώσα.
  • I - στοιχείο ενσωμάτωσης.
  • D - διαφοροποιητικό στοιχείο.
  • Kp, Ki, Kd - συντελεστές αναλογικών, ολοκλήρωσης, διαφοροποιητικών συνδέσμων.
  • Το e(t) είναι το σφάλμα αναντιστοιχίας.

Σε σχηματική μορφή, ο ελεγκτής PID μπορεί να αναπαρασταθεί ως εξής.

Το μπλοκ διάγραμμα του ρυθμιστή τάσης PID U μοιάζει με αυτό.

  • Η μετρούμενη τάση Ureal(t) αφαιρείται από το δεδομένο Uset.
  • Το προκύπτον σφάλμα ασυμφωνίας e(t) τροφοδοτείται στους αναλογικούς, ολοκλήρωσης και διαφοροποιητικούς συνδέσμους.
  • Ως αποτέλεσμα του αθροίσματος των συνιστωσών, προκύπτει η δράση ελέγχου o(t), η οποία εφαρμόζεται στο στοιχείο ελέγχου.

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

Εξαρτήματα του ελεγκτή PID.

Πάλι. Το σήμα εξόδου του ελεγκτή PID είναι το άθροισμα τριών στοιχείων:

  • αναλογικά;
  • ενσωμάτωση?
  • διαφοροποιώντας.

αναλογική συνιστώσα.

P(t) = K p * e(t)

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

Το αναλογικό στοιχείο δεν είναι σε θέση να αντισταθμίσει πλήρως το σφάλμα. Αυτό φαίνεται από τον τύπο. Το σήμα εξόδου είναι Kp φορές μεγαλύτερο από το σφάλμα. Εάν το σφάλμα ασυμφωνίας είναι 0, τότε το σήμα εξόδου του ελεγκτή είναι 0. Και τότε δεν υπάρχει τίποτα για αντιστάθμιση.

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

Τα μειονεκτήματα των αναλογικών ρυθμιστών περιλαμβάνουν:

  • η παρουσία σφάλματος στατικού ελέγχου.
  • χαμηλή σταθερότητα με αυξανόμενο συντελεστή.

Υπάρχει ένα σημαντικό πλεονέκτημα:

  • Υψηλή ταχύτητα ρύθμισης. Η απόκριση ενός αναλογικού ελεγκτή σε ένα ακόλουθο σφάλμα περιορίζεται μόνο από το χρόνο δειγματοληψίας του συστήματος.

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

Το κύριο καθήκον του αναλογικού στοιχείου στον ελεγκτή PID είναι να αυξήσει την ταχύτητα.

ενσωμάτωση συστατικού.

I(t) = K i ∫e(t)dt

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

I(t) = I(t -1) + K i * e(t)

  • Το I(t-1) είναι η τιμή του I στο προηγούμενο σημείο δειγματοληψίας χρόνου.

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

Τα μειονεκτήματα ενός ολοκληρωμένου ρυθμιστή περιλαμβάνουν:

  • χαμηλή ταχύτητα;
  • μέση σταθερότητα.

Αξιοπρέπεια:

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

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

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

διαφοροποιητικό συστατικό.

D(t) = Kdde(t)/dt

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

Λαμβάνοντας υπόψη τη χρονική διακριτικότητα του ελεγκτή, το διαφοροποιητικό στοιχείο μπορεί να υπολογιστεί ως εξής:

D(t) = K d * (e(t) - e(t -1))

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

Δεν υπάρχουν ρυθμιστικές αρχές που να αποτελούνται από έναν μόνο διαφοροποιητικό σύνδεσμο.

Το κύριο καθήκον του διαφοροποιητικού συνδέσμου στον ελεγκτή PID είναι να αυξήσει τη σταθερότητα.

Ρύθμιση του ελεγκτή PID.

Η ποιότητα της ρύθμισης των ελεγκτών PID εξαρτάται σε μεγάλο βαθμό από το πόσο βέλτιστα επιλέγονται οι συντελεστές. Οι συντελεστές του ελεγκτή PID προσδιορίζονται στην πράξη σε ένα σύστημα με πραγματικό αντικείμενο με επιλογή. Υπάρχουν διαφορετικές μέθοδοι συντονισμού. Θα μιλήσω μόνο για γενικές αρχές.

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

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

Στο προηγούμενο μάθημα, όταν σχεδιάζαμε έναν ρυθμιστή ισχύος, μας ενδιέφερε πρωτίστως η ακρίβεια και η σταθερότητα. Και μάλιστα μειώσαμε τεχνητά την ταχύτητα. Ορισμένοι ρυθμιστές λειτουργούν σε συνθήκες σημαντικής παρεμβολής και η σταθερότητα είναι πιο σημαντική γι 'αυτούς, άλλοι απαιτούν υψηλή ταχύτητα ακόμη και σε βάρος της ακρίβειας. Τα κριτήρια βελτιστοποίησης μπορεί να είναι διαφορετικά. Γενικά, οι ελεγκτές PID είναι ρυθμισμένοι ώστε να διασφαλίζουν ότι όλα τα κριτήρια ποιότητας ελέγχου βρίσκονται σε υψηλό επίπεδο.

Τα στοιχεία του ελεγκτή PID διαμορφώνονται χωριστά.

  • Οι σύνδεσμοι ολοκλήρωσης και διαφοροποίησης απενεργοποιούνται και επιλέγεται ο συντελεστής της αναλογικής ζεύξης. Εάν ο ρυθμιστής ενσωματώνεται αναλογικά (δεν υπάρχει διαφοροποιητικός σύνδεσμος), τότε επιτυγχάνεται πλήρης απουσία ταλαντώσεων στην μεταβατική απόκριση. Όταν ο ρυθμιστής έχει ρυθμιστεί σε υψηλή ταχύτητα, ενδέχεται να παραμείνουν διακυμάνσεις. Θα προσπαθήσουν να αντισταθμίσουν τον διαφοροποιητικό σύνδεσμο.
  • Ο διαφοριστής είναι συνδεδεμένος. Ο συντελεστής του επιδιώκει να αφαιρέσει τις διακυμάνσεις στην παράμετρο ρύθμισης. Εάν αποτύχει, τότε μειώστε τον αναλογικό συντελεστή.
  • Λόγω του συνδέσμου ενσωμάτωσης, το υπολειπόμενο σφάλμα αναντιστοιχίας αφαιρείται.

Ο συντονισμός του ελεγκτή PID είναι επαναληπτικός. Εκείνοι. Τα σημεία επιλογής των συντελεστών μπορούν να επαναληφθούν πολλές φορές μέχρι να επιτευχθεί ένα αποδεκτό αποτέλεσμα.

Λόγω της υψηλής απόδοσης και της ευελιξίας τους, οι ελεγκτές PID χρησιμοποιούνται ευρέως σε συστήματα βιομηχανικού αυτοματισμού.

Στο επόμενο μάθημα, θα αναπτύξουμε έναν ελεγκτή θερμοκρασίας PID.

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

Πριν από λίγους μήνες, διάβασα μια σειρά από άρθρα για το Arduino και ενδιαφέρθηκα πολύ για αυτήν τη συσκευή και σύντομα αποφάσισα να την αγοράσω. Σημειωτέον ότι απέχω πολύ από τη μικροηλεκτρονική, οπότε η πλακέτα με τράβηξε, πρώτα απ' όλα, από τη σχετική ευκολία ανάπτυξής της. Έχοντας μπλέξει με τα LED και τα "Hello world", ήθελα να κάνω κάτι πρακτικό, ταυτόχρονα να γνωρίσω τις δυνατότητες του Arduino με περισσότερες λεπτομέρειες. Έχοντας κατά νου το ασυνήθιστα ζεστό καλοκαίρι του 2010, προέκυψε η ιδέα να συναρμολογηθεί ένας πιο κρύος ελεγκτής ταχύτητας ανάλογα με τη θερμοκρασία με την εμφάνιση όλων των σχετικών χαρακτηριστικών στην οθόνη LCD. Ελπίζω ότι αυτό το σχέδιο ή οι παραλλαγές του θα είναι χρήσιμες σε κάποιον, γι 'αυτό αποφάσισα να δημοσιεύσω τα σκίτσα μου.

Για αυτό το σχήμα χρειαζόμαστε:

  • Ο ίδιος ο πίνακας Arduinoή ισοδύναμο;
  • Ψωμί σανίδαγια τη συναρμολόγηση εξαρτημάτων κυκλώματος.
  • Οθόνη WH1601A-NGG-CT με ενεργοποιημένο το trimmer 20 kOhmή παρόμοιο;
  • αντιστάσεις - 220 ohm, 10 kOhm, 4,7 kOhm;
  • διπολικό τρανζίστορ SS8050Dή παρόμοιο με αυτό?
  • Ψηφιακός αισθητήρας θερμοκρασίας DS18B20 ;
  • Δίοδος 1N4148ή ισοδύναμο;
  • Ανεμιστήραςαξονική τριών συρμάτων (για 12V), για παράδειγμα - υπολογιστής.
  • υποδοχή υποδοχής τροφή 2,1/5,5 χλστ.

Το ψυγείο του υπολογιστή έχει τρία καλώδια, δύο από τα οποία - το κόκκινο (+12V) και το μαύρο (GND) χρησιμοποιούνται για τροφοδοσία και το τρίτο (κίτρινο) συνδέεται με ένα στροφόμετρο που είναι κατασκευασμένο σε στοιχείο Hall. Δυστυχώς, τα 5 V από την πλακέτα σαφώς δεν μας αρκούν, αλλά 6 ψηφιακές έξοδοι Arduino μπορούν να λειτουργήσουν σε λειτουργία PWM (σημειώνονται στην ίδια την πλακέτα με λευκά τετράγωνα ή με τα γράμματα PWM), ώστε να μπορούμε να ρυθμίσουμε το σήμα από το πλακέτα στο ρελέ που θα είναι υπεύθυνο για την αλλαγή της τάσης που παρέχεται στον ανεμιστήρα.

Θα λάβουμε πληροφορίες για τις στροφές από το τρίτο καλώδιο από το στροφόμετρο, χρησιμοποιώντας μια τροποποιημένη μέθοδο που βασίζεται στην υλοποίηση διακόπτει, τα οποία στα περισσότερα Arduinos μπορούν να σταλούν στις ψηφιακές ακίδες 2 (διακοπή 0) και 3 (διακοπή 1). Παρεμπιπτόντως, το Arduino Mega διαθέτει 4 επιπλέον καρφίτσες με δυνατότητα λήψης διακοπών.

Τώρα πρέπει να τοποθετήσουμε ψηφιακός αισθητήρας θερμοκρασίας, τα δεδομένα του οποίου θα χρησιμοποιήσουμε για να ρυθμίσουμε την τάση που παρέχεται στην ψηφιακή έξοδο PWM και επομένως να «ανοίξουμε» το κανάλι τάσης του ανεμιστήρα. Οι αισθητήρες Dallas έχουν τη δική τους βιβλιοθήκη Arduino - DallasTemperature, την οποία θα συνδέσουμε αργότερα στο σκίτσο. Η βιβλιοθήκη πρέπει να αποσυσκευαστεί στον κατάλογο arduino-0018/libraries/.

Το τελευταίο έμεινε - συνδέστε την οθόνη LCD, όπου θα εμφανίσουμε όλες τις τρέχουσες πληροφορίες σχετικά με τη θερμοκρασία και την ταχύτητα του ανεμιστήρα. Εφόσον χρησιμοποίησα την οθόνη WH1601A για συναρμολόγηση, ενδέχεται να υπάρχουν γνωστά προβλήματα εμφάνισης συμβολοσειρών. Για να τα εξαλείψουμε, θα χρησιμοποιήσουμε τη βιβλιοθήκη LiquidCrystalRus, η οποία πρέπει επίσης να αποσυμπιεστεί στον κατάλογο arduino-0018/libraries/.

//Συμπεριλάβετε τη βιβλιοθήκη αισθητήρων θερμοκρασίας#περιλαμβάνω //Συμπεριλάβετε τη βιβλιοθήκη LCD#περιλαμβάνω #define Power Pin 9 // pin για τον έλεγχο της ισχύος του ανεμιστήρα#define HallSensor 2 // καρφίτσα για αισθητήρα ταχύτητας ανεμιστήρα (διακοπή)#define TempPin 7 // pin για αισθητήρα θερμοκρασίας LiquidCrystalRus lcd(12, 11, 10, 6, 5, 4, 3); //Σύνδεση με αισθητήρα θερμοκρασίας LCD Dallas. int NbTopsFan, Calc, fadeValue; //ακέραιες μεταβλητές για υπολογισμούς float ιδιοσυγκρασία? //πραγματική μεταβλητή για την αποθήκευση της θερμοκρασίας typedef struct( // Εισαγωγή νέου τύπου μεταβλητής για οπαδούς char fantype? ανυπόγραφο int fandiv? )fanspec; //Πίνακας μεταβλητών νέου τύπου fanspec fanspace=((0,1),(1,2),(2,8)); //Μεταβλητή υπεύθυνη για την επιλογή του τύπου αισθητήρα ανεμιστήρα (1 - μονοπολικός αισθητήρας Hall, 2 - διπολικός αισθητήρας Hall)ανεμιστήρας char = 2; // Αυτή η συνάρτηση θα καλείται σε κάθε διακοπή void rpm() ( NbTopsFan++; ) // Λειτουργία για τον υπολογισμό της εφαρμοζόμενης τάσης σε μια ψηφιακή ακίδα με PWM void temp() ( fadeValue = min(int(temper*7),255); // Πολλαπλασιάστε τη θερμοκρασία με τον συντελεστή, // πάρτε έναν ακέραιο από το γινόμενο } // Επειδή η μέγιστη τιμή PWM είναι 255, τότε δεν έχει νόημα να εφαρμόζεται πλέον - παίρνουμε τουλάχιστον δύοκενός εγκατάσταση()(tempSensor.begin(TempPin); //Εκκινήστε τον αισθητήρα θερμοκρασίας lcd.begin(16, 2); //Ρύθμιση χαρακτηριστικών LCD lcd.setDRAMModel(LCD_DRAM_WH1601); //Και τύπος οθόνης pinMode (HallSensor, INPUT ); // Ρύθμιση pin ώστε να λαμβάνει διακοπές attachInterrupt (0, rpm, RISING ); //Δεσμεύουμε τον αριθμό διακοπής 0 στη συνάρτησή μας και θα υπολογίζεται κάθε φορά που αλλάζει το σήμα) κενό βρόχος() ( temper = tempSensor.getTemperature(); // Λήψη θερμοκρασίας temp(); // Υπολογίστε την εφαρμοζόμενη τάση στο PWM analogWrite(PowerPin, fadeValue); // Τροφοδοτήστε το NbTopsFan = 0; // Μηδενίστε τη μεταβλητή που περιέχει τις στροφέςκαθυστέρηση (1000); //Περιμένετε 1 δευτερόλεπτο Υπολογισμός = ((NbTopsFan * 60)/fanspace.fandiv); //Υπολογισμός RPM ανά 60 δευτερόλεπτα διαιρεμένο με τον πολλαπλασιαστή ανεμιστήρα lcd.print(Υπολογισμός, DEC); //Εξαγωγή της υπολογιζόμενης τιμής σε δεκαδική μορφή lcd.print("rpm-"); εκτύπωση lcd (ιδιοσυγκρασία); //Θερμοκρασία εξόδου lcd.home(); )

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

Πώς ξεκίνησαν όλα

Πρώτα από όλα, θέλω να πω ότι δεν είμαι καθόλου προγραμματιστής και δεν έχω ασχοληθεί ποτέ με πραγματικό μικροελεγκτή. Η πρώτη μου γνωριμία με το AVR MK (και το MK γενικότερα) ήταν πίσω στο γυμνάσιο, όταν ήθελα να μάθω πώς λειτουργεί ακόμα αυτό το μυστηριώδες πράγμα. Διάβασα αρκετά άρθρα και από τότε έχω μόνο θραύσματα στη μνήμη μου που θα μπορούσαν να περιγραφούν με δύο μόνο λέξεις - DDR και PORT - εδώ τελείωσαν οι γνώσεις μου. Μετά ήταν το πανεπιστήμιο, το 5ο μάθημα - "Προγραμματισμός μικροελεγκτών" όπου όλοι γνωριστήκαμε με το MSC51 σε εικονικό περιβάλλον. Υπήρχαν ήδη διακοπές, και χρονόμετρα, και όλα τα άλλα. Λοιπόν, με τέτοιες αποσκευές γνώσεων, έφτασα στο πρόβλημα. Ας τελειώσουμε με αυτό το αυτοβιογραφικό σημείωμα και ας προχωρήσουμε στο πιο ενδιαφέρον κομμάτι.

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

Αυτό το πρόβλημα λύθηκε πολύ απλά - με έναν αισθητήρα OTC (Outside Temperature Compensation), ο οποίος συνδέεται με τον λέβητα και του επιτρέπει να ρυθμίζει αυτόματα τη θερμοκρασία του ψυκτικού ανάλογα με την εξωτερική θερμοκρασία. Το πρόβλημα φαινόταν να έχει λυθεί, αλλά διαβάζοντας το εγχειρίδιο σέρβις για τον λέβητα (Ferolli Domiproject C24D) συνέτριψε γρήγορα την ελπίδα μου - η σύνδεση εξωτερικού αισθητήρα θερμοκρασίας δεν προβλέπεται σε αυτό το μοντέλο. Ολα? Ολα. Και τώρα, πιθανότατα, θα μπορούσε να τελειώσει, αλλά το καλοκαίρι στο λέβητα κατά τη διάρκεια μιας καταιγίδας, η πλακέτα ελέγχου καίγεται με τρόπο που είναι ακόμα ακατανόητος για μένα, και μιλώντας με τον σέρβις (η πλακέτα επισκευάστηκε αργότερα), ρώτησε αν ήταν δυνατή η σύνδεση OTC στον λέβητα μου; Μου απάντησε ότι συνδέονταν χρησιμοποιώντας εξωτερικούς θερμοστάτες. Έμεινε στη μνήμη μου, αλλά δεν επικεντρώθηκα πραγματικά σε αυτό μέχρι την έναρξη του κρύου καιρού και μετά το ίδιο πρόβλημα.

Ξεφυλλίζοντας το ίδιο εγχειρίδιο σέρβις, αλλά για να δω πώς συνδέεται ο θερμοστάτης, παρατήρησα ότι ο "ρυθμιστής OpenTherm" είναι συνδεδεμένος στους ίδιους ακροδέκτες. Τότε κατάλαβα - ορίστε! Μια αναζήτηση στο Google για το "OpenTherm Arduino" με αναστάτωσε ξανά - τίποτα ιδιαίτερα λογικό. Υπήρχε μια οθόνη μηνυμάτων, αλλά δεν είναι αυτό - δεν χρειάζεται καν να ακούσω, δεν έχω τίποτα να κάνω - χρειάζομαι θερμοστάτη.

Ας φτιάξουμε πρώτα κάτι απλό στο Arduino. ΣΕ κεφάλαιο 12έχουμε ήδη εφεύρει θερμοστάτες με αμιγώς αναλογικά εξαρτήματα. Ας δούμε τώρα πώς μπορείτε να εμπλέξετε την ψηφιακή τεχνολογία σε αυτή τη χρήσιμη επιχείρηση.

Έχουμε ήδη αναφέρει (βλ. κεφάλαιο 18) ότι οι ελεγκτές AVR περιλαμβάνουν ADC πολλαπλών καναλιών 10 bit. Στις πλακέτες Arduino, οι ακίδες του επισημαίνονται ειδικά ως αναλογικές είσοδοι (γράμμα ΕΝΑμε αριθμούς από μηδέν έως πέντε). Σημειώστε ότι μπορούν να χρησιμοποιηθούν και ως συνηθισμένες ψηφιακές με αριθμούς από το 14 έως το 18 και θα συνεχίσουμε να τις χρησιμοποιούμε ως τέτοιες. Θα χρησιμοποιήσουμε μία από αυτές τις εισόδους για να μετρήσουμε τη θερμοκρασία και θα ελέγξουμε τη σύνδεση φορτίου από μία από τις ψηφιακές εξόδους.

Συνολικά χρειαζόμαστε:

□ Πλακέτα Arduino Uno (οποιαδήποτε άλλη είναι καλή).

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

□ "Amperke" B57164-K 103-J με ονομαστική αντίσταση 10 kOhm στους 25 ° C - είναι τα χαρακτηριστικά του που δίνονται στο κεφάλαιο 13ως απεικόνιση των ιδιοτήτων των θερμίστορ.

□ μεταβλητή αντίσταση 10 kΩ, σταθερή αντίσταση 620 ohm;

□ εκτελεστικό ρελέ - ηλεκτρομαγνητικό (απαιτείται με διακόπτη τρανζίστορ ενίσχυσης, βλέπε παρακάτω) ή στερεάς κατάστασης.

Στην πώληση υπάρχουν μονάδες βασισμένες σε ηλεκτρομαγνητικά ρελέ 5 volt, ειδικά προσαρμοσμένες για έλεγχο από τις εξόδους Arduino. Τα ίδια τα ηλεκτρομαγνητικά ρελέ απαιτούν ένα αρκετά μεγάλο ρεύμα ελέγχου (και όσο πιο ισχυρό είναι το ρελέ, τόσο πιο ισχυρό είναι - μόνο τα ρελέ καλαμιού με τη χαμηλότερη κατανάλωση μπορούν να λειτουργήσουν απευθείας από τη λογική), επομένως, όλες αυτές οι μονάδες ρελέ πρέπει να έχουν ένα τρανζίστορ ενίσχυσης διακόπτης. Για παράδειγμα, η Amperka πουλά μια τέτοια μονάδα που βασίζεται στο ρελέ HLS8L‑DC5V‑S‑C. Εάν δεν είστε ικανοποιημένοι με το ηλεκτρομαγνητικό ρελέ και προσπαθείτε για τη μέγιστη απλότητα του κυκλώματος, τότε μπορείτε να αναζητήσετε ρελέ στερεάς κατάστασης - κατάλληλα, για παράδειγμα, CX240D5R από την Crydom ή παρόμοια με τάση απόκρισης 3- 15 V. Έχουν ρεύμα ελέγχου περίπου 15 mA στα 5 volt ανά είσοδο, το οποίο είναι αποδεκτό για AVR, επειδή η είσοδος ελέγχου τους μπορεί να συνδεθεί απευθείας στον ψηφιακό ακροδέκτη Arduino. Είναι αλήθεια ότι σε τάση 220 βολτ, το CX240D5R δεν μπορεί να αλλάξει φορτίο με ισχύ μεγαλύτερη από ένα κιλοβάτ, αλλά δεν χρειαζόμαστε περισσότερα σε αυτήν την εργασία.

Το κύκλωμα θερμοστάτη στο Arduino Uno φαίνεται στην εικ. 21.2.

Ρύζι. 21.2. Κύκλωμα θερμοστάτη ενεργοποιημένο Arduino Uno

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

Οι τιμές της αντίστασης ταιριάζουν με το καθορισμένο θερμίστορ B57164-K, με ονομαστική τιμή 10 kΩ στους 25 °C (103-J). Σύμφωνα με το πρόγραμμα, το ρελέ θα λειτουργεί κοντά στην τιμή στην έξοδο ADC, ίση με 500. Αυτή είναι περίπου η μέση του εύρους των 10 bit (όλη η κλίμακα είναι 1024 διαβαθμίσεις), δηλαδή, αυτή η τιμή θα οριστεί όταν οι άνω και κάτω αντιστάσεις είναι περίπου ίσες σε σχέση με την είσοδο AO (η τάση σε αυτήν την είσοδο θα είναι τότε περίπου 2,5 volt).

Σημειώστε ότι και οι δύο λειτουργίες ανμην τελειώνετε με τα συνηθισμένα αλλού. Για να αποφευχθεί η φλυαρία, έχει εισαχθεί μια υστέρηση στο πρόγραμμα: το ρελέ ανάβει όταν ξεπεραστεί η τιμή του κωδικού 510 και σβήνει όταν πέσει στην τιμή 490. Στο διάστημα αυτό, θα διατηρήσει την προηγούμενη κατάσταση. Είκοσι μονάδες κώδικα (τι υπάρχει κεφάλαιο 12καλέσαμε νεκρή ζώνη) αντιστοιχούν σε περίπου 10 millivolt, δηλαδή, η υστέρηση σε θερμοκρασία στην περιοχή των 30–40 βαθμών θα είναι ελαφρώς μικρότερη από το ένα δέκατο της μοίρας (ελέγξτε μόνοι σας χρησιμοποιώντας τον Πίνακα 13.1 από κεφάλαιο 13).

Η ρύθμιση της θερμοκρασίας απόκρισης χρησιμοποιώντας την αντίσταση R2 με αυτές τις παραμέτρους είναι δυνατή στην περιοχή από περίπου 22 έως 96 °C. Φυσικά, στην πράξη, δεν απαιτείται τόσο μεγάλο εύρος προσαρμογής, επομένως είναι σκόπιμο να μειωθεί η τιμή του R2. Η τιμή του R1 επιλέγεται έτσι ώστε το R1 και η ονομαστική τιμή του R2 να αθροίζονται στην αντίσταση του θερμίστορ στη χαμηλότερη τιμή του επιθυμητού εύρους θερμοκρασίας (σύμφωνα με τον Πίνακα 13.1). Για πιο ακριβή εφαρμογή, μπορείτε να βαθμονομήσετε και να αλλάξετε τις τιμές κατωφλίου στο πρόγραμμα μετρώντας τη θερμοκρασία σταθερής κατάστασης με ένα συμβατικό θερμόμετρο.

Εάν χρησιμοποιείτε άλλους αισθητήρες σε αυτό το κύκλωμα, τότε μην ξεχνάτε το πρόσημο του συντελεστή θερμοκρασίας. Μια συνηθισμένη δίοδος ή ένα τρανζίστορ σε σύνδεση διόδου (όπως στα κυκλώματα από κεφάλαιο 13) έχουν επίσης αρνητική κλίση του χαρακτηριστικού, επομένως για αυτούς μόνο οι αριθμητικές τιμές του ορίου απόκρισης θα πρέπει να αλλάξουν στο πρόγραμμα. Αλλά αισθητήρες ημιαγωγών τύπου TMP35 (βλ. κεφάλαιο 13) ή απλά μεταλλικά θερμόμετρα αντίστασης (όπως στην κατασκευή του κεφάλαιο 17) έχουν θετικό συντελεστή θερμοκρασίας, επομένως οι συνθήκες απόκρισης θα πρέπει να αντιστραφούν. Και όχι απλώς αλλάξτε το "περισσότερο" σε "λιγότερο" και αντίστροφα, αλλά και την αναλογία των ορίων για υστέρηση - στη νέα κατάσταση, ο θερμαντήρας θα πρέπει να ενεργοποιηθεί εάν η τιμή είναι μικρότερη από το κατώτερο όριο και να απενεργοποιηθεί αν είναι μεγαλύτερο από το μεγαλύτερο.


Μπλουζα