Kazalo:

Vrhunska binarna ura: 12 korakov (s slikami)
Vrhunska binarna ura: 12 korakov (s slikami)

Video: Vrhunska binarna ura: 12 korakov (s slikami)

Video: Vrhunska binarna ura: 12 korakov (s slikami)
Video: Как просвещение может менять провинцию (Eng subs) 2024, Julij
Anonim
Vrhunska binarna ura
Vrhunska binarna ura
Vrhunska binarna ura
Vrhunska binarna ura
Vrhunska binarna ura
Vrhunska binarna ura

Pred kratkim sem se seznanil s konceptom binarnih ur in začel raziskovati, ali bi si zgradil enega zase. Vendar nisem mogel najti obstoječega dizajna, ki bi bil hkrati funkcionalen in eleganten. Zato sem se odločil, da bom popolnoma ustvaril svoj lasten dizajn iz nič!

Zaloge

Vse datoteke tega projekta:

Knjižnice za kodo Arduino lahko prenesete iz GitHub tukaj:

Knjižnica R41 M41T62

Knjižnica FastLED

Knjižnica LowPower

1. korak: Ideja

Pred kratkim sem naletel na naslednji video:

Binarna ročna ura DIY

Zgornji video prikazuje osnovno domačo binarno uro. Nisem vedel, da kaj takega obstaja, vendar sem po nadaljnjih raziskavah na temo binarnih ur hitro ugotovil, da obstaja ogromno različnih modelov! Želel sem si zgraditi enega zase, vendar nisem mogel najti modela, ki bi mi bil všeč. Binarne ure, ki sem jih našel, niso imele veliko funkcij in niso bile videti posebej dobre. Zato sem se odločil, da bom svojega popolnoma oblikoval iz nič!

Prvi korak je bil določitev meril za moj dizajn. To sem si zamislil:

  • Binarni vmesnik RGB
  • Prikaz časa (z zelo natančnim merjenjem časa)
  • Prikaz datuma
  • Funkcija štoparice
  • Funkcija alarma
  • Življenjska doba baterije najmanj 2 tedna
  • Polnjenje USB
  • Uporabnik lahko preprosto prilagodi programsko opremo
  • Čist in preprost dizajn

Ta merila so postala temelj za celoten projekt. Naslednji korak je bil ugotoviti, kako želim, da ura deluje!

2. korak: Nekaj teorije binarne ure

Nekaj teorije binarnih ur
Nekaj teorije binarnih ur

Načrt je bil preprost. Binarna ura bi delovala tako kot običajna ura, le da bi bil vmesnik binarni, natančneje BCD (binarno kodirana decimalka). BCD je vrsta binarnega kodiranja, kjer je vsaka decimalna številka predstavljena s fiksnim številom bitov. Potrebujem 4 bite, da lahko predstavljam številko od 0-9. In za standard

hh: mm

časovni format, potrebujem 4 te številke. To pomeni, da potrebujem skupaj 16 bitov, ki jih bo predstavljalo 16 LED.

Branje časa v BCD je precej enostavno, ko se tega navadiš. Vrstica na dnu ure predstavlja najmanj pomemben bit (1), vrstica na vrhu pa je najpomembnejši bit (8). Vsak stolpec predstavlja številko v

hh: mm

časovni format. Če LED sveti, štejete to vrednost. Če je LED izklopljen, ga prezrite.

Če želite prebrati prvo številko, preprosto seštejte vse aktivirane LED diode ustrezne vrednosti v prvem (najbolj levem) stolpcu. Enako storite za ostale številke od leve proti desni. Zdaj ste prebrali čas v BCD!

To načelo bo enako za ostale funkcije ure. Uporaba LED RGB bo pomagala razlikovati med različnimi funkcijami in načini z uporabo različnih barv. Barve izbere uporabnik in jih je mogoče enostavno prilagoditi poljubno barvno paleto. To uporabniku omogoča enostavno krmarjenje po funkcijah brez zmede.

Naslednji korak je bil izdelava blokovnega diagrama!

3. korak: Začetek dela

Začetek dela
Začetek dela

Kot vsak tipičen elektronski projekt je blok diagram bistven del v zgodnji fazi načrtovanja. Z uporabo meril mi je uspelo sestaviti zgornji blok diagram. Vsak blok na diagramu predstavlja funkcijo v vezju, puščice pa kažejo razmerje med funkcijami. Blok diagram v celoti daje dober pregled nad tem, kako bo vezje delovalo.

Naslednji korak je bil začetek odločanja o posameznih komponentah za vsak blok v blokovnem diagramu!

4. korak: Izbira komponent

Izkazalo se je, da je v tem vezju precej komponent. Spodaj sem izbral nekaj najpomembnejših skupaj z razlago, zakaj sem se jih odločil.

LED diode

Za binarni vmesnik je bila izbira dokaj preprosta. Vedel sem, da želim uporabiti LED za zaslon, in ugotovil, da jih potrebujem 16 (v mreži 4 × 4), da prikažem čim več informacij. Med raziskovanjem popolne LED je APA102 prihajal naprej. Je zelo majhna (2 mm x 2 mm) naslovljiva LED s široko paleto barv in je dokaj poceni. Čeprav še nikoli nisem delal z njimi, se mi je zdelo, da so popolnoma primerni za ta projekt, zato sem se odločil, da jih uporabim.

Mikrokrmilnik

Tudi izbira mikrokrmilnika je bila precej preprosta. Imel sem veliko izkušenj z uporabo Atmega328P-AU v samostojnih aplikacijah in sem bil zelo seznanjen z njegovimi funkcijami. To je isti mikrokrmilnik, ki se uporablja v ploščah Arduino Nano. Zavedam se, da bi verjetno lahko uporabil cenejši mikrokrmilnik, vendar je bilo pri izbiri tega projekta za ta projekt pomemben podatek, da bi imel Atmega328 popolno podporo za vse knjižnice Arduino.

RTC (ura v realnem času)

Glavna zahteva za RTC je bila natančnost. Vedel sem, da ura ne bo imela internetne povezave in se zato ne bo mogla ponovno kalibrirati prek internetne povezave, zato jo bo moral uporabnik ponovno umeriti ročno. Zato sem želel, da je merjenje časa čim bolj natančno. M41T62 RTC ima eno najvišjih natančnosti, ki sem jih našel (± 2 ppm, kar je enako ± 5 sekund na mesec). Kombinacija visoke natančnosti z združljivostjo I2C in ulta nizke porabe toka je naredila ta RTC dobro izbiro za ta projekt.

DC-DC ojačevalni pretvornik

Izbira IC ojačevalnega pretvornika DC-DC je bila izvedena preprosto s pregledom vezja in ugotovitvijo, katere napetosti in tokovi so potrebni. Izvajanje vezja pri nizki napetosti bi zmanjšalo trenutno porabo, vendar nisem mogel iti pod 4,5 V (minimalna napetost mikrokrmilnika pri uri 16 MHz) in ne bi mogel iti nad 4,5 V (največja napetost RTC). To je pomenilo, da sem moral za zagon komponent v skladu s priporočenimi specifikacijami zagnati vezje točno pri 4,5 V. Izračunal sem, da največji tok vezja ne bi presegel 250 mA. Tako sem začel iskati ojačevalni pretvornik, ki bi izpolnjeval zahteve, in hitro naletel na TPS61220. TPS61220 je zahteval minimalne zunanje komponente, bil je precej poceni in je lahko izpolnjeval trenutne in napetostne zahteve.

Baterija

Glavna zahteva za baterijo je bila velikost. Baterija mora biti dovolj majhna, da se lahko prilega v ohišje ure, ne da bi izgledala zajetno. Ugotovil sem, da baterija ne sme presegati 20 mm × 35 mm × 10 mm. S temi omejitvami glede velikosti in trenutno zahtevo 250 mA je bila moja izbira baterij omejena na LiPo baterije. Na Hobbykingu sem našel baterijo "Turnigy nano-tech 300mAh 1S", ki sem jo odločil uporabiti.

IC polnilnik

Za krmilnik polnjenja ni bilo posebnih zahtev, razen da mora biti združljiv z 1S LiPo baterijo. Našel sem MCP73831T, ki je popolnoma integriran krmilnik polnjenja, zasnovan za enocelične aplikacije polnjenja. Ena od njegovih značilnosti je možnost prilagajanja polnilnega toka prek zunanjega upora, kar se mi je zdelo precej uporabno v tej aplikaciji.

LiPo zaščita

Želel sem vključiti nadzor napetosti in toka, da zaščitim baterijo pred nevarnimi pogoji prenapolnjenosti in prekomernega praznjenja. IC -jev, ki so zagotavljali te funkcije, je bilo omejeno, ena cenejših možnosti pa je bila IC BQ29700. Zahteval je minimalno količino zunanjih komponent in vključeval vso potrebno zaščito za enocelično LiPo baterijo.

Zdaj, ko so bile izbrane komponente, je bil čas za izdelavo sheme!

5. korak: Shema

Shema
Shema

Z uporabo Altium Designerja sem uspel sestaviti zgornjo shemo z uporabo priporočil iz vsakega podatkovnega lista komponente. Shema je zaradi lažje berljivosti razdeljena na različne bloke. Dodal sem tudi nekaj zapiskov s pomembnimi informacijami, če bi še kdo želel poustvariti to zasnovo.

Naslednji korak je bil postavitev sheme na tiskano vezje!

Korak 6: Postavitev tiskanega vezja

Postavitev tiskanega vezja
Postavitev tiskanega vezja
Postavitev tiskanega vezja
Postavitev tiskanega vezja
Postavitev tiskanega vezja
Postavitev tiskanega vezja
Postavitev tiskanega vezja
Postavitev tiskanega vezja

Postavitev tiskane plošče se je izkazala za najzahtevnejši del tega projekta. Odločil sem se, da bom uporabil dvoslojno tiskano vezje, da bom zmanjšal stroške izdelave PCB na minimum. Odločil sem se za standardno velikost ure 36 mm, ker se je zdelo, da se zelo dobro prilega LED. Dodal sem nekaj 1 mm vijačnih lukenj za pritrditev tiskanega vezja v ohišje ure. Cilj je bil ohraniti čist in lep videz z namestitvijo vseh komponent (razen LED seveda) na spodnjo plast. Prav tako sem želel uporabiti absolutno minimalno število vias, da bi se izognili vidnim viam na zgornji plasti. To je pomenilo, da sem moral vse sledi usmeriti v eno plast, pri tem pa paziti, da "hrupni" deli vezja niso oddaljeni od občutljivih sledi signala. Poskrbel sem tudi, da so vse sledi čim krajše, da sem obvodne kondenzatorje postavil blizu obremenitve, uporabil debelejše sledi za komponente z visoko močjo in sicer sledil vsem običajnim dobrim praksam oblikovanja tiskanih vezij. Usmerjanje je trajalo kar nekaj časa, vendar se mi je zdelo zelo dobro.

Naslednji korak je bil izdelava 3D modela za ohišje ure!

7. korak: 3D oblikovanje

3D oblikovanje
3D oblikovanje
3D oblikovanje
3D oblikovanje
3D oblikovanje
3D oblikovanje

Ohišje za uro je bilo zasnovano po zelo običajnem, klasičnem dizajnu ure z uporabo Fusion 360. Uporabil sem standardni 18 -milimetrski razmik za pas za uro, da bi bil ura združljiva z veliko drugimi pasovi. Izrez za tiskano vezje je bil oblikovan 0,4 mm večji od tiskanega vezja, da se prilagodi kakršnim koli proizvodnim napakam. Vključil sem nekaj vijačnih stebrov za pritrditev tiskanega vezja in majhen rob, na katerega je bilo mogoče položiti tiskano vezje. Poskrbel sem, da sem tiskalno vezje umaknil milimetrov od vrha, da se izognem, da bi se ostri robovi LED prilepili na oblačila. Višino ohišja je določala le debelina baterije. Preostali del ohišja je bil zasnovan tako, da preprosto izgleda dobro z zaobljenimi robovi in poliranimi vogali. Oblikovalski 3D-tisk sem moral ohraniti prijazen, da sem ga lahko 3D-natisnil doma brez podpornega materiala.

Zdaj, ko je strojna oprema končana, je bil čas, da začnemo delati na programski opremi!

8. korak: Koda

Kodeks
Kodeks

Kodo sem začel z vključitvijo vseh potrebnih knjižnic. To vključuje knjižnico za komunikacijo z RTC in za pogon LED. Po tem sem ustvaril ločene funkcije za vsak način. Ko uporabnik preklopi načine s pritiskom na gumb, program prikliče funkcijo, ki ustreza temu načinu. Če uporabnik v določenem času ne pritisne gumba, ura preide v stanje spanja.

Način mirovanja označujejo svetleče diode, ki svetijo, dokler popolnoma ne ugasnejo. Uporaba načina mirovanja močno podaljša življenjsko dobo baterije in LED lučke ugasne, ko jih ne uporabljate. Uporabnik lahko zbudi uro s pritiskom na zgornji gumb. Ko se zbudi, bo ura preverila stanje baterije in se prepričala, da ne potrebuje polnjenja. Če je potrebno polnjenje, bodo LED diode nekajkrat utripale rdeče, preden se prikaže čas. Če je baterija pod kritičnim nivojem, se sploh ne vklopi.

Preostanek časa so programirali, da so drugi načini čim bolj intuitivni. Ugotovil sem, da bi bila enaka tipka, odgovorna za enako funkcionalnost v vseh načinih, najbolj intuitivna. Po nekaj testiranjih sem dobil to konfiguracijo gumbov:

  • Zgornji pritisk gumba: Prebudite se / preklopite med načini "Prikaz časa", "Datum prikaza", "Štoparica" in "Alarm".
  • Zadrževanje zgornjega gumba: Vnesite način »Nastavi čas«, »Nastavi datum«, »Začni štoparico« ali »Nastavi alarm«.
  • Pritisnite spodnji gumb: povečajte svetlost.
  • Držanje spodnjega gumba: Vstopite v način »Izberi barvo«.

Spodnji gumb je vedno odgovoren za prilagoditev svetlosti in barve, ne glede na to, v kakšnem načinu ste. Ko uporabnik vstopi v način "Izberi barvo", LED začnejo krožiti skozi vse možne barve RGB. Uporabnik lahko animacijo začasno ustavi in izbere barvo, ki jo ima za ta način (prikaz časa v rdeči barvi, datum prikaza v modri barvi itd.). Barve naj bi uporabnik zlahka prilagodil, da bi jim pomagal razlikovati med različnimi načini.

Ko je koda končana, je bil čas, da jo naložimo v mikrokrmilnik!

9. korak: Programiranje

Programiranje
Programiranje

Skoraj je bil že čas za spajkanje in montažo, pred tem pa sem moral programirati mikrokrmilnik. Sledil sem tej vadnici

Zaženite zagonski nalagalnik na SMD ATmega328P-AU

o tem, kako zapisati zagonski nalagalnik in programirati mikrokrmilnik z običajnim Arduino Uno kot programerjem.

Prvi korak je bil pretvoriti Arduino Uno v ponudnika internetnih storitev z nalaganjem vzorčne kode "ArduinoISP". Uporabil sem ploščo skupaj s programsko vtičnico in povezal shemo iz vadnice. Po tem sem lahko zagonski nalagalnik zapisal v mikrokrmilnik, tako da sem v Arduino IDE samo pritisnil »Zapiši zagonski nalagalnik«.

Ko je imel mikrokrmilnik zagonski nalagalnik, sem preprosto odstranil obstoječi mikrokrmilnik iz Arduino Uno in uporabil ploščo Arduino Uno kot vmesnik USB na serijski vmesnik, da sem naložil kodo v mikrokrmilnik v programski vtičnici. Po končanem nalaganju sem lahko začel postopek spajkanja.

Naslednji korak je bil zbiranje vseh komponent in njihovo spajkanje skupaj!

10. korak: Spajkanje

Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje

Postopek spajkanja je bil razdeljen na dva dela. Najprej je bilo treba spajkati spodnjo plast, nato pa zgornjo plast.

S trakom sem zavaroval tiskano vezje ur med nekaj prototipnimi ploščami. To je zagotovilo, da se tiskano vezje med spajkanjem ni premaknilo, kar je zelo pomembno. Nato sem matrico za spajkanje položil na tiskano vezje in z veliko količino spajkalne paste pokril vse spajkalne blazinice. Nadaljeval sem s tankim pincetom, da sem vse komponente postavil na ustrezne blazinice. Nato sem uporabil toplotno pištolo za ponovno spajkanje vseh sestavnih delov.

Ko je bila spodnja plast spajkana, sem jo na hitro pregledal in se prepričal, ali je spajkanje uspešno. Nato sem obrnil ploščo in ponovil postopek spajkanja na drugi strani, tokrat z vsemi LED. Pri spajkanju zgornje plasti je bilo zelo pomembno, da se plošča ne pregreje, saj obstaja nevarnost padca vseh sestavnih delov na dnu. Na srečo so vse komponente ostale na svojem mestu in po spajkanju gumbov z običajnim spajkalnikom je bilo tiskano vezje končano!

Čas je bil za končno montažo!

11. korak: Montaža

Montaža
Montaža

Montaža je bila zelo preprosta. Baterijo sem priključil na tiskano vezje in baterijo ter tiskano vezje postavil v ohišje s 3D -tiskanjem. Nadaljeval sem s privijanjem štirih vijakov v montažnih luknjah v vsakem vogalu tiskanega vezja. Po tem sem z 18 -milimetrskimi vzmetnimi palicami pritrdil pasove za uro in ura je bila popolna!

12. korak: Zaključek in izboljšave

Zaključki in izboljšave
Zaključki in izboljšave
Zaključki in izboljšave
Zaključki in izboljšave

Ura deluje po pričakovanjih in zelo sem zadovoljna, kako se je izkazala. Z njim doslej nisem imel nobenih težav, baterija pa ostane skoraj popolnoma napolnjena po celem tednu uporabe.

Uri bi v prihodnosti lahko dodal še druge funkcije. Ker so vrata USB priključena na mikrokrmilnik, lahko vdelano programsko opremo kadar koli posodobite z novimi funkcijami. Zaenkrat bom še naprej uporabljal to različico ure in preveril, kako vzdrži po daljši uporabi.

Če imate kakršne koli misli, pripombe ali vprašanja o tem projektu, jih pustite spodaj. Pošljete jih lahko tudi na naslov [email protected].

Natečaj za ure
Natečaj za ure
Natečaj za ure
Natečaj za ure

Prva nagrada na natečaju za ure

Priporočena: