Isi kandungan:

Lampu Bangun: 7 Langkah (dengan Gambar)
Lampu Bangun: 7 Langkah (dengan Gambar)

Video: Lampu Bangun: 7 Langkah (dengan Gambar)

Video: Lampu Bangun: 7 Langkah (dengan Gambar)
Video: Ini cara bisa lihat hantu, bukan magic! #Shorts Nasya kaila nazifah 2024, November
Anonim
Cahaya Bangun
Cahaya Bangun

Semasa saya menulis ini, ini adalah pertengahan musim sejuk di hemisfera Utara dan itu bermaksud hari yang pendek dan malam yang panjang. Saya terbiasa bangun pada pukul 06:00 dan pada musim panas matahari akan bersinar pada waktu itu. Walau bagaimanapun, pada musim sejuk, cahaya pada pukul 09:00 jika kita bernasib baik kerana mempunyai hari yang tidak mendung (yang … tidak kerap).

Beberapa waktu lalu saya membaca tentang "lampu bangun" buatan Philips yang digunakan di Norway untuk mensimulasikan pagi yang cerah. Saya tidak pernah membelinya, tetapi saya terus berfikir untuk membuatnya kerana membuatnya sendiri lebih senang daripada hanya membelinya.

Bekalan:

Bingkai gambar "Ribba" 50 x 40 cm dari IKEA

papan keras berlubang dari kedai perkakasan

Papan pengembangan STM8S103 melalui Ebay atau yang lain

Jam Real Time DS1307 (Mouser, Farnell, Conrad, dll)

Kristal jam tangan 32768 Hz (Mouser, Farnell, Conrad, dll)

3V lithium coincell + pemegang coincell

BUZ11 atau IRLZ34N N-channel MOSFET (3x)

BC549 (atau transistor NPN lain)

sebilangan besar lampu putih, merah, biru, hijau dan lain-lain yang anda mahukan

beberapa perintang dan kapasitor (lihat skema)

Powerbrick, 12V hingga 20V, 3A atau lebih (mis. Bekalan komputer riba lama)

Langkah 1: Menjadikannya (Sedikit) Lebih Mudah untuk Bangun

Menjadikannya (Sedikit) Lebih Mudah untuk Bangun
Menjadikannya (Sedikit) Lebih Mudah untuk Bangun

Ideanya adalah sukar untuk bangun dari tidur pada waktu pagi ketika masih gelap. Dan jika anda tinggal berdekatan atau bahkan di atas lingkaran Artik, ia akan menjadi sangat gelap. Di tempat-tempat seperti Tromsö di Norway, cahaya tidak akan sama sekali kerana di sana matahari terbenam setengah November hanya akan muncul semula pada pertengahan Januari.

Oleh itu, apa yang dilakukan Philips adalah mensimulasikan terbitnya matahari.

Philips perlahan-lahan meningkatkan kecerahan lampu, yang mungkin dibuat dengan beberapa led tetapi tersembunyi di belakang satu peresap. Masa mereka dari mati hingga kecerahan penuh memerlukan masa 30 minit.

Lampu bangun tidur Philips tidak begitu mahal tetapi hanya mempunyai satu warna dan kelihatan sedikit kecil. Saya rasa saya boleh melakukan yang lebih baik.

Langkah 2: Lebih Banyak Warna

Lebih Banyak Warna
Lebih Banyak Warna

Lampu bangun tidur saya menggunakan empat warna, putih, merah, biru dan hijau. Mendapatkan led putih, kemudian berwarna merah, dan tahan beberapa lampu biru dan hijau. Idea saya adalah bahawa saya dapat mensimulasikan bukan sahaja peningkatan kecerahan tetapi juga pergeseran warna cahaya pagi, dengan memulai dengan sedikit putih, menambah warna merah sedikit kemudian dan mencampurkan warna biru dan hijau pada akhirnya. Saya tidak pasti bahawa ia benar-benar menyerupai cahaya pagi yang sebenarnya, tetapi saya suka paparan berwarna seperti sekarang.

Tambang saya juga lebih pantas daripada lampu bangun Philips, bukannya lampu Philips selama 30 minit, lampu saya berubah dari 0% hingga 100% kecerahan dalam masa kurang dari 5 minit. Oleh itu, matahari saya terbit dengan lebih pantas.

CATATAN:

Sangat sukar untuk membuat gambar cahaya bangun tidur saya, saya mencuba dengan beberapa kamera dan telefon pintar tetapi semua gambar yang saya buat tidak adil.

Langkah 3: Keluk Sigmoid, Kerlipan dan "resolusi"

Keluk Sigmoid, Kelipan dan
Keluk Sigmoid, Kelipan dan

Sudah tentu saya ingin menjadikan pencerah semulus mungkin. Mata manusia logaritma dalam kepekaan, yang bermaksud bahawa dalam kegelapan total mereka lebih sensitif daripada pada cahaya siang penuh. Peningkatan kecerahan yang sangat kecil ketika level rendah "terasa" sama dengan langkah yang jauh lebih besar ketika cahaya berada pada kecerahan 40%. Untuk mencapai ini, saya menggunakan lengkung khas yang disebut Sigmoid (atau S-curve) lengkung ini bermula sebagai lengkung eksponensial yang separuh turun lagi. Saya dapati bahawa cara ini sangat bagus untuk meningkatkan (dan mengurangkan) intensiti.

Frekuensi jam mikrokontroler (dan pemasa) adalah 16 MHz dan saya menggunakan resolusi maksimum TIMER2 (65536) untuk membuat tiga isyarat lebar nadi (PWM). Oleh itu nadi datang 16000000/65536 = 244 kali sesaat. Itu jauh melebihi had mata untuk melihat kerlipan.

Oleh itu, LED diberi isyarat PWM yang dibuat dengan mikrokontroler STM8S103 16 bit ini. Sekurang-kurangnya isyarat PWM ini boleh ON adalah panjang 1 denyut dan panjang denyut selebihnya 65535.

Oleh itu, LED yang disambungkan ke isyarat PM kemudian akan ON 1/65536-th masa: 0.0015%

Maksimum mereka adalah ON 65536/65536-th masa: 100%.

Langkah 4: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Pengawal mikro

Otak cahaya bangun adalah mikrokontroler STM8S103 dari STMicroelectronics. Saya suka menggunakan bahagian yang mempunyai kemampuan yang cukup untuk pekerjaan. Untuk tugas yang mudah kerana ini tidak perlu menggunakan mikrokontroler STM32 (kegemaran saya yang lain) tetapi Arduino UNO tidak mencukupi kerana saya mahukan tiga isyarat PWM dengan resolusi 16 bit dan tidak ada pemasa dengan tiga saluran output pada UNO.

Jam Masa Nyata

Waktu dibaca dari jam masa nyata DS1307 yang berfungsi dengan kristal 32768 Hz dan mempunyai bateri sandaran 3V.

Penetapan waktu semasa, hari dan waktu bangun dilakukan dengan dua butang dan ditunjukkan paparan watak LCD 16 x 2. Untuk memastikan bilik tidur saya benar-benar gelap pada waktu malam, lampu latar paparan LCD dihidupkan hanya apabila lampu LED lebih terang daripada lampu latar dan semasa anda menetapkan waktu, hari dan waktu bangun tidur.

Kuasa

Kuasa datang dari bekalan kuasa komputer riba lama, saya menghasilkan 12V dan dapat memberikan 3A. Apabila anda mempunyai bekalan kuasa yang lain, mungkin perlu menyesuaikan perintang secara bersiri dengan tali yang dipimpin. (Lihat di bawah)

Leds

Led disambungkan ke bekalan 12V, selebihnya kerja elektronik pada 5V dibuat dengan pengatur linier 7805. Dalam skema itu mengatakan bahawa saya menggunakan pengatur TO220, yang tidak diperlukan kerana pengawal mikro, paparan dan jam waktu nyata hanya menggunakan beberapa miliamp. Jam saya menggunakan versi TO92 yang lebih kecil daripada 7805 yang mampu membekalkan 150mA.

Pengalihan tali-led dilakukan dengan MOSFET saluran-N. Sekali lagi, dalam skema ia menunjukkan peranti lain daripada yang saya gunakan. Saya kebetulan mempunyai tiga MOSFET BUZ11 yang sangat lama dan bukannya MOSFET IRLZ34N yang lebih baru. Mereka berfungsi dengan baik

Sudah tentu anda boleh memasukkan seberapa banyak petunjuk yang anda mahu, selagi MOSFET dan bekalan kuasa dapat menangani arus. Dalam skema saya telah melukis hanya satu rentetan warna apa pun, sebenarnya terdapat beberapa warna yang selari dengan rentetan warna yang lain.

Langkah 5: Perintang (untuk Leds)

Perintang (untuk Leds)
Perintang (untuk Leds)

Mengenai perintang pada tali yang diketuai. LED putih dan biru biasanya mempunyai voltan 2.8V di atasnya ketika mereka berada pada kecerahan penuh.

LED merah hanya 1.8V, led hijau saya mempunyai 2V di atasnya pada kecerahan penuh.

Perkara lain ialah kecerahan penuh mereka tidak sama. Oleh itu, diperlukan beberapa eksperimen untuk menjadikannya sama terang (di mata saya). Dengan menjadikan LED sama terang pada kecerahan penuh, mereka juga akan kelihatan sama terang pada tahap yang lebih rendah, isyarat lebar nadi selalu menghidupkannya pada cahaya penuh tetapi pada masa yang lebih lama dan lebih pendek, mata anda menjaga rata-rata.

Mulakan dengan pengiraan seperti ini. Bekalan kuasa memberikan (dalam kes saya) 12V.

Empat led putih dalam siri memerlukan 4 x 2.8V = 11.2V, ini meninggalkan 0.8V untuk perintang.

Saya mendapati bahawa mereka cukup terang pada 30mA jadi perintangnya mestilah:

0.8 / 0.03 = 26.6 ohm. Dalam skema anda melihat bahawa saya memasukkan perintang 22 ohm, menjadikan led sedikit lebih terang.

Led biru terlalu terang pada 30mA, tetapi dibandingkan dengan led putih pada 15 mA, mereka juga mempunyai lebih kurang 2.8V di atasnya pada 15mA sehingga pengiraannya 4 x 2.8V = 11.2V sekali lagi meninggalkan 0.8V

0.8 / 0.015 = 53.3 ohm jadi saya memilih perintang 47 ohm.

Lampu merah saya juga memerlukan kira-kira 15 mA te yang sama terang dengan yang lain, tetapi mereka hanya mempunyai 1.8V melebihi mereka pada masa itu. Oleh itu, saya dapat meletakkan lebih banyak siri dan masih mempunyai "ruang" untuk perintang.

Enam led merah memberi saya 6 x 1.8 = 10.8V, jadi perintangnya adalah 12 - 10.8 = 1.2V

1.2 / 0.015 = 80 ohm, saya berjaya menjadi 68 ohm. Sama seperti yang lain, sedikit lebih cerah.

Lampu hijau yang saya gunakan sama terang dengan yang lain pada jarak sekitar 20mA. Saya hanya memerlukan beberapa (sama seperti yang biru) dan saya memilih untuk meletakkan empat seri. Pada 20mA mereka mempunyai 2, 1V melebihi mereka, memberikan 3 x 2.1 = 8.4V

12 - 8.4 = 3.6V untuk perintang. Dan 3.6 / 0.02 = 180 ohm.

Sekiranya anda membina lampu bangun ini, tidak mungkin anda mempunyai bekalan kuasa yang sama, anda perlu menyesuaikan bilangan led secara bersiri dan perintang yang diperlukan.

Contoh kecil. Katakan anda mempunyai bekalan kuasa yang memberikan 20V. Saya memilih untuk menetapkan 6 led biru (dan putih) dalam siri, 6 x 3V = 18V jadi 2V untuk perintang. Dan katakan anda suka kecerahan pada 40mA. Perintang kemudiannya mestilah 2V / 0.04 = 50 ohm, perintang 47 ohm akan baik.

Saya menasihatkan agar tidak pergi lebih tinggi daripada 50mA dengan led biasa (5mm). Ada yang dapat menangani lebih banyak, tetapi saya suka berada di pihak yang selamat.

Langkah 6: Perisian

Semua kod boleh dimuat turun dari:

gitlab.com/WilkoL/wakeup_light_stm8s103

biarkan kod sumber tetap terbuka, di sebelah selebihnya dari arahan ini jika anda ingin mengikuti penjelasannya.

Utama.c

Main.c pertama menetapkan jam, pemasa dan periferal lain. Sebilangan besar "pemacu" yang saya tulis menggunakan Perpustakaan Piawai dari STMicroelectronics dan jika anda mempunyai pertanyaan mengenai mereka, tulislah dalam komen di bawah yang boleh dipesan.

Eeprom

Saya meninggalkan kod "teks untuk dipaparkan" yang saya gunakan untuk meletakkan teks di eProm STM8S103 sebagai komen. Saya tidak pasti bahawa saya mempunyai memori flash yang mencukupi untuk semua kod saya, jadi saya cuba memasukkan sebanyak mungkin dalam eeprom untuk mempunyai semua flash untuk program ini. Pada akhirnya yang terbukti tidak perlu dan saya memindahkan teks ke flash. Tetapi saya meninggalkannya sebagai teks komen dalam fail main.c. Senang memilikinya, apabila saya perlu melakukan sesuatu yang serupa kemudian (dalam projek lain)

Eeprom masih digunakan, tetapi hanya untuk menyimpan waktu bangun.

Sekejap sahaja

Setelah menetapkan periferal, kod memeriksa apakah satu saat telah berlalu (dilakukan dengan pemasa).

Menu

Sekiranya demikian, ia akan memeriksa apakah butang ditekan, jika demikian ia memasuki menu di mana anda dapat menetapkan waktu semasa, hari dalam seminggu dan waktu bangun. Ingat bahawa diperlukan sekitar 5 minit untuk pergi dari kecerahan penuh, jadi tetapkan waktu bangun sedikit lebih awal.

Waktu bangun disimpan di eeprom sehingga walaupun selepas pemadaman elektrik, ia akan "mengetahui" kapan membangunkan anda. Masa sekarang disimpan dalam jam masa nyata tentu saja.

Perbandingan masa & masa bangun

Apabila tiada butang ditekan, ia memeriksa masa semasa dan membandingkannya dengan waktu bangun dan hari kerja. Saya tidak mahu membangunkan saya pada hujung minggu:-)

Sebilangan besar masa tidak perlu dilakukan sehingga menetapkan pemboleh ubah "leds" ke OFF yang lain ke ON. Pemboleh ubah ini diperiksa bersama dengan isyarat “change_intensity”, yang juga berasal dari pemasa dan aktif 244 kali sesaat. Oleh itu apabila pemboleh ubah "leds" AKTIF, intensiti meningkat 244 kali sesaat dan ketika MATI berkurang 244 kali sesaat. Tetapi kenaikan berlaku dalam satu langkah di mana penurunannya adalah pada langkah 16 yang bermaksud bahawa apabila lampu bangun semoga berjaya, ia akan mati 16 kali lebih cepat tetapi masih lancar.

Kelancaran dan LUAR BIASA

Kelancaran datang dari pengiraan lengkung Sigmoid. Pengiraannya cukup mudah tetapi ia perlu dilakukan dalam pemboleh ubah floating point (ganda) kerana fungsi exp (), lihat file sigmoid.c.

Dalam keadaan standard penyusun / penghubung Kosmik tidak mempunyai sokongan untuk pemboleh ubah titik terapung. Menghidupkannya mudah (setelah anda menjumpainya) tetapi dilengkapi dengan peningkatan saiz kod. Peningkatan ini terlalu banyak untuk menjadikan kod tersebut sesuai dengan memori flash apabila digabungkan dengan fungsi sprintf (). Fungsi itu diperlukan untuk menukar nombor menjadi teks untuk paparan.

Itoa ()

Untuk mengatasi masalah ini, saya membuat fungsi itoa (). Ini adalah fungsi Integer To Ascii yang agak umum, tetapi tidak disertakan dengan perpustakaan standard STMicroelectronics, dan juga dengan perpustakaan Cosmic.

Langkah 7: IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)

IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)
IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)
IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)
IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)
IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)
IKEA (Apa Yang Akan Kita Lakukan Tanpa Mereka)

Gambar dari itu dibeli dari IKEA. Ia adalah bingkai Ribba 50 x 40cm. Rangka ini cukup tebal dan menjadikannya bagus untuk menyembunyikan elektronik di belakangnya. Daripada poster atau gambar, saya meletakkan sekeping papan berlubang. Anda boleh membelinya di kedai perkakasan di mana kadang-kadang disebut "papan tempat tidur". Ia mempunyai lubang kecil di dalamnya yang menjadikannya sesuai untuk memasukkan led. Sayangnya lubang di papan saya sedikit lebih besar daripada 5 mm jadi saya terpaksa menggunakan hot-lem untuk "memasang" lekapan.

Saya membuat lubang segi empat tepat di tengah papan keras untuk paparan 16x2 dan menekannya. PCB dengan semua elektronik tergantung pada paparan ini, ia tidak dipasang pada yang lain.

Papan keras berlubang itu dicat hitam dan di belakang tikar. Saya menggerudi dua lubang di bingkai untuk menetapkan butang untuk menentukan waktu dan tarikh, kerana bingkai agak tebal saya harus melebarkan lubang di bahagian dalam bingkai untuk membuat butang cukup menonjol.

Disyorkan: