Innehållsförteckning:

DIY temperatursensor med en diod: 3 steg
DIY temperatursensor med en diod: 3 steg

Video: DIY temperatursensor med en diod: 3 steg

Video: DIY temperatursensor med en diod: 3 steg
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Juli
Anonim
DIY temperatursensor med en diod
DIY temperatursensor med en diod
DIY temperatursensor med en diod
DIY temperatursensor med en diod

Så som en av fakta om PN-korsningar är att deras spänningsfall framåt ändras beroende på strömmen och övergångstemperaturen, kommer vi att använda detta för att göra en enkel billig temperatursensor.

Denna inställning används vanligtvis i många integrerade kretsar för att mäta dess inre temperatur och många temperatursensorer som den berömda LM35 som är baserad på denna egenskap.

Helt enkelt framspänningsfallet för en diod (som är en enda PN-korsning) ändras när mängden ström som passerar genom det ändras, också när diodens temperatur ändras kommer spänningsfallet att förändras (När temperaturen ökar kommer framåt fallet minskar med ett värde av (1,0 milliVolts till 2,0 milliVolts för kiseldioder och 2,5 milliVolts för germaniumdioder).

Så genom att leda en konstant ström genom dioden bör framspänningsfallet nu bara variera beroende på diodens temperatur. Vi behöver bara mäta diodens framspänning, applicera några enkla ekvationer och voilà här är din temperaturgivare !!!

Tillbehör

1 - 1n4007 diod #12 - 1 Kohm -motstånd #13 - Arduino -kort

Steg 1: Kretsdiagram

Kretsdiagram
Kretsdiagram

Som du kan se i schemat är det väldigt enkelt. genom att ansluta dioden i serie med ett strömbegränsande motstånd och en stabil spänningskälla kan vi få en rå konstant strömkälla, så den uppmätta spänningen över dioden kommer bara att variera på grund av temperaturförändringen. Se till att motståndsvärdet inte är för låg att mycket ström passerar genom dioden och gör en märkbar självuppvärmning i dioden, inte heller ett mycket högt motstånd så att strömmen som passerar inte räcker för att upprätthålla ett linjärt förhållande mellan framspänningen och temperaturen.

ett 1 kilo Ohm -motstånd med en 5V -strömförsörjning bör resultera i en 4 milliAmpere -diodström som är ett tillräckligt värde för detta ändamål. I (diod) = VCC / (Rseries + Rdiode)

Steg 2: Kodning

Vi måste komma ihåg att det finns några värden att justera i koden för att få bättre resultat som:

1 - VCC_Voltage: eftersom värdet analogRead () beror på ATmega -chipets VCC måste vi lägga till det i ekvationen efter att ha mätt det på arduino -kortet.

2 - V_OLD_0_C: spänningsfallet framåt för den använda dioden vid en ström på 4 mA och temperaturen 0 Celsius

3 - Temperature_Coefficient: temperaturgradienten för din diod (bättre att hämta från databladet) eller så kan du mäta den med denna ekvation: Ny - Vold = K (Ny - Berättad)

var:

Vnew = nyuppmätt fallspänning efter uppvärmning av dioden

Vold = uppmätt fallspänning vid någon rumstemperatur

Ny = temperaturen där dioden värmdes till

Berättad = den gamla rumstemperaturen som Vold mättes vid

K = Temperature_Coefficient (ett negativt värde som varierar mellan -1,0 till -2,5 milliVolt) Slutligen kan du nu ladda upp koden och få dina temperaturresultat.

#define Sens_Pin A0 // PA0 för STM32F103C8 -kort

dubbel V_OLD_0_C = 690,0; // 690 mV Framspänning vid 0 Celsius vid 4 mA testström

dubbel V_NEW = 0; // Ny framspänning vid rumstemperatur vid 4 mA testström dubbel temperatur = 0,0; // Rumsberäknad temperatur dubbel Temperature_Coefficient = -1,6; //-1,6 mV förändring per grad Celsius (-2,5 för germaniumdioder), bättre att hämta från dioddatabladet dubbel VCC_Voltage = 5010,0; // Spänning närvarande vid 5V -skenan på arduino i milliVolt (krävs för bättre noggrannhet) (3300.0 för stm32)

void setup () {

// lägg din installationskod här för att köra en gång: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// lägg din huvudkod här för att köra upprepade gånger: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // dividera med 4,0 om du använder en 12 -bitars ADC -temperatur = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

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

fördröjning (500);

}

Steg 3: Få bättre värden

Få bättre värden
Få bättre värden
Få bättre värden
Få bättre värden

Jag tycker att det är lämpligt att ha en betrodd temperaturmätare vid din sida när du gör detta projekt.

du kan se att det finns ett märkbart fel i avläsningarna som kan komma till 3 eller 4 grader Celsius så var kommer detta fel ifrån?

1 - du kan behöva justera variablerna som nämns i föregående steg

2 - ADC -upplösningen för arduino är lägre än vad vi behöver för att upptäcka den lilla spänningsskillnaden

3 - spänningsreferensen för arduino (5V) är för hög för denna lilla spänningsförändring över dioden

Så om du ska använda den här inställningen som temperatursensor, bör du vara medveten om att även om det är billigt och praktiskt, är det inte korrekt, men det kan ge dig en mycket bra uppfattning om temperaturen på ditt system, antingen är det på en Kretskort eller monterat på motor som körs osv …

Denna instruerbara är avsedd att använda den minsta möjliga mängd komponenter men om du vill få de mest exakta resultaten från denna idé kan du göra några ändringar:

1 - lägg till några förstärkningar och filtreringssteg med op -ampere som i denna länk2 - använd en lägre intern analog referenskontroll som STM32F103C8 -kort med 3,3 volt analog referensspänning (se punkt 4) 3 - använd den interna 1,1 V analoga referensen i arduino men var medveten om att du inte kan ansluta mer än 1,1 volt till någon av de arduino analoga stiften.

du kan lägga till den här raden i installationsfunktionen:

analogReference (INTERNAL);

4 - Använd en mikrokontroller som har högre upplösning ADC som STM32F103C8 som har en 12 -bitars ADC -upplösning Så i ett nötskal kan denna arduino -baserade inställning ge en bra översikt om ditt systems temperatur men inte så exakta resultat (cirka 4,88 mV/avläsning)

STM32F103C8-installationen skulle ge dig ett ganska exakt resultat eftersom det har en högre 12-bitars ADC och ett lägre 3,3V analogt referensvärde (cirka 0,8 mV/avläsning)

Tja, det är det !!: D

Rekommenderad: