Sadržaj:

Minidot 2 - Holoclock: 6 koraka
Minidot 2 - Holoclock: 6 koraka

Video: Minidot 2 - Holoclock: 6 koraka

Video: Minidot 2 - Holoclock: 6 koraka
Video: #ListersGottaList Комплект 101 – Комплект №1 2024, Novembar
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Pa možda je holoclock malo neprecizan …. Koristi holografski disperzijski film na prednjoj strani kako bi dao malo dubine. U osnovi ovo uputstvo je nadogradnja na moj prethodni Minidot koji se nalazi ovdje: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/i ponovnu upotrebu velikog broja koda i kola sa moje Microdot lokacije koja se nalazi ovdje: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD datoteke, a Sourceboost kôd je uključen u zip datoteke u prilogu. Zašto? Prethodni Minidot bio je previše složen, iz Microdota sam naučio kako napraviti RTC na PIC -u koristeći samo kristal 32.768 i nije mi bilo potrebno koristiti poseban RTC čip. Takođe sam hteo da se rešim čipova za prikaz iz prethodnog Minidota. Dakle, sada postoje samo čip regulatora snage i PIC16F88 ….samo dva čipa. Drugi razlozi za nadogradnju su bili to što je moj Minidot postajao pomalo nepouzdan zbog odvojene sklopne ploče i htio sam meko blijeđenje između uzoraka tačaka kao kao i neku vrstu senzora ambijentalnog svjetla za zatamnjivanje ekrana noću. Drugi Minidot je imao stalnu svjetlinu i osvjetljavao je sobu noću. Uređaj je konstruiran uz pomoć softverskog paketa EagleCad i kompajlera Sourceboost. Morat ćete imati određeno iskustvo s elektronikom i programiranjem PIC kontrolera da biste započeli ovaj projekt. Imajte na umu da ovo nije uputstvo za programiranje elektronike ili PIC -a, stoga neka pitanja budu relevantna za dizajn Miniclock -a. Pogledajte upute iznad ili mnoge druge upute na ovoj web stranici za savjete o korištenju EagleCada ili programiranju PIC -ova. Dakle, evo ga ….. Minidot 2, The Holoclock …… ili Minidot the Next Generation ………….

Korak 1: Krug

The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit

Ovo kolo je vrlo slično Microdotu. Imajte na umu da je niz charlieplex gotovo identičan … samo je nekoliko pinova pomaknuto.

U krug Microdot -a je dodan kristal od 20 Mhz za ubrzavanje rada PIC -a, što omogućava brže skeniranje niza i omogućava implementaciju algoritma zatamnjivanja. Algoritam zatamnjivanja bio je vrlo važan za funkcioniranje unakrsnog blijeđenja i ambijentalnog osvjetljenja. To bi bilo nemoguće s Microdotom zbog sporije brzine takta jer su neki ciklusi skeniranja morali biti potrošeni na zatamnjivanje. Opis funkcije zatamnjivanja potražite u sljedećem odjeljku. Ostale stvari koje treba napomenuti su upotreba regulatora pumpe za punjenje MCP1252 za napajanje 5V, trenutno mog omiljenog čipa. Ako ste promijenili krug, mogli biste koristiti običan stari 7805 … … samo imam nekoliko ovih zgodnih čipova koji se motaju okolo. Sada sam premjestio prekidače prema naprijed, štedi se petljanjem po stražnjoj strani sata nakon nestanka struje kako bi se poništilo vrijeme, a sada je sve samo jedna PCB … nema problema s kabliranjem. Takođe treba napomenuti uključivanje LDR -a. Ovo se koristi u razdjelniku napona koji se očitava A/D pinom na PIC -u. Kada PIC osjeti da je nivo ambijentalnog svjetla nizak (tj. Noću), algoritam zatamnjivanja održava niz Charlieplex tamnim više ciklusa nego kada je nivo svjetla visok. Nisam mogao pronaći LDR simbol u Eaglecad biblioteci, pa sam samo upotrijebio LED simbol …..ne zavaravajte se da je to LDR. Stvarnu sliku PCB -a pogledajte ispod. Jedna stvar koju treba napomenuti kada se koriste višebojne LED diode u nizu charliplex. Morate biti sigurni da je prednji napon LED dioda manje -više isti. Ako nije, tada se mogu pojaviti skrenute strujne staze i zasvijetlit će više LED dioda. Stoga korištenje LED dioda od 5 mm ili veće snage za ovu konfiguraciju neće funkcionirati jer obično postoji velika razlika između zelene/plave LED i crvene/žute LED diode. U ovom slučaju koristio sam 1206 SMD LED dioda i posebno učinkovite zeleno/plave LED diode. Napredni naponi ovdje ipak nisu bili problem. Ako želite koristiti mješavinu zelenih/plavih i crvenih/žutih LED dioda veće snage u nizu charlieplex, morate razdvojiti različite boje u dva polja charliplex. Postoje brojna objašnjenja charlieplexinga koja se mogu proguglati …… Neću ovdje ulaziti u detalje. Prepuštam vama da malo istražite. (Pritisnite malu ikonu 'i' u kutu slike ispod da vidite veću verziju)

Korak 2: Algoritam zatamnjivanja - Charliplexed pulsna širinska modulacija

Algoritam zatamnjivanja - Charliplexed pulsna širinska modulacija
Algoritam zatamnjivanja - Charliplexed pulsna širinska modulacija

Kao što je ranije spomenuto, želio sam da različiti uzorci tačaka za to vrijeme glatko blijede, a ne da se trzaju s jednog uzorka na drugi. Pogledajte video za demonstraciju. U sredini je novi Minidot sat, s desne strane je stariji Minidot. Primijetite koliko je novi ljepši. (Ostali prikazi u pozadini su prikaz statusa superračunara Minicray -a i zarobljena čestica magline koja pokreće Mini -niz u magnetskom zatvorenom polju antimaterije. Pogledajte ovdje: https://www.youtube.com/watch? V = bRupDulR4ME za demonstraciju zatvorene komore za magline) Ako pogledate kod, otvorite datoteku display.c. Imajte na umu da postoje četiri niza za mapiranje vrijednosti tris/port za osvjetljavanje bilo kojeg niza i dva niza (jedan više od koda Microdot) za definiranje koje LED diode trebaju biti osvijetljene za bilo koji određeni uzorak LED -a. Npr.:

// LED1 LED2 LED3… nepotpisani znak LEDS_PORTA [31] = {0x10, 0x00, 0x00,… nepotpisani znak LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Nepotpisani znak LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… nepotpisani niz nLedsA [30]; nepotpisani niz nLedsB [30];Na primjer, da biste upalili LED1, trebate postaviti TRIS registre TRISA: B = 0xef: 0xfd i PORT registre PORTA: B = 0x10: 0x00 itd. Ako zapisujete vrijednosti tris u binarnom obliku, primijetit ćete da su u bilo kojem trenutku omogućena samo dva izlaza. Ostali su postavljeni na Tri-stanje (otuda TRIS registar). Ovo je ključno za charlieplexing. Također ćete primijetiti da je jedan izlaz uvijek logički '1', a drugi uvijek logički '0' …. Čiji se smjer uključuje ovisno o tome koja LED dioda je između ove dvije izlazne linije. Zadnja vrijednost u portu/trisu arrays je nulta vrijednost za uključivanje LED -a uopće. U Microdotu je funkcija update_display neprestano kružila kroz drugi niz (nLeds ) kako bi provjerila treba li ta LED dioda svijetliti. Ako jeste, tada su postavljene odgovarajuće vrijednosti tris/port i LED dioda će svijetliti neko vrijeme. Inače je nulta vrijednost poslana u TRIS/PORT registre PIC -a i nijedna LED dioda nije svijetlila neko vrijeme. Kada se to učini dovoljno brzo, to je dalo obrazac. Ostatak programa bi povremeno čitao vrijednosti RTC -a i činio lijep slučajni uzorak u tom nizu ….i tako se promijenio prikaz. Da bi se izvršila funkcija zatamnjivanja, ovo se malo produžilo tako da se nakon što je 30 LED dioda ili upalilo (ili ne) tada bi se dodatni periodi potrošili na slanje nultih vrijednosti ako bi se zaslon zatamnio …..za punu svjetlinu tada se dodatni periodi ne bi trošili. Kada se ponovi ako je bilo mnogo nultih perioda za osvijetljene LED diode, zaslon bi bio zatamnjen. U stvari, ovo je multipleksirana modulacija širine impulsa … … ili zato što je hardver konfiguriran u charlieplex arragementu, zatim modulacija širine impulsa sa čarlipleksom. Drugi dijagram u nastavku prikazuje osnovna podešavanja za ovo. Ja to zovem okvir za skeniranje. Prvih 30 perioda do kadra koristi se za prolazak kroz LED diode …..i promjenjiv broj dodatnih perioda definira koliko će zaslon biti prigušen. Ovaj ciklus se ponavlja. Više nultih perioda znači manje vremena za uključivanje LED diode po kadru (jer se broj perioda povećao). Imajte na umu da okomita os ne znači naponski nivo. Stvarno stanje pinova koji idu prema LED -ima varira ovisno o položaju u nizu charlieplex …..na dijagramu to samo znači uključeno ili isključeno. To je također značilo da se ukupna dužina kadra u vremenu također povećala, smanjujući tako osvježavanje stopa. Kako bi LED diode postajale sve slabije, počele bi treperiti drugim riječima. Stoga je ova metoda korisna samo u određenoj mjeri. Što se tiče sata, to je bilo u redu. Povremeno se poziva funkcija koja čita A/D pretvarač na PIC -u i postavlja ovaj nivo svjetline. Ako pročitate kôd, provjerava se i da li je LED najbliži LDR -u uključen, te ne vrši nikakvu postavku nivoa ako je tako, ovo zaustavlja ekran neočekivano svijetli kada se uzorak promijeni. Slijedi funkcija unakrsnog blijeđenja.

Korak 3: Algoritam zatamnjivanja - efekt unakrsnog blijeđenja i dvostruko međuspremljenje

Algoritam zatamnjivanja - efekt unakrsnog blijeđenja i dvostruko punjenje
Algoritam zatamnjivanja - efekt unakrsnog blijeđenja i dvostruko punjenje

Prijelaz između jednog uzorka i sljedećeg prethodno je bio neposredan. Za ovaj sat sam htio prikazati jedan uzorak koji postepeno smanjuje svjetlinu, a sljedeći uzorak koji se postepeno povećava … tj. Križno blijeđenje.

Nije mi bilo potrebno da imamo pojedinačne LED diode za upravljanje na zasebnim nivoima svjetline da bi se izvršilo unakrsno blijeđenje. Trebao je samo prvi uzorak pri jednoj svjetlini, a drugi pri niskoj svjetlini. Zatim bih u kratkom razdoblju malo smanjio svjetlinu prve, a povećao drugu … … ovo bi se nastavilo do drugog uzorka kao potpuno. Tada bi sat čekao dok se ne pojavi sljedeći uzorak i došlo bi do drugog prijelaza. Stoga sam morao pohraniti dva uzorka. Jedan koji se trenutno prikazuje i drugi uzorak koji je trebao biti prikazan. Oni su u nizovima nLedsA i nLedsB. (imajte na umu da u ovom slučaju nemate nikakve veze s priključcima). Ovo je dvostruki bafer. Funkcija update_display () je izmijenjena tako da se kreće kroz osam okvira i prikazuje broj okvira iz prvog niza, zatim drugog. Promjenom broja okvira dodijeljenih svakom baferu tokom osam ciklusa definirano je koliko bi svaki uzorak bio svijetao. Kad smo završili s prebacivanjem između međuspremnika, promijenili smo bafere 'display' i 'next display', pa bi funkcija generiranja uzoraka tada pisala samo u bafer 'next display'. Donji dijagram to nadamo. Trebali biste vidjeti da će prijelaz trajati 64 kadra skeniranja. Na slici, mali umetak prikazuje dijagram okvira za skeniranje sa prethodne stranice koji je umjetno smanjen. Nekoliko riječi o stopi ponovnog osvježavanja. Sve ovo treba učiniti vrlo brzo. Sada imamo dva nivoa dodatnog izračunavanja, jedan za zatamnjenje ambijentalnog prikaza i jedan za osam ciklusa kadrova provedenih pri prijelazu između dva međuspremnika. Stoga je ovaj kod trebao biti napisan u sklopu, ali je dovoljno dobar u 'C'.

Korak 4: Konstrukcija - PCB

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

Ovo je prilično jednostavno. Samo dvostrana štampana ploča s nekim SMD komponentama na vrhu. Žao nam je ako ste osoba s probnim rupama, ali mnogo je lakše praviti SMD projekte … rupe bez rupa za bušenje. Trebali biste imati mirnu ruku, lemilicu s kontroliranom temperaturom i puno svjetla i uvećanja kako biste olakšali stvari.

Jedino što treba napomenuti pri izgradnji PCB -a je uključivanje konektora za programiranje PIC -a. Ovo se povezuje sa ICSP pinovima na PIC -u i trebat će vam ICSP programer. Opet sam koristio zgodan priključak za neželjenu poštu. Ovo možete izostaviti i samo lemite žice na jastučiće ako želite. Alternativno, ako imate samo programer sa utičnicom, možete napraviti zaglavlje koje se uključuje u utičnicu, a zatim ga lemiti na ICSP jastučiće. Ako to učinite, odspojite Rx i povežite Ry koji su samo nulte ohmske veze (ja samo koristim lemljenje). Ovo će isključiti ostatak strujnog kruga s PIC -a tako da ne ometa programiranje. Programer sa utičnicom samo koristi ICSP pinove kao programer ICSP -a, u tome nema nikakve magije. Ovo morate učiniti i ako ste greškom zaboravili staviti odgodu u kôd prije pokretanja RTC -a. Za 16F88 programski pinovi ICSP -a isti su kao i pinovi potrebni za kristal od 32.768kHz koji se koristi za RTC …… ako je vanjski oscilator T1 (tj. RTC) pokrenut prije nego što ICSP počne raditi, programiranje neće uspjeti. Obično, ako dođe do resetiranja na MCLR pinu i dođe do kašnjenja, tada se ICSP podaci mogu poslati na te pinove i programiranje može pravilno započeti. Međutim, izoliranjem napajanja na PIC -u, ICSP programer (ili utikač programator sa zaglavljem) može kontrolirati napajanje uređaja i forsirati program. Ostale stvari koje treba napomenuti su da su kristalni jastučići na PCB -u izvorno dizajnirani za SMD kristale. Jedva sam čekao da se isporuči, pa je kristal sata od 32,768 kHz lemljen na vrh, kao što je prikazano, a kristal od 20 MHz je pričvršćen bušenjem nekoliko rupa na jastučićima, probijanjem kristala kroz dno i lemljenjem na vrh. Igle možete vidjeti desno od PIC16F88.

Korak 5: Holografski film i kućište

Holografski film i stanovanje
Holografski film i stanovanje
Holografski film i stanovanje
Holografski film i stanovanje
Holografski film i stanovanje
Holografski film i stanovanje

Konačna konstrukcija je jednostavno stavljanje PCB -a u kućište i nakon programiranja pričvršćivanje sa vrućim ljepilom. Tri rupe omogućuju pristup mikroprekidačima sprijeda.

Značajan dio ovog sata je upotreba holografskog filma za difuzor. Ovo je poseban film koji sam ležao i pruža lijepu dubinu uređaju. Možete koristiti običan papir za precrtavanje (u kojem bih PCB pomaknuo bliže prednjoj strani) ili bilo koji drugi raspršivač poput onih koji se koriste u fluorescentnim rasvjetnim tijelima. Iskustvo, jedino što vam treba je omogućiti vam da napravite razliku između broja osvijetljenih LED dioda, u protivnom će brojanje točaka za određivanje vremena biti teško. Koristio sam holografski materijal za disperziju iz Physical Optics Coorporation (www.poc.com) sa kružnom disperzijom od 30 stepeni, prikaz statusa superračunara prikazan na drugom mjestu u uputstvu koristio je film sa eliptičnom disperzijom 15x60 stepeni. Mogli biste upotrijebiti neku zamračenu traku da sakrijete sjajnu nutrinu danju kako biste dobili misteriozniji izgled. Možete čak i ostaviti ekran čistim i dopustiti ljudima da vide unutrašnjost kao ja. Stalak je bio sastavljen od dva komada aluminijske 'L' šipke s malo usitnjenog dna kako bi se omogućilo savijanje. Napomena na ovim slikama je dodano dodatno osvjetljenje tako da možete vidjeti poklopce ekrana itd. U normalnom dnevnom osvjetljenju LED diode su izraženije, čak i pri dnevnom svjetlu.

Korak 6: Softver i korisničko sučelje

Upravljanje uređajem je vrlo jednostavno, nema posebnih načina rada s uzorcima ili blještavih stvari. Jedino što radi je prikazivanje vremena.

Za podešavanje vremena prvo pritisnite SW1. Uređaj će nekoliko puta zasvijetliti svim LED diodama, a zatim će grupa LED dioda od 10 sekundi SW3 povećati odabranu grupu SW2 i preći će na sljedeću grupu LED dioda, svaki put nakratko trepćući sve LED diode u grupi. Kod je napisan za Sourceboost 'C' kompajler verzije 6.70. RTC kôd se nalazi u datotekama t1rtc.c/h i ima funkciju prekida na T1 tajmeru PIC -a. Tajmer T1 postavljen je na prekid svake 1 sekunde. Svake sekunde se varijabla vremena povećava. Odbrojavač se odbrojava svake sekunde zajedno s vremenom. Ovo se koristi za određivanje vremena prelaska na ekran. Funkcija prekida također koristi prekid timera T0 za osvježavanje ekrana, pozivajući funkciju u display.c Datoteke display.h/display.c sadrže funkcije za ažuriranje prikaza i prikaz vremena Datoteke control.c/h sadrže funkcije za postavljanje vremena i čitanje prekidača Datoteke holoclock.c/h su glavne petlje i inicijalizacija.

Preporučuje se: