Obsah:

Minidot 2 - Holoclock: 6 kroků
Minidot 2 - Holoclock: 6 kroků

Video: Minidot 2 - Holoclock: 6 kroků

Video: Minidot 2 - Holoclock: 6 kroků
Video: DELTA OPTICAL 🎯 | Wyposażenie na strzelnicę i praktyczne rady od operatorów GROM 2024, Listopad
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Možná jsou holo hodiny trochu nepřesné … používá holografický disperzní film na přední straně, aby poskytl trochu hloubky. V zásadě je tento návod aktualizací mého předchozího Minidotu, který se nachází zde: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/a opětovné použití spousty kódu a obvodů z mého Microdot umístěného zde: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD soubory a kód Sourceboost je součástí připojených zip souborů. Proč? Předchozí Minidot byl příliš složitý, od Microdot jsem se naučil, jak udělat RTC na PIC pomocí pouze krystalu 32,768 a nepotřeboval jsem používat speciální RTC čip. Také jsem se chtěl zbavit zobrazovacích čipů z předchozího Minidotu. Takže teď je tam jen čip regulátoru výkonu a PIC16F88 … jen dva čipy. Dalšími důvody pro aktualizaci byly moje Minidot, protože kvůli oddělené spínací desce začínal být trochu nespolehlivý a chtěl jsem jemné vyblednutí mezi tečkovými vzory jako stejně jako nějaký snímač okolního světla, který v noci ztlumí displej. Druhý Minidot měl pevný jas a v noci osvětloval místnost. Zařízení bylo zkonstruováno pomocí softwarového balíčku EagleCad a kompilátoru Sourceboost. K zahájení tohoto projektu budete potřebovat nějaké zkušenosti s elektronikou a programováním PIC řadičů. Vezměte prosím na vědomí, že toto není návod k programování elektroniky ani PIC, proto mějte prosím otázky týkající se designu Miniclock. Pokyny k používání EagleCad nebo programování PIC naleznete v pokynech výše nebo v mnoha dalších pokynech na tomto webu. Takže tady je….. Minidot 2, Holoclock …… nebo Minidot The Next Generation ………….

Krok 1: Okruh

Okruh
Okruh
Okruh
Okruh
Okruh
Okruh

Tento obvod je velmi podobný Microdot. Pole charlieplex je prakticky totožné … pouze bylo přesunuto několik pinů.

Do obvodu Microdot byl přidán krystal 20Mhz, který umožňuje mnohem rychlejší taktování PIC, což umožňuje rychlejší skenování pole a implementaci algoritmu stmívání. Algoritmus stmívání byl velmi důležitý, aby fungovala funkce prolínání a křížového vzoru. To by bylo u Microdot nemožné, kvůli pomalejší hodinové rychlosti, protože některé skenovací cykly musely být vynaloženy na stmívání. V další části najdete popis funkce stmívání. Další věcí, kterou je třeba poznamenat, je použití regulátoru nabíjecího čerpadla MCP1252 k napájení 5V, v současné době můj oblíbený čip. Pokud jste upravili obvod, mohli byste použít obyčejný starý 7805 …… mám kolem sebe jen několik šikovných čipů. Nyní jsem přesunul přepínače na přední stranu, šetří se po zádech hodin po výpadcích napájení, abych resetoval čas, a teď je vše jen jedna PCB….bez problémů s kabeláží. Za zmínku stojí také zahrnutí LDR. To se používá v děliči napětí, který je snímán pinem A/D na PIC. Když PIC snímá nízkou úroveň okolního světla (tj. Noční čas), algoritmus stmívání udržuje pole charlieplex tmavé po více cyklů, než když je úroveň světla vysoká. V knihovně Eaglecad jsem nenašel symbol LDR, a tak jsem použil symbol LED ….. nenechte se zmást, je to LDR. Níže si prohlédněte skutečný obrázek desky plošných spojů. Při používání vícebarevných LED diod v poli charliplex je třeba si uvědomit jednu věc. Musíte se ujistit, že přední napětí LED je víceméně stejné. Pokud ne, mohou se objevit cesty bloudivého proudu a rozsvítí se více LED diod. Takže použití LED diod 5 mm nebo vyšších pro tuto konfiguraci nebude fungovat, protože mezi zelenými/modrými LED diodami a červenými/žlutými LED diodami je obvykle značný rozdíl. V tomto případě jsem použil 1206 SMD LED a zejména vysoce účinné zelené/modré LED diody. Přední napětí zde však nebylo problémem. Pokud byste chtěli použít kombinaci zelených/modrých a červených/žlutých LED diod s vyšším výkonem v poli charlieplex, budete muset oddělit různé barvy do dvou polí charliplex. Existuje mnoho vysvětlení charlieplexingu, které lze vygooglit …… Nebudu zde zacházet do podrobností. Nechám na vás udělat nějaký průzkum. (Stisknutím malé ikony „i“v rohu obrázku níže zobrazíte větší verzi)

Krok 2: Dimming Algorithm - Charliplexed Pulse Width Modulation

Algoritmus stmívání - Charliplexed Pulse Width Modulation
Algoritmus stmívání - Charliplexed Pulse Width Modulation

Jak již bylo zmíněno dříve, chtěl jsem, aby různé tečkové vzory po určitou dobu plynule mizely, než aby škubaly z jednoho vzoru do druhého. Ukázku najdete ve videu. Uprostřed jsou nové hodiny Minidot, napravo starší Minidot. Všimněte si, o kolik hezčí je ten nový. (Ostatně ostatní displeje na pozadí jsou můj stavový superpočítač Minicray a moje zachycená částice Nebulon, která napájí Minicray v magnetickém poli antihmoty. Viz zde: https://www.youtube.com/watch? V = bRupDulR4ME pro ukázku uzavřené komory) Pokud se podíváte do kódu, otevřete soubor display.c. Všimněte si, že existují čtyři pole pro mapování hodnot tris/port k osvětlení jakéhokoli konkrétního pole a dvě pole (jedno více než kód Microdot) pro definování, které LED diody by měly být osvětleny pro jakýkoli konkrétní vzor LED. Např.:

// LED1 LED2 LED3… nepodepsaný 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 znaménka LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… unsigned char nLedsA [30]; unsigned char nLedsB [30];Chcete -li například rozsvítit LED1, musíte nastavit registry TRIS TRISA: B = 0xef: 0xfd a registry PORT PORTA: B = 0x10: 0x00 a tak dále. Pokud zapíšete hodnoty tris binárně, všimnete si, že současně jsou povoleny pouze dva výstupy. Ostatní jsou nastaveny na třístavový (proto registr TRIS). To je zásadní pro charlieplexing. Všimněte si také, že jeden výstup je vždy logický '1' a druhý je vždy logický '0' …. Jehož směr se rozsvítí bez ohledu na to, která LED je mezi těmito dvěma výstupními řádky. Poslední hodnota v portu/tris pole je nulová hodnota, která nezapne vůbec žádnou LED. V Microdot se funkce update_display cyklicky cyklovala přes další pole (nLeds ), aby zjistila, zda se má rozsvítit konkrétní LED. Pokud ano, byly nastaveny odpovídající hodnoty tris/port a LED dioda na určitou dobu svítila. Jinak byla nulová hodnota odeslána do registrů PIC TRIS/PORT a po určitou dobu nesvítila žádná LED. Když to bylo provedeno dostatečně rychle, dalo to vzor. Zbytek programu by pravidelně četl hodnoty RTC a vytvořil pěkný náhodný vzor v tomto poli…. A tak se změnil displej. Aby byla funkce stmívání mírně rozšířena, aby po rozsvícení 30 diod LED (nebo ne), pak by byly vynaloženy další periody na odesílání hodnot null, pokud by měl být displej ztlumený ….. pro plný jas pak nebudou stráveny žádné další periody. Při opakování, pokud by na rozsvícených LED diodách bylo mnoho nulových period, by byl displej tmavý. Ve skutečnosti se jedná o multiplexovanou modulaci šířky impulzů…..nebo protože hardware je konfigurován v charlieplexové soustavě, pak charlieplexovaná modulace šířky pulzů. Druhý diagram níže ukazuje základní nastavení. Tomu říkám skenovací rámec. Prvních 30 period do rámečku slouží k procházení LED diod ….. a proměnlivý počet dalších period definuje, jak bude displej ztlumený. Tento cyklus se opakuje. Více nulových period znamená méně času pro rozsvícení LED na rámeček (protože se zvýšil počet period). Všimněte si, že svislá osa neznamená úroveň napětí. Skutečný stav kolíků přecházejících na diody LED se liší v závislosti na poloze v poli charlieplex ….. v diagramu to znamená pouze zapnutí nebo vypnutí. To také znamenalo, že se také zvětšila celková délka rámce v čase, čímž se snížilo obnovení hodnotit. Jakmile se diody LED ztlumily, začaly jinými slovy blikat. Tato metoda je tedy užitečná pouze do určité míry. Pro hodiny to bylo v pořádku. Funkce se nazývá přerušovaně, která čte A/D převodník na PIC a nastavuje tuto úroveň jasu. Pokud si přečtete kód, zkontroluje také, zda svítí LED nejblíže k LDR, a pokud ano, neprovede žádné nastavení úrovně, takže se zobrazení při změně vzoru neočekávaně rozjasní. Další funkce cross fade.

Krok 3: Dimming Algorithm - Cross Fade Effect a Double Buffering

Dimming Algorithm - Cross Fade Effect a Double Buffering
Dimming Algorithm - Cross Fade Effect a Double Buffering

Přechod mezi jedním vzorem a druhým byl dříve okamžitý. U těchto hodin jsem chtěl ukázat jeden vzor postupně klesající v jasu a další vzor postupně narůstající … tj. Cross fade.

Nepotřeboval jsem mít jednotlivé LED diody, které by bylo možné ovládat na různých úrovních jasu, aby bylo možné provést cross fade. Stačil první vzor při jednom jasu a druhý při nízkém jasu. Pak jsem během krátké doby trochu snížil jas prvního a zvýšil druhý….. to by pokračovalo až do úplného naplnění druhého vzoru. Pak hodiny počkaly, až se ukáže další vzor a dojde k dalšímu přechodu. Proto jsem potřeboval uložit dva vzory. Aktuálně zobrazovaný a druhý vzor, který se právě chystal zobrazit. Ty jsou v polích nLedsA a nLedsB. (v tomto případě si s porty nedělejte nic společného). Toto je dvojitá vyrovnávací paměť. Funkce update_display () byla upravena tak, aby cyklovala osmi snímky a zobrazovala počet snímků z prvního pole, poté druhého. Změna počtu snímků přidělených každému bufferu v průběhu osmi cyklů definovala, jak jasný bude každý vzor. Když jsme skončili s cyklováním mezi nárazníky, přepnuli jsme vyrovnávací paměti „zobrazení“a „další zobrazení“, takže funkce generující vzor by pak zapisovala pouze do vyrovnávací paměti „dalšího zobrazení“. Níže uvedený diagram to doufejme ukazuje. Měli byste vidět, že přechod bude trvat 64 skenovacích snímků. Na obrázku malá vložka ukazuje diagram skenovacího rámečku z předchozí stránky uměle zmenšen. Slovo o obnovené sazbě. To vše je třeba udělat velmi rychle. Nyní máme dvě úrovně extra výpočtu, jednu pro ztlumení okolního zobrazení a jednu pro osm cyklů snímků strávených přechodem mezi dvěma vyrovnávacími paměťmi. Tento kód tedy měl být napsán v sestavení, ale je dostatečně dobrý v 'C'.

Krok 4: Konstrukce - DPS

Konstrukce - DPS
Konstrukce - DPS
Konstrukce - DPS
Konstrukce - DPS

To je docela jednoduché. Jen oboustranná deska plošných spojů s některými součástmi SMD nahoře. Omlouváme se, pokud jste průchozí, ale je mnohem snazší vytvářet projekty SMD … bez vrtání. Měli byste mít pevnou ruku, pájecí stanici s řízenou teplotou a spoustu světla a zvětšení, aby to bylo jednodušší.

Jediná věc, kterou je třeba při konstrukci DPS poznamenat, je zahrnutí konektoru pro programování PIC. Tím se připojí k pinům ICSP na PIC a budete potřebovat ICSP programátor. Opět jsem použil praktický konektor svého junkboxu. Toto můžete vynechat a pokud chcete, stačí připájet dráty k podložkám. Alternativně, pokud máte pouze zásuvkový programátor, můžete vytvořit záhlaví, které se zapojí do vaší zásuvky, a poté jej pájet na pady ICSP. Pokud to uděláte, odpojte Rx a připojte Ry, což jsou jen nulové ohmové odkazy (používám pouze pájecí blob). Tím se odpojí zbytek napájení obvodu od PIC, takže to nebude zasahovat do programování. Soketový programátor používá piny ICSP jako programátor ICSP, ve skutečnosti se nejedná o žádnou magii. Musíte to také udělat, pokud jste omylem zapomněli zadat zpoždění v kódu před spuštěním RTC. Pro 16F88 jsou programovací piny ICSP stejné jako piny potřebné pro krystal 32,768 kHz použitý pro RTC …… pokud externí oscilátor T1 (tj. RTC) běží před spuštěním ICSP, pak programování selže. Normálně, pokud dojde k resetu na pinu MCLR a dojde ke zpoždění, pak lze na tyto piny odeslat data ICSP a programování může začít správně. Izolováním napájení PIC však může programátor ICSP (nebo zásuvkový programátor se záhlavím) ovládat napájení zařízení a vynutit program. Další věcí, kterou je třeba poznamenat, je, že krystalické podložky na desce plošných spojů byly původně navrženy pro krystaly SMD. Nemohl jsem se dočkat, až budou některé dodány, takže krystal hodinek 32,768 kHz byl připájen k horní části, jak je znázorněno, a krystal 20 MHz byl připevněn vyvrtáním několika děr do podložek, zasunutím krystalu skrz dno a pájením na horní. Kolíky vidíte napravo od PIC16F88.

Krok 5: Holografický film a bydlení

Holografický film a bydlení
Holografický film a bydlení
Holografický film a bydlení
Holografický film a bydlení
Holografický film a bydlení
Holografický film a bydlení

Konečná konstrukce je jednoduše vložení desky plošných spojů do pouzdra a po naprogramování ji připevněte horkým lepidlem. Tři otvory umožňují přístup k mikrospínačům zepředu.

Pozoruhodnou součástí těchto hodin je použití holografického difuzního filmu. Toto je speciální film, ve kterém jsem ležel, a který poskytuje zařízení pěknou hloubku. Můžete použít obyčejný pauzovací papír (ve kterém bych přesunul desku plošných spojů blíže dopředu) nebo jakýkoli jiný difuzor, jaký se používá v zářivkových svítidlech. Zkušenosti, jediná věc, kterou musíte udělat, je umožnit vám rozlišovat mezi počtem osvětlených LED diod, jinak bude obtížné spočítat body, abyste zjistili čas. Použil jsem holografický disperzní materiál od společnosti Physical Optics Coorporation (www.poc.com) s 30stupňovou kruhovou disperzí, stavový displej superpočítače zobrazený jinde v instruktáži používal film s eliptickou disperzí 15x60 stupňů. Dalo by se použít zatemňovací pásku, abyste skryli lesklé vnitřnosti během dne, abyste získali tajemnější vzhled. Můžete dokonce nechat displej čistý a nechat lidi vidět vnitřnosti jako já. Stojan byl ze dvou kousků hliníkové tyče „L“s trochou vyříznutou ve spodní části, aby byl umožněn ohyb. Všimněte si, že na těchto obrázcích bylo přidáno dodatečné osvětlení, abyste viděli kryty displeje atd. Při normálním osvětlení obývacího pokoje jsou LED diody výraznější, a to i za denního světla.

Krok 6: Software a uživatelské rozhraní

Obsluha zařízení je velmi jednoduchá, žádné speciální režimy vzorů ani okázalé věci. Jediné, co dělá, je zobrazení času.

Chcete -li nastavit čas, stiskněte nejprve SW1. Zařízení několikrát zabliká všemi LED diodami a poté skupina LED diod SW3 po dobu 10 hodin zvýší vybranou skupinu SW2 se přesune do další skupiny LED diod, pokaždé krátce zabliká všechny LED diody ve skupině. Kód je napsán pro kompilátor Sourceboost 'C' verze 6.70. Kód RTC je v souborech t1rtc.c/h a má funkci přerušení na časovači T1 na PIC. Časovač T1 je nastaven tak, aby přerušoval každou 1 sekundu. Každou sekundu se inkrementuje proměnná pro čas. Také časovač zaškrtnutí se odpočítává každou sekundu spolu s časem. Toto se používá k určení, kdy se má zobrazení převést. Funkce přerušení také používá přerušení časovače T0 k obnovení displeje, vyvolání funkce na displeji. C Soubory display.h/display.c obsahují funkce pro aktualizaci displeje a zobrazení času. Soubory control.c/h obsahují funkce pro nastavení času a čtení přepínačů Soubory holoclock.c/h jsou hlavní smyčky a inicializace.

Doporučuje: