Isi kandungan:

Minidot 2 - Holoclock: 6 Langkah
Minidot 2 - Holoclock: 6 Langkah

Video: Minidot 2 - Holoclock: 6 Langkah

Video: Minidot 2 - Holoclock: 6 Langkah
Video: laser module#shorts#shortvideo#m4tek#powergear 2024, Julai
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Mungkin holoclock sedikit tidak tepat …. ia menggunakan filem penyebaran holografik di bahagian depan untuk memberikan sedikit kedalaman. Pada asasnya arahan ini adalah kemas kini ke Minidot saya sebelumnya yang terletak di sini: https://www.instructables.com/id / EEGLXQCSKIEP2876EE / dan menggunakan semula banyak kod dan litar dari Microdot saya yang terdapat di sini: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD fail dan kod Sourceboost disertakan dalam fail zip yang dilampirkan. Mengapa? Minidot sebelumnya terlalu rumit, dari Microdot saya belajar bagaimana melakukan RTC pada PIC dengan hanya menggunakan kristal 32.768 dan tidak perlu menggunakan cip RTC khas. Saya juga mahu menyingkirkan cip paparan dari Minidot sebelumnya. Jadi sekarang hanya ada cip pengatur kuasa dan PIC16F88 …. hanya dua cip. Sebab lain untuk kemas kini ialah Minidot saya agak tidak boleh dipercayai kerana papan suis yang berasingan dan saya mahukan pudar lembut antara corak titik sebagai serta semacam sensor cahaya ambien untuk meredupkan paparan pada waktu malam. Minidot yang lain adalah kecerahan tetap, dan menerangi sebuah ruangan pada waktu malam. Peranti ini dibina dengan bantuan pakej perisian EagleCad dan penyusun Sourceboost. Anda perlu mempunyai pengalaman dengan elektronik dan pengaturcaraan pengawal PIC untuk memulakan projek ini. Harap maklum bahawa ini tidak dapat dipelajari pada pengaturcaraan elektronik atau PIC, jadi sila pertahankan soalan yang relevan dengan reka bentuk Miniclock. Rujuk arahan di atas atau banyak arahan lain di laman web ini untuk mendapatkan nasihat mengenai penggunaan EagleCad atau pengaturcaraan PIC. Jadi ini dia….. Minidot 2, The Holoclock …… atau Minidot The Next Generation ………….

Langkah 1: Litar

Litar
Litar
Litar
Litar
Litar
Litar

Litar ini sangat serupa dengan Microdot. Perhatikan array charlieplex hampir sama … hanya beberapa pin yang dipindahkan.

Kristal 20Mhz telah ditambahkan ke litar Microdot untuk membuat jam PIC lebih cepat, ini membolehkan array diimbas lebih cepat dan memungkinkan pelaksanaan algoritma peredupan. Algoritma peredupan sangat penting untuk membuat corak silang pudar dan fungsi cahaya sekeliling berfungsi. Ini tidak mungkin dilakukan dengan Microdot, kerana kelajuan jam yang lebih perlahan kerana beberapa kitaran imbasan perlu dihabiskan untuk meredup. Lihat bahagian seterusnya untuk penerangan mengenai fungsi Peredupan. Perkara lain yang perlu diberi perhatian adalah penggunaan pengatur pam cas MCP1252 untuk membekalkan 5V, cip kegemaran saya ketika ini. Sekiranya anda mengubah suai litar, anda boleh menggunakan 7805 lama … …… Saya hanya mempunyai sebilangan cip berguna ini. Saya sekarang telah mengalihkan suis ke depan, menyimpan putaran sepanjang masa selepas putus kuasa untuk menetapkan semula masa dan sekarang semuanya hanya satu PCB….tidak ada masalah kabel. Juga diperhatikan ialah kemasukan LDR. Ini digunakan dalam pembahagi voltan yang dirasakan oleh pin A / D pada PIC. Apabila PIC merasakan tahap cahaya sekitar rendah (iaitu waktu malam) algoritma peredupan menjadikan array charlieplex gelap untuk lebih banyak kitaran daripada ketika tahap cahaya tinggi. Saya tidak dapat mencari simbol LDR di perpustakaan Eaglecad, jadi saya hanya menggunakan simbol LED….. jangan tertipu itu LDR. Lihat gambar sebenar PCB di bawah. Satu perkara yang perlu diberi perhatian semasa menggunakan LED pelbagai warna dalam array charliplex. Anda perlu memastikan voltan hadapan LED lebih kurang sama. Sekiranya tidak, jalan arus sesat mungkin berlaku dan banyak LED akan menyala. Oleh itu, penggunaan LED kuasa 5mm atau lebih tinggi untuk konfigurasi ini tidak akan berfungsi kerana biasanya terdapat perbezaan antara LED hijau / biru dan LED merah / kuning. Dalam kes ini, saya menggunakan 1206 LED SMD dan LED hijau / biru kecekapan tinggi khususnya. Voltan hadapan tidak menjadi masalah di sini. Sekiranya anda ingin menggunakan campuran LED dengan daya hijau / biru dan merah / kuning yang lebih tinggi dalam array charlieplex, anda perlu memisahkan pelbagai warna menjadi dua tatasusunan charliplex. Terdapat banyak penjelasan mengenai charlieplexing yang boleh disekat …… Saya tidak akan menjelaskan secara terperinci di sini. Saya akan menyerahkan kepada anda untuk membuat kajian. (Tekan ikon 'i' kecil di sudut gambar di bawah untuk melihat versi yang lebih besar)

Langkah 2: Algoritma Peredupan - Modulasi Lebar Nadi Charliplexed

Algoritma Peredupan - Modulasi Lebar Nadi Charliplexed
Algoritma Peredupan - Modulasi Lebar Nadi Charliplexed

Seperti yang telah disebutkan sebelumnya, saya mahu corak titik yang berlainan untuk masa ini semakin pudar daripada menyentak dari satu corak ke corak yang lain. Lihat video untuk demonstrasi. Di tengah jam Minidot baru, di sebelah kanan adalah Minidot yang lebih tua. Perhatikan seberapa baik yang baru. (FYI paparan lain di latar belakang adalah paparan status komputer super Minicray saya dan zarah Nebulon yang saya tangkap yang menggerakkan Minicray dalam medan pengurungan magnet antimateri. Lihat di sini: https://www.youtube.com/watch? V = bRupDulR4MUntuk demonstrasi dari ruang kurungan nebulon) Sekiranya anda melihat kodnya, buka fail display.c. Perhatikan bahawa terdapat empat tatasusunan untuk memetakan nilai tris / port untuk menerangi susunan tertentu dan dua tatasusunan (satu lebih daripada kod Microdot) untuk menentukan LED mana yang harus diterangi untuk corak LED tertentu.eg:

// LED1 LED2 LED3… char unsigned LEDS_PORTA [31] = {0x10, 0x00, 0x00,… char unsigned LEDS_TRISA [31] = {0xef, 0xff, 0xff,… char unsigned LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Char tidak bertanda LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… char tidak bertanda nLedsA [30]; char nLedsB yang tidak ditandatangani [30];Untuk menyalakan LED1 misalnya, anda perlu menetapkan daftar TRIS TRISA: B = 0xef: 0xfd dan PORT register PORTA: B = 0x10: 0x00 dan sebagainya. Sekiranya anda menuliskan nilai tris dalam binari, anda akan perhatikan bahawa pada satu-satu masa, hanya ada dua output yang diaktifkan. Yang lain semuanya ditetapkan ke Tri-state (oleh itu daftar TRIS). Ini adalah pusat kepada penggabungan charlieplexing. Anda juga akan perhatikan bahawa satu output selalu logik '1' dan yang lain selalu logik '0' …. arah yang menghidupkan mana sahaja LED di antara kedua-dua garis output ini. Nilai terakhir di port / tris tatasusunan adalah nilai nol untuk tidak menghidupkan LED sama sekali. Dalam Microdot, fungsi update_display berpusing secara berterusan melalui array lain (nLeds ) untuk melihat apakah LED tertentu itu akan diterangi. Sekiranya ia berlaku, maka nilai tris / port yang sesuai ditetapkan dan LED menyala untuk jangka masa tertentu. Jika tidak, nilai nol dihantar ke daftar PIC TRIS / PORT dan tidak ada LED yang menyala untuk jangka masa tertentu. Apabila dilakukan dengan pantas, ini memberi corak. Selebihnya program akan membaca nilai RTC secara berkala dan membentuk corak rawak yang bagus dalam array itu …. dan sehingga paparan berubah. Untuk membuat fungsi peredupan, ini sedikit dilanjutkan sehingga selepas 30 LED sama ada diterangi (atau tidak) maka tempoh tambahan akan dihabiskan untuk mengirim nilai nol jika paparan dimalapkan…..untuk kecerahan penuh maka tidak ada tempoh tambahan yang akan dihabiskan. Apabila diulang jika terdapat banyak tempoh kosong pada LED yang menyala, paparannya akan redup. Sebenarnya ini adalah modulasi lebar denyut multiplexed…..atau kerana perkakasan dikonfigurasi dalam susunan charlieplex, kemudian modulasi lebar denyut charlieplexed. Gambar kedua di bawah menunjukkan persediaan asas untuk ini. Saya menyebutnya bingkai imbasan. 30 tempoh pertama ke bingkai digunakan untuk melewati LED…..dan sebilangan masa tambahan yang berubah-ubah menentukan betapa malapnya paparan. Kitaran ini berulang. Tempoh null yang lebih banyak bermaksud lebih sedikit masa untuk LED menyala setiap bingkai (kerana bilangan tempoh meningkat). Perhatikan paksi menegak tidak bermaksud tahap voltan. Keadaan sebenar pin yang menuju ke LED berbeza-beza bergantung pada kedudukannya dalam array charlieplex…..dalam rajah itu hanya bermaksud hidup atau mati. Ini juga bermaksud panjang keseluruhan bingkai dalam masa juga meningkat, sehingga menurunkan penyegaran kadar. Apabila LED semakin malap, mereka akan mula berkelip dengan kata lain. Oleh itu, kaedah ini berguna hanya untuk tahap tertentu. Untuk jam, tidak mengapa. Fungsi dipanggil sebentar-sebentar yang membaca penukar A / D pada PIC dan menetapkan tahap kecerahan ini. Sekiranya anda membaca kodnya, ia juga akan memeriksa untuk mengetahui apakah LED yang terdekat dengan LDR menyala, dan tidak melakukan apa-apa tahap jika ya, ini menghentikan paparan yang tiba-tiba terang ketika corak berubah. Seterusnya fungsi cross fade.

Langkah 3: Algoritma Peredupan - Kesan Lintang Pudar dan Penyangga Berganda

Algoritma Peredupan - Kesan Cross Fade dan Penyangga Berganda
Algoritma Peredupan - Kesan Cross Fade dan Penyangga Berganda

Peralihan antara satu corak dan corak sebelumnya adalah segera. Untuk jam ini saya ingin menunjukkan satu corak secara beransur-ansur menurun dalam kecerahan dan corak seterusnya secara beransur-ansur meningkat … iaitu pudar silang.

Saya tidak perlu mempunyai LED individu untuk dikawal pada tahap kecerahan yang berasingan untuk melakukan cross fade. Hanya memerlukan corak pertama pada satu kecerahan dan yang kedua pada kecerahan rendah. Kemudian dalam jangka masa yang singkat saya akan mengurangkan kecerahan yang pertama sedikit, dan meningkatkan yang kedua….. ini akan berterusan sehingga corak kedua sepenuhnya. Kemudian jam akan menunggu sehingga corak berikutnya dijadualkan dan akan ada peralihan lain. Oleh itu, saya perlu menyimpan dua corak. Yang sedang dipaparkan dan corak kedua yang hendak dipaparkan. Ini terdapat dalam tatasusunan nLedsA dan nLedsB. (perhatikan tidak ada kaitan dengan port dalam kes ini). Ini adalah penyangga berganda. Fungsi update_display () telah diubah untuk memutar lapan bingkai dan menunjukkan sejumlah bingkai dari satu susunan pertama, kemudian yang lain. Mengubah bilangan bingkai yang diperuntukkan untuk setiap penyangga sepanjang lapan kitaran menentukan betapa cerahnya setiap corak. Setelah selesai mengitar antara buffer, kami menukar buffer 'display' dan 'next display', sehingga fungsi menghasilkan corak kemudian hanya akan menulis ke buffer 'display seterusnya'. Gambar rajah di bawah menunjukkan ini dengan penuh harapan. Anda seharusnya dapat melihat bahawa peralihan akan mengambil 64 bingkai imbasan. Dalam gambar, sisipan kecil menunjukkan gambar rajah bingkai imbasan dari halaman sebelumnya yang diturunkan dengan berseni. Satu perkataan dengan kadar yang baru. Semua ini perlu dilakukan dengan cepat. Kami kini mempunyai dua tahap pengiraan tambahan, satu untuk kelaparan paparan ambien dan satu untuk lapan kitaran bingkai yang dihabiskan untuk melakukan peralihan antara dua penyangga. Oleh itu, kod ini harus ditulis secara berkumpul, tetapi cukup baik di 'C'.

Langkah 4: Pembinaan - PCB

Pembinaan - PCB
Pembinaan - PCB
Pembinaan - PCB
Pembinaan - PCB

Ini cukup mudah. Hanya PCB dua sisi dengan beberapa komponen SMD di bahagian atas. Maaf jika anda seorang yang berpengalaman, tetapi lebih mudah untuk membuat projek SMD …. tanpa lubang untuk digerudi. Anda harus mempunyai tangan yang stabil, stesen pematerian terkawal suhu dan banyak cahaya dan pembesaran untuk menjadikan semuanya lebih mudah.

Satu-satunya perkara yang perlu diperhatikan dalam pembinaan PCB ialah memasukkan penyambung untuk memprogram PIC. Ini menghubungkan ke pin ICSP di PIC dan anda memerlukan pengaturcara ICSP. Sekali lagi saya menggunakan penyambung kotak sampah saya. Anda boleh menghilangkan ini dan hanya memasang solder ke pad jika anda mahu. Sebagai alternatif jika anda hanya mempunyai programmer soket, anda boleh membuat header yang dipasang ke soket anda dan kemudian memasangkannya ke pad ICSP. Sekiranya anda melakukan ini, putuskan sambungan Rx dan sambungkan Ry yang hanya pautan nol ohm (saya hanya menggunakan solder blob). Ini akan memutuskan sisa kuasa litar dari PIC sehingga tidak mengganggu pengaturcaraan. Pengaturcara soket hanya menggunakan pin ICSP seperti pengaturcara ICSP, sebenarnya tidak ada sihir yang terlibat. Anda juga perlu melakukan ini jika secara tidak sengaja anda terlupa meletakkan kelewatan kod sebelum RTC bermula. Untuk 16F88, pin pengaturcaraan ICSP adalah sama dengan pin yang diperlukan untuk kristal 32.768kHz yang digunakan untuk RTC …… jika pengayun luaran T1 (iaitu RTC) berjalan sebelum ICSP dapat memulakannya, maka pengaturcaraan akan gagal. Biasanya jika ada reset pada pin MCLR dan ada penundaan, maka data ICSP dapat dikirim ke pin ini dan pengaturcaraan dapat dimulai dengan baik. Namun dengan mengasingkan daya ke PIC, pengaturcara ICSP (atau pengaturcara soket dengan header) dapat mengawal daya ke peranti dan memaksa program. Perkara-perkara lain yang perlu diperhatikan adalah bahawa pad kristal pada PCB pada asalnya direka untuk kristal SMD. Saya tidak sabar menunggu sebilangan dihantar sehingga kristal jam 32.768kHz disolder ke atas seperti yang ditunjukkan, dan kristal 20MHz dilampirkan dengan menggerudi beberapa lubang di alas, mencabut kristal melalui bahagian bawah dan menyolder ke bahagian atas. Anda boleh melihat pin di sebelah kanan PIC16F88.

Langkah 5: Filem dan Perumahan Holografi

Filem dan Perumahan Holografik
Filem dan Perumahan Holografik
Filem dan Perumahan Holografik
Filem dan Perumahan Holografik
Filem dan Perumahan Holografik
Filem dan Perumahan Holografik

Pembinaan terakhir hanya meletakkan PCB ke dalam casing dan setelah memprogramkannya melekatkannya dengan sedikit gam panas. Tiga lubang membolehkan akses ke penyekat mikro dari depan.

Bahagian penting jam ini adalah penggunaan filem penyebar holografik. Ini adalah filem khas yang saya berbaring yang memberikan kedalaman yang bagus pada peranti. Anda boleh menggunakan kertas penjejak biasa (di mana saya akan menggerakkan PCB lebih dekat ke depan), atau penyebar lain seperti yang digunakan dalam lampu cahaya. Pengalaman tentang, satu-satunya perkara yang perlu dilakukan ialah membolehkan anda membezakan antara bilangan LED yang menyala, atau jika tidak, menghitung titik untuk memberitahu masa akan menjadi sukar. Saya menggunakan bahan penyebaran holografik dari Physical Optics Coorporation (www.poc.com) dengan penyebaran pekeliling 30 darjah, paparan status komputer super yang ditunjukkan di tempat lain dalam arahan menggunakan filem dengan penyebaran elips 15x60 darjah. Anda boleh menggunakan beberapa pita pemadaman untuk menyembunyikan jeroan yang berkilat pada waktu siang untuk mendapatkan penampilan yang lebih misteri. Anda bahkan boleh membiarkan paparannya jelas dan membiarkan orang melihat jongkong seperti saya. Dudukannya adalah dua bit aluminium 'L' bar dengan sedikit dicincang di bahagian bawah untuk membolehkan selekoh. Perhatikan dalam gambar ini pencahayaan tambahan ditambahkan sehingga anda dapat melihat penutup paparan dll. Pada pencahayaan ruang tamu biasa, LED lebih menonjol, walaupun pada waktu siang.

Langkah 6: Perisian dan Antara Muka Pengguna

Operasi peranti ini sangat mudah, tidak ada mod corak khas atau barang yang mencolok. Satu-satunya perkara yang dilakukan adalah memaparkan masa.

Untuk menetapkan masa pertama tekan SW1. Peranti akan menyalakan semua LED beberapa kali dan kemudian kumpulan LED 10 jam SW3 akan menaikkan kumpulan yang dipilih SW2 akan beralih ke kumpulan LED seterusnya, setiap kali memancarkan seketika semua LED dalam kumpulan. Kod ditulis untuk penyusun Sourceboost 'C' versi 6.70. Kod RTC terdapat dalam fail t1rtc.c / h, dan mempunyai fungsi gangguan pada pemasa T1 PIC. Pemasa T1 ditetapkan untuk mengganggu setiap 1 saat. Pada setiap saat, pemboleh ubah untuk masa ini meningkat. Pemasa kutu juga dikira setiap detik bersamaan dengan waktu. Ini digunakan untuk menentukan kapan mengalihkan paparan. Fungsi interrupt juga menggunakan interupsi pemasa T0 untuk menyegarkan paparan, memanggil fungsi di display.c File display.h / display.c berisi fungsi untuk memperbarui paparan dan menunjukkan waktu File control.c / h berisi berfungsi untuk mengatur masa dan membaca suis Fail holoclock.c / h adalah gelung utama dan inisialisasi.

Disyorkan: