Satura rādītājs:
- Piegādes
- 1. solis: ideja
- 2. solis: kāda bināro pulksteņu teorija
- 3. darbība. Darba sākšana
- 4. solis: komponentu izvēle
- 5. darbība. Shēma
- 6. darbība: PCB izkārtojums
- 7. solis: 3D dizains
- 8. solis: kods
- 9. solis: programmēšana
- 10. solis: lodēšana
- 11. solis: montāža
- 12. solis: secinājumi un uzlabojumi
Video: Galīgais binārais pulkstenis: 12 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Es nesen iepazinos ar bināro pulksteņu jēdzienu un sāku veikt dažus pētījumus, lai noskaidrotu, vai es varētu to izveidot sev. Tomēr es nevarēju atrast esošu dizainu, kas vienlaikus būtu gan funkcionāls, gan stilīgs. Tātad, es nolēmu izveidot savu dizainu pilnīgi no nulles!
Piegādes
Visi šī projekta faili:
Arduino koda bibliotēkas var lejupielādēt no GitHub šeit:
M41T62 RTC bibliotēka
FastLED bibliotēka
LowPower bibliotēka
1. solis: ideja
Nesen uzgāju šādu video:
DIY binārais rokas pulkstenis
Iepriekš redzamajā videoklipā ir redzams pašdarināts pamata binārais pulkstenis. Man nebija ne jausmas, ka kaut kas tāds pastāv, bet, veicot papildu pētījumus par bināro pulksteņu tēmu, es ātri sapratu, ka tur ir daudz dažādu dizainu! Es gribēju to uzbūvēt sev, bet nevarēju atrast dizainu, kas man patiktu. Atrastajiem binārajiem pulksteņiem trūka daudz funkciju un tie neizskatījās īpaši labi. Tātad, es nolēmu izveidot savu pilnīgi no jauna!
Pirmais solis bija mana dizaina kritēriju noteikšana. To es izdomāju:
- Binārā RGB saskarne
- Laika displejs (ar ļoti precīzu laika uzskaiti)
- Datuma displejs
- Hronometra funkcionalitāte
- Signalizācijas funkcionalitāte
- Akumulatora darbības laiks ir vismaz 2 nedēļas
- USB uzlāde
- Programmatūra, kuru lietotājs var viegli pielāgot
- Tīrs un vienkāršs dizains
Šie kritēriji kļuva par pamatu visam projektam. Nākamais solis bija izdomāt, kā es vēlos, lai pulkstenis darbotos!
2. solis: kāda bināro pulksteņu teorija
Plāns bija vienkāršs. Binārais pulkstenis darbotos tāpat kā parasts pulkstenis, izņemot to, ka saskarne būtu bināra, konkrēti, BCD (Binary Coded Decimal). BCD ir bināro kodējumu veids, kur katru decimāldaļu ciparu attēlo fiksēts bitu skaits. Man ir nepieciešami 4 biti, lai varētu attēlot ciparu no 0 līdz 9. Un par standartu
hh: mm
laika formātā, man vajag 4 no šiem cipariem. Tas nozīmē, ka man kopumā ir nepieciešami 16 biti, kurus attēlo 16 gaismas diodes.
Laika lasīšana BCD ir diezgan vienkārša, kad esat pieradis. Rinda pulksteņa apakšā attēlo vismazāk nozīmīgo bitu (1), bet augšējā rindā - visnozīmīgāko bitu (8). Katra kolonna attēlo ciparu
hh: mm
laika formāts. Ja gaismas diode ir ieslēgta, jūs skaitāt šo vērtību. Ja gaismas diode ir izslēgta, jūs to ignorējat.
Lai nolasītu pirmo ciparu, vienkārši summējiet visas aktivizētās gaismas diodes atbilstošās vērtības pirmajā (kreisajā pusē) kolonnā. Dariet to pašu pārējiem cipariem no kreisās uz labo. Jūs tagad esat izlasījis laiku BCD!
Šis princips būs tāds pats attiecībā uz pārējām pulksteņa funkcijām. RGB gaismas diodes izmantošana palīdzēs atšķirt dažādas funkcijas un režīmus, izmantojot dažādas krāsas. Krāsas izvēlas lietotājs, un tās var viegli pielāgot jebkurai vēlamajai krāsu paletei. Tas ļauj lietotājam viegli pārvietoties pa funkcijām, nemulsinot.
Nākamais solis bija blokshēmas izveidošana!
3. darbība. Darba sākšana
Kā jebkuram tipiskam elektronikas projektam, bloka diagramma ir būtiska sastāvdaļa agrīnā projektēšanas stadijā. Izmantojot kritērijus, man izdevās salikt iepriekš minēto blokshēmu. Katrs diagrammas bloks attēlo ķēdes funkciju, un bultiņas parāda funkciju attiecības. Bloku diagramma kopumā sniedz labu pārskatu par ķēdes darbību.
Nākamais solis bija sākt pieņemt lēmumus par atsevišķiem komponentiem katram bloka blokshēmā!
4. solis: komponentu izvēle
Izrādījās, ka šajā ķēdē ir diezgan daudz komponentu. Zemāk es esmu izvēlējies dažus no būtiskākajiem kopā ar paskaidrojumu, kāpēc es tos izvēlējos.
Gaismas diodes
Binārajam interfeisam izvēle bija diezgan vienkārša. Es zināju, ka displejā vēlos izmantot gaismas diodes, un sapratu, ka man vajadzēja 16 no tiem (4 × 4 režģī), lai parādītu pēc iespējas vairāk informācijas. Pētot perfektu LED, APA102 turpināja parādīties. Tā ir ļoti maza (2 mm x 2 mm) adresējama gaismas diode ar plašu krāsu klāstu un ir diezgan lēta. Lai gan es nekad iepriekš nebiju ar viņiem strādājis, šķita, ka tie ir ideāli piemēroti šim projektam, tāpēc nolēmu tos izmantot.
Mikrokontrolleris
Arī mikrokontrollera izvēle bija diezgan vienkārša. Man ir bijusi liela pieredze, izmantojot Atmega328P-AU atsevišķās lietojumprogrammās, un es biju ļoti labi iepazinies ar tā funkcijām. Tas ir tas pats mikrokontrolleris, kas tiek izmantots Arduino Nano paneļos. Es apzinos, ka, iespējams, ir pieejams lētāks mikrokontrolleris, ko es būtu varējis izmantot, taču zinot, ka Atmega328 pilnībā atbalstīs visas Arduino bibliotēkas, tas bija liels faktors, izvēloties to šim projektam.
RTC (reālā laika pulkstenis)
Galvenā prasība RTC bija precizitāte. Es zināju, ka pulkstenim nebūs interneta savienojuma un tādējādi nevarēs pārkalibrēties, izmantojot interneta savienojumu, lietotājam tas būs jāpārkalibrē manuāli. Tāpēc es vēlējos padarīt laika uzskaiti pēc iespējas precīzāku. M41T62 RTC ir viena no augstākajām precizitātēm, ko varēju atrast (± 2ppm, kas ir līdzvērtīga ± 5 sekundēm mēnesī). Apvienojot augsto precizitāti ar I2C saderību un ļoti zemu strāvas patēriņu, šis RTC bija laba izvēle šim projektam.
DC-DC Boost Converter
DC-DC Boost Converter IC izvēle tika veikta, vienkārši apskatot ķēdi un noskaidrojot, kādi spriegumi un strāvas ir vajadzīgas. Ķēdes vadīšana ar zemu spriegumu samazinātu strāvas patēriņu, bet es nevarēju nokļūt zemāk par 4,5 V (minimālais mikrokontrollera spriegums pie 16 MHz pulksteņa) un es nevarēju pārsniegt 4,5 V (maksimālais RTC spriegums). Tas nozīmēja, ka man vajadzēja vadīt ķēdi ar precīzi 4,5 V spriegumu, lai darbinātu komponentus to ieteiktajās specifikācijās. Es aprēķināju, ka ķēdes maksimālā strāva nepārsniegtu 250 mA. Tātad, es sāku meklēt pastiprinātāja pārveidotāju, kas atbilstu prasībām, un ātri uzdūros TPS61220. TPS61220 bija nepieciešami minimāli ārējie komponenti, tas bija diezgan lēts un spēja apmierināt strāvas un sprieguma prasības.
Akumulators
Galvenā prasība pēc akumulatora bija izmērs. Akumulatoram bija jābūt pietiekami mazam, lai tas ietilptu pulksteņa korpusā, neizskatoties apjomīgs. Es sapratu, ka akumulators nedrīkst pārsniegt 20 mm × 35 mm × 10 mm. Ņemot vērā šos izmēru ierobežojumus un pašreizējo 250 mA prasību, mana bateriju izvēle bija ierobežota līdz LiPo baterijām. Hobbykingā atradu akumulatoru "Turnigy nano-tech 300mAh 1S", kuru nolēmu izmantot.
Uzlādes IC
Uzlādes kontrolierim nebija īpašu prasību, izņemot to, ka tam bija jābūt saderīgam ar 1S LiPo akumulatoru. Es atradu MCP73831T, kas ir pilnībā integrēts uzlādes kontrolieris, kas paredzēts vienas šūnas uzlādes lietojumprogrammām. Viena no tās funkcijām ir spēja pielāgot uzlādes strāvu, izmantojot ārēju rezistoru, kas, manuprāt, bija noderīgs šajā lietojumprogrammā.
LiPo aizsardzība
Es gribēju iekļaut sprieguma un strāvas uzraudzību, lai pasargātu akumulatoru no jebkādiem bīstamiem pārslodzes un izlādes apstākļiem. Bija ierobežots skaits IC, kas nodrošināja šādas funkcijas, un viena no lētākajām iespējām bija BQ29700 IC. Tas prasīja minimālu ārējo komponentu daudzumu un ietvēra visu nepieciešamo aizsardzību vienšūnu LiPo akumulatoram.
Tagad, kad tika izvēlēti komponenti, bija pienācis laiks izveidot shēmu!
5. darbība. Shēma
Izmantojot Altium Designer, es varēju apkopot iepriekš minēto shēmu, izmantojot ieteikumus no katras komponenta datu lapām. Shēma ir sadalīta dažādos blokos, lai padarītu to lasāmāku. Es arī pievienoju dažas piezīmes ar svarīgu informāciju, ja kāds cits vēlētos atjaunot šo dizainu.
Nākamais solis bija shēmas izvietošana uz PCB!
6. darbība: PCB izkārtojums
PCB izkārtojums izrādījās šī projekta vissarežģītākā daļa. Es izvēlējos izmantot 2 slāņu PCB, lai PCB ražošanas izmaksas būtu minimālas. Es izvēlējos izmantot standarta pulksteņa izmēru 36 mm, jo tas šķita diezgan labi piemērots gaismas diodēm. Es pievienoju dažus 1 mm skrūvju caurumus, lai nostiprinātu PCB pulksteņa korpusā. Mērķis bija saglabāt tīru un izskatīgu dizainu, novietojot visas sastāvdaļas (protams, izņemot gaismas diodes) uz apakšējā slāņa. Es arī gribēju izmantot absolūti minimālo vias skaitu, lai augšējā slānī nebūtu redzamu vias. Tas nozīmēja, ka man bija jānovirza visas pēdas vienā slānī, vienlaikus nodrošinot, ka ķēdes "trokšņainās" daļas atrodas prom no jutīgajām signāla pēdām. Es arī pārliecinājos, ka visas pēdas ir pēc iespējas īsākas, novietojot apvedceļa kondensatorus tuvu slodzei, izmantojot biezākas pēdas lieljaudas komponentiem, un citādi ievēroju visas kopējās labās PCB projektēšanas prakses. Maršrutēšana aizņēma diezgan daudz laika, bet, manuprāt, tas izdevās ļoti labi.
Nākamais solis bija 3D modeļa izveide pulksteņa korpusam!
7. solis: 3D dizains
Pulksteņa korpuss tika veidots pēc ļoti tradicionāla, klasiska pulksteņa dizaina, izmantojot Fusion 360. Es izmantoju standarta 18 mm atstarpi pulksteņa siksnai, lai pulkstenis būtu saderīgs ar daudzām citām siksnām. Izgriezums PCB tika izstrādāts par 0, 4 mm lielāks nekā pati PCB, lai pielāgotos jebkādām ražošanas neprecizitātēm. Es iekļāvu dažus skrūvju stabiņus PCB montāžai un nelielu malu PCB uzlikšanai. Es pārliecinājos, ka PCB ir padziļināts fem milimetru attālumā no augšas, lai gaismas diodes asās malas netiktu iestrēgušas apģērbā. Korpusa augstumu noteica tikai akumulatora biezums. Pārējā korpusa daļa tika veidota tā, lai vienkārši izskatītos labi ar noapaļotām malām un pulētiem stūriem. Man nācās saglabāt dizainu draudzīgu 3D drukāšanai, lai es varētu to 3D drukāt mājās bez jebkāda atbalsta materiāla.
Tagad, kad aparatūra bija pabeigta, bija pienācis laiks sākt strādāt ar programmatūru!
8. solis: kods
Es sāku kodu, iekļaujot visas nepieciešamās bibliotēkas. Tas ietver bibliotēku, lai sazinātos ar RTC un vadītu gaismas diodes. Pēc tam katram režīmam izveidoju atsevišķas funkcijas. Kad lietotājs pārslēdz režīmus, nospiežot pogu, programma izsauc šim režīmam atbilstošo funkciju. Ja lietotājs nenospiež pogu noteiktā laika periodā, pulkstenis pāriet miega režīmā.
Miega režīmu norāda, ka visas gaismas diodes izgaist, līdz tās pilnībā izslēdzas. Miega režīma izmantošana ievērojami palielina akumulatora darbības laiku un saglabā izslēgtas gaismas diodes, kad tās netiek izmantotas. Lietotājs var modināt pulksteni, nospiežot augšējo pogu. Pamodināts pulkstenis pārbaudīs akumulatora uzlādes līmeni, lai pārliecinātos, ka tas nav jāuzlādē. Ja ir nepieciešama uzlāde, gaismas diodes pirms laika parādīšanas dažas reizes mirgos sarkanā krāsā. Ja akumulators ir zem kritiskā līmeņa, tas vispār neieslēdzas.
Pārējā laikā programmēšana pārējos režīmus padarīja pēc iespējas intuitīvākus. Es sapratu, ka tā pati poga, kas atbild par vienu un to pašu funkcionalitāti visos režīmos, būtu vis intuitīvākā. Pēc dažām pārbaudēm es izdomāju šo pogas konfigurāciju:
- Augšējās pogas nospiešana: pamošanās / cikls starp režīmiem "Displeja laiks", "Rādīt datumu", "Hronometrs" un "Modinātājs".
- Augšējās pogas turēšana: ievadiet režīmu "Iestatīt laiku", "Iestatīt datumu", "Sākt hronometru" vai "Iestatīt modinātāju".
- Nospiediet apakšējo pogu: palieliniet spilgtumu.
- Pogas turēšana apakšā: ievadiet režīmu "Izvēlēties krāsu".
Apakšējā poga vienmēr ir atbildīga par spilgtuma un krāsu pielāgošanu neatkarīgi no tā, kādā režīmā atrodaties. Kad lietotājs pāriet režīmā "Izvēlēties krāsu", gaismas diodes sāk riņķot pa visām iespējamām RGB krāsām. Lietotājs var apturēt animāciju un izvēlēties konkrētajam režīmam vēlamo krāsu (displeja laiks sarkanā krāsā, datuma parādīšana zilā krāsā utt.). Krāsas lietotājam ir viegli pielāgojamas, lai palīdzētu viņiem atšķirt dažādus režīmus.
Tagad, kad kods ir pabeigts, ir pienācis laiks to augšupielādēt mikrokontrollerī!
9. solis: programmēšana
Gandrīz bija pienācis laiks lodēšanai un montāžai, bet pirms tam man bija jāprogrammē mikrokontrolleris. Es sekoju šai apmācībai
Ierakstiet sāknēšanas ielādētāju uz ATmega328P-AU SMD
par to, kā ierakstīt sāknēšanas ielādētāju un ieprogrammēt mikrokontrolleru, kā programmētāju izmantojot parasto Arduino Uno.
Pirmais solis bija pārvērst Arduino Uno par ISP, augšupielādējot "ArduinoISP" parauga kodu. Es izmantoju maizes dēli kopā ar programmēšanas ligzdu un savienoju shēmu no apmācības. Pēc tam es varēju ierakstīt sāknēšanas ielādētāju mikrokontrollerī, vienkārši nospiežot "Burn Bootloader" Arduino IDE.
Kad mikrokontrolleram bija sāknēšanas ielādētājs, es vienkārši noņēmu esošo mikrokontrolleri no Arduino Uno un izmantoju Arduino Uno plati kā USB seriālo adapteri, lai augšupielādētu kodu programmēšanas ligzdā esošajā mikrokontrollerī. Pēc augšupielādes pabeigšanas es varētu sākt lodēšanas procesu.
Nākamais solis bija visu sastāvdaļu savākšana un lodēšana kopā!
10. solis: lodēšana
Lodēšanas process tika sadalīts divās daļās. Vispirms vajadzēja pielodēt apakšējo slāni, un pēc tam augšējo slāni.
Es piestiprināju pulksteņa PCB starp pāris prototipa dēļiem, izmantojot lenti. Tas nodrošināja, ka lodēšanas laikā PCB neizkustējās, kas ir ļoti svarīgi. Pēc tam es ievietoju lodēšanas trafaretu virs PCB un izmantoju lielu daudzumu lodēšanas pastas, lai pārklātu visus lodēšanas spilventiņus. Es izmantoju plānu pinceti, lai visas sastāvdaļas novietotu uz atbilstošajiem spilventiņiem. Pēc tam es izmantoju siltuma pistoli, lai atkārtoti uzpildītu lodēt visus komponentus.
Kad apakšējais slānis bija pielodēts, es ātri to vizuāli pārbaudīju, lai pārliecinātos, ka lodēšana ir veiksmīga. Tad es apgāzu dēli un atkārtoju lodēšanas procesu otrā pusē, šoreiz ar visām gaismas diodēm. Lodējot augšējo slāni, bija ļoti svarīgi nepārkarst plāksni, jo visas apakšā esošās sastāvdaļas var nokrist. Par laimi, visas sastāvdaļas palika savās vietās un pēc pogu lodēšanas, izmantojot parasto lodāmuru, PCB tika pabeigta!
Tagad bija pienācis pēdējās montāžas laiks!
11. solis: montāža
Montāža bija ļoti vienkārša. Es pievienoju akumulatoru PCB un ievietoju akumulatoru un PCB 3D drukātā korpusā. Es turpināju ieskrūvēt četras skrūves stiprinājuma atverēs katrā PCB stūrī. Pēc tam es piestiprināju pulksteņa siksnas, izmantojot 18 mm atsperes stieņus, un pulkstenis bija gatavs!
12. solis: secinājumi un uzlabojumi
Pulkstenis darbojas kā paredzēts, un esmu ļoti apmierināts ar to, kā tas izrādījās. Man ar to līdz šim nav bijušas nekādas problēmas, un akumulators pēc gandrīz visas lietošanas nedēļas paliek gandrīz pilnībā uzlādēts.
Nākotnē es varētu pulkstenim pievienot citas funkcijas. Tā kā USB ports ir pievienots mikrokontrolleram, programmaparatūru var atjaunināt jebkurā laikā, izmantojot jaunas funkcijas. Tomēr pagaidām es turpināšu izmantot šo pulksteņa versiju un redzēt, kā tas izturēs pēc ilgstošas lietošanas.
Ja jums ir kādas domas, komentāri vai jautājumi par šo projektu, lūdzu, atstājiet tos zemāk. Varat arī nosūtīt tos uz e -pastu [email protected].
Pirmā balva pulksteņu konkursā
Ieteicams:
Mikro binārais pulkstenis: 10 soļi (ar attēliem)
Mikro binārais pulkstenis: iepriekš izveidojot instrukciju (bināro DVM), kas izmanto ierobežoto displeja apgabalu, izmantojot bināro. Tas bija tikai neliels solis, iepriekš izveidojot galveno koda moduli decimāldaļai uz bināro, lai izveidotu bināro pulksteni, bet t
Binārais galda pulkstenis: 9 soļi (ar attēliem)
Binārais galda pulkstenis: Binārie pulksteņi ir lieliski un paredzēti tikai personai, kas zina bināro (digitālo ierīču valodu). Ja esat tehnoloģiju puisis, šis dīvainais pulkstenis ir domāts jums. Tātad, izveidojiet to pats un noslēpiet savu laiku! Jūs atradīsit daudz bināro c
Binārais LED marmora pulkstenis: 6 soļi (ar attēliem)
Binārais LED marmora pulkstenis: tagad es domāju, ka gandrīz katram ir binārais pulkstenis, un šeit ir mana versija. Man patika tas, ka šis projekts apvienoja dažus koka darbus, programmēšanu, mācīšanos, elektroniku un varbūt tikai nelielu māksliniecisko jaunradi. Tas parāda laiku, mēnesi, datumu, dienu
Arduino binārais pulkstenis - 3D drukāts: 5 soļi (ar attēliem)
Arduino binārais pulkstenis - 3D drukāts: es kādu laiku skatos uz binārajiem pulksteņiem sava biroja galdam, tomēr tie ir diezgan dārgi un / vai tiem nav milzīgu funkciju. Tāpēc es nolēmu tā vietā uztaisīt vienu. Viens punkts, kas jāņem vērā, veidojot pulksteni, Arduino / Atmega328
Digitālais un binārais pulkstenis 8 ciparu X 7 segmentu LED displejā: 4 soļi (ar attēliem)
Digitālais un binārais pulkstenis 8 ciparu X 7 segmentu LED displejā: šī ir mana uzlabotā digitālā & Binārais pulkstenis, izmantojot 8 ciparu x 7 segmentu LED displeju. Man patīk sniegt jaunas funkcijas parastajām ierīcēm, īpaši pulksteņiem, un šajā gadījumā 7 Seg displeja izmantošana binārajam pulkstenim ir netradicionāla, un tas