Aquarium project 4 - v1.1
Ελεγκτής σταδιακής Ανατολής/Δύσης λαμπτήρων LED για το ενυδρείο

Έχοντας παρατηρήσει και ασχοληθεί αρκετά με το θέμα της Ανατολής-Δύσης σε λάμπες φθορίου και έχοντας κατανοήσει τον τρόπο λειτουργίας των dimmable ηλεκτρονικών ballast που οδηγούν τις λάμπες αυτές, σκέφτηκα να κάνω το ίδιο για φωτισμό LED. Έχοντας υπόψιν μου τις ταινίες LED και όλα τα υπέρ που έχουν σε σχέση με τους κλασσικούς λαμπτήρες φθορισμού έκατσα και ασχολήθηκα με το παρόν project.
Μερικά από τα υπέρ που έχουν οι ταινίες LED σε σχέση με τον παραδοσιακό φωτισμό φθορίου είναι:
1. Χαμηλότερο κόστος αγοράς λαμβάνοντας υπόψιν και το κόστος του ballast που χρειάζονται οι λάμπες φθορίου.
2. Μικρότερη κατανάλωση λειτουργίας.
3. Μεγαλύτερη διάρκεια ζωής.
4. Ευκολία στον τρόπο χρήσης τους.

Έχοντας ήδη φτιάξει στα προηγούμενα projects ελεγκτή για σταδιακή Ανατολή/Δύση και ελεγκτή λαμπτήρων LED για το moonlight, συνδύασα τα ίδια κομμάτια κώδικα προγραμματισμού, κάνοντας τις απαραίτητες αλλαγές στο κύκλωμά μου.

Τα εξαρτήματα που θα χρειαστεί κανείς για να υλοποιήσει αυτό το project είναι:
1. Χρονοδιακόπτης 220 Volt
2. Ταινία LED ικανή να φωτίσει το ενυδρείο που έχουμε
3. Τροφοδοτικό ικανό να μπορέσει να τροφοδοτήσει τα LED που χρησιμοποιούμε
4. Το κύκλωμα με τον ελεγκτή των LED

Ο χρονοδιακόπτης μπορεί να είναι είτε αναλογικός είτε ψηφιακός και χρειάζεται για να καθορίζει πότε θα ανάβουν και πότε θα σβήνουν τα φώτα του ενυδρείου.
Προσοχή χρειάζεται στην επιλογή του τροφοδοτικού για τα LED, το οποίο δεν θα πρέπει να είναι οριακό για τα LED που θα τροφοδοτήσουμε. Προτείνεται το τροφοδοτικό να είναι τουλάχιστον 30% μεγαλύτερο σε ισχύ από την ονομαστική ισχύ των LED. π.χ. αν θέλουμε να χρησιμοποιήσουμε 3 μέτρα από ταινία LED όπου είναι 14.4 Watt/m, δηλαδή συνολικής ισχύος 43.2 Watt (14.4 Watt * 3 m), το τροφοδοτικό που θα πρέπει να επιλέξουμε θα πρέπει να είναι τουλάχιστον 60 Watt. Με αυτόν τον τρόπο εξασφαλίζουμε μεγαλύτερο χρόνο ζωής του τροφοδοτικού μας και ασφάλεια στο άναμμα της ταινίας LED αφού το τροφοδοτικό θα ζεσταίνεται λιγότερο.
Ο ελεγκτής φωτεινότητας αποτελείται από ένα αναλογικό κύκλωμα το οποίο οδηγεί ένας microcontroller (Arduino). Αυτός είναι υπεύθυνος για τη σταδιακή αύξηση της φωτεινότητας των LED (σε προγραμματιζόμενο χρόνο), τη διατήρηση του φωτισμού (προγραμματιζόμενος χρόνος) και τη σταδιακή μείωση της φωτεινότητας (σε προγραμματιζόμενο χρόνο) ώστε να εξομοιώνονται οι συνθήκες ανατολής/δύσης. Οι τρεις αυτές χρονικές περίοδοι προγραμματίζονται από το χρήστη με τη βοήθεια ενός dip switch 8 θέσεων. Η πρώτη (1) θέση είναι για λειτουργία debug της συσκευής, όπου πραγματοποιείται ένας ολόκληρος κύκλος ανατολής/δύσης μέσα σε διάστημα λίγων δευτερολέπτων. Οι δύο επόμενες θέσεις (2-3) καθορίζουν το χρόνο της αύξησης της φωτεινότητας (15, 30, 45 ή 60 λεπτά), οι τρεις επόμενες θέσεις (4-6) το χρόνο διατήρησης πλήρους φωτισμού (6, 7, 8, 9, 10, 11, 12 ή 13 ώρες) και οι δύο τελευταίες θέσεις (7-8) το χρόνο της μείωσης της φωτεινότητας (15, 30, 45 ή 60 λεπτά).

Στους παρακάτω πίνακες φαίνονται αναλυτικά οι τιμές των θέσεων του dip switch και η λειτουργία τους.

dip switch
1
Λειτουργία
ON
DEBUG MODE
OFF
NORMAL MODE

dip switch
2
dip switch
3
Διάρκεια ανατολής
(min)
ON
ON
15
ON
OFF
30
OFF
ON
45
OFF
OFF
60

dip switch
4
dip switch
5
dip switch
6
Διάρκεια ημέρας
(hours)
ON
ON
ON
6
ON
ON
OFF
7
ON
OFF
ON
8
ON
OFF
OFF
9
OFF
ON
ON
10
OFF
ON
OFF
11
OFF
OFF
ON
12
OFF
OFF
OFF
13

dip switch
7
dip switch
8
Διάρκεια δύσης
(min)
ON
ON
15
ON
OFF
30
OFF
ON
45
OFF
OFF
60

Ας δούμε ένα παράδειγμα παραμετροποίησης όλου του εξοπλισμού για να καταλάβουμε καλύτερα πώς λειτουργεί. Έστω ότι θέλουμε να ξεκινήσει η ανατολή στο ενυδρείο μας στις 15:00 και να διαρκέσει 15 λεπτά. Κατόπιν να μείνουν τα φώτα αναμμένα σε πλήρη ισχύ για 8 ώρες. Και τέλος ο χρόνος δύσης να διαρκέσει για 30 λεπτά. Μετά από αυτό θέλουμε να κλείσουν τα φώτα.
Ορίζουμε πρώτα το χρονοδιακόπτη να ανοίγει στις 15:00 και να κλείνει στις 23:45 (15min+8h+30min=8h45min). Κατόπιν ρυθμίζουμε τις θέσεις στο dip switch ως εξής:

1
2
3
4
5
6
7
8
OFF
ON
ON
ON
OFF
ON
ON
OFF
NORMAL
MODE
15min
8hours
30min

Ενώ στο Project 1 χρησιμοποιήσαμε ένα BC547 το οποίο θα οδηγούσε την dimmable είσοδο του ηλεκτρονικού ballast, εδώ θα χρησιμοποιήσουμε ένα mosfet IRLB8743P N-Channel 150A 30V. Ο λόγος είναι πως σε αυτό το project από το mosfet θα περάσει όλο το ρεύμα που χρειάζεται για να τροφοδοτηθούν τα LED ενώ στο project 1 δεν περνούσε ρεύμα (παρά μόνο κάποια mA). Η επιλογή του mosfet έγινε με βάσει τη δυνατότητά του να μπορεί να δεχτεί πολλά Ampere χωρίς να ζεσταίνεται. Αυτό επιτυγχάνεται με την πολύ μικρή αντίσταση που έχει μεταξύ drain/source, η οποία είναι μόλις 3.2mΩ. Για όποιον ενδιαφέρεται μπορεί να διαβάσει το datasheet του συγκεκριμένου mosfet εδώ.

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

*Update 26/01/2017
Προστέθηκε ένα πράσινο λαμπάκι στο κύκλωμα που δείχνει πότε το κύκλωμα είναι στο ρεύμα (μέσω μιας αντίστασης 470Ω). Σχεδιάστηκε καλύτερα το κύκλωμα με τη χρήση του προγράμματος fritzing.



Aquarium project 4 - v2.0
Ελεγκτής σταδιακής Ανατολής/Δύσης λαμπτήρων LED για το ενυδρείο που δεν επηρεάζεται από διακοπές ρεύματος

Έχοντας υλοποιήσει το παραπάνω και κατόπιν συζήτησης με κάποιους φίλους σκέφτηκα να τροποποιήσω το κύκλωμα ώστε να μπορεί να λειτουργήσει χωρίς να επηρεάζεται από τις διακοπές ρεύματος. Μέχρι τώρα, όταν γινόταν διακοπή ρεύματος και το ρεύμα επανερχόταν, το κύκλωμα ξεκινούσε πάλι από την αρχή σαν να ήταν ένας νέος κύκλος Ανατολής/Δύσης. Έπρεπε οπότε να "γνωρίζει" το κύκλωμα τί ώρα είναι και αν ο κύκλος διακόπηκε λόγω διακοπής ρεύματος ή λόγω κανονικού ωραρίου. Για να το πετύχω αυτό πρόσθεσα στο κύκλωμά μου ένα Real Time Clock (DS3231 I2C RTC), το οποίο εφόσον του ορίσεις μια φορά την ημερομηνία/ώρα μπορεί και τη διατηρεί ακόμα και όταν δεν τροφοδοτείται με ρεύμα μέσω μιας μικρής μπαταρίας που βρίσκεται στην πλακέτα του, όπως φαίνεται στη διπλανή φωτογραφία.

DS3231 I2C RTC

Με τη χρήση του RTC πλέον δεν χρειάζεται η αγορά και χρήση του χρονοδιακόπτη 220V αφού το κύκλωμα δεν χρειάζεται να κλείσει ποτέ από το ρεύμα.
Επίσης, για να χωρέσει όλο το κύκλωμα σε μικρό κουτάκι κατασκευών αφαίρεσα το module με τα dip switches, αφήνοντας φυσικά τη δυνατότητα προγραμματισμού του χρόνου ανατολής και δύσης μέσα από το πρόγραμμα που θα φορτωθεί στον microcontroller.
Ένα ακόμα θέμα το οποίο με απασχόλησε ήταν η περίπτωση που κάποιος θα ήθελε να παρακάμψει την κατάσταση νύχτας και να ανάψει τα φώτα στο ενυδρείο του οποιαδήποτε στιγμή. Γι' αυτό το λόγο χρησιμοποίησα ένα button το οποίο εάν το κρατήσουμε πατημένο και μετά τροφοδοτήσουμε το κύκλωμα με ρεύμα, καταλαβαίνει πως πρόκειται για emergency sunrise και ανάβει τα φώτα κάνοντας μια πολύ γρήγορη εξομοίωση ανατολής μέσα σε 3-4 δευτερόλεπτα.

Αξίζει να αναφέρουμε κάποια σημεία μέσα στον κώδικα προγραμματισμού που θα πρέπει να γνωρίζουμε, ώστε να καθορίσουμε τους χρόνους που θέλουμε για την ανατολή/δύση και για παραμέτρους που είναι υπεύθυνοι για το σωστό προγραμματισμό του κυκλώματος.
-Ο χρόνος που καθορίζει την ανατολή βρίσκεται στη συνάρτηση timersunrise() όπου κάνουμε uncomment τη γραμμή με το χρόνο που επιθυμούμε και comment αυτές που δεν θα χρησιμοποιήσουμε.
-Ο χρόνος που καθορίζει τη δύση βρίσκεται στη συνάρτηση timersunset() όπου κάνουμε uncomment τη γραμμή με το χρόνο που επιθυμούμε και comment αυτές που δεν θα χρησιμοποιήσουμε.
-Για να ορίσουμε για πρώτη φορά την ημερομηνία και ώρα στο RTC θα πρέπει να πάμε στη συνάρτηση setup(), να αφαιρέσουμε το ! από τη γραμμή if (! RTC.isrunning()) {, να ορίσουμε την τρέχουσα ημερομηνία και ώρα στη γραμμή RTC.adjust(DateTime(2017, 01, 9, 0, 21, 00)); και να φορτώσουμε τον κώδικα στο microcontroller. Κατόπιν τούτου, ξαναβάζουμε το ! και ξαναφορτώνουμε τον κώδικα στο microcontroller ελέγχοντας από τη σειριακή κονσόλα ότι η ώρα ρυθμίστηκε σωστά.
-Στη συνάρτηση loop() στο σημείο για το quick sunrise κάνουμε uncomment τη γραμμή με το χρόνο που επιθυμούμε και comment αυτές που δεν θα χρησιμοποιήσουμε. Ο χρόνος αυτός είναι ο χρόνος γρήγορης ανατολής στην περίπτωση που το κύκλωμα επανέλθει από διακοπή ρεύματος.
-Υπολογίζουμε την ώρα που θέλουμε να έχουμε ανατολή και δύση σε λεπτά και τοποθετούμε τις τιμές αυτές στη συνάρτηση loop() στα παρακάτω σημεία. Ο τρόπος μετατροπής είναι "ΩΡΑ*60 + ΛΕΠΤΑ"
π.χ. 13:15 = 13*60 + 15 = 795.
-- if ((timeinmins == 870) && (flagnight == 1)) { - η ώρα ανατολής (14:30)
-- } else if ((timeinmins == 1415) && (flagnight == 0)) { - η ώρα δύσης (23:35)
-- } else if ((timeinmins > 870) && (timeinmins < 1410) && (flagnight == 1)) { - η ώρα ανατολής και δύσης μεταξύ των οποίων εάν υπάρξει διακοπή ρεύματος θα γίνει quick sunrise (μεταξύ 14:30 και 23:30). Η διαφορά των 5 λεπτών μεταξύ του χρόνου αυτού (1410) και του χρόνου δύσης (1415) είναι ο χρόνος του quick sunrise εάν η διακοπή ρεύματος γίνει λίγο πριν τη δύση.

Είναι περιττό πιστεύω να αναφέρω πως αν κάποιος από εσάς θελήσει να προσθέσει το module με τα dip switches αρκεί να μεταφέρει το button στο pin 12 ή 13 της πλακέτας του Arduino και να τροποποιήσει τον κώδικα προγραμματισμού ώστε να δουλέψουν και τα δύο παράλληλα (το module με τα dip switches στα pin 2-9 και το button στο pin 12 ή 13).

Εγώ στην κατασκευή μου χρησιμοποίησα ένα προφίλ αλουμινίου ψύκτρας για ταινίες LED, πάνω στο οποίο κόλλησα την ταινία LED για να ψύχεται καλύτερα. Επίσης, χρησιμοποίησα ένα ακόμη μικρό πράσινο led για να μου δείχνει πότε το κύκλωμα έχει ρεύμα και πότε όχι. Λεπτομέρειες μπορείτε να δείτε στις παρακάτω φωτογραφίες.


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


*Update 26/01/2017

Προστέθηκε ένα πράσινο λαμπάκι στο κύκλωμα που δείχνει πότε το κύκλωμα είναι στο ρεύμα (μέσω μιας αντίστασης 470Ω). Σχεδιάστηκε καλύτερα το κύκλωμα με τη χρήση του προγράμματος fritzing.


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


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


Print this page
Updated 19/01/2017
©opyright www.istellas.gr

 
 
 
Last updated
 
 
 
DHTML Menu / JavaScript Menu - Created Using NavStudio (OpenCube Inc.)