Obsah:

Minidot 2 - Holoclock: 6 krokov
Minidot 2 - Holoclock: 6 krokov

Video: Minidot 2 - Holoclock: 6 krokov

Video: Minidot 2 - Holoclock: 6 krokov
Video: Видео-обзор коллиматорных прицелов Delta Optical MiniDot HD 24 и HD 26 2024, Júl
Anonim
Minidot 2 - Holo hodiny
Minidot 2 - Holo hodiny
Minidot 2 - Holo hodiny
Minidot 2 - Holo hodiny

Možno sú holo hodiny trochu nepresné … používa na prednej strane holografický disperzný film, aby poskytol trochu hĺbky. V zásade je tento návod na aktualizáciu môjho predchádzajúceho Minidotu, ktorý sa nachádza tu: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/a opätovné použitie veľkého množstva kódu a obvodov z môjho Microdot umiestneného tu: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD súbory a kód Sourceboost sú súčasťou priložených súborov zip. Prečo? Predchádzajúci Minidot bol príliš zložitý, od Microdota som sa naučil, ako vytvoriť RTC na PIC pomocou iba kryštálu 32,768 a nepotreboval som použiť špeciálny RTC čip. Tiež som sa chcel zbaviť zobrazovacích čipov z predchádzajúceho Minidotu. Takže teraz je k dispozícii iba čip regulátora výkonu a PIC16F88 … iba dva čipy. Ďalšími dôvodmi aktualizácie boli moje Minidoty, ktoré boli vzhľadom na samostatnú spínaciu dosku trochu nespoľahlivé a chcel som jemné vyblednutie medzi bodovými vzormi, pretože rovnako ako nejaký snímač okolitého svetla na stlmenie displeja v noci. Druhý Minidot mal pevný jas a v noci osvetľoval miestnosť. Zariadenie bolo skonštruované pomocou softvérového balíka EagleCad a kompilátora Sourceboost. Na spustenie tohto projektu budete potrebovať určité skúsenosti s elektronikou a programovaním regulátorov PIC. Upozorňujeme, že toto nie je návod na programovanie elektroniky ani PIC, preto si nechajte otázky týkajúce sa dizajnu Miniclock. Rady týkajúce sa používania EagleCad alebo programovania PIC nájdete v pokynoch uvedených vyššie alebo v mnohých ďalších pokynoch na týchto stránkach. Takže tu je ….. Minidot 2, Holoclock …… alebo Minidot budúcej generácie ………….

Krok 1: Okruh

Okruh
Okruh
Okruh
Okruh
Okruh
Okruh

Tento obvod je veľmi podobný Microdot. Všimnite si toho, že pole charlieplex je prakticky totožné … iba bolo presunutých niekoľko pinov.

Do obvodu Microdot bol pridaný kryštál 20Mhz na oveľa rýchlejšie taktovanie PIC, čo umožňuje rýchlejšie skenovanie poľa a implementáciu algoritmu stmievania. Algoritmus stmievania bol veľmi dôležitý pre to, aby fungovala funkcia zoslabovania krížového vzoru a okolitého svetla. To by bolo nemožné s Microdotom, kvôli pomalšej rýchlosti hodín, pretože niektoré skenovacie cykly bolo potrebné stráviť na stmievanie. V nasledujúcej časti nájdete popis funkcie stmievania. Ďalšou vecou, ktorú je potrebné poznamenať, je použitie regulátora nabíjacieho čerpadla MCP1252 na napájanie 5 V, v súčasnej dobe môj obľúbený čip. Ak ste upravili obvod, mohli by ste použiť obyčajný starý 7805 ……. Teraz som posunul prepínače dopredu, ušetrí som si šmátranie po zadnej časti hodín po výpadkoch napájania, aby som vynuloval čas a teraz je všetko iba jedna PCB ….bez problémov s kabelážou. Tiež je dôležité zahrnúť LDR. Toto sa používa v deliči napätia, ktorý je snímaný pinom A/D na PIC. Keď PIC sníma nízku úroveň okolitého svetla (tj. Nočný čas), algoritmus stmievania udržiava pole charlieplexu tmavé po dobu viac cyklov, ako keď je úroveň svetla vysoká. V knižnici Eaglecad som nenašiel symbol LDR, a tak som použil symbol LED ….. nenechajte sa zmiasť, je to LDR. Pozrite si skutočný obrázok DPS nižšie. Pri použití viacfarebných diód LED v poli charliplex je potrebné si uvedomiť jednu vec. Musíte sa uistiť, že predné napätie LED diód je viac -menej rovnaké. Ak nie, môžu sa objaviť cesty bludného prúdu a rozsvieti sa niekoľko LED diód. Použitie 5 mm alebo viac výkonových diód LED na túto konfiguráciu nebude fungovať, pretože medzi zelenými/modrými diódami LED a červenými/žltými diódami LED je zvyčajne veľký rozdiel. V tomto prípade som použil predovšetkým 1206 SMD LED diód a vysoko účinné zelené/modré LED diódy. Predné napätie tu však nebolo problémom. Ak by ste chceli použiť kombináciu zelených/modrých a červených/žltých diód LED s vyšším výkonom v poli charlieplex, museli by ste oddeliť rôzne farby do dvoch polí charliplex. Existuje množstvo vysvetlení charlieplexingu, ktoré je možné vygoogliť …… Nebudem sa tu rozpisovať. Nechám na vás urobiť malý prieskum. (Väčšiu verziu zobrazíte stlačením malej ikony „i“v rohu obrázku nižšie)

Krok 2: Algoritmus stmievania - modulácia šírky impulzu Charliplexed

Algoritmus stmievania - modulácia šírky impulzu s Charliplexom
Algoritmus stmievania - modulácia šírky impulzu s Charliplexom

Ako už bolo spomenuté, chcel som, aby rôzne bodové vzory na určitý čas plynulo mizli, a nie trhali z jedného vzoru na druhý. Ukážku nájdete vo videu. V strede sú nové hodiny Minidot, vpravo sú staršie Minidot. Všimnite si, o čo je ten nový krajší. (Pre informáciu, ostatné displeje na pozadí sú môj stavový superpočítač Minicray a moja zachytená častica Nebulon, ktorá napája Minicray v magnetickom poli s antihmotou. Ukážku nájdete tu: https://www.youtube.com/watch? V = bRupDulR4ME väzobnej komory nebulonu) Ak sa pozriete do kódu, otvorte súbor display.c. Všimnite si toho, že existujú štyri polia na mapovanie hodnôt tris/port na osvetlenie akéhokoľvek konkrétneho poľa a dve polia (jedno viac ako kód Microdot) na definovanie toho, ktoré diódy LED by mali byť osvetlené pre akýkoľvek konkrétny vzor LED. Napr.

// LED1 LED2 LED3… nepodpísaný znak LEDS_PORTA [31] = {0x10, 0x00, 0x00,… unsigned char LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Znak bez znamienka LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9, … znak bez znamienka nLedsA [30]; znak bez znamienka nLedsB [30];Ak chcete napríklad rozsvietiť LED1, musíte nastaviť registre TRIS TRISA: B = 0xef: 0xfd a registre PORT PORTA: B = 0x10: 0x00 a tak ďalej. Ak napíšete hodnoty tris binárne, zistíte, že súčasne sú k dispozícii iba dva výstupy. Ostatné sú všetky nastavené na trojstavový (preto register TRIS). Toto je kľúčové pre charlieplexing. Tiež si všimnete, že jeden výstup je vždy logický '1' a druhý je vždy logický '0' …. Ktorého smer sa rozsvieti bez ohľadu na to, ktorá LED je medzi týmito dvoma výstupnými riadkami. Posledná hodnota v porte/tris pole je nulová hodnota, ktorou sa nezapne žiadna dióda LED. V Microdot sa funkcia update_display nepretržite cyklovala cez ďalšie pole (nLeds ), aby sa zistilo, či sa má rozsvietiť konkrétna LED. Ak to bolo, potom boli nastavené zodpovedajúce hodnoty tris/port a LED dióda na určitý čas svietila. V opačnom prípade bola hodnota null odoslaná do registrov TRIS/PORT PIC a určitý čas nesvietila žiadna dióda LED. Keď sa to urobilo dostatočne rýchlo, dalo to vzor. Zvyšok programu by pravidelne čítal hodnoty RTC a v tomto poli vytvoril pekný náhodný vzor … a tak sa zmenil displej. Aby sa dosiahla funkcia stmievania, bolo toto mierne rozšírené, takže po rozsvietení 30 diód LED (alebo nie), potom by boli dodatočné periódy vynaložené na odosielanie nulových hodnôt, ak by bol displej stlmený ….. pre plný jas potom nebudú strávené žiadne ďalšie periódy. Ak by sa opakovanie opakovalo, ak by na rozsvietených diódach LED bolo veľa nulových periód, displej by bol tmavý. V skutočnosti je to multiplexovaná modulácia šírky impulzov ….. alebo pretože hardvér je nakonfigurovaný v charlieplexovom usporiadaní, potom charlieplexovaná modulácia šírky impulzov. Druhý diagram nižšie ukazuje základné nastavenie. Hovorím tomu skenovací rámec. Prvých 30 bodiek do rámčeka sa používa na prechod diódami LED ….. a rôzny počet ďalších období určuje, ako tmavý bude displej. Tento cyklus sa opakuje. Viac nulových periód znamená kratší čas rozsvietenia diódy LED na jeden rámec (pretože počet období sa zvýšil). Všimnite si, že zvislá os neznamená úroveň napätia. Skutočný stav pinov prechádzajúcich k diódam LED sa líši v závislosti od jeho polohy v poli charlieplex ….. v diagrame to znamená iba zapnutie alebo vypnutie. To tiež znamenalo, že sa zvýšila aj celková dĺžka rámca v čase, čím sa znížilo obnovenie sadzba. Keď diódy LED stmavli, začnú blikať inými slovami. Táto metóda je teda užitočná iba do určitej miery. Pre hodiny to bolo v poriadku. Funkcia sa nazýva prerušovane, ktorá číta A/D prevodník na PIC a nastavuje túto úroveň jasu. Ak prečítate kód, skontroluje tiež, či svieti dióda LED najbližšie k LDR, a ak nie, nevykonáva žiadne nastavenie úrovne, čím sa zobrazenie zmení neočakávane jasnejšie, keď sa vzor zmení. Ďalej funkcia krížového stlmenia.

Krok 3: Algoritmus stmievania - efekt krížového stlmenia a dvojité ukladanie do vyrovnávacej pamäte

Algoritmus stmievania - efekt krížového stlmenia a dvojité ukladanie do vyrovnávacej pamäte
Algoritmus stmievania - efekt krížového stlmenia a dvojité ukladanie do vyrovnávacej pamäte

Prechod medzi jedným vzorom a druhým bol predtým okamžitý. Pre tieto hodiny som chcel ukázať jeden vzor, ktorý postupne klesá v jase a ďalší vzor sa postupne zvyšuje … tj. Krížový útlm.

Na krížové stlmenie som nepotreboval mať jednotlivé LED diódy na ovládanie na rôznych úrovniach jasu. Stačil prvý vzor pri jednom jase a druhý pri nízkom jase. Potom počas krátkeho obdobia trochu znížim jas prvého a zvýšim druhý ….. to bude pokračovať až do úplného naplnenia druhého vzoru. Potom hodiny počkajú, kým sa ukáže ďalší vzor a dôjde k ďalšiemu prechodu. Preto som potreboval uložiť dva vzory. Aktuálne zobrazovaný a druhý vzor, ktorý sa mal práve zobraziť. Tieto sú v poliach nLedsA a nLedsB. (všimnite si, že v tomto prípade nemá nič spoločné s portami). Toto je dvojitý nárazník. Funkcia update_display () bola upravená tak, aby cyklovala cez osem rámcov a zobrazovala počet rámcov z prvého poľa, potom druhého. Zmena počtu rámcov pridelených každému vyrovnávacej pamäti počas ôsmich cyklov definovala, ako jasný bude každý vzor. Keď sme skončili s cyklovaním medzi vyrovnávacími pamäťami, prehodili sme vyrovnávacie pamäte „zobrazenie“a „ďalšie zobrazenie“, takže funkcia generujúca vzor by potom zapisovala iba do vyrovnávacej pamäte „nasledujúceho zobrazenia“. Nasledujúci diagram to snáď ukazuje. Mali by ste vidieť, že prechod bude trvať 64 snímkových rámcov. Na obrázku malá vložka ukazuje diagram snímacieho rámca z predchádzajúcej strany umne zmenšený. Slovo o rýchlosti obnovenia. To všetko je potrebné urobiť veľmi rýchlo. Teraz máme dve úrovne dodatočného výpočtu, jednu pre stmievanie okolitého displeja a jednu pre osem cyklov snímok strávených prechodom medzi dvoma vyrovnávacími pamäťami. Tento kód by teda mal byť napísaný v zostave, ale je dostatočne dobrý na 'C'.

Krok 4: Konštrukcia - DPS

Konštrukcia - DPS
Konštrukcia - DPS
Konštrukcia - DPS
Konštrukcia - DPS

To je celkom jednoduché. Len obojstranný plošný spoj s niektorými komponentmi SMD na vrchu. Ospravedlňujeme sa, ak ste osoba s priechodnou dierou, ale je oveľa jednoduchšie vytvárať projekty SMD … bez vŕtania dier. Na uľahčenie práce by ste mali mať pevnú ruku, spájkovaciu stanicu s regulovanou teplotou a dostatok svetla a zväčšenia.

Jediná vec, ktorú je potrebné poznamenať pri konštrukcii DPS, je zahrnutie konektora na programovanie PIC. Pripojí sa k pinom ICSP na PIC a budete potrebovať programátor ICSP. Opäť som použil praktický konektor pre svoj junkbox. Toto môžete vynechať a ak chcete, stačí spájkovať drôty s podložkami. Alternatívne, ak máte iba zásuvkový programátor, môžete vytvoriť záhlavie, ktoré sa zapojí do vašej zásuvky, a potom ho spájkovať s podložkami ICSP. Ak to urobíte, odpojte Rx a pripojte Ry, ktoré sú len prepojenia s nulovým ohmom (používam iba spájkovaciu guličku). Tým sa odpojí zvyšok napájania obvodu od PIC, takže to nebude zasahovať do programovania. Programátor s zásuvkami používa piny ICSP ako programátor ICSP, v skutočnosti nie je spojená žiadna mágia. Musíte to urobiť aj vtedy, ak ste omylom zabudli vložiť do kódu oneskorenie pred spustením RTC. Pre 16F88 sú programovacie piny ICSP rovnaké ako piny potrebné pre kryštál 32,768 kHz používaný pre RTC …… ak externý oscilátor T1 (tj. RTC) beží skôr, ako môže ICSP začať pracovať, programovanie zlyhá. Normálne, ak dôjde k resetu na pine MCLR a dôjde k oneskoreniu, potom je možné na tieto piny odoslať údaje ICSP a začať správne programovanie. Izoláciou napájania PIC však môže programátor ICSP (alebo zásuvkový programátor so záhlavím) ovládať napájanie zariadenia a vynútiť program. Ďalej je potrebné poznamenať, že kryštálové podložky na doske plošných spojov boli pôvodne navrhnuté pre kryštály SMD. Nevedel som sa dočkať, kedy budú niektoré dodané, takže kryštál hodiniek 32,768 kHz bol spájkovaný na vrch, ako je znázornené, a kryštál 20 MHz bol pripevnený vyvŕtaním niekoľkých otvorov do podložiek, pričom kryštál zasunul dnom a spájkoval sa na hore. Kolíky vidíte napravo od PIC16F88.

Krok 5: Holografický film a bývanie

Holografický film a bývanie
Holografický film a bývanie
Holografický film a bývanie
Holografický film a bývanie
Holografický film a bývanie
Holografický film a bývanie

Konečnou konštrukciou je jednoduché vloženie DPS do puzdra a po naprogramovaní ho pripevniť horúcim lepidlom. Tri otvory umožňujú prístup k mikrospínačom spredu.

Pozoruhodnou súčasťou týchto hodín je použitie holografického difúzneho filmu. Toto je špeciálny film, okolo ktorého som ležal a poskytuje zariadeniu príjemnú hĺbku. Môžete použiť obyčajný pauzovací papier (v ktorom by som PCB posunul bližšie k prednej časti) alebo akýkoľvek iný difuzér, ktorý sa používa v žiarivkových svietidlách. Skúsenosti, jediná vec, ktorú musíte urobiť, je umožniť vám rozlíšiť počet rozsvietených diód LED alebo počítanie bodov na určenie času bude náročné. Použil som holografický disperzný materiál od spoločnosti Physical Optics Coorporation (www.poc.com) s 30 -stupňovou kruhovou disperziou, stavový displej superpočítača zobrazený na inom mieste v návode použil film s eliptickou disperziou 15x60 stupňov. Na skrytie lesklých vnútorností vo dne môžete použiť zatemňovaciu pásku, aby ste získali tajomnejší vzhľad. Môžete dokonca nechať displej čistý a nechať ľudí vidieť vnútornosti ako ja. Stojan bol z dvoch kúskov hliníkovej tyče „L“s trochou vyrezanými v spodnej časti, aby sa umožnil ohyb. Poznámka: Na týchto obrázkoch bolo pridané dodatočné osvetlenie, aby ste videli kryty displejov atď. Pri bežnom osvetlení obývačky sú diódy LED výraznejšie, dokonca aj za denného svetla.

Krok 6: Softvér a používateľské rozhranie

Ovládanie zariadenia je veľmi jednoduché, bez špeciálnych režimov vzorov alebo honosných vecí. Jediné, čo robí, je zobrazenie času.

Ak chcete nastaviť čas, najskôr stlačte SW1. Zariadenie párkrát zabliká všetkými LED diódami a potom 10 -hodinová skupina LED diód SW3 zvýši, vybraná skupina SW2 sa presunie do ďalšej skupiny LED diód, pričom zakaždým krátko zablikajú všetky LED diódy v skupine. Kód je napísaný pre kompilátor Sourceboost 'C' verzie 6.70. Kód RTC je v súboroch t1rtc.c/h a má funkciu prerušenia na časovači T1 na obrázku. Časovač T1 je nastavený tak, aby prerušoval každú 1 sekundu. Každú sekundu sa zvyšuje premenná pre čas. Tiež časovač tick sa odpočítava každú sekundu spolu s časom. Toto sa používa na určenie, kedy sa má zobrazenie prepnúť. Funkcia prerušenia tiež používa prerušenie časovača T0 na obnovenie displeja a vyvolanie funkcie na displeji. C Súbory display.h/display.c obsahujú funkcie na aktualizáciu displeja a zobrazenie času. Súbory control.c/h obsahujú funkcie na nastavenie času a čítanie prepínačov Súbory holoclock.c/h sú hlavné slučky a inicializácia.

Odporúča: