Sisukord:

Minidot 2 - kellaaeg: 6 sammu
Minidot 2 - kellaaeg: 6 sammu

Video: Minidot 2 - kellaaeg: 6 sammu

Video: Minidot 2 - kellaaeg: 6 sammu
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, November
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Noh, võib -olla on holoclock natuke ebatäpne…. See kasutab esiküljel holograafilist dispersioonkilet, et anda natuke sügavust. Põhimõtteliselt on see juhendatav värskendus minu eelmisele Minidotile, mis asub siin: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/ja taaskasutades palju minu Microdoti koodi ja vooluringi, mis asuvad siin: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD-failid ja Sourceboosti kood on lisatud lisatud ZIP-failidesse. Miks? Eelmine Minidot oli liiga keeruline, Microdotist õppisin, kuidas PIC -il RTC -d teha, kasutades ainult 32.768 kristalli ega vaja spetsiaalset RTC -kiipi. Samuti tahtsin vabaneda eelmise Minidoti kuvarikiipidest. Nii et nüüd on ainult toiteregulaatori kiip ja PIC16F88…. Lihtsalt kaks kiipi. Muud värskenduse põhjused olid see, et minu Minidot muutus eraldi lülitusplaadi tõttu natuke ebausaldusväärseks ja ma tahtsin punktmustrite vahel pehmet tuhmumist samuti mingi ümbritseva valguse andur ekraani hämardamiseks öösel. Teine Minidot oli fikseeritud heledusega ja valgustas öösel ruumi. Seade ehitati tarkvarapaketi EagleCad ja Sourceboosti kompilaatori abil. Selle projekti alustamiseks peab teil olema kogemusi elektroonika ja PIC -kontrollerite programmeerimisega. Pange tähele, et see ei ole elektroonika- ega PIC -programmeerimise juhend, nii et jätke Miniclocki kujundusega seotud küsimused alles. EagleCadi kasutamise või PIC -de programmeerimise kohta leiate juhiseid ülaltoodud juhenditest või paljudest muudest selle saidi juhenditest. Nii et siin see on….. Minidot 2, The Holoclock …… või Minidot The Next Generation ………….

1. samm: vooluring

Ringkond
Ringkond
Ringkond
Ringkond
Ringkond
Ringkond

See vooluahel on Microdotiga väga sarnane. Pange tähele, et charlieplexi massiiv on praktiliselt identne … teisaldatud on vaid mõned tihvtid.

Microdoti ahelasse on lisatud 20Mhz kristall, et PIC märksa kiiremini kellata, see võimaldab massiivi kiiremini skannida ja võimaldab rakendada hämardamisalgoritmi. Hämardamisalgoritm oli väga oluline ristmustri tuhmumise ja ümbritseva valguse funktsiooni toimimiseks. See oleks Microdotiga võimatu olnud aeglasema taktsageduse tõttu, kuna mõned skaneerimistsüklid tuli kulutada hämardamisele. Pimendusfunktsiooni kirjelduse leiate järgmisest jaotisest. Teised asjad, mida tuleb tähele panna, on laadimispumba regulaatori MCP1252 kasutamine 5 V toiteks, mis on minu lemmikkiip hetkel. Kui ahelat muudaksite, saaksite kasutada tavalist vana 7805 ……. Mul on lihtsalt hulk neid käepäraseid kiipe rippumas. Olen nüüd lülitid ettepoole nihutanud, säästab pärast voolukatkestust kella tagant askeldamist, et aja lähtestada, ja nüüd on kõik ainult üks trükkplaat….kaabeldusprobleeme pole. Märkimisväärne on ka LDR -i lisamine. Seda kasutatakse pingejaguris, mida tunneb PIC -i A/D -tihvt. Kui PIC tuvastab, et ümbritseva valguse tase on madal (st öine aeg), hoiab hämardamisalgoritm charlieplexi massiivi tumedana rohkem tsüklit kui kõrge valgustaseme korral. Ma ei leidnud Eaglecadi raamatukogust LDR -sümbolit, nii et ma kasutasin lihtsalt LED -sümbolit … … ärge laske end petta, see on LDR. Vaadake PCB tegelikku pilti allpool. Üks asi tuleb märkida, kui kasutate mitmevärvilisi LED-e charliplex-massiivis. Peate veenduma, et valgusdioodide edasipinge on enam -vähem sama. Kui ei, siis võivad tekkida hulkuvad vooluteed ja süttib mitu LED -i. Seega 5 mm või suurema võimsusega LED -ide kasutamine selle konfiguratsiooni jaoks ei toimi, kuna roheliste/siniste ja punaste/kollaste LED -ide vahel on tavaliselt üsna suur erinevus. Sel juhul kasutasin 1206 SMD LED -i ja eriti tõhusaid rohelisi/siniseid LED -e. Edasised pinged ei olnud siin siiski probleemiks. Kui soovite charlieplexi massiivis kasutada rohelise/sinise ja punase/kollase suure võimsusega LED -de segu, peate eraldama erinevad värvid kaheks charliplex -massiiviks. Charliepleximise kohta on palju selgitusi, mida saab googeldada … … Ma ei hakka siin üksikasju laskma. Jätan teile uurimistöö tegemise. (Suurema versiooni nägemiseks vajutage alloleva pildi nurgas olevat väikest i -ikooni)

2. samm: hämardamisalgoritm - Charliplexed impulsi laiuse modulatsioon

Pimendusalgoritm - Charliplexed impulsi laiuse modulatsioon
Pimendusalgoritm - Charliplexed impulsi laiuse modulatsioon

Nagu varem mainitud, tahtsin, et aja jooksul erinevad punktmustrid sujuks sujuvalt, mitte ühelt mustrilt teisele. Keskel on uus Minidoti kell, paremal on vanem Minidot. Pange tähele, kui palju ilusam on uus. (Teadmiseks, teised taustal olevad kuvarid on minu Minicray superarvuti olekunäidik ja minu jäädvustatud Nebuloni osake, mis toidab Minicray'i antiaine magnetväljas. Vaata siit: https://www.youtube.com/watch? V = bRupDulR4ME nebuloni sulgemiskambrist) Kui vaatate koodi, avage fail display.c. Pange tähele, et tris/pordi väärtuste kaardistamiseks on neli massiivi konkreetse massiivi valgustamiseks ja kaks massiivi (üks rohkem kui Microdot -kood), et määrata, millised LED -id tuleks valgustada mis tahes konkreetse LED -i mustri jaoks. Nt:

// LED1 LED2 LED3… allkirjastamata sümbol LEDS_PORTA [31] = {0x10, 0x00, 0x00,… unsigned char LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Allkirjastamata sümbol LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… unsigned char nLedsA [30]; unsigned char nLedsB [30];Näiteks LED1 süttimiseks peate seadistama TRIS -registrid TRISA: B = 0xef: 0xfd ja PORT -registrid PORTA: B = 0x10: 0x00 ja nii edasi. Kui kirjutate tris väärtused kahendkoodi, märkate, et korraga on lubatud ainult kaks väljundit. Kõik teised on seatud kolme olekuga (seega TRIS-register). See on charlieplexingu keskmes. Pange tähele ka seda, et üks väljund on alati loogiline '1' ja teine alati loogiline '0'. massiivid on nullväärtus, mis lülitab LED -i üldse sisse. Microdot'is käis funktsioon update_display pidevalt läbi teise massiivi (nLeds ), et näha, kas see konkreetne LED peaks olema valgustatud. Kui see oli nii, siis määrati vastavad tris/pordi väärtused ja LED põles teatud aja jooksul. Vastasel korral saadeti nullväärtus PIC -ide TRIS/PORT registritesse ja mõnda aega ei põlenud ühtegi LED -i. Kui see on piisavalt kiiresti tehtud, andis see mustri. Ülejäänud programm loeks perioodiliselt RTC väärtusi ja moodustaks selles massiivis kena juhusliku mustri…. Ja nii muutus ekraan. Pimendusfunktsiooni tegemiseks laiendati seda veidi nii, et pärast 30 LED -i valgustamist (või mitte), siis kulutatakse nullväärtuste saatmisele lisaperioode, kui kuvarit hämardatakse…..täieliku heleduse korral ei kulutata lisaperioode. Kui seda korratakse, kui valgustatud LED -idel on palju nullperioode, oleks ekraan hämar. Tegelikult on see multipleksitud impulsi laiuse modulatsioon…..või seetõttu, et riistvara on konfigureeritud charlieplexi arragementis, siis charlieplexed impulsi laiuse modulatsioon. Allolev teine diagramm näitab selle põhiseadistust. Ma nimetan seda skaneerimisraamiks. Kaadri esimesed 30 perioodi kasutatakse valgusdioodide läbimiseks…..ja muutuv arv lisaperioode määrab ekraani tuhmuse. See tsükkel kordub. Rohkem nullperioode tähendab vähem aega LED -i kaadri kohta põlemiseks (kuna perioodide arv suurenes). Pange tähele, et vertikaaltelg ei tähenda pingetaset. Valgusdioodidele suunduvate tihvtide tegelik olek varieerub sõltuvalt selle asukohast charlieplexi massiivis….. diagrammil tähendab see lihtsalt sisse või välja lülitamist. See tähendas ka seda, et ka raami kogupikkus ajas suurenes, vähendades seega värskendust määra. Kui valgusdioodid muutusid tuhmimaks, hakkasid need teisisõnu vilkuma. Seega on see meetod kasulik ainult teatud ulatuses. Kella puhul oli see korras. Funktsiooni nimetatakse vahelduvalt, mis loeb PIC -i A/D -muundurit ja määrab selle heledustaseme. Kui loete koodi, kontrollib see ka seda, kas LDR -i lähim valgusdiood põleb ja ei tee sellel tasemel ühtegi sätet, see peatab ekraani mustri muutumisel ootamatult heleduse.

3. samm: hämardamisalgoritm - risthajumise efekt ja kahekordne puhverdamine

Hämardamise algoritm - Cross Fade Effect ja kahekordne puhverdus
Hämardamise algoritm - Cross Fade Effect ja kahekordne puhverdus

Üleminek ühe mustri ja järgmise vahel oli varem vahetu. Selle kella puhul tahtsin näidata üht mustrit, mille heledus järk -järgult väheneb ja järgmine muster järk -järgult suureneb… st risttuhm.

Mul ei olnud vaja eraldi LED -e, et neid eraldi heledustasemel juhtida, et teha risti hajumist. Lihtsalt vajasin esimest mustrit ühe heleduse juures ja teist väikese heledusega. Siis vähendasin lühikese aja jooksul esimese heledust veidi ja suurendasin teist….. see jätkab kuni teise mustri täieliku täitumiseni. Siis ootaks kell, kuni järgmine muster peaks ilmuma, ja toimub uus üleminek. Seega oli mul vaja salvestada kaks mustrit. See, mida praegu kuvatakse, ja teine muster, mida hakati kuvama. Need on massiivides nLedsA ja nLedsB. (pange tähele, et sel juhul pole pistikutega midagi pistmist). See on kahekordne puhver. Funktsiooni update_display () muudeti nii, et see vaatas läbi kaheksa kaadrit ja näitas esmalt ühe massiivi, seejärel teise kaadrite arvu. Igale puhverile eraldatud kaadrite arvu muutmine kaheksa tsükli jooksul määras iga mustri heleduse. Kui lõpetasime puhvrite vahel rattasõidu, vahetasime puhvrid „kuva” ja „järgmine kuva” ümber, nii et mustrit genereeriv funktsioon kirjutaks ainult „järgmise kuva” puhvrisse. Allolev diagramm näitab seda loodetavasti. Peaksite nägema, et üleminek võtab 64 skannimiskaadrit. Pildil on väikesel sisendil eelmise lehe skaneerimisraami skeem osavalt vähendatud. Sõna uuesti värskendamise määra kohta. Seda kõike tuleb teha väga kiiresti. Meil on nüüd kaks täiendavat arvutustaset, üks ümbritseva ekraani hämaruse jaoks ja teine kaheksa kaadritsükli jaoks, mis kulub kahe puhvri vahel üleminekuks. Seega tuleks see kood kirjutada kokkupanemisel, kuid see on piisavalt hea tähega „C”.

4. samm: ehitus - trükkplaat

Ehitus - PCB
Ehitus - PCB
Ehitus - trükkplaat
Ehitus - trükkplaat

See on üsna lihtne. Lihtsalt kahepoolne trükkplaat, mille ülaosas on mõned SMD komponendid. Vabandust, kui olete läbi aukude inimene, kuid SMD -projekte on palju lihtsam teha ….puurimiseks auke. Asjade lihtsustamiseks peaks teil olema kindel käsi, reguleeritud temperatuuriga jootmisjaam ning palju valgust ja suurendust.

Ainus asi, mida PCB ehitamisel tähele panna, on pistiku lisamine PIC -i programmeerimiseks. See ühendub PIC -i ICSP -tihvtidega ja vajate ICSP -programmeerijat. Jällegi kasutasin käepärast oma rämpsposti pistikut. Soovi korral võite selle vahele jätta ja lihtsalt jootma juhtmed patjade külge. Teise võimalusena, kui teil on ainult pistikupesaga programmeerija, saate teha pistikupesasse ühendatava päise ja seejärel joota selle ICSP -padjakeste külge. Kui te seda teete, siis ühendage Rx lahti ja ühendage Ry, mis on vaid null oomi lingid (ma kasutan lihtsalt jootepulka). See ühendab ülejäänud vooluahela toiteallika PIC -st lahti, nii et see ei sega programmeerimist. Pistikupesaga programmeerija kasutab lihtsalt ICSP tihvte nagu ICSP programmeerija, tegelikult pole selles maagiat. Peate seda tegema ka siis, kui olete kogemata unustanud koodi enne RTC käivitamist viivitada. 16F88 puhul on ICSP programmeerimispoldid samad, mis RTC jaoks kasutatava 32,768 kHz kristalli jaoks vajalikud tihvtid…… kui T1 väline ostsillaator (st RTC) töötab enne ICSP töö alustamist, siis programmeerimine ebaõnnestub. Tavaliselt, kui MCLR -i tihvtil on lähtestamine ja viivitus, saab ICSP -andmed nendele tihvtidele saata ja programmeerimine saab korralikult alata. Kuid eraldades PIC -i toite, saab ICSP programmeerija (või päisepesaga programmeerija) juhtida seadme toiteallikat ja sundida programmi. Tähelepanu tuleb pöörata ka sellele, et trükkplaadil olevad kristallpadjad olid algselt mõeldud SMD kristallide jaoks. Ma ei jõudnud ära oodata, kuni mõned neist kohale toimetatakse, nii et 32,768 kHz kellakristall joodeti üles, nagu näidatud, ja 20MHz kristall kinnitati, puurides padjadesse paar auku, torgates kristalli alt läbi ja jootes top. Näete tihvte PIC16F88 -st paremal.

5. samm: holograafiline film ja korpus

Holograafiline film ja korpus
Holograafiline film ja korpus
Holograafiline film ja korpus
Holograafiline film ja korpus
Holograafiline film ja korpus
Holograafiline film ja korpus

Lõplik konstruktsioon on lihtsalt PCB sisestamine korpusesse ja pärast programmeerimist selle kinnitamine kuuma liimiga. Kolm auku võimaldavad ligipääsu mikrolülititele eestpoolt.

Selle kella tähelepanuväärne osa on holograafilise hajuti kile kasutamine. See on eriline film, mis mul oli lamades ja mis annab seadmele kena sügavuse. Võite kasutada tavalist jälgimispaberit (mille puhul nihutaksin trükkplaadi esiküljele lähemale) või mõnda muud hajuti, näiteks neid, mida kasutatakse luminofoorlampides. Kogemuslikult on ainus asi, mida ta peab tegema, on võimaldada teil eristada valgustatud LED -ide arvu, vastasel juhul on punktide lugemine aja määramiseks keeruline. Kasutasin Physical Optics Coorporationi (www.poc.com) holograafilist dispersioonmaterjali 30 -kraadise ümmarguse dispersiooniga, mujal juhendis näidatud superarvuti olekunäidikul kasutati filmi, mille elliptiline dispersioon oli 15x60 kraadi. Salapärasema väljanägemise saamiseks võite päeva jooksul säravate sisemuste peitmiseks kasutada mõnda pimenduslinti. Võite isegi ekraani selgeks jätta ja lasta inimestel näha sisemusi nagu mina. Alus oli kaks tükki alumiiniumist "L" varda, mille põhi oli veidi välja lõigatud, et painduda. Pange tähele, et nendel piltidel lisati lisavalgustus, et saaksite näha ekraani katteid jne. Tavalise elutoa valgustuse korral on LED -id isegi päevavalguses rohkem esile tõstetud.

6. samm: tarkvara ja kasutajaliides

Seadme tööpõhimõte on väga lihtne, ei mingeid erilisi mustrirežiime ega toretsevaid asju. Ainus asi, mida see teeb, on aja kuvamine.

Kellaaja määramiseks vajutage esmalt nuppu SW1. Seade vilgutab paar korda kõiki LED -e ja seejärel suurendab 10 -tunniste LED -de rühm SW3 valitud rühma SW2, mis liigub järgmise LED -de rühma, vilgutades iga kord lühidalt kõiki rühma LED -e. Kood on kirjutatud Sourceboost 'C' kompilaatori versiooni 6.70 jaoks. RTC -kood on failides t1rtc.c/h ja sellel on PIC -taimeril T1 katkestusfunktsioon. Taimer T1 on seatud katkestama iga 1 sekundi tagant. Igal sekundil suurendatakse aja muutujat. Samuti loendatakse puugitaimer iga sekundiga koos ajaga. Seda kasutatakse ekraani ülemineku määramiseks. Katkestusfunktsioon kasutab ekraani värskendamiseks ka taimerikatkestust T0, kutsudes ekraanil oleva funktsiooni. C Failid display.h/display.c sisaldavad ekraani värskendamise ja kellaaja kuvamise funktsioone Failide kontroll.c/h sisaldavad funktsioonid kellaaja seadmiseks ja lülitite lugemiseks Failid holoclock.c/h on peamised silmused ja lähtestamine.

Soovitan: