Satura rādītājs:

Minidot 2 - Holoclock: 6 soļi
Minidot 2 - Holoclock: 6 soļi

Video: Minidot 2 - Holoclock: 6 soļi

Video: Minidot 2 - Holoclock: 6 soļi
Video: Nerf Gun at a Gun Range 😂 2024, Jūlijs
Anonim
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock
Minidot 2 - Holoclock

Nu varbūt holoclock ir nedaudz neprecīzs…. Tā priekšpusē tiek izmantota hologrāfiska izkliedes plēve, lai sniegtu mazliet dziļuma. Būtībā šis pamācība ir atjauninājums manam iepriekšējam Minidot, kas atrodas šeit: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/un atkārtoti izmantot daudz koda un shēmu no mana Microdot, kas atrodas šeit: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD faili un Sourceboost kods ir iekļauti pievienotajos zip failos. Kāpēc? Iepriekšējais Minidot bija pārāk sarežģīts, no Microdot es uzzināju, kā veikt RTC PIC, izmantojot tikai 32.768 kristālu, un man nebija jāizmanto īpaša RTC mikroshēma. Arī es gribēju atbrīvoties no displeja mikroshēmām no iepriekšējā Minidot. Tātad tagad ir tikai jaudas regulatora mikroshēma un PIC16F88…. Tikai divas mikroshēmas. Citi atjaunināšanas iemesli bija tas, ka mans Minidot kļuva nedaudz neuzticams atsevišķā slēdža dēļa dēļ, un es gribēju mīkstu izbalēšanu starp punktu modeļiem kā kā arī kaut kāds apkārtējās gaismas sensors, lai aptumšotu displeju naktī. Otrs Minidot bija fiksēts spilgtums un apgaismoja istabu naktī. Ierīce tika izveidota, izmantojot programmatūras pakotni EagleCad un kompilatoru Sourceboost. Lai sāktu šo projektu, jums ir jābūt pieredzei elektronikas un PIC kontrolieru programmēšanā. Lūdzu, ņemiet vērā, ka tas nav pamācāms elektronikā vai PIC programmēšanā, tāpēc, lūdzu, saglabājiet jautājumus, kas attiecas uz Miniclock dizainu. Skatiet iepriekš sniegtos norādījumus vai daudzas citas pamācības šajā vietnē, lai saņemtu padomu par EagleCad lietošanu vai PIC programmēšanu. Tātad, tas ir….. Minidot 2, Holoclock …… vai Minidot nākamā paaudze ………….

1. solis: ķēde

Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde

Šī shēma ir ļoti līdzīga Microdot. Ņemiet vērā, ka charlieplex masīvs ir praktiski identisks … ir pārvietotas tikai dažas tapas.

Mikrodota ķēdei ir pievienots 20Mhz kristāls, lai PIC pulksteņotu daudz ātrāk, tas ļauj masīvu skenēt ātrāk un ļauj īstenot aptumšošanas algoritmu. Aptumšošanas algoritms bija ļoti svarīgs, lai darbotos krustveida rakstu izbalēšana un apkārtējās gaismas funkcija. Izmantojot Microdot, tas būtu bijis neiespējami lēnāka pulksteņa ātruma dēļ, jo daži skenēšanas cikli bija jāvelta aptumšošanai. Aptumšošanas funkcijas aprakstu skatiet nākamajā sadaļā. Citas lietas, kas jāņem vērā, ir MCP1252 uzlādes sūkņa regulatora izmantošana, lai piegādātu 5 V, manu iecienītāko mikroshēmu. Ja jūs mainījāt ķēdi, jūs varētu izmantot vienkāršu veco 7805 …… Man vienkārši ir vairākas šīs parocīgās mikroshēmas. Tagad esmu pārbīdījis slēdžus uz priekšu, ietaupa muldēšanu pulksteņa aizmugurē pēc strāvas padeves pārtraukumiem, lai atiestatītu laiku, un tagad viss ir tikai viens PCB …. nav problēmu ar kabeļiem. Jāatzīmē arī LDR iekļaušana. To izmanto sprieguma dalītājā, ko uztver PIC A/D tapa. Kad PIC uztver apkārtējās gaismas līmeni, kas ir zems (ti, nakts laikā), aptumšošanas algoritms saglabā Charlieplex masīvu tumšu vairāk ciklu laikā nekā tad, ja gaismas līmenis ir augsts. Es nevarēju atrast LDR simbolu Eaglecad bibliotēkā, tāpēc es vienkārši izmantoju LED simbolu….. nevajag apmānīt, tas ir LDR. Skatiet faktisko PCB attēlu zemāk. Viena lieta, kas jāņem vērā, izmantojot daudzkrāsainas gaismas diodes charliplex masīvā. Jums jāpārliecinās, ka gaismas diodes priekšējais spriegums ir vairāk vai mazāk vienāds. Ja nē, tad var rasties strāvas ceļi un iedegsies vairākas gaismas diodes. Tādējādi 5 mm vai lielākas jaudas gaismas diodes izmantošana šai konfigurācijai nedarbosies, jo parasti ir diezgan liela atšķirība starp zaļajām/zilajām un sarkanajām/dzeltenajām gaismas diodēm. Šajā gadījumā es izmantoju 1206 SMD gaismas diodes un īpaši augstas efektivitātes zaļas/zilas gaismas diodes. Priekšējā spriegums šeit nebija problēma. Ja vēlaties izmantot zaļās/zilās un sarkanās/dzeltenās lieljaudas gaismas diožu kombināciju charlieplex masīvā, jums ir jāsadala dažādas krāsas divos charliplex blokos. Ir daudz paskaidrojumu par charlieplexing, ko var meklēt googlē … … Es šeit neiedziļināšos detaļās. Es atstāšu jums pētījumu. (Nospiediet mazo “i” ikonu zemāk esošā attēla stūrī, lai redzētu lielāku versiju)

2. darbība: aptumšošanas algoritms - Charliplexed impulsa platuma modulācija

Aptumšošanas algoritms - Charliplexed impulsa platuma modulācija
Aptumšošanas algoritms - Charliplexed impulsa platuma modulācija

Kā jau minēts iepriekš, es gribēju, lai dažādi punktu modeļi laikam izzustu vienmērīgi, nevis raustītos no viena modeļa uz otru. Demonstrāciju skatiet videoklipā. Vidū ir jaunais Minidot pulkstenis, labajā pusē ir vecākais Minidot. Ievērojiet, cik jaunais ir jaukāks. (FYI, pārējie displeji fonā ir mans Minicray superdatora statusa displejs un mana uztvertā Nebulon daļiņa, kas darbina Minicray antimatiskās magnētiskās izolācijas laukā. Demonstrāciju skatiet šeit: https://www.youtube.com/watch? V = bRupDulR4ME nebulona ieslodzījuma kamerā) Ja ieskatāties kodā, atveriet failu display.c. Ņemiet vērā, ka ir trīs masīvi tris/porta vērtību kartēšanai, lai apgaismotu jebkuru konkrētu masīvu, un divi masīvi (viens vairāk nekā Microdot kods), lai noteiktu, kuras gaismas diodes vajadzētu apgaismot jebkuram konkrētam LED modelim.

// LED1 LED2 LED3… neparakstīts simbols LEDS_PORTA [31] = {0x10, 0x00, 0x00,… neparakstīts simbols LEDS_TRISA [31] = {0xef, 0xff, 0xff,… unsigned char LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Neparakstīts simbols LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9,… neparakstīts simbols nLedsA [30]; neparakstīts simbols nLedsB [30];Piemēram, lai iedegtos LED1, jāiestata TRIS reģistri TRISA: B = 0xef: 0xfd un PORT reģistri PORTA: B = 0x10: 0x00 un tā tālāk. Izrakstot tris vērtības binārā, jūs atzīmēsit, ka vienlaikus ir iespējotas tikai divas izejas. Pārējie ir iestatīti uz trīs stāvokli (tātad TRIS reģistrs). Tas ir centrālais charlieplexing. Jūs arī atzīmēsit, ka viena izeja vienmēr ir loģiska “1”, bet otra vienmēr ir loģiska “0”…. Kuras virziens ieslēdzas atkarībā no tā, kura gaismas diode atrodas starp šīm divām izejas līnijām. Pēdējā vērtība portā/tris masīvi ir nulles vērtība, lai vispār neieslēgtu gaismas diodi. Mikrodatā funkcija update_display nepārtraukti riņķo citā masīvā (nLeds ), lai noskaidrotu, vai konkrētais gaismas diode ir jāizgaismo. Ja tā bija, tad tika iestatītas atbilstošās tris/porta vērtības un gaismas diode iedegās kādu laiku. Pretējā gadījumā nulles vērtība tika nosūtīta PIC TRIS/PORT reģistriem, un kādu laiku netika iedegta neviena gaismas diode. Kad tas tika izdarīts pietiekami ātri, tas deva modeli. Pārējā programma periodiski nolasītu RTC vērtības un šajā masīvā izveidotu jauku nejaušu modeli … ja) displejs būtu aptumšots…, lai iegūtu pilnīgu spilgtumu, papildu periodi netiktu pavadīti. Atkārtoti, ja apgaismotajām gaismas diodēm ir daudz nulles periodu, displejs būs blāvs. Faktiski tā ir multipleksēta impulsa platuma modulācija….. vai arī tāpēc, ka aparatūra ir konfigurēta čārlipleksa arragementā, tad charlieplexed impulsa platuma modulācija. Tālāk esošajā otrajā diagrammā ir parādīti pamata iestatījumi. Es to saucu par skenēšanas rāmi. Pirmie 30 kadra periodi tiek izmantoti, lai izietu cauri gaismas diodēm ….. un mainīgs papildu periodu skaits nosaka displeja blāvumu. Šis cikls atkārtojas. Vairāk nulles periodu nozīmē mazāk laika, lai LED iedegtos vienā kadrā (jo palielinājās periodu skaits). Ņemiet vērā, ka vertikālā ass nenozīmē sprieguma līmeni. Gaismas diodēm paredzēto tapu faktiskais stāvoklis mainās atkarībā no tā stāvokļa charlieplex masīvā….. diagrammā tas nozīmē tikai ieslēgšanu vai izslēgšanu. Tas nozīmēja arī kopējo kadra garumu laikā, kā arī palielinājās, tādējādi samazinot atsvaidzināšanu likme. Tā kā gaismas diodes kļuva blāvākas, citiem vārdiem sakot, tās sāks mirgot. Tātad šī metode ir noderīga tikai zināmā mērā. Pulkstenim tas bija OK. Funkcija tiek saukta ar pārtraukumiem, kas nolasa PIC A/D pārveidotāju un nosaka šo spilgtuma līmeni. Ja jūs lasāt kodu, tas arī pārbauda, vai ir ieslēgta LDR tuvākā gaismas diode, un neveic nekādus līmeņa iestatījumus, ja tas tā ir, tas aptur displeja negaidītu spilgtumu, kad tiek mainīts raksts. Tālāk tiek izmantota krustošanās funkcija.

3. darbība: aptumšošanas algoritms - krustošanās efekts un dubultā buferizācija

Aptumšošanas algoritms - krustošanās efekts un dubulta buferizācija
Aptumšošanas algoritms - krustošanās efekts un dubulta buferizācija

Pāreja starp vienu modeli un nākamo bija tūlītēja. Šim pulkstenim es gribēju parādīt vienu modeli, kas pakāpeniski samazinās, un nākamais modelis pakāpeniski palielinās … ti, krustošanās.

Man nebija vajadzīgas atsevišķas gaismas diodes, lai tās varētu kontrolēt atsevišķos spilgtuma līmeņos, lai izbalētu. Vienkārši vajadzēja pirmo modeli ar vienu spilgtumu un otro ar zemu spilgtumu. Pēc tam īsā laikā es nedaudz samazinātu pirmā spilgtumu un palielinātu otro ….. tas turpinās līdz otrajam modelim. Tad pulkstenis gaidīs, līdz tiks parādīts nākamais modelis, un būs vēl viena pāreja. Tādējādi man vajadzēja saglabāt divus modeļus. Tas, kas pašlaik tiek parādīts, un otrs paraugs, kas drīz tiks parādīts. Tie ir masīvos nLedsA un nLedsB. (ņemiet vērā, ka šajā gadījumā nav nekāda sakara ar ostām). Tas ir dubults buferis. Funkcija update_display () tika modificēta, lai cikliski apskatītu astoņus kadrus un parādītu vairākus kadrus no pirmā masīva, pēc tam otrā. Mainot katram buferim piešķirto kadru skaitu astoņu ciklu laikā, tika noteikts, cik spilgts būs katrs raksts. Pabeidzot riteņbraukšanu starp buferiem, mēs mainījām “displeja” un “nākamā displeja” buferus, tāpēc modeļa ģenerēšanas funkcija rakstītu tikai uz “nākamā displeja” buferi. Zemāk redzamā diagramma to parāda cerīgi. Jums vajadzētu redzēt, ka pāreja prasīs 64 skenēšanas kadrus. Attēlā mazais ieliktnis parāda skenēšanas kadru diagrammu no iepriekšējās lapas, kas ir mākslīgi samazināta. Vārds par atkārtotu kursu. Tas viss ir jādara ļoti ātri. Tagad mums ir divi papildu aprēķinu līmeņi, viens apkārtējā displeja blāvumam un otrs astoņiem kadru cikliem, kas pavadīti, pārejot starp diviem buferiem. Tādējādi šis kods būtu jāraksta montāžā, bet ir pietiekami labs “C”.

4. solis: būvniecība - PCB

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

Tas ir diezgan vienkārši. Tikai divpusēja PCB ar dažiem SMD komponentiem augšpusē. Atvainojiet, ja esat caururbjošs cilvēks, bet SMD projektus ir daudz vieglāk izveidot….bez urbumiem. Lai atvieglotu darbu, jums ir jābūt stabilai rokai, lodēšanas stacijai ar temperatūras kontroli un daudz gaismas un palielinājuma.

Vienīgais, kas jāņem vērā, veidojot PCB, ir savienotāja iekļaušana PIC programmēšanai. Tas savienojas ar PIC tapām ICSP, un jums būs nepieciešams ICSP programmētājs. Atkal es izmantoju parocīgu manam atkritumu savienotājam. Ja vēlaties, varat to izlaist un vienkārši pielodēt vadus pie spilventiņiem. Alternatīvi, ja jums ir tikai programmētājs ar ligzdu, varat izveidot galveni, kas tiek pievienota kontaktligzdai, un pēc tam pielodēt to pie ICSP spilventiņiem. Ja jūs to darāt, atvienojiet Rx un pievienojiet Ry, kas ir tikai nulles omu saites (es vienkārši izmantoju lodēšanas lāpstiņu). Tas atvienos pārējo ķēdes jaudu no PIC, lai tas netraucētu programmēšanai. Programmētājs ar ligzdu vienkārši izmanto ICSP tapas kā ICSP programmētājs, patiesībā tajā nav iesaistīta maģija. Tas jādara arī tad, ja kļūdas dēļ esat aizmirsis ievadīt koda aizkavi pirms RTC palaišanas. 16F88 ICSP programmēšanas tapas ir tādas pašas kā tapas, kas nepieciešamas 32,768 kHz kristālam, ko izmanto RTC ……. Ja T1 ārējais oscilators (ti, RTC) darbojas pirms ICSP var sākt strādāt, tad programmēšana neizdosies. Parasti, ja MCLR tapai ir atiestatīšana un kavēšanās, tad ICSP datus var nosūtīt uz šīm tapām un programmēšanu var sākt pareizi. Tomēr, atdalot PIC barošanu, ICSP programmētājs (vai ligzdots programmētājs ar galveni) var kontrolēt ierīces jaudu un piespiest programmu. Citas lietas, kas jāņem vērā, ir tas, ka PCB kristāla spilventiņi sākotnēji bija paredzēti SMD kristāliem. Es nevarēju sagaidīt, kad daži tiks piegādāti, tāpēc 32,768 kHz pulksteņa kristāls tika pielodēts uz augšu, kā parādīts attēlā, un 20 MHz kristāls tika piestiprināts, urbjot pāris caurumus spilventiņos, iebāžot kristālu caur apakšu un lodējot uz tops. Jūs varat redzēt tapas tieši pa labi no PIC16F88.

5. solis: Hologrāfiskā filma un korpuss

Hologrāfiskā filma un korpuss
Hologrāfiskā filma un korpuss
Hologrāfiskā filma un korpuss
Hologrāfiskā filma un korpuss
Hologrāfiskā filma un korpuss
Hologrāfiskā filma un korpuss

Galīgā konstrukcija ir vienkārši PCB ievietošana korpusā un pēc programmēšanas, piestiprinot to ar karstu līmi. Trīs caurumi ļauj piekļūt mikroslēdziem no priekšpuses.

Šī pulksteņa ievērojamā daļa ir hologrāfiskas difuzora plēves izmantošana. Šī ir īpaša filma, kas man gulēja un nodrošina jauku ierīces dziļumu. Jūs varētu izmantot vienkāršu pauspapīru (kurā es pārvietotu PCB tuvāk priekšpusei) vai jebkuru citu difuzoru, piemēram, tādu, ko izmanto dienasgaismas spuldzēs. Eksperimentējot, vienīgais, kas tam jādara, ir ļaut jums atšķirt izgaismoto gaismas diožu skaitu, pretējā gadījumā būs grūti saskaitīt punktus, lai noteiktu laiku. Es izmantoju hologrāfisko dispersijas materiālu no Physical Optics Coorporation (www.poc.com) ar 30 grādu apļveida dispersiju, superdatora statusa displejā, kas parādīts citur instrukcijā, tika izmantota filma ar 15x60 grādu elipsveida dispersiju. Jūs varat izmantot kādu aptumšojošu lenti, lai dienas laikā paslēptu spīdīgās iekšas, lai iegūtu noslēpumaināku izskatu. Jūs pat varētu atstāt displeju skaidru un ļaut cilvēkiem redzēt iekšas, kā es to darīju. Statīvs bija divi alumīnija "L" stieņa gabali ar mazliet izgrieztu apakšdaļu, lai varētu saliekties. Piezīme šajos attēlos tika pievienots papildu apgaismojums, lai jūs varētu redzēt displeja vākus utt. Parastā dzīvojamās istabas apgaismojumā gaismas diodes ir pamanāmākas pat dienasgaismā.

6. darbība: programmatūra un lietotāja interfeiss

Ierīces darbība ir ļoti vienkārša, bez īpašiem raksta režīmiem vai bezgaumīgām lietām. Vienīgais, ko tā dara, ir parādīt laiku.

Lai iestatītu laiku, vispirms nospiediet SW1. Ierīce dažas reizes mirgos visas gaismas diodes, un pēc tam 10 sekunžu gaismas diožu grupa SW3 palielinās izvēlēto grupu SW2, pāriet uz nākamo gaismas diodes grupu, katru reizi īslaicīgi mirgojot visas grupas gaismas diodes. Kods ir rakstīts Sourceboost 'C' kompilatora versijai 6.70. RTC kods ir failos t1rtc.c/h, un tam ir PIC T1 taimera pārtraukšanas funkcija. Taimeris T1 ir iestatīts pārtraukt ik pēc 1 sekundes. Katru sekundi laika mainīgais tiek palielināts. Arī ērču taimeris tiek skaitīts atpakaļ katru sekundi kopā ar laiku. To izmanto, lai noteiktu, kad jāmaina displejs. Pārtraukšanas funkcija izmanto arī T0 taimera pārtraukumu, lai atsvaidzinātu displeju, izsaucot displejā redzamu funkciju. C Faili display.h/display.c satur funkcijas displeja atjaunināšanai un laika rādīšanai Failu kontrole.c/h satur funkcijas laika iestatīšanai un slēdžu nolasīšanai Faili holoclock.c/h ir galvenās cilpas un inicializācija.

Ieteicams: