Aquarium project 5 - v1.1

Σύστημα ελέγχου θερμοκρασίας και ρύθμισης στροφών ανεμιστήρα PWM (4pin)

Η ανάγκη ελέγχου της ροής ενός set από ανεμιστήρες που έβαλα σε ένα από τα ενυδρεία μου με οδήγησε στο σχεδιασμό και υλοποίηση του παρόντος project.

Σκοπός ήταν να μπορέσω βάσει της θερμοκρασίας του ενυδρείου όχι μόνο να ενεργοποιήσω τους ανεμιστήρες αλλά και να ρυθμίζω τη ροή τους αναλόγως με την αύξηση της θερμοκρασίας. Γι’ αυτό το λόγο αγοράστηκαν δύο ανεμιστήρες που έχουν 4 pin και οι οποίοι μου δίνουν μέσω των δύο πρώτων pin την τάση (12 Volt), στο τρίτο pin τις στροφές του ανεμιστήρα και στο τέταρτο τη δυνατότητα ρύθμισης των στροφών τους. Το τέταρτο αυτό pin ονομάζεται PWM (Pulse-Width Modulation) και λειτουργεί όταν συνδεθεί σε μια από τις κατάλληλες πόρτες του Arduino που υποστηρίζουν PWM.

Τα θετικά που έχουν οι PWM ανεμιστήρες είναι πως η στάθμη θορύβου κατά τη λειτουργία τους είναι χαμηλή  μια και οι maximum στροφές που μπορεί να φτάσουν είναι ~2000 rpm.  Σε αντίθεση, οι κανονικοί ανεμιστήρες μπορούν να φτάσουν σε υψηλότερες στροφές (~5000 rpm) δημιουργώντας θόρυβο κατά τη λειτουργία τους και ο μόνος τρόπος να μειώσεις τις στροφές τους είναι να τους τροφοδοτήσει κανείς με χαμηλότερη τάση λειτουργίας (από 4-12 Volts).

Επίσης, χρησιμοποιήθηκε και μια οθόνη LCD 16×2 I2C (16 χαρακτήρες, 2 γραμμών) προκειμένου να βλέπω τη μετρούμενη θερμοκρασία και τη λειτουργία των ανεμιστήρων.

Για το σύστημα αυτό χρησιμοποιήθηκε επίσης ένα Relay μονής επαφής γιατί οι ανεμιστήρες αυτοί (PWM) δεν σταματούν εντελώς ακόμα και στην ελάχιστη τιμή του PWM, αλλά συνεχίζουν να γυρίζουν με τις ελάχιστες στροφές (~800 rpm). Οπότε για να μην κάνω άσκοπη χρήση τους επέλεξα να τους σταματώ όταν η θερμοκρασία φτάσει σε επιυθμητό επίπεδο μέσω του Relay. 

Για τη μέτρηση της θερμοκρασίας επιλέχθηκε ένας ακροδέκτης DS18B20 με τρία pin, ο οποίος έχει πολύ μεγάλη ακρίβεια στις μετρήσεις του – μπορεί να μετρήσει μεταβολές θερμοκρασίες της τάξης των 0.0645 oC.

DS18B20

Το σύστημα που θα περιγράψω λειτουργεί ως εξής:

Έστω πως η επιθυμητή θερμοκρασία που θέλω να έχω στο ενυδρείο είναι κάτω από 25 oC.  Μόλις η θερμοκρασία ξεπεράσει τους 25.2 oC μπαίνουν σε λειτουργία οι ανεμιστήρες κλείνοντας το Relay επαφής με τις ελάχιστες στροφές τους. Μόλις η θερμοκρασία αυξηθεί και ξεπεράσει τους 25.5 oC τότε αυξάνουν οι στροφές τους δίνοντας μεγαλύτερη ροή αέρα προς την επιφάνεια του ενυδρείου. Αν η θερμοκρασία του περιβάλλοντος χώρου είναι μεγαλύτερη και η ροή αέρα δεν μπορεί να κρατήσει τη θερμοκρασία αυτή, μόλις η θερμοκρασία ξεπεράσει τους 26.5 oC τότε οι ανεμιστήρες αυξάνουν τις στροφές τους maximum. Αν και αυτή η ροή δεν είναι ικανή να κρατήσει τη επιθυμητή θερμοκρασία στο ενυδρείο τότε θα πρέπει να προμηθευτείτε μεγαλύτερης διαμέτρου ανεμιστήρες που να έχουν μεγαλύτερη ροή ή περισσότερους από αυτούς που έχετε. Τέλος αν η θερμοκρασία πέσει κάτω από την επιθυμητή των 25 oC τότε το Relay ανοίγει και σταματάη η τροφοδοσία τάσης στους ανεμιστήρες.

Η τάση των ανεμιστήρων περνάει μέσα από το Relay και συνδέεται στις θέσεις Common & NO (Normally Open) όπως θα δείτε και στο σχεδιάγραμμα της υλοποίησης του συστήματος παρακάτω.

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

// Conditions for Relay
    if(TempWater > 25.2) {      // Ρύθμιση της θερμοκρασίας στην οποία θα ξεκινήσουν να δουλεύουν οι ανεμιστήρες +0.2 oC. Θα πρέπει να είναι 0.2 oC μεγαλύτερη από την επιθυμητή λόγω της υστέρησης εκκίνησης.
    …
} else
    if(TempWater < 25.0) {     
// Ρύθμιση της θερμοκρασίας στην οποία θα σταματούν να δουλεύουν οι ανεμιστήρες  χωρίς την υστέρηση εκκίνησης.
    …

// Conditions for Fan
    if(TempWater > 26.5) {
     // Ρύθμιση της θερμοκρασίας όπου οι ανεμιστήρες θα λειτουργούν στις μέγιστες στροφές
      PWMvalue = 255;     // Ρύθμιση των στροφών (0 ελάχιστες, 255 μέγιστες)

    if((TempWater > 25.5) && (TempWater < 26.5)){
     // Ρύθμιση του εύρους της θερμοκρασίας όπου οι ανεμιστήρες θα λειτουργούν σε μέτριες στροφές
      PWMvalue = 200;     // Ρύθμιση των στροφών (0 ελάχιστες, 255 μέγιστες)

    if(TempWater < 25.5){
     // Ρύθμιση της θερμοκρασίας όπου οι ανεμιστήρες θα λειτουργούν στις ελάχιστεςστροφές
      PWMvalue = 0;     // Ρύθμιση των στροφών (0 ελάχιστες, 255 μέγιστες)

 

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

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

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

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

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

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

Αν σας άρεσε, μοιραστείτε το!

Leave a Reply