Talaan ng mga Nilalaman:

Minidot 2 - ang Holoclock: 6 Hakbang
Minidot 2 - ang Holoclock: 6 Hakbang

Video: Minidot 2 - ang Holoclock: 6 Hakbang

Video: Minidot 2 - ang Holoclock: 6 Hakbang
Video: Delta Mini Dot Gen II Red Dot - Quickfire Review 2024, Hulyo
Anonim
Minidot 2 - ang Holoclock
Minidot 2 - ang Holoclock
Minidot 2 - ang Holoclock
Minidot 2 - ang Holoclock

Kaya marahil ang holoclock ay medyo hindi tumpak …. Gumagamit ito ng holographic dispersion film sa harap upang magbigay ng kaunting lalim. Ang batikal na itinuturo na ito ay isang pag-update sa aking dating Minidot na matatagpuan dito: https://www.instructables.com/id / EEGLXQCSKIEP2876EE / at muling paggamit ng maraming code at circuitry mula sa aking Microdot na matatagpuan dito: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD file at Sourceboost code ay kasama sa mga naka-zip na file. Bakit? Ang nakaraang Minidot ay sobrang kumplikado, mula sa Microdot natutunan ko kung paano gumawa ng isang RTC sa isang PIC gamit lamang ang isang 32.768 na kristal at hindi na kailangang gumamit ng isang espesyal na RTC chip. Gayundin nais kong alisin ang mga display chip mula sa nakaraang Minidot. Kaya ngayon mayroon lamang isang chip ng power regulator at isang PIC16F88 ….. Dalawang chips lang. Ang iba pang mga kadahilanan para sa isang pag-update ay ang aking Minidot ay nakakakuha ng isang medyo hindi maaasahan dahil sa magkahiwalay na switch board at nais ko ang isang malambot na fade sa pagitan ng mga pattern ng tuldok bilang pati na rin ang ilang uri ng ambient light sensor upang malabo ang display sa gabi. Ang iba pang Minidot ay naayos na ningning, at nag-iilaw ng isang silid sa gabi. Ang aparato ay itinayo sa tulong ng EagleCad software package at Sourceboost compiler. Kakailanganin mong magkaroon ng kaunting karanasan sa electronics at pagprograma ng mga PIC Controller upang simulan ang proyektong ito. Mangyaring tandaan na hindi ito isang itinuturo sa alinman sa electronics o PIC program, kaya't mangyaring panatilihing may kaugnayan ang mga katanungan sa disenyo ng Miniclock. Sumangguni sa mga itinuturo sa itaas o maraming iba pang mga itinuturo sa site na ito para sa payo sa paggamit ng EagleCad o mga programang PIC. Kaya narito na ….. Minidot 2, The Holoclock …… o Minidot Ang Susunod na Henerasyon ………….

Hakbang 1: Ang Circuit

Ang Circuit
Ang Circuit
Ang Circuit
Ang Circuit
Ang Circuit
Ang Circuit

Ang circuit na ito ay napaka-katulad sa Microdot. Tandaan na ang charlieplex array ay halos magkapareho … ilang mga pin lamang ang inilipat.

Ang isang 20Mhz na kristal ay naidagdag sa circuit ng Microdot upang mai-orasan ang PIC nang mas mabilis, pinapayagan nitong ma-scan nang mas mabilis ang array at nagbibigay-daan sa pagpapatupad ng isang dimming algorithm. Ang dimming algorithm ay napakahalaga sa pagkuha ng isang pattern ng fade fade at ambient light function upang gumana. Ito ay imposible sa Microdot, dahil sa mabagal na bilis ng orasan dahil ang ilang mga siklo ng pag-scan ay kailangang gugulin sa paglabo. Tingnan ang susunod na seksyon para sa isang paglalarawan ng pagpapaandar ng Dimming. Ang iba pang mga bagay na dapat tandaan ay ang paggamit ng isang MCP1252 charge pump regulator upang magbigay ng 5V, ang aking paboritong chip sa ngayon. Kung binago mo ang circuit maaari mong gamitin ang isang simpleng luma 7805 …… Mayroon lamang akong isang bilang ng mga madaling gamiting chips na nakasabit. Inilipat ko na ngayon ang mga switch sa harap, nakakatipid sa likot ng oras pagkatapos ng pagbagsak ng kuryente upang mai-reset ang oras at ngayon lahat ay isa lamang PCB ….. Walang mga isyu sa paglalagay ng kable. Tandaan din ang pagsasama ng isang LDR. Ginagamit ito sa isang divider ng boltahe na na-sensed ng A / D pin sa PIC. Kapag nadama ng PIC na mababa ang antas ng ambient light (ibig sabihin, oras ng gabi) pinapanatili ng dimming algorithm ang charlieplex array na madilim para sa maraming mga cycle kaysa sa mataas ang antas ng ilaw. Hindi ako nakakita ng simbolo ng LDR sa Eaglecad library, kaya gumamit na lang ako ng simbolo na LED …..wag kang lokohin isang LDR ito. Tingnan ang aktwal na larawan ng PCB sa ibaba. Isang bagay na dapat tandaan kapag gumagamit ng mga multi-kulay na LED sa isang charliplex array. Kailangan mong tiyakin na ang pasulong na boltahe ng mga LED ay higit pa o mas mababa pareho. Kung hindi, kung gayon ang mga ligaw na kasalukuyang landas ay maaaring mangyari at maraming mga LED ang magaan. Sa gayon ang paggamit ng 5mm o mas mataas na mga LED na kapangyarihan para sa pagsasaayos na ito ay hindi gagana dahil kadalasang may pagkakaiba sa pagitan ng berde / asul na mga LED at ang pula / dilaw na mga LED. Sa kasong ito ginamit ko ang 1206 SMD leds at mataas na kahusayan berde / asul na mga LED na partikular. Ang pasulong na mga voltages ay hindi isang isyu dito. Kung nais mong gumamit ng isang halo ng berde / asul at pula / dilaw na mas mataas na mga LED na kapangyarihan sa isang charlieplex array kakailanganin mong ihiwalay ang iba't ibang mga kulay sa dalawang mga charliplex array. Mayroong maraming mga paliwanag ng charlieplexing na maaaring mag-Google …… Hindi ko na idedetalye ang mga ito. Iiwan ko ito sa iyo upang magsaliksik. (Pindutin ang maliit na 'i' na icon sa sulok ng larawan sa ibaba upang makita ang isang mas malaking bersyon)

Hakbang 2: Ang Dimming Algorithm - Charliplexed Pulse Width Modulation

Ang Dimming Algorithm - Charliplexed Pulse Width Modulation
Ang Dimming Algorithm - Charliplexed Pulse Width Modulation

Tulad ng nabanggit kanina, nais kong magkaroon ng iba't ibang mga pattern ng tuldok para sa oras na mawala nang maayos kaysa sa pag-jerking mula sa isang pattern patungo sa isa pa. Tingnan ang video para sa isang demonstrasyon. Sa gitna ay ang bagong orasan ng Minidot, sa kanan ay ang mas matandang Minidot. Pansinin kung gaano kahusay ang bago. (FYI ang iba pang mga ipinapakita sa likuran ay ang aking display ng katayuan ng supercomputer na Minicray at aking nakunan na maliit na butil ng Nebulon na nagpapagana sa Minicray sa isang antimatter magnetic confinement field. Tingnan dito: https://www.youtube.com/watch? V = bRupDulR4MPara sa isang demonstrasyon ng nebulon confinement room) Kung titingnan mo ang code, buksan ang display.c file. Tandaan na mayroong apat na mga array para sa pagmamapa ng mga halaga ng tris / port upang maipaliwanag ang anumang partikular na array at dalawang mga array (isa pa kaysa sa Microdot code) para sa pagtukoy sa aling mga LED ang dapat na maiilawan para sa anumang partikular na pattern ng LEDs.eg:

// LED1 LED2 LED3… unsigned char LEDS_PORTA [31] = {0x10, 0x00, 0x00,… unsigned char LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Unsigned char LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… unsigned char nLedsA [30]; unsigned char nLedsB [30];Halimbawa, upang magaan ang LED1, kailangan mong itakda ang mga rehistro ng TRISA: B = 0xef: 0xfd at mga rehistro ng PORT PORTA: B = 0x10: 0x00 at iba pa. Kung isulat mo ang mga halagang tris sa binary mapapansin mo na sa anumang oras, mayroon lamang dalawang output na pinagana. Ang iba pa ay nakatakda sa Tri-state (kaya't ang TRIS register). Ito ang sentro ng charlieplexing. Mapapansin mo rin na ang isang output ay palaging isang lohikal na '1' at ang iba pa ay palaging isang lohikal na '0' ….ang direksyon kung saan i-on ang alinmang LED ay nasa pagitan ng dalawang mga linya ng output. Ang huling halaga sa port / tris ang mga arrays ay isang null na halaga upang mai-on nang walang LED. Sa Microdot, ang pagpapaandar na update_display ay patuloy na nag-ikot sa pamamagitan ng isa pang array (nLeds ) upang makita kung ang partikular na LED ay ililiawan. Kung ito ay, pagkatapos ang mga katumbas na halaga ng tris / port ay nakatakda at ang LED ay nag-iilaw sa isang panahon. Kung hindi man ang null na halaga ay ipinadala sa mga rehistro ng PICs TRIS / PORT at walang LED na nailawan sa isang panahon. Kapag tapos na sapat na mabilis nagbigay ito ng isang pattern. Ang natitirang bahagi ng programa ay pana-panahong babasahin ang mga halaga ng RTC at bumubuo ng isang magandang pattern ng random sa hanay na iyon ….. At sa gayon ay nagbago ang display. Upang makagawa ng isang dimming function, ito ay bahagyang pinalawig upang matapos ang 30 LEDs ay maaaring maliwanag (o hindi) kung gayon ang mga labis na panahon ay gugugol sa pagpapadala ng mga null na halaga kung ang pagpapakita ay madilim …..para sa buong ningning pagkatapos walang ginugol na dagdag na mga panahon. Kapag naulit kung maraming mga null na panahon sa mga iluminadong LED, ang display ay madilim. Bilang epekto ito ay multiplexed na lapad ng pulso na modulation…..o dahil ang hardware ay na-configure sa isang charlieplex arramang, pagkatapos ay ang charlieplexed pulse lapad na modulasyon. Ang pangalawang diagram sa ibaba ay nagpapakita ng pangunahing pag-set up para dito. Tinatawag ko itong isang scan frame. Ang unang 30 na yugto sa frame ay ginagamit upang dumaan sa mga LED …..at isang variable na bilang ng mga dagdag na panahon tukuyin kung paano magiging madilim ang display. Ang pag-ikot na ito ay inuulit. Ang mas maraming mga null period ay nangangahulugang mas kaunting oras para sa isang LED na nasa bawat frame (dahil tumaas ang bilang ng mga panahon). Tandaan ang patayong axis ay hindi nangangahulugang antas ng boltahe. Ang aktwal na estado ng mga pin na pupunta sa mga LED ay nag-iiba depende sa posisyon nito sa charlieplex array…..sa diagram ay nangangahulugang on o off lamang ito. Nangangahulugan din ito ng kabuuang haba ng frame sa oras na nadagdagan din, kaya't nababawasan ang pag-refresh rate Habang lumabo ang mga LEDs, magsisimulang mag-flicker sa madaling salita. Kaya't ang pamamaraang ito ay kapaki-pakinabang lamang sa isang lawak. Para sa orasan, OK lang. Ang isang pagpapaandar ay tinatawag na paulit-ulit na binabasa ang A / D converter sa PIC at itinatakda ang antas ng ningning na ito. Kung nabasa mo ang code, sinusuri din nito upang makita kung ang LED na pinakamalapit sa LDR ay nakabukas, at hindi gumagawa ng anumang setting ng antas kung gayon, ititigil nito ang pagpapakita nang hindi inaasahan ang pag-iilaw kapag nagbago ang pattern. Susunod na pag-andar ng cross fade.

Hakbang 3: Dimming Algorithm - ang Cross Fade Effect at Double Buffering

Dimming Algorithm - ang Cross Fade Effect at Double Buffering
Dimming Algorithm - ang Cross Fade Effect at Double Buffering

Ang paglipat sa pagitan ng isang pattern at ang susunod ay dating agaran. Para sa orasan na ito nais kong ipakita ang isang pattern na unti-unting bumababa sa ningning at ang susunod na pattern na unti-unting tataas … ibig sabihin ay isang fade ng krus.

Hindi ko kailangang magkaroon ng mga indibidwal na LED upang makontrol sa magkahiwalay na mga antas ng ningning upang makagawa ng isang cross fade. Kailangan lang ang unang pattern sa isang ningning at ang pangalawa sa isang mababang ningning. Pagkatapos sa isang maikling panahon bawasan ko ang ningning ng una ng kaunti, at taasan ang pangalawa ….. Ito ay magpapatuloy hanggang sa pangalawang pattern na buo. Pagkatapos ang oras ay maghihintay hanggang sa susunod na pattern ay dahil sa pagpapakita at magkakaroon ng isa pang paglipat. Kaya kailangan kong mag-imbak ng dalawang mga pattern. Ang kasalukuyang ipinapakita at ang pangalawang pattern na malapit nang ipakita. Ang mga ito ay nasa array nLedsA at nLedsB. (tandaan na walang kinalaman sa mga port sa kasong ito). Ito ang dobleng buffer. Ang pag-andar ng update_display () ay binago upang ikot ng walong mga frame at ipakita ang isang bilang ng mga frame mula sa unang isang hanay, pagkatapos sa isa pa. Ang pagbabago ng bilang ng mga frame na inilalaan sa bawat buffer sa buong walong siklo ay tinukoy kung gaano maliwanag ang bawat pattern. Nang natapos namin ang pagbibisikleta sa pagitan ng mga buffer ay inilipat namin ang mga buffer na 'display' at 'susunod na display', kaya't ang pattern na bumubuo ng pagpapaandar ay susulat lamang sa buffer na 'susunod na display'. Ipinapakita ito ng diagram sa ibaba. Dapat mong makita na ang paglipat ay kukuha ng 64 mga frame ng pag-scan. Sa larawan, ipinakita ng maliit na inset ang diagram ng pag-scan ng fram mula sa nakaraang pahina nang maingat na na-scale pababa. Isang salita sa sariwang rate. Ang lahat ng ito ay kailangang gawin nang napakabilis. Mayroon kaming dalawang antas ng labis na pagkalkula, isa para sa paligid ng dimmness ng display at isa para sa walong frame cycle na ginugol sa paggawa ng isang paglipat sa pagitan ng dalawang buffer. Sa gayon ang code na ito ay dapat na nakasulat sa pagpupulong, ngunit sapat na mabuti sa 'C'.

Hakbang 4: Konstruksiyon - ang PCB

Konstruksiyon - ang PCB
Konstruksiyon - ang PCB
Konstruksiyon - ang PCB
Konstruksiyon - ang PCB

Ito ay medyo prangka. Isang dobleng panig na PCB na may ilang mga bahagi ng SMD sa itaas. Paumanhin kung ikaw ay isang through hole person, ngunit mas madaling gumawa ng mga proyekto sa SMD ….. Walang mga butas upang mag-drill. Dapat ay mayroon kang isang matatag na kamay, isang temperatura na kinokontrol na istasyon ng paghihinang at maraming ilaw at pagpapalaki upang gawing mas madali ang mga bagay.

Ang tanging bagay na dapat tandaan sa pagtatayo ng PCB ay ang pagsasama ng isang konektor para sa pagprograma ng PIC. Kumokonekta ito sa mga ICSP pin sa PIC at kakailanganin mo ng isang programmer ng ICSP. Muli ay ginamit ko ang isang madaling gamiting sa aking konektor sa junkbox. Maaari mong alisin ito at mag solder lamang ng mga wire sa pad kung nais mo. Bilang kahalili kung mayroon ka lamang isang naka-socket na programmer, maaari kang gumawa ng isang header na naka-plug sa iyong socket at pagkatapos ay solder iyon sa mga ICSP pad. Kung gagawin mo ito, pagkatapos ay idiskonekta ang Rx at ikonekta ang Ry na zero lang ang mga link ng ohm (Gumagamit lang ako ng solder blob). Ididiskonekta nito ang natitirang circuit power mula sa PIC upang hindi ito makagambala sa pagprograma. Ang isang naka-socket na programmer ay gumagamit lamang ng mga ICSP pin tulad ng isang programmer ng ICSP, walang magic na kasangkot talaga. Kailangan mo ring gawin ito kung mali mong nakalimutan mong maglagay ng pagkaantala sa code bago magsimula ang RTC. Para sa 16F88 ang mga pin ng programa ng ICSP ay kapareho ng mga pin na kinakailangan para sa 32.768kHz na kristal na ginamit para sa RTC …… kung ang T1 external oscillator (ibig sabihin ang RTC) ay tumatakbo bago simulan ng ICSP na gumana ito, pagkatapos ay mabibigo ang programa. Karaniwan kung mayroong isang pag-reset sa MCLR pin at mayroong isang pagkaantala, pagkatapos ang data ng ICSP ay maaaring maipadala sa mga pin na ito at ang programa ay maaaring magsimula nang maayos. Gayunpaman sa pamamagitan ng paghihiwalay ng lakas sa PIC ang programmer ng ICSP (o socket na programmer na may isang header) ay maaaring makontrol ang lakas sa aparato at pilitin ang isang programa. Ang iba pang mga bagay na dapat tandaan ay ang mga kristal na pad sa PCB ay orihinal na idinisenyo para sa mga kristal na SMD. Hindi ako makapaghintay para maihatid ang ilan kaya ang 32.768kHz na kristal na relo ay na-solder sa itaas tulad ng ipinakita, at ang 20MHz na kristal ay naka-attach sa pamamagitan ng pagbabarena ng isang pares ng mga hole sa mga pad, sinusundot ang kristal sa ilalim at paghihinang sa tuktok Maaari mong makita ang mga pin sa kanan lamang ng PIC16F88.

Hakbang 5: Ang Holographic Film at Pabahay

Ang Holographic Film at Pabahay
Ang Holographic Film at Pabahay
Ang Holographic Film at Pabahay
Ang Holographic Film at Pabahay
Ang Holographic Film at Pabahay
Ang Holographic Film at Pabahay

Ang pangwakas na konstruksyon ay simpleng paglalagay ng PCB sa kaso at pagkatapos ng pag-program na nakakabit ito sa isang dob ng mainit na pandikit. Pinapayagan ng tatlong butas ang pag-access sa mga microswitch mula sa harap.

Ang kapansin-pansin na bahagi ng orasan na ito ay ang paggamit ng isang holographic diffuser film. Ito ay espesyal na pelikulang pinaghigaan ko na nagbibigay ng magandang lalim sa aparato. Maaari mong gamitin ang simpleng papel sa pagsubaybay (kung saan ililipat ko ang PCB sa harap), o anumang iba pang diffuser tulad ng mga ginamit sa mga flourescent light fixture. Karanasan tungkol sa, ang tanging bagay na kailangan nitong gawin ay payagan kang makilala sa pagitan ng bilang ng mga nakailaw na LED, o kung hindi man mabibilang ang mga tuldok upang sabihin na ang oras ay magiging mahirap. Gumamit ako ng materyal na holographic dispersion mula sa Physical Optics Coorporation (www.poc.com) na may 30 degree na pabilog na pagpapakalat, ang ipinakita na katayuan ng supercomputer na ipinakita sa ibang lugar sa itinuturo na gumamit ng isang pelikula na may 15x60degree elliptical dispersion. Maaari kang gumamit ng ilang blackout tape upang maitago ang mga makintab na looban sa araw na araw upang makakuha ng isang mas misteryosong hitsura. Maaari mo ring iwanang malinaw ang display at hayaan ang mga tao na makita ang mga loob tulad ng ginawa ko. Ang stand ay dalawang piraso ng aluminyo 'L' bar na may kaunting tinadtad sa ilalim upang payagan ang isang liko. Tandaan sa mga larawang ito ang dagdag na pag-iilaw ay idinagdag upang makita mo ang mga pabalat ng display atbp. Sa normal na pag-iilaw ng sala, ang mga LED ay mas kilala, kahit sa madaling araw.

Hakbang 6: Software at User Interface

Ang pagpapatakbo ng aparato ay napaka-simple, walang mga espesyal na mode ng pattern o marangyang bagay. Ang nagagawa lamang ay ipakita ang oras.

Upang maitakda ang oras unang pindutin ang SW1. Ang aparato ay mai-flash ang lahat ng mga LED ng ilang beses at pagkatapos ang 10s na oras na pangkat ng LEDs SW3 ay magpapataas ng napiling pangkat na SW2 ay lilipat sa susunod na pangkat ng mga LED, sa bawat oras na flashing lahat ng mga LED sa pangkat. Ang code ay nakasulat para sa Sourceboost 'C' compiler bersyon 6.70. Ang RTC code ay nasa t1rtc.c / h file, at mayroong isang nakakagambala na pag-andar sa T1 timer ng PIC. Ang T1 timer ay nakatakda upang makagambala bawat 1 segundo. Sa bawat segundo, ang variable para sa oras ay nadagdagan. Gayundin ang isang tick timer ay binibilang bawat segundo kasama ang oras. Ginagamit ito upang matukoy kung kailan lilipat ang display. Gumagamit din ang interrupt function ng T0 timer makagambala upang i-refresh ang display, tumatawag sa isang pagpapaandar sa display.c Ang mga file display.h / display.c naglalaman ng mga pagpapaandar upang i-update ang display at ipakita ang oras Ang mga file control.c / h naglalaman ng mga pagpapaandar upang maitakda ang oras at basahin ang mga switch Ang mga file na holoclock.c / h ang pangunahing mga loop at pagsisimula.

Inirerekumendang: