Inhaltsverzeichnis:

DIY-Temperatursensor mit einer Diode - Gunook
DIY-Temperatursensor mit einer Diode - Gunook

Video: DIY-Temperatursensor mit einer Diode - Gunook

Video: DIY-Temperatursensor mit einer Diode - Gunook
Video: Как сделать схему датчика температуры с помощью диода 2024, November
Anonim
DIY-Temperatursensor mit einer Diode
DIY-Temperatursensor mit einer Diode
DIY-Temperatursensor mit einer Diode
DIY-Temperatursensor mit einer Diode

Da eine der Tatsachen bei PN-Übergängen ist, dass sich ihr Durchlassspannungsabfall entsprechend dem Durchgangsstrom und auch der Sperrschichttemperatur ändert, werden wir dies verwenden, um einen einfachen, billigen Temperatursensor herzustellen.

Dieses Setup wird häufig in vielen integrierten Schaltkreisen verwendet, um die interne Temperatur und viele Temperatursensoren zu messen, wie der berühmte LM35, der auf dieser Eigenschaft basiert.

Einfach der Durchlassspannungsabfall einer Diode (bei der es sich um einen einzelnen PN-Übergang handelt) ändert sich, wenn sich die Menge des durch sie fließenden Stroms ändert, auch wenn sich die Diodentemperatur ändert, ändert sich der Spannungsabfall (wenn die Temperatur steigt, Abfall um einen Wert von (1,0 Millivolt bis 2,0 Millivolt für Siliziumdioden und 2,5 Millivolt für Germaniumdioden) verringert.

Wenn Sie also einen konstanten Strom durch die Diode leiten, sollte der Durchlassspannungsabfall jetzt nur noch von der Diodentemperatur abhängen. Wir müssen jetzt nur noch die Durchlassspannung der Diode messen, einige einfache Gleichungen anwenden und voilà hier ist Ihr Temperatursensor !!!

Lieferungen

1 - 1n4007 Diode #12 - 1 Kohm Widerstand #13 - Arduino Board

Schritt 1: Schaltplan

Schaltplan
Schaltplan

Wie Sie im Schaltplan sehen können, ist es sehr einfach. Durch die Reihenschaltung der Diode mit einem Strombegrenzungswiderstand und einer stabilen Spannungsquelle können wir eine grobe Konstantstromquelle erhalten, sodass die gemessene Spannung an der Diode nur aufgrund der Temperaturänderung variiert. Stellen Sie sicher, dass der Widerstandswert nicht ist zu niedrig, dass viel Strom durch die Diode fließt und eine merkliche Selbsterwärmung in der Diode verursacht, auch kein sehr hoher Widerstand, so dass der Strom nicht ausreicht, um eine lineare Beziehung zwischen der Durchlassspannung und der Temperatur aufrechtzuerhalten.

ein 1 Kilo Ohm Widerstand mit 5V Versorgung sollte einen 4 Milliampere Diodenstrom ergeben, was für diesen Zweck ausreichend ist. I(Diode) = VCC / (Rseries + Rdiode)

Schritt 2: Codierung

Wir müssen bedenken, dass es einige Werte gibt, die im Code optimiert werden müssen, um bessere Ergebnisse zu erzielen, wie zum Beispiel:

1 - VCC_Voltage: Da der Wert analogRead () von der VCC des ATmega-Chips abhängt, müssen wir ihn nach der Messung auf der Arduino-Platine zur Gleichung hinzufügen.

2 - V_OLD_0_C: der Durchlassspannungsabfall der verwendeten Diode bei einem Strom von 4 mA und einer Temperatur von 0 Celsius

3 - Temperature_Coefficient: der Temperaturgradient Ihrer Diode (besser aus dem Datenblatt zu entnehmen) oder Sie können ihn mit dieser Gleichung messen: Vnew - Vold = K (Tnew - Told)

wo:

Vnew = neu gemessene Abfallspannung nach dem Aufheizen der Diode

Vold = gemessene Spannungsabfall bei einer gewissen Raumtemperatur

Tnew = die Temperatur, auf die die Diode erhitzt wurde

Gesagt = die alte Raumtemperatur, bei der Vold gemessen wurde

K = Temperature_Coefficient (ein negativer Wert, der zwischen -1,0 und -2,5 Millivolt variiert) Schließlich können Sie jetzt den Code hochladen und Ihre Temperaturergebnisse abrufen.

#define Sens_Pin A0 //PA0 für STM32F103C8-Platine

doppeltes V_OLD_0_C = 690,0; //690 mV Durchlassspannung bei 0 Celsius bei 4 mA Prüfstrom

doppelt V_NEW = 0; // Neue Durchlassspannung bei Raumtemperatur bei 4 mA Prüfstrom doppelte Temperatur = 0,0; // Raum berechnete Temperatur double Temperature_Coefficient = -1,6; // -1,6 mV Änderung pro Grad Celsius (-2,5 für Germaniumdioden), besser aus dem Diodendatenblatt Double VCC_Voltage = 5010.0; // Spannung an der 5V-Schiene des Arduino in Millivolt (erforderlich für bessere Genauigkeit) (3300.0 für stm32)

Leere Einrichtung () {

// Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen: pinMode(Sens_Pin, INPUT); Serial.begin (9600); }

Leere Schleife () {

// Geben Sie Ihren Hauptcode hier ein, um ihn wiederholt auszuführen: V_NEW = analogRead (Sens_Pin) * VCC_Voltage/1024.0; // durch 4,0 teilen, wenn Sie einen 12-Bit-ADC verwenden Temperatur = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp = ");

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

Verzögerung (500);

}

Schritt 3: Bessere Werte erzielen

Bessere Werte erzielen
Bessere Werte erzielen
Bessere Werte erzielen
Bessere Werte erzielen

Ich denke, es ist ratsam, bei diesem Projekt ein vertrauenswürdiges Temperaturmessgerät an Ihrer Seite zu haben.

Sie können sehen, dass die Messwerte einen merklichen Fehler aufweisen, der 3 oder 4 Grad Celsius erreichen kann, woher kommt dieser Fehler?

1 - Möglicherweise müssen Sie die im vorherigen Schritt erwähnten Variablen anpassen

2 - Die ADC-Auflösung des Arduino ist niedriger als das, was wir brauchen, um die kleine Spannungsdifferenz zu erkennen

3 - Die Spannungsreferenz des Arduino (5V) ist zu hoch für diese kleine Spannungsänderung an der Diode

Wenn Sie dieses Setup also als Temperatursensor verwenden möchten, sollten Sie sich bewusst sein, dass es zwar billig und praktisch ist, aber nicht genau ist, aber es kann Ihnen eine sehr gute Vorstellung von der Temperatur Ihres Systems geben, entweder es ist auf einem PCB oder montiert auf laufendem Motor etc…

Dieses anweisbare soll die geringstmögliche Anzahl von Komponenten verwenden Aber wenn Sie die genauesten Ergebnisse aus dieser Idee erzielen möchten, können Sie einige Änderungen vornehmen:

1 - fügen Sie einige Verstärkungen und Filterstufen mit Operationsverstärkern wie in diesem Link hinzu2 - verwenden Sie einen niedrigeren internen analogen Referenzcontroller als die STM32F103C8-Boards mit 3,3 Volt analoger Referenzspannung (siehe Punkt 4)3 - verwenden Sie die interne analoge 1,1 V-Referenz in der Arduino, aber beachten Sie, dass Sie nicht mehr als 1,1 Volt an einen der analogen Arduino-Pins anschließen können.

Sie können diese Zeile in der Setup-Funktion hinzufügen:

analogReferenz (INTERN);

4 - Verwenden Sie einen Mikrocontroller mit einem höher auflösenden ADC als STM32F103C8 mit einer 12-Bit-ADC-Auflösung. Kurz gesagt, dieses arduino-basierte Setup kann einen guten Überblick über die Temperatur Ihres Systems geben, aber nicht so genaue Ergebnisse (ca. 4,88 mV / Messwert)

das STM32F103C8-Setup würde Ihnen ein ziemlich genaues Ergebnis liefern, da es einen höheren 12-Bit-ADC und einen niedrigeren analogen 3,3-V-Referenzwert (ca. 0,8 mV/Messwert) hat.

Das war's !!:D

Empfohlen: