LM35 PCTS
→ zurück zur Übersicht: WS 18/19: Sensortechnik (MTR)
Autor: Yanick Christian Tchenko
Betreuer: Prof. Schneider
In diesem Artikel wird hauptsächlich das Thema Sensortechnik behandelt. Als Grundlagen dienen hierbei die Kenntnisse aus den Vorlesungen GET I und II. Die Durchführung der praktischen Aufgabe stellt sich als Hilfe fürs beste Verständnis der in der der Aufgabe entsprechenden Lehrveranstaltung (Sensorik) angesprochenen Theorien. Es wird außerdem aufgrund der Anwendung von Mikrocontroller eine geeignete Vorbereitung auf die praxisnahe Programmierung ermöglicht; Thematik, die im Zuge des Mechatronik Studiums noch angesprochen wird.
Aufgabe
Es soll im Rahmen der Sensorik-Vorlesung aus dem 5. Semester Mechatronik SDE ein Sensor in betrieb genommen werden. Dazu wurde als Sensormodell für die vorliegende Arbeit der LM35 Precision Centigrade TemperaturSensor (LM35 PCTS), nämlich die Version LM35DZ, ausgewählt. Dessen Beschreibung sowie Beschaltung mit anderen Anschlüssen (z.B. Steuergeräten) werden in den folgenden Abschnitten näher betrachtet, wo ebenfalls die Dokumentation der Ergebnisse durchgeführt wird.
Allgemeine Einleitung
Technische Beschreibung
Eigenschaft | Daten | |
---|---|---|
Artikelnummer des Hersteller | LM35DZ | |
Versorgungssspannung | von +4 bis +30 V | |
Schnittellen: | 3 | |
Modell: | Analoger Temperastursensor | |
Ausgangsspannung: | -1 ~ 6V | |
Ausgangsstrom: | 10 mA | |
Betriebstemperatur: | von 0°C bis 100°C | |
Temperaturempfindlichkeit: | + 10 mV / ° C | |
Produkgröße (NOM): | 4.699 mm × 4.699 mm [TO-CAN (3)] 4.30 mm × 4.30 mm [TO-92 (3)] 4.90 mm × 3.91 mm [SOIC (8)] 14.986 mm × 10.16 mm [TO-220 (3)] |
Funktionsweise der LM35DZ
LM35DZ-Version TO-92 ist ein 3-beinieger analoger Temperatursensor mit einer Messabweichung von 0,5°C bei 25°C Umgebungstemperatur. Er kann in einem weiten Betriebs¬spannungs¬bereich von 4V bis 30V arbeiten und besitzt einen Temperaturbereich von 0°C bis + 100°C sowie eine kalibrierte Linearität. Damit kann die Auswertung der Temperatur direkt in Grad Celsius erfolgen, wobei eine lineare Spannungsänderung von 10mV entspricht einer Temperaturänderung von 1°C. In Abhängigkeit der Temperatur stellt der Sensor LM35DZ somit an seinem Ausgangspin eine analoge Spannung zwischen 0mV und 1000mV bei einem Temperaturbereich von 0°C bis 100°C bereit. Dabei wird bei einer Temperatur von 0°C eine Ausgangsspannung von 0mV und bei 100°C eine Spannung von 1000mV bzw. 1V erwartet, was ein linearer Zusammenhang voraussetzt. Es kann demnach anhand der gemessenen Ausgangsspannung in mV die entsprechende Temperatur bestimmt werden. Für eine gemessene Ausgangsspannung von 120 mV lässt sich also die entsprechende Spannung folgendermaßen bestimmen:
(1)
Bei einer Zimmertemperatur von ca. 25°C kann dieser linearen Umrechnungsmethode zu Folge eine Ausgangsspannung von 200mV erwartet werden.
Anwendung und Aufgabe von Arduino
Das hier angewendete Anschluss- bzw. Steuerungsmodul in der Arduino Uno, welcher einen Analog-Digitalwandler des Atmel Chips Atmega328 mit einer Auflösung von 10-bit hat. Das entspricht 1024 digitalen Wertemöglichkeiten, welche sich im Bereich zwischen 0 und 1023 erstrecken. Da der Controller hier mit einer Betriebsspannung von 5V betrieben wird und diese auch als Referenzspannung des AD-Wandlers gilt, beträgt nach der oben dargestellten Umrechnungsformel die kleinste zu messende Spannung 4,88 mV für jeden digitalen Schritt 5000mV / 1024 = 4,88mV
(2)
Um nun den oben angenommenen Spannungswert von 120mV bei 12°C mit dem Arduino zu kriegen, muss der vom AD-Wandler ausgegebene Digitalwert nur noch mit den 4,88mV je Schritt multipliziert werden. Oder im Umkehrschluss wird bei 12°C und damit 120mV Ausgangsspannung des Temperatursensors ein digitaler Wert von überschlägig 25 je nach Toleranz erwartet.
120 mV / 4,88mV = 24,59
Projektdurchführung
Die Strecke zum Ziel dieser Arbeit entspricht den folgenden Arbeitsschritten:
Nach der hier definierten Philosophie musste die funktionsfähige Schaltung der Hardware-Bestandteile die grundsätzliche Voraussetzung zur Überleitung zu Software. Die funktionierende Software sollte dann auf die Hardware implementiert werden, um die Messdaten bekommen zu können.
Schaltung
Erster Arbeitsschritt war die Beschaltung der Bauelemente. Zunächst musste der LM35-Sensor mit dem Arduino UNO Board verbunden werden. Daneben sollten noch einige zusätzliche Überprüfungseinheiten (LED, Widerstand)hinzugeschaltet werden. Es entstand somit die auf der unteren Abbildung zu sehende Schaltung.
Nächster Schritt nach dem erfolgreichen Testen der Schaltung durch eine einfache Einspeisung mit einer Spannung von 5 V war die softwaremäßige Steuerung.
Quellcode
Programmierung
Die ersten softwaremäßigen Einstellungen erfolgten mithilfe der grundsätzlichen Informationen aus Internet. Tiefere Auseinandersetzung mit dem Thema kam in Frage bei der Suche der Möglichkeit, Daten auf dem Arduino möglichst zuverlässig für den Anwendungsfall zu speichern. Als endlicher Lösungsansatz erfolgte dann die durch den unteren Code dargestellte Konstellation.
Dabei wurde zum ersten mal die durch den RFID gescannte Karte codiert. Der entstehende Code wurde dann gespeichert und drauf basiert konnte dann die verschieden in der Loop Funktion zu sehenden bedingten Ereignisse realisiert werden.
Bibliotheken und Setup
// Includes und Setup-Funktion
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
#include <Servo.h>
Servo Motorsteuerung; //Servo einbinden
int geoeffnet = 0; //Variablen, die den Zustand speichern
int geschlossen = 1; //Zu Beginn ist "zu" = 1, da das Schloss ja zu ist
void setup()
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
pinMode (4, OUTPUT); //LED-Einstellung
pinMode (2, OUTPUT);
Motorsteuerung.attach(6);
...
}
Die Anwendung der Bibliotheken ermöglicht dann die Implementierung der gewünschten Steuerung des Spindes, wie man im folgenden Programmabschnitt erkennen kann.
Loop-Funktion: Öffnen und Schließen des Spindes
// Loop-Funktion
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
long Karte = 0;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Karte=((Karte + mfrc522.uid.uidByte[i])*10);
}
Serial.print("Der Transponder hat den Code:");
Serial.println(Karte);
if (Karte==RFID-Code)
{
//Nur bei den beiden registrierten Karten
…
//if-Abfrage für Änderung von geschlossen auf geöffnet
if (geschlossen==1)
{
geschlossen=0;
geoeffnet=1;
...
//Positionsänderung des Motors auf 0°
Motorsteuerung.write();
...
Karte=0;
}
}
{ …… }
Auswertung des Sensordaten
Prinzipiell sollte man sich nie auf nur einen Messwert verlassen, wenn man beabsichtigt, temperaturabhängige Aktionen auszuführen. Hier bieten sich mehrere Messungen hintereinander an, aus denen dann ein Durchschnitt gebildet wird. Es macht auch Sinn, extreme „Ausreißer“ in einem Messzyklus zu eliminieren. Den LM35 kann man kalibrieren, wenn man mittels eines Referenzmessgerätes die Temperatur-Differenz ermittelt und diese Ungenauigkeit im Programmcode berücksichtigt.
Zusammenfassung
YouTube Video
Weblinks
Literatur
--- → zurück zur Übersicht: WS 18/19: Sensortechnik (MTR)