Sisukord:

Ülim binaarkell: 12 sammu (piltidega)
Ülim binaarkell: 12 sammu (piltidega)

Video: Ülim binaarkell: 12 sammu (piltidega)

Video: Ülim binaarkell: 12 sammu (piltidega)
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Juuli
Anonim
Ülim binaarne kell
Ülim binaarne kell
Ülim binaarne kell
Ülim binaarne kell
Ülim binaarne kell
Ülim binaarne kell

Hiljuti tutvusin binaarkellade mõistega ja hakkasin uurima, kas saaksin selle endale ehitada. Siiski ei suutnud ma leida olemasolevat disaini, mis oleks samal ajal funktsionaalne ja stiilne. Niisiis, otsustasin luua oma disaini täiesti nullist!

Tarvikud

Kõik selle projekti failid:

Arduino koodi raamatukogud saab alla laadida GitHubist siit:

M41T62 RTC raamatukogu

FastLED raamatukogu

LowPower raamatukogu

Samm: idee

Sattusin hiljuti järgmise video juurde:

DIY binaarne käekell

Ülaltoodud video näitab põhilist omatehtud binaarkella. Mul polnud aimugi, et selline asi olemas on, kuid pärast binaarkellade teema täiendavat uurimist sain kiiresti aru, et seal on palju erinevaid kujundusi! Tahtsin selle endale ehitada, kuid ei suutnud leida kujundust, mis mulle meeldiks. Minu leitud binaarkellad ei sisaldanud palju funktsioone ega tundunud eriti head. Niisiis, ma otsustasin kujundada oma täiesti nullist!

Esimene samm oli minu disaini kriteeriumide kehtestamine. Selle ma mõtlesin välja:

  • Binaarne RGB liides
  • Aja kuvamine (väga täpse ajaarvestusega)
  • Kuupäeva kuvamine
  • Stopperi funktsionaalsus
  • Alarmi funktsionaalsus
  • Aku kestvus vähemalt 2 nädalat
  • USB laadimine
  • Tarkvara on kasutaja poolt hõlpsasti kohandatav
  • Puhas ja lihtne disain

Need kriteeriumid said kogu projekti aluseks. Järgmine samm oli välja selgitada, kuidas ma tahan, et kell toimiks!

2. samm: mõni binaarvaate teooria

Mõned binaarvaate teooriad
Mõned binaarvaate teooriad

Plaan oli lihtne. Binaarkell töötaks nagu tavaline kell, välja arvatud see, et liides oleks binaarne, täpsemalt BCD (Binary Coded Decimal). BCD on binaarse kodeeringu tüüp, kus iga kümnendkoha numbrit tähistab kindel arv bitte. Mul on vaja 4 bitti, et oleks võimalik tähistada numbrit vahemikus 0-9. Ja standardi pärast

hh: mm

ajavormingus, mul on vaja neid numbreid 4. See tähendab, et mul on vaja kokku 16 bitti, mida esindavad 16 LED -i.

Kellaaja lugemine BCD -s on üsna lihtne, kui olete sellega harjunud. Kella allservas olev rida kujutab endast kõige vähem olulist bitti (1) ja ülaosas olev rida on kõige olulisem bitti (8). Iga veerg tähistab numbrit

hh: mm

aja formaat. Kui LED põleb, loete selle väärtuse. Kui LED on välja lülitatud, ignoreerite seda.

Esimese numbri lugemiseks liituge lihtsalt kõigi aktiveeritud LED -ide vastavate väärtustega esimeses (vasakpoolses) veerus. Tehke sama ka teiste numbrite puhul vasakult paremale. Olete nüüd BCD -st aega lugenud!

See põhimõte on sama ka ülejäänud kella funktsioonide puhul. RGB -valgusdioodide kasutamine aitab eristada erinevaid värve, kasutades erinevaid funktsioone ja režiime. Värvid valib kasutaja ja neid saab hõlpsasti kohandada mis tahes värvipaletiga, mida nad eelistavad. See võimaldab kasutajal hõlpsalt funktsioonides navigeerida ilma segadusse sattumata.

Järgmine samm oli plokkskeemi loomine!

3. samm: tööle asumine

Tööle asumine
Tööle asumine

Nagu iga tüüpiline elektroonikaprojekt, on plokkskeem varajases projekteerimisetapis oluline osa. Kriteeriume kasutades õnnestus mul ülaltoodud plokkskeem kokku panna. Diagrammi iga plokk tähistab ahela funktsiooni ja nooled näitavad funktsioonide seost. Plokkskeem tervikuna annab hea ülevaate vooluringi toimimisest.

Järgmine samm oli alustada plokkskeemi iga ploki üksikute komponentide otsuste tegemist!

4. samm: komponentide valimine

Selgus, et selles vooluringis on üsna palju komponente. Allpool olen välja valinud mõned kõige olulisemad koos selgitusega, miks ma need valisin.

LEDid

Kahendliidese puhul oli valik üsna sirgjooneline. Ma teadsin, et tahan ekraani jaoks kasutada LED -e ja mõistsin, et mul on vaja 16 neist (4 × 4 ruudustikus), et kuvada võimalikult palju teavet. Ideaalse LED -i uurimise ajal tuli APA102 pidevalt esile. See on väga väike (2 mm x 2 mm) adresseeritav LED, millel on lai värvivalik ja mis on üsna odav. Kuigi ma polnud nendega varem koostööd teinud, tundusid nad selle projekti jaoks ideaalselt sobivat, seega otsustasin neid kasutada.

Mikrokontroller

Ka mikrokontrolleri valik oli üsna lihtne. Mul on olnud palju kogemusi Atmega328P-AU kasutamisel iseseisvates rakendustes ja olin selle funktsioonidega väga tuttav. See on sama mikrokontroller, mida kasutatakse Arduino Nano tahvlites. Olen teadlik, et tõenäoliselt on olemas odavam mikrokontroller, mida oleksin saanud kasutada, kuid teadmine, et Atmega328 toetab kõiki Arduino raamatukogusid, oli selle projekti valimisel suur tegur.

RTC (reaalajas kell)

RTC esmane nõue oli täpsus. Teadsin, et kellal puudub Interneti -ühendus ja seega ei saa ta end Interneti -ühenduse kaudu uuesti kalibreerida, kasutaja peab selle käsitsi uuesti kalibreerima. Seetõttu tahtsin ajaarvestuse võimalikult täpseks muuta. M41T62 RTC -l on üks suurimaid täpsusi, mida ma leidsin (± 2 ppm, mis vastab ± 5 sekundile kuus). Kombineerides suure täpsuse I2C ühilduvusega ja ulta väikese voolutarbimisega, muutis see RTC selle projekti jaoks heaks valikuks.

DC-DC võimendusmuundur

DC-DC võimendusmuunduri IC valimine tehti lihtsalt ahelat vaadates ja välja selgitades, milliseid pingeid ja voolusid on vaja. Vooluahela töötamine madala pingega vähendaks voolutarvet, kuid ma ei saanud minna alla 4,5 V (minimaalne mikrokontrolleri pinge 16 MHz taktsagedusel) ja ma ei saanud minna üle 4,5 V (RTC maksimaalne pinge). See tähendas, et pidin vooluringi täpselt 4,5 V juures töötama, et osi nende soovitatud spetsifikatsioonide piires kasutada. Arvutasin, et ahela maksimaalne vool ei ületa 250 mA. Niisiis hakkasin otsima võimendusmuundurit, mis vastaks nõuetele, ja komistasin kiiresti TPS61220 peale. TPS61220 nõudis minimaalseid väliseid komponente, oli üsna odav ja suutis rahuldada voolu ja pinge nõudeid.

Aku

Aku esmane nõue oli suurus. Aku pidi olema piisavalt väike, et see mahuks kella korpuse sisse, ilma et see näeks välja mahukas. Arvasin, et aku ei tohi ületada 20 mm × 35 mm × 10 mm. Nende suurusepiirangute ja praeguse 250 mA nõude tõttu piirdus minu valik patareidega LiPo akudega. Leidsin Hobbykingist aku "Turnigy nano-tech 300mAh 1S", mida otsustasin kasutada.

Laadiv IC

Laadimiskontrolleri jaoks ei olnud erilisi nõudeid, välja arvatud see, et see peab ühilduma 1S LiPo akuga. Leidsin MCP73831T, mis on täielikult integreeritud laadimiskontroller, mis on mõeldud üheelemendiliste laadimisrakenduste jaoks. Üks selle omadustest on võimalus reguleerida laadimisvoolu välise takisti kaudu, mis minu arvates oli selles rakenduses üsna kasulik.

LiPo kaitse

Tahtsin lisada pinge ja voolu jälgimise, et kaitsta akut ohtlike üle- ja tühjenemistingimuste eest. Selliseid funktsioone pakkuvaid IC -sid oli piiratud koguses ja üks odavamaid võimalusi oli BQ29700 IC. See nõudis minimaalset kogust väliseid komponente ja sisaldas kogu üheelemendilise LiPo aku jaoks vajalikku kaitset.

Nüüd, kui komponendid olid valitud, oli aeg skeem koostada!

Samm: skeem

Skeem
Skeem

Altium Designeri abil suutsin ülaltoodud skeemi kokku panna, kasutades iga komponendi andmelehe soovitusi. Skeem on loetavamaks muutmiseks jagatud erinevateks plokkideks. Lisasin ka mõned märkmed olulise teabega juhuks, kui keegi teine sooviks seda disaini uuesti luua.

Järgmine samm oli skeemi paigutamine trükkplaadile!

6. samm: trükkplaatide paigutus

PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus
PCB paigutus

PCB paigutus osutus selle projekti kõige keerulisemaks osaks. Valisin kahekihilise trükkplaadi kasutamise, et PCB tootmiskulud oleksid minimaalsed. Otsustasin kasutada standardset kella suurust 36 mm, kuna see tundus LED -idega üsna hästi sobivat. Lisasin mõned 1mm kruviavad, et trükkplaati fikseerida kella korpusesse. Eesmärk oli säilitada puhas ja nägus disain, asetades kõik komponendid (välja arvatud muidugi LED-id) alumisele kihile. Samuti tahtsin kasutada absoluutset minimaalset arvu viasid, et vältida pealmise kihi nähtavate viate olemasolu. See tähendas, et pidin kõik jäljed marsruutima ühe kihina, hoides samal ajal vooluahela "mürarikkaid" osi tundlikest signaalijälgedest eemal. Veendusin ka, et kõik jäljed oleksid võimalikult lühikesed, asetades möödavoolukondensaatorid koormuse lähedale, kasutades paksemaid jälgi suure võimsusega komponentide jaoks ja järgides muul viisil kõiki PCB projekteerimisel levinud häid tavasid. Marsruutimine võttis päris palju aega, kuid minu arvates tuli see väga hästi välja.

Järgmine samm oli kellaümbrise 3D -mudeli loomine!

Samm: 3D -disain

3D disain
3D disain
3D disain
3D disain
3D disain
3D disain

Kellaümbris kujundati väga tavapärase, klassikalise kellakujunduse järgi, kasutades Fusion 360. Ma kasutasin kellarihma jaoks standardset 18 mm kaugust, et muuta kell ühilduvaks paljude teiste rihmadega. PCB väljalõige oli 0, 4 mm suurem kui PCB ise, et see vastaks tootmise ebatäpsustele. Kaasasin mõned kruvipostid trükkplaadi paigaldamiseks ja väikese serva PCB paigaldamiseks. Panin PCB süvendi ülaosast millimeetri kaugusele, et vältida valgusdioodide teravate servade riiete külge kinni jäämist. Korpuse kõrgus määrati ainult aku paksuse järgi. Ülejäänud korpuse eesmärk oli ümarate servade ja poleeritud nurkadega lihtsalt hea välja näha. Pidin disaini 3D-printimise sõbralikuna hoidma, et saaksin seda kodus ilma abimaterjalita 3D-printida.

Nüüd, kui riistvara oli valmis, oli aeg hakata tarkvara kallal töötama!

8. samm: kood

Kood
Kood

Alustasin koodi lisamisega kõik vajalikud teegid. See hõlmab raamatukogu RTC -ga suhtlemiseks ja LED -ide juhtimiseks. Pärast seda lõin igale režiimile eraldi funktsioonid. Kui kasutaja lülitab nupuvajutusega režiime, kutsub programm sellele režiimile vastava funktsiooni. Kui kasutaja ei vajuta määratud aja jooksul ühtegi nuppu, läheb kell magama.

Unerežiimi näitab, et kõik valgusdioodid kustuvad, kuni need täielikult välja lülituvad. Unerežiimi kasutamine pikendab oluliselt aku kasutusaega ja hoiab LED -id välja lülitatud, kui neid ei kasutata. Kasutaja saab kella äratada, vajutades ülemist nuppu. Äratamisel kontrollib kell aku taset, et veenduda, et see ei vaja laadimist. Kui on vaja laadimist, vilguvad LED -id paar korda enne aja kuvamist punaselt. Kui aku on alla kriitilise taseme, ei lülitu see üldse sisse.

Ülejäänud aja programmeerimine läks teiste režiimide võimalikult intuitiivseks muutmiseks. Arvasin, et sama nupu eest vastutamine sama režiimi eest kõikides režiimides oleks kõige intuitiivsem. Pärast mõningast katsetamist on mul nuppude konfiguratsioon järgmine:

  • Ülemine nupuvajutus: ärkamine / tsükkel režiimide „Kuva aeg”, „Kuva kuupäev”, „Stopper” ja „Alarm” vahel.
  • Ülemise nupu hoidmine: sisestage režiim "Set Time", "Set Date", "Start Stopper" või "Set Alarm".
  • Alumine nupuvajutus: heleduse suurendamine.
  • Nupu allhoidmine: sisenege režiimi "Vali värv".

Alumine nupp vastutab alati heleduse ja värvide reguleerimise eest, olenemata sellest, millises režiimis olete. Kui kasutaja siseneb režiimi "Vali värv", hakkavad LED -id ringima kõiki võimalikke RGB -värve. Kasutaja saab animatsiooni peatada ja valida selle konkreetse režiimi jaoks eelistatud värvi (kuvamisaeg punasega, kuupäeva kuvamine sinisega jne). Värvid on mõeldud kasutajale hõlpsasti kohandatavaks, et aidata neil eri režiime eristada.

Nüüd, kui kood oli valmis, oli aeg see mikrokontrollerisse üles laadida!

9. samm: programmeerimine

Programmeerimine
Programmeerimine

Oli peaaegu aeg jootmiseks ja kokkupanekuks, kuid enne seda oli mul vaja mikrokontrollerit programmeerida. Ma järgisin seda õpetust

Põletage alglaadur ATmega328P-AU SMD-le

alglaaduri põletamise ja mikrokontrolleri programmeerimise kohta, kasutades programmeerijana tavalist Arduino Unot.

Esimene samm oli muuta Arduino Uno Interneti -teenuse pakkujaks, laadides üles "ArduinoISP" näidiskoodi. Kasutasin leivaplaati koos programmeerimispesaga ja ühendasin õpetuse skeemi. Pärast seda suutsin alglaaduri mikrokontrollerile põletada, vajutades lihtsalt Arduino IDE -s nuppu "Burn Bootloader".

Kui mikrokontrolleril oli alglaadur, eemaldasin ma lihtsalt olemasoleva mikrokontrolleri Arduino Uno -st ja kasutasin Arduino Uno plaati USB -jadaadapterina, et kood programmeerimispesas olevasse mikrokontrollerisse üles laadida. Pärast üleslaadimise lõpetamist võisin jootmisprotsessi alustada.

Järgmine samm oli kõigi komponentide kogumine ja kokku jootmine!

10. samm: jootmine

Jootmine
Jootmine
Jootmine
Jootmine
Jootmine
Jootmine
Jootmine
Jootmine

Jootmisprotsess jagunes kaheks osaks. Kõigepealt oli vaja joota alumine kiht ja seejärel ülemine kiht.

Kinnitasin kella trükkplaadi lindi abil paari prototüüpplaadi vahele. See tagas selle, et trükkplaat ei liikunud jootmise ajal, mis on väga oluline. Seejärel asetasin jootetšablooni trükkplaadi kohale ja kasutasin suure hulga jootepastat, et katta kõik jootmispadjad. Kasutasin õhukest pintsetti, et asetada kõik komponendid vastavatele padjakestele. Seejärel kasutasin kõikide komponentide jootmiseks kuumutuspüstoliga.

Kui alumine kiht oli joodetud, tegin sellele kiire visuaalse kontrolli, et veenduda jootmise õnnestumises. Seejärel pöörasin tahvli ümber ja kordasin jootmisprotsessi teisel pool, seekord kõigi LED -idega. Ülemise kihi jootmisel oli väga oluline plaati mitte üle kuumeneda, kuna kõik põhjas olevad komponendid võivad maha kukkuda. Õnneks jäid kõik komponendid oma kohale ja pärast nuppude jootmist tavalise jootekolvi abil oli PCB valmis!

Nüüd oli viimane kokkupanek!

11. samm: kokkupanek

Kokkupanek
Kokkupanek

Kokkupanek oli väga lihtne. Ühendasin aku trükkplaadiga ning panin aku ja trükkplaadi 3D trükitud korpuse sisse. Jätkasin nelja kruvi keeramist PCB iga nurga kinnitusavadesse. Pärast seda kinnitasin kellarihmad 18 mm vedruvardade abil ja kell oli valmis!

12. samm: järeldused ja täiustused

Järeldus ja täiustused
Järeldus ja täiustused
Järeldus ja täiustused
Järeldus ja täiustused

Kell töötab ootuspäraselt ja olen selle üle väga rahul. Mul pole sellega siiani probleeme olnud ja aku jääb pärast terve nädala kasutamist peaaegu täis laetuks.

Tulevikus võin kellale lisada muid funktsioone. Kuna USB -port on mikrokontrolleriga ühendatud, saab püsivara igal ajal uute funktsioonidega värskendada. Praegu aga jätkan selle kellaversiooni kasutamist ja vaatan, kuidas see pärast pikemat kasutamist vastu peab.

Kui teil on selle projekti kohta mõtteid, kommentaare või küsimusi, jätke need allpool. Võite need saata ka aadressile [email protected].

Kellade võistlus
Kellade võistlus
Kellade võistlus
Kellade võistlus

Kellade konkursi esimene auhind

Soovitan: