Populārākas Posts

Redaktora Izvēle - 2020

Arduino pulkstenis ar temperatūras sensoru un bez RTS


Labdien, šodien es dalīšos ar norādījumiem, kā padarīt pulksteni ar istabas termometru. Pulkstenis darbojas Arduino UNO, laika un temperatūras parādīšanai tiek izmantots WG12864B grafiskais ekrāns. Kā temperatūras sensors - ds18b20. Atšķirībā no vairuma citu pulksteņu, es neizmantošu RTS (Real Time Clock), bet mēģinu iztikt bez šī papildu moduļa.
Šim pašmāju izstrādājumam nepieciešami šādi komponenti:
- Arduino UNO (vai jebkura cita Arduino saderīga tāfele)
- Grafiskais ekrāns WG12864B
- temperatūras sensors ds18b20
- Rezistors 4,7 Kom 0,25 W
- rezistors 100 omi 0,25 W
- Bateriju nodalījums četrām AA tipa baterijām "pirksta tipa"
- piemērota kaste
- mazs fails
- nagu laka (melna vai krāsas gadījumā)
- Nedaudz plānas plastmasas vai kartona
- elektriskā lente
- savienojošie vadi
- shēmas plate
- pogas
- lodāmurs
- Lodēt, kolofonija
- abpusēja lente
1. darbība Korpusa sagatavošana.
Tātad mūsu pulksteņiem vajadzētu atrasties kaut kur. Jums jāatrod pareizā rūtiņa. Galvenais, lai tajā ietilptu WG12864B ekrāns, Arduino un neliela pogu shēma. Minimālais kastes izmērs ir 7 x 7 x 10 cm .Ja jūs izmantojat nelielu Arduino dēli, varat to ievietot kastē un mazāku, bet es aprakstīšu procesu, izmantojot Arduino UNO piemēru. Materiāls, no kura tiek izgatavota kaste, vēlams ir plastmasa, ja, tāpat kā mans, tas ir dzelzs, ir vērts parūpēties par izolāciju, lai iekšpusē nebūtu ko “apkārt”. Vēlama ir plastmasa, jo to ir vieglāk sagriezt. Ar kastīti viņš ir mūsu pulksteņu lieta, nolēma. Zem ekrāna ir jāizgriež logs, kura izmērs ir 6,5x4 cm. Ja kaste ir dzelzs, to ir ārkārtīgi grūti izdarīt uzmanīgi. Neatkarīgi no tā, kā jūs mēģināt, griezuma tuvumā būs šķembu krāsa un raupjums. Tāpēc vispirms mēs to izgriezām, šim nolūkam jūs varat izmantot "dzirnaviņas", urbjmašīnu ar griešanas sprauslu vai dzirnavas, pēc jūsu izvēles, ar to, kas ir pa rokai. Pēc tam mēs notīra malas ar failu. Visu šķeldošo krāsu nokrāsojam ar piemērotu krāsu ar nagu laku. Rezultātam jābūt šādam:

2. solis Sagatavojiet grafisko ekrānu.
Ar ekrāna savienojumu, no pirmā acu uzmetiena, rodas daudz problēmu un grūtību. Bet, ja jūs vispirms tiksit galā ar viņu veidiem, tas kļūs daudz vieglāk un saprotamāk. Kontrolierīcē ks0107 / ks0108 ir daudz dažādu ekrānu variantu un veidu. Visi ekrāni parasti tiek sadalīti 4 veidos:
A variants: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
B variants: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displeji AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464JF, Digitron Q1286464JF, Digitron Q1286464JF.
C variants: Shenzhen Jinghua Displays Co Ltd. Jm12864
D variants: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Saraksts nav pilnīgs, to ir daudz. Visizplatītākais un, manuprāt, ērtākais WG12864B3 V2.0. Displeju var savienot ar Arduino, izmantojot seriālo vai paralēlo portu. Lietojot kopā ar Arduino UNO, labāk izvēlēties seriālā porta savienojumu - tad mums ir nepieciešami tikai 3 mikrokontrollera izejas, nevis vismaz 13 līnijas, ja tās ir savienotas caur paralēlu portu. Viss ir saistīts diezgan vienkārši. Ir vēl viena nianse, pārdošanā ir atrodamas divas displeju versijas ar iebūvētu potenciometru (kontrasta pielāgošanai) un bez tā. Es izvēlējos, un iesaku jums darīt to pašu, izmantojot iebūvēto.

Tas samazina detaļu skaitu un lodēšanas laiku. Fona apgaismojumam ir vērts ievietot arī pašreizējo ierobežojošo pretestību 100 omi. Tieši savienojot 5 voltus, pastāv risks sadedzināt fona apgaismojumu.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5 V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - caur rezistoru - + 5V
20 (BLK) - GND
Visērtākais ir savākt visu aiz ekrāna un no tā iegūt 5 vadus, lai izveidotu savienojumu ar Arduino UNO. Rezultātam vajadzētu būt kaut kam līdzīgam:

Tiem, kas joprojām izvēlas paralēlu savienojumu, es sniegšu savienojuma tabulu.

Un B varianta ekrānu izkārtojums:

3. solis Pievienojiet temperatūras sensoru.
Kā jau teicu, temperatūras mērīšanai izmantosim DS18B20 integrēto sensoru. Es to izvēlējos ar augstu mērījumu precizitāti, kļūda nepārsniedz 0,5 ° C. Sensors ražošanas laikā ir kalibrēts; nav nepieciešami nekādi papildu iestatījumi. Temperatūras mērīšanas diapazons -55 ... + 125 ° C. Ir divi darbības režīmi: ar ārēju enerģijas avotu un "neīstu jaudu". Darbojoties ārējā enerģijas režīmā, savienojums ir šāds:

Izmantojot “neīsto jaudu”, sensors saņem enerģiju no sakaru līnijas. Šajā režīmā pietiek ar diviem vadiem, lai savienotu ds18b20 ar mikrokontrolleri. Sensora iekšējais kondensators tiek uzlādēts enerģijas dēļ sakaru līnijā zemā līmenī autobusā. Režīmam "parazītu enerģija" ir daudz funkciju, un tāpēc es to neiesaku izmantot. Bet, ja jūs joprojām nolemjat to izmantot, šeit ir diagramma:

Vai arī, izmantojot “neīsto jaudu”, varat izmantot uzlabotu vadu shēmu:

Vienā sakaru līnijā var iekļaut vairākus sensorus. Mūsu pulksteņiem pietiek ar vienu. Mēs savienojam vadu no "DQ" ds18b20 tapas līdz "5. tapas" Arduino UNO.
4. solis Tāfeles sagatavošana ar pogām.
Lai pulksteņa laikā iestatītu laiku un datumu, mēs izmantosim trīs pogas. Ērtības labad pielodējiet trīs pogas uz plates un atvienojiet to.

Mēs savienojam šādi: visām trim pogām kopīgais vads ir savienots ar Arduino "GND". Pirmā poga ir paredzēta laika iestatīšanas režīma pārslēgšanai un laika un datuma pārslēgšanai. Otrā, poga vērtības palielināšanai, ir uz "Pin 3", un trešā, poga vērtības samazināšanai, ir uz "Pin 4".
5. solis to visu saliekot kopā.
Lai izvairītos no īssavienojuma, izolējiet ekrānu. Apli mēs iesaiņojam ar elektrisko lenti, un aizmugurē mēs piestiprinām pie divpusējas lentes, sagrieztas pēc izmēra, ar izolācijas materiāla sloksni. Piemērots ir biezs kartons vai plāna plastmasa. No papīra planšetes izmantoju plastmasu. Izrādījās šādi:

Ekrāna priekšpusē gar malu mēs līmējam divpusēju lenti uz putu pamata, vēlams melnu.

Mēs savienojam ekrānu ar Arduino:

Turklāt no akumulatora nodalījuma pievienojiet Arduino "VIN", atskaitot "GND". Mēs to novietojam aiz Arduino. Pirms uzstādīšanas korpusā, neaizmirstiet savienot temperatūras sensoru un dēli ar pogām.

6. solis Sagatavojiet un aizpildiet skici.
Temperatūras sensoram nepieciešama OneWire bibliotēka.
onewire.rar 16,75 Kb (lejupielādes: 128)

Izeja uz ekrānu notiek caur U8glib bibliotēku:
u8glib.rar 906.95 Kb (lejupielādes: 128)

Lai rediģētu un aizpildītu skici, instalējiet šīs divas bibliotēkas. To var izdarīt divos veidos. Vienkārši izsaiņojiet šos arhīvus un ielieciet neizpakotos failus mapē “bibliotēkas”, kas atrodas mapē ar instalētu Arduino IDE. Vai arī otrā iespēja ir instalēt bibliotēku tieši programmēšanas vidē. Neizsaiņojot lejupielādētos arhīvus, Arduino IDE atlasiet izvēlni Sketch - Connect Library. Nolaižamā saraksta pašā augšdaļā atlasiet vienumu “Pievienot. Zip bibliotēka”. Parādītajā dialoglodziņā atlasiet bibliotēku, kuru vēlaties pievienot. Atkal atveriet izvēlni Sketch - Connect Library. Nolaižamā saraksta pašā apakšā jums vajadzētu redzēt jaunu bibliotēku. Tagad bibliotēku var izmantot programmās. Pēc visa tā neaizmirstiet atsāknēt Arduino IDE.
Temperatūras sensors darbojas saskaņā ar vienas stieples protokolu, un katrai ierīcei ir unikāla adrese - 64 bitu kods. Katru reizi šī koda meklēšana ir nepraktiska. Tāpēc vispirms jums sensors jāpieslēdz Arduino, jāaizpilda skice, kas atrodas izvēlnē Fails - Piemēri - Dalasas temperatūra - OneWireSearch. Pēc tam palaidiet Rīki - Port Monitor. Arduino vajadzētu atrast mūsu sensoru, uzrakstīt tā adresi un pašreizējos temperatūras rādījumus. Mēs kopējam vai vienkārši pierakstām sava sensora adresi. Atveriet skici Arduino_WG12864B_Term, meklējiet līniju:
baitu addr8 = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // mana sensora adrese

Mēs pierakstām jūsu sensora adresi starp lencēm, aizstājot mana sensora adresi.
Krājums:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Drukājiet sekundes, lai pārbaudītu kursa pareizību

Parāda sekundes blakus “Data”. Tas ir nepieciešams, lai precīzi noteiktu laika gaitu.
Ja pulkstenis steidzas vai kavējas, jums jāmaina līnijas vērtība:
if (micros () - prevmicros> 494000) {// mainīšana uz citu pielāgošanai bija 500000

Es eksperimentāli diezgan precīzi noteicu numuru, pie kura pulkstenis iet. Ja pulkstenis steidzas, jums tas jāpalielina; ja atpaliek, samaziniet to. Lai noteiktu kursa precizitāti un vajadzīgas secinājumu sekundes. Pēc precīza skaitļa kalibrēšanas sekundes var komentēt un tādējādi noņemt no ekrāna.
Aizpildiet skici.
arduino_wg12864b_term.rar 3,64 Kb (lejupielādes: 263)

Noskatieties video: Clock Shield для Arduino, собери себе часы, пятничный DIY (Marts 2020).

Atstājiet Savu Komentāru