Obsah:
- Krok 1: Okruh
- Krok 2: Dimming Algorithm - Charliplexed Pulse Width Modulation
- Krok 3: Dimming Algorithm - Cross Fade Effect a Double Buffering
- Krok 4: Konstrukce - DPS
- Krok 5: Holografický film a bydlení
- Krok 6: Software a uživatelské rozhraní
Video: Minidot 2 - Holoclock: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
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
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
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
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
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í
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:
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Akustická levitace s Arduino Uno krok za krokem (8 kroků): 8 kroků
Akustická levitace s Arduino Uno krok za krokem (8 kroků): Ultrazvukové měniče zvuku L298N Dc samice napájecí zdroj s mužským DC pinem Arduino UNOBreadboard Jak to funguje: Nejprve nahrajete kód do Arduino Uno (je to mikrokontrolér vybavený digitálním a analogové porty pro převod kódu (C ++)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): 6 kroků (s obrázky)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): Indukční nabíjení (známé také jako bezdrátové nabíjení nebo bezdrátové nabíjení) je druh bezdrátového přenosu energie. Využívá elektromagnetickou indukci k poskytování elektřiny přenosným zařízením. Nejběžnější aplikací je bezdrátové nabíjení Qi
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: 13 kroků (s obrázky)
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: Toto je návod, jak rozebrat počítač. Většina základních komponent je modulární a lze je snadno odstranit. Je však důležité, abyste o tom byli organizovaní. To vám pomůže zabránit ztrátě součástí a také při opětovné montáži
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: 5 kroků
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: Banky zatěžovacích odporů jsou vyžadovány pro testování energetických produktů, pro charakterizaci solárních panelů, v testovacích laboratořích a v průmyslových odvětvích. Reostaty zajišťují nepřetržité kolísání odporu zátěže. Jak se však hodnota odporu snižuje, výkon