Termometer for måling av høye temperaturer på en mikrokontroller. Elektronisk termometer med trådløs sensor

God dag, kjære lesere. Som tittelen på artikkelen antyder, vil vi snakke om et termometer satt sammen på en PIC. Så. Hvorfor og hvordan startet det hele?!
Jeg trengte et diagram over et enkelt termometer for garasjekjelleren. Jeg begynte å se etter et passende opplegg på Internett. Et viktig kriterium var bruken av et minimum antall elementer i kretsen. Jeg vil si med en gang at det er massevis av slike termometerkretser på nettet. Men! Oftest er de laget på AVR-er som jeg, til min dypeste anger, ikke er venner med. Så jeg begynte å se etter en PIC-krets. Men også her ble jeg skuffet. Det er skjemaer for PIC-termometre. Men de bruker enten transistorer for indikatorer, eller ekstern kvarts, eller noe annet som kompliserte kretsen og var uakseptabelt i mitt tilfelle. Til slutt, etter et langt søk, ble et opplegg som passet meg funnet her:

http://www.labkit.ru/html/show_meter?id=38
Og det ble vellykket gjentatt flere ganger. Alt fungerer utmerket. (på nettstedet til forfatteren av denne kretsen er det både fastvare og et trykt kretskort for å kopiere dette termometeret). Ettersom tiden gikk. Og en fin gang ble manglene ved denne kretsen først tydelige, og jeg trengte også å bruke en indikator med en felles katode (på forfatterens nettsted var fastvaren kun for Common Anode). Nå om mangelen på ordningen i originalkilden. I utgangspunktet har ikke forfatterens krets en pull-up-motstand for temperatursensoren. Det vil si at det ikke er noen 4,7K motstand i kretsen. Ja, faktisk, med denne utformingen av kretsen kan termometeret fungere, men bare hvis temperatursensoren er loddet direkte inn i brettet, eller lengden på ledningen som sensoren er plassert på bør ikke overstige en ledningslengde på en meter , halvannen meter. Ikke mer. Ellers begynner indikatoren å vise noe tull, ikke temperatur.
Denne hendelsesforløpet gjorde meg ikke glad i det hele tatt. Fordi jeg trengte at lengden på ledningen med sensoren skulle være minst 10 meter.
Dette problemet ble løst veldig enkelt og raskt, nemlig ved å installere en 4,7K pull-up motstand på sensoren. Deretter begynte sensoren å fungere stabilt for alle ledningslengder. Men hva om jeg bare har indikatorer med felles katode! Og fastvaren ble laget for anoden... Det var her Stanislav Dmitriev hjalp meg. Noe jeg takker ham så mye for. Han skrev ikke bare fastvaren for den vanlige anoden. Men også for en felles katode og for ulike typer temperatursensorer (DS18S20 eller DS18B20). Dette gjorde det mulig å forene denne ordningen ytterligere. Og anbefaler det for repetisjon. Det er også mulig å bruke både fire-bit syv-segment og tre-bit syv-segment enheter i kretsen. Noe som ikke er en stor ting, men likevel et pluss.
Nå selve kretsen

Som du kan se, er diagrammet ikke forskjellig fra det som er presentert på nettstedet http://www.labkit.ru
Slik var det opprinnelig ment. Den eneste endringen i kretsen er installasjonen av en ekstra motstand. Jeg tegnet ikke diagrammet på nytt fra bunnen av. Jeg har nettopp lagt til det manglende elementet i kretsen. I hovedsak, hvis du ønsker å forenkle kretsen enda mer og du har en stabil 5V strømkilde, kan du ekskludere den lineære stabilisatoren fra kretsen. Og strøm til MK direkte fra 5V.
La oss nå snakke litt om hvordan du tilpasser fastvaren selv for indikatoren eller sensoren du trenger. Alt er enkelt her.

Etter å ha lastet fastvarefilen inn i programmereren, kan du selv: basert på hva du trenger og se på dette skjermbildet, skrive parametrene du trenger inn i fastvarefilen i EPROM-delen. Deretter kan du blinke kontrolleren.

I min versjon av kretskortet gir kortet plass ikke bare for en lineær stabilisator, men også til en diodebro (som vil gjøre at kretsen kan drives med spenning fra 7,5V til 12V. Kortet gir også plass til montering en rekkeklemme, som gjør at du ikke kan lodde inn en temperatursensor inn i brettet, og klemme den med klemmer. Dette er praktisk når du bytter sensor, eller når du installerer sensoren på en lang ledning. Gjør at du raskt kan bytte ledningen.

Bordtegning

Som du kan se, er termometeret satt sammen på to brett. Den ene er utstyrt med en syv-segmentindikator (tre eller fire sifre). Alle andre elementer i kretsen er installert på det andre kortet. Platene er koblet til hverandre ved hjelp av en kam, eller, i mitt tilfelle, med ledninger.
På slutten er et bilde av det ferdige termometeret mitt.

På en eller annen måte fanget en Nokia 3310-telefon meg - barnebarnet mitt løp rundt og lekte med den, naturlig nok hadde den ikke fungert på lenge. Og så husket jeg at jeg et sted så diagrammer for en visning fra ham. Jeg googlet det og kom opp med flere lenker til enheter, jeg likte termometeret, etter å ha rotet gjennom boksene fant jeg en DS18B20 temperatursensor, så jeg bestemte meg for å sette den sammen i henhold til dette diagrammet, spesielt siden det inneholder et minimum av deler. LCD-skjermen støtter to driftsmoduser: normal (på lys bakgrunn) og motsatt (på mørk bakgrunn). Du kan endre modus ved hjelp av jumper JP1. Nedenfor ser vi på selve termometerkretsen på PIC12F629 mikrokontrolleren:

Tekniske parametere for enheten:

* Spenning ................... 3 - 3,3 V
* Min. trinn temp............ 0,1 "C
* Nøyaktighet......+/- 0,5 "C Temp.
* Oppdateres hver... 1,2 sek.
* Strømstyrke ............... 0,2 mA - 0,8 mA
* Målt temperaturområde... fra -55 til 125°C

La oss begynne å montere, først fjernet jeg skjermen forsiktig, jeg kastet ikke glasset, jeg bestemte meg for å tilpasse det også.


Jeg har etset tavla, i arkivet er det en tegning for LUT-teknologi. Jeg flashet den og bare loddet den. kan lastes ned her. Først koblet jeg til sensoren via en kontakt, men noen ganger slo den seg av, så jeg bare loddet den.


Det vanskeligste var å lodde ledningene til skjermen, det tok omtrent 2 timer, først brukte jeg en 40-pinners datakabel - det var veldig vanskelig og upraktisk, så jeg forlot den og tok en 80-pinners kabel, løste den opp , og alt ordnet seg på 5 minutter. Jeg skrudde på strømmen og... termometeret begynte å virke.



Etter litt manipulasjon med bor og fil fikk jeg dette vinduet.


Alt som gjenstår er å fikse det originale glasset der, ikke engang glass, men plast, men med egenskapen til forstørrelse. Deretter gjør vi punktsveising med en silikonpistol - det viktigste her er å ikke overopphete skjermen. Siden det ikke var noe 3,6 volt batteri, installerte jeg tre svake batterier foreløpig, de gir også 3,3 volt. Jeg skal installere et batteri over tid.


Og her er hele termometeret satt sammen på mikrokontrolleren:


Den fungerer uten feil og måler temperatur med nøyaktighet som ikke er dårligere enn industrielle motstykker. Derfor kan denne ordningen trygt anbefales for repetisjon. Forfatter av artikkelen: Ear.


Dette er et vanlig digitalt termometer; det er mange lignende enheter på Internett. Grunnlaget er en mikrokontroller PIC16F628A og en digital temperatursensor DS18S20 (DS18B20). Grønne 3-sifrede LED-indikatorer brukes som indikatorer. Indikasjonen er dynamisk. Termometeret fungerer over hele temperaturområdet til DS18S20-sensoren, dvs. fra -55 til +125 grader.

Termometeret er satt sammen på et trykt kretskort, sammen med en indikator. Sensor og strøm kobles separat. Hvis sensoren ikke er tilkoblet, vises bokstaven E (Feil) på indikatoren. Denne enheten har ingen spesielle funksjoner. Diode VD1 tjener til å beskytte mot polaritetsreversering av strømkilden.

Enheten kan fungere med både DS18B20-sensoren og DS1820(DS18S20)-sensoren. Hver sensor bruker sin egen mikrokontroller-fastvare. Nedenfor er en versjon av dette termometeret med en diodebro og en 7805 stabilisator allerede installert på kretskortet, dvs. For å drive denne enheten kobler du bare den sekundære viklingen til transformatoren til strømkontakten. I tillegg har dette kortet en LED som blinker kort når mikrokontrolleren poller temperatursensoren. LED-en kobles mellom pinne RB3 (pin 9) og jord, naturligvis med en motstand. Fraværet av en LED på brettet vil ikke påvirke driften av termometeret på noen måte.

Enheten kan enkelt plasseres i hvilken som helst plastboks av passende størrelse. Jeg plasserte den i strømforsyningshuset (adapter) sammen med en transformator. De. Kun kontakten for DS18B20-sensoren kommer ut av esken, og selve huset settes inn i et 220V-nettverk.



Fil:
Størrelse:
Innhold:

sm_termo.rar
38,3 KB
Tegninger av tavler (LAY) og mikrokontroller firmware.

Figuren viser et diagram av et termometer basert på mikrokontrolleren PIC16F628A; en DS18B20 digital temperatursensor brukes som sensor. Termometerindikatoren består av en 4-sifret syv-segmentindikator. Målt temperaturområde fra-55 til + 125 grader Celsius. Temperaturen avleses hvert 15. sekund, lesetiden kan endres i koden.

Termometerets forsyningsspenning er 5V, strømforbruk er 90 mA. Kretsen bruker BC337 eller lignende transistorer. Strømforbruket til hvert indikatorsegment er 15 mA (dynamisk indikasjon), som er begrenset av 220 Ohm motstander (indikator med felles katode).

Firmware-fil -

DS18B20 digitalt termometer med programmerbar oppløsning, fra 9 til 12-bit, som kan lagres i enhetens EEPROM-minne. DS18B20 utveksler data via en 1-leder buss og kan enten være den eneste enheten på linjen eller jobbe i en gruppe. Alle prosesser på bussen styres av en sentral mikroprosessor.

Måleområde fra –55°C til +125°C og nøyaktighet på 0,5°C i området fra –10°C til +85°C. I tillegg kan DS18B20 drives av datalinjespenning ("parasittkraft") i fravær av en ekstern spenningskilde.
Hver DS18B20 har en unik 64-bits seriell kode som lar den kommunisere med flere DS18B20-sensorer installert på samme buss. Dette prinsippet gjør at én mikroprosessor kan brukes til å kontrollere mange DS18B20-sensorer fordelt over et stort område. Applikasjoner som kan dra nytte av denne funksjonen inkluderer temperaturkontrollsystemer i bygninger, utstyr eller maskineri, samt overvåking og kontroll av temperaturprosesser.

  • Lignende artikler

Logg inn med:

Tilfeldige artikler

  • 10.10.2014

    Figuren viser en krets av en forforsterker med en klangblokk; klangblokken er inkludert i tilbakekoblingskretsen til forforsterkeren. Forsyningsspenningen til enheten kan variere fra 12 til 24V, strømforbruket er ikke mer enn 10 mA. Inngangssignalet kommer gjennom koblingskondensatoren C1, motstandene R1 og R2 bestemmer forspenningen til transistoren VT1, etter forforsterkning ...

Termometer på ATmega8 og temperatursensor DS18B20

Termometerkrets for ATmega8 og DS18B20

Digitalt termometer DS18B20
Syv segment LED-indikator
Termometer program algoritme
Digitalt termometerprogram for DS18B20

Kretsen og programmet er veldig enkelt digitalt termometer ved hjelp av en mikrokontroller ATmega8 og temperatursensor DS18B20. Termometeret lar deg måle temperatur fra 0 til 99 grader med en nøyaktighet på 0,5 grader med en oppløsning på 0,1 grader

Termometeret er veldig enkelt i sine egenskaper, og det kan kun brukes som et termometer for å måle "rom" temperatur. Å bruke en mikrokontroller med 8 kilobyte minne i dette designet er selvfølgelig bortkastet, du kan bruke en enklere mikrokontroller. Men poenget er at dette designet er grunnlaget for videreutvikling av prosjektet ved bruk av den digitale temperatursensoren DS18B20. I den neste artikkelen vil utformingen av et annet termometer bli publisert - på to DS18B20-sensorer, som lar deg måle temperaturen ikke bare i rommet, men også "overbord". Naturligvis vil muligheten til å måle negative temperaturer bli lagt til. I fremtiden vil en termostatfunksjon, en klokke og muligheten til å jobbe med forskjellige belastninger bli lagt til designet, noe som vil gjøre det mulig å sette sammen en enkel struktur - grunnlaget for et "smart hjem". Vel, i dag er den første artikkelen i denne serien.

Termometerkrets basert på ATmega8 og DS18B20 temperatursensor

La oss se på termometerdiagrammet:

Som du kan se, er kretsen veldig enkel; bare det nødvendige minimum av deler brukes.
Kretsen bruker en syv-segments tresifret LED-indikator for å indikere avlesninger.

Design forsyningsspenning - 5 volt. Hvis du bruker en mikrokontroller med lavspent strømforsyning, kan du senke forsyningsspenningen til strukturen, men i dette tilfellet må du kanskje redusere verdien av dempemotstandene i indikatorsegmentene. Omtrentlig motstandsverdier kan tas:
- med en strømforsyning på 5 volt - 200-300 Ohm
- med en strømforsyning på 2,7 - 3 volt - 100-150 Ohm


Transistorer- eventuelle NPN-strukturer med lav effekt.
temperatur sensor - DS18B20
Syv segment indikator - ethvert tresifret med felles katode. Hvis du vil bruke andre, med en felles anode, må du erstatte transistorene med PNP og gjøre endringer i programmet (erstatt rekken av binære koder for å vise tall på indikatoren). Jeg brukte en rød glødeindikator, og samtidig forberedte jeg den samme for neste opplegg, men med en blå glødfarge.

Deler av termometeret på mikrokontrolleren ATmega og DS18B20



ATmega8 mikrokontroller pinout:

Tresifret syv-segmentsindikator FYT-5631AUR-21:

Temperaturføler DS18B20:

Transistorer BC547C:

Algoritme for termometerprogrammet på ATmega og DS18B20

Alle mikrokontrollerinnstillinger er fabrikkinnstillinger; FUSE-bitene trenger ikke å berøres.

For å betjene programmet brukes to mikrokontroller-timere/tellere:
åtte-bits T0
seksten-bits T1
Ved bruk av åtte-biters timer T0 konfigurert til å kalle et overløpsavbrudd, med en intern frekvens CK/8 (periode 2 millisekunder) er organisert:
— beregning av gjeldende temperatur
— dynamisk utgang av temperaturmålingsresultater med DS18B20-sensoren
Ved bruk av seksten-biters timer T1 konfigurert til å ringe et overløpsavbrudd, med en intern frekvens på CK/64 (periode 4 sekunder) på en organisert måte:
— sende en kommando til DS18B20-sensoren for å måle temperatur
— lesing av den målte temperaturen fra sensoren
I prinsippet kan du bruke en åtte-bits timer/teller, også konfigurert til å utløse et overløpsavbrudd, med en intern frekvens på CK/8, og organisere hele driften av kretsen mens du behandler avbruddet. Men faktum er at det ikke er noen vits i dette - DS18B20-sensoren trenger litt mindre enn 1 sekund (med 12-bits oppløsning) for å konvertere (bestemme) temperaturen, det vil si at vi ikke vil kunne oppdatere temperaturdataene mer enn en gang i sekundet. I tillegg vil slike hyppige temperaturoppdateringer føre til oppvarming av sensoren og følgelig til forvrengning av reelle data. Ved å bruke en andre teller kan du stille inn tidsintervallene for temperaturmåling separat.

Slik ser hoveddelen av programmet ut i Algorithm Builder:

Hvor:

SP— angi startadressen til stabelen

Timer 0— stille inn timer T0:

Timer 1— stille inn timer T1:

TIMSK— innstilling av avbrudd fra tidtakere:

Init_Display– underrutine for å sette bitene av portene som er involvert i den dynamiske indikasjonen av datautgang til en tresifret syv-segmentindikator

1 —> jeg- global avbruddsaktivering

Har du spørsmål, om noe blir presentert som ikke er klart, eller om du har spørsmål om programmet, skriv til meg så skal jeg svare.

(2,4 KiB, 7004 treff)