Turinys:

60 Hz „Arduino“laikrodis: 8 žingsniai
60 Hz „Arduino“laikrodis: 8 žingsniai

Video: 60 Hz „Arduino“laikrodis: 8 žingsniai

Video: 60 Hz „Arduino“laikrodis: 8 žingsniai
Video: LED SAND Clock Arduino 3d printed #SHORTS 2024, Lapkritis
Anonim
60 Hz „Arduino“laikrodis
60 Hz „Arduino“laikrodis

Šis „Arduino“pagrįstas skaitmeninis laikrodis sinchronizuojamas 60 Hz elektros linija. Jame yra paprastas ir nebrangus bendras anodo 4 skaitmenų 7 segmentų ekranas, rodantis valandas ir minutes. Jis naudoja kryžminį detektorių, kad nustatytų, kada 60 Hz sinusinė banga kerta nulinės įtampos tašką ir išgauna 60 Hz kvadratinę bangą.

Per trumpą laiką įeinančios sinusinės bangos dažnis iš elektros linijos gali labai šiek tiek skirtis dėl apkrovos, tačiau ilgą laiką jis vidutiniškai siekia iki 60 Hz. Mes galime tuo pasinaudoti, kad gautume laiko šaltinį, kuris sinchronizuotų mūsų laikrodį.

1 žingsnis: 1 žingsnis: schemos

1 žingsnis: schemos
1 žingsnis: schemos

Yra dvi grandinės versijos, priklausomai nuo to, ar norite naudoti transformatorių su centriniu čiaupu, ar be jo, bet kuriuo atveju grandinės veikimas yra beveik identiškas. Šiai konstrukcijai aš naudoju sieninį adapterį (be centrinio čiaupo), kuris išleidžia 12 V kintamąją srovę. Aš naudosiu šį dizainą (skaitmeninio laikrodžio 1 grandinės schema) grandinės aprašymui. Atkreipkite dėmesį, kad svarbu naudoti sieninį adapterį, kuris išleidžia 12 V kintamosios srovės, o ne 12 V nuolatinės srovės, kad galėtume prisijungti prie kintamosios srovės bangos. Tikriausiai taip pat galėtumėte naudoti transformatorių, išvestį 9 V kintamosios srovės, pašalinti R19 ir taip pat pradėti veikti, tačiau 12V yra labai dažnai prieinamas. Grandinė veikia taip:

120 V kintamosios srovės dažnis 60 Hz paverčiamas transformatoriumi TR1 į 12 V kintamąją. Tai tiekiama į diodą D4 ir ištaisoma taip, kad tik +ve įtampa būtų tiekiama į kondensatorių C3 ir išlyginta iki maždaug nuolatinės srovės. C3 įtampa tiekiama į 7805 įtampos reguliatorių (U6) per rezistorių R19. R19 naudojamas C3 įtampai sumažinti, kuri mano atveju buvo matuojama maždaug 15 V DC. Tai gali reguliuoti 7805, tačiau esant tokiam įvesties lygiui 7805 turi nukristi maždaug 10 VDC ir dėl to tampa gana karšta. Naudodami R19, kad sumažintumėte įtampą iki maždaug 10 V DC, mes neleidžiame U6 per daug įkaisti. Taigi tai nėra veiksminga galios konversijos technika, tačiau ji tinka mūsų tikslams. PASTABA: čia naudokite bent 1/2W rezistorių ar daugiau. Grandinė sunaudoja apie 55 ma, todėl galios išsklaidymas R19 yra apie 1/3W, remiantis P = I ** 2*R arba P = 55ma x 55ma x 120 omai = 0,363W. Kitas U6 išves gryną 5 V nuolatinę srovę su C4 ir C5 išvestimi, kad filtruotų bet kokį 5 V elektros linijos triukšmą. Ši 5 V nuolatinė srovė maitina visus plokštės IC. Iš TR1 mes taip pat paimame nefiltruoto kintamosios srovės signalo mėginį ir tiekiame jį į potenciometrą RV1, kuris naudojamas reguliuoti į kryžminį detektorių tiekiamą lygį. R18 ir R17 sudaro įtampos skirstytuvą, kad dar labiau sumažintų įeinančios kintamosios įtampos lygį. Atminkite, kad tai įvyksta esant 12 V kintamosios srovės įtampai, ir mes turime ją sumažinti iki mažiau nei 5 V, kad ji veiktų su mūsų kryžminiu detektoriumi, kuris yra tik maitinamas 5VDC. R15 ir R16 riboja srovę, o D1 ir D2 yra skirti užkirsti kelią op-amp U5 viršijimui. Parodytoje konfigūracijoje U5 išvestis 1 kaištyje keičiasi nuo +5 V iki 0 V kiekvieną kartą, kai gaunama sinusinė banga pasikeičia iš teigiamos į neigiamą. Tai sukuria 60 Hz kvadratinę bangą, kuri tiekiama į mikrovaldiklį U4. Tada programa, įkelta į U4, naudoja šią 60 Hz kvadratinę bangą, kad padidintų laikrodį kas minutę ir valandą. Kaip tai padaryti, bus aptarta programinės įrangos skiltyje ir programinės įrangos komentaruose. U7 naudojamas 74HC595 poslinkių registras, nes mikroprocesoriuje turime ribotą skaičių skaitmeninių kaiščių, todėl jis naudojamas išėjimų skaičiui išplėsti. Mes naudojame 4 skaitmeninius kaiščius ant mikroprocesoriaus, bet galime valdyti 7 segmentus ekrane per 74HC595. Tai pasiekiama perkeliant iš anksto nustatytus bitų modelius, saugomus mikrovaldiklyje ir vaizduojančius kiekvieną rodomą skaitmenį, į poslinkių registrą. Čia naudojamas ekranas yra įprastas anodas, todėl, norėdami įjungti segmentą, turime apversti signalo lygius, sklindančius iš 74HC595. Kai segmentas turėtų būti įjungtas, signalas, išeinantis iš 74HC595 išvesties kaiščio, bus +5 V, tačiau norint įjungti tą ekrano segmentą, reikia, kad kaištis, kurį jis maitina ekrane, būtų 0 V. Taigi, tam reikia šešiakampių keitiklių U2 ir U3. Deja, vienas keitiklio IC gali apdoroti tik 6 inversijas, todėl mums reikia dviejų iš jų, nors antrame mes naudojame tik vieną iš 6 vartų. Deja, veltui. Galite paklausti, kodėl čia nepasinaudojus įprastu katodo tipo ekranu ir pašalinus U2 ir U3? Na, atsakymas yra jūs galite, aš tiesiog atsitiktinai turiu įprastą anodo tipą savo dalių tiekime. Jei turite ar norite naudoti įprastą katodo tipo ekraną, tiesiog pašalinkite U2 ir U3 ir perjunkite Q1 - Q4 taip, kad tranzistorių kolektoriai būtų prijungti prie ekrano kaiščių, o tranzistorių spinduoliai - prie žemės. Q1 - Q4 valdo, kuris iš keturių 7 segmentų ekranų yra aktyvus. Tai valdo mikrovaldiklis per kaiščius, prijungtus prie tranzistorių Q1 - Q4 pagrindo. Padidinimo ir nustatymo mygtukai bus naudojami rankiniu būdu nustatyti teisingą laikrodžio laiką, kai kalbama apie faktinį laikrodžio naudojimą. Kai vieną kartą paspaudžiamas nustatymo mygtukas, padidinimo mygtuką galima naudoti ekrane rodomoms valandoms pereiti. Dar kartą paspaudus mygtuką „Nustatyti“, padidinimo mygtuku galima pereiti ekrane rodomas minutes. Trečią kartą paspaudus mygtuką „Nustatyti“, nustatomas laikas. R13 ir R14 nenaudojami su šiais mygtukais susietų mikrovaldiklių kaiščių nusileidžia žemai. Atkreipkite dėmesį, kad čia mes pašalinome U4 („Atmega328p“) nuo tipiškos „Arduino UNO“prototipo plokštės ir įdėjome ją į prototipo plokštę su likusia mūsų grandine. Norėdami tai padaryti, mes turime bent jau aprūpinti kristalu X1 ir kondensatoriais C1 ir C2, kad būtų užtikrintas laikrodžio šaltinis mikrovaldikliui, susiejimo kaištis 1, atstatymo kaištis, aukštas ir tiekiantis 5 V nuolatinę srovę.

2 veiksmas: 2 žingsnis: „Breadboard“prototipas

2 žingsnis: „Breadboard“prototipas
2 žingsnis: „Breadboard“prototipas
2 žingsnis: „Breadboard“prototipas
2 žingsnis: „Breadboard“prototipas

Nepriklausomai nuo to, ar kuriate grandinę tiksliai taip, kaip parodyta grandinės schemoje, ar galbūt naudojate šiek tiek kitokį transformatorių, ekrano tipą ar kitus komponentus, pirmiausia turėtumėte apjungti grandinę, kad įsitikintumėte, jog ji veikia ir supratote, kaip ji veikia.

Paveikslėliuose matote, kad visam darbui su duona reikėjo poros lentų ir „Arduino Uno“lentos. Taigi, norėdami užprogramuoti mikrovaldiklį arba eksperimentuoti ar pakeisti programinę įrangą, iš pradžių jums reikės mikrovaldiklio IC ant UNO plokštės, kad galėtumėte prie jo prijungti USB kabelį ir kompiuterį, kad galėtumėte įkelti programą arba atlikti programinės įrangos pakeitimus. Kai tik laikrodis pradės veikti ant duonos lentos ir jūsų mikrokontroleris bus užprogramuotas, galite jį atjungti ir prijungti prie galutinio laikrodžio lizdo prototipo plokštėje. Tai darydami būtinai laikykitės antistatinių atsargumo priemonių. Dirbdami su mikroprocesoriumi, naudokite antistatinį riešo diržą.

3 žingsnis: 3 žingsnis: galutinė konstrukcija

3 žingsnis: galutinė konstrukcija
3 žingsnis: galutinė konstrukcija
3 žingsnis: galutinė konstrukcija
3 žingsnis: galutinė konstrukcija

Grandinė sukonstruota ant prototipo plokštės gabalo ir sujungta nuo taško iki taško, naudojant #30 AWG vielos apvyniojimo laidą. Tai suteikia tvirtą ir patikimą rezultatą. Kadangi turimas transformatorius kabelio gale turi 5 mm kištukinį kištuką, aš sumontavau atitinkamą moterišką lizdą plokštės gale, supjaustydamas, lenkdamas ir gręždamas 1/2 colio pločio plokščios aliuminio juostos gabalą, kad padarytumėte pasirinktinį laikiklį ir tada varžtais pritvirtinkite prie plokštės mažomis 4-40 veržlėmis ir varžtais. Galite tiesiog nupjauti jungtį ir lituoti maitinimo laidus prie plokštės ir sutaupyti maždaug 20 minučių, bet aš nenorėjau, kad transformatorius būtų nuolat pritvirtintas prie lentos.

4 veiksmas: 4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas

4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas
4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas
4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas
4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas
4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas
4 žingsnis: ekrano lizdo sukūrimas ir kojų suteikimas

Kadangi ekranas turi 16 kaiščių, po 8 kiekvienoje pusėje, o kaiščių tarpas yra platesnis nei standartinis 16 kontaktų IC lizdas, turime pritaikyti lizdo dydį, kad jis atitiktų ekraną. Tai galite padaryti paprasčiausiai naudodami porą vielos pjaustytuvų, kad nuplėštumėte plastiką, jungiantį abi lizdo puses, atskirkite juos ir lituokite juos atskirai prie plokštės su atstumu, atitinkančiu kaiščių atstumą ekrane. Tai naudinga padaryti taip, kad jums nereikėtų lituoti tiesiai prie ekrano kaiščių ir neperkrauti ekrano. Lizdą, kurį padariau, galite pamatyti lentos viršuje aukščiau esančiame paveikslėlyje.

Kad ekranas atsistotų teisingai, aš pritvirtinau du 1 colio varžtus prie apatinių dviejų prototipo plokštės kampinių skylių, kaip parodyta nuotraukose, kad padarytumėte paprastą stovą. Tai buvo gana nuobodu, todėl jei tai padarysite, galite norite uždėti kažką sunkaus varžtų gale, kad jis stabilizuotųsi.

5 veiksmas: 5 veiksmas: patikrinkite plokštės laidus ir pasiruoškite kalibruoti

5 žingsnis: patikrinkite plokštės laidus ir pasiruoškite kalibruoti
5 žingsnis: patikrinkite plokštės laidus ir pasiruoškite kalibruoti

Prijungus plokštę, bet prieš prijungiant IC ar ekraną ar jį įjungiant, verta patikrinti plokštės jungtis naudojant DVM. Daugumą DVM galite nustatyti taip, kad jie pyptelėtų, kai yra tęstinumas. Nustatykite savo DVM šiuo režimu ir, vadovaudamiesi grandinės schema, patikrinkite kuo daugiau grandinės jungčių. Patikrinkite, ar tarp +5 V ir įžeminimo taškų nėra atviros grandinės arba arti jos. Vizualiai patikrinkite, ar visi komponentai yra prijungti prie tinkamų kaiščių.

Tada prijunkite transformatorių prie grandinės ir įjunkite. Prieš prijungdami bet kokius IC ar ekraną, patikrinkite, ar 5 V maitinimo linijoje yra tiksliai 5 V nuolatinės srovės maitinimo sritis arba DVM. Toliau prijunkite TIK „Op-Amp U5 IC“, ruošdamiesi kitam žingsniui. Čia mes patikrinsime, ar mūsų kryžminė grandinė sukuria kvadratinę bangą, ir sureguliuosime potenciometrą RV1, kad gautumėte švarų 60 Hz signalą.

6 veiksmas: 6 veiksmas: grandinės kalibravimas

6 žingsnis: grandinės kalibravimas
6 žingsnis: grandinės kalibravimas
6 žingsnis: grandinės kalibravimas
6 žingsnis: grandinės kalibravimas

Vienintelis kalibravimas, kurį reikia atlikti, yra sureguliuoti potenciometrą RV1, kad būtų pasiektas tinkamas signalo lygis, tiekiantis kryžminį detektorių. Yra du būdai tai padaryti:

1. Uždėkite taikymo zondą ant U5 1 kaiščio ir būtinai prijunkite taikiklio zondo įžeminimo laidą prie grandinės įžeminimo. Toliau reguliuokite RV1, kol gausite švarią kvadratinę bangą, kaip parodyta aukščiau esančiame paveikslėlyje. Jei per vieną ar kitą pusę sureguliuosite RV1, neturėsite kvadratinės bangos arba iškraipytos kvadratinės bangos. Įsitikinkite, kad kvadratinės bangos dažnis yra 60 Hz. Jei turite šiuolaikinę taikymo sritį, ji tikriausiai nurodys dažnį. Jei turite senovinę apimtį, kaip aš, įsitikinkite, kad kvadratinių bangų laikotarpis yra maždaug 16,66 ms arba 1/60 sek. 2. Naudodami dažnio skaitiklį arba DVM dažnio režimu, išmatuokite dažnį U5 1 kaištyje ir sureguliuokite RV1 tiksliai 60 Hz. Kai šis kalibravimas bus atliktas, išjunkite grandinę ir prijunkite visus IC ir ekraną, kad užbaigtumėte grandinės konstrukciją.

7 žingsnis: 7 žingsnis: „Arduino“programa

Programa yra visiškai pakomentuota, kad galėtumėte išsiaiškinti kiekvieno žingsnio detales. Dėl programos sudėtingumo sunku aprašyti kiekvieną žingsnį, tačiau labai aukštu lygiu jis veikia taip:

Mikroprocesorius priima gaunamą 60 Hz kvadratinę bangą ir skaičiuoja 60 ciklų bei didina sekundžių skaičių kas 60 ciklų. Kai sekundžių skaičius pasiekia 60 sekundžių arba 3600 ciklų, minučių skaičius padidinamas ir sekundžių skaičius nustatomas į nulį. Kai minučių skaičius pasiekia 60 minučių, valandų skaičius padidinamas, o minučių skaičius nustatomas į nulį. valandų skaičius iš naujo nustatomas į 1 po 13 valandų, taigi tai yra 12 valandų laikrodis. Jei norite 24 valandų laikrodžio, tiesiog pakeiskite programą, kad po 24 valandų valandos būtų iš naujo nustatytos į nulį. Tai eksperimentinis projektas, todėl bandžiau naudoti „Do-while“kilpą, kad sustabdytumėte jungiklių atšokimą mygtukuose „Nustatymas“ir „Padidinimas“. Tai veikia pakankamai gerai. Vieną kartą paspaudus mygtuką „Nustatyti“, padidinimo mygtuku galima pereiti ekrane rodomas valandas. Dar kartą paspaudus mygtuką „Nustatyti“, padidinimo mygtuku galima pereiti ekrane rodomas minutes. Trečią kartą paspaudus mygtuką „Nustatyti“, nustatomas laikas ir pradeda veikti laikrodis. 0 ir 1 modeliai, naudojami 7 numerių rodymui 7 segmentų ekranuose, saugomi masyve, pavadintame „Seven_Seg“. Priklausomai nuo dabartinio laikrodžio laiko, šie modeliai tiekiami į 74HC595 IC ir siunčiami į ekraną. Kuris iš 4 ekrano skaitmenų vienu metu įjungiamas norint gauti šiuos duomenis, mikroprocesorius valdo per ekraną Dig 1, 2, 3, 4 pin. Kai grandinė yra įjungta, programa pirmiausia vykdo testavimo procedūrą, pavadintą „Test_Clock“, kuri siunčia teisingus skaitmenis, kad apšviestų kiekvieną ekraną, skaičiuojant nuo 0 iki 9. Taigi, kai tai matote, kai įjungiate, žinote, kad viską sukūrėte teisingai.

8 veiksmas: 8 veiksmas: „PCBWay“pasiūlymas

Tuo šis pranešimas baigiamas, tačiau šio projekto rėmėjas yra „PCBWay“, kuris tuo metu švenčia savo 5 -metį. Patikrinkite tai adresu https://www.pcbway.com/anniversary5sales.html ir nepamirškite, kad jų surinkimo paslauga dabar yra tik 30 USD.

Rekomenduojamas: