Innholdsfortegnelse:

DIY temperatursensor ved bruk av en diode: 3 trinn
DIY temperatursensor ved bruk av en diode: 3 trinn

Video: DIY temperatursensor ved bruk av en diode: 3 trinn

Video: DIY temperatursensor ved bruk av en diode: 3 trinn
Video: Lesson 47: Using K-Type MAX6675 as thermostat | Arduino Step By Step Course 2024, Juli
Anonim
DIY temperatursensor ved hjelp av en diode
DIY temperatursensor ved hjelp av en diode
DIY temperatursensor ved hjelp av en diode
DIY temperatursensor ved hjelp av en diode

Så som et av fakta om PN-veikryss er at spenningsfallet deres fremover endres i henhold til passerende strøm og til kryssstemperaturen også, skal vi bruke dette til å lage en enkel billig temperatursensor.

Dette oppsettet brukes ofte i mange integrerte kretser for å måle den interne temperaturen og mange temperatursensorer som den berømte LM35 som er basert på denne egenskapen.

Rett og slett fremspenningsfallet til en diode (som er et enkelt PN-kryss) endres etter hvert som strømmen som passerer gjennom det endres, også når diodetemperaturen endres, vil spenningsfallet endres (Når temperaturen øker, vil fremover fall reduseres med en verdi på (1,0 milliVolt til 2,0 milliVolt for silisiumdioder og 2,5 milliVolt for germaniumdioder).

Så ved å føre en konstant strøm gjennom dioden, bør fremspenningsfallet nå bare variere i henhold til diodetemperaturen. Vi trenger bare å måle diodenes fremspenning, bruk noen enkle ligninger og voilà her er temperatursensoren din !!!

Rekvisita

1 - 1n4007 diode #12 - 1 Kohm -motstand #13 - Arduino -kort

Trinn 1: Kretsdiagram

Kretsdiagram
Kretsdiagram

Som du kan se i skjematikken er det veldig enkelt. ved å koble dioden i serie med en strømbegrensende motstand og en stabil spenningskilde kan vi få en rå konstant strømkilde, så den målte spenningen over dioden vil bare variere på grunn av temperaturendringen. Sørg for at motstandsverdien ikke er for lav at mye strøm passerer gjennom dioden og gjør en merkbar selvoppvarming i dioden, heller ikke en veldig høy motstand, så strømmen som passerer er ikke nok til å opprettholde et lineært forhold mellom fremspenningen og temperaturen.

en 1 kilo Ohm motstand med en 5V forsyning bør resultere i en 4 milliAmpere diodestrøm som er en tilstrekkelig verdi for dette formålet. I (diode) = VCC / (Rseries + Rdiode)

Trinn 2: Koding

Vi må huske på at det er noen verdier å justere i koden for å få de bedre resultatene som:

1 - VCC_Voltage: ettersom analogRead () -verdien avhenger av Vmc på ATmega -brikken, må vi legge den til ligningen etter å ha målt den på arduino -kortet.

2 - V_OLD_0_C: fremspenningsfallet til den brukte dioden ved en strøm på 4 mA og temperaturen på 0 Celsius

3 - Temperature_Coefficient: temperaturgradienten til dioden din (bedre å hente fra databladet), eller du kan måle den ved å bruke denne ligningen: Ny - Vold = K (Ny - Fortalt)

hvor:

Ny = nymålt fallspenning etter oppvarming av dioden

Vold = målt fallspenning ved noen romtemperatur

Ny = temperaturen der dioden ble oppvarmet til

Fortalt = den gamle romtemperaturen som Vold ble målt til

K = Temperature_Coefficient (en negativ verdi som varierer mellom -1,0 til -2,5 milliVolt) Endelig kan du nå laste opp koden og få temperaturresultatene.

#define Sens_Pin A0 // PA0 for STM32F103C8 -kort

dobbel V_OLD_0_C = 690,0; // 690 mV Spenning fremover ved 0 Celsius ved 4 mA teststrøm

dobbel V_NEW = 0; // Ny spenning fremover ved romtemperatur ved 4 mA teststrøm dobbel Temperatur = 0,0; // Romberegnet temperatur dobbelt Temperatur_Koeffisient = -1,6; //-1,6 mV endring per grad Celsius (-2,5 for germaniumdioder), bedre å få fra diodedatabladet dobbel VCC_Voltage = 5010,0; // Spenning tilstede på 5V -skinnen til arduinoen i milliVolt (kreves for bedre nøyaktighet) (3300.0 for stm32)

ugyldig oppsett () {

// legg oppsettskoden her for å kjøre en gang: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// legg hovedkoden din her for å kjøre gjentatte ganger: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // divider med 4,0 hvis du bruker en 12 -biters ADC -temperatur = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Serial.print (temperatur); Serial.println ("C");

forsinkelse (500);

}

Trinn 3: Få bedre verdier

Få bedre verdier
Få bedre verdier
Få bedre verdier
Få bedre verdier

Jeg tror det er lurt å ha en pålitelig temperaturmåler ved siden av deg når du gjør dette prosjektet.

du kan se at det er en merkbar feil i avlesningene som kan komme til 3 eller 4 grader Celsius, så hvor kommer denne feilen fra?

1 - du må kanskje justere variablene nevnt i forrige trinn

2 - ADC -oppløsningen til arduinoen er lavere enn det vi trenger for å oppdage den lille spenningsforskjellen

3 - spenningsreferansen til arduinoen (5V) er for høy for denne lille spenningsendringen over dioden

Så hvis du skal bruke dette oppsettet som en temperatursensor, bør du være oppmerksom på at selv om det er billig og praktisk, er det ikke nøyaktig, men det kan gi deg en veldig god ide om temperaturen på systemet ditt, enten er det på en PCB eller montert på motor som kjører osv …

Denne instruksjonsboken er ment å bruke minst mulig komponenter, men hvis du vil få de mest nøyaktige resultatene fra denne ideen, kan du gjøre noen endringer:

1 - legg til noen forsterkninger og filtreringstrinn ved hjelp av op -ampere som i denne lenken2 - bruk en lavere intern analog referansekontroller som STM32F103C8 -kortene med 3,3 volt analog referansespenning (se punkt 4) 3 - bruk den interne 1,1 V analoge referansen i arduino, men vær oppmerksom på at du ikke kan koble mer enn 1,1 volt til noen av de arduino analoge pinnene.

du kan legge til denne linjen i oppsettfunksjonen:

analogReference (INTERNAL);

4 - Bruk en mikrokontroller som har høyere oppløsning ADC som STM32F103C8 som har en 12 -biters ADC -oppløsning Så i et nøtteskall kan dette arduino -baserte oppsettet gi en fin oversikt over systemets temperatur, men ikke så nøyaktige resultater (ca. 4,88 mV/avlesning)

STM32F103C8-oppsettet vil gi deg et ganske nøyaktig resultat, ettersom det har en høyere 12-bits ADC og en lavere 3.3V analog referanseverdi (ca. 0,8 mV/avlesning)

Vel, det er det !!: D

Anbefalt: