HackMD
  • Prime
    Prime  Full-text search on all paid plans
    Search anywhere and reach everything in a Workspace with Prime plan.
    Got it
      • Create new note
      • Create a note from template
    • Prime  Full-text search on all paid plans
      Prime  Full-text search on all paid plans
      Search anywhere and reach everything in a Workspace with Prime plan.
      Got it
      • Sharing Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • More (Comment, Invitee)
      • Publishing
        Everyone on the web can find and read all notes of this public team.
        After the note is published, everyone on the web can find and read this note.
        See all published notes on profile page.
      • Commenting Enable
        Disabled Forbidden Owners Signed-in users Everyone
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Invitee
      • No invitee
      • Options
      • Versions and GitHub Sync
      • Transfer ownership
      • Delete this note
      • Template
      • Save as template
      • Insert from template
      • Export
      • Dropbox
      • Google Drive
      • Gist
      • Import
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
      • Download
      • Markdown
      • HTML
      • Raw HTML
    Menu Sharing Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Versions and GitHub Sync Transfer ownership Delete this note
    Export
    Dropbox Google Drive Gist
    Import
    Dropbox Google Drive Gist Clipboard
    Download
    Markdown HTML Raw HTML
    Back
    Sharing
    Sharing Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Note Permission
    Read
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Write
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    More (Comment, Invitee)
    Publishing
    Everyone on the web can find and read all notes of this public team.
    After the note is published, everyone on the web can find and read this note.
    See all published notes on profile page.
    More (Comment, Invitee)
    Commenting Enable
    Disabled Forbidden Owners Signed-in users Everyone
    Permission
    Owners
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Invitee
    No invitee
       owned this note    owned this note      
    Published Linked with GitHub
    Like BookmarkBookmarked
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # Von kalten Füßen zu -1°C - so werden Temperaturen gemessen <center><img src="https://cdn.instructables.com/FWY/656Z/J1V7XTFM/FWY656ZJ1V7XTFM.MEDIUM.jpg"></center> --- Täglich vermessen tausende technische Geräte mithilfe von Sensoren unsere Umwelt, reagieren anhand der Ergebnisse oder speichern sie in Datenbanken ab. Sind die Daten einmal erfasst, wirken sie wie kleine Wahrheiten, mit denen wir z.B. die Wasser- oder Luftqualität erforschen. Auf dem Weg dahin kann aber vieles schiefgehen. Für unseren Alltag ist es also gut zu wissen, wie solche Daten entstehen, um Fehler erkennen und interpretieren zu können. Thema dieses Workshops ist jener Weg, vom natürlichen Ereignis zum digitalen Zahlenwert. Am Beispiel eines Temperatursensors, eines sogenannten Heißleiters oder auch Thermistors, werden wir gemeinsam mit Marie erforschen, was beim Erfassen einer Temperatur passiert. --- **Dazu benötigen wir folgendes:** - [ ] [Heißleiter (10k Ohm bei 25°C)](https://www.reichelt.de/Heissleiter-Varistoren/NTC-0-2-10K/3/index.html?ACTION=3&LA=446&ARTICLE=13553&GROUPID=3114&artnr=NTC-0%2C2+10K&SEARCH=hei%25C3%259Fleiter) - [ ] [Widerstand (10k Ohm)](https://www.conrad.de/de/kohleschicht-widerstand-10-k-axial-bedrahtet-0207-025-w-yageo-cfr-25jt-52-10k-1-st-1417697.html) - [ ] [Arduino UNO](http://www.ebay.de/itm/New-SunFounder-Lab-Arduino-Uno-R3-Development-Board-ATMEGA328P-ATMEGA16U2-2012-/371760736256?hash=item568eaaa800:g:SzEAAOxySoJTTPLI) - [ ] [3 Steckkabel](https://www.amazon.de/Neuftech-20cm-Steckbr%C3%BCcken-Drahtbr%C3%BCcken-Raspberry/dp/B00NBNIETC/ref=sr_1_6?ie=UTF8&qid=1506432258&sr=8-6&keywords=jumper+kabel) - [ ] [Steckplatine](http://www.ebay.de/itm/like/262511436575?chn=ps&dispItem=1) - [ ] USB Kabel (das ist beim Arduino dabei) - [ ] [Multimeter](https://de.wikipedia.org/wiki/Multimeter) - [ ] Notebook --- ## Eckdaten | Dauer | Anschaffungskosten | Vorkenntnisse | Vorbereitungszeit | | -------- | ------------------ | ------------------ |--------- | | ~ 4 h | ~ 15€ | | ~ 2 h | | empfohlene Arbeitsweise | | ------------- | | 2er Teams | --- ## Ein Tag im Winter Marie ist verärgert: In ihrem Zimmer zieht ihr die Kälte in die Glieder, das digitale Thermometer der Heizung zeigt allerdings 20°C an. "Es ist auf jeden fall kälter!", denkt sich Marie. Etwas kann nicht stimmen. Erst neulich wurde der Display des Thermometers ausgetauscht und die Heizung selbst überprüft, an ihnen kann es also nicht liegen. "Mh", denkt sich Marie, "die Heizung weiß also gar nicht, dass es kalt ist. Sie bekommt falsche Informationen, also Datenmüll - wie ihr Vater immer sagt. Aber was das wohl sind, Daten? Vielleicht kann ich der Heizung ja auf die Sprünge helfen!" --- ## Daten - die Sprache der Computer <center><img src="https://cdn.instructables.com/FU7/I69H/J20P2QVH/FU7I69HJ20P2QVH.MEDIUM.jpg"></center> Daten können in verschiedener Form vorliegen. In der Regel sind es Zahlen oder Buchstaben, die Informationen repräsentieren und durch Computer verarbeitet werden können. <details> <summary>Was bedeutet das genau?</summary> Die Semiotik, die Zeichentheorie, unterscheidet die physischen Ereignissen von den Begriffen, die sie beschreiben sowie die Symbole, die die Beschreibungen repräsentieren. Dieser Zusammenhang wird im <a href="https://de.wikipedia.org/wiki/Semiotisches_Dreieck">Semiotischen Dreieck</a> abgebildet. <center><img src="https://upload.wikimedia.org/wikipedia/commons/f/ff/Semiotischesdreieck.jpg"><br></br>CC-BY-SA 3.0 @SteinundBaum</center> </details><br> Wir spüren z.B., dass es wärmer wird und nennen diesen Vorgang einen Temperaturanstieg, den wir im europäischen Raum mit einer Zahl sowie der Einheit Grad Celsius (°C) beschreiben. Indem wir diesen Vorgang messen, können wir ihn in Zahlen ausdrücken und mit Computern weiterverarbeiten. So kommt die Heizung an die Messdaten, die sie benötigt, um sinnvoll arbeiten zu können. <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Sind das Daten? Diskutiert gemeinsam und setzt einen Haken, wenn ihr zustimmt. Euch fällt noch mehr ein? Dann fügt es einfach ein:* - [ ] Freude - [ ] 27 - [ ] Baumart: Birke, Höhe: 24m, gepflanzt: 1972 - [ ] bunte Blätter - [ ] 001101111011100001011110 - [ ] Marie, weiblich, 16 Jahre - [ ] ... --- Daten repräsentieren also das, was wir Menschen zum Beispiel als Temperatur bezeichnen. Arbeitet die Heizung falsch, kann es nicht direkt an den Daten liegen, denn sie sind ja nur die Träger der Informationen. Der Grund muss an ihrer Quelle zu finden sein, an den Messinstrumenten oder Fühlern. "Okay", denkt sich Marie, "dann baue ich mir einen eigenen Fühler. Damit kann ich dann herausfinden, ob der der Heizung falsch liegt. Aber wo fange ich an? Woraus besteht so ein Fühler?" --- ## Marie baut sich ihr eigenes Thermometer <center><img src="https://cdn.instructables.com/FUT/BXHD/J20P2QWD/FUTBXHDJ20P2QWD.MEDIUM.jpg"></center> Im Messen liegt die Schwierigkeit. Denn der Mensch hat sich den Begriff "Temperatur" ausgedacht und festgelegt: Wenn Wasser bei normalem Luftdruck beginnt zu gefrieren, nennen wir das 0°C. <center><iframe width="560" height="315" src="https://www.youtube.com/embed/B-YRHgFsDtw" frameborder="0" allowfullscreen></iframe></center> Wenn sich aber nun die Temperatur erhöht, ist der genaue Temperaturwert sehr schwer durch Finger und Augenmaß festzustellen. Deswegen wurden Messtechniken entwickelt, die da genauer sind. Der Mensch hat beobachtet, dass nicht nur Wasser sondern auch viele andere Materialien ihren Zustand verändern, wenn sich die Temperatur ändert. Z.B. ändern Metalle ihre elektrische Leitfähigkeit. Wenn sich die Temperatur verändert, leiten sie Strom besser oder schlechter, ihr Widerstandswert verändert sich, der als "Ohm" bezeichnet wird. Und so wurden Wege gefunden, die elektrische Leitfähigkeit mancher Metalle in Temperaturwerte umzurechnen. --- ### Das braucht Marie für ihr Thermometer Damit sind wir beim Thermistor. Der Thermistor ist ein elektrischer Widerstand, der seinen Widerstandswert ändert, wenn sich die Temperatur verändert. Wenn es z.B. 25°C sind, hat der Thermistor einen Widerstand von 10.000 Ohm, bei 30°C 7942 Ohm, bei 35°C 6327 Ohm usw. D.h.: Umso mehr wir dieser Wertepaare kennen, desto genauer können wir die Temperatur angeben. <details> <summary>Was ist ein elektrischer Widerstand?</summary> Ein Widerstand ist in einem Stromkreis wie eine Verengung in einer Wasserleitung zu verstehen: Wenn von einem Berg durch ein dickes Rohr Wasser fließt, hat es eine bestimmte Fließkraft, die vom Durchmesser des Rohres und dem Höhenunterschied abhängt. Ist nun das Rohr an einer Stelle schmaler, ergibt sich für das Wasser ein Widerstand und es fließt schwächer. Die Menge an Wasser, die an einer Stelle in einer bestimmten Zeit fließt, nennt man Strom. Die Kraft, mit der sich der Strom bewegt, kann Spannung genannt werden. <center><iframe width="560" height="315" src="https://www.youtube.com/embed/Je22SgH8TCk?rel=0" frameborder="0" allowfullscreen></iframe></center> </details><br> Wenn wir also messen wollen, welche Temperatur wir haben, müssen wir messen, welchen Widerstand der Thermistor hat. <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Diskutiert gemeinsam, wie ihr an den Widerstandswert des Thermistors kommt* <details> <summary>So ermittelt ihr den Widerstandswert</summary> Der Widerstandswert ist nicht direkt messbar. Um an ihn zu kommen, müssen wir einen Trick anwenden und ein bisschen Mathe. Dazu nehmen wir eine Grundgleichung der Elektrotechnik, das Ohmsche Gesetz:<br><br> **U = R \* I** U = Spannung in Volt R = Widerstand in Ohm I = Strom in Ampere </details><br> Wie im Klapptext beschrieben, hängen Strom, Spannung und Widerstand miteinander zusammen. Ist der Widerstand hoch, wird mehr Spannung benötigt, um einen bestimmten Strom durch einen elektrischen Leiter fließen zu lassen. U = R * I beschreibt diesen Zusammenhang. Während U das Formelzeichen für die Spannung (in Volt) ist, beschreiben R den Widerstand (in Ohm) und I den Strom (in Ampere). Wenn wir also den Strom und die Spannung kennen, lässt sich der Widerstand leicht berechnen. Dafür muss die Gleichung nur nach R umgestellt werden: R = U / I. Also messen wir den Strom und die Spannung und ermitteln dann die Temperatur mit Hilfe des Ohmschen Gesetzes? --- ### Leicht gesteckte Beinchen: Die Schaltung Marie steckt den Thermistor auf ein Steckbrett, verbindet ihn mit (+) und (-) einer 5 Volt Stromquelle und versucht zu messen. Dafür hält sie das blaue (schwarze) Kabel des Multimeters an (-) und das rote an (+). Vorher hat sie das Messgerät darauf eingestellt, Gleichspannung zu messen. Mit zwei Fingern umfasst sie den Temperatursensor, damit er wärmer wird, um zu erkennen, ob sich die Spannung verändert. <img alt="" src="https://github.com/okfde/edulabs/blob/master/assets/img/projects_extern/Sensorworkshop_Aufbau_1.jpg?raw=true" /> <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Versucht es auch einmal. Welches Messergebnis erhaltet ihr? Kann das stimmen?* <details> <summary>So funktioniert die Steckplatine</summary> Die roten Linien zeigen, was im Gehäuse des Steckbrettes miteinander verbunden ist. <img alt="" src="http://starthardware.org/wp-content/uploads/2014/10/4_2_breadboard1.png" /> </details> --- ### Und wo steht die Temperatur? Analoges Messen Marie wundert sich, wahrscheinlich ist es euch auch so gegangen: Das Messgerät hat genau die Spannung angezeigt, die sie selbst angeschlossen hat. Sonst hat sich nichts verändert. Egal ob sie den Sensor mit der Hand aufgewärmt hat oder nicht. Es scheint noch etwas zu fehlen, damit Marie den Widerstand des Thermistors richtig ermitteln kann. <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Habt ihr eine Idee, woran das liegen kann, dass das Messgerät immer eure Gesamtspannung anzeigt?* <details> <summary>Die Lösung: Der Spannungsteiler</summary> Legen wir das Messgerät an den Thermistor an, wird immer die Spannung U_gesamt herauskommen, da ein Referenzpunkt fehlt, mit dem der Spannungsabfall am Thermistor selbst gemessen werden kann. Das Messgerät kann also gar nicht messen, was in unserem Sensor vorgeht, weil wir immer nur die Versorgungspannung messen. Um zur Spannung des Sensors und damit zu unserer Temperaturmessung zu kommen, können wir uns wieder eines Trickes bedienen, des Spannungsteilers. Der schafft uns den benötigten Referenzpunkt durch einen getrennten Bereich, der nur indirekt mit der Versorgungspannung verbunden ist. Den Spannungsteiler erhalten wir, wenn wir einen weiteren Widerstand hinzufügen, den wir genau kennen, den 10k Ohm Widerstand. <img alt="" src="https://github.com/okfde/edulabs/blob/master/assets/img/projects_extern/Sensorworkshop_Aufbau_2.jpg?raw=true" /> Wenn wir jetzt den (+) Pol des Multimeters mit der mittleren Verbindung von Thermistor und Widerstand verbinden und den (-) Pol mit dem (-) Pol der Versorgungsspannung, messen wir die Spannung an U2 und können mit Hilfe folgender Formel den Widerstand R1 des Sensors berechnen: **R1 = (R2*Ugesamt)/U2 - R2** <details> <summary>Die Formel des Spannungsteilers</summary> Wenn, wie beim Spannungsteiler, zwei Widerstände in Reihe geschaltet sind, dann dürfen ihre Widerstandswerte addiert werden. Das Ergebnis nennt man dann Ersatzwiderstand. Gleiches gilt dann auch für das Ohmsche Gesetz, mit dem wir beide Widerstände berechnen können. Wir erinnern uns:<br><br> `U = R * I` Gleiches gilt auch für die Widerstände R2 und den Thermistor R1: `U1 = R1 * I und U2 = R2 * I` Bei einer Reihenschaltung können wir R1 und R2 addieren, d.h.: ``` R_gesamt = R1 + R2 U_gesamt = R_gesamt * I ``` Formen wir letzteres um, so erhalten wir: `I = U_gesamt / R_gesamt` Wenn wir jetzt den aktuellen Widerstand R1, unseren Thermistor, berechnen möchten, können wir I einfach durch den letzten Schritt ersetzen: `U1 = R1 * I <=> U1 = R1 * (U_gesamt / R_gesamt)` Stellen wir die Gleichung nach R1 um, so erhalten wir: **R1 = (R2*Ugesamt)/U2 - R2** </details><br> Haben wir den aktuellen Widerstand berechnet, <a href="http://cdn-reichelt.de/documents/datenblatt/B400/NTC-02_Serie.pdf">schauen wir in einer Tabelle die Temperatur nach</a> (S. 79, Spalte 6.103). </details> --- ### Sind das jetzt Daten? Marie hat jetzt ihr eigenes Temperaturmessgerät gebaut. Allerdings benötigt sie dafür immer auch noch ein Multimeter, um die Spannung zu messen. Außerdem muss sie anschließend die Spannung in einen Widerstand umrechnen und dann <a href="http://cdn-reichelt.de/documents/datenblatt/B400/NTC-02_Serie.pdf">in einer Tabelle nach der Temperatur nachschlagen</a> (S. 79, Spalte 6.103). Das ist noch sehr umständlich. <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Aber wie gelangen diese Informationen jetzt zu der Heizung? Sind das jetzt schon Daten? Findet es gemeinsam heraus.* --- ### Für den Computer übersetzen: digitales Messen In einer modernen Heizung steckt ein Mikrocontroller, das ist ein Ein-Chip-Computer. Diese sehr kleinen Computer befinden sich in vielen Geräten des Alltages und steuern zum Beispiel eure Waschmaschine. Mikrocontroller zeichnen sich dadurch aus, dass wir an sie recht einfach Sensoren oder Aktoren, z.B. Leuchtdioden, anschließen können. Sie arbeiten mit Daten. Also eindeutige Zahlen, die z.B. Zustände unseres Alltages repräsentieren. Diese Zustände müssen allerdings erst in die Sprache des Mikrocontrollers übersetzt werden. Das schaffen sie auch selbst, sofern wir es ihnen beibringen. Marie verwendet ein Arduino UNO, auf dem ein solcher Mikrocontroller verbaut ist. ![](http://starthardware.org/wp-content/uploads/2014/10/arduino-angeschlossen.jpg) <center>CC BY-SA 4.0 2018 — <a href="http://starthardware.org"/>Stefan Hermann</a><br><br></center> Damit dieser arbeitet, muss er programmiert werden. Das passiert z.B. mit Hilfe eines Notebooks. [Dort muss die Arduino IDE installiert sein](http://starthardware.org/lektion-1-vorbereitung/). Das ist ein Programm, mit dem ihr selbst Programme in der [Programmiersprache C](https://de.wikipedia.org/wiki/C_(Programmiersprache)) schreiben (keine Sorge, [das ist schnell gelernt](https://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Kontrollstrukturen)) und auf Mikrocontroller übertragen könnt. Dabei müsst ihr euch nur an eine vorgegebene Struktur halten. <details> <summary>Die Basisstruktur von Arduino - eine Einführung für den ersten Start</summary> Jedes Programm besteht aus folgenden zwei Teilen: der **void setup(){}** und der **void loop(){}** Funktion Diese beiden Funktionen machen genau das, was ihre Namen sagen: In der Ersten wird festgelegt, was in der Zweiten verwendet wird. Die erste wird einmalig aufgerufen, wenn der Mikrocontroller gestartet wurde. Die loop-Funktion läuft anschließend unendlich. Z.B. wird ein Pin des Mikrocontrollers als Ausgang festgelegt, damit ihr damit eine Leuchtdiode ansteuern könnt. In der loop Funktion, die der Mikrocontroller im Betrieb fortwährend abarbeitet, kann die LED dann z.B. ein und ausgeschaltet werden. **Ein erster Test - Los geht's:** Navigiert in eurer Arduino IDE Installtion über Datei/Beispiele/Basics zum Projekt "Blink" und probiert das Beschriebene einfach aus. Dazu öffnet ihr "Blink", steckt den Arduino UNO via USB an euer Notebook, wählt diesen über Werkzeuge/Board sowie über Werkzeuge/Port aus und klickt im Editor auf den Pfeil nach rechts "Hochladen" - fertig. Jetzt sollte auf eurem Arduino Board eine Leuchtdiode blinken. [Hier findet ihr ein paar Einsteiger-Projekte](http://starthardware.org/), mit denen ihr den Arduino kennenlernen könnt. </details><br> Inzwischen kennen wir den Mikrocontroller und haben zuvor erste Temperaturmessungen gemacht. Die Messungen waren aber noch sehr aufwändig. Besser wäre es, wenn das automatisch ablaufen würde und wir die Daten direkt verarbeiten könnten. Das geht mit unserem Mikrocontroller. Denn mit diesem können wir ebenfalls eine Messung durchführen, sofern wir ihn so programmieren. Mit folgender Funktion ist das möglich: **analogRead(pin)** <details> <summary>Was sind Funktionen?</summary> Eine <a href="https://de.wikipedia.org/wiki/Funktion_(Programmierung)">Funktion</a> ist ein kleines Programm, das in größere Programme eingefügt wird. Viele solcher Funktionen wurden bereits geschrieben. Wir können auf sie zugreifen, indem wir eine Bibliothek einbinden, in der sie hinterlegt ist. Wir können aber auch selbst welche schreiben. </details><br> Mit ihr erfolgt ein grundlegender Schritt der Datenverarbeitung, die Analog-Digital-Wandlung: Durch die Funktion analogRead(pin) wird ein analoges Signal (z.B. eine Spannung), das an "pin" anliegt, digitalisiert. Mit der Analog-Digital-Wandlung übersetzt sich der Mikrocontroller also das, was in der Natur passiert, in seine eigene Sprache. <details> <summary>Analog, digital - wo liegt der Unterschied?</summary> <center><iframe width="560" height="315" src="https://www.youtube.com/embed/btgAUdbj85E?rel=0" frameborder="0" allowfullscreen></iframe></center> </details><br> Letztendlich macht der Mikrocontroller nichts anderes, als das, was wir mit dem Messgerät gemacht haben, mit einer Ausnahme: Er misst die Spannung an "pin" und weist das Ergebnis einem Zahlenwert zwischen 0 und 1023 zu (Umso größer diese Zahl ist, desto genauer ist die Messung). Das macht er so schnell, wie wir es ihm sagen und wie es sein Prozessor erlaubt. Möchten wir daraus den Spannungswert berechnen, müssen wir das Ergebnis der Wandlung wieder umwandeln, also mit 5V/1024 multiplizieren. Wenn uns der Mikrocontroller den Wert 788 zurück gibt, so erhalten wir durch die Multiplikation mit 5V/1024 3,8 Volt. Der Code für die Digitalisierung und die Rückgabe des digitalisierten und umgerechneten Spannungswertes ist folgendermaßen: ``` void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 1: float sensorValue = analogRead(A0) * (5.0/1024.0); // print out the value you read: Serial.println(sensorValue); // delay in between reads for stability delay(1); } ``` Bevor wir den Code auf den Mikrocontroller übertragen, muss die Termistor-Schaltung über ein Kabel mit dem Pin A0 am Messpunkt (+) verbunden werden. ![](https://github.com/okfde/edulabs/blob/master/assets/img/projects_extern/Sensorworkshop_Aufbau_3.jpg?raw=true) Auch (+) 5V sowie GND (-) müssen vom Mikrocontroller kommen. Die Funktion "Serial.println(message)" ermöglicht es, Zustände im Mikrocontroller an unser Notebook zu senden. Um Serial.println() nutzen zu können, muss in der Funktion "setup()" vorher die Sendegeschwindigkeit festgelegt worden sein. Im Beispiel sind das 9600 [bits](https://de.wikipedia.org/wiki/Bit) pro Sekunde. Anschließend müssen wir in der Arduino IDE über "Werkzeuge" den Seriellen Monitor starten. <details> <summary>Was passiert da genau?</summary> Mit Searial.begin(9600) wird in der Setup Funktion die serielle Datenübertragung initialisiert und die Geschwindigkeit von 9600 bits/s gesetzt. Anschließend startet die loop() Funktion. In dieser wird immer wieder eine float Variable namens "sensorValue" erstellt und dieser der mit 5/1024 multiplizierte Wert zugewiesen, der durch die Analog-Digital-Wandlung bestimmt wurde. Anschließend sendet der Mikrocontroller den Inhalt der Variable mithilfe der Searial.println() Funktion an unser Notebook, wartet ganz kurz delay(1) und beginnt von Vorne. </details><br> Wir können also jetzt mit dem Mikrocontroller einen Spannungswert messen. Noch fehlt aber die Umrechnung in einen Widerstandswert und die anschließende Interpretation der Temperatur. Bisher haben wir das mit Hilfe der Tabelle gemacht. Diese haben wir allerdings auf dem Mikrocontroller noch nicht abgelegt, da sie einen Haken hat: sie ist ungenau. Denn die meinsten Datenblätter geben den Widerstandswert nur alle 5°C an, die Werte dazwischen fehlen. Schöner wäre auch, wenn wir die Tabelle gar nicht mehr brauchen und die Temperatur direkt ausrechnen könnten. Das geht und lässt sich wieder mithilfe eines Trickes lösen: Wenn wir die Spannungswerte in Abhängigkeit von der Temperatur in ein Koordinatensystem übertragen, dann ist ein kontinuierlicher Verlauf zu sehen. Durch die Mathematik wissen wir, dass eine solche Regelmäßigkeit auch durch eine Funktion ausgedrückt werden kann. Finden wir also eine Funktion, die unserer Folge von Widerstandswerten ähnelt, lassen sich mit ihr die fehlenden Werte ermitteln. Um das zu erreichen, können wir uns eines Tabellenkalkulationsprogrammes bedienen. Das geht folgendermaßen: Erst tragen wir die Temperaturwerte in eine Spalte ein, daneben die Widerstandswerte. Anschließend nutzen wir das umgeformte Ohmsche Gesetz U2 = R2 * (U_gesamt / R_gesamt) und berechnen die Spannungswerte für den Messwiderstand R2, die wir in eine Spalte neben die Temperaturwerte schreiben. Jetzt haben wir zu jedem Widerstandswert eine Temperatur und einen Spannungswert. Die beiden letzten Spalten markieren wir und weisen das Programm an, diese als x und y Werte in ein Koordinatensystem zu zeichnen. ![](https://github.com/okfde/edulabs/blob/master/assets/img/projects_extern/Verlauf_Temperatur_Spannung.png?raw=true) Anschließend rechts-klicken wir auf die nun sichtbare Folge von Punkten und wählen "Trendlinie einfügen" aus. Nun probieren wir verschiedene der angebotenen Trendfunktionen aus und wählen die, die unserer Punktfolge am nächsten ist. <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Wie nennt sich die Funktion, die eurer Punktfolge am nächsten ist?* <details> <summary>Diese Funktion sollte am besten passen</summary> Es sollte sich um eine <a href="https://de.wikipedia.org/wiki/Polynom">polynomische</a> Trendfunktion handeln. Ist eine passende gefunden, wählen wir zum Schluss in diesem Auswahlfenster "Gleichung anzeigen" aus - fertig. </details><br> Nun müsste etwa folgendes in eurem Chart zu sehen sein: ![](https://github.com/okfde/edulabs/blob/master/assets/img/projects_extern/Formel_Workshop.png?raw=true) Mit dieser Gleichung lässt sich nun die Temperatur direkt berechnen, sofern wir den aktuellen Spannungswert unserer Thermistor-Schaltung kennen. Passen wir den Code von vorhin unseren neuen Erkenntnissen an, sieht er beispielsweise so aus: ``` // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 1: float sensorValue = (analogRead(A0)*(5.0/1023.0)); double temp = 1.0304979225*pow(sensorValue,4) - 8.8852088479*pow(sensorValue,3) + 26.7473408985*pow(sensorValue,2) - 13.6032287304*sensorValue - 8.9327944109; // print out the value you read: Serial.println(temp); delay(1); // delay in between reads for stability } ``` Zugegeben, die vielen Nachkommastellen machen den Code nicht gerade übersichtlich. Übertragen wir diesen auf unseren Mikrocontroller, so erhalten wir über den Seriellen Monitor eine ungefähre Temperaturangabe. **Glückwunsch, du hast ein digitales Thermometer gebaut!** --- ## Es geht: Mein Thermometer funktioniert Marie ist fertig, ihr Termometer funktioniert. Und tatsächlich, es zeigt einen Wert an, der ihren kalten Füßen viel mehr entspricht. Der Temperatursensor der Heizung scheint also kaputt zu sein. Aber kann sie sich sicher sein, dass ihr eigenes Termometer wirklich richtig ist? <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i> *Vergleicht eure Ergebnisse. Fällt euch etwas auf? Diskutiert gemeinsam.* <details> <summary>Diskussion - Messen und Wahrheit</summary> Wenn du das Ergebnis jetzt mit anderen Thermometern vergleichst, wird dir auffallen, dass es starke Abweichungen gibt. Das liegt in erster Linie an der Toleranz eines jeden Thermistors. Das ist ein Wert, der in Prozent angibt, wie stark die Widerstandswerte von der Norm abweichen können. Um solche Ungenauigkeiten zu vermeiden, muss unser Thermometer, wie jedes Messgerät, kalibriert werden. Dazu nimmt man ein sehr genaues Temperaturmessgerät, was kalibriert ist und misst die Abweichung des selbstgebauten Sensors. Die Abweichung wird dann im Code unseres Sensors berücksichtigt. Neben dieser Standardabweichung sind noch viele andere Messfehler möglich. Z.B. können Materialermüdung, Verschmutzungen am Sensor, ungünstige Aufstellungsorte des Messgerätes und Schwankungen der Stromversorgung das Messergebnis verfälschen. Wenn mit Messdaten gearbeitet wird, müssen diese Aspekte unbedingt berücksichtig werden, weil es sonst zu Fehlinterpretationen und -entscheidungen kommen kann. </details> --- <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br/><p>Inhalte dieses Materials sind, sofern nicht anders angegeben, nach <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons 4.0</a> Attribution lizenziert.</p>

    Import from clipboard

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lost their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template is not available.


    Upgrade

    All
    • All
    • Team
    No template found.

    Create custom template


    Upgrade

    Delete template

    Do you really want to delete this template?

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Tutorials

    Book Mode Tutorial

    Slide Mode Tutorial

    YAML Metadata

    Contacts

    Facebook

    Twitter

    Feedback

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions

    Versions and GitHub Sync

    Sign in to link this note to GitHub Learn more
    This note is not linked with GitHub Learn more
     
    Add badge Pull Push GitHub Link Settings
    Upgrade now

    Version named by    

    More Less
    • Edit
    • Delete

    Note content is identical to the latest version.
    Compare with
      Choose a version
      No search result
      Version not found

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub

        Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

         Sign in to GitHub

        HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Available push count

        Upgrade

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Upgrade

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully