» elektronik » Arduino »Arduino ur med temperatursensor og uden RTS

Arduino ur med temperatursensor og uden RTS

Arduino ur med temperatursensor og uden RTS

God eftermiddag, i dag deler jeg instruktioner om, hvordan man laver et ur med et rumtermometer. Uret kører Arduino UNO, WG12864B grafisk skærm bruges til at vise tid og temperatur. Som temperatursensor - ds18b20. I modsætning til de fleste andre ure vil jeg ikke bruge RTS (Real Time Clock), men prøver at undvære dette ekstra modul.

Til dette hjemmelavet Følgende komponenter kræves:
- Arduino UNO (Eller ethvert andet Arduino-kompatibelt bord)
- Grafisk skærm WG12864B
- ds18b20 temperatursensor
- Modstand 4.7 Kom 0,25 W
- Modstand 100 ohm 0,25 W
- Batterirum til 4 AA-batterier “finger-type”
- Egnet kasse
- Lille fil
- Neglelak (sort eller kropsfarve)
- Lidt tynd plast eller pap
- elektrisk bånd
- tilslutning af ledninger
- kredsløbskort
- Knapper
- loddejern
- Lodde, kolofonium
- Dobbeltsidet bånd

Trin 1 Klargøring af kabinettet.
Så vores ure skal være placeret et sted. Du skal finde en passende kasse. Det vigtigste er, at WG12864B-skærmen, Arduino og et lille kredsløbskort til knapper passer ind i det. Den minimale kassestørrelse er 7 x 7 x 10 cm. Hvis du bruger et lille Arduino-bræt, kan du skubbe det ind i en kasse og mindre, men jeg vil beskrive processen ved hjælp af eksemplet med Arduino UNO. Materialet, som kassen er lavet af, er fortrinsvis plast, hvis det som min er jern, er det værd at passe på isoleringen, så der ikke er noget at "gå rundt" indeni. Plast foretrækkes, fordi det er lettere at skære. Med en kasse er han tilfældet med vores ure, besluttede. Nu er det nødvendigt at skære et vindue under skærmen på 6,5 x 4 cm. Hvis æsken er af jern, er det ekstremt vanskeligt at gøre det omhyggeligt. Uanset hvordan du prøver, vil der være spånet maling og ruhed i nærheden af ​​udskæringen. Derfor skærer vi det først ud, for dette kan du bruge "slibemaskinen", en boremaskine med en dyse til skæring eller en fræsemaskine, generelt efter eget valg, med det, der er ved hånden. Derefter renser vi kanterne med en fil. Vi maler al spånet maling med neglelak, passende farve. Resultatet skal være følgende:


Trin 2 Forbered grafikskærmen.
Ved tilslutningen af ​​skærmen opstår der ved første øjekast mange problemer og vanskeligheder. Men hvis du først behandler deres typer, bliver det meget lettere og mere forståeligt. Der er mange variationer og typer af skærme på ks0107 / ks0108-controlleren.Alle skærme er normalt opdelt i 4 typer:
Valgmulighed A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Option B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ-skærme AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J86, Q, Q
Valgmulighed C: Shenzhen Jinghua Displays Co Ltd. JM12864
Valg D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202

Listen er ikke komplet, der er mange af dem. Den mest almindelige og efter min mening praktiske WG12864B3 V2.0. Displayet kan tilsluttes Arduino via en seriel eller parallel port. Når det bruges sammen med Arduino UNO, er det bedre at vælge en seriel portforbindelse - så har vi kun brug for 3 udgange fra mikrokontrolleren i stedet for mindst 13 linjer, når de er tilsluttet via en parallel port. Alt er forbundet ganske enkelt. Der er endnu en nuance, to typer skærme findes på salg med et indbygget potentiometer (til justering af kontrast) og uden det. Jeg har valgt, og jeg råder dig til at gøre det samme med den indbyggede.


Dette reducerer antallet af dele og lodningstiden. Det er også værd at sætte en strømbegrænsende modstand på 100 ohm til baggrundsbelysningen. Ved at tilslutte 5 volt direkte er der risiko for at brænde baggrundslyset.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - gennem modstanden - + 5V
20 (BLK) - GND

Den mest praktiske ting er at samle alt bag skærmen og udsende 5 ledninger fra det for at oprette forbindelse til Arduino UNO. Resultatet skal være noget som dette:


For dem, der stadig vælger en parallel forbindelse, giver jeg en forbindelsestabel.


Og layoutet til skærmbilleder B:


Trin 3 Tilslut temperatursensoren.
Som jeg sagde, vil vi bruge den DS18B20 integrerede sensor til at måle temperatur. Jeg valgte det på grund af sin høje målenøjagtighed, fejlen er ikke mere end 0,5 ° C. Sensoren er kalibreret på fremstillingstidspunktet; der kræves ingen yderligere indstillinger. Temperaturmåleområde -55 ... + 125 ° C Der er to driftsformer: med en ekstern strømkilde og “falsk strøm”. Når du arbejder i ekstern strømtilstand, er forbindelsen som følger:


Ved brug af "falsk strøm" modtager sensoren strøm fra kommunikationslinien. I denne tilstand er to ledninger tilstrækkelige til at forbinde ds18b20 til mikrokontrolleren. Sensorens interne kondensator oplades på grund af energi på kommunikationslinjen på et lavt niveau på bussen. Tilstanden "parasitær ernæring" har mange funktioner, og derfor anbefaler jeg ikke at bruge den. Men hvis du stadig beslutter at bruge det, her er diagrammet:


Eller du kan bruge et forbedret ledningsdiagram, når du bruger "falsk strøm":


Flere sensorer kan være inkluderet på en kommunikationslinje. For vores ure er en nok. Vi forbinder ledningen fra “DQ” ds18b20-stiften til “pin 5” Arduino UNO.

Trin 4 Forberedelse af et bord med knapper.
For at indstille tid og dato på uret bruger vi tre knapper. Lodret de tre knapper på kredsløbskortet og tråd det ud.


Vi forbinder som følger: ledningen, der er fælles for alle tre knapper, er tilsluttet “GND” Arduino. Den første knap, den tjener til at gå ind i tidsindstillingsmodus og skifte over tid og dato, forbind til "Pin 2". Den anden, knappen for at øge værdien, er til "Pin 3", og den tredje, knappen for at reducere værdien, er til "Pin 4".

Trin 5 Sæt det hele sammen.
For at undgå kortslutning skal du isolere skærmen. I en cirkel pakkes vi med tape, og på bagsiden fastgør vi til et dobbeltsidet bånd, skåret i størrelse, en strimmel isoleringsmateriale. Tykt pap eller tynd plast er velegnet. Jeg brugte plast fra en papirtablet. Det viste sig følgende:


På fronten af ​​skærmen langs kanten limer vi et dobbeltsidet bånd på skumbasis, helst sort.


Vi forbinder skærmen til Arduino:


Derudover forbinder vi fra batterirummet til “VIN” Arduino minus til “GND”. Vi placerer det bag Arduino. Før du installerer i etuiet, skal du ikke glemme at tilslutte temperatursensoren og kortet med knapper.


Trin 6 Forbered og udfyld skitsen.
En temperatursensor har brug for OneWire-biblioteket.
onewire.rar [16,75 Kb] (downloads: 154)


Outputet til skærmen er gennem U8glib-biblioteket:
u8glib.rar [906,95 Kb] (downloads: 156)


For at redigere og udfylde skitsen skal du installere disse to biblioteker. Der er to måder at gøre dette på. Du skal bare pakke ud disse arkiver og placere de udpakkede filer i mappen "biblioteker", der findes i mappen med Arduino IDE installeret.Eller den anden mulighed er at installere biblioteket direkte i programmeringsmiljøet. Uden at pakke de downloadede arkiver ud, vælg menuen Sketch - Connect Library i Arduino IDE. Øverst på rullelisten skal du vælge emnet "Tilføj .Zip-bibliotek". I det dialogboks, der vises, skal du vælge det bibliotek, du vil tilføje. Åbn menuen Sketch - Connect Library igen. Helt nederst på rullelisten skal du se et nyt bibliotek. Nu kan biblioteket bruges i programmer. Glem ikke at genstarte Arduino IDE efter alt dette.

Temperatursensoren fungerer i henhold til One Wire-protokollen og har en unik adresse til hver enhed - en 64-bit-kode. Hver gang at kigge efter denne kode er upraktisk. Derfor skal du først tilslutte sensoren til Arduino, udfyld skitsen i filen - Eksempler - Dallas-temperatur - OneWireSearch-menuen. Kør derefter Værktøjer - Portmonitor. Arduino skal finde vores sensor, skrive sin adresse og aktuelle temperaturmålinger. Vi kopierer eller blot nedskriver adressen på vores sensor. Åbn skitsen Arduino_WG12864B_Term, se efter linjen:

byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adresse på min sensor 


Vi skriver adressen på din sensor mellem seler og erstatter adressen på min sensor.

Foto:

//u8g.setPrintPos (44, 64); u8g.print (sek); // Udskriv sekunder for at kontrollere kursets korrekthed


Viser sekunder ved siden af ​​“Data”. Dette er nødvendigt for at indstille tidsforløbet nøjagtigt.
Hvis uret har travlt eller hænger, skal du ændre værdien i linjen:

hvis (mikros () - prevmicros> 494000) {// ændring til en anden til justering var 500000


Jeg bestemte eksperimentelt det antal, hvor uret går ganske præcist. Hvis dit ur har travlt, skal du øge dette antal; hvis jeg står bag, skal du mindske det. At bestemme kursens nøjagtighed og har brug for en konklusion sekunder. Efter nøjagtigt kalibrering af antallet kan sekunder kommenteres og dermed fjernes fra skærmen.

Udfyld skitsen.
arduino_wg12864b_term.rar [3.64 Kb] (downloads: 314)

7
9
5.3

Tilføj en kommentar

    • smilesmilxaxaokdontknowyahoonea
      bossscratchnarrejaja-jaaggressivhemmelighed
      undskylddansdance2dance3benådninghjælpdrikkevarer
      stop-vennergodgoodgoodfløjtedånetunge
      røgklappecrayerklærerspottendedon-t_mentiondownloade
      hedeirefullaugh1mdamødemoskingnegativ
      not_ipopcornstraffelæseskræmmeforskrækkelsersøg
      hånethank_youdetteto_clueumnikakutenig
      dårligbeeeblack_eyeblum3blushpralekedsomhed
      censureretpleasantrysecret2truesejryusun_bespectacled
      SHOKRespektlolprevedvelkommenkrutoyya_za
      ya_dobryihjælperenne_huliganne_othodiFludforbudtæt

Vi råder dig til at læse:

Giv den til smartphonen ...