» Elektronika » Arduino »Laikrodis su termometru ant Attiny

„Attiny“ termometro laikrodis

„Attiny“ termometro laikrodis



Sveiki visi ir linksmai praleisk dieną ar vakarą. Šį kartą pasidalinsiu kambario laikrodžio pagaminimo termometru instrukcijomis. Laikrodžių skaičiavimo centras bus Attiny85, surinktas ant lentos iš „Digispark“. Laikrodžio rodymas - Oled ekranas. Termometras - visiems gerai žinomas ds18b20. Dėl energijos mes paimame li-ion 18650 (juos galima gauti iš senos baterijos iš nešiojamojo kompiuterio). Ir pridėkite baterijos lygio ekraną. Kaip ir visuose mano ankstesniuose laikrodžiuose, mes išsiversime be RTC (realaus laiko laikrodžio) modulio.

Mes surenkame viską, kas būtina:

- „Digispark Attiny85“ („micro USB“ versija)
- ds18b20 (plastikiniame dėkle)
- Oled ekranas, kurio skiriamoji geba yra 128x64, I2C
- 2 vnt. 18650 baterijų arba sena Li-ion nešiojamojo kompiuterio baterija
- Rezistoriai (3,3 kΩ, 4,7 kΩ, 10 kΩ)
- Plonas plastikas (būstui)
- Įvairių spalvų jungiamieji laidai
- IPT programuotojas (arba bet kuris kitas) Arduino mokestis)
- Mygtukas
- „Dupont“ jungtys 2,54 mm „motina“, „tėvas“
- Kanceliarinis peilis, dvipusė juosta, elektrinė juosta, karštas lydinys
- Viskas litavimui (lituoklis, kanifolija, litavimas)

1 žingsnis.
Būsimas laikrodžio korpusas bus pagamintas iš plono plastiko. Tokio plastiko lakštą galite nusipirkti specializuotoje parduotuvėje arba užsisakyti aliexpress. Arba galite (nelaukti ir nežiūrėti) eiti į kanceliariją ir nusipirkti mėgstamos spalvos plastikinį popieriaus aplanką. Būsimo laikrodžio matmenys: plotis - 40 mm, storis - 30 mm, aukštis - 70 mm. Pagal žemiau pateiktą schemą iš plastiko išpjaustėme nuskaitymą:


Mes supjaustome išilgai storų linijų, švelniai sulenkite išilgai plonų linijų. Mes iškirpėme stačiakampį viduryje, naudodami kanceliarinį peilį, tai yra langas rodymui. Kaip rezultatas, mes gauname plastiko nuskaitymą:


Pravažiuojame Attiny.

2 žingsnis Attiny + Oled.
Kaip sakiau, mūsų širdyje naminis Tai bus „Attiny 85“. Geriausia įsigyti šį lustą, iškart prilipdytą prie plokštės kartu su įtampos reguliatoriumi ir dirželiais. „Digispark Attiny85“ puikiai tinka. Pasirinkite versiją su „micro-USB“ plokštėje. Kitos plokštės modifikacijos netiks dydžiui. Taip atsitinka, kad ši plokštė parduodama su jau užklijuotomis „Dupon“ „male“ jungtimis. Jei taip, sujunkite visas jungtis. Mes renkame spalvotus laidus. Mums reikia 10 centimetrų skirtingų spalvų. Juos lituokime Attiny ir užrašome, kuri viela, kuri išvada atitinka. Laidai P0 ir P2 turi būti sulieti dviem laidais. Antroji pora reikalinga ekranui „Oled“ prijungti. Mes gauname taip:


Ant laido parašiau tokią schemą:


Ekranas yra mažas (kad atitiktų valdiklį), tačiau jis atrodo gražiai. OLED (organinis šviesos diodas) yra grafinis ekranas. Nėra fono apšvietimo, o kiekvienas pikselis yra nepriklausomas šviesos diodas. Ekrano dydžiai - 0,96 colio.Skyra 128x64. Prijungta per I2C magistralę. Naudojami tik du laidai, kad būtų galima prisijungti prie „Attiny“. Jie būna skirtingų spalvų, pasirenka pagal savo skonį. Man patiko mėlyna su geltona juostele viršuje. Mes elgiamės panašiai kaip „Digispark“. Jei yra litavimo jungčių - lituokite jas. Lydmetalyje kol kas naudojami tik maitinimo laidai:


Lituokite atsargiai, nepažeiskite laido su lydmetaliu ekrane:


Mes sujungiame lentas naudodami dvipusę juostą:


Lydome „Digispark Attiny“ ir „Oled“ ekranus kartu pagal schemą (laidų spalvos gali skirtis, svarbiausia nesijausti išvadomis):


Patogumui ir užsakymui mes visus laidus surenkame kartu. Galite juos susukti elektrine juostele, kad nesusipainioti:


Visų laidų gale pritvirtiname „Dupont“ „motinos“ jungtį, įkišame ją į izoliatorius ir viską apvyniojame kartu su elektros juostele, kad padarytume jungtį. Mes taip pat įrašome jungties pradžią:


Pinoutas turėtų būti toks, nes ateityje prie jungties prijungsime laidą, skirtą programinės įrangos ar kitiems laikrodžio elementams.
Mes klijuojame gautą struktūrą į korpusą ir nepamirškite klijuoti paties korpuso, paliekant vieną klijuotę nepriklijuotą, tolimesnėms manipuliacijoms:


Klijuodami atkreipkite dėmesį, ar ekranas būtų lygus:


3 žingsnis Galia.
Galiai mes naudosime du ličio jonų elementus. Tipas 18650. Galite juos įsigyti atskirai. Tokiu atveju lygiagrečiai lituokite, izoliuokite ir išveskite jungtį, kad būtų galima prijungti ir vėliau krauti:


Daugelis turi senesnius nešiojamuosius kompiuterius. Ar jie nebedirba, ar dirba per laiką. Net jei nešiojamojo kompiuterio akumuliatorius jau yra blogas ir netinkamas naudoti pagal paskirtį, jį galima naudoti įvairiems namų gaminiams. Mūsų atveju - už laikrodį. Mes pasiimame akumuliatorių iš nešiojamojo kompiuterio:


Svarbiausia, kad jis būtų Li-ion. Mes atsargiai jį išardome, jums reikia atidaryti plastikinį dėklą, kad nepažeistumėte elemento viduje. Dažniausiai baterija yra padalinta į du elementus, sujungtus lygiagrečiai. Mes juos išimame ir atskiriame vieną porą nuo kitų:


Geriausia lituoti ant kontaktinių trinkelių:


Klijuokite šią porą ant laikrodžio užpakalinės dalies:


4 veiksmas. Baterijos įkrovos nustatymas.
Patogi laikrodžio funkcija yra nurodyti akumuliatoriaus įkrovą. Mes nustatysime įkrovos laipsnį pagal įtampą. Minimali šių akumuliatorių įtampa yra 2,4 V. Jos toliau negalima iškrauti. Didžiausia įtampa yra 4,2 V.

Įtampos matavimas analoginiame prievade visada yra susijęs su kokia nors kita įtampa. Negalime naudoti mikrovaldiklio AREF kaiščio, kuris skirtas nustatyti pamatinę įtampą. Taip pat neįmanoma išmatuoti įtampos maitinimo įtampos atžvilgiu (santykis visada bus tas pats). Todėl mes nustatysime įtampą, palyginti su vidine etalonine įtampa arba Vbg („Bandgap“ etalonine įtampa). Tai 1,1 V. Dabar turime apskaičiuoti savo akumuliatoriaus įtampos daliklį, kad esant maksimaliam įkrovimui (4,2 V) daliklis turėtų (1,1 V). Galite apskaičiuoti pagal formulę:



Arba naudokite

R1 nominalioji vertė yra 10 kOhm. Tada R2 gauname 3,55 KOhm, artimiausią iš standartinių 3,3 KOhm verčių, ir imkime. Matavimai atliekami tarp vidinės įtampos ir GND, todėl 3,3 KΩ varža yra lituojama iki minuso, o 10 KΩ - prie pliuso. Mes įdedame rezistorius ant akumuliatoriaus, mes pašaliname laidą iš daliklio.


Mes išskiriame visus kontaktus, kad išvengtume trumpo jungimo:


Viela iš daliklio bus sujungta su PB4.

5 žingsnis Išmatuokite temperatūrą.
Puikus laikrodžio papildymas yra kambario temperatūros matavimas. Mes naudosime integruotą temperatūros jutiklį DS18B20. Norint su ja dirbti, reikalinga tik viena viela (labai naudinga naudojant „Attiny 85“). Visus matavimus daro pats, centrinis valdiklis nesivargina (Attiny 85 taip pat turi puikią atmintį ir tiek mažai), mums reikia tik duoti komandas ir gauti rezultatus. Yra keletas skirtingų šio jutiklio prijungimo schemų, mes naudosime variantą, kuris, mano nuomone, yra optimalus šiuo atveju.Naudojant išorinę galią ir 4,7 kΩ varžą:


Lituokite mažus laidus ir pritvirtinkite jungtis


DQ jutiklio laidas prijungtas prie PB 3.

6 veiksmo mygtukas.
Turime nedaug išvadų, tačiau laikrodžiams yra daug reikalavimų. Laikui nustatyti naudosime vieną mygtuką. Mes negalime tikėtis daugiau. Lydyti laidus prie mygtuko, vieną kontaktą iš jo į GND. Derinkite su mūsų temperatūros jutikliu:


Antrasis mygtuko kontaktas yra prijungtas prie PB 1.

7 žingsnis. Parengimo aplinkos paruošimas
Tolesniam darbui su eskizu, taip pat jo redagavimui ir užpildymui reikalingas „Arduino IDE“. Atsisiųskite šią programą iš:

Dabar trečiadienį pridėkite „Attiny 85“ palaikymą. Atidarykite „Arduion IDE“ ir eikite šiuo keliu:
Failas - Nustatymai - „Papildomos plokštės tvarkyklės URL“ įterpkite nuorodą:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json


Spustelėkite Gerai.
Eiti į:
Įrankiai - Lenta - Lentų valdytojas įveskite Attiny ir paspauskite „Davido A. Mellis attiny“. Spustelėkite „Įdiegti“ ir palikite pilti kavos.
O dabar apie bibliotekas. Jiems reikia dviejų:

Norėdami dirbti su ekranu „Oled“

Temperatūros jutiklio valdymas

Atsisiuntę šiuos archyvus, išpakuokite juos į aplanką „bibliotekos“, kurį nesunku rasti einant Arduino IDE diegimo keliu.

8 žingsnis - programuotojas.
„Digispark Attiny 85“ yra puiki lenta. Skirta prisijungti prie USB kompiuterio. Ir per tai galima užprogramuoti. Tačiau Attiny naudoja programinę įrangą USB, kuri savo ruožtu užima 2 KB 8 KB atminties. Tai netinka mums, todėl „Attiny 85“ mirksėsime per IPT sąsają. Ir čia mums reikia IPT programuotojo. Jei jo nėra - nesvarbu. Paimkite Arduino. Mano atveju, Arduino UNO:


Iš „Arduino“ linijos galite pasiimti bet kurią kitą suderinamą lentą. Mes jungiamės prie kompiuterio, atidarome „Arduino IDE“, pasirenkame prievadą, prie kurio prijungta „Arduino“ plokštė, atidarykite pavyzdžių eskizą, „Arduino ISP“ ir užpildykite jį lentoje. Mums taip pat reikia laido, kad greitai prisijungtume prie „Attiny“.


Ryšys yra toks:

D11 - P0
D12 - P1
D13 - P2
D10 - P5

Nepamirškite apie „Attiny“ mitybą.

9 veiksmas Redaguokite ir užpildykite eskizą.

Atsisiųsti eskizą

Prieš užpildydami, turite redaguoti eskizą.
„Ds18b20“ integruotas jutiklis, kaip minėta anksčiau, veikia naudojant „One Wire“ protokolą. Kiekvienas jutiklis turi savo unikalų 64 bitų adresą. Turite rasti savo jutiklio adresą ir parašyti jį eskizu. Atidarykite „Arduino IDE“, eikite keliu:
Failas - pavyzdžiai - Dalaso temperatūra - „OneWireSearch“.

Užpildykite eskizą Arduino. Atidarykite uosto monitorių. Turėtumėte pamatyti visų prijungtų jutiklių adresus ir jų temperatūros rodmenis. Mes užrašome jūsų adresą. Atidarykite mano eskizą ir pakeiskite adresą savo eilute:

baitų adr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};


Norėdami koreguoti laikrodžio eigą, naudokite šią konstantą:

if (micros () - priešmikros & bt; [b] 497000 [/ b]) 


Kuo didesnė ši vertė, tuo lėtesnis laikrodis.
Valdymui ekrane rodomos sekundės:

„OzOled.printNumber“ ((ilgas) sek, 0, 7); // išvesties sekundės tiksliam derinimui 


Pakomentuokite šią eilutę, kad pašalintumėte sekundes.
Dabar mes prijungiame programuotoją arba Arduino kaip programuotoją, pasirenkame prievadą, meniu „Tools“ pasirinkite mūsų plokštę ir nustatome šiuos parametrus:
Valdyba: Attiny 25/45/85
Procesorius: Attiny 85
Laikrodis: vidinis 16
Tada tame pačiame meniu pasirinkite:
Įrankiai - Programuotojas - „Arduino as ISP“.
Ir galiausiai:
Eskizas - atsisiųskite per programuotoją

10 žingsnis Galutinis surinkimas ir paleidimas.
Išjunkite programuotoją ir prijunkite jutiklį, maitinimą ir mygtuką:


Kol nebus sukonfigūruotas tikslus laikrodžio kursas, dėklą galite uždaryti naudodami banko gumą. Baigę galite klijuoti.


Žiūrėti įvertinimas
Iš viso balsų: 13
10
10
10

Pridėti komentarą

    • šypsotisšypsosixaxagerainežiniaYahoonea
      viršininkassubraižytikvailystaiptaip-taipagresyvusslapta
      atsiprašaušoktišokis2šokis3atleiskpadėtigėrimai
      sustotidraugaigeraigerašvilpukassupyktiliežuvis
      rūkytiplojimaiklastingaspareikštiniokojantisdon-t_mentionatsisiųsti
      šilumanedrąsusjuoktis1mdasusitikimasmoskingneigiamas
      not_ipopkornasnubaustiskaitytigąsdintigąsdinapaieška
      gundytiačiūtaito_clueumnikūmussusitarti
      blogaibičiųjuoda akisblum3skaistalaipasigirtinuobodulys
      cenzūruotamalonumasslapta2grasintipergalęju„sun_bespectacled“
      šoktipagarbalolišlenktaslaukiamekrutojusya_za
      ya_dobryipagalbininkasne_huliganne_othodifludisuždraustiarti
9 komentarai
Autorius
Idėja yra puiki. Aš ką nors padariau dėl to. Tik man po ranka buvo 5 kΩ kintamasis. Aš įtraukiau jį į apatinį petį. Ir tada pakeistas tinkamiausiu nuolatiniu. Bet gamybos instrukcijose, manau, rašyti nereikia. Kodėl nepadarius šių matavimų keletą kartų.
Nemačiau reikalo rašyti apie varginančius ir ilgus išbandymus.
Nereikia nieko ilgai ir nuobodžiai daryti. Įjunkite rezistorių (2,7 ... 3) kOhm apatinėje svirtyje, paeiliui su ja 1 kOhm žoliapjovę. Iš reguliuojamo energijos šaltinio įvesties kraštines kontroliuojamos įtampos vertes įvedate, sureguliuojate veikimo tašką, tada, jei pageidaujate, galite išmatuoti žoliapjovės varžą ir pakeisti ją nuolatiniu rezistoriumi.
Autorius
8 MHz dažniu aš nemėginau paleisti laikrodžio ir atitinkamai išmatuoti kurso tikslumą. Visi matavimai buvo atlikti 16 iš vidaus. Negaliu pasakyti ir apie mėnesį. Iki šiol neišjungę, jie dirbo daugiausia savaitę. Eksperimentai ir patobulinimai vis dar vyksta.
Autorius
Kalbant apie įtampos daliklį, yra tikrai nemažai niuansų ir klaidų. O rezistorių pasipriešinimo ir atskaitos įtampos sklaida. Viską išbandžiau praktiškai. Naudojant 3,6 kΩ rezistorių, net esant 3,9 V akumuliatoriaus įtampai, „Attiny“ analoginis prievadas rodo 1023 (perskaičiavus į 100% procentų). Naudojant 3,3 kΩ rezistorių, analoginio prievado vertė sumažėja net esant 4,1 V akumuliatoriui. Todėl rašiau, kad parodymai gaunami tiksliau, tiesiog nemačiau reikalo rašyti apie nuobodžius ir ilgus išbandymus.
Autorius
Aš nustatiau savaitės laikrodį, koreguodavau jo eigą kiekvieną dieną ar dažniau. Dėl to 497343 vertės jie per savaitę bėga maždaug 10 sekundžių.
Dažnį galima sumažinti. Nekeičiau parametro, nebuvo reikalo
Na, o koks yra 8 MHz RC-laikrodžio tikslumas? Per mėnesį?
ir kodėl Laikrodis: vidinis 16?
Geriau pasirinkti mažiau, tada rodmenys yra tikslesni.
Ne tiksliau, bet tiesiog įėjimo įtampa turėtų būti mažesnė už pamatinę. Be to, samprotaudami jūs visiškai neatsižvelgiate į parametrų sklaidą: rezistoriai, greičiausiai, turėsite penkis procentus, Vbg = (1,0 ... 1,2) V. Taigi 3,3 kOhm gali būti per didelis, o gal padarys 3,6 kOhms.
Autorius
Jei naudosite 3.6 išėjimo įtampą, gausime 1,11. Nors ne daug, bet daugiau pamatinės įtampos. Kai naudojate 3.3 - 1.04. Geriau pasirinkti mažiau, tada rodmenys yra tikslesni.
O kalbant apie O, tu teisus, aš tiesiog nekreipiau dėmesio į šią nedidelę detalę.
Priklijavus dėklą, prie laikrodžio apačios galima patekti į įkrovimo lizdą ir mygtukus, nupjaunant apatinį dangtelį arba tiesiog jo neužklijuojant.
Tada R2 gauname 3,55 KOhm, artimiausią iš standartinių 3,3 KOhm verčių,
Visai ne. Artimiausias standartiniame E24 diapazone yra 3,6 kOhm. Ir, beje, ne „KOhm“, o „KOhm“.
Kol nebus sukonfigūruotas tikslus laikrodžio kursas, dėklą galite uždaryti naudodami banko gumą. Baigę galite klijuoti.
Kaip įkrausime akumuliatorių?
O kaip manipuliuoti mygtuku?

Mes patariame perskaityti:

Perduokite jį išmaniajam telefonui ...