Thermometer kalibrieren: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
Zeile 30: | Zeile 30: | ||
</spoiler> | </spoiler> | ||
Erstelle zur Messung ein kleines Hilfsprogramm, das bei Drücken der Taste A den aktuellen Messwert von PIN 0 anzeigt. | Erstelle zur Messung der beiden Temperaturwerte ein kleines Hilfsprogramm, das bei Drücken der Taste A den aktuellen Messwert von PIN 0 anzeigt. | ||
<spoiler> | <spoiler> | ||
<pre id=temp1> | <pre id=temp1> |
Version vom 21. Dezember 2021, 14:21 Uhr
Eine analoge Schaltung benötigt eine exakte Nullstellung (Kalibrierung) der Anzeigewerte. Diese Kalibrierung erfolgt hier mit 2 Temperaturmessungen mit mindestens 10 Grad Unterschied z.B. innen und außen. Am einfachsten ist es wenn man Raum- und Kühlschranktemperatur messen kann, das gelingt unabhängig von der Jahreszeit.
Zusätzlich zur Schaltung mit dem micro:bit benötigst du ein Thermometer,
etwas Geduld zur Akklimatisierung bevor gemessen wird, und die Werte des micro:bits für beide Temperaturmessungen. Der micro:bit zeigt analoge Werte umgerechnet der zur Verfügung stehenden Spannung an den PINs digital an.
1. Messung innen:
- 23,6 Grad Celsius am Thermometer
- micro:bit zeigt den Wert 508
2. Messung außen (od. Kühlschrank):
- 9,9 Grad Celsius am Thermometer
- micro:bit zeigt den Wert 329
Wie die Umrechung der gemessenen Werte in eine Temperatur funktioniert wird im Bild Umrechnungstabelle und -formel hier daneben erklärt.
<spoiler>
Wenn du keine Zeit für eine exakte Kalibrierung aufwenden kannst oder kein Thermometer zur Verfügung steht, verwende einfach folgende Werte:
c = 199.65
und
m = 13.066
x = (y - c) / m d.h. x = (Messwert micro:bit - 199.65) / 13.066 = Temperaturwert </spoiler>
Erstelle zur Messung der beiden Temperaturwerte ein kleines Hilfsprogramm, das bei Drücken der Taste A den aktuellen Messwert von PIN 0 anzeigt. <spoiler>
input.onButtonPressed(Button.A, function () { TempWert = pins.analogReadPin(AnalogPin.P0) basic.showNumber(TempWert) basic.pause(1000) })
</spoiler>