Taula de continguts:

Minidot 2: l'Holoclock: 6 passos
Minidot 2: l'Holoclock: 6 passos

Vídeo: Minidot 2: l'Holoclock: 6 passos

Vídeo: Minidot 2: l'Holoclock: 6 passos
Vídeo: DMZ: Top 13 NEW META LOADOUTS In Season 6! 2024, Desembre
Anonim
Minidot 2: l’Holoclock
Minidot 2: l’Holoclock
Minidot 2: l’Holoclock
Minidot 2: l’Holoclock

Doncs potser holoclock és una mica imprecís … fa servir una pel·lícula de dispersió hologràfica a la part frontal per donar una mica de profunditat. Bàsicament, aquesta instrucció és una actualització del meu anterior Minidot situat aquí: https://www.instructables.com/id / EEGLXQCSKIEP2876EE / i reutilitzant molts codis i circuits del meu Microdot que es troba aquí: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD i el codi Sourceboost s’inclou als fitxers zip adjunts. Per què? El Minidot anterior era excessivament complex, del Microdot vaig aprendre a fer un RTC en un PIC amb només un cristall 32.768 i no necessitava utilitzar un xip RTC especial. També volia desfer-me de les fitxes de la pantalla del Minidot anterior. Per tant, ara només hi ha un xip regulador de potència i un PIC16F88 … només dos xips. Les altres raons per a una actualització eren que el meu Minidot es tornava una mica poc fiable a causa de la placa de commutadors separada i volia una decoloració suau entre els patrons de punts com així com algun tipus de sensor de llum ambiental per atenuar la pantalla de nit. L’altre Minidot tenia una brillantor fixa i il·luminava una habitació de nit. El dispositiu es va construir amb l’ajut del paquet de programari EagleCad i el compilador Sourceboost. Haureu de tenir certa experiència amb l’electrònica i la programació de controladors PIC per iniciar aquest projecte. Tingueu en compte que no es pot instruir ni en programació electrònica ni en programació PIC, així que mantingueu preguntes rellevants per al disseny de Miniclock. Consulteu els instruccions anteriors o molts altres instructables d’aquest lloc per obtenir consells sobre l’ús d’EagleCad o la programació de PIC. Aquí està … Minidot 2, The Holoclock …… o Minidot The Next Generation ………….

Pas 1: el circuit

El Circuit
El Circuit
El Circuit
El Circuit
El Circuit
El Circuit

Aquest circuit és molt similar al Microdot. Tingueu en compte que la matriu charlieplex és pràcticament idèntica … només s'han mogut uns quants pins.

S'ha afegit un cristall de 20 MHz al circuit Microdot per rellotjar el PIC molt més ràpidament, això permet escanejar la matriu més ràpidament i permet la implementació d'un algorisme de regulació. L’algoritme d’enfosquiment va ser molt important per aconseguir que la funció de llum ambiental i fade del patró creués funcionessin. Això hauria estat impossible amb el Microdot, a causa de la velocitat de rellotge més baixa, ja que alguns cicles d’escaneig s’havien de gastar en atenuació. Consulteu la secció següent per obtenir una descripció de la funcionalitat de regulació. Les altres coses a tenir en compte són l’ús d’un regulador de bomba de càrrega MCP1252 per subministrar 5V, el meu xip preferit en aquest moment. Si modifiqueu el circuit, podríeu fer servir un antic 7805 …… Només tinc alguns d'aquests útils xips penjats. Ara he mogut els interruptors cap a la part davantera, estalviant jocs al darrere del rellotge després de l’aturada d’alimentació per restablir l’hora i ara tot és només un PCB … sense problemes de cablejat. També cal destacar la inclusió d’un LDR. S’utilitza en un divisor de tensió que és detectat pel pin A / D del PIC. Quan el PIC detecta que el nivell de llum ambiental és baix (és a dir, durant la nit), l'algorisme d'atenuació manté la matriu charlieplex fosca durant més cicles que quan el nivell de llum és alt. No he pogut trobar un símbol LDR a la biblioteca Eaglecad, així que acabo d'utilitzar un símbol LED …..no us deixeu enganyar, és un LDR. Vegeu la imatge real del PCB a continuació. Una cosa a tenir en compte quan s’utilitzen LEDs multicolors en una matriu charliplex. Cal que us assegureu que la tensió directa dels LED és més o menys la mateixa. En cas contrari, es poden produir camins de corrent perduts i s’encendran diversos LED. Per tant, l'ús de LED de potència de 5 mm o més per a aquesta configuració no funcionarà, ja que normalment hi ha una gran diferència entre els LED verds / blaus i els LED vermells / grocs. En aquest cas, he utilitzat especialment 1206 leds SMD i LEDs verds / blaus d’alta eficiència. No obstant això, les tensions directes no eren un problema aquí. Si volíeu utilitzar una barreja de LEDs de major potència verd / blau i vermell / groc en una matriu charlieplex, haureu de separar els diferents colors en dues matrius charliplex. Hi ha nombroses explicacions sobre el charlieplexing que es poden buscar en google … No entraré en els detalls aquí. Us ho deixaré per investigar. (Premeu la petita icona "i" que hi ha a l'extrem de la imatge següent per veure'n una versió més gran)

Pas 2: l'algorisme d'atenuació: modulació d'amplada de pols charliplexada

L’algorisme d’atenuació: modulació d’amplada de pols xarliplexada
L’algorisme d’atenuació: modulació d’amplada de pols xarliplexada

Com es va esmentar anteriorment, volia que els diferents patrons de punts de l’època s’esvaissin sense problemes, en lloc de sacsejar-se d’un patró a un altre. Vegeu el vídeo per a una demostració. Al centre hi ha el nou rellotge Minidot, a la dreta, el Minidot més antic. Fixeu-vos en quant és de més agradable el nou. (FYI, les altres pantalles del fons són la meva pantalla d’estat de superordinador Minicray i la meva partícula Nebulon capturada que alimenta Minicray en un camp de confinament magnètic d’antimatèria. Vegeu aquí: https://www.youtube.com/watch? V = bRupDulR4ME per a una demostració de la cambra de confinament del nebuló) Si mireu el codi, obriu el fitxer display.c. Tingueu en compte que hi ha quatre matrius per mapear els valors tris / port per il·luminar qualsevol matriu particular i dues matrius (una més que el codi Microdot) per definir quins LED s’han d’il·luminar per a qualsevol patró particular de LEDs.eg:

// LED1 LED2 LED3 … unsigned char LEDS_PORTA [31] = {0x10, 0x00, 0x00, … unsigned char LEDS_TRISA [31] = {0xef, 0xff, 0xff, … unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … unsigned char LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9, … unsigned char nLedsA [30]; unsigned char nLedsB [30];Per encendre el LED1, per exemple, heu d’establir els registres TRIS TRISA: B = 0xef: 0xfd i els registres PORT PORTA: B = 0x10: 0x00, etc. Si escriviu els valors tris en binari, notareu que en qualsevol moment només hi ha dues sortides habilitades. Els altres estan configurats a triestat (per tant, registre TRIS). Això és fonamental per a la reflexió. També observareu que una sortida sempre és un '1' lògic i l'altra sempre és un '0' lògic … la direcció del qual s'encén segons el LED que hi hagi entre aquestes dues línies de sortida. L'últim valor del port / tris arrays és un valor nul per activar cap LED. En el Microdot, la funció update_display circulava contínuament a través d’una altra matriu (nLeds ) per veure si aquest LED concret s’havia d’il·luminar. Si era així, es van establir els valors corresponents de tris / port i es va il·luminar el LED durant un període de temps. En cas contrari, el valor nul es va enviar als registres PIC TRIS / PORT i no es va il·luminar cap LED durant un període de temps. Quan es va fer prou ràpid, això va donar un patró. La resta del programa llegia periòdicament els valors RTC i formava un bon patró aleatori en aquesta matriu … i així la pantalla canviava. Per fer una funció de regulació, aquesta es va estendre lleugerament de manera que després que els 30 LED estiguessin il·luminats (o no), llavors es passarien períodes addicionals en enviar valors nuls si la pantalla fos atenuada … … per a una lluminositat completa, no es gastarien períodes addicionals. Quan es repeteix si hi havia molts períodes nuls als LED il·luminats, la pantalla quedaria fosca. En efecte, es tracta de modulació d'amplada d'impulsos multiplexada … o bé perquè el maquinari està configurat en un arranjament de charlieplex, a continuació, modulació d'amplada d'impulsos charlieplexada. El segon diagrama següent mostra la configuració bàsica per a això. Jo en dic un marc d’exploració. Els primers 30 períodes del marc s’utilitzen per passar pels LED … i un nombre variable de períodes addicionals defineixen la tonalitat de la pantalla. Aquest cicle es repeteix. Més períodes nuls significa menys temps perquè un LED estigui encès per fotograma (perquè augmenta el nombre de períodes). Tingueu en compte que l'eix vertical no significa el nivell de tensió. L’estat real dels pins que passen als LED varia segons la seva posició a la matriu charlieplex ….. en el diagrama que només significa que està activat o apagat. taxa. A mesura que els LED es van enfosquir, començarien a parpellejar en altres paraules. Per tant, aquest mètode només és útil fins a cert punt. Per al rellotge, estava bé: s’anomena de manera intermitent una funció que llegeix el convertidor A / D al PIC i estableix aquest nivell de brillantor. Si llegiu el codi, també comprova si el LED més proper a l'LDR està encès i no fa cap configuració de nivell si és així, això atura la visualització de manera inesperada quan es canvia el patró.

Pas 3: algorisme d’atenuació: l’efecte d’esvaiment creuat i doble amortiment

Algorisme d’atenuació: l’efecte d’esvaiment creuat i doble amortiment
Algorisme d’atenuació: l’efecte d’esvaiment creuat i doble amortiment

La transició entre un patró i el següent anteriorment era immediata. Per a aquest rellotge volia mostrar un patró que disminuïa gradualment en la brillantor i que el següent patró augmentava gradualment … és a dir, un esvaïment creuat.

No necessitava tenir LEDs individuals per controlar-los a nivells de brillantor diferents per fer un esvaïment creuat. Només calia el primer patró amb una brillantor i el segon amb una brillantor baixa. Després, durant un breu període, reduiria una mica la brillantor del primer i augmentaria el segon … això continuaria fins al segon patró, al màxim. Llavors, el rellotge esperaria fins que es presentés el següent patró i hi hauria una altra transició. Per tant, necessitava emmagatzemar dos patrons. El que s'està mostrant actualment i el segon patró que estava a punt de mostrar-se. Es troben a les matrius nLedsA i nLedsB. (no tingueu en compte res a veure amb els ports en aquest cas). Aquest és el doble buffer. La funció update_display () es va modificar per recórrer vuit fotogrames i mostrar un nombre de fotogrames de primer una matriu, després de l’altra. Canviar el nombre de fotogrames assignats a cada memòria intermèdia al llarg dels vuit cicles va definir la brillantor de cada patró. Quan hem acabat de circular entre memòries intermèdies, hem canviat les memòries intermèdies "pantalla" i "pantalla següent", de manera que la funció de generació de patrons només escriuria a la memòria intermèdia "pantalla següent". El diagrama següent ho mostra amb sort. Hauríeu de poder veure que la transició durarà 64 fotogrames d’escaneig. A la imatge, la petita inserció mostra el diagrama fram d’escaneig de la pàgina anterior reduït de manera artística. Una paraula sobre la taxa de renovació. Tot això s’ha de fer molt ràpidament. Ara tenim dos nivells de càlcul addicional, un per a la dimmness de la pantalla ambiental i un per als vuit cicles de fotogrames dedicats a fer una transició entre dos buffers. Per tant, aquest codi s'hauria d'escriure en conjunt, però és prou bo en 'C'.

Pas 4: Construcció: el PCB

Construcció: el PCB
Construcció: el PCB
Construcció: el PCB
Construcció: el PCB

Això és bastant senzill. Només un PCB de doble cara amb alguns components SMD a la part superior. Disculpeu si sou una persona amb forats passants, però és molt més fàcil fer projectes SMD … sense forats. Haureu de tenir una mà ferma, una estació de soldadura controlada per temperatura i molta llum i augment per facilitar les coses.

L’únic que cal destacar en la construcció del PCB és la inclusió d’un connector per programar el PIC. Això es connecta als pins ICSP del PIC i necessitareu un programador ICSP. Una vegada més, he fet servir un connector pràctic per al meu dipòsit brossa. Podeu ometre això i simplement soldar els cables als coixinets si voleu. Alternativament, si només teniu un programador connectat, podeu fer una capçalera que es connecti al sòcol i després soldar-la als coixinets ICSP. Si ho feu, desconnecteu Rx i connecteu Ry, que són només enllaços de zero ohm (només faig servir un blob de soldadura). Això desconnectarà la resta de la potència del circuit del PIC, de manera que no interfereixi amb la programació. Un programador connectat només utilitza els pins ICSP com un programador ICSP, realment no hi ha màgia. També haureu de fer-ho si per error us heu oblidat de retardar el codi abans que s'iniciï l'RTC. Per al 16F88, els pins de programació ICSP són els mateixos que els pins necessaris per al cristall de 32,768 kHz que s’utilitza per al RTC … Si l’oscil·lador extern T1 (és a dir, el RTC) s’executa abans que l’ICSP pugui començar, la programació fallarà.. Normalment, si hi ha un restabliment al pin MCLR i hi ha un retard, les dades ICSP es poden enviar a aquests pins i la programació pot començar correctament. No obstant això, aïllant l'alimentació al PIC, el programador ICSP (o programador connectat amb capçalera) pot controlar l'alimentació del dispositiu i forçar un programa. La resta de coses a tenir en compte és que els coixinets de cristall del PCB van ser dissenyats originalment per a cristalls SMD. No podia esperar que es lliuressin alguns, de manera que el cristall de rellotge de 32,768 kHz es va soldar a la part superior, tal com es mostra, i el cristall de 20 MHz es va unir perforant un parell de forats a les coixinets, ficant el cristall a la part inferior i soldant-lo al superior. Podeu veure els pins just a la dreta del PIC16F88.

Pas 5: la pel·lícula i l’habitatge hologràfics

El film i l’habitatge hologràfics
El film i l’habitatge hologràfics
El film i l’habitatge hologràfics
El film i l’habitatge hologràfics
El film i l’habitatge hologràfics
El film i l’habitatge hologràfics

La construcció final és simplement col·locar el PCB a la caixa i després de programar-lo enganxar-lo amb un dob de cola calenta. Tres forats permeten accedir als microinterruptors des de la part frontal.

La part més destacable d’aquest rellotge és l’ús d’un film difusor hologràfic. Aquesta és una pel·lícula especial que tenia al voltant i que proporciona una profunditat agradable al dispositiu. Podeu fer servir paper de traça normal (en el qual acostaria el PCB més a la part frontal) o qualsevol altre difusor com els que s’utilitzen en els llums fluorescents. Amb l'experiència, l'únic que ha de fer és permetre diferenciar entre el nombre de LED il·luminats o, en cas contrari, comptar els punts per indicar l'hora serà difícil. Vaig utilitzar material de dispersió hologràfica de Physical Optics Coorporation (www.poc.com) amb una dispersió circular de 30 graus, la pantalla d’estat del superordinador que es mostra a la resta d’instruccions utilitzava una pel·lícula amb una dispersió el·líptica de 15x60 graus. Podeu utilitzar una cinta apagada per amagar les brillants entranyes durant el dia per obtenir un aspecte més misteriós. Fins i tot es podria deixar la pantalla neta i deixar que la gent veiés les entranyes com jo. El suport consistia en dos trossos de barra “L” d’alumini amb una mica tallada a la part inferior per permetre un revolt. Tingueu en compte que en aquestes imatges s'ha afegit una il·luminació addicional perquè pugueu veure les cobertes de la pantalla, etc. En la il·luminació normal de la sala d'estar, els LED són més destacats, fins i tot a la llum del dia.

Pas 6: programari i interfície d'usuari

El funcionament del dispositiu és molt senzill, no hi ha modes de patró especials ni coses cridaneres. L'únic que fa és mostrar l'hora.

Per definir l’hora, premeu primer SW1. El dispositiu parpellejarà tots els LED unes quantes vegades i, a continuació, el grup de LEDs de 10 hores SW3 incrementarà el grup seleccionat SW2 i passarà al següent grup de LED, cada cop parpellejant breument tots els LED del grup. El codi està escrit per a la versió 6.70 del compilador Sourceboost. El codi RTC es troba als fitxers t1rtc.c / h i té una funció d’interrupció al temporitzador T1 del PIC. El temporitzador T1 està configurat per interrompre cada 1 segon. A cada segon, s'incrementa la variable del temps. També es compta un temporitzador de tick cada segon junt amb el temps. S’utilitza per determinar quan fer la transició de la pantalla. La funció d’interrupció també utilitza la interrupció del temporitzador T0 per actualitzar la pantalla, cridant una funció a display.c Els fitxers display.h / display.c contenen les funcions per actualitzar la pantalla i mostren l’hora que els fitxers control.c / h contenen funcions per configurar l'hora i llegir els commutadors Els fitxers holoclock.c / h són els principals bucles i inicialització.

Recomanat: