Kazalo:

Minidot 2 - holo ura: 6 korakov
Minidot 2 - holo ura: 6 korakov

Video: Minidot 2 - holo ura: 6 korakov

Video: Minidot 2 - holo ura: 6 korakov
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Julij
Anonim
Minidot 2 - holo ura
Minidot 2 - holo ura
Minidot 2 - holo ura
Minidot 2 - holo ura

No, morda je holoclock malo nenatančen…. Uporablja sprednjo holografsko disperzijsko folijo, ki daje malo globine. V bistvu je to navodilo posodobitev mojega prejšnjega Minidota, ki se nahaja tukaj: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/in ponovno uporabo veliko kode in vezja iz mojega Microdota, ki se nahaja tukaj: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD datoteke in koda Sourceboost je vključena v priložene datoteke zip. Zakaj? Prejšnji Minidot je bil preveč zapleten, od Microdota sem se naučil, kako narediti RTC na PIC -u z uporabo le 32.768 kristala in mi ni bilo treba uporabljati posebnega čipa RTC. Prav tako sem se želel znebiti čipov zaslona iz prejšnjega Minidota. Zdaj sta na voljo le čip regulatorja moči in PIC16F88….samo dva čipa. Drugi razlogi za posodobitev so bili, da je bil moj Minidot nekoliko nezanesljiv zaradi ločene stikalne plošče, zato sem želel mehko zbledenje med vzorci pik. pa tudi nekakšen senzor zunanje svetlobe za zatemnitev zaslona ponoči. Drugi Minidot je imel fiksno svetlost in je ponoči osvetljeval sobo. Naprava je bila izdelana s pomočjo programskega paketa EagleCad in prevajalnika Sourceboost. Za začetek tega projekta boste morali imeti nekaj izkušenj z elektroniko in programiranjem krmilnikov PIC. Prosimo, upoštevajte, da to ni navodilo za programiranje elektronike ali PIC, zato vas prosimo, da vprašanja, ki so pomembna za zasnovo Miniclock. Za nasvete o uporabi programa EagleCad ali programiranju PIC -jev si oglejte zgornja navodila ali številne druge navodila na tem spletnem mestu. Torej, tukaj je … Minidot 2, Holoclock …… ali Minidot Naslednja generacija ………….

1. korak: vezje

Vezje
Vezje
Vezje
Vezje
Vezje
Vezje

To vezje je zelo podobno Microdotu. Upoštevajte, da je niz charlieplex skoraj enak … premaknjenih je bilo le nekaj zatičev.

V vezje Microdot je bil dodan kristal 20 Mhz, ki veliko hitreje ureja PIC, kar omogoča hitrejše skeniranje matrike in izvedbo algoritma zatemnitve. Algoritem zatemnitve je bil zelo pomemben za delovanje funkcije križanja vzorcev in osvetlitve okolice. To bi bilo zaradi Microdota nemogoče zaradi počasnejše ure, saj je bilo treba nekatere cikle skeniranja porabiti za zatemnitev. Za opis funkcije zatemnitve glejte naslednji razdelek. Druge stvari, ki jih je treba omeniti, so uporaba regulatorja polnilne črpalke MCP1252 za napajanje 5V, trenutno mojega najljubšega čipa. Če bi spremenili vezje, bi lahko uporabili navaden stari 7805 … … samo nekaj teh priročnih žetonov visi naokoli. Zdaj sem premaknil stikala na sprednjo stran in prihranil vrtenje po zadnji uri po izpadu električne energije za ponastavitev časa, zdaj pa je vse samo eno tiskano vezje … brez težav s kabli. Opozoriti je treba tudi na vključitev LDR. To se uporablja v delilniku napetosti, ki ga zazna A/D pin na PIC. Ko PIC zazna, da je raven svetlobe v okolici nizka (tj. Ponoči), algoritem zatemnitve ohrani matriko charlieplex temno več ciklov kot pri visoki svetlobi. V knjižnici Eaglecad nisem našel simbola LDR, zato sem uporabil le simbol LED … … naj vas ne zavede, da je to LDR. Oglejte si dejansko sliko tiskanega vezja spodaj. Pri uporabi večbarvnih LED v nizu charliplex je treba opozoriti na eno stvar. Prepričati se morate, da je prednja napetost LED bolj ali manj enaka. V nasprotnem primeru lahko pride do potepajočih tokovnih poti in zasveti več LED. Tako uporaba LED diod 5 mm ali več za to konfiguracijo ne bo delovala, saj je običajno velika razlika med zeleno/modro LED in rdečo/rumeno LED. V tem primeru sem uporabil 1206 SMD LED in še posebej visoko učinkovite zeleno/modre LED diode. Sprednje napetosti tukaj niso bile problem. Če želite uporabiti kombinacijo zelenih/modrih in rdečih/rumenih LED z večjo močjo v nizu charlieplex, bi morali različne barve ločiti v dva polja charliplex. Obstajajo številne razlage charlieplexinga, ki jih je mogoče pobrskati po googlu … Ne bom se spuščal v podrobnosti. Prepustim vam, da opravite nekaj raziskav. (Pritisnite majhno ikono 'i' v kotu slike spodaj, če si želite ogledati večjo različico)

2. korak: Algoritem zatemnitve - modulacija širine impulza s čarlipleksom

Algoritem zatemnitve - modulacija širine impulza s čarlipleksom
Algoritem zatemnitve - modulacija širine impulza s čarlipleksom

Kot sem že omenil, sem želel, da različni vzorci pik za ta čas gladko zbledijo, namesto da bi se drseli od enega vzorca do drugega. Za ogled si oglejte video. V sredini je nova ura Minidot, na desni je starejši Minidot. Opazite, kako lepša je nova. (Ostali prikazi v ozadju so moj prikaz stanja superračunalnika Minicray in zajet delček Nebulon, ki napaja Minicray v magnetnem zaprtem polju antimaterije. Za predstavitev glejte tukaj: https://www.youtube.com/watch? V = bRupDulR4ME zaprte komore meglic) Če pogledate kodo, odprite datoteko display.c. Upoštevajte, da obstajajo štiri matrike za preslikavo vrednosti tris/port za osvetlitev določene matrike in dve matriki (ena več kot koda Microdot) za določanje, katere LED morajo biti osvetljene za kateri koli poseben vzorec LED: npr:

// LED1 LED2 LED3… brez podpisanega znaka LEDS_PORTA [31] = {0x10, 0x00, 0x00,… brez podpisanega znaka LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Brez podpisanega znaka LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… brez podpisanega znaka nLedsA [30]; brez podpisanega znaka nLedsB [30];Če želite na primer prižgati LED1, morate nastaviti registre TRIS TRISA: B = 0xef: 0xfd in registre PORT PORTA: B = 0x10: 0x00 itd. Če vrednosti tris zapišete v binarni obliki, boste opazili, da sta hkrati omogočena samo dva izhoda. Ostali so nastavljeni na Tri-stanje (torej register TRIS). To je osrednjega pomena za charlieplexing. Opazili boste tudi, da je en izhod vedno logičen '1', drugi pa vedno logičen '0' …, katerega smer se prižge, katera LED je med tema dvema izhodnima črtama. Zadnja vrednost v vratih/tris arrays je ničelna vrednost, ki vklopi nobeno LED. V Microdotu je funkcija update_display neprekinjeno krožila skozi drugo matriko (nLeds ), da bi ugotovila, ali naj ta LED dioda sveti. Če je bilo, so bile nastavljene ustrezne vrednosti tris/port in LED je za nekaj časa svetila. V nasprotnem primeru je bila ničelna vrednost poslana v registre TRIC/PORT PIC in za določen čas ni svetila nobena LED. Ko je bilo dovolj hitro, je to dalo vzorec. Preostali del programa bi občasno prebral vrednosti RTC in sestavil lep naključen vzorec v tem nizu….in se je zaslon spremenil. Za funkcijo zatemnitve so to nekoliko podaljšali, tako da se je po tem, ko je prižgalo 30 LED (ali ne), potem bi bila dodatna obdobja porabljena za pošiljanje ničelnih vrednosti, če bi bil zaslon zatemnjen …..za polno svetlost potem dodatna obdobja ne bi bila porabljena. Če bi se pri osvetljenih LED diodah pojavilo veliko ničelnih obdobij, bi bil zaslon zatemnjen. V bistvu je to multipleksna modulacija širine impulza …..ali ker je strojna oprema konfigurirana v shemi charlieplex, nato pa shema širine impulza s Charlieplexom. Drugi spodnji diagram prikazuje osnovne nastavitve za to. Temu pravim okvir za skeniranje. Prvih 30 obdobij v okvirju se uporabijo za prehod skozi LED diode …..in spremenljivo število dodatnih obdobij določa, kako slab bo zaslon. Ta cikel se ponovi. Več ničelnih obdobij pomeni manj časa za vklop LED na okvir (ker se je število obdobij povečalo). Upoštevajte, da navpična os ne pomeni napetostne ravni. Dejansko stanje nožic, ki gredo do LED, je odvisno od položaja v nizu charlieplex …..na diagramu pomeni le vklop ali izklop. To je pomenilo tudi, da se je skupna dolžina okvirja v času prav tako povečala, kar je zmanjšalo osveževanje oceniti. Ko so LED svetlele, bi začele utripati z drugimi besedami. Zato je ta metoda uporabna le do neke mere. Za uro je bilo v redu. Vmesno se pokliče funkcija, ki bere A/D pretvornik na PIC in nastavi to raven svetlosti. Če preberete kodo, preveri tudi, ali sveti LED, ki je najbližja LDR, in ne nastavi nobene nastavitve ravni, če je tako, s tem se zaslon nepričakovano sveti, ko se vzorec spremeni.

3. korak: Algoritem zatemnitve - učinek navzkrižnega zamika in dvojno pufranje

Algoritem zatemnitve - učinek navzkrižnega zamika in dvojno pufranje
Algoritem zatemnitve - učinek navzkrižnega zamika in dvojno pufranje

Prehod med enim vzorcem in naslednjim je bil prej takojšen. Za to uro sem želel prikazati, da se en vzorec postopoma zmanjšuje, svetlost pa naslednji vzorec, ki se postopoma povečuje … tj.

Za navzkrižno bledenje mi ni bilo treba imeti posameznih LED, ki bi jih lahko upravljali pri ločenih nivojih svetlosti. Prvi vzorec je bil potreben le pri eni svetlosti, drugi pa pri nizki. Nato bi v kratkem času nekoliko zmanjšal svetlost prvega in povečal drugega ….. to bi se nadaljevalo do drugega vzorca kot pri polnosti. Nato bi ura počakala, da se prikaže naslednji vzorec, in prišlo bi do drugega prehoda. Tako sem moral shraniti dva vzorca. Tisti, ki je trenutno prikazan, in drugi vzorec, ki se bo kmalu prikazal. Ti so v matrikah nLedsA in nLedsB. (v tem primeru ne upoštevajte nobenih opravil z vrati). To je dvojni pufer. Funkcija update_display () je bila spremenjena tako, da kroži po osmih okvirjih in prikazuje število sličic iz prvega polja, nato drugega. Spreminjanje števila sličic, dodeljenih vsakemu vmesnemu pomnilniku v osmih ciklih, je določilo, kako svetel bo vsak vzorec. Ko smo končali s kolesarjenjem med vmesnimi pomnilniki, smo zamenjali medpomnilnike 'display' in 'next display', tako da bi funkcija ustvarjanja vzorcev nato pisala samo v vmesnik 'next display'. Spodnji diagram to upa. Videti bi morali, da bo prehod trajal 64 sličic skeniranja. Na sliki mali vložek prikazuje diagram okvirnega skeniranja s prejšnje strani, ki je umetelno pomanjšan. Nekaj besed o stopnji ponovne svežine. Vse to je treba narediti zelo hitro. Zdaj imamo dve ravni dodatnih izračunov, eno za zatemnitev zunanjega zaslona in eno za osem ciklov okvirjev, ki smo jih porabili za prehod med dvema vmesnikoma. Tako bi bilo treba to kodo napisati v sklopu, vendar je dovolj dobra v 'C'.

4. korak: Gradnja - tiskana vezja

Konstrukcija - PCB
Konstrukcija - PCB
Konstrukcija - PCB
Konstrukcija - PCB

To je precej preprosto. Samo dvostransko tiskano vezje z nekaj komponentami SMD na vrhu. Oprostite, če ste oseba, ki je skoznjo luknjo, vendar je veliko lažje izdelovati projekte SMD … brez lukenj za vrtanje. Imeti morate mirno roko, temperaturno krmiljeno spajkalno postajo ter veliko svetlobe in povečave, da olajšate stvari.

Edina stvar, ki je pomembna pri izdelavi tiskanega vezja, je vključitev priključka za programiranje PIC. To se poveže z zatiči ICSP na PIC in potrebovali boste programer ICSP. Spet sem uporabil priročen priključek za junkbox. To lahko izpustite in samo spajkate žice na blazinice, če želite. Če imate samo vtični programer, lahko naredite glavo, ki se priklopi v vtičnico, in jo nato spajkate na blazinice ICSP. Če to storite, odklopite Rx in priključite Ry, ki sta samo nič ohm (uporabljam samo spajkalno blobo). To bo prekinilo preostalo napajanje vezja s PIC -a, da ne bo motilo programiranja. Programer z vtičnico samo uporablja zatiče ICSP kot programer ICSP, v resnici ni nobene magije. To morate storiti tudi, če ste pomotoma pozabili v kodo vnesti zamudo pred zagonom RTC. Za 16F88 so programski zatiči ICSP enaki kot zatiči, potrebni za kristal 32,768 kHz, uporabljen za RTC ……, če zunanji oscilator T1 (tj. RTC) deluje, preden ICSP lahko začne delovati, potem programiranje ne bo uspelo. Običajno, če je na pin MCLR ponastavljeno in pride do zamude, se lahko podatki ICSP pošljejo na te nožice in programiranje se lahko pravilno začne. Programer ICSP (ali vtični programer z glavo) z izolacijo napajanja na PIC lahko nadzoruje napajanje naprave in sproži program. Druge stvari, ki jih je treba omeniti, so, da so bile kristalne blazinice na tiskanem vezju prvotno zasnovane za SMD kristale. Komaj sem čakal, da jih bo nekaj dostavljenih, zato je bil kristal ure 32,768 kHz spajkan na vrh, kot je prikazano, kristal 20 MHz pa je bil pritrjen z vrtanjem nekaj lukenj v blazinicah, ki je kristal skozi dno in spajkal na vrh. Zatiči so prikazani desno od PIC16F88.

5. korak: Holografski film in stanovanje

Holografski film in stanovanje
Holografski film in stanovanje
Holografski film in stanovanje
Holografski film in stanovanje
Holografski film in stanovanje
Holografski film in stanovanje

Končna konstrukcija je preprosto vstavljanje tiskanega vezja v ohišje in po programiranju lepljenje z vročim lepilom. Tri luknje omogočajo dostop do mikro stikal od spredaj.

Pomemben del te ure je uporaba holografske razpršilne folije. To je poseben film, ki sem ga imel naokoli, ki napravi daje lepo globino. Uporabite lahko navadni sledilni papir (v katerem bi tiskalno vezje premaknil bližje sprednji strani) ali kateri koli drug difuzor, kot so tisti, ki se uporabljajo v fluorescenčnih svetilkah. Izkušnje, edina stvar, ki jo morate storiti, je, da vam omogoči razlikovanje med številom osvetljenih LED, sicer bo štetje pik, ki bodo povedale čas, težko. Uporabil sem holografski disperzijski material iz Physical Optics Coorporation (www.poc.com) s 30 -stopinjsko krožno disperzijo, zaslon stanja superračunalnika, prikazan drugje v navodilih, je uporabil film z eliptično disperzijo 15x60 stopinj. Če želite podnevi skriti sijočo notranjost, lahko uporabite nekaj zatemnitvenega traku, da dobite bolj skrivnosten videz. Lahko celo pustite zaslon čist in pustite ljudem, da vidijo notranjost, kot sem jaz. Stojalo je bilo sestavljeno iz dveh kosov aluminijaste palice „L“, ki je bila na dnu nekoliko izrezana, da je bilo mogoče upogniti. Opomba na teh slikah je bila dodana dodatna razsvetljava, tako da si lahko ogledate pokrove zaslona itd. Pri običajni osvetlitvi dnevne sobe so LED svetlejše tudi pri dnevni svetlobi.

6. korak: Programska oprema in uporabniški vmesnik

Delovanje naprave je zelo preprosto, brez posebnih načinov vzorčenja ali bleščečih stvari. Edino, kar počne, je prikaz časa.

Za nastavitev časa najprej pritisnite tipko SW1. Naprava bo nekajkrat utripala vse LED -diode, nato pa bo skupina LED -diod SW3 za 10 sekund povečala izbrano skupino. Koda je napisana za prevajalnik Sourceboost 'C' različice 6.70. Koda RTC je v datotekah t1rtc.c/h in ima funkcijo prekinitve na časovniku T1 PIC. Časovnik T1 je nastavljen na prekinitev vsake 1 sekunde. Vsako sekundo se spremenljivka za čas poveča. Prav tako se časovnik odšteva vsako sekundo skupaj s časom. S tem določite, kdaj želite preklopiti zaslon. Funkcija prekinitve uporablja tudi časovni prekinitev T0 za osvežitev zaslona, pri čemer pokliče funkcijo v display.c Datoteke display.h/display.c vsebujejo funkcije za posodobitev zaslona in prikaz časa Datoteke control.c/h vsebujejo funkcije za nastavitev časa in branje stikal Datoteke holoclock.c/h so glavne zanke in inicializacija.

Priporočena: