Turinys:

Galutinis dvejetainis laikrodis: 12 žingsnių (su nuotraukomis)
Galutinis dvejetainis laikrodis: 12 žingsnių (su nuotraukomis)

Video: Galutinis dvejetainis laikrodis: 12 žingsnių (su nuotraukomis)

Video: Galutinis dvejetainis laikrodis: 12 žingsnių (su nuotraukomis)
Video: 3 VIŠTŲ KEPENŲ PAŠTATO RECEPTAI!! SVEČIAI BUS ŠOKO!! GAMYBOS PARODAS 2024, Liepa
Anonim
Galutinis dvejetainis laikrodis
Galutinis dvejetainis laikrodis
Galutinis dvejetainis laikrodis
Galutinis dvejetainis laikrodis
Galutinis dvejetainis laikrodis
Galutinis dvejetainis laikrodis

Neseniai susipažinau su dvejetainių laikrodžių sąvoka ir pradėjau atlikti tyrimus, kad galėčiau sukurti tokį sau. Tačiau man nepavyko rasti esamo dizaino, kuris būtų funkcionalus ir stilingas tuo pačiu metu. Taigi, aš nusprendžiau sukurti savo dizainą visiškai nuo nulio!

Prekės

Visi šio projekto failai:

„Arduino“kodo bibliotekas galite atsisiųsti iš „GitHub“čia:

M41T62 RTC biblioteka

„FastLED“biblioteka

„LowPower“biblioteka

1 žingsnis: idėja

Neseniai radau tokį vaizdo įrašą:

„Pasidaryk pats“dvejetainis riešo laikrodis

Aukščiau esančiame vaizdo įraše rodomas pagrindinis naminis dvejetainis laikrodis. Aš net neįsivaizdavau, kad toks dalykas egzistuoja, tačiau atlikęs tolesnius dvejetainių laikrodžių temos tyrimus greitai supratau, kad ten yra daugybė skirtingų dizainų! Norėjau sukurti tokį sau, bet nepavyko rasti man patinkančio dizaino. Mano rasti dvejetainiai laikrodžiai neturėjo daug funkcijų ir neatrodė ypač gerai. Taigi, aš nusprendžiau sukurti savo visiškai nuo nulio!

Pirmasis žingsnis buvo nustatyti mano dizaino kriterijus. Štai ką aš sugalvojau:

  • Dvejetainė RGB sąsaja
  • Laiko rodymas (su labai tiksliu laiko skaičiavimu)
  • Datos rodymas
  • Chronometro funkcionalumas
  • Signalizacijos funkcionalumas
  • Baterijos veikimo laikas yra mažiausiai 2 savaitės
  • USB įkrovimas
  • Programinė įranga lengvai pritaikoma vartotojui
  • Švarus ir paprastas dizainas

Šie kriterijai tapo viso projekto pagrindu. Kitas žingsnis buvo išsiaiškinti, kaip noriu, kad laikrodis veiktų!

2 žingsnis: kai kurios dvejetainių laikrodžių teorijos

Kai kurios dvejetainių laikrodžių teorijos
Kai kurios dvejetainių laikrodžių teorijos

Planas buvo paprastas. Dvejetainis laikrodis veiktų kaip įprastas laikrodis, išskyrus tai, kad sąsaja būtų dvejetainė, konkrečiai, BCD (dvejetainis koduotas dešimtainis). BCD yra dvejetainio kodavimo tipas, kuriame kiekvienas dešimtainis skaitmuo yra nurodytas fiksuotu bitų skaičiumi. Man reikia 4 bitų, kad galėčiau pavaizduoti skaitmenį nuo 0 iki 9. Ir už standartą

hh: mm

laiko formatu, man reikia 4 tų skaitmenų. Tai reiškia, kad man iš viso reikia 16 bitų, kuriuos parodys 16 šviesos diodų.

Kai pripratote prie laiko, skaityti BCD yra gana paprasta. Laikrodžio apačioje esanti eilutė reiškia mažiausiai reikšmingą bitą (1), o viršuje - reikšmingiausią bitą (8). Kiekvienas stulpelis žymi skaitmenį

hh: mm

laiko formatas. Jei šviesos diodas dega, jūs skaičiuojate šią vertę. Jei šviesos diodas yra išjungtas, į jį nekreipiate dėmesio.

Norėdami perskaityti pirmąjį skaitmenį, tiesiog susumuokite visas įjungtas šviesos diodų atitinkamas reikšmes pirmame (kairėje) stulpelyje. Atlikite tą patį su kitais skaitmenimis iš kairės į dešinę. Dabar jūs perskaitėte laiką BCD!

Šis principas bus tas pats ir visoms kitoms laikrodžio funkcijoms. RGB šviesos diodų naudojimas padės atskirti skirtingas funkcijas ir režimus naudojant skirtingas spalvas. Spalvas pasirenka vartotojas ir jas galima lengvai pritaikyti prie bet kokios norimos spalvų paletės. Tai leidžia vartotojui nesunkiai naršyti po funkcijas.

Kitas žingsnis buvo sukurti blokinę schemą!

3 žingsnis: pradėkite dirbti

Į darbą
Į darbą

Kaip ir bet kuris tipiškas elektronikos projektas, blokinė schema yra esminė pradinio projektavimo etapo dalis. Naudodamasis kriterijais, man pavyko sudaryti aukščiau pateiktą blokinę schemą. Kiekvienas diagramos blokas reiškia funkciją grandinėje, o rodyklės rodo funkcijų ryšį. Visa blokinė schema gerai parodo, kaip grandinė veiks.

Kitas žingsnis buvo pradėti priimti sprendimus dėl atskirų komponentų kiekvienam blokui schemoje!

4 žingsnis: komponentų pasirinkimas

Paaiškėjo, kad šioje grandinėje yra gana daug komponentų. Žemiau aš išrinkau keletą svarbiausių ir paaiškinu, kodėl juos pasirinkau.

Šviesos diodai

Dvejetainės sąsajos pasirinkimas buvo gana paprastas. Žinojau, kad noriu ekranui naudoti šviesos diodus, ir supratau, kad man reikia 16 iš jų (4 × 4 tinklelyje), kad būtų parodyta kuo daugiau informacijos. Tyrinėdamas tobulą šviesos diodą, APA102 vis atsirado. Tai labai mažas (2 mm x 2 mm) adresuojamas šviesos diodas su plačia spalvų gama ir yra gana nebrangus. Nors niekada anksčiau su jais nedirbau, atrodė, kad jie puikiai tinka šiam projektui, todėl nusprendžiau juos panaudoti.

Mikrovaldiklis

Mikrovaldiklio pasirinkimas taip pat buvo gana paprastas. Turėjau daug patirties naudojant „Atmega328P-AU“savarankiškose programose ir labai gerai susipažinau su jo funkcijomis. Tai tas pats mikrovaldiklis, kuris naudojamas „Arduino Nano“plokštėse. Aš žinau, kad tikriausiai yra pigesnis mikrovaldiklis, kurį galėčiau naudoti, tačiau žinant, kad „Atmega328“visiškai palaikys visas „Arduino“bibliotekas, tai buvo svarbus veiksnys renkantis šį projektą.

RTC (realiojo laiko laikrodis)

Pagrindinis RTC reikalavimas buvo tikslumas. Žinojau, kad laikrodis neturės jokio interneto ryšio ir todėl negalės iš naujo kalibruoti per interneto ryšį, vartotojas turės jį iš naujo kalibruoti rankiniu būdu. Todėl norėjau, kad laikas būtų kuo tikslesnis. „M41T62 RTC“turi vieną didžiausių tikslumų, kuriuos galėjau rasti (± 2 ppm, o tai atitinka ± 5 sekundes per mėnesį). Sujungus didelį tikslumą su I2C suderinamumu ir mažomis srovės sąnaudomis, šis RTC buvo geras pasirinkimas šiam projektui.

DC-DC stiprinimo keitiklis

DC-DC Boost Converter IC pasirinkimas buvo atliktas tiesiog žiūrint į grandinę ir išsiaiškinant, kokios įtampos ir srovės reikia. Vykdant grandinę esant žemai įtampai, sumažėtų srovės suvartojimas, tačiau negalėjau nukristi žemiau 4,5 V (minimali 16MHz laikrodžio mikrovaldiklio įtampa) ir negalėjau viršyti 4,5V (maksimali RTC įtampa). Tai reiškė, kad turėjau paleisti grandinę tiksliai 4,5 V, kad galėčiau valdyti komponentus pagal jų rekomenduojamas specifikacijas. Apskaičiavau, kad maksimali grandinės srovė neviršys 250 mA. Taigi, aš pradėjau ieškoti padidinimo keitiklio, kuris galėtų atitikti reikalavimus, ir greitai užklydau į TPS61220. TPS61220 reikėjo minimalių išorinių komponentų, jis buvo gana nebrangus ir galėjo patenkinti srovės ir įtampos reikalavimus.

Baterija

Pagrindinis akumuliatoriaus reikalavimas buvo jo dydis. Baterija turėjo būti pakankamai maža, kad ji tilptų į laikrodžio korpusą ir neatrodytų didelė. Aš supratau, kad baterija negali viršyti 20 mm × 35 mm × 10 mm. Atsižvelgiant į šiuos dydžio apribojimus ir dabartinį 250 mA reikalavimą, mano pasirinkimas buvo tik LiPo baterijos. „Hobbyking“radau „Turnigy nano-tech 300mAh 1S“bateriją, kurią nusprendžiau naudoti.

Įkrovimo IC

Įkrovimo valdikliui nebuvo jokių specialių reikalavimų, išskyrus tai, kad jis turėjo būti suderinamas su 1S LiPo baterija. Radau MCP73831T, kuris yra visiškai integruotas įkrovimo valdiklis, skirtas vieno langelio įkrovimo programoms. Viena iš jo savybių yra galimybė reguliuoti įkrovimo srovę per išorinį rezistorių, kuris, mano manymu, buvo naudingas šioje programoje.

LiPo apsauga

Norėjau įtraukti įtampos ir srovės stebėjimą, kad apsaugotumėte akumuliatorių nuo bet kokių pavojingų perkrovos ir iškrovos sąlygų. Tokių funkcijų teikiančių IC buvo ribotas kiekis, o vienas iš pigesnių variantų buvo BQ29700 IC. Tam reikėjo minimalaus išorinių komponentų kiekio ir visos būtinos vieno elemento LiPo baterijos apsaugos.

Dabar, kai buvo pasirinkti komponentai, atėjo laikas sukurti schemą!

5 žingsnis: schema

Schema
Schema

Naudodamas „Altium Designer“, galėjau sudaryti aukščiau pateiktą schemą, naudodamas kiekvieno komponento duomenų lapo rekomendacijas. Schema yra padalinta į skirtingus blokus, kad būtų lengviau skaityti. Taip pat pridėjau keletą pastabų su svarbia informacija, jei kas nors norėtų atkurti šį dizainą.

Kitas žingsnis buvo schemos išdėstymas ant PCB!

6 žingsnis: PCB išdėstymas

PCB išdėstymas
PCB išdėstymas
PCB išdėstymas
PCB išdėstymas
PCB išdėstymas
PCB išdėstymas
PCB išdėstymas
PCB išdėstymas

PCB išdėstymas pasirodė sudėtingiausia šio projekto dalis. Aš nusprendžiau naudoti 2 sluoksnių PCB, kad PCB gamybos išlaidos būtų kuo mažesnės. Aš nusprendžiau naudoti standartinį 36 mm laikrodžio dydį, nes atrodė, kad jis gana gerai tinka šviesos diodams. Pridėjau keletą 1 mm varžtų skylių, kad pritvirtintų PCB laikrodžio korpuse. Tikslas buvo išlaikyti švarų ir išvaizdų dizainą, dedant visus komponentus (žinoma, išskyrus šviesos diodus) ant apatinio sluoksnio. Taip pat norėjau naudoti absoliučiai minimalų butelių skaičių, kad viršutiniame sluoksnyje nebūtų matomų vijų. Tai reiškė, kad turėjau nukreipti visus pėdsakus vienu sluoksniu, tuo pačiu įsitikindamas, kad „triukšmingos“grandinės dalys būtų atokiau nuo jautrių signalo pėdsakų. Aš taip pat pasirūpinau, kad visi pėdsakai būtų kuo trumpesni, uždėkite aplinkkelio kondensatorius prie apkrovos, naudodama storesnius pėdsakus didelės galios komponentams ir kitaip laikykitės visų įprastų PCB projektavimo praktikų. Maršrutas užtruko gana daug laiko, bet manau, kad tai pavyko labai gerai.

Kitas žingsnis buvo sukurti laikrodžio korpuso 3D modelį!

7 žingsnis: 3D dizainas

3D dizainas
3D dizainas
3D dizainas
3D dizainas
3D dizainas
3D dizainas

Laikrodžio korpusas buvo sukurtas pagal labai įprastą, klasikinį laikrodžio dizainą, naudojant „Fusion 360“. Laikrodžio dirželiui naudoju standartinį 18 mm atstumą, kad laikrodis būtų suderinamas su daugybe kitų dirželių. PCB iškirptė buvo suprojektuota 0, 4 mm didesnė už pačią PCB, kad būtų atsižvelgta į bet kokius gamybos netikslumus. Įtraukiau keletą varžtų, skirtų PCB montavimui, ir nedidelį kraštą, ant kurio galima uždėti PCB. Įsitikinau, kad įkišiu PCB į milimetrus nuo viršaus, kad aštrūs šviesos diodų kraštai neužstrigtų ant drabužių. Korpuso aukštį lėmė tik akumuliatoriaus storis. Likusi gaubto dalis buvo sukurta taip, kad tiesiog gerai atrodytų su užapvalintais kraštais ir poliruotais kampais. Aš turėjau išlaikyti dizainą patogų 3D spausdinimui, kad galėčiau jį 3D spausdinti namuose be jokios pagalbinės medžiagos.

Dabar, kai aparatūra buvo baigta, atėjo laikas pradėti dirbti su programine įranga!

8 žingsnis: Kodas

Kodas
Kodas

Aš pradėjau kodą įtraukdamas visas reikalingas bibliotekas. Tai apima biblioteką, skirtą bendrauti su RTC ir valdyti šviesos diodus. Po to kiekvienam režimui sukūriau atskiras funkcijas. Kai vartotojas perjungia režimus paspausdamas mygtuką, programa įjungia tą režimą atitinkančią funkciją. Jei vartotojas nepaspaudžia mygtuko per nurodytą laiką, laikrodis užmiega.

Miego režimą rodo visi šviesos diodai, kurie išnyksta, kol jie visiškai išsijungia. Naudojant miego režimą, žymiai pailgėja akumuliatoriaus veikimo laikas ir šviesos diodai išjungiami, kai jie nenaudojami. Vartotojas gali pažadinti laikrodį paspausdamas viršutinį mygtuką. Pabudęs laikrodis patikrins akumuliatoriaus įkrovos lygį ir įsitikins, kad jo nereikia įkrauti. Jei reikia įkrauti, šviesos diodai keletą kartų mirksi raudonai prieš rodydami laiką. Jei akumuliatorius yra žemiau kritinio lygio, jis visiškai neįsijungs.

Likusį laiką programuojant buvo siekiama, kad kiti režimai būtų kuo intuityvesni. Supratau, kad tas pats mygtukas, atsakingas už tą patį funkcionalumą visais režimais, būtų pats intuityviausias. Po tam tikrų bandymų aš sugalvojau šią konfigūraciją:

  • Viršutinio mygtuko paspaudimas: pabusti / pereiti tarp režimų „Rodymo laikas“, „Rodyti datą“, „Chronometras“ir „Žadintuvas“.
  • Viršutinio mygtuko laikymas: įveskite režimą „Nustatyti laiką“, „Nustatyti datą“, „Pradėti chronometrą“arba „Nustatyti žadintuvą“.
  • Apatinio mygtuko paspaudimas: padidinkite ryškumą.
  • Apatinio mygtuko laikymas: įjunkite režimą „Pasirinkite spalvą“.

Apatinis mygtukas visada yra atsakingas už ryškumą ir spalvų reguliavimą, nepriklausomai nuo to, kokiu režimu esate. Kai vartotojas įjungia režimą „Pasirinkti spalvą“, šviesos diodai pradeda perjungti visas galimas RGB spalvas. Vartotojas gali pristabdyti animaciją ir pasirinkti tam tikram režimui pageidaujamą spalvą (rodymo laikas raudona, rodymo data mėlyna ir kt.). Spalvas vartotojas turi lengvai pritaikyti, kad padėtų jiems atskirti skirtingus režimus.

Dabar, kai kodas buvo baigtas, atėjo laikas jį įkelti į mikrovaldiklį!

9 žingsnis: programavimas

Programavimas
Programavimas

Buvo beveik laikas litavimui ir surinkimui, bet prieš tai turėjau užprogramuoti mikrovaldiklį. Aš vadovavausi šia pamoka

Įrašykite įkrovos tvarkyklę į ATmega328P-AU SMD

apie tai, kaip įrašyti įkrovos įkroviklį ir užprogramuoti mikrovaldiklį naudojant įprastą „Arduino Uno“kaip programuotoją.

Pirmasis žingsnis buvo „Arduino Uno“paversti IPT įkėlus „ArduinoISP“pavyzdinį kodą. Aš naudoju duonos lentą kartu su programavimo lizdu ir prijungiau schemą iš vadovėlio. Po to galėjau įrašyti įkrovos įkroviklį į mikrovaldiklį tiesiog paspausdamas „Burn Bootloader“„Arduino IDE“.

Kai mikrovaldiklis turėjo įkrovos įkroviklį, aš tiesiog pašalinau esamą mikrovaldiklį iš „Arduino Uno“ir panaudojau „Arduino Uno“plokštę kaip USB į nuoseklųjį adapterį, norėdamas įkelti kodą į programavimo lizdo mikrovaldiklį. Kai įkėlimas buvo baigtas, galėjau pradėti litavimo procesą.

Kitas žingsnis buvo surinkti visus komponentus ir lituoti juos kartu!

10 žingsnis: litavimas

Litavimas
Litavimas
Litavimas
Litavimas
Litavimas
Litavimas
Litavimas
Litavimas

Litavimo procesas buvo padalintas į dvi dalis. Pirmiausia reikia lituoti apatinį sluoksnį, o tada - viršutinį.

Laikrodžio plokštę pritvirtinau tarp poros prototipinių plokščių, naudodami juostą. Tai užtikrino, kad PCB nejudėjo litavimo metu, o tai yra labai svarbu. Tada uždėjau litavimo trafaretą ant PCB ir naudoju didelį kiekį litavimo pastos, kad padengčiau visas litavimo pagalves. Aš pradėjau naudoti ploną pincetą, kad sudėčiau visus komponentus ant atitinkamų pagalvėlių. Tada aš panaudojau šilumos pistoletą, kad suvirinčiau visus lydmetalius.

Kai apatinis sluoksnis buvo lituojamas, aš greitai jį apžiūrėjau, kad įsitikinčiau, ar litavimas buvo sėkmingas. Tada apverčiau lentą ir pakartojau litavimo procesą kitoje pusėje, šį kartą su visais šviesos diodais. Lituodami viršutinį sluoksnį, buvo labai svarbu neperkaisti plokštės, nes visi apačioje esantys komponentai gali nukristi. Laimei, visi komponentai liko vietoje ir po litavimo mygtukais, naudojant įprastą lituoklį, PCB buvo baigtas!

Dabar atėjo laikas paskutiniam surinkimui!

11 žingsnis: Surinkimas

Surinkimas
Surinkimas

Surinkimas buvo labai paprastas. Prijungiau bateriją prie PCB ir įdėjau bateriją bei PCB į 3D spausdinimo korpusą. Aš įsukau keturis varžtus į tvirtinimo angas kiekviename PCB kampe. Po to aš pritvirtinau laikrodžio dirželius naudodamas 18 mm spyruoklinius strypus ir laikrodis buvo baigtas!

12 žingsnis: Išvados ir patobulinimai

Išvada ir patobulinimai
Išvada ir patobulinimai
Išvada ir patobulinimai
Išvada ir patobulinimai

Laikrodis veikia kaip tikėtasi ir esu labai patenkintas tuo, kaip pasirodė. Iki šiol neturėjau jokių problemų, o baterija lieka beveik visiškai įkrauta po visos naudojimo savaitės.

Ateityje galiu pridėti kitų laikrodžio funkcijų. Kadangi USB prievadas yra prijungtas prie mikrovaldiklio, programinę -aparatinę įrangą galima bet kada atnaujinti naujomis funkcijomis. Tačiau kol kas aš ir toliau naudosiu šią laikrodžio versiją ir pažiūrėsiu, kaip ji laikysis po ilgesnio naudojimo.

Jei turite minčių, komentarų ar klausimų apie šį projektą, palikite juos žemiau. Taip pat galite juos siųsti adresu [email protected].

Laikrodžių konkursas
Laikrodžių konkursas
Laikrodžių konkursas
Laikrodžių konkursas

Pirmasis prizas laikrodžių konkurse

Rekomenduojamas: