Sadržaj:

Minidot 2 - holoat: 6 koraka
Minidot 2 - holoat: 6 koraka

Video: Minidot 2 - holoat: 6 koraka

Video: Minidot 2 - holoat: 6 koraka
Video: Хама акнун ПУЛДОР мешаванд! Сеюм рузи тренинги Саидмурод Давлатов бо забони точики бо Голос Мигранта 2024, Studeni
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Pa možda je holoclock malo netočan …. Koristi holografski disperzijski film na prednjoj strani kako bi dao malo dubine. U osnovi ova instrukcija je nadogradnja na moj prethodni Minidot koji se nalazi ovdje: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/i ponovnu upotrebu velikog broja koda i sklopova iz moje Microdot stranice koja se nalazi ovdje: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD datoteke i Sourceboost kôd je uključen u zip datoteke priložene. Zašto? Prethodni Minidot bio je pretjerano složen, iz Microdota sam naučio raditi RTC na PIC -u koristeći samo kristal 32.768 i nije mi bilo potrebno koristiti poseban RTC čip. Također sam se želio riješiti čipova za prikaz iz prethodnog Minidota. Dakle, sada postoji samo čip regulatora snage i PIC16F88 ….samo dva čipa. Drugi razlozi za nadogradnju bili su to što je moj Minidot postajao pomalo nepouzdan zbog odvojene sklopne ploče i htio sam meko blijeđenje između uzoraka točaka kao kao i neka vrsta senzora ambijentalnog svjetla za zatamnjivanje zaslona noću. Drugi Minidot bio je fiksne svjetline i osvjetljavao je sobu noću. Uređaj je konstruiran uz pomoć programskog 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. Za upute o korištenju EagleCada ili programiranju PIC -ova pogledajte gore navedene upute ili mnoge druge upute na ovoj web stranici. Evo ga ovdje ….. Minidot 2, Holoclock …….. ili Minidot Sljedeća generacija ……………

Korak 1: Krug

Krug
Krug
Krug
Krug
Krug
Krug

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

U krug Microdot -a dodan je kristal od 20 Mhz za ubrzavanje rada PIC -a, što omogućuje brže skeniranje niza i omogućuje implementaciju algoritma zatamnjivanja. Algoritam zatamnjivanja bio je vrlo važan za funkcioniranje unakrsnog blijeđenja i funkcije ambijentalnog svjetla. To bi bilo nemoguće s Microdotom zbog sporije brzine takta jer je neke cikluse skeniranja trebalo provesti na zatamnjivanju. Za opis funkcije zatamnjivanja pogledajte sljedeći odjeljak. Ostale stvari koje treba napomenuti su uporaba regulatora pumpe za punjenje MCP1252 za opskrbu 5V, trenutno mojim omiljenim čipom. Ako ste izmijenili krug, mogli biste koristiti običan stari 7805 … … samo imam nekoliko ovih zgodnih čipova koji se motaju okolo. Sad sam pomaknuo prekidače prema naprijed, spremajući petljanje 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đer je važno napomenuti uključivanje LDR -a. To se koristi u razdjelniku napona koji se očitava A/D iglom na PIC -u. Kad PIC osjeti da je razina ambijentalne svjetlosti niska (tj. Noću), algoritam zatamnjivanja drži polje charlieplex tamnim više ciklusa nego kada je razina svjetla visoka. Nisam mogao pronaći LDR simbol u biblioteci Eaglecad, pa sam samo upotrijebio LED simbol … … nemojte se zavaravati da je to LDR. Stvarnu sliku PCB -a pogledajte ispod. Jedna stvar koju treba napomenuti kada koristite višebojne LED diode u nizu charliplex. Morate se pobrinuti da napon LED naprijed bude manje -više isti. Ako ne, tada se mogu pojaviti zalutale 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. Napon naprijed ovdje ipak nije bio 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. Ostavit ću vam 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 točaka za to vrijeme glatko blijede, a ne da se trzaju s jednog uzorka na drugi. Za demonstraciju pogledajte video. U sredini je novi Minidot sat, s desne strane stariji Minidot. Primijetite koliko je novi ljepši. (Ostali prikazi u pozadini su moj prikaz statusa superračunala Minicray i zarobljena čestica magline koja pokreće Minijaturni 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 određenog 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 dioda, 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. Zapišete li vrijednosti tris u binarnom obliku, primijetit ćete da su u bilo kojem trenutku omogućena samo dva izlaza. Ostali su postavljeni na Tri-stanje (dakle registar TRIS). To je ključno za charlieplexing. Također ćete primijetiti da je jedan izlaz uvijek logički '1', a drugi uvijek logičan '0' …. Čiji se smjer uključuje ovisno o tome koja se LED dioda nalazi između ova dva izlazna reda. Zadnja vrijednost u portu/trisu arrays je nula 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 je bilo, tada su postavljene odgovarajuće vrijednosti tris/port i LED je svijetlila neko vrijeme. Inače je nulta vrijednost poslana u TRIS/PORT registre PIC -a i nijedna LED dioda nije svijetlila neko vrijeme. Kad se učini dovoljno brzo, to je dalo obrazac. Ostatak programa povremeno bi čitao vrijednosti RTC -a i činio lijep slučajni uzorak u tom nizu ….i tako se mijenjao zaslon. Da bi se izvršila funkcija zatamnjivanja, to se malo produžilo tako da je nakon što je 30 LED dioda bilo ili osvijetljeno (ili ne) tada bi se dodatna razdoblja potrošila na slanje nultih vrijednosti ako bi se zaslon zatamnio …..za punu svjetlinu tada se dodatna razdoblja ne bi trošila. Kad bi se ponavljalo ako bi bilo puno nultih točaka za osvijetljene LED diode, zaslon bi bio prigušen. 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 osnovne postavke za to. Ja to zovem okvir za skeniranje. Prvih 30 razdoblja do kadra koristi se za prolazak kroz LED diode …..i promjenjiv broj dodatnih razdoblja definira koliko će zaslon biti prigušen. Ovaj ciklus se ponavlja. Više nultih razdoblja znači manje vremena za uključivanje LED -a po kadru (jer se broj razdoblja povećao). Imajte na umu da okomita os ne znači razinu napona. 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 duljina kadra u vremenu također povećala, čime se smanjuje 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 ovu razinu svjetline. Ako pročitate kôd, također provjerava je li LED najbliža LDR -u uključena i ne postavlja postavke razine ako je tako, čime se zaustavlja neočekivano osvjetljenje zaslona kad se promijeni uzorak. Slijedi funkcija unakrsnog blijeđenja.

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

Algoritam zatamnjivanja - efekt unakrsnog zatajenja i dvostruko međuspremljenje
Algoritam zatamnjivanja - efekt unakrsnog zatajenja i dvostruko međuspremljenje

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

Nisam morao imati pojedinačne LED diode za upravljanje na zasebnim razinama svjetline da bih napravio unakrsni 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 …..to bi se nastavilo do drugog uzorka kao do kraja. Tada bi sat čekao dok se ne pojavi sljedeći uzorak i došlo bi do drugog prijelaza. Stoga sam morao pohraniti dva uzorka. Ona koja se trenutno prikazuje i drugi uzorak koji se trebao prikazati. To su u nizovima nLedsA i nLedsB. (imajte na umu da u ovom slučaju nema veze s priključcima). Ovo je dvostruki tampon. Funkcija update_display () izmijenjena je tako da se kreće kroz osam okvira i prikazuje broj okvira iz prvog, a zatim drugog niza. Promjenom broja okvira dodijeljenih svakom međuspremniku kroz osam ciklusa definirano je koliko će svaki uzorak biti svijetao. Kad smo završili s prebacivanjem između međuspremnika, promijenili smo međuspremnike 'display' i 'next display', pa bi funkcija generiranja uzoraka tada pisala samo u međuspremnik 'next display'. Donji dijagram to nadamo. Trebali biste vidjeti da će prijelaz trajati 64 kadra skeniranja. Na slici, mali umetak prikazuje dijagram skeniranog okvira s prethodne stranice vješto smanjen. Nekoliko riječi o stopi ponovnog osvježavanja. Sve to treba učiniti vrlo brzo. Sada imamo dvije razine dodatnog izračunavanja, jednu za prigušivanje ambijentalnog prikaza i jednu za osam ciklusa okvira 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 PCB s nekim SMD komponentama na vrhu. Žao nam je ako ste osoba s probnim rupama, ali mnogo je lakše napraviti 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 u izgradnji PCB -a je uključivanje konektora za programiranje PIC -a. Ovo se povezuje s ICSP pinovima na PIC -u i trebat će vam ICSP programer. Opet sam koristio zgodan priključak za neželjeni spremnik. Možete izostaviti ovo i samo lemiti žice na jastučiće ako želite. Alternativno, ako imate samo programer sa utičnicom, možete napraviti zaglavlje koje se priključ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 nula ohmskih veza (ja samo koristim lemljenje). To će isključiti ostatak strujnog kruga s PIC -a kako ne bi ometao programiranje. Programer s utičnicom samo koristi ICSP pinove poput programera ICSP -a, zapravo nema nikakve čarolije. To morate učiniti i ako ste greškom zaboravili unijeti kašnjenje 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 T1 vanjski oscilator (tj. RTC) radi prije nego što ICSP počne raditi, programiranje neće uspjeti. Normalno, 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 za PIC, ICSP programer (ili utikač za programiranje 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 stanovanje

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 s vrućim ljepilom. Tri rupe omogućuju pristup mikroprekidačima s prednje strane.

Značajan dio ovog sata je upotreba holografskog filma za raspršivanje. 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 oko toga, jedino što vam treba učiniti je omogućiti vam da napravite razliku između broja osvijetljenih LED dioda, inače će brojanje točaka za određivanje vremena biti teško. Koristio sam holografski disperzijski materijal iz Physical Optics Coorporation (www.poc.com) s kružnom disperzijom od 30 stupnjeva, prikaz statusa superračunala prikazan na drugom mjestu u uputama koristio je film s eliptičnom disperzijom 15x60 stupnjeva. Možete upotrijebiti neku zamračenu vrpcu da sakrijete sjajnu nutrinu danju kako biste dobili tajanstveniji izgled. Možete čak i ostaviti zaslon čistim i dopustiti ljudima da vide unutrašnjost kao i ja. Stalak je bio sastavljen od dva dijela aluminijske 'L' šipke s malo usitnjenog dna kako bi se omogućio zavoj. Napomena na ovim slikama dodano je dodatno osvjetljenje tako da možete vidjeti poklopce zaslona itd. U normalnom osvjetljenju dnevne sobe LED diode su istaknutije, čak i pri dnevnom svjetlu.

Korak 6: Softver i korisničko sučelje

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

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

Preporučeni: