Përmbajtje:

Minidot 2 - Holoclock: 6 hapa
Minidot 2 - Holoclock: 6 hapa

Video: Minidot 2 - Holoclock: 6 hapa

Video: Minidot 2 - Holoclock: 6 hapa
Video: Rakaman Hantu Terkentut Dalam Tandas... 2024, Nëntor
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Epo ndoshta holoclock është pak i pasaktë…. Përdor film shpërndarës holografik në pjesën e përparme për të dhënë pak thellësi. Në thelb ky udhëzues është një azhurnim i Minidotit tim të mëparshëm të vendosur këtu: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/dhe ri-përdorimi i shumë kodeve dhe qarqeve nga Microdot-i im i vendosur këtu: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD dhe kodet Sourceboost përfshihen në skedarët zip të bashkangjitur. Pse? Minidot i mëparshëm ishte tepër kompleks, nga Microdot mësova se si të bëj një RTC në një PIC duke përdorur vetëm një kristal 32.768 dhe nuk kam nevojë të përdor një çip të veçantë RTC. Gjithashtu doja të heqja qafe çipat e ekranit nga Minidot e mëparshëm. Pra, tani ka vetëm një çip rregullator të energjisë dhe një PIC16F88…. Vetëm dy patate të skuqura. Arsyet e tjera për një përditësim ishin që Minidot im po bëhej pak i pabesueshëm për shkak të bordit të veçantë të ndërprerës dhe doja një zbehje të butë midis modeleve të pikave si si dhe një lloj sensori të dritës së ambientit për të zbehur ekranin gjatë natës. Minidot tjetër ishte ndriçim fiks dhe ndriçonte një dhomë gjatë natës. Pajisja u ndërtua me ndihmën e paketës softuerike EagleCad dhe përpiluesit Sourceboost. Ju do të duhet të keni një përvojë me elektronikën dhe programimin e kontrolluesve PIC për të filluar këtë projekt. Ju lutemi vini re se kjo nuk është një udhëzues për programet elektronike ose PIC, kështu që ju lutemi mbani pyetjet relevante për modelin e Miniclock. Referojuni udhëzimeve të mësipërme ose shumë udhëzimeve të tjera në këtë faqe për këshilla mbi përdorimin e EagleCad ose programimin e PIC -ve. Pra, këtu është….. Minidot 2, The Holoclock …… ose Minidot Brezi tjetër ………….

Hapi 1: Qarku

Qarku
Qarku
Qarku
Qarku
Qarku
Qarku

Ky qark është shumë i ngjashëm me Microdot. Vini re se grupi charlieplex është praktikisht identik … vetëm disa kunja janë zhvendosur.

Një kristal 20Mhz i është shtuar qarkut Microdot për të vendosur PIC shumë më shpejt, kjo lejon që grupi të skanohet më shpejt dhe mundëson zbatimin e një algoritmi të zbehjes. Algoritmi i zbehjes ishte shumë i rëndësishëm për të funksionuar një model i kryqëzuar dhe funksionimi i dritës së ambientit. Kjo do të ishte e pamundur me Microdot, për shkak të shpejtësisë më të ngadaltë të orës pasi disa cikle skanimi duheshin shpenzuar për zbehje. Shihni pjesën tjetër për një përshkrim të funksionimit të Dimming. Gjërat e tjera për t'u vënë në dukje janë përdorimi i një rregullatori të pompës së ngarkimit MCP1252 për të furnizuar 5V, çipin tim të preferuar për momentin. Nëse modifikoni qarkun, mund të përdorni një thjeshtë 7805 të vjetër …… Unë vetëm kam një numër të këtyre patate të skuqura të dobishme që varen përreth. Tani i kam zhvendosur çelsat në pjesën e përparme, kursen ngadalësimin pas orës pas ndërprerjes së energjisë për të rivendosur kohën dhe tani gjithçka është vetëm një PCB…. Nuk ka probleme me kabllot. Gjithashtu vlen të përmendet përfshirja e një LDR. Kjo përdoret në një ndarës të tensionit i cili ndihet nga kunja A/D në PIC. Kur PIC ndjen se niveli i dritës së ambientit është i ulët (p.sh. koha e natës) algoritmi i zbehjes e mban grupin charlieplex të errët për më shumë cikle sesa kur niveli i dritës është i lartë. Unë nuk mund të gjej një simbol LDR në bibliotekën Eaglecad, kështu që unë thjesht përdor një simbol LED ….. mos u mashtroni është një LDR. Shikoni foton aktuale të PCB më poshtë. Një gjë për tu vënë re kur përdorni LED me shumë ngjyra në një grup charliplex. Duhet të siguroheni që tensioni i përparmë i LED -ve të jetë pak a shumë i njëjtë. Nëse jo, atëherë mund të ndodhin shtigje të humbura aktuale dhe LED të shumtë do të ndizen. Kështu, përdorimi i LED -ve me fuqi 5 mm ose më të lartë për këtë konfigurim nuk do të funksionojë pasi zakonisht ka një ndryshim mjaft të madh midis LED -ve të gjelbër/blu dhe LED -ve të kuq/verdhë. Në këtë rast kam përdorur 1206 LED SMD dhe LED të gjelbër/blu me efikasitet të lartë në veçanti. Megjithatë, tensionet e përparme nuk ishin një çështje këtu. Nëse dëshironi të përdorni një përzierje të gjelbër/blu dhe të kuq/të verdhë LED me fuqi më të lartë në një grup charlieplex, do t'ju duhet të ndani ngjyrat e ndryshme në dy vargje charliplex. Ka shpjegime të shumta të karlieplexing që mund të kërkohen në Google …… Nuk do të hyj në detaje këtu. Do ta lë ty të bësh disa kërkime. (Shtypni ikonën e vogël 'i' në cep të fotografisë më poshtë për të parë një version më të madh)

Hapi 2: Algoritmi i Dimimit - Modulimi i Gjerësisë së Pulsit të Charliplexed

Algoritmi i Dimimit - Modulimi i Gjerësisë së Pulsit të Charliplexed
Algoritmi i Dimimit - Modulimi i Gjerësisë së Pulsit të Charliplexed

Siç u përmend më herët, doja që modelet e ndryshme të pikave për kohën të zbeheshin pa probleme, në vend që të lëviznin nga një model në tjetrin. Shikoni videon për një demonstrim. Në mes është ora e re Minidot, në të djathtë është Minidot më i vjetër. Vini re se sa më e bukur është e reja. (FYI ekranet e tjera në sfond janë ekrani im i superkompjuterit Minicray dhe grimca ime e kapur Nebulon e cila fuqizon Minicray në një fushë të mbylljes magnetike antimaterie. Shih këtu: https://www.youtube.com/watch? V = bRupDulR4ME për një demonstrim të dhomës së mbylljes së nebulonit) Nëse shikoni kodin, hapni skedarin display.c. Vini re se ekzistojnë katër vargje për hartëzimin e vlerave të tris/portit për të ndriçuar çdo grup të veçantë dhe dy vargje (një më shumë se kodi Microdot) për të përcaktuar se cilat LED duhet të ndriçohen për çdo model të veçantë të LEDs. Psh:

// LED1 LED2 LED3… shenjë e panënshkruar LEDS_PORTA [31] = {0x10, 0x00, 0x00,… shenjë e panënshkruar LEDS_TRISA [31] = {0xef, 0xff, 0xff,… karrik i panënshkruar LEDS_PORTB [31] = {0x00, 0x02, 0x04,. Për të ndezur LED1 për shembull, duhet të vendosni regjistrat TRIS TRISA: B = 0xef: 0xfd dhe regjistrat PORT PORTA: B = 0x10: 0x00 etj. Nëse i shkruani vlerat tris në binar, do të vini re se në çdo kohë, janë të aktivizuara vetëm dy dalje. Të tjerët janë vendosur të gjithë në Tri-state (pra regjistri TRIS). Kjo është thelbësore për karlieplexing. Ju gjithashtu do të vini re se një dalje është gjithmonë një '1' logjike dhe tjetra është gjithmonë një '0' …. Drejtimi i të cilit ndizet cilado LED është midis këtyre dy linjave të daljes. Vlera e fundit në port/tris vargjet janë një vlerë e pavlefshme për të ndezur fare LED. Në Microdot, funksioni update_display cikloi vazhdimisht përmes një grupi tjetër (nLeds ) për të parë nëse ajo LED e veçantë do të ndriçohej. Nëse ishte, atëherë vlerat përkatëse të tris/portit u vendosën dhe LED ndriçoi për një periudhë kohe. Përndryshe, vlera zero u dërgua në regjistrat PICs TRIS/PORT dhe asnjë LED nuk u ndriçua për një periudhë kohe. Kur bëhet mjaft shpejt kjo dha një model. Pjesa tjetër e programit do të lexonte periodikisht vlerat e RTC dhe do të krijonte një model të mirë të rastësishëm në atë grup….dhe kështu ekrani ndryshoi. Për të bërë një funksion të zbehjes, kjo u zgjerua pak në mënyrë që pasi 30 LED -të ose të ndriçoheshin (ose jo) atëherë periudhat shtesë do të shpenzoheshin për dërgimin e vlerave zero nëse ekrani do të zbehej ….. për shkëlqim të plotë, atëherë nuk do të shpenzoheshin periudha shtesë. Kur përsëritet nëse ka shumë periudha nul për LED -të e ndriçuar, ekrani do të jetë i zbehtë. Në fakt, ky është modulim i gjerësisë së impulsit të shumëfishtë….. ose sepse hardueri është i konfiguruar në një varg charlieplex, pastaj modulim i gjerësisë së impulsit të Charlieplexed. Diagrami i dytë më poshtë tregon konfigurimin bazë për këtë. Unë e quaj këtë një kornizë skanimi. 30 periudhat e para të kornizës përdoren për të kaluar nëpër LED … dhe një numër i ndryshueshëm i periudhave shtesë përcaktojnë se sa i zbehtë do të jetë ekrani. Ky cikël përsëritet. Periudha më të pavlefshme do të thotë më pak kohë që një LED të jetë e ndezur për kuadër (sepse u rrit numri i periudhave). Vini re boshti vertikal nuk nënkupton nivelin e tensionit. Gjendja aktuale e kunjave që shkojnë te LED ndryshon në varësi të pozicionit të saj në grupin charlieplex….. në diagram thjesht nënkupton ndezjen ose fikjen. Kjo gjithashtu nënkupton që gjatësia totale e kornizës në kohë gjithashtu u rrit, duke zvogëluar kështu rifreskimin normë. Ndërsa LED -të u errësuan, ata do të fillonin të dridheshin me fjalë të tjera. Pra, kjo metodë është e dobishme vetëm në një masë. Për orën, ishte në rregull. Një funksion quhet me ndërprerje që lexon konvertuesin A/D në PIC dhe vendos këtë nivel shkëlqimi. Nëse e lexoni kodin, ai gjithashtu kontrollon për të parë nëse LED është më i afërt me LDR dhe nuk bën asnjë cilësim të nivelit nëse është kështu, kjo ndalon që ekrani të ndriçojë papritur kur modeli të ndryshojë. Tjetra funksioni i zbehjes kryq.

Hapi 3: Algoritmi i zbehjes - Efekti i Zbehjes së Kryqit dhe Buferimi i Dyfishtë

Algoritmi i zbehjes - Efekti i Zbehjes Kryq dhe Buferimi i Dyfishtë
Algoritmi i zbehjes - Efekti i Zbehjes Kryq dhe Buferimi i Dyfishtë

Kalimi midis një modeli dhe tjetrit ishte më parë i menjëhershëm. Për këtë orë unë doja të tregoja një model që gradualisht zvogëlohej në shkëlqim dhe modeli tjetër gradualisht duke u rritur … dmth një zbehje kryq.

Nuk më duhej të kisha LED individuale për t'u kontrolluar në nivele të ndriçimit të veçantë për të bërë një zbehje kryq. Thjesht duhej modeli i parë në një shkëlqim dhe i dyti në një shkëlqim të ulët. Pastaj për një periudhë të shkurtër do të ulja pak shkëlqimin e së parës dhe do të rrisja të dytën … … kjo do të vazhdonte deri në modelin e dytë në tërësi. Atëherë ora do të priste derisa modeli tjetër ishte duke u shfaqur dhe do të kishte një tranzicion tjetër. Kështu më duhej të ruaja dy modele. Ai që po shfaqet aktualisht dhe modeli i dytë që ishte gati të shfaqet. Këto janë në vargjet nLedsA dhe nLedsB. (vini re asgjë që ka të bëjë me portet në këtë rast). Ky është tampon i dyfishtë. Funksioni update_display () u modifikua për të kaluar nëpër tetë korniza dhe të tregojë një numër kornizash nga një grup i parë, pastaj nga tjetri. Ndryshimi i numrit të kornizave të alokuara për secilën tampon gjatë tetë cikleve përcaktoi se sa i ndritshëm do të ishte çdo model. Kur mbaruam biçikletën midis tamponëve, ndryshuam tamponët "display" dhe "display next", kështu që funksioni i gjenerimit të modelit do të shkruante vetëm në tamponin "shfaqja tjetër". Diagrami më poshtë e tregon këtë me shpresë. Ju duhet të jeni në gjendje të shihni që kalimi do të marrë 64 korniza skanimi. Në foto, brendësia e vogël tregon diagramin e kornizës së skanimit nga faqja e mëparshme e zvogëluar me mjeshtëri. Një fjalë për normën e rifreskimit. E gjithë kjo duhet të bëhet shumë shpejt. Tani kemi dy nivele të llogaritjes shtesë, një për zbehjen e ekranit të ambientit dhe një për tetë ciklet e kornizës të kaluara duke bërë një kalim midis dy tamponëve. Kështu që ky kod duhet të shkruhet në kuvend, por është mjaft i mirë në 'C'.

Hapi 4: Ndërtimi - PCB

Ndërtimi - PCB
Ndërtimi - PCB
Ndërtimi - PCB
Ndërtimi - PCB

Kjo është mjaft e drejtpërdrejtë. Vetëm një PCB e dyanshme me disa përbërës SMD në krye. Na falni nëse jeni një person me vrima, por është shumë më e lehtë të bëni projekte SMD…. Pa vrima për të shpuar. Duhet të keni një dorë të qëndrueshme, një stacion saldimi të kontrolluar nga temperatura dhe shumë dritë dhe zmadhim për t'i bërë gjërat më të lehta.

E vetmja gjë që vihet re në ndërtimin e PCB është përfshirja e një lidhësi për programimin e PIC. Kjo lidhet me kunjat e ICSP në PIC dhe do t'ju duhet një programues ICSP. Përsëri kam përdorur një mjet të dobishëm për lidhësin tim të junkbox. Ju mund ta lini këtë dhe thjesht ngjitni telat në pads nëse dëshironi. Përndryshe, nëse keni vetëm një programues të kyçur, mund të bëni një kokë që futet në prizën tuaj dhe më pas ta bashkoni atë në pads ICSP. Nëse e bëni këtë, atëherë shkëputni Rx dhe lidhni Ry të cilat janë lidhje zero zero (unë thjesht përdor një pikë ngjitjeje). Kjo do të shkëpusë pjesën tjetër të energjisë së qarkut nga PIC, kështu që nuk ndërhyn me programimin. Një programues i lidhur vetëm përdor kunjat e ICSP si një programues ICSP, nuk ka asnjë magji të përfshirë në të vërtetë. Ju gjithashtu duhet ta bëni këtë nëse gabimisht keni harruar të vendosni një vonesë në kod para se të fillojë RTC. Për 16F88 kunjat e programimit ICSP janë të njëjta me kunjat e nevojshëm për kristalin 32.768kHz të përdorur për RTC … nëse oshilatori i jashtëm T1 (dmth RTC) po funksionon para se ICSP të fillojë punën, atëherë programimi do të dështojë Me Normalisht nëse ka një rivendosje në kunjin MCLR dhe ka një vonesë, atëherë të dhënat ICSP mund të dërgohen në këto kunja dhe programimi mund të fillojë siç duhet. Sidoqoftë, duke izoluar fuqinë në PIC, programuesi ICSP (ose programuesi i lidhur me një kokë) mund të kontrollojë fuqinë në pajisje dhe të detyrojë një program. Gjërat e tjera për t'u vënë në dukje janë se jastëkët kristalorë në PCB ishin krijuar fillimisht për kristale SMD. Mezi prisja që të dërgoheshin disa, kështu që kristali i orës 32.768kHz u ngjit në majë siç tregohet, dhe kristali 20MHz u lidh duke shpuar disa vrima në jastëkë, duke futur kristalin në pjesën e poshtme dhe duke u bashkuar në krye Ju mund t'i shihni kunjat vetëm në të djathtë të PIC16F88.

Hapi 5: Filmi Holografik dhe Strehimi

Filmi dhe Strehimi Holografik
Filmi dhe Strehimi Holografik
Filmi Holografik dhe Strehimi
Filmi Holografik dhe Strehimi
Filmi Holografik dhe Strehimi
Filmi Holografik dhe Strehimi

Ndërtimi përfundimtar është thjesht vendosja e PCB -së në kasë dhe pasi ta programoni duke e ngjitur me një zam të nxehtë. Tre vrima lejojnë hyrjen në mikroçelsat nga përpara.

Pjesa e dukshme e kësaj ore është përdorimi i një filmi shpërndarës holografik. Ky është një film i veçantë që kisha shtrirë përreth, i cili siguron një thellësi të këndshme për pajisjen. Ju mund të përdorni letër të thjeshtë gjurmuese (në të cilën do ta lëvizja PCB -në më përpara), ose ndonjë difuzor tjetër si ato të përdorura në pajisjet e dritës flourescent. Përvoja rreth, e vetmja gjë që duhet të bëni është t'ju lejojë të bëni dallimin midis numrit të LED -ve të ndriçuar, ose përndryshe numërimi i pikave për të treguar se koha do të jetë e vështirë. Kam përdorur material shpërndarës holografik nga Bashkëpunimi i Optikës Fizike (www.poc.com) me një shpërndarje rrethore 30 gradë, shfaqja e statusit të superkompjuterit e treguar diku tjetër në udhëzuesin përdorte një film me një shpërndarje eliptike 15x60degradë. Ju mund të përdorni një shirit fikjeje për të fshehur brendësinë e ndritshme gjatë ditës për të marrë një pamje më misterioze. Ju madje mund ta lini ekranin të qartë dhe t'i lini njerëzit të shohin brendësinë si unë. Stenda ishte dy copa prej alumini 'L' me një copë të copëtuar në pjesën e poshtme për të lejuar një kthesë. Shënim në këto fotografi u shtua ndriçim shtesë në mënyrë që të shihni kapakët e ekranit etj. Në ndriçimin normal të dhomës së ndenjes, LED -të janë më të spikatur, edhe në dritën e ditës.

Hapi 6: Softueri dhe Ndërfaqja e Përdoruesit

Funksionimi i pajisjes është shumë i thjeshtë, nuk ka mënyra të veçanta modeli ose gjëra të ndezura. E vetmja gjë që bën është shfaqja e kohës.

Për të vendosur kohën, së pari shtypni SW1. Pajisja do të ndezë të gjitha LED -të disa herë dhe më pas grupi 10 -orësh i LED -ve SW3 do të rrisë grupin e zgjedhur SW2 do të kalojë në grupin tjetër të LED -ve, çdo herë që ndez të gjitha LED -të në grup shkurtimisht. Kodi është shkruar për versionin 6.70 të përpiluesit Sourceboost 'C'. Kodi RTC është në skedarët t1rtc.c/h, dhe ka një funksion ndërprerjeje në kohëmatësin T1 të PIC. Kohëmatësi T1 është vendosur të ndërpresë çdo 1 sekondë. Në çdo sekondë, ndryshorja për kohën rritet. Gjithashtu një kohëmatës i shënimit numërohet çdo sekondë së bashku me kohën. Kjo përdoret për të përcaktuar kohën e kalimit të ekranit. Funksioni i ndërprerjes gjithashtu përdor ndërprerësin e kohëmatësit T0 për të rifreskuar ekranin, duke thirrur një funksion në ekran.c Skedarët display.h/display.c përmbajnë funksionet për të azhurnuar ekranin dhe për të treguar kohën Skedarët control.c/h përmbajnë funksionet për të vendosur kohën dhe lexuar çelsat Skedarët holoclock.c/h janë sythe kryesore dhe inicimi.

Recommended: