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

Φωτισμός αφύπνισης: 7 βήματα (με εικόνες)
Φωτισμός αφύπνισης: 7 βήματα (με εικόνες)

Βίντεο: Φωτισμός αφύπνισης: 7 βήματα (με εικόνες)

Βίντεο: Φωτισμός αφύπνισης: 7 βήματα (με εικόνες)
Βίντεο: "Τα 7 βήματα που θα αλλάξουν τη ζωή σου" 2024, Νοέμβριος
Anonim
Φως αφύπνισης
Φως αφύπνισης

Καθώς γράφω αυτό το διδακτικό είναι στα μέσα του χειμώνα στο βόρειο ημισφαίριο και αυτό σημαίνει σύντομες μέρες και μεγάλες νύχτες. Έχω συνηθίσει να σηκώνομαι στις 06:00 και το καλοκαίρι ο ήλιος θα λάμπει μέχρι τότε. Το Χειμώνα όμως, φωτίζεται στις 09:00, αν είμαστε τυχεροί να έχουμε μια μέρα που δεν είναι συννεφιασμένη (που… δεν είναι συχνά).

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

Προμήθειες:

Κορνίζα "Ribba" 50 x 40 cm από IKEA

διάτρητο χαρτόνι από κατάστημα υλικού

Πίνακας ανάπτυξης STM8S103 μέσω Ebay ή άλλων

Ρολόι πραγματικού χρόνου DS1307 (Mouser, Farnell, Conrad, κλπ)

Κρύσταλλο ρολογιού 32768 Hz (Mouser, Farnell, Conrad, κλπ)

3V λιθίου σύμπτυξη + συγκράτηση συγκράτησης

ΜΟΣΦΕΤ N-channel BUZ11 ή IRLZ34N (3x)

BC549 (ή οποιοδήποτε άλλο τρανζίστορ NPN)

όσα λευκά, κόκκινα, μπλε, πράσινα κλπ θέλετε

ορισμένες αντιστάσεις και πυκνωτές (βλέπε σχηματικό)

Powerbrick, 12V έως 20V, 3A ή περισσότερα (π.χ. τροφοδοσία παλαιού φορητού υπολογιστή)

Βήμα 1: Κάντε το (λίγο) πιο εύκολο να σηκωθείτε

Κάνοντας το (λίγο) πιο εύκολο να σηκωθείτε
Κάνοντας το (λίγο) πιο εύκολο να σηκωθείτε

Η ιδέα είναι ότι είναι δύσκολο να σηκωθείτε από το κρεβάτι το πρωί όταν είναι ακόμα σκοτεινό. Και αν ζείτε κοντά ή ακόμα και πάνω από τον αρκτικό κύκλο θα είναι σκοτεινό πολύ καιρό. Σε μέρη όπως το Tromsö στη Νορβηγία δεν θα έχει καθόλου φως καθώς εκεί ο ήλιος δύει τον μισό Νοέμβριο για να εμφανιστεί ξανά στη μέση του Januari.

Αυτό που έκανε λοιπόν η Philips ήταν να προσομοιώσει την ανατολή του ήλιου.

Η Philips αυξάνει αργά τη φωτεινότητα μιας λάμπας, η οποία είναι πιθανώς κατασκευασμένη με πολλά led, αλλά κρυμμένα πίσω από ένα μόνο διαχύτη. Ο χρόνος τους από απενεργοποίηση έως πλήρη φωτεινότητα διαρκεί 30 λεπτά.

Τα φώτα αφύπνισης της Philips δεν είναι τόσο ακριβά, αλλά έχουν μόνο ένα χρώμα και φαίνονται λίγο μικρά. Νομίζω ότι μπορώ καλύτερα.

Βήμα 2: Περισσότερο χρώμα

Περισσότερο Χρώμα
Περισσότερο Χρώμα

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

Το δικό μου είναι επίσης γρηγορότερο από το φως αφύπνισης της Philips, αντί για 30 λεπτά του φωτός Philips, το δικό μου πηγαίνει από 0% σε 100% φωτεινότητα σε λιγότερο από 5 λεπτά. Έτσι ο ήλιος μου ανατέλλει πολύ πιο γρήγορα.

ΣΗΜΕΙΩΣΗ:

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

Βήμα 3: Καμπύλη Sigmoid, τρεμόπαιγμα και "ανάλυση"

Sigmoid Curve, Flickering and
Sigmoid Curve, Flickering and

Φυσικά ήθελα να κάνω τη λάμψη όσο πιο ομαλή γίνεται. Τα ανθρώπινα μάτια είναι λογαριθμικά ευαίσθητα, πράγμα που σημαίνει ότι στο απόλυτο σκοτάδι είναι πιο ευαίσθητα από ό, τι στο πλήρες φως της ημέρας. Μια πολύ μικρή αύξηση της φωτεινότητας όταν τα επίπεδα είναι χαμηλά "αισθάνεται" το ίδιο με ένα πολύ μεγαλύτερο βήμα όταν το φως είναι περίπου 40% φωτεινότητα. Για να το πετύχω, χρησιμοποίησα μια ειδική καμπύλη που ονομάζεται Sigmoid (ή καμπύλη S). Αυτή η καμπύλη ξεκινά ως εκθετική καμπύλη που ισοπεδώνει ξανά. Διαπίστωσα ότι είναι ένας πολύ καλός τρόπος αύξησης (και μείωσης) της έντασης.

Η συχνότητα ρολογιού του μικροελεγκτή (και των χρονοδιακόπτη) είναι 16 MHz και χρησιμοποιώ τη μέγιστη ανάλυση του TIMER2 (65536) για να δημιουργήσω τρία σήματα πλάτους παλμών (PWM). Επομένως οι παλμοί έρχονται 16000000 /65536 = 244 φορές το δευτερόλεπτο. Αυτό είναι πολύ πάνω από το όριο των ματιών για να δείτε τυχόν τρεμόπαιγμα.

Έτσι, τα led τροφοδοτούνται με ένα σήμα PWM που κατασκευάζεται με αυτό το 16 bittimer του μικροελεγκτή STM8S103. Τουλάχιστον αυτό το σήμα PWM μπορεί να είναι ON είναι 1 μήκος παλμού και τα υπόλοιπα 65535 μήκη παλμού μακριά.

Έτσι, τα led που συνδέονται με αυτό το σήμα PM θα είναι τότε ON/65536-th του χρόνου: 0,0015%

Το μέγιστο είναι ON 65536/65536-ου του χρόνου: 100%.

Βήμα 4: Ηλεκτρονικά

ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ

Μικροελεγκτής

Ο εγκέφαλος του φωτός αφύπνισης είναι ένας μικροελεγκτής STM8S103 από την STMicroelectronics. Μου αρέσει να χρησιμοποιώ εξαρτήματα που έχουν αρκετές δυνατότητες για μια δουλειά. Για μια απλή εργασία, δεν είναι απαραίτητη η χρήση μικροελεγκτών STM32 (τα άλλα αγαπημένα μου), αλλά ένα Arduino UNO δεν ήταν αρκετό, καθώς ήθελα τρία σήματα PWM με ανάλυση 16 bit και δεν υπάρχει χρονοδιακόπτης με τρία κανάλια εξόδου σε UNO Το

Ρολόι πραγματικού χρόνου

Η ώρα διαβάζεται από ένα ρολόι πραγματικού χρόνου DS1307 που λειτουργεί με κρύσταλλο 32768 Hz και διαθέτει εφεδρική μπαταρία 3V.

Η ρύθμιση της τρέχουσας ώρας, ημέρας και ώρας αφύπνισης γίνεται με δύο κουμπιά και εμφανίζεται με οθόνη LCD χαρακτήρων 16 x 2. Για να διατηρήσω το υπνοδωμάτιό μου πραγματικά σκοτεινό τη νύχτα, ο οπίσθιος φωτισμός της οθόνης LCD ενεργοποιείται μόνο όταν τα led είναι πιο φωτεινά από τον οπίσθιο φωτισμό και όταν ρυθμίζετε την ώρα, την ημέρα και την ώρα αφύπνισης.

Εξουσία

Η ισχύς προέρχεται από ένα παλιό τροφοδοτικό φορητού υπολογιστή, το δικό μου παράγει 12V και μπορεί να παραδώσει 3Α. Όταν έχετε άλλο τροφοδοτικό, μπορεί να χρειαστεί να ρυθμίσετε τις αντιστάσεις σε σειρά με τις χορδές led. (Δες παρακάτω)

Leds

Τα led είναι συνδεδεμένα με την τροφοδοσία 12V, τα υπόλοιπα ηλεκτρονικά έργα στα 5V κατασκευάζονται με γραμμικό ρυθμιστή 7805. Στο σχηματικό γράφει ότι χρησιμοποιώ ρυθμιστή TO220, ο οποίος δεν χρειάζεται καθώς ο μικροελεγκτής, η οθόνη και το ρολόι πραγματικού χρόνου χρησιμοποιούν μόνο μερικά milliamps. Το ρολόι μου χρησιμοποιεί μια μικρότερη έκδοση TO92 του 7805 ικανή να παρέχει 150mA.

Η εναλλαγή των led-strings γίνεται με MOSFET καναλιού N. Και πάλι, στο σχηματικό δείχνει άλλες συσκευές από αυτές που χρησιμοποίησα. Έτυχε να έχω ακριβώς τρία πολύ παλιά MOSFET BUZ11 αντί για τα νεότερα MOSFET IRLZ34N. Λειτουργούν μια χαρά

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

Βήμα 5: Αντιστάσεις (για τα Leds)

Αντιστάσεις (για τα Leds)
Αντιστάσεις (για τα Leds)

Σχετικά με τις αντιστάσεις στις χορδές led. Τα λευκά και μπλε led συνήθως έχουν τάση 2,8V πάνω τους όταν βρίσκονται σε πλήρη φωτεινότητα.

Τα κόκκινα led έχουν μόλις 1,8V, τα πράσινα led έχουν 2V πάνω τους σε πλήρη φωτεινότητα.

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

Ξεκινήστε με έναν τέτοιο υπολογισμό. Το τροφοδοτικό αποδίδει (στην περίπτωσή μου) 12V.

Τέσσερα λευκά led σε σειρά χρειάζονται 4 x 2,8V = 11,2V, αυτό αφήνει 0,8V για την αντίσταση.

Είχα διαπιστώσει ότι ήταν αρκετά φωτεινά στα 30mA, οπότε η αντίσταση πρέπει να είναι:

0,8 / 0,03 = 26,6 ωμ Στο σχηματικό βλέπετε ότι έβαλα μια αντίσταση 22 ohm, κάνοντας τα led να είναι λίγο πιο φωτεινά.

Τα μπλε led ήταν πολύ φωτεινά στα 30mA, αλλά σε σύγκριση με τα λευκά led στα 15 mA, είχαν επίσης περίπου 2,8V πάνω τους στα 15mA, οπότε ο υπολογισμός ήταν 4 x 2,8V = 11,2V και πάλι αφήνοντας 0,8V

0,8 / 0,015 = 53,3 ωμ οπότε επέλεξα μια αντίσταση 47 ωμ.

Τα κόκκινα led μου χρειάζονται επίσης περίπου 15 mA για να είναι εξίσου φωτεινά με τα άλλα, αλλά έχουν μόνο 1,8V πάνω τους σε αυτό το ρεύμα. Θα μπορούσα λοιπόν να βάλω περισσότερα σε σειρά και να έχω ακόμα ένα «δωμάτιο» για την αντίσταση.

Έξι κόκκινα led μου έδωσαν 6 x 1,8 = 10,8V, οπότε η αντίσταση ήταν 12 - 10,8 = 1,2V

1,2 / 0,015 = 80 ohm, το έφτιαξα στα 68 ohm. Όπως και οι άλλοι, λίγο πιο φωτεινός.

Τα πράσινα led που χρησιμοποίησα είναι τόσο φωτεινά όσο τα άλλα στα 20mA περίπου. Χρειάστηκα μόνο μερικά (όπως και τα μπλε) και επέλεξα να βάλω τέσσερις σε σειρά. Στα 20mA έχουν 2, 1V πάνω τους, δίνοντας 3 x 2,1 = 8,4V

12 - 8,4 = 3,6V για την αντίσταση. Και 3,6 / 0,02 = 180 ωμ.

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

Ένα μικρό παράδειγμα. Πείτε ότι έχετε τροφοδοτικό που δίνει 20V. Θα επέλεγα να ορίσω 6 μπλε (και λευκά) led σε σειρά, 6 x 3V = 18V έτσι 2V για την αντίσταση. Και ας υποθέσουμε ότι σας αρέσει η φωτεινότητα στα 40mA. Η αντίσταση τότε πρέπει να είναι 2V / 0,04 = 50 ohm, μια αντίσταση 47 ohm θα είναι μια χαρά.

Σας συμβουλεύω να μην πηγαίνετε υψηλότερα από 50mA με συνηθισμένα led (5mm). Μερικοί μπορούν να αντέξουν περισσότερο, αλλά μου αρέσει να είμαι ασφαλής.

Βήμα 6: Λογισμικό

Μπορείτε να κατεβάσετε όλο τον κωδικό από:

gitlab.com/WilkoL/wakeup_light_stm8s103

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

Κύριος.γ

Το Main.c ρυθμίζει πρώτα το ρολόι, τα χρονόμετρα και άλλα περιφερειακά. Τα περισσότερα από τα "προγράμματα οδήγησης" που έγραψα χρησιμοποιώντας την Τυπική βιβλιοθήκη της STMicroelectronics και αν έχετε απορίες σχετικά με αυτά, γράψτε τα σε ένα σχόλιο κάτω από το διδακτικό.

Eeprom

Άφησα τον κώδικα "κείμενο προς εμφάνιση" που χρησιμοποιούσα για να βάζω κείμενα στο eeprom του STM8S103 ως σχόλια. Δεν ήμουν σίγουρος ότι είχα αρκετή μνήμη flash για όλο τον κωδικό μου, οπότε προσπάθησα να βάλω όσο το δυνατόν περισσότερα eeprom για να έχω όλο το φλας για το πρόγραμμα. Στο τέλος αυτό αποδείχθηκε ότι δεν ήταν απαραίτητο και μετακίνησα το κείμενο στο flash. Αλλά το άφησα ως σχολιασμένο κείμενο στο αρχείο main.c. Είναι ωραίο να το έχω, όταν πρέπει να κάνω κάτι παρόμοιο αργότερα (σε άλλο έργο)

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

Μια φορά το δευτερόλεπτο

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

Μενού

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

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

Σύγκριση τρέχοντος & χρόνου αφύπνισης

Όταν δεν πατήθηκε κανένα κουμπί, ελέγχει την τρέχουσα ώρα και τη συγκρίνει με την ώρα αφύπνισης και την ημέρα της εβδομάδας. Δεν θέλω να με ξυπνήσει το Σαββατοκύριακο:-)

Τις περισσότερες φορές δεν χρειάζεται να γίνει τίποτα, οπότε ορίζει τη μεταβλητή "led" σε OFF αλλού σε ON. Αυτή η μεταβλητή ελέγχεται μαζί με το σήμα "change_intensity", το οποίο προέρχεται επίσης από ένα χρονόμετρο και είναι ενεργό 244 φορές το δευτερόλεπτο. Έτσι, όταν η μεταβλητή "leds" είναι ON η ένταση αυξάνεται 244 φορές το δευτερόλεπτο και όταν είναι OFF μειώνεται 244 φορές το δευτερόλεπτο. Αλλά η αύξηση γίνεται μεμονωμένα βήματα όπου η μείωση είναι στα βήματα των 16, πράγμα που σημαίνει ότι όταν το φως αφύπνισης ελπίζει ότι έχει κάνει τη δουλειά του, απενεργοποιείται 16 φορές πιο γρήγορα αλλά ακόμα ομαλά.

Ομαλότητα και εκτός μνήμης

Η ομαλότητα προέρχεται από τον υπολογισμό της καμπύλης Sigmoid. Ο υπολογισμός είναι αρκετά απλός, αλλά πρέπει να γίνει σε μεταβλητές κυμαινόμενου σημείου (διπλασιάζεται) λόγω της συνάρτησης exp (), δείτε το αρχείο sigmoid.c.

Στην τυπική κατάσταση, ο Cosmic compiler / linker δεν υποστηρίζει μεταβλητές κυμαινόμενου σημείου. Η ενεργοποίησή του είναι εύκολη (μόλις το βρείτε), αλλά συνοδεύεται από αύξηση του μεγέθους του κώδικα. Αυτή η αύξηση ήταν πάρα πολύ για να κάνει τον κώδικα να χωρέσει στη μνήμη flash όταν συνδυάζεται με τη λειτουργία sprintf (). Και αυτή η λειτουργία είναι απαραίτητη για τη μετατροπή αριθμών σε κείμενο για την οθόνη.

Itoa ()

Για να διορθώσω αυτό το πρόβλημα, δημιούργησα τη συνάρτηση itoa (). Αυτή είναι μια συνάρτηση Integer To Ascii που είναι μάλλον κοινή, αλλά δεν περιλαμβάνεται στην τυπική βιβλιοθήκη STMicroelectronics, ούτε στις βιβλιοθήκες Cosmic.

Βήμα 7: IKEA (τι θα κάναμε χωρίς αυτά)

ΙΚΕΑ (τι θα κάναμε χωρίς αυτούς)
ΙΚΕΑ (τι θα κάναμε χωρίς αυτούς)
ΙΚΕΑ (τι θα κάναμε χωρίς αυτούς)
ΙΚΕΑ (τι θα κάναμε χωρίς αυτούς)
ΙΚΕΑ (τι θα κάναμε χωρίς αυτούς)
ΙΚΕΑ (τι θα κάναμε χωρίς αυτούς)

Η εικόνα από αγοράστηκε από το ΙΚΕΑ. Είναι πλαίσιο Ribba 50 x 40cm. Αυτό το πλαίσιο είναι αρκετά παχύ και το καθιστά εξαιρετικό για να κρύβετε ηλεκτρονικά πίσω του. Αντί αφίσας ή εικόνας έβαλα ένα κομμάτι διάτρητου σκληρού δίσκου. Μπορείτε να το αγοράσετε στο κατάστημα υλικού όπου μερικές φορές ονομάζεται "πίνακας κρεβατιών". Έχει μικρές τρύπες που το καθιστούν ιδανικό για τοποθέτηση led. Δυστυχώς, οι τρύπες στον πίνακα μου ήταν λίγο μεγαλύτερες από 5 mm, οπότε έπρεπε να χρησιμοποιήσω θερμή κόλλα για να "τοποθετήσω" τα led.

Έκανα μια ορθογώνια τρύπα στο κέντρο του σκληρού πίνακα για την οθόνη 16x2 και την πάτησα. Το PCB με όλα τα ηλεκτρονικά κρέμεται σε αυτήν την οθόνη, δεν είναι προσαρτημένο σε τίποτα άλλο.

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

Συνιστάται: