Indholdsfortegnelse:

DIY temperatursensor ved hjælp af en diode: 3 trin
DIY temperatursensor ved hjælp af en diode: 3 trin

Video: DIY temperatursensor ved hjælp af en diode: 3 trin

Video: DIY temperatursensor ved hjælp af en diode: 3 trin
Video: Sådan laver du et temperatursensorkredsløb ved hjælp af en diode 2024, Juli
Anonim
DIY temperatursensor ved hjælp af en diode
DIY temperatursensor ved hjælp af en diode
DIY temperatursensor ved hjælp af en diode
DIY temperatursensor ved hjælp af en diode

Så som en af kendsgerningerne om PN-kryds er, at deres fremadspændingsfald ændres i henhold til passerende strøm og til krydsetemperaturen, vil vi også bruge dette til at lave en simpel billig temperatursensor.

Denne opsætning bruges almindeligvis i mange integrerede kredsløb til at måle dens interne temperatur og mange temperatursensorer som den berømte LM35, der er baseret på denne egenskab.

Simpelthen forspændingsfaldet for en diode (som er et enkelt PN-kryds) ændres, når mængden af strømmen, der passerer gennem det ændres, også som diodetemperaturen ændres, vil spændingsfaldet ændre sig (Når temperaturen stiger, vil fremad fald falder med en værdi på (1,0 milliVolt til 2,0 milliVolt for siliciumdioder og 2,5 milliVolt for germaniumdioder).

Så ved at føre en konstant strøm gennem dioden skal fremspændingsfaldet nu kun variere alt efter diodetemperaturen. Vi skal bare nu måle diodernes fremspænding, anvende nogle enkle ligninger og voilà her er din temperatursensor !!!

Forbrugsvarer

1 - 1n4007 diode #12 - 1 Kohm modstand #13 - Arduino bord

Trin 1: Kredsløbsdiagram

Kredsløbsdiagram
Kredsløbsdiagram

Som du kan se i skematikken er det meget enkelt. ved at forbinde dioden i serie med en strømbegrænsende modstand og en stabil spændingskilde kan vi få en rå konstant strømkilde, så den målte spænding over dioden vil kun variere på grund af temperaturændringen. Sørg for, at modstandsværdien ikke er for lav, at meget strøm passerer gennem dioden og laver en mærkbar selvopvarmning i dioden, heller ikke en meget høj modstand, så strømmen, der passerer, er ikke nok til at opretholde et lineært forhold mellem fremspændingen og temperaturen.

en 1 kilo Ohm modstand med en 5V forsyning skulle resultere i en 4 milliAmpere diode strøm, som er en tilstrækkelig værdi til dette formål. I (diode) = VCC / (Rseries + Rdiode)

Trin 2: Kodning

Vi skal huske på, at der er nogle værdier, der skal justeres i koden for at få de bedre resultater som:

1 - VCC_Voltage: da analogRead () -værdien afhænger af ATmega -chipens VCC, skal vi tilføje den til ligningen efter at have målt den på arduino -kortet.

2 - V_OLD_0_C: det anvendte diodes forspændingsfald ved strøm på 4 mA og temperatur på 0 Celsius

3 - Temperature_Coefficient: temperaturgradienten på din diode (bedre at hente fra databladet), eller du kan måle den ved hjælp af denne ligning: Ny - Vold = K (Ny - fortalt)

hvor:

Ny = nymålt faldspænding efter opvarmning af dioden

Vold = målt faldspænding ved nogen stuetemperatur

Ny = temperaturen, hvor dioden blev opvarmet til

Fortalt = den gamle stuetemperatur, som Vold blev målt til

K = Temperature_Coefficient (en negativ værdi, der varierer mellem -1,0 til -2,5 milliVolt) Endelig kan du nu uploade koden og få dine temperaturresultater.

#define Sens_Pin A0 // PA0 til STM32F103C8 bord

dobbelt V_OLD_0_C = 690,0; // 690 mV Fremspænding ved 0 Celsius ved 4 mA teststrøm

dobbelt V_NEW = 0; // Ny fremspænding ved stuetemperatur ved 4 mA teststrøm dobbelt temperatur = 0,0; // Rumberegnet temperatur dobbelt Temperatur_Coefficient = -1,6; //-1,6 mV ændring pr. Grad Celsius (-2,5 for germaniumdioder), bedre at få fra diodebladet dobbelt VCC_Voltage = 5010,0; // Spænding til stede på arduinoens 5V -skinne i milliVolt (påkrævet for bedre nøjagtighed) (3300,0 for stm32)

ugyldig opsætning () {

// sæt din opsætningskode her for at køre en gang: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// sæt din hovedkode her for at køre gentagne gange: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // divider med 4,0, hvis du bruger en 12 bit ADC -temperatur = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

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

forsinkelse (500);

}

Trin 3: Få bedre værdier

Få bedre værdier
Få bedre værdier
Få bedre værdier
Få bedre værdier

Jeg synes, det er tilrådeligt at have en betroet temperaturmåler ved siden af dig, når du laver dette projekt.

du kan se, at der er en mærkbar fejl i målingerne, der kan komme til 3 eller 4 grader Celsius, så hvor kommer denne fejl fra?

1 - du skal muligvis justere de variabler, der er nævnt i det foregående trin

2 - arduinoens ADC -opløsning er lavere end hvad vi har brug for for at detektere den lille spændingsforskel

3 - spændingsreferencen for arduinoen (5V) er for høj til denne lille spændingsændring over dioden

Så hvis du vil bruge denne opsætning som temperatursensor, skal du være opmærksom på, at selvom den er billig og praktisk, er den ikke præcis, men den kan give dig en meget god idé om temperaturen på dit system, enten er den på en PCB eller monteret på kørende motor osv …

Denne instruerbare er beregnet til at bruge den mindst mulige mængde komponenter, men hvis du vil få de mest nøjagtige resultater fra denne idé, kan du foretage nogle ændringer:

1 - tilføj nogle forstærkninger og filtreringstrin ved hjælp af op -ampere som i dette link2 - brug en lavere intern analog reference controller som STM32F103C8 -kortene med 3,3 Volt analog referencespænding (se punkt 4) 3 - brug den interne 1,1 V analoge reference i arduino, men vær opmærksom på, at du ikke kan slutte mere end 1,1 Volt til nogen af de arduino analoge ben.

du kan tilføje denne linje i opsætningsfunktionen:

analogReference (INTERN);

4 - Brug en mikrokontroller, der har ADC med højere opløsning som STM32F103C8, der har en 12 bit ADC -opløsning Så i en nøddeskal kan denne arduino -baserede opsætning give et godt overblik over dit systems temperatur, men ikke så præcise resultater (ca. 4,88 mV/læsning)

STM32F103C8-opsætningen ville give dig et ret præcist resultat, da det har en højere 12-bit ADC og en lavere 3.3V analog referenceværdi (ca. 0,8 mV/læsning)

Nå, det er det !!: D

Anbefalede: