Thermometer zur Messung hoher Temperaturen auf einem Mikrocontroller. Zweikanal-Thermometer basierend auf ATmega8-Mikrocontroller und DS18B20-Sensoren

Ich möchte sofort darauf hinweisen, dass die Leiterplatte und das Design mit der Erwartung entwickelt wurden, ein kompaktes Gerät zu schaffen, das an der Wand montiert werden kann.

Die Steuerung des Geräts erfolgt über eine Taste. Das Programm für den Mikrocontroller ist in C geschrieben, mit Kommentaren versehen und kann vom Benutzer an seine spezifischen Aufgaben angepasst oder in der Funktionalität erweitert werden. Zur Steuerung der LCD-Anzeige wird eine vorgefertigte Peter Fleury-Bibliothek verwendet (das herunterladbare Archiv ist im Download-Bereich verfügbar). Zusätzlich können Daten in Celsius oder Fahrenheit angezeigt werden. Es gibt verschiedene Modi zur Steuerung der Hintergrundbeleuchtung der Anzeige.

Erwähnenswert ist noch ein weiterer wichtiger Punkt: Das Gerät kann über ein spezielles Modul (optional) eine drahtlose Datenübertragung über das Bluetooth-Protokoll durchführen.

Schematische Darstellung

Aus schaltungstechnischer Sicht ist das Gerät einfach und wir werden die Komponentenelemente separat betrachten.

Die Stromversorgung des Thermometers erfolgt auf Basis eines integrierten Spannungsreglers in Standardschaltung (mit entsprechenden Filterkondensatoren). Der 3,3-V-Spannungsregler AMS1117 ist in der Schaltung enthalten, kann aber bei Verwendung eines Bluetooth-Moduls verwendet werden, da Oftmals beträgt die Spannungsversorgung für solche Module 3,3 V.

Die im Gerät verwendete Anzeige ist eine standardmäßige zweizeilige Anzeige auf dem HD44780-Controller. Der Transistor dient zur Steuerung der Hintergrundbeleuchtung der Anzeige mit logischen Signalen vom Mikrocontroller oder einem PWM-Signal vom Mikrocontroller. Widerstand R3 begrenzt den Strom durch die Basis des Transistors, Widerstand R1 zieht die Basis auf Nullpotential.

Die Basis des Thermometers ist ein Mikrocontroller, der mit einer Frequenz von 8 MHz arbeitet und alle umliegenden Peripheriegeräte steuert.

Der DHT-11-Sensor ist ein kostengünstiger Temperatur- und relativer Luftfeuchtigkeitssensor, der im Projekt als Außensensor verwendet wird. Es zeichnet sich nicht durch hohe Geschwindigkeit und Genauigkeit aus, wird aber aufgrund seiner geringen Kosten in Amateurfunkprojekten eingesetzt. DHT-11 besteht aus einem kapazitiven Feuchtigkeitssensor und einem Thermistor. Außerdem enthält der Sensor einen einfachen ADC zur Umwandlung analoger Werte für Luftfeuchtigkeit und Temperatur.

Hauptmerkmale:

  • niedrige Kosten;
  • Versorgungsspannung 3 V - 5 V;
  • Datenübertragung per 1-Wire-Bus über Entfernungen bis zu 20 m;
  • Bestimmung der Luftfeuchtigkeit 20-80 % mit 5 % Genauigkeit;
  • maximale Stromaufnahme 2,5 mA;
  • Temperaturbestimmung 0...50° mit einer Genauigkeit von 2 %;
  • Abfragefrequenz nicht mehr als 1 Hz (nicht mehr als einmal alle 1 s);
  • Abmessungen 15,5 × 12 × 5,5 mm;

Es ist zu beachten, dass im Angebot ein DHT-22-Sensor erhältlich ist, der über die gleiche Schnittstelle, aber bessere Eigenschaften verfügt.

Der Sensor ist über einen 1-Wire-Bus (Anschluss JP3 im Diagramm) über einen Pull-up-Widerstand an der Datenleitung und einen Sperrkondensator an der Stromversorgung mit dem Mikrocontroller verbunden.

Der interne Sensor ist der weit verbreitete analoge Temperatursensor LM35 IC5, der an Kanal 1 des Mikrocontroller-ADC angeschlossen ist.

Mit dem Anschluss J1 der Mikrocontroller-In-Circuit-Programmierschnittstelle können Sie den Programmcode schnell ändern oder die Software aktualisieren. Zum Anschluss des Thermometers über die UART-Schnittstelle wird der Stecker JP1 verwendet. Der SW1-Steuerknopf ist mit dem externen Interrupt-Eingang des Mikrocontrollers verbunden; dieser Eingang ist über den internen Widerstand des Ports mit der Stromversorgung verbunden.

Ein Bluetooth-Modul zur drahtlosen Datenübertragung, im Diagramm als IC3 bezeichnet, GP-GC021, verbindet sich auch mit der UART-Schnittstelle des Mikrocontrollers und ermöglicht die Datenübertragung an einen PC, ein Mobiltelefon oder einen Webserver. Die Leiterplatte bietet Platz für den Einbau des Moduls. Der Download-Bereich enthält eine Beschreibung des Moduls, des Interaktionsprozesses und der Befehle.

Die LCD-Anzeige ist auf der Vorderseite der Leiterplatte im Anschluss verbaut und verdeckt so die auf der Hauptplatine verbauten Komponenten und wir erhalten ein kompaktes Gerät. Der Platz zum Einbau des Bluetooth-Moduls befindet sich auf der Rückseite der Leiterplatte (siehe Foto der Platine).

Aussehen der fertigen Leiterplatte für ein Thermometer


Leiterplattenzeichnung in Eagle CAD

Platine mit eingebautem Bluetooth-Modul

Downloads

Schaltplan und Leiterplatte (Eagle), Software (Quellcode, Firmware) -
Bibliothek zum Arbeiten mit der LCD-Anzeige am HD44780-Controller -
Technische Beschreibung zum Bluetooth-Modul GP-GC021 -

Oder seine Analoga. Die Geräte verfügen über eine gute Genauigkeit, Störfestigkeit und vereinfachen im Vergleich zu analogen Lösungen die Schaltung erheblich. Die von solchen Sensoren gemessenen Temperaturgrenzen liegen üblicherweise im Bereich von -55 bis 125 °C. Was tun, wenn eine Temperatur über 125 °C gemessen werden muss? Natürlich müssen Sie analoge Sensoren verwenden, deren Temperaturbereich bis zu +300 °C erreichen kann. Es ist zu beachten, dass in diesem Fall die Messgenauigkeit abnimmt. Bei der Messung hoher Temperaturen ist es jedoch häufig nicht erforderlich, den genauen Wert zu kennen, und ein Fehler von mehreren Grad ist akzeptabel und bei der Anzeige auf einer analogen Skala, beispielsweise auf einer LED-Reihe, völlig unbemerkt .

Für den Normalbetrieb des Gerätes bei einer Temperatur von 0 ... 250 °C wurde ein analoger Sensor gewählt, dessen Arbeitsbereich -40 + 300 °C beträgt. Seine Parameter sind optimal auf den gewählten Temperaturbereich abgestimmt. Für die Datenverarbeitung ist der Mikrocontroller (MK) zuständig. Natürlich reicht auch jeder andere, aber der Autor scheint der Meinung zu sein, dass dieser MK einer der zugänglichsten und beliebtesten ist. Die Sicherungsbits werden im Werk belassen. Bei der Lösung des Problems wurden die Kriterien für eine genaue Messung in den Hintergrund gedrängt. Ein Fehler innerhalb weniger Grad war durchaus zufriedenstellend.

Digitale Anzeige der Messergebnisse

Zur digitalen Anzeige der Daten dient ein LCD-Display. Bei Bedarf kann das Gerät durch Änderung des Programmcodes aufgerüstet werden. Dafür stehen ausreichend freie I/O-Ports zur Verfügung. Die Anbindung des LCD-Displays erfolgt über einen 4-Bit-Bus (Abbildung 1). Die höherwertigen Ziffern des Indikators D4 – D7 sind mit den niederwertigen Ziffern D0 – D4 des Mikrocontrollers verbunden. Da es bei diesem Gerät keine präzise Zeitsteuerung gibt, ist kein externer Master-Quarzresonator erforderlich. Die Display-Steuerpins sind mit den Ports PB6 und PB7 verbunden. Wie Sie sehen können, führen alle Display-Steuerleitungen an einer Seite des MK-Gehäuses aus, was die Verfolgung der Leiterplatte vereinfacht.

Berechnung des Temperaturwertes

Aus Abbildung 1 ist ersichtlich, dass der analoge Temperatursensor direkt an den ADC-Eingang des Mikrocontrollers angeschlossen ist. Bei Verwendung eines Operationsverstärkers wäre der Messfehler geringer. Die Spannung wird dem ADC über einen Teiler zugeführt, der aus einem Thermistor und einem variablen Widerstand besteht. Für eine bessere Abstimmgenauigkeit ist der variable Widerstand als Multiturn-Widerstand gewählt.

Tabelle 1. Abhängigkeit des Widerstands von der Temperatur.

Temperatur ºС

Widerstand Ω

Durch die Erstellung eines Diagramms in Mathcad basierend auf Tabelle 1 (Abbildung 2) können Sie die Abhängigkeit des Widerstands des Analogsensors von der angelegten Temperatur erkennen. Die Quelldaten der Tabelle sind der technischen Beschreibung von KTY84_130 entnommen. Die Funktion ist nahezu linear, mit nur geringen Abweichungen bei hohen Temperaturen.

Bei einer gemessenen Temperatur von 0 °C beträgt der Widerstand des Thermistors 498 Ohm. Die Spannung am Teilerausgang beträgt

  • U D - Spannung am Temperatursensor relativ zur Erde,
  • U PIT - Versorgungsspannung,
  • R D - Widerstand des Temperatursensors,
  • R 1 - Widerstandswert des variablen Widerstands einstellen.

Bei einer Temperatur von 0 °C sollte die Spannung am ADC-Eingang 0,6 V betragen. Um den Temperaturwert zu berechnen, verwendete der Autor die folgende Formel:


  • ADC – 10-Bit digitaler ADC-Code vom Sensor,
  • U OTC – Grenzwert (60), gleich 0,6 V bei 0 °C.

Der Bereich der gemessenen Temperaturen von 0 °C bis 250 °C entspricht den vom Teiler kommenden ADC-Eingangsspannungen von 0,6 bis 1,8 V. Die Referenzspannung des ADC beträgt 5 V, daher wird bei den angegebenen Werten der digitale Code angezeigt Der Bereich liegt zwischen 123 und 368. Diese Zahl wird in das Register eingetragen und in einen dreistelligen ASCII-Code umgewandelt. Da der KTY84_130-Sensor für eine maximale Temperatur von 300 °C ausgelegt ist, ist es besser, einen kleinen Spielraum zu lassen und ihn auf 250 °C zu begrenzen.

Abbildung 5 zeigt das auf einem Steckbrett montierte Gerät. Der Programmcode ist offen und jeder kann ihn leicht an seine eigenen Bedürfnisse anpassen.

MK-Software und virtuelles Modell Proteus für LCD 16×2 -

MK-Software und virtuelles Modell Proteus für LCD 8×2 -

Beschreibung des Thermometerbetriebs

Der Zweck dieses Thermometers besteht lediglich darin, die Temperatur anzuzeigen. Kleine Unterschiede zu anderen ähnlichen Schemata bestehen lediglich im Format der Temperaturausgabe auf der LED-Anzeige, bei der es sich um eine 4-stellige superhelle CA04-41SRWA handelt. DS18B20 wird als Temperatursensor in einem normalen Anschluss mit einem separaten Stromkabel verwendet.

Der Schaltkreis ist für die Stromversorgung durch Batterien ausgelegt. Wenn also der Strom eingeschaltet wird, zeigt die Anzeige nichts an. Das Thermometerprogramm wird initialisiert und geht sofort in den Schlafmodus. Der Schlafmodus des Mikrocontrollers ermöglicht es Ihnen, Energie aus dem Netzteil zu sparen. Wenn Sie die mit PORTB0 verbundene Taste drücken, schaltet sich die Anzeige ein.
Der Indikator zeigt einen Hinweis an:



Anschließend werden die Temperaturwerte selbst auf dem Indikator angezeigt.



Die Art der Leseausgabe ist wie folgt:






Die Ausgabeform unterscheidet sich nur für niedrige positive Temperaturen. Bei der Angabe einer solchen Temperatur wird dem „Grad“-Symbol das Zeichen „C“ hinzugefügt. Das heißt, Grad Celsius ist bei jeder gemessenen Temperatur auf dem Indikator vorhanden.

Der Temperatursensor DS18B20 misst die Temperatur mit einer Auflösung von 0,0625 Grad Celsius. Das Thermometer liest die Messwerte vom Sensor und rundet sie auf das nächste Zehntel Grad. In allen Anzeigemodi werden Zehntelgrad angezeigt, außer bei Temperaturen unter -10 Grad Celsius. Dies geschieht, damit die Messwerte für negative Temperaturen immer ein Minuszeichen haben.

Die Messwerte werden 30 Sekunden lang auf dem Indikator angezeigt. Anschließend geht das Gerät wieder in den Schlafmodus und die Anzeige erlischt.


Modellierung eines Thermometers in Proteus


Das Proteus-Modell ermöglichte es, den Softwareteil des Thermometers zu erarbeiten, ohne das Gerät selbst in Hardware zusammenzubauen. Alle Modi wurden getestet. Es gibt keine Simulationsfehler im Programm.



Das Modell selbst kann unter folgendem Link heruntergeladen werden: termo_i_v2.DSN

Schematische Darstellung eines Thermometers


Die Schaltung wird anhand des Leiterplattendesigns gezeichnet. Zunächst wurde die Verkabelung der Leiterplatte so durchgeführt, dass die Länge der Leiter und die Lage der Teile optimal waren, und erst nachdem die PIC16F628A-Mikrocontroller-Ports auf der Leiterplatte den Pins der CA04-41SRWA-Anzeige entsprachen, Es wurde ein genauer Schaltplan erstellt.


Thermometerplatine


Guten Tag, liebe Leser. Wie der Titel des Artikels vermuten lässt, werden wir über ein auf einem PIC montiertes Thermometer sprechen. Also. Warum und wie alles begann?!
Ich brauchte ein Diagramm eines einfachen Thermometers für den Garagenkeller. Ich begann im Internet nach einem geeigneten Schema zu suchen. Ein wichtiges Kriterium war die Verwendung einer minimalen Anzahl von Elementen in der Schaltung. Ich sage gleich, dass es online eine Menge solcher Thermometerschaltungen gibt. Aber! Meistens werden sie auf AVRs gemacht, mit denen ich zu meinem tiefsten Bedauern nicht befreundet bin. Also begann ich nach einer PIC-Schaltung zu suchen. Aber auch hier war ich enttäuscht. Es gibt Schaltpläne für PIC-Thermometer. Aber sie verwenden entweder Transistoren für die Anzeigen oder externe Quarze oder etwas anderes, das die Schaltung kompliziert und in meinem Fall nicht akzeptabel war. Endlich wurde nach langer Suche hier ein Schema gefunden, das zu mir passte:

http://www.labkit.ru/html/show_meter?id=38
Und es wurde mehrmals erfolgreich wiederholt. Alles funktioniert super. (Auf der Website des Autors dieser Schaltung gibt es sowohl Firmware als auch eine Leiterplatte zum Nachbau dieses Thermometers.) Im Laufe der Zeit. Und eines Tages wurden die Mängel dieser Schaltung zum ersten Mal deutlich und ich musste auch einen Indikator mit einer gemeinsamen Kathode verwenden (auf der Website des Autors war die Firmware nur für die gemeinsame Anode vorgesehen). Nun zum Mangel des Schemas in der Originalquelle. Die Schaltung des Autors verfügt zunächst über keinen Pull-Up-Widerstand für den Temperatursensor. Das heißt, es gibt keinen 4,7-K-Widerstand in der Schaltung. Ja, mit diesem Schaltungsaufbau kann das Thermometer tatsächlich funktionieren, allerdings nur, wenn der Temperatursensor direkt in die Platine eingelötet ist bzw. die Länge des Drahtes, auf dem sich der Sensor befindet, eine Drahtlänge von einem Meter nicht überschreiten sollte , eineinhalb Meter. Nicht mehr. Andernfalls beginnt der Indikator etwas Unsinn anzuzeigen, nicht die Temperatur.
Diese Wendung hat mich überhaupt nicht glücklich gemacht. Weil ich eine Länge des Kabels mit dem Sensor von mindestens 10 Metern brauchte.
Dieses Problem wurde sehr einfach und schnell gelöst, nämlich durch den Einbau eines 4,7K Pull-up-Widerstandes am Sensor. Danach begann der Sensor bei jeder Drahtlänge stabil zu arbeiten. Was aber, wenn ich nur Indikatoren mit einer gemeinsamen Kathode habe! Und die Firmware wurde für die Anode erstellt ... Hier hat mir Stanislav Dmitriev geholfen. Dafür danke ich ihm sehr. Er hat nicht nur die Firmware für die gemeinsame Anode geschrieben. Aber auch für eine gemeinsame Kathode und für verschiedene Arten von Temperatursensoren (DS18S20 oder DS18B20). Dies ermöglichte eine weitere Vereinheitlichung dieses Schemas. Und empfehle es zur Wiederholung. Es ist auch möglich, in der Schaltung sowohl Vier-Bit-Sieben-Segment- als auch Drei-Bit-Sieben-Segment-Geräte zu verwenden. Das ist keine große Sache, aber dennoch ein Plus.
Jetzt die Schaltung selbst

Wie Sie sehen, unterscheidet sich das Diagramm nicht von dem auf der Website http://www.labkit.ru dargestellten
So war es ursprünglich gedacht. Die einzige Änderung in der Schaltung ist der Einbau eines zusätzlichen Widerstands. Ich habe das Diagramm nicht von Grund auf neu gezeichnet. Ich habe gerade das fehlende Element der Schaltung hinzugefügt. Wenn Sie die Schaltung noch weiter vereinfachen möchten und über eine stabile 5-V-Stromquelle verfügen, können Sie den Linearstabilisator grundsätzlich aus der Schaltung ausschließen. Und versorgen Sie den MK direkt mit 5V.
Lassen Sie uns nun ein wenig darüber sprechen, wie Sie die Firmware selbst an den von Ihnen benötigten Indikator oder Sensor anpassen können. Hier ist alles einfach.

Nachdem Sie die Firmware-Datei in den Programmierer geladen haben, können Sie selbst: Basierend auf Ihren Anforderungen und anhand dieses Screenshots die benötigten Parameter in die Firmware-Datei im Abschnitt EPROM schreiben. Anschließend können Sie den Controller flashen.

In meiner Version der Leiterplatte bietet die Platine nicht nur Platz für einen Linearstabilisator, sondern auch für eine Diodenbrücke (die es ermöglicht, die Schaltung mit einer Spannung von 7,5 V bis 12 V zu versorgen). Die Platine bietet auch Platz für den Einbau Ein Klemmenblock, der es Ihnen ermöglicht, einen Temperatursensor nicht in die Platine einzulöten, sondern ihn mit Klemmen festzuklemmen. Dies ist praktisch, wenn Sie den Sensor wechseln oder wenn Sie den Sensor an einem langen Draht installieren.

Tafelzeichnung

Wie Sie sehen, ist das Thermometer auf zwei Platinen montiert. Einer ist mit einer Sieben-Segment-Anzeige (drei oder vier Ziffern) ausgestattet. Alle anderen Elemente der Schaltung werden auf der zweiten Platine installiert. Die Platinen werden über einen Kamm oder in meinem Fall über Drähte miteinander verbunden.
Am Ende ist ein Foto meines fertigen Thermometers.

Ein von Grund auf selbst zusammengebautes digitales Thermometer wird Ihnen nicht nur seinen vorgesehenen Zweck erfüllen, sondern, wie alles, was Sie mit Ihren eigenen Händen herstellen, Ihr Selbstwertgefühl steigern (und vielleicht wird es in ein paar Jahren sogar wertvoller). eine Erinnerung).

Zweifellos ist ein digitales Thermometer im Haushalt eine nützliche Sache, aber nicht sehr funktional: Außer der Messung der Temperatur ist es auf nichts anderes ausgerichtet. In dieser Hinsicht wäre ein Thermometer auf einem Mikrocontroller nützlicher, da es jede Last abhängig von Temperaturänderungen ein- und ausschalten kann.

Wenn Sie jedoch mit Ihren eigenen Händen etwas Sinnvolles tun möchten, dann ist ein solcher Entwurf im ersten Schritt völlig berechtigt – die gesammelten Erfahrungen sind unbezahlbar.

Wählen wir also zunächst die einfachste Thermometerschaltung, die auf einem PIC16F84A-Mikrocontroller, einem digitalen Temperatursensor DS18B20 mit einer Messgenauigkeit von bis zu 0,5 Grad und einer vierstelligen LED-Anzeige mit gemeinsamer Anode basiert. In meinem Fall kam das Display FYQ-3641BG-21E zum Einsatz.

Der Vorteil der Schaltung ist ihre Einfachheit – von diskreten Elementen benötigen wir ein Dutzend Widerstände, mehrere Kondensatoren und einen 4-MHz-Quarzresonator. Der Hauptnachteil besteht darin, dass der Thermostat wie alle elektronischen Geräte eine Stromquelle benötigt.

Durch den Einsatz von Batterien ist das Gerät mobil, allerdings kann die Betriebsdauer eines Batteriesatzes nur 1-2 Wochen betragen. Die Stromversorgung des Thermometers über das Stromnetz „bindet“ es an jede Steckdose, was nicht immer praktisch ist.

Ich möchte hinzufügen, dass das Diagramm nicht den Stromanschluss zum Mikrocontroller zeigt – die Plus-Stromversorgung wird an Pin 14 und die Minus-Stromversorgung an Pin 5 der Mikroschaltung geliefert.