Sisällysluettelo:

Minidot 2 - kellokello: 6 vaihetta
Minidot 2 - kellokello: 6 vaihetta

Video: Minidot 2 - kellokello: 6 vaihetta

Video: Minidot 2 - kellokello: 6 vaihetta
Video: Videon väärentäminen DeepFaceLabilla - täydellinen opas | Deepfake:n luominen A:sta Z:hen 2024, Heinäkuu
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Ehkä holoclock on hieman epätarkka…. Se käyttää holografista dispersiokalvoa etupuolella antaakseen hieman syvyyttä. Periaatteessa tämä ohje on päivitys edelliseen Minidotiini, joka sijaitsee täällä: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/ja käytä uudelleen paljon koodia ja piirejä Microdotilta, joka sijaitsee täällä: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD-tiedostot ja Sourceboost-koodi sisältyvät liitteenä oleviin zip-tiedostoihin. Edellinen Minidot oli liian monimutkainen, Microdotista opin, kuinka tehdä RTC PIC: llä käyttäen vain 32.768 -kristallia, eikä minun tarvinnut käyttää erityistä RTC -sirua. Halusin myös päästä eroon edellisen Minidotin näytön siruista. Joten nyt on vain tehonsäätimen siru ja PIC16F88…. Vain kaksi sirua. Muut syyt päivitykseen olivat, että Minidot oli hieman epäluotettava erillisen kytkentäkortin takia ja halusin pehmeän häipymisen pisteiden välillä sekä jonkinlainen ympäristön valoanturi näytön himmentämiseksi yöllä. Toinen Minidot oli kiinteä kirkkaus ja valaisi huoneen yöllä. Laite rakennettiin EagleCad -ohjelmistopaketin ja Sourceboost -kääntäjän avulla. Sinulla on oltava jonkin verran kokemusta elektroniikasta ja PIC -ohjaimien ohjelmoinnista tämän projektin aloittamiseksi. Huomaa, että tämä ei ole opastettavissa elektroniikassa tai PIC -ohjelmoinnissa, joten pidä Miniclock -suunnitteluun liittyvät kysymykset. Katso yllä olevista ohjeista tai monista muista tämän sivuston ohjeista neuvoja EagleCadin käytöstä tai PIC -ohjelmoinnista. Joten tässä se on….. Minidot 2, Holoclock …… tai Minidot Next Generation ………….

Vaihe 1: Piiri

Piiri
Piiri
Piiri
Piiri
Piiri
Piiri

Tämä piiri on hyvin samanlainen kuin Microdot. Huomaa, että charlieplex -sarja on käytännössä identtinen… vain muutamia nastoja on siirretty.

Microdot -piiriin on lisätty 20 MHz: n kide, joka kellottaa PIC: n paljon nopeammin, mikä mahdollistaa matriisin skannaamisen nopeammin ja mahdollistaa himmennysalgoritmin toteuttamisen. Himmennysalgoritmi oli erittäin tärkeä ristikuvion haalistumisen ja ympäristön valotoiminnon saamiseksi toimimaan. Tämä olisi ollut mahdotonta mikropisteellä hitaamman kellonopeuden vuoksi, koska jotkut skannausjaksot oli käytettävä himmentämiseen. Seuraavassa osassa on kuvaus himmennystoiminnosta. Muita huomioitavia asioita ovat MCP1252 -latauspumpun säätimen käyttö 5 V: n, suosikkisiruni tällä hetkellä. Jos muutit piiriä, voit käyttää tavallista vanhaa 7805 …… Minulla on vain useita näitä käteviä pelimerkkejä. Olen nyt siirtänyt kytkimet eteen, säästää virikkeitä kellon takana virran katkeamisen jälkeen nollataksesi ajan ja nyt kaikki on vain yksi piirilevy…. Ei kaapelointi -ongelmia. Huomionarvoista on myös LDR: n sisällyttäminen. Tätä käytetään jännitteenjakajassa, jonka PIC: n A/D -nasta havaitsee. Kun PIC havaitsee ympäristön valon olevan alhainen (eli yöaika), himmennysalgoritmi pitää charlieplex -sarjan pimeänä useamman jakson ajan kuin silloin, kun valotaso on korkea. En löytänyt LDR -symbolia Eaglecad -kirjastosta, joten käytin vain LED -symbolia….. Älä mene lankaan, se on LDR. Katso todellinen piirilevyn kuva alta. Yksi asia on huomioitava käytettäessä monivärisiä LED-valoja charliplex-ryhmässä. Sinun on varmistettava, että LEDien etujännite on suunnilleen sama. Jos ei, voi esiintyä harhavirtapolkuja ja useita LED -valoja syttyy. Näin ollen 5 mm: n tai suuremman tehon LED -valojen käyttäminen tähän kokoonpanoon ei toimi, koska vihreiden/sinisten ja punaisten/keltaisten LEDien välillä on yleensä ero. Tässä tapauksessa käytin 1206 SMD -lediä ja erityisesti tehokkaita vihreitä/sinisiä LED -valoja. Lähtöjännitteet eivät kuitenkaan olleet ongelma tässä. Jos haluat käyttää yhdistelmää vihreitä/sinisiä ja punaisia/keltaisia suurempitehoisia LED -valoja charlieplex -matriisissa, sinun on erotettava eri värit kahteen charliplex -matriisiin. Charlieplexingille on lukuisia selityksiä, jotka voidaan googlettaa…… En mene yksityiskohtiin täällä. Jätän sinulle tutkimuksen tekemisen. (Paina pientä i -kuvaketta alla olevan kuvan kulmassa nähdäksesi suuremman version)

Vaihe 2: Himmennysalgoritmi - Charliplexed Pulse Width Modulation

Himmennysalgoritmi - Charliplexed Pulse Width Modulation
Himmennysalgoritmi - Charliplexed Pulse Width Modulation

Kuten aiemmin mainitsin, halusin, että erilaiset pistemallit haalistuvat sujuvasti sen sijaan, että nykäisivät kuviosta toiseen. Katso esittelyvideo. Keskellä on uusi Minidot -kello, oikealla on vanhempi Minidot. Huomaa, kuinka paljon parempi on uusi. (Tiedoksi muut taustalla olevat näytöt ovat Minicray -supertietokoneen tilanäyttöni ja kaapattu Nebulon -hiukkaseni, joka käyttää Minicrayä antiaineen magneettisessa suljetussa kentässä. Katso täältä: https://www.youtube.com/watch? V = bRupDulR4ME esittelyä varten Jos tarkastelet koodia, avaa display.c -tiedosto. Huomaa, että tris/port -arvojen kartoittamiseen on neljä matriisia minkä tahansa tietyn taulukon valaisemiseksi ja kaksi matriisia (yksi enemmän kuin Microdot -koodi) sen määrittämiseksi, mitkä LED -valot tulisi valaista minkä tahansa tietyn LED -kuvion kohdalla. Esim.

// 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];Esimerkiksi LED1: n sytyttämiseksi sinun on asetettava TRIS -rekisterit TRISA: B = 0xef: 0xfd ja PORT -rekisterit PORTA: B = 0x10: 0x00 ja niin edelleen. Jos kirjoitat tris -arvot binäärinä, huomaat, että kerrallaan on käytössä vain kaksi lähtöä. Muut on asetettu kolmivaltioon (tästä syystä TRIS-rekisteri). Tämä on charlieplexingin kannalta keskeistä. Huomaat myös, että yksi lähtö on aina looginen '1' ja toinen on aina looginen '0' … jonka suunta syttyy sen mukaan, kumpi LED on näiden kahden tulostuslinjan välissä. Viimeinen arvo portissa/tris matriisit on nolla -arvo, kun LED -valoa ei käytetä lainkaan. Mikropisteessä update_display -toiminto kiertää jatkuvasti toisen taulukon (nLeds ) läpi nähdäkseen, tuleeko kyseinen LED palaa. Jos näin oli, vastaavat tris/port -arvot asetettiin ja LED palaa jonkin aikaa. Muussa tapauksessa nolla -arvo lähetettiin PIC: n TRIS/PORT -rekistereihin eikä mikään LED -valo sytynyt tietyn ajan kuluessa. Kun se on tehty tarpeeksi nopeasti, tämä antaa mallin. Loput ohjelmasta lukisivat säännöllisesti RTC -arvoja ja muodostavat mukavan satunnaisen kuvion kyseisessä taulukossa… ja niin näyttö muuttui. Himmennystoiminnon tekemiseksi tätä pidennettiin hieman niin, että kun 30 LED -valoa oli joko valaistu (tai ei), silloin tyhjiä arvoja lähetettäessä käytetään ylimääräisiä jaksoja, jos näyttö halutaan himmentää…..täyden kirkkauden vuoksi ylimääräisiä jaksoja ei käytetä. Toistettaessa, jos valaistuissa LED -valoissa on paljon nollapisteitä, näyttö on himmeä. Käytännössä tämä on multipleksoitu pulssileveyden modulaatio….. tai koska laitteisto on määritetty charlieplex -arragementiksi, sitten charlieplexed pulssileveyden modulaatio. Toinen kaavio näyttää tämän perusasetukset. Kutsun tätä skannauskehykseksi. Kehyksen ensimmäiset 30 jaksoa käytetään LEDien läpi käymiseen …..ja vaihteleva määrä lisäjaksoja määrää, kuinka himmeä näyttö on. Tämä sykli toistuu. Lisää tyhjiöjaksoja tarkoittaa, että LED -valo syttyy kehystä kohden vähemmän aikaa (koska jaksojen määrä lisääntyi). Huomaa, että pystysuora akseli ei tarkoita jännitetasoa. LEDeihin menevien nastojen todellinen tila vaihtelee sen sijainnin mukaan charlieplex -matriisissa…..kaaviossa se tarkoittaa vain päälle tai pois päältä. Tämä tarkoitti myös kehyksen kokonaispituuden kasvua ajan myötä, mikä pienensi päivitystä korko. Kun LEDit himmenivät, ne alkoivat välkkyä toisin sanoen. Joten tämä menetelmä on hyödyllinen vain jossain määrin. Kellossa se oli OK. Toimintoa kutsutaan jaksoittaisesti, joka lukee PIC: n A/D -muuntimen ja asettaa tämän kirkkaustason. Jos luet koodin, se tarkistaa myös, palaako LDR: ää lähinnä oleva LED, eikä tee mitään tasoasetuksia, jos näin on, tämä pysäyttää näytön odottamattoman kirkkauden kuvion muuttuessa.

Vaihe 3: Himmennysalgoritmi - Cross Fade Effect ja Double Buffering

Himmennysalgoritmi - Cross Fade Effect ja Double Buffering
Himmennysalgoritmi - Cross Fade Effect ja Double Buffering

Siirtyminen kuvion ja seuraavan välillä oli aiemmin välitöntä. Tälle kellolle halusin näyttää yhden kuvion kirkkauden vähitellen vähenevän ja seuraavan kuvion vähitellen kasvavan… eli ristin haalistumisen.

Minun ei tarvinnut ohjata yksittäisiä LED -valoja erillisillä kirkkaustasoilla ristin häivyttämiseksi. Tarvitsin vain ensimmäisen kuvion yhdellä kirkkaudella ja toisen pienellä kirkkaudella. Sitten lyhyen ajan aikana pienensin hieman ensimmäisen kirkkautta ja lisäisin toista …..tämä jatkuisi kunnes toinen kuvio on täysi. Sitten kello odotti, kunnes seuraava kuvio oli määrä näyttää, ja tapahtuisi toinen siirtymä. Siksi minun piti tallentaa kaksi mallia. Se, joka on parhaillaan esillä, ja toinen kuvio, joka oli tarkoitus näyttää. Nämä ovat matriiseissa nLedsA ja nLedsB. (tässä tapauksessa ei ole mitään tekemistä porttien kanssa). Tämä on kaksinkertainen puskuri. Update_display () -funktiota muutettiin siten, että selataan kahdeksan kehystä ja näytetään useita kehyksiä ensin yhdestä ja sitten toisesta taulukosta. Kullekin puskurille varattujen kehysten lukumäärän muuttaminen kahdeksan jakson aikana määritteli kuinka kirkas jokainen kuvio olisi. Kun lopetimme pyöräilyn puskurien välillä, vaihdoimme näyttö- ja seuraava näyttöpuskurit ympäri, joten kuvion luomistoiminto kirjoittaisi sitten vain seuraavaan näyttöpuskuriin. Alla oleva kaavio osoittaa tämän toivottavasti. Sinun pitäisi nähdä, että siirtyminen kestää 64 skannauskehystä. Kuvassa pieni lisäys näyttää edellisen sivun skannauskehyksen kaavion taiteellisesti pienennettynä. Sana uudestaan korko. Kaikki tämä on tehtävä hyvin nopeasti. Meillä on nyt kaksi ylimääräistä laskentatasoa, yksi ympäristön näytön himmennykselle ja toinen kahdeksalle kuvajaksolle, jotka on käytetty siirtymiseen kahden puskurin välillä. Siksi tämä koodi olisi kirjoitettava kokoonpanossa, mutta se on tarpeeksi hyvä C -kirjaimessa.

Vaihe 4: Rakentaminen - piirilevy

Rakenne - PCB
Rakenne - PCB
Rakenne - PCB
Rakenne - PCB

Tämä on melko suoraviivaista. Vain kaksipuolinen piirilevy, jossa on joitain SMD -komponentteja. Anteeksi, jos olet läpireikäinen henkilö, mutta SMD -projekteja on paljon helpompi tehdä….reikiä porata. Sinulla pitäisi olla vakaa käsi, lämpötilaohjattu juotosasema ja runsaasti valoa ja suurennusta helpottaaksesi asioita.

Ainoa huomioitava piirilevyn rakentamisessa on liitin PIC: n ohjelmointiin. Tämä muodostaa yhteyden PIC: n ICSP -nastoihin ja tarvitset ICSP -ohjelmoijan. Käytin taas kätevää roskapostiliitintäni. Voit jättää tämän pois ja juottaa johdot tyynyihin, jos haluat. Vaihtoehtoisesti, jos sinulla on vain pistorasiainen ohjelmoija, voit tehdä otsikon, joka kytketään pistorasiaan, ja sitten juottaa sen ICSP -tyynyihin. Jos teet tämän, irrota Rx ja yhdistä Ry, jotka ovat vain nollaohmin linkkejä (käytän vain juotosmallia). Tämä katkaisee loput piirin virrasta PIC: stä, joten se ei häiritse ohjelmointia. Socketed -ohjelmoija käyttää vain ICSP -nastoja kuin ICSP -ohjelmoija, eikä siinä ole oikeastaan mitään taikuutta. Sinun on myös tehtävä tämä, jos olet vahingossa unohtanut viivyttää koodia ennen RTC: n käynnistymistä. 16F88: n ICSP -ohjelmointitapit ovat samat kuin RTC: hen käytetyn 32,768 kHz: n kristallin tarvitsemat nastat…… jos ulkoinen T1 -oskillaattori (eli RTC) on käynnissä ennen kuin ICSP voi aloittaa toimintansa, ohjelmointi epäonnistuu. Normaalisti, jos MCLR -nastassa on nollaus ja viive, ICSP -data voidaan lähettää näihin nastoihin ja ohjelmointi voi alkaa oikein. Eristämällä PIC: n virran ICSP -ohjelmoija (tai pistorasiaohjelmoija, jossa on otsikko) voi kuitenkin ohjata laitteen virtaa ja pakottaa ohjelman. Muita huomioitavia asioita ovat, että piirilevyn kidelevyt on alun perin suunniteltu SMD -kiteille. En voinut odottaa, että jotkut toimitetaan, joten 32,768 kHz: n kellokide juotettiin yläosaan kuvan osoittamalla tavalla, ja 20 MHz: n kide kiinnitettiin poraamalla pari reikää tyynyihin, työntämällä kide pohjaan ja juottamalla alkuun. Näet nastat PIC16F88: n oikealla puolella.

Vaihe 5: Holografinen elokuva ja kotelo

Holografinen elokuva ja kotelo
Holografinen elokuva ja kotelo
Holografinen elokuva ja kotelo
Holografinen elokuva ja kotelo
Holografinen elokuva ja kotelo
Holografinen elokuva ja kotelo

Lopullinen rakenne on yksinkertaisesti PCB: n asettaminen koteloon ja ohjelmoinnin jälkeen kiinnittämällä se kuumalla liimalla. Kolme reikää mahdollistaa pääsyn mikrokytkimiin edestä.

Tämän kellon merkittävä osa on holografisen diffuusorikalvon käyttö. Tämä on erityinen elokuva, jonka olin makaamassa ja joka antaa laitteelle mukavan syvyyden. Voit käyttää tavallista jäljityspaperia (jossa siirrän piirilevyn lähemmäs etuosaa) tai mitä tahansa muuta hajotinta, kuten loisteputkivalaisimissa käytettävää. Kokemus on, että ainoa asia, jonka se tarvitsee tehdä, on antaa sinun erottaa valaistujen LED -valojen määrä, tai muuten pisteiden laskeminen ajan osoittamiseksi on vaikeaa. Käytin Physical Optics Coorporationin (www.poc.com) holografista dispersiomateriaalia 30 asteen pyöreällä dispersiolla, muualla ohjeessa esitetyssä supertietokoneen tilanäytössä käytettiin kalvoa, jonka elliptinen dispersio oli 15 x 60 astetta. Voit piilottaa kiiltävät sisäosat päiväsaikaan pimennysnauhalla saadaksesi salaperäisemmän ilmeen. Voit jopa jättää näytön tyhjäksi ja antaa ihmisten nähdä sisäosat kuten minä. Jalusta oli kaksi bittiä alumiinista "L" -palkkia, jonka alapuolella oli vähän leikattua, jotta taivutus olisi mahdollista. Huomaa näissä kuvissa lisävalaistus, jotta näet näytön kannet jne. Normaalissa olohuoneen valaistuksessa LEDit ovat näkyvämpiä, jopa päivänvalossa.

Vaihe 6: Ohjelmisto ja käyttöliittymä

Laitteen käyttö on hyvin yksinkertaista, ei erityisiä kuviotiloja tai räikeitä juttuja. Ainoa asia, jonka se tekee, on näyttää aika.

Aseta aika ensin painamalla SW1. Laite vilkuttaa kaikkia LED -valoja muutaman kerran ja sitten 10 sekunnin LED -valojen ryhmä SW3 kasvattaa valittua ryhmää SW2 siirtymällä seuraavaan LED -ryhmään, joka kerta kun kaikki ryhmän LED -valot vilkkuvat lyhyesti. Koodi on kirjoitettu Sourceboostin C -kääntäjäversiolle 6.70. RTC -koodi on tiedostoissa t1rtc.c/h, ja sillä on keskeytystoiminto PIC -ajastimessa. T1 -ajastin on asetettu keskeyttämään 1 sekunnin välein. Ajan muuttuja kasvaa joka sekunti. Myös rasti -ajastin lasketaan alas joka sekunti ajan kanssa. Tätä käytetään määrittämään milloin näyttö siirtyy. Keskeytystoiminto käyttää myös T0 -ajastintoimintoa näytön päivittämiseen ja kutsuu näytössä näkyvää toimintoa. C Tiedostot display.h/display.c sisältävät näytön päivittämis- ja näyttötoiminnot Tiedostojen ohjaus. C/h sisältävät toiminnot ajan asettamiseksi ja kytkimien lukemiseksi Tiedostot holoclock.c/h ovat tärkeimmät silmukat ja alustus.

Suositeltava: