Temperatur Luftfeuchtigkeit

http://sites.schaltungen.at/arduino-uno-r4/temperatur-luftfeuchtigkeit

http://www.linksammlung.info/

http://www.schaltungen.at/

                                                                                        Wels, am 2018-03-31

BITTE nützen Sie doch rechts OBEN das Suchfeld  [                                                              ] [ Diese Site durchsuchen]

DIN A3 oder DIN A4 quer ausdrucken
*******************************************************************************I**
DIN A4  ausdrucken   siehe     http://sites.schaltungen.at/drucker/sites-prenninger
********************************************************I*
~015_b_PrennIng-a_arduino-uno-r4/temperatur-luftfeuchtigkeit (xx Seiten)_1a.pdf

Unter 15°C Wandtemperatur Gefahr eines Schimmelschadens !

Wandtemperatur soll nicht unter - 4°C der Lufttemperatur liegen !

Berechnung des Feuchtegehaltes der Raumluft
Berechnung der relativen Luftfeuchtigkeit     % r.F
Berechnung der absoluten Luftfeuchtigkeit  g/m3
Berechnung desTaupunktes


Siehe auch
http://sites.schaltungen.at/haus/

Temperatur und relative Luftfeuchtigkeit %r.F (RH)

absolute Luftfeuchtigkeit  Luftfeuchtigkeit g/m3


********************************************************I*

Thermohygrometer


********************************************************I*

Temperatur und Luftfeuchte Sensoren   (Hymidity Sensor)

DHT11 (alt)   DHT21 DHT22 DHT-22 -  seriell
ESP8266
DS18B20                                 
- one wire
AM2301 AM2302 oder DHT22
   adafruit AM2302 (wired DHT22) temperature-humidity sensor
BOSCH
BMP280 (bisher BMP180)                  - Barometer Sensor 
Adafruit BMP280 Barometric Pressure + Temperature Sensor Breakout
        GY-BMP280-3.3
Hochpräzises Atmosphären Drucksensor Modul
HYT-221                                   
- genauer Sensor
TI HDC1000 HDC1008 HDC1080
MLX90614

Adafruit BME280 I2C or SPI Temperature + Humidity Pressure Sensor
MPL115A2
AM2320
DS18B20  + DS18B20 waterproof



********************************************************I*

Kalibrieren von Feuchtesensoren

Testo 0554 0660 Calibration Kit for 11.3% and 75.3% RH

testo therm Type 0554 0660  (1994)  € 349,00

testo 0554 0660 Kalibrator Luftfeuchtigkeit Kalibriert nach Werksstandard
CONRAD
Bestell-Nr.: 102225-62

Kontroll- und Abgleich-Set für testo Feuchtefühler, Salzlösung - Kontroll- und Feuchteabgleich-Set

testo Bestell-Nr. 0554 0660
https://www.testo.com/de-AT/kontroll-und-abgleich-set-fuer-testo-feuchtefuehler-salzloesu/p/0554-0660



Das Kontroll- und Abgleichset (Best.-Nr.: 0554.0660)dient zur Kontrolle und zum Abgleich von Feuchte-Fühlern.
Das Set besteht aus zwei Spezialbehältern.
Mit Hilfe von verschiedenen Salzlösungen werden Luftgemische mit definierten relativen Feuchten erzeugt.

Im Rahmen der Akkreditierung als DAkkS-Kalibrierlaboratorium für die Messgrößen ”Relative Feuchte”und ”Taupunkt”wurden die Werte für die relative Feuchte über gesättigten Lithiumchlorid (LiCl) und Natriumchlorid (NaCl) Lösungen bei Testoneu spezifiziert.
LiCl 11,3 %rF, NaCl 75,3 %rFbei Nenntemperatur +25 °C

Mit gesättigten Salz- oder Säurelösungen können definierte relative Feuchten erzeugt werden.
Eine Salzlösung bleibt gesättigt, wenn genügend Bodenkörper (nicht gelöstes Salz am Gefäßboden) vorhanden ist.
Über einer ungesättigten Salzlösung (nur noch Flüssigkeit sichtbar) kann eine definierte relative Feuchte nicht gewährleistet werden.
Es wird NaCl- und LiCl-Lösung verwendet.
Deren relative Feuchten sind nahezu temperaturunabhängig (siehe Grafik Bild 1)

Bild 1


a

Um ein Überlaufen der Salzlösung in den Meßraum zu vermeiden, die Döschen vor Schlägen, Stößen und Erschütterungen schützen.
Trotzdem entstandene Tropfen mit Fließpapier vor der Messung entfernen.



Bedienungsanleitung
400_b_testo-x_Kontroll- und Abgleichset für Feuchtesensoren -Anwendungshinweise (24 Seiten)_1a.pdf
300_d_testo-x_testo Feuchtefibel - Messtechnik und Kalibrierung [96 Seiten)_1a.pdf
PG-Verschraubung
   Prüfbehälter 12 %rF (LiCl)
      Prüfbehälter 33 %rF (NaCl)   testo therm Type 0554 0636 (1994)
         Prüfbehälter 76 %rF (NaCl
            Adapter für 3-Funktions-Sonde

testo therm Type 0554 0636 (1994)

Sensoren werden mit einzelnen gesättigten Salzlösungen in einem luftdicht verschlossenen Behälter platziert.

75,4% NaCl Natriumchlorid

Nur größeren Firmen stehen Klimakammern zur Verfügung.
Alle anderen müssen entweder einen entsprechenden Dienstleister beauftragen oder den hier vorgeschlagenen Weg beschreiten.
Wird ein geschlossenes Gefäß mit einer bestimmten gesättigten Salzlösung gefüllt, so entsteht nach kurzer Zeit in dem Luftraum über der Salzlösung eine bestimmte relative Luftfeuchtigkeit, die allerdings temperaturabhängig ist.

Wir benötigen ein ausreichend großes, dicht schließendes Gefäß, ein genaues Thermometer und einige Salzlösungen entsprechend der Tabelle.
Natriumchlorid finden wir als Kochsalz in jeder Küche oder zumindest Supermarkt.
Wegen der anderen Salze fragen Sie am besten (diesmal nicht Ihren Arzt sondern) Apotheker.
Ausreichend sind zwei bis drei verschiedene Salze für geringe und hohe Luftfeuchtigkeit.
Da die Kennlinie im Bereich zwischen den Grenzwerten bei den meisten Sensoren annähernd linear verläuft, braucht in der Kennlinienmitte für "normale" Anwendungen nicht kalibriert zu werden (eine linear arbeitende Schaltung vorausgesetzt).

Wir lösen soviel des betreffenden Salzes in destilliertem Wasser.
Je nach Größe des Gefäßes sind 200 bis 300 ml ausreichend.
Dazu rühren wir solange bis sich trotz guten Rührens kein Salz mehr auflöst.
Je wärmer das Wasser umso mehr Salz kann gelöst werden.
Günstig ist es, warmes Wasser zu verwenden und nach dem Lösen des Salzes abkühlen zu lassen.
Dann können wir sicher sein, daß kein Salz mehr gelöst werden kann: es kristallisiert am Boden aus.
Diese Lösung füllen wir in das Gefäß., in dem sich über der Lösung der Sensor (darf nicht in die Lösung tauchen) und natürlich das Thermometer befinden muß.

Jetzt wird die Luft über der Lösung mindestens 30 Minuten lang verwirbelt.
Ein kleiner Lüfter (im Gefäß !) ist dazu sehr hilfreich.
Erst nach dieser Zeit hat sich im Luftraum über der Salzlösung der entsprechende Feuchtigkeitswert eingestellt.
Wir müssen natürlich auch beachten, daß sowohl Luft als auch Sensor und Lösung die gleiche (konstante) Temperatur haben müssen.
Nur unter diesen Bedingungen stimmt das Meßergebnis.




http://www.s-elabor.de/k00002.html
https://chelifer.de/kalibrieren-von-feuchtesensoren/



4.2 Feuchtes-Tuch- / Feuchter-Lappen-Methode

Als Schnelltest zur Feststellung der ungefähren Abweichunge eines Messgeräts kann dessen Fühler mit einem feuchten Tuch umwickelt werden.
Nach ausreichender Angleichzeit (ca. 30 min bis 1 h) stellt sich unter dem Tuch eine nahezu gesättigte Atmosphäre von ca. 94 %rF bis 100 %r.F. ein.
Mit diesem schnellen, einfachen und äußerst preiswerten Verfahrenläßt sich leicht entscheiden, ob ein Messsystem noch korrekt arbeitet, oder ob eine genauere Kalibrierung mit Justage erforderlich ist.

4.3 Fixpunktzellen/Salztöpfchen
-Methode
Mit dem feuchten Tuch können Feuchtigkeitswerte unterhalb der Sättigung nicht ausreichend genau und reproduzierbar erzeugt werden.
Man nutzt statt dessen gesättigte Salzlösungen, die den Dampfdruck des Wassers verringern und mit einem Überschuss an Salz (ungelöstes Salz als Bodenkörper) in einem luftdichten Gefäß eine konstante Luftfeuchtigkeit ergeben.
Durch Wahl geeigneter Salze können über den gesamten Messbereich verschiedene Feuchtewerte eingestellt werden, die dann als Bezugsgröße für die Kalibrierung herangezogen werden können.
Eine rückführbare Kalibrierung auf nationale bzw. internationale Normale ist nur dann möglich, wenn die Salzlösungen kalibriert sind!

Die über gesättigte Salzlösungen erhaltenen Luftfeuchten sind in der DIN 50008 Teil 2 genannt.
Aus der Tabelle können die Bezugswerte bei den entsprechenden Temperaturen entnommen werden.
Sie gelten nur für ausreichende Angleichzeitenund reine Salze.
Leider werden in verschiedenen Quellen unterschiedliche Werte mit Abweichungen von bis zu 3 % r.F. angegeben:

LiCl bei 10 °C: DIN 50008:  14 %rFISA Transactions: 11,3 %rF

Es ist deshalb äußerst wichtig, die Bezugsquelle des Referenzwertes zu dokumentieren, um die Kalibrierung nachvollziehen zu können.
Sicherer ist es, Salze oder Salzlösungen von Herstellern zu beziehen, die den erzeugten Feuchtewert nachweislich bestimmt haben.
Fixpunktzellen werden auch vom Testo Industrial Services-Kalibrierlabor kalibriert und zertifiziert.
Werden Zwischenwerte benötigt, können über die Salzkonzentration auch andere Dampfdrücke eingestellt werden.
Der Zusammenhang zwischen Salzkonzentration und entstehender Luftfeuchte ist in der Literatur beschrieben.
Problematisch ist allerdings das genaue Einwiegen und der Ausgleich verdunstenden Wassers, um ausreichende Genauigkeiten zu erzielen.
Daher ist es bei eigens hergestellten Salzlösungen zwingend erforderlich, den richtigen Wert mit einem geeigneten Referenzmessgerät zu messen und diesen dann mit dem zu kalibrierenden Hygrometer zu vergleichen.
Als sichere Methode wird die Verwendung gesättigter Lösungen empfohlen.

Wasser und Lösevermögen
Das Lösevermögen von Wasser ist je nach Stoff unterschiedlich.
Vollkommen unlöslich in Wasser ist kein Stoff, aber es gibt viele Substanzen, die derart wenig löslich sind, dass sie in der Praxis als unlöslich betrachtet werden können.
Die Löslichkeit aller Stoffe ist mehr oder weniger von der Temperatur abhängig.
Bei gewöhnlichem Kochsalz (NaCl) z. B. ändert sie sich von 0 °C bis 100 °C nur sehr wenig.
Eine gesättigte Kochsalzlösung hat einen Gefrierpunkt von -21 °C, einen Siedepunkt von 108 °C und enthält 356 g NaCl/Liter bei 0 °C (359 g/L bei 25 °C).
Gegenüber reinem Wasser hat Salzwasser, obwohl es schwerer ist, eine geringere spezifische Wärmekapazität.
Diese Eigenschaft lässt sich beim Kochen nutzen, wenn man Salz in kaltes Wasser zugibt (ca. 1 % Energieersparnis).
Salzwasser hat gegenüber reinem Wasser eine erheblich (~1 Mio.-fach) größere elektrische Leitfähigkeit.

4.3.2 Mögliche Anwendungsfehler
Wichtig für einen korrekten Feuchtewert ist vor allem, dass die Salzlösung gesättigt ist.
Sättigung ist daran erkennbar, dass in der wässrigen Lösung noch ungelöste Salzkristalle vorhanden sind und ausreichend Wasser vorliegt.
Ist nicht genügend Salz in der Lösung, steigt die relative Feuchte an und die Literaturwerte können nicht als Bezugsgröße herangezogen werden.
Zweitens zeigen die erzeugten Feuchten eine gewisse Temperaturabhängigkeit.
Da dieser Effekt relativ gering ist, kann er für die meisten Anwendungen vernachlässigt werden.
Wichtig ist auch die Beachtung der Salzreinheit, da durch bestimmte Verunreinigungen der Feuchtewert erheblich verändert werden kann.
Von verschiedenen Herstellern werden solche Salze fertig konfektioniert und kalibriert angeboten, wodurch die höchste Gewähr besteht, genaue Feuchtewerte zu erhalten.

4.3.3 Einfacher Prüfbehälter

Sehr einfach lassen sich Kalibrierungen vollziehen, wenn die fertigen Salzlösungen in Prüfbehältern enthalten sind, wo sie nicht verunreinigt mehrfach verwendet werden können.
Im Mantel eines doppelwandigen Gefäßes befindet sich dieLösung, durch ein Diaphragma vom eigentlichen Messraum getrennt.
Das Diaphragma verhindert das Austreten von flüssigem Wasser in die Messkammer, wohingegen Wasserdampf passieren kann.
Die Messkammer ist gerade so groß, dass der Prüfling eingebracht werden kann, denn: je kleiner der Luftraum, desto kürzer die Angleichzeit.
Mittels Schraubverschluss wird die Kammer luftdicht verschlossen, um einen Ausgleich mit der Umgebung zu verhindern.
Messbereit sind die Salztöpfchen nur dann, wenn ein deutlich sichtbarer Salzrückstand am Boden des Gefäßes vorliegt und genügend Wasser übersteht.
Erst dann liegt eine gesättigte Lösung vor.


Kalibrierung von Hygrometern mit Hilfe von gesättigten Salzlösungen


https://helmuth-herterich.jimdo.com/kalibrierung-eines-hygrometers/


Gesättigte-Salzlösungs-Methode
- Kochsalz (NaCl Natriumchlorid) in ein Gurkenglas und mit etwas Wasser befeuchten so dass eine gesättigte Lösung entsteht.
- Hygrometer in dieses Gurkenglas luftdicht einbauen.
- 6 bis 8 Stunden warten
- nun sollten 75% relative Luftfeuchtigkeit in dem Behältnis sein


Optionale Kalibrierung

Normalerweise ist keine neue Kalibrierung des Sensors notwendig.
Er ist ab Werk auf die gespeicherte Kalibrierung eingestellt.
Für größte Genauigkeit kann der Sensor kalibriert werden.

Der einfachste Weg ist die Kalibrierung mit einem Vergleichsinstrument für relative Feuchte (Hygrometer oder Psychrometer).

Ein anderer Weg ist die Kalibrierung mit Hilfe einer Salzlösung.
Es kommt eine Zweipunkt-Kalibrierung, wie bei den meisten Sensoren, zur Anwendung.
Die Salzlösungen sorgen für eine Umgebung mit bekannter relativer Feuchte.

Wenn Sie feuchtes Salz in einem Behälter einschließen, wird die Luft darin einen bestimmten Wert für die relative Luft-Feuchte annehmen.

Die relative Luft-Feuchte ist ein wenig temperaturabhängig.

Deshalb sind in der Tabelle verschiedene Temperaturen aufgeführt.
1. Legen Sie eine Handvoll Salz auf den Boden eines Behälters (ca. 1L Volumen)
2. Fügen Sie so viel Wasser zu, dass das Salz feucht wird. Das Salz sollte nicht vollständig gelöst sein.
3. Platzieren Sie den Sensor über das Salz. Er darf das Salz nicht berühren.
4. Verschließen Sie den Behälter (wir verwenden Plastikfolie und Gummibänder).
5. Warten Sie 6h, bis die Luft im Behälter die korrekte relative Feuchte erreicht hat.
6. Wählen Sie nun den ersten Kalibrierungspunkt und geben Sie hier den Wert aus der Tabelle ein.
7. Wiederholen Sie den Vorgang mit einem anderen Salz. Lassen Sie dem Sensor genügend Zeit, sich auf den neuen Wert einzustellen.

http://vernier-in-der-schule.at/fileadmin/PDFs/RH-BTA_deutsch.pdf





Hygrometer kalibrieren in Salzlösung

https://www.humidor.de/info/hygrometer-kalibrieren.html
http://www.cwaller.de/didaktik_pdf/testo_feuchtefibel.pdf


Hygrometer kalibrieren
Ein Hygrometer wird dazu verwendet, die Luftfeuchtigkeit in geschlossenen Räumen genau zu bestimmen.
Dies kann unter anderem vor der Entstehung von zum Beispiel Schimmelpilz und den daraus resultierenden gesundheitlichen Risiken vorbeugen.
Zur einwandfreien Nutzung eines Hygrometers muss es unbedingt regelmäßig kalibriert werden, empfohlen werden halbjährliche Abstände.
Kalibrieren bedeutet, dass über die Messwerte der Luftfeuchtigkeit ein Protokoll erstellt wird, das die Abweichungen der Ist- von den Soll-Werten angibt.
Denn nur bei genauen Angaben zur Luftfeuchtigkeit kann das Hygrometer auch seinen Zweck erfüllen.

Kalibrieren leicht gemacht
Zum exakten Kalibrieren des Hygrometers wird der so genannte Taupunkt benötigt.
Ganz vereinfacht gesagt ist das der Punkt, an dem sich Feuchtigkeit auf Gegenständen ansammelt.
Über diesen Taupunkt kann dann mittels mathematisch genauer Berechnungen der Feuchtigkeitsgehalt bestimmt werden.
Je näher die Messwerte also an dem Taupunkt sind, desto genauer misst das Hygrometer die Luftfeuchtigkeit.

Damit Hygrometer auch ordnungsgemäß für die Industrie kalibriert werden können, wird in luftdichten Kammern von geringer Größe Feuchtigkeit durch gesättigte Salzlösung erzeugt.
Daraus werden Referenzangaben für die jeweilige Luftfeuchtigkeit von null bis hundert Prozent gezogen und die Feuchtfühler dementsprechend kalibriert.

Für den normalen Hausgebrauch gibt es eine wesentlich einfachere Methode mit einem Lappen, der in lauwarmem Wasser getränkt wurde.
In diesen Lappen wird das Hygrometer etwa für eine Stunde eingewickelt.
Die Anzeige wird dann dementsprechend mit einem Schraubenzieher auf 98 %r.F. angepasst und schon ist das Hygrometer kalibriert.

Auch eine Möglichkeit für zuhause, aber etwas aufwändiger, ist die Herstellung von eigener gesättigter Kochsalzlösung.
Dafür füllt man in einen gut verschließbaren, kleinen Behälter eine ganz dünne Schicht trockenes Kochsalz.
Empfohlen werden um die drei Millimeter.
Dann feuchtet man das Kochsalz mit wenig Wasser an, so dass sich das Salz nicht komplett auflösen kann und lässt es mehrere Stunden verschlossen ohne jegliche Luftzufuhr bei normaler und gleichbleibender Raumtemperatur stehen.
Sobald man das Gefäß dann öffnet, muss man sofort das Hygrometer bereit halten und es auf so schnell wie möglich auf 75 Prozent mit dem Schraubenzieher stellen entsprechend der Luftfeuchtigkeit in dem Behältnis.

Die einfachste Kalibrierung erfolgt aber noch bei elektrischen Hygrometern.
Hier muss einfach die Batterie herausgenommen und nach einer kurzen Weile wieder eingesetzt werden.
Und schon ist das Gerät wieder kalibriert.

https://hygrometer-test.de/hygrometer-kalibrieren


Kalibrierung von Hygrometern
Überprüfung von Hygrometern mit Hilfe von gesättigten Salzlösungen
Die Methode des Umwickelns mit einem feuchten Handtuch zum Kalibrieren des Hygrometers auf 98% kennt wohl jeder.
Besonders genau ist sie jedoch nicht.
Wer sein Hygrometer im normalen Messbereich überprüfen will, muss zu anderen Hilfsmitteln greifen ...

Eine gesättigte Lösung eines Salzes mit einem Überschuss an Salz (ungelöstes Salz als Bodenkörper) ergibt in einem luftdichten Gefäß eine konstante Luftfeuchtigkeit, die zum kalibrieren von Hygrometern genutzt werden kann.
Die erzielbaren Luftfeuchtigkeitswerte sind auch ohne definierte Temperatur auf ± 2% genau anzugeben und damit voll ausreichend für den Normalgebrauch.
Die Temperatur spielt dabei so gut wie keine Rolle, sie braucht nicht auf einem bestimmten Wert gehalten zu werden.
Für hochreines Natriumchlorid liegt die relative Luftfeuchtigkeit über der gesättigten Lösung
z.B. bei 10°C 75,67%r.F.   15°C 75,61%r.F.    20°C 75,47%r.F.  bei 25 °C  75,29%r.F.
Kochsalz enthält neben dem NaCl noch andere Nebenbestandteile, aber zum kalibrieren reicht das allemal.
75,4 ± 2% relative Luftfeuchtigkeit erreicht man auch damit immer.


Praktische Durchführung
Das trockene Salz wird ca. 3 mm hoch auf dem Boden eines flachen, luftdicht verschließbaren Gefäßes gestreut und dann mit Wasser angefeuchtet.
Das Salz darf sich nicht komplett im Wasser lösen, deshalb vorsichtig mit der Wassermenge sein!
Der Deckel des Gefäßes sollte durchsichtig sein.
Das Hygrometer wird auf ein Rost über der Lösung gelegt.
Bei Geräten mit Sensor kann auch der Sensor durch ein Loch im Deckel (luftdicht verschließen!) eingeführt werden.
Dafür wird dann nur ein sehr kleines Gefäß mit Deckel benötigt. Notfalls genügt auch mal ein Gefrierbeutel.


Welches Salz ist geeignet?
In der obigen Tabelle stehen die Salze und die jeweiligen relativen Luftfeuchtigkeiten für verschiedene Temperaturen.
Im Normalfall wird man mit Kochsalz NaCl arbeiten - damit erreicht man eine relative Luftfeuchtigkeit von 75,4% und gemeinsam mit der "Handtuchmethode" ha man dann schon einmal eine Zweipunkt-Kalibrierung.
Zur Kalibrierung auf den Nullpunkt nimmt man am besten wasserfreies Calciumchlorid (Granulat) oder das sogenannte Silicagel.
Silicagel ist ein Kieselgel und war früher mit einem Kobaltsalz als Feuchteindikator imprägniert.
Dieses Co-Salz ist im wasserfreien Zustand blau ... daher der Name "Blaugel" für diese Art der Trockenmittel. "

http://forum.hanfburg.de/fhb/showthread.php?t=189512


Warmes Wasser, Salz rein, rühren und wenn ein kleiner Salzberg am Boden bleibt, ist alles OK.
360 g Kochsalz auf 1 L Wasser bei 25 °C.  Rühren beschleunigt die Auflösung

Du nimmst Wasser und Kochsalz und kippst das Kochsalz ins Wasser.
Dann rührst Du und gibst ggf. weiteres Salz dazu.
Für einen 1/2 Liter Wasser kannst Du mal grob 180g Salz rechnen.
Rühren und zwar einige Minuten.
Wenn sich dann trotzt des Rührens nichts mehr löst und der Rest des Salzes sich auf dem Boden absetzt, dann ist die Lösung gesättigt.
Die Trübung, die sich bei käuflichem Speisesalz ergibt, resultiert aus den sog. Rieselhilfen, die setzen sich dann aber auch wieder ab, stören aber erst mal nicht, auch wenn sie sich nicht absetzen sollten.
Bei Kochsalz stellt sich dann eine rel. Feuchte von etwa 75,4 % (bei 20°C) ein.




********************************************************I*

Arduino Projekte

01. Ampel mit Arduino für Autos und Fußgänger
02. Der einfache Weg, viele LEDs mit Arduino steuern -
WS2812
03. Temperatur und Luftfeuchtigkeit messen - DHT22
04. Accelerometer - ADXL335
05. Arduino zu MySQL via WiFi
06. Wie steuert man einen Motorfader mit Arduino?
07. Funkübertragung von Messwerten mit dem RF Link Modul (Receiver und Transmitter)  RWS-371
08. LCD - Liquid Crystal Display HD44780 2x16
09. Abstandsmessung mit dem Sharp GP2Y0A21YK IR Entfernungssensor
10, Ein altes Handy als Arduino Input
11. Barebones-Arduino - ATmega168
12. Arduino-Schematics
13. Arduino Shield
14. Motorsteuerung eines Schrittmotors (Stepper Motor)  LD293D
15. Motorsteuerung mit einem H-Bridge IC
16. Motorsteuerung mit einer MOS-FET Brücke
17. Motorsteuerung mit eonem Transistor
18. Motorsteuerung mit einem Schaltrelais
19. Motorsteuerung direkt per Arduino - 5V-100mA
20. Schaltrelais
21. Verstärker durch Transistor  BC237B
22. Servo - Modellbau-Servo

http://www.arduino-tutorial.de/arduino-projekte/


1) DHT22: Temperatur und Luftfeuchtigkeit messen

Der DHT22 (Amazon Produktlink) ist eine einfache und kostengünstige Möglichkeit, um Temperatur und Luftfeuchtigkeit zu messen.
Es handelt sich um einen kalibrierten Sensor, der über eine One-Wire Schnittstelle (MaxDetect), also eine Datenleitung mit nur einem Kabel, angesprochen wird.

Beispiel-Schaltung des DHT22


Temperatur und Luftfeuchtigkeit messen – Schaltung mit Fritzing erzeugt

Der Sensor benötigt außer einem Widerstand (4,7kΩ) keine weiteren Bauteile und arbeitet mit 5V.
Legt man den Sensor mit den Gittern vor sich hin, ist der linke Pin der 5V+ Anschluss, der daneben der Datenpin, der noch mit einem Widerstand (4,7kΩ) mit 5V+ verbunden ist.
Der ganz rechte Pin ist der GND. Pin 3 hat keine Funktion und muss nicht weiter beachtet werden.

Die Programm-Bibliothek, die man benötigt heißt DHT sensor library. Am einfachsten lässt sie sich installieren, indem man im Menü auf Sketch>Bibliothek-Einbinden>Bibliotheken verwalten klickt.
Oben im Fenster befindet sich ein Eingabefeld, in dem man einfach DHT eingibt.
Jetzt kann man die DHT sensor library anklicken und auf Installieren drücken.
 (Mehr Infos dazu unter: Bibliotheken in Arduino installieren – Danke an Bernd für den Hinweis.)

Beispielcode

Dieses Programm liest Temperatur und Luftfeuchtigkeit aus und stellt sie auf dem LCD-Display dar.
Der Sensor kann nur alle ein bis zwei Sekunden ausgelesen werden.
Darüber hinaus benötigt er eine Aufwärmphase von zwei Sekunden.

#include
#include

#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float humidity, temperature;

void setup() {
    dht.begin();
    lcd.begin(16, 2);
}

void loop() {
    humidity = dht.readHumidity();
    temperature = dht.readTemperature();

    delay(2000);

    lcd.setCursor(8, 0);
    lcd.print("Temperatur:");

    lcd.setCursor(8, 1);
    lcd.print("Humidity:");

    lcd.setCursor(0, 0);
    lcd.print(temperature);

    lcd.setCursor(0, 1);
    lcd.print(humidity);
}



Mit diesem Beispielcode lässt sich schon einiges anfangen.
Die Bibliothek selbst bietet aber noch eine Reihe weiterer nützlicher Funktionen, wie z.B. der Fehlerauswertung des Sensors.
Wer sich dafür interessiert, soll mal in der Arduino-Software das Beispiel Datei>Beispiele>DHT sensor library>Serial öffnen

← LCD – Liquid Crystal Displays
Arduino Yún präsentiert von den Machern →

Quelle:
http://www.arduino-tutorial.de/temperatur-und-luftfeuchtigkeit-messen-DHT22/



********************************************************I*

2) Temperatur und Luftfeuchtigkeit mit dem Arduino Uno messen

https://www.reichelt.de/magazin/how-to/arduino-uno-temperatur-luftfeuchtigkeit-messen/

https://www.reichelt.de/www.reichelt.at/Kombosensoren/BME-280/3/index.html?ACTION=3&GROUPID=6845&ARTICLE=159825


********************************************************I*

3) Temperatur- und Luftfeuchtemessung mit dem Sensor DHT22 - Teil 1

In diesem ersten Teil schauen wir uns die Rohdaten an, die der Sensor abliefert.
Dazu wird das Datenblatt des Herstellers zu Rate gezogen.
Um an die Rohdaten zu kommen, wird eine Bibliotheksdatei von github.com benutzt.
Wer weiter einsteigen möchte in die Programmierung dieses Sensors, kann dort auch die Bibliotheksdateien mit ihren Funktionen einsehen und erfahren, wie auf die einzelnen Bits des DHT22/DHT11 zugegriffen wird
https://www.rahner-edu.de/mikrocontroller/arduino-uno/temperatur-und-luftfeuchtemessung/


********************************************************I*

4) WLAN Logger für Lufttemperatur und Feuchtigkeit

http://blog.thesen.eu/wlan-lufttemperatur-und-feuchte-logger-mit-grafischer-darstellung-fuer-esp8266/


********************************************************I*

5) DHT22  DHT-22

adafruit/DHT-sensor-library DHT.h DHT.cpp
https://github.com/adafruit/DHT-sensor-library


6) DHT sensor library
https://www.arduinolibraries.info/libraries/dht-sensor-library


7) Temperature & Relative Humidity Datalogger using DHT22 and Arduino Uno
Hardware requirements:
Arduino Uno Starter Kit (includes Arduino Uno, breadboard, jumper wires and USB cable A to B)
DeadOn RTC DS3234 Breakout from Sparkfun
CR1225 coin cell battery for the RTC
RHT03/DHT-22 Humidity and Temperature sensor
Sparkfun microSD Shield Retail (includes headers)
1 kΩ resistor
microSD card (any capacity)
Soldering iron

Software requirements:
Arduino IDE 1.0.5 or higher (for Windows or Mac OS X or Linux)
Adafruit DHT sensor library
DS3234 RTC library

http://www.osbss.com/temperature-relative-humidity-datalogger-using-dht22-arduino-uno/


8) Arduino Datenlogger für Imker und Bienenhalter   

2x Temperatur
- und 2x Luftfeuchtesensor (DHT21/ DHT22)

Bienen-Stocktemperatur und die Außentemperatur,
https://beelogger.de/?page_id=262






9) DHT11 / DHT22 mit dem Arduino UNO auslesen Anleitung
https://www.bastelgarage.ch/index.php?route=blog/post/view&blog_post_id=3

https://www.bastelgarage.ch/index.php?route=product/product&product_id=291


10) amateurfunk Mini Wetterstation


BOSCH Sensortec Wetter-Sensor BME280
https://www.bosch-sensortec.com/bst/products/all_products/bme280
Der Bosch-Sensor BME280 misst auf kleinstem Raum Temperatur, Luftfeuchte und Luftdruck.
Das reizt zu einigen Spielereien.
Mögliche Anwendungen sind eine Wetterstation, Datenlogger oder ein Höhenmesser.
Lesen Sie, wie man den BME280 mit einem Arduino UNO ansteuert und mit recht wenig Aufwand erstaunliche Anwendengen realisiert

Temperatur, Lu ftfeuchte und Luftdruck mit BOSCH Wettersensor BME280 und ARDUINO UNO R3
Die LCD-Anzeige zeigt Temperatur, Luftfeuchte und Luftdruck an.
400_c_amateurfunk-x_Temperatur, Luftfeuchte, Luftdruck - § Wettersensor BME280 und ARDUINO UNO_1a.pdf
http://www.vth.de/media/files/shop-beilagen/2016/dez/wettersensor-bme280.pdf


Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout

https://learn.adafruit.com/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout/arduino-test
https://www.mouser.com/ds/2/737/adafruit-bme280-humidity-barometric-pressure-tempe-740823.pdf
https://canox.net/2017/09/arduino-der-bme280-sensor/


Grove - Barometer Sensor(BME280)
http://wiki.seeedstudio.com/Grove-Barometer_Sensor-BME280/
https://github.com/adafruit/Adafruit_BME280_Library
https://learn.sparkfun.com/tutorials/sparkfun-bme280-breakout-hookup-guide

https://funduino.de/nr-23-bme280-luftdruck-luftfeuchtigkeits-und-temperatursensor
http://www.watterott.com/de/BME280-Breakout-Luftfeuchtigkeits-Druck-Tempertursensor



11) Luftdruck-/Luftfeuchtesensor BME280

BOSCH Luftdrucksensor BME280   BOSCH Barometor-Sensor BME280

https://arduino-projekte.webnode.at/meine-libraries/luftdruck-luftfeuchtesensor-bme280/



12) BME280 Evaluation Board [elektor 160109-2 v1.1]
https://www.elektormagazine.com/labs/bme280-evaluation-board-160109-2

https://www.elektormagazine.com/labs/feuchtegesteuerte-kellerluftung-humidity-basement-ventilation-140154



13) Selbstbau-Datenlogger
Daten verarbeiten mit OpenOffice Calc
Die Klimadiagramme unter die Lupe nehmen
http://world.museumsprojekte.de/?feed=rss2&cat=239&lang=de
http://world.museumsprojekte.de/?p=8804&lang=de



14) Datenlogger - Speichern auf SD-Karte
Messgerät zur Erfassung der Temperatur, Luftfeuchtigkeit und Luftdruck
https://edu.books.sensebox.de/de/grundlagen/datenlogger.html



********************************************************I*

15.1) Perfektes Klima mit dem Arduino

ELVjournal 03/2015
Wärmetauscher

300_c_ARDUINO-x_Perfektes Klima mit dem Arduino - Raumlüftung_1a.pdf
WaermetauscherV9.ino
ELVjournal 2015-03-12 - Software - Raumlüftung_1a.zip



Der Schaltplan für die Steuerung des Wärmetauschers.



Quelle:
https://www.elv.at/Perfektes-Klima-mit-dem-Arduino/x.aspx/cid_726/detail_51160
https://files.elv.com/bilder/journal/2015_03/12/2015_03_12_lwb_waermetauscher.pdf



15.2) Arduino-Saunatimer
mit Temperatur-/Luftfeuchteanzeige und Audioausgabe


400_b_Arduino-x_Saunatimer. mit Temperatur- Luftfeuchteanzeige und Audioausgabe (6 Seiten)_1a.pdf
www.elvjournal,de 3/2014
https://www.elv.at/Arduino-Saunatimer-mit-Temperatur-Luftfeuchteanzeige-und-Audioausgabe/x.aspx/cid_726/detail_47496



********************************************************I*

16) Temperaturmessung und Luftfeuchte mit dem Arduino UNO DHT11 DHT22

Temperaturmessung mit dem Arduino UNO  LM35  DS18B20

die Temperaturwert des DHT22 sind genauer als die OneWire Dalles DS18B20.

Schaltplan Arduino mit DHT22 und LCD Display


Arduino Temperatur- & Luftfeuchte-Sensoren Teil 4: DHT22

Benötigte Elemente

Sketch Arduino mit DHT22

//ACHTUNG: Leerstelle in Include vor/nach spitzer Klammer entfernen!#include < LiquidCrystal.h >//LCD DisplayLiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Adafruit DHT library https://github.com/nethoncho/Arduino-DHT22/tree/a655c6299b019cf53173139dad824466486591c8#include "DHT.h"#define DHTPIN 8 // Ich nutze Digital-PIN 8#define DHTTYPE DHT22 // DHT 22 (AM2302)DHT dht(DHTPIN, DHTTYPE); void setup() {lcd.begin(16, 2);} void loop() { //Wartedelay(2000); // Lese die Luftfeuchtigkeitfloat h = dht.readHumidity(); // Lese die Temperatur in Celsiusfloat t = dht.readTemperature(); lcd.setCursor(0, 0);lcd.print("Temperatur:");lcd.setCursor(0, 1);lcd.print("Humidity:"); lcd.setCursor(11, 0);lcd.print(t);lcd.setCursor(11, 1);lcd.print(h);}



Grundsätzliches
Da einige Sensoren eine gewisse „Aufwärmzeit“ benötigen, starten wir im Sketch (Programmcode) bei allen Sensoren zuerst mit einem „delay(2000);“, also einer Wartezeit von zwei Sekunden.
Vorher sind keine vernünftigen Messwerte zu erwarten.
Auch sind die hier vorgestellten Sensoren nicht dazu geeignet, in Sekundenbruchteilen Messungen zu wiederholen.
Eine Wartezeit von ein bis zwei Sekunden zwischen zwei Messungen sollte in der Praxis zu guten Messwerten führen.


Quelle:
https://test-wetterstation.de/temperaturmessung-mit-dem-arduino



********************************************************I*

17.1) DHT11 Sensor für Temperatur und Luftfeuchtigkeit am Arduino

https://www.makerblog.at/2014/08/dht11-sensor-fuer-temperatur-und-luftfeuchtigkeit-am-arduino/

Der DHT11 ist ein digitaler, in einer Kalibrierungskammer vorkalibrierter Sensor und misst Temperatur
und relative Luftfeuchtigkeit im Bereich von 0-50 Grad Celsius bzw. 20-95% Luftfeuchtigkeit.

https://github.com/adidax/dht11


// Libraries einbinden#include <dht11.h>#include <LiquidCrystal.h> dht11 DHT11;#define DHT11PIN 8 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   void setup(){  lcd.begin(16, 2);  lcd.print("Initialisierung...");  lcd.clear();} void loop(){  int chk = DHT11.read(DHT11PIN);   lcd.setCursor(0, 0);  lcd.print("Temp: ");  lcd.print((float)DHT11.temperature, 2);  lcd.print(" C");    lcd.setCursor(0, 1);  lcd.print("RelF: ");  lcd.print((float)DHT11.humidity, 2);  lcd.print(" %");    delay(2000);}


Quelle:
https://www.makerblog.at/2014/08/dht11-sensor-fuer-temperatur-und-luftfeuchtigkeit-am-arduino/


17.2) Wetterstation mit dem Arduino basteln


Die aktuelle Version des Arduino Sketch ist noch sehr einfach.

Der Sketch macht alle 2 Minuten eine Messung und überträgt diese an einen bei thingspeak.com eingerichteten Channel zur Erfassung und Anzeige der Messdaten.

DHT11 – Temperatur und Luftfeuchtigkeit (Tutorial)
Digitaler, vorkalibrierter Sensor. Benötigt am Arduino nur 1 Pin zum Auslesen der Daten.

https://github.com/adafruit/DHT-sensor-library

MPL3115A2 – Luftdruck und Temperatur
I²C-Sensor, misst die Temperatur genauer als der DHT11

https://github.com/sparkfun/MPL3115A2_Breakout (da gibt’s auch einen Hookup-Guide etc.)

TSL45315 – Lux / Lichteinfall (Tutorial)
I²C-Sensor, misst die Lichtmenge pro Fläche (Lux)

https://github.com/adidax/Makerblog_TSL45315 (noch sehr rudimentär, aber bei mir funktioniert’s)

Seed Studio Feuchtigkeitssensor – Bodenfeuchtigkeit
Analoger Sensor, gibt einen mit der Feuchtigkeit des Mediums steigenden Wert an einem Analogpin zurück

DHT11 fuer Temperatur und LuftfeuchtigkeitTSL45315 Lux Sensor fuer HelligkeitMPL3115A2 Barometer fuer Luftdruck und TemperaturMoisture Sensor fuer BodenfeuchteEthernet Board zur Datenuebertragung
https://www.makerblog.at/2015/06/eine-einfache-wetterstation-mit-dem-arduino-basteln/



********************************************************I*


18) Temperatur und Luftfeuchtigkeit messen – DHT11
                                                                 besser DHT22

http://deskfactory.de/temperatur-und-luftfeuchtigkeit-messen-dht11


Wollen wir uns in unseren vier Wänden wohlfühlen, dann sind Temperatur und Luftfeuchtigkeit die beiden wesentlichen Faktoren.
Für Wohn- und Büroräume wird eine relative Luftfeuchtigkeit von 40 bis 50 % empfohlen.
Liegen die Werte darüber oder darunter kann das Raumgefühl als unangenehm empfunden werden.
Es empfiehlt sich, in den Wohnräumen die aktuelle Luftfeuchtigkeit zu messen und gegebenenfalls mittels regelmäßigem Stoßlüften oder Luftentfeuchtern entgegenzuwirken.
Um so schöner ist es, dass diese Werte schnell mit einem Arduino und einem günstigen DHT11 Sensor für wenig Geld ermittelt werden können.
Der Sensor DHT11 liefert uns Temperatur und die relative Luftfeuchtigkeit.
Die Daten werden über das ein Datenbus System (1-Wire Protocol) digital übergeben.

In diesem Beispiel haben wir den DHT11 Sensor verwendet. Genauso gut kannst Du einen DHT22 verwenden.
Dieser kostet etwas mehr als der DHT11, ist dafür aber auf 1/2 Grad Celsius genau.


/**************************************************************//

//  Name    : DHT Test                              
//  Author  : Robert Jaenisch
//  Date    : 10 Feb, 2015    
//  Modified:                                
//  Version : 1.0
//  URL     : http://deskfactory.de
//  Notes   : Programmcode zum Auslesen eines DHT Sensors. Der Ursprünglche Code von Rob Tillaart wurde   //
//            ins Deutsch übersetzt und die Ausgabe zu besseren Lesbarkeit angepasst.                     //
//            Verweis auf den Original Code:                                                              //                          
 
//    FILE: dht_test.ino
//  AUTHOR: Rob Tillaart
// VERSION: 0.1.07
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
//     URL: http://arduino.cc/playground/Main/DHTLib
//
// Released to the public domain
//
//****************************************************************
 
 
// Laden der DHT Sensor Bibliothek
#include
 
dht DHT;
 
// Definieren der Datenanbindung für den passenden DHT Sensor.
// In unseren Beispiel nutzen wir einen DHT11 und somit den Arduino Uno Pin 4.
#define DHT11_PIN 4
#define DHT21_PIN 5
#define DHT22_PIN 6
 
int chk;
 
void setup()
{
  Serial.begin(9600);
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT_LIB_VERSION);
  Serial.println();
}
 
void loop()
{
  // Daten für den DHT22 Sensor Lesen
  /*
    Serial.print("Type: DHT22, \t");
    chk = DHT.read22(DHT22_PIN);
    switch (chk)
    {
      case DHTLIB_OK:  
      Serial.print("Status: OK,\t");
      break;
      case DHTLIB_ERROR_CHECKSUM:
      Serial.print("Status: Checksum error,\t");
      break;
      case DHTLIB_ERROR_TIMEOUT:
      Serial.print("Status: Time out error,\t");
      break;
      default:
      Serial.print("Status: unbekannter Fehler,\t");
      break;
    }
     // Ausgabe der Daten über die serielle Schnittstelle
    Serial.print("relative Luftfeuchtigkeit (%): ");
    Serial.print(DHT.humidity, 1);
    Serial.print(",\tTemperatur (C)");
    Serial.println(DHT.temperature, 1);
  
    delay(1000);
  */
 
    // Daten für den DHT21 lesen
    /*
    Serial.print("Type: DHT21, \t");
    chk = DHT.read21(DHT21_PIN);
    switch (chk)
    {
      case DHTLIB_OK:  
      Serial.print("Status: OK,\t");
      break;
      case DHTLIB_ERROR_CHECKSUM:
      Serial.print("Status: Checksum error,\t");
      break;
      case DHTLIB_ERROR_TIMEOUT:
      Serial.print("Status: Time out error,\t");
      break;
      default:
      Serial.print("Status: unbekannter Fehler,\t");
      break;
    }
     // Ausgabe der Daten über die serielle Schnittstelle
    Serial.print("relative Luftfeuchtigkeit (%): ");
    Serial.print(DHT.humidity, 1);
    Serial.print(",\tTemperatur (C)");
    Serial.println(DHT.temperature, 1);
  
    delay(1000);
  */
  
  // Daten für den DHT11 Sensor lesen
  Serial.print("Type: DHT11, \t");
  chk = DHT.read11(DHT11_PIN);
  switch (chk)
  {
    case DHTLIB_OK:  
    Serial.print("Status: OK,\t");
    break;
    case DHTLIB_ERROR_CHECKSUM:
    Serial.print("Status: Checksum error,\t");
    break;
    case DHTLIB_ERROR_TIMEOUT:
    Serial.print("Status: Time out error,\t");
    break;
    default:
    Serial.print("Status: unbekannter Fehler,\t");
    break;
  }
// Ausgabe der Daten über die serielle Schnittstelle
    Serial.print("relative Luftfeuchtigkeit (%): ");
    Serial.print(DHT.humidity, 1);
    Serial.print(",\tTemperatur (C)");
    Serial.println(DHT.temperature, 1);
 
  delay(1000);
}
//
// ENDE DER DATEI
//


http://deskfactory.de/temperatur-und-luftfeuchtigkeit-messen-dht11



********************************************************I*

19.1) Eine Mini-Wetterstation mit Analoganzeige Teil 1 von 2

Temperatur und Luftfeuchtigkeit Sensor DHT11 und LCD-Display 2x16


include <LiquidCrystal.h>
#include <DHT.h>
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
dht DHT;
 
int DHT11_PIN =8;
int Init_Delay = 1000;
 
int chk;
 
// Hilfsfunktion, um das Display zu löschen
void clean_lcd() {
  lcd.setCursor(0, 0);
  lcd.print("                ");
  lcd.setCursor(0, 1);
  lcd.print("                ");
  }
 
 
 
void setup() {
                                                   // Serielle Verbindung über den USB Port mit 9600 baud öffnen:
  
  Serial.begin(9600);
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT_LIB_VERSION);
  Serial.println();
  
  lcd.begin(16, 2);
  chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(0, 1);
  switch (chk)
  {
    case DHTLIB_OK:  
    lcd.print("Status: OK");
    break;
    case DHTLIB_ERROR_CHECKSUM:
    lcd.print("Status: Checksum error");
    break;
    case DHTLIB_ERROR_TIMEOUT:
    lcd.print("Status: Time out error");
    break;
    default:
    lcd.print("Status: unbekannter Fehler");
    break;
  }
  delay(Init_Delay);
}
 
 
 
void loop()
{
  
 
  // Daten für den DHT11 Sensor lesen
  chk = DHT.read11(DHT11_PIN);
  clean_lcd();
  lcd.setCursor(0,0);
  lcd.print("Type: DHT11");
  clean_lcd();
  lcd.setCursor(0,0);
  lcd.print("Temp:  "+String(DHT.temperature)+" C");
  
  lcd.setCursor(0,1);
  lcd.print("Luftf: "+String(DHT.humidity)+" %");
  delay(1000);
  
// Ausgabe der Daten über die serielle Schnittstelle
  Serial.print("relative Luftfeuchtigkeit (%): ");
  Serial.print(DHT.humidity, 1);
  Serial.print(",\tTemperatur (C)");
  Serial.println(DHT.temperature, 1);
}

http://deskfactory.de/arduino-wetterstation-dht11-lcd


19.2) Eine Mini-Wetterstation mit Analoganzeige Teil 2 von 2

Analoge Temperatur-Groß-Anzeige mit Modellbau-Servo

http://deskfactory.de/wetterstation-servo-arduino



********************************************************I*

20) DHT22 / AM2302-Luftfeuchte und Temperatursensor

Sensoren zur Messung der Luftfeuchte sind oft nicht gerade billig.
Ein recht preiswerter und einfach verwenbarerer Sensor ist der DHT22 bzw. baugleiche AM2302.
Der DHT22 ist ein zuverlässiger Sensor zum ermitteln von Temperatur und Luftfeuchtigkeit.
Da der Sensor sowohl mit 3,3V als auch 5V betrieben werden kann, eignet er sich zum Anschluss an alle gängige Boards wie Arduino, RN-Control, Raspberry Pi und alle anderen Mikrocontroller.
Neben der Betriebsspannung muss lediglich ein Port mit dem Sensor verbinden werden.
Die Ausgabe erfolgt seriell als digitale Bitfolge.
Somit eignet sich der Sensor ideal um das Raumklima zu überwachen oder eine Wetterstation aufzubauen.

Datenblatt DHT22 (PDF)
  Weiteres Datenblatt DHT22 (PDF)

           +5,0V  Data  n.c.  GND

Pin 1 und Pin2 werden mit einem 10k Ohm Widerstand verbunden

Technische Daten:

  • Digital Temperatur und Luftfeuchtigkeit ermitteln
  • Chip Typ DHT22
  • Betriebsspannung: DC 3.3-5.5V
  • Luftfeuchtigkeitsmessbereich : 0 bis 100% relative Luftfeuchte
  • Feuchtemessgenauigkeit: ±2% RH
  • Temperaturbereich: -40 bis +80 C
  • Temperaturmessgenauigkeit ±0.5
  • Single-Bus – Digitalsignalausgang, bidirektionale serielle Daten
  • zahlreiche Beispielprogramme für gängige Board im Internet verfügbar
  • Maße: 28mm x 12mm x 10mm


Der DHT ist im Sketch an pin9 angeschlossen nicht an pin2 wi im schaltbild


#include "DHT.h" #define DHTPIN 9 #define DHTTYPE DHT22 //DHT11, DHT21, DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600);  Serial.println("DHT22 - Test!");  dht.begin();} void loop() { float h = dht.readHumidity(); //Luftfeuchte auslesen float t = dht.readTemperature(); //Temperatur auslesen  // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben. if (isnan(t) || isnan(h))  { Serial.println("DHT22 konnte nicht ausgelesen werden"); }  else { Serial.print("Luftfeuchte: ");  Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatur: ");  Serial.print(t); Serial.println(" C"); }}


Quelle:
http://www.mikrocontroller-elektronik.de/dht22-am2302-luftfeuchte-und-temperatursensor/



********************************************************I*

21.1) Arduino – Temperatur messen und mit Webserver ausgeben
– DHT22 DHT11 AM2302


Der Arduino mit Ethernetshield ist eine tolle Sache, den hiermit hat man die Möglichkeit Ergebnisse des laufenden Sketch anzuzeigen.
In meinem Fall wird die Temperatur und Luftfeuchtigkeit auf dem Webserver ausgegeben.
ACHTUNG:
es gibt einige verschiedene Versionen der DHT.h Library mein Sketch/Code bezieht sich auf die DHT.h von hier
https://github.com/markruys/arduino-DHT
bzw. hier ist der download ->
https://github.com/markruys/arduino-DHT/archive/master.zip

NUR mit diesem File lässt sich der Code kompilieren und uploaden.

/*
* Code von
* https://blog.silvertech.at
*/
 
 
// Includes for Temperature and Humidity Sensor
#include "DHT.h"
 
// Includes for Ethernet
#include <SPI.h>
#include <Ethernet.h>
 
// Definitions for DHT
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht;
 
// Definitions for Ethernet Web Server
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,90 };
EthernetServer server(80);
 
// Led Pins
const int greenLed = 7;
const int redLed = 6;
 
//Led handling stuff
long waitUntil=0;
boolean greenLedState = true;
 
void setup()
{
//Initialize
Ethernet.begin(mac, ip);
server.begin();
dht.setup(2);
 
// Define led pin modes
pinMode(greenLed, OUTPUT);
pinMode(redLed, OUTPUT);
 
}
 
void loop()
{
 
// Each time through loop(), set green Led to the same value as the state variable
digitalWrite(greenLed, greenLedState);    // Nothing will change until millis() increments by 1000
if (millis() &amp;amp;gt;= waitUntil) {
greenLedState = !(greenLedState);     // Toggle the LED's state
waitUntil = millis() + 1000;          // Make sure we wait for another 1000 milliseconds.
}
 
//Process Web requests
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if we've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so we can send a reply
if (c == '\n' &amp;amp;amp;&amp;amp;amp; current_line_is_blank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
 
//read and send temperature
 
float h = dht.getHumidity();
float t = dht.getTemperature();
if (isnan(t) || isnan(h)) {
client.println("tmp_unknown");
client.println("hum_unknown");
} else {
client.print("tmp_");
client.print(t);
client.print(' ');
client.print("hum_");
client.print(h);
}
 
// in case of problems turn on red led
if (t &amp;amp;lt;= 35.0){
digitalWrite(redLed, LOW);
}else{
digitalWrite(redLed, HIGH);
}
 
client.println("&amp;amp;lt;/PRE&amp;amp;gt;");
break;
}
if (c == '\n') {
// we're starting a new line
current_line_is_blank = true;
} else if (c != '\r') {
// we've gotten a character on the current line
current_line_is_blank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
client.stop();
}
}


Quelle.
https://blog.silvertech.at/arduino-temperatur-messen-und-mit-webserver-ausgeben-dht22-dht11-am2302/




21.2) Arduino – Temperatur messen mit 1Wire Sensor

OneWire Sensor  DS18S20   DS18B20    DS1820


-OneWire Sensor – Wasserdicht oder eine einfache Variante
Arduino IDE
OneWire Library

OneWire Library und kopieren diese anschließend in den Arduino IDE Ordner unter den Pfad \arduino-1.0.6\libraries


Bei einen Wasserdichten Sensor: Schwarz = GND    Gelb bzw. Weiß = Daten   Rot = +5V



#include <OneWire.h>
 
int DS18S20_Pin = 2;               // DS18S20 Signal pin on digital 2
 
                                                      // Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 2
 
void setup(void) {
  Serial.begin(9600);
}
 
void loop(void) {
  float temperature = getTemp();
  Serial.println(temperature);
  
  delay(1000);                                // just here to slow down the output so it is easier to read
  
}
 
 
float getTemp(){
                                                           // returns the temperature from one DS18S20 in DEG Celsius
 
  byte data[12];
  byte addr[8];
 
  if ( !ds.search(addr)) {
                                                          // no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }
 
  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return -1000;
  }
 
  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);                                    // start conversion, with parasite power on at the end
 
  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);                                       // Read Scratchpad
 
  
  for (int i = 0; i < 9; i++) {                          // we need 9 bytes
    data[i] = ds.read();
  }
  
  ds.reset_search();
  
  byte MSB = data[1];
  byte LSB = data[0];
 
  float tempRead = ((MSB << 8) | LSB);    //using two's compliment
  float TemperatureSum = tempRead / 16;
  
  return TemperatureSum;
  
}

https://blog.silvertech.at/arduino-temperatur-messen-mit-1wire-sensor-ds18s20ds18b20ds1820/


********************************************************I*

22) Schimmelwarner mit DHT22 MLX90614 und 40x4 LCD Display

https://www.wetterochs.de/wetter/feuchte.html
http://www.wetterochs.de/wetter/feuchte.html
https://www.google.at/search?q=arduino+taupunkt&cad=h


// Einbinden des DHT22
#include <i2cmaster.h>
#include "DHT.h" // Library für DHT Sensor aufgerufen
#define DHTPIN 7 // DHT Sensor wird aus PIN 9 ausgelesen
#define DHTTYPE DHT22 // DHT Type wird auf DHT22 festgelegt
DHT dht22(DHTPIN, DHTTYPE); // DHTPIN und DHTTYE in dht22 definiert

#include <LiquidCrystalFast.h>

LiquidCrystalFast lcd(12, 11, 10, 9, 5, 4, 3, 2);
// LCD pins: RS RW EN1 EN2 D4 D5 D6 D7

// make some custom characters:
byte ue[8] = { // 0 off, 1 set pixel
0b00000, // in 5x7 caracter 8. row is unused
0b01010,
0b00000,
0b10001,
0b10001,
0b10011,
0b01101,
0b00000
};

void setup(){
// create a new character
lcd.createChar(0, ue);

i2c_init(); //Initialise the i2c bus
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
lcd.begin(40, 4);

dht22.begin(); // Auslesen des DHT22 beginnt
}

void loop()
{
float t = dht22.readTemperature(); // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
float h = dht22.readHumidity(); // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
float a = 17.271;
float b = 237.7;
float taupunktTemp = (a * t) / (b + t) + log(h/100);
float p = (b * taupunktTemp) / (a - taupunktTemp);

int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;

i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);

// read
i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Read 1 byte and then send ack
data_high = i2c_readAck(); //Read 1 byte and then send ack
pec = i2c_readNak();
i2c_stop();

//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
double tempData = 0x0000; // zero out the data
int frac; // data past the decimal point

// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
tempData = (double)(((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;

float celcius = 1.38*(tempData - 273.15);
float fahrenheit = (celcius*1.8) + 32;

lcd.setCursor(0, 0); // Anfang auf Stelle 0, Zeile 0 setzen
lcd.print("Lufttemp. :"); // Temp. : auf LCD ausgeben
lcd.setCursor(13, 0); // Anfang auf Stelle 9, Zeile 0 setzen
lcd.print(t ,1); // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(17, 0); // Anfang auf Stelle 15, Zeile 0 setzen
lcd.write(0xD0 + 15); // Grad-Zeichen (Arduino 1.00)
lcd.print("C Wandtermp.: "); // C auf LCD ausgeben
lcd.print(celcius ,1);
lcd.write(0xD0 + 15); // Grad-Zeichen (Arduino 1.00)
lcd.setCursor(39, 0);
lcd.print("C");

lcd.setCursor(0, 1); // Anfang auf Stelle 0, Zeile 1 setzen
lcd.print("Luftfeuchte:"); // Luft.: auf LCD ausgeben
lcd.setCursor(13, 1); // Anfang auf Stelle 9, Zeile 1 setzen
lcd.print(h ,1); // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(18, 1); // Anfang auf Stelle 15, Zeile 1 setzen
lcd.print("% Taupunkt : "); // % auf LCD ausgeben
lcd.print(p ,1);
lcd.write(0xD0 + 15);
lcd.print("C");
lcd.setCursor(1, 3);
// if(celcius - taupunktTemp < 0) // richtige Formel
if(celcius - taupunktTemp > 0) // zum Testen
{
lcd.print("!!! Achtung L");
lcd.write(0);
lcd.print("ften, Schimmelgefahr !!!");
delay(1500);
lcd.setCursor(1, 3);
lcd.print(" ");
//delay(500);
}}



Quelle:
https://forum.arduino.cc/index.php?topic=227838.0




********************************************************I*

23) Temperatur und Luftfeuchtigkeit messen mit dem Arduino

Vor ein paar Tagen habe ich mir zwei DHT22 Sensoren bei Watterott bestellt, die sowohl Temperatur als auch Luftfeuchtigkeit mit ausreichender Genauigkeit messen können.
Im ersten Sketch lese ich die Daten aus und gebe sie seriell sowohl auf einem angeschlossenen Sparkfun LCD als auch über die serielle Schnittstelle aus.
Zum Auslesen des Sensors gibt es von Adafruit eine Bibliothek, die folgende Seite zeigt auch die Beschaltung:
http://learn.adafruit.com/dht/connecting-to-a-dhtxx-sensor


// Beispielcode, um Temperatur/Luftfeuchtigkeit// eines DHT22 auf einem Sparkfun SerialLCD auszugeben #include "DHT.h"#include <SoftwareSerial.h> #define DHTPIN 2     // Pin für den DHT22SoftwareSerial mySerial(4,3); // SoftwareSerial für das LCD #define DHTTYPE DHT22   // DHT 22  (AM2302)DHT dht(DHTPIN, DHTTYPE); void setup() {  mySerial.begin(9600); // starte LCD Verbindung  Serial.begin(9600); // starte zus. serielle Verbindung  delay(500); // wait for display to boot up   mySerial.write(254); // setze Cursor in die erste Zeile  mySerial.write(128);   mySerial.write("                "); // clear LCD  mySerial.write("                ");  delay(500);  mySerial.write("  DHT22 Sensor");   dht.begin();} char tempstring[10], humstring[10]; void loop() {  float h = dht.readHumidity();  float t = dht.readTemperature();  delay(5000); // lese alle 5 Sekunden ein   // check if returns are valid, if they are NaN (not a number) then something went wrong!  if (isnan(t) || isnan(h)) {    mySerial.write(254); // move cursor to beginning of first line    mySerial.write(128);    mySerial.println("DHT22 nicht gefunden");  } else {    mySerial.write(254); // move cursor to beginning of first line    mySerial.write(128);    mySerial.write("                "); // clear display    mySerial.write("                ");    mySerial.write(254); // move cursor to beginning of first line    mySerial.write(128);     mySerial.print("Luftf: ");      mySerial.print(h);    mySerial.print(" %");          Serial.println(h);    mySerial.write(254); // move cursor to beginning of 2nd line    mySerial.write(192);    mySerial.print("Temp: ");      mySerial.print(t);    mySerial.print(" *C");       Serial.println(t);  }}


https://www.uweziegenhagen.de/?p=2821



********************************************************I*

24) Temperatur und relative Luftfeuchtigkeit messen
Arduino Lektion 6: Sensor DHT11


include <dht.h> // DHT Library von Arduino

 
dht DHT; // Zuweisen eines Objektes zur Bibliothek
 
int sensorPin = 13 ;// Bestimmen das der Sensor DHT11 an den PWM PIN 13 angeschlossen ist.
void setup() {
  Serial.begin(115200);  // Verbindungsgeschwindigkeit (Baudrate) auf 115200 setzen. Dieses muss mit der Übertragungsrate im Serial Monitor übereinstimmen.
}
 
void loop() {
  int chk = DHT.read11(sensorPin); //Status holen
  switch (chk)
  {
    //Wenn alles OK ist.
    case DHTLIB_OK:  
                break;
    //Bei einem Checksummenfehler
    case DHTLIB_ERROR_CHECKSUM:
                Serial.print("Checksummenfehler");
                break;
    //Bei einer Zeitüberschreitung der Anforderung.
    case DHTLIB_ERROR_TIMEOUT:
                Serial.print("Zeitüberschreitung");
                break;
    default:
                break;
  }
 
  //Werte ausgeben
  Serial.print("Temperatur: ");
  Serial.print(DHT.temperature, 1); //Die Temperatur auslesen.
  Serial.println("C");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(DHT.humidity, 1);  // Die Luftfeuchtigkeit auslesen.
  Serial.println("%");
  Serial.println("");
 
  //Eine Pause von 2sek. der Sensor DHT11 stellt alle 2sek neue Werte zur Verfügung daher
  //ist ein Wert < 2sek. nicht möglich bzw. unnötig.
  delay(2000);  
}


https://draeger-it.blog/sainsmart-lektion-6-sensor-dht11-temperatur-und-relative-luftfeuchtigkeit-messen/



********************************************************I*

25) Temperatur / Luftfeuchte messen und auf Serial LCD ausgeben

ich möchte euch an einem kleinen Beispiel mal demonstrieren, wie ihr die Temperatur und die Luftfeuchtigkeit mit Hilfe eines DHT22 auslest und die Daten auf einem I2C 1602 LCD ausgebt und zusätzlich am seriellen Monitor euch ansehen könnt.

Folgende Bauteile habe ich verwendet:
1x SainSmart I2C 1602 Serial LCD Module
1x DHT22 Temperatur Luftfeuchte-Sensor
1x 10k Widerstand
ein paar Anschlusskabel

Angeschlossen werden die Komponenten wie folgt:
   

Folgende Library habe ich verwendet:
Library für DHT22
Library für I2C 1602 LCD
Library Wire aus Arduino 1.0.3

Hier der verwendete Sketch mit Hinweisen:


// Einbinden des DHT22
#include "DHT.h"                            // Library für DHT Sensor aufgerufen
#define DHTPIN 2                            // DHT Sensor wird aus pin2 (pin9) ausgelesen
#define DHTTYPE DHT22                       // DHT Type wird auf DHT22 festgelegt
DHT dht22(DHTPIN, DHTTYPE);                 // DHTPIN und DHTTYE in dht22 definiert

// Einbinden des LCD
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

int n = 1;

LiquidCrystal_I2C    lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);



void setup()
{
  Serial.begin(9600);                       // Serielle Ausgabe beginnen mit 9600baud
  Serial.println("DHT22 Serielle Ausgabe"); // Begrüßung beim Aufruf vom seriellen Monitor
dht22.begin();                              // Auslesen des DHT22 beginnt
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home ();                                // go home

  lcd.begin(16, 2);                          // LCD Hintergrundbeleuchtung aktivieren
}

void loop()
{
  float t = dht22.readTemperature();        // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();           // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
  
  Serial.print("Temperatur: ");             // Ausgabe im Seriellen Monitor
  Serial.print(t);                          // Ausgabe im Seriellen Monitor
  Serial.print(" C\t");                     // Ausgabe im Seriellen Monitor  
  Serial.print("Luftfeuchte: ");            // Ausgabe im Seriellen Monitor
  Serial.print(h);                          // Ausgabe im Seriellen Monitor
  Serial.println(" %");                     // Ausgabe im Seriellen Monitor
  
lcd.setCursor(0, 0);                       // Anfang auf Stelle 0, Zeile 0 setzen
lcd.print("Temp. :");                      // Temp. : auf LCD ausgeben
lcd.setCursor(9, 0);                       // Anfang auf Stelle 9, Zeile 0 setzen
lcd.print(t);                              // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(15, 0);                      // Anfang auf Stelle 15, Zeile 0 setzen
lcd.print("C");                            // C auf LCD ausgeben
lcd.setCursor(0, 1);                       // Anfang auf Stelle 0, Zeile 1 setzen
lcd.print("Luftf.:");                      // Luft.: auf LCD ausgeben
lcd.setCursor(9, 1);                       // Anfang auf Stelle 9, Zeile 1 setzen
lcd.print(h);                              // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(15, 1);                      // Anfang auf Stelle 15, Zeile 1 setzen
lcd.print("%");                            // % auf LCD ausgeben
}



Quelle.
https://www.arduinoforum.de/arduino-Thread-Tutorial-Temperatur-Luftfeuchte-messen-und-auf-LCD-ausgeben




********************************************************I*

26) Lueftersteuerung um den Keller zu trocknen

___________________________________                                                                                                                        
Verwendete Teile:

Arduino R3
Sainsmart 1602 LCD Keypad Shield
optoelektronisches Relais
2x DHT22
___________________________________
Key Codes (in left-to-right order):

None - 0
Select - 1
Left - 2
Up - 3
Down - 4
Right - 5
___________________________________

*/

#include <dht.h>
#include <LiquidCrystal.h>
#include <DFR_Key.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


dht DHT;
DFR_Key keypad;

#define dhtA 12
#define dhtI 13
#define relais 11


int localKey = 0; //Tastenerkennung
String keyString = ""; //??

double dewPointFast(double celsius, double humidity) //Taupunkt berechnung
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity/100);
double Td = (b * temp) / (a - temp);
return Td;
}

float dewI = 0; //Taupunkt Innen
float dewA = 0; //Taupunkt Aussen
float tempI = 0;//Temperatur Innen
float tempA = 0;//Temperatur Aussen
float humI = 0; //Luftfeuchtigkeit Innen
float humA = 0; //Luftfeuchtigkeit Aussen
int hysterese = 1; //Hysterse (mal 2) für die Schaltung

long count = 0; //Counter fuer die Eingabe
int statL = 0; //Status der Luefter
int menueH = 0; //Durchs Hauptmenue gehen
//int menueS = 0; //Menue bei Select
int menueC = 0;
int intro = 0;

long previousMillis = 0;
long milliMil = 0;
long milliMin = 0;
long milliStd = 0;



void setup()
{
Serial.begin(115200); //Verbindung Computer
pinMode(relais, OUTPUT);
digitalWrite(relais, HIGH);


lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Fan Control");
lcd.setCursor(0, 1);
lcd.print("Version 0.1.9");

while(intro < 5)
{
lcd.setCursor(15, 1);
lcd.print((char)0x7C);
delay(500);
lcd.setCursor(15, 1);
lcd.print((char)0x2D);
delay(500);
intro++;
}

delay(2500);
}

void loop()
{
unsigned long currentMillis = millis();
milliMil = currentMillis - previousMillis;
milliMin = milliMil / 60000;
milliStd = milliMin / 60;



lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello Dave,");
lcd.setCursor(0, 1);
lcd.print("I'm very busy");




DHT.read22(dhtI); //Sensor Innen auslesen
//delay(500);
//DHT.read22(dhtI);
float humI = DHT.humidity;
float tempI = DHT.temperature;
float dewI = (dewPointFast(DHT.temperature, DHT.humidity));

delay(1500);

DHT.read22(dhtA); //Sensor Aussen auslesen
//delay(500);
//DHT.read22(dhtA);
float humA = DHT.humidity;
float tempA = DHT.temperature;
float dewA = (dewPointFast(DHT.temperature, DHT.humidity));

//dewA = dewA - 5; //Test!!!!!!!!!!!!!!!!!!!

if (dewA <= dewI - hysterese) //Ueberprueft die Luftfeuchtigkeit schaltet die Luefter und speichert den Status in statL
{
digitalWrite(relais, LOW); //Luefter einschalten

if (statL == 0)
{
previousMillis = millis();
}
statL = 1;
}

else if (dewA > dewI + hysterese)
{
digitalWrite(relais, HIGH); //Lufter ausschalten

if (statL == 1)
{
previousMillis = millis();
}
statL = 0;

}

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HAL:Im waiting");
lcd.setCursor(0, 1);
lcd.print(" for command");


count = 0;

while(count < 300000) //Menuefunktion
{
keypad.getKey();
menueH = keypad.getKey();

switch (menueH) //Einzelne Menuepunkte
{
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Luefter:");
lcd.setCursor(9, 0);
Serial.println(statL);//loeschen
if(statL == 1)
{
lcd.print("AN");
}
if(statL == 0)
{
lcd.print("AUS");
}

lcd.setCursor(0, 1);
lcd.print(milliStd);
lcd.print("Std ");
lcd.print(milliMin);
lcd.print("Min ");
delay(1000);
break;

case 2: //Relais ausschalten Pfeil nach links
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Luefter: Aus");
digitalWrite(relais, HIGH); //Schalte Relais AUS
delay(1000);//Verzögere um erneute Eingabe zu verhindern

menueC = 0; //setze Schaltzustand auf 0
while(menueC != 1) //Manueller Luefter
{
keypad.getKey();
localKey = keypad.getKey();

if (localKey == 2) //Wenn 2 gedrückt wird wird die Schleife beendet
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Automatikmodus");
lcd.setCursor(0, 1);
lcd.print("ist AN");
previousMillis = millis(); //setze Timer auf Null
digitalWrite(relais, HIGH); //Schaltet Luefter wegen Hysterese aus!
delay(1000);
menueC = 1; //beende Schleife
}

}
break;


case 3: //Anzeige Daten Aussen Pfeil nach oben

//Erste Zeile
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Aussen: ");

lcd.print(dewA);
lcd.print((char)223);
lcd.print("C");

//Zweite Zeile
lcd.setCursor(0, 1);
lcd.print(tempA);
lcd.print((char)223);
lcd.print("C ");

lcd.print(humA);
lcd.print((char)0x25);
delay(1000);
break;

case 4: //Anzeige Daten Keller Pfeil nach unten

//Erste Zeile
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Keller: ");

lcd.print(dewI);
lcd.print((char)223);
lcd.print("C");

//Zweite Zeile
lcd.setCursor(0, 1);

lcd.print(tempI);
lcd.print((char)223);
lcd.print("C ");

lcd.print(humI);
lcd.print((char)0x25);
delay(1000);
break;

case 5: //Luefter einschalten Pfeil nach rechts
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Luefter: An");
digitalWrite(relais, LOW); //Schalte Relais AN
delay(1000);//Verzögere um erneute Eingabe zu verhindern

menueC = 0; //setze Schaltzustand auf 0
while(menueC != 1) //Manueller Luefter
{
keypad.getKey();
localKey = keypad.getKey();

if (localKey == 5) //Wenn 5 gedrückt wird wird die Schleife beendet
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Automatikmodus");
lcd.setCursor(0, 1);
lcd.print("ist AN");
previousMillis = millis(); //setze Timer auf Null
digitalWrite(relais, HIGH); //Schaltet Luefter wegen Hysterese aus!
delay(1000);
menueC = 1; //beende Schleife
}

}
break;
}

if(menueH != SAMPLE_WAIT) //Setzt den Counter auf Null wenn Eingabe erfolgt ist.
{
count = 0;
}


else
{
count++; //Ohne Einmgabe laueft der Counter
}


}


Serial.println ("Innensensor:");
Serial.print ("humI: ");
Serial.println (humI);
Serial.print ("tempI: ");
Serial.println (tempI);
Serial.print ("dewI: ");
Serial.println (dewI);
Serial.println ("");


Serial.println ("Aussensensor:");
Serial.print ("humA: ");
Serial.println (humA);
Serial.print ("tempA: ");
Serial.println (tempA);
Serial.print ("dewA: ");
Serial.println (dewA);
Serial.println ("____________________");

}

http://forum.arduino.cc/index.php?topic=175778.15



********************************************************I*
27.1)Temperatur- und Feuchtigkeitsdaten auf SD-Karte zu schreiben

Datenlogger / Datalogger

DHT22

SD card Temp & Humidity datalogger


/*
SD card Temp & Humidity datalogger

This example shows how to log data from
a DHT11 temperature and humidity sensor
to an SD card using the SD library.

It also uses the Adafruit DHT sensor library from
https://github.com/adafruit/DHT-sensor-library

The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 53
* DHT11 sensor connected as follows:
** Ground connected to 5
** Voltage connected to 8
** data out connected to 7
** 10K resistor connected from 7 to +5V


*/

#include <SD.h>
#include "DHT.h"
#include <Time.h>
#include <Wire.h>
#include <DS1307RTC.h>

#define DHTPIN 24 // what pin the sensor is connected to
#define DHTTYPE DHT11 // Which type of DHT sensor you're using:
#define DHT_GND 26 // ground pin of the sensor
#define DHT_VCC 22 // voltage pin of the sensor
#define TEMPERATURE 1 // for the DHT sensor
#define HUMIDITY 0 // for the DHT sensor
#define fehler 13

// initialize the sensor:
DHT dht(DHTPIN, DHTTYPE);
// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 53; // 4,10,53

void setup() {
pinMode(fehler, OUTPUT);
setSyncProvider(RTC.get); // the function to get the time from the RTC

if (startSDCard() == true) {
pinMode(DHT_VCC, OUTPUT);
pinMode(DHT_GND, OUTPUT);
digitalWrite(DHT_VCC, HIGH);
digitalWrite(DHT_GND, LOW);
dht.begin();
}
}

void loop()
{
// Get the current time in ms:

long currentTime = millis();
delay(29250);// normalmodus
// delay(250); //test schnelle ergebnisse
digitalWrite(fehler, HIGH);
delay(250);
digitalWrite(fehler, LOW);
delay(250);
digitalWrite(fehler, HIGH);
delay(250);
digitalWrite(fehler, LOW);
float humidity = readSensor (HUMIDITY);
float temperature = readSensor(TEMPERATURE);
File dataFile = SD.open("datalog.csv", FILE_WRITE);
dataFile.print(humidity);
dataFile.print(";");
dataFile.println(temperature);
dataFile.print("; ");
dataFile.print(day());
dataFile.print(":");
dataFile.print(month());
dataFile.print(":");
dataFile.print(year());
dataFile.print("; ");
dataFile.print(hour());
dataFile.print(":");
dataFile.print(minute());
dataFile.print(":");
dataFile.print(second());
dataFile.print("; ");

dataFile.close();

}


boolean startSDCard() {
boolean result = false;
// Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(53, OUTPUT);

// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
result = false;
}
else {
File dataFile = SD.open("datalog.csv", FILE_WRITE);
if (dataFile) {
dataFile.close();
result = true;
}
}
return result;
}


float readSensor( int thisValue) {
float result;

if (thisValue == TEMPERATURE) {
result = dht.readTemperature();
}
else if (thisValue == HUMIDITY) {
// read sensor:
result = dht.readHumidity();
}

if (isnan(result)) {
result = -273.0;
}
return result;
}

https://www.arduinoforum.de/arduino-Thread-Programm-um-Temperatur-und-Feuchtigkeitsdaten-auf-Sd-Karte-zu-schreiben



27.2) Luftfeuchtigkeitsregulierung mit Arduino

Ich möchte meine Software zur Regelung der Luftfeuchte in meinem Keller vorstellen.
Die Steuerung besteht aus einem Arduino Uno, einem Ethernetshield und einem Relais + Ansteuerung, zwei DTH22 sensoren und einem Lüfter der durch die Kellerwand nach außen führt.
Wenn im keller die absolute Luftfeuchte höher als draußen ist, so läuft der Kellerlüfter an.
Bei höherer Luftfeuchte draußen schaltet der Lüfter aus.

Das System ist seit ca. 1 jahr im Einsatz und läuft recht erfolgreich. I
Ich kann meine Luftfeuchtigkeit unter 70% halten, was für einen alten Gewölbekeller mit Lehmboden ganz gut ist.

Die Sensorergebnisse werden für mich zur Funktionskontrolle getwittert.
Die ergebnisse könnt ihr hier sehen womble.de

// Written by Mark Kingery (Mark(AT)Kingery.de), GPLV3
// DHT22 Library written by ladyada, public domain
//https://github.com/adafruit/DHT-sensor-library

// Abs. Feuchte=13,233*rel.Feuchte*((10^((7,5*T)/(237+T)))/(273,16+T))
//T=Lufttemperatur
// Sensor 1 indoor
// Sensor 2 outdoor
// this program may not be good looking but I`m staisfied

#include "DHT.h"
#include <math.h>
#include <SPI.h> // needed in Arduino 0019 or later
#include <Ethernet.h>
#include <Twitter.h>
#define DHTPIN1 6   // what pin we're connected to
#define DHTPIN2 7   // what pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
// Ethernet Shield Settings
byte mac[] = { 0x00, 0x80, 0x41, 0x3F, 0x1E, 0xED }; //Robotron MAC Adresse

// If you don't specify the IP address, DHCP is used(only in Arduino 1.0 or later).
byte ip[] = { 192, 168, 1, 10 };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("xxx"); //xxx durch eigenen Token ersetzen


// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
int led = 5;
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);

char tmp[10];
char tosend[140];

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
pinMode(led, OUTPUT);

  dht1.begin();
  dht2.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h1 = dht1.readHumidity();
  int t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
  float t2 = dht2.readTemperature();
float hA1 = 0;
float hA2 = 0;

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t1) || isnan(h1)) {
    Serial.println("Failed to read from DHT");
  } else {
    
  double x = 0;
  double y = 0;
  double z = 0;
  x= 13.233*h1;
  y=7.5*t1;
  z = 237+t1;
  y = y/z;
float m = pow(10,y);
  z = 273+t1;
  m=m/z;


  hA1=m*x;
    Serial.print("Humidity1: ");
    Serial.print(h1);
    Serial.print(" %\t");
    Serial.print("Temperature1: ");
    Serial.print(t1);
    Serial.println(" *C");
    Serial.print("HumidityA1: ");
    Serial.print(hA1);
    Serial.println(" g");
  }





  if (isnan(t2) || isnan(h2)) {
    Serial.println("Failed to read from DHT");
  } else {
  
  double x = 0;
  double y = 0;
  double z = 0;
  x= 13.233*h2;
  y=7.5*t2;
  z = 237+t2;
  y = y/z;
float m = pow(10,y);
  z = 273+t2;

  m=m/z;

  hA2=m*x;
    Serial.print("Humidity2: ");
    Serial.print(h2);
    Serial.print(" %\t");
    Serial.print("Temperature1: ");
    Serial.print(t2);
    Serial.println(" *C");
    Serial.print("HumidityA2: ");
    Serial.print(hA2);
    Serial.println(" g");
  }



  if (hA1 > hA2)
  {
  Serial.println(" fan on !");
  strcat (tosend, "fan K1 on !!! ");
  digitalWrite(led, LOW);   // turn the LED on (HIGH is the voltage level)
  } else {
    Serial.println(" fan off !");
    strcat (tosend, "fan K1 off !!! ");
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  }
  //strcat (tosend, "                                                                                                                                        ");

  strcat (tosend, "Temp. inside ");
  itoa((int)t1, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "°c ");
  strcat (tosend, "Hum. inside ");
  itoa((float)h1, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "% ");
  strcat (tosend, "H2O ");
  itoa((float)hA1, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "g/m^3 ");

    strcat (tosend, "Temp. outside ");
  itoa((float)t2, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "°c ");
  strcat (tosend, "Hum. outside ");
  itoa((float)h2, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "% ");
    strcat (tosend, "H2O ");
  itoa((float)hA2, tmp, 10); strcat (tosend, tmp);
  strcat (tosend, "g/m^3 ");
  Serial.print(tosend);
  delay(86400);//1000 mal am Tag Twittern
  //delay(10000);
  Ethernet.begin(mac, ip);
  // or you can use DHCP for autoomatic IP address configuration.
  // Ethernet.begin(mac);

  if (twitter.post(tosend)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
tosend[0] = '\0';
}


https://www.arduinoforum.de/arduino-Thread-Luftfeuchtigkeitsregulierung-mit-Arduino



********************************************************I*

28) BOSCH Barometer Sensor BME280 - Erfahrungen

Ich möchte hier kurz meine Erfahrungen mit dem BME280 von Bosch mitteilen.
Um Freude zu haben, sollte man einige Punkte beachten:

1. Der gemessene Luftdruck (zuerst die Temperatur auslesen, sonst fehlt der notwendige Kalibrierwert!) stimmt erstens und zeigt zweitens den Luftdruck an dem Ort an, wo der Sensor sich tatsächlich befindet.
Also bitte nicht im Zimmer messen, wenn man eine Wetterstation für draußen bauen will.
Der ausgegebene Wert für den Luftdruck entspricht aber jenem für die aktuelle Höhe und die aktuelle Temperatur.
Das ev vorhandene Barometer zeigt aber wahrscheinlich den auf Meeresniveau "reduzierten" Wert (ist also höher als der vom BME280 angezeigte Wert).
Will man überprüfen, ob beide Geräte übereinstimmen, muß man den vom BME280 ausgegebenen Wert auf "Meeresniveau" umrechnen.


Ch hat einen Wert von 0.12 K/hPa

Das geht so:pNN = ph * e (g*h/(R*(T+Ch*E+a*h/2)))E = 6,112hPa * e (17,62*t(°C)/(243,12+t(°C))) ACHTUNG: Magnusformel mit Koeffizienten für t = -45 bis +60°Ca = (Tm-Tb)/(hm-hb) m ... Meßort b ... Bezugsort- pNN ist der auf Meeresniveau umgerechnete Luftdruckwert in hPa- ph ist der vom BME280 ausgegebene tatsächliche Luftdruckwert am Meßort - in hPa- e ist die e-Funktion- g ist die Erdbeschleunigung, am 50. Breitengrad beträgt g=9,80665 m/s²- h ist die Höhe (m) über Meeresniveau am Meßort- R ist die Gaskonstante der Luft 287,058 J/(kg*K)- t(°C) ist die Temperatur in °C am Meßort- T ist die Temperatur in Kelvin T(K)=273,15+t(°C)- Ch ist der Beiwert zu E zur Berücksichtigung der mittleren Dampfdruckänderung mit der Höhe (K/hPa)- E (hPa) ist der Wasserdampfpartialdruck- a (K/m) ist der vertikale Temperaturgradienta ist oft unter Durchschnitts-Meeresniveau-Stardardbedingungen (t=15°C, pb=1013.25hPa, h=0m) mit 0.0065 angegeben - stimmt jedoch nicht wirklich, da durchaus in der Realität beträchtliche Abweichungen auftreten können >> also: besser selber berechnen!Zur Überprüfung kann man den Meßwert des BME280 mit dem aus der Barometrischen Höhenformel ausgerechneten Wert vergleichen:pz=pb*((1-a*(hz-hb)/(273,15+tb))^(0,03416/a))a wird wie weiter oben berechnet, z bedeutet Werte am Zielort, b sind BEKANNTE Werte am Bezugsort (von einer offiziellen, naheliegenden meteorologischen Station abzufragen)2. die gemessene Temperatur gibt lediglich einen Anhalt über die Umgebungstemperatur des BME280 (siehe Datenblatt). Wer genaue Werte für die Lufttemperatur haben will, muß schon einen externen Sensor (zB DS18B20) bemühen.3. man findet in Softwarebibliotheken (va Arduino-Bibliotheken - Adafruit weist jedoch darauf hin!) häufig Funktionen, welche die Seehöhe=Höhe über Meeresniveau, berechnet aus den BME280-Meßwerten, ausgeben. Das ist leider völlig falsch!! Ohne einen genau bekannten Referenzpunkt (p,T auf Seehöhe oder besser einen naheliegenden Ort plus p,T am Zielort) kann die Höhe am Zielort aus den Sensorwerten NICHT ermittelt werden.4. man kann weiters auch die Absolute LuftfeuchteaF(kg/m³)=rF*E/(Rw*T)*10mit Rw=461,51 J/(kg*K) und rF (relative Feuchte) als Quotient (nicht als%-Zahl!)und den Taupunkt (wieder Magnusformel für t=-45 bis +60°C heranziehen)τ(φ,ϑ) = K3 ⋅ ((K2 ⋅ ϑ)/(K3 + ϑ) + ln⁡ φ)/(K2 ⋅ K3/(K3 + ϑ) − lnφ)φ: relative Luftfeuchte (Quotient) ϑ: Temperatur in °CK1=6.112hPaK2=17,62K3=243,12Kaus den Meßwerten herleiten (Details bitte aus dem Internet entnehmen).
Anbei ein rasch zusammengezimmertes Beispiel für obige Überlegungen mit der Sparkfun-Bibliothek und dem umgebauten Sparkfun-Beispiel:
******************************************************************************Board:  Arduino UNOSensor: BME280ACHTUNG: bei der Berechnung der Seehöhe muß man den aktuellen Luftdruckwert (Pa)          auf Meeresniveau als Parameter übergeben >> sonst kommt Mist heraus******************************************************************************/#include <stdint.h>#include "SparkFunBME280.h"//Library allows either I2C or SPI, so include both.#include "Wire.h"#include "SPI.h"#include <math.h>#define a 0.00602      // ACHTUNG: 0.0065 gilt nur für Standardbedingungen h=0m T=15°C p=1013,25hPa                      // besser aktuell berechnen: a= (Tz-Tb)/(hz-hb)   z=Zielpunkt   b=Bezugspunkt (kann Ort am Meer sein)#define pSL 100800.0//Global sensor objectBME280 mySensor;float La, RH, TP, E, H, T, pNN, pH;void setup(){  //***Driver settings********************************//  //commInterface can be I2C_MODE or SPI_MODE  //specify chipSelectPin using arduino pin names  //specify I2C address.  Can be 0x77(default) or 0x76    //For I2C, enable the following and disable the SPI section  //mySensor.settings.commInterface = I2C_MODE;  //mySensor.settings.I2CAddress = 0x77;    //For SPI enable the following and dissable the I2C section  mySensor.settings.commInterface = SPI_MODE;  mySensor.settings.chipSelectPin = 10;  //***Operation settings*****************************//    //renMode can be:  //  0, Sleep mode  //  1 or 2, Forced mode  //  3, Normal mode  mySensor.settings.runMode = 3; //Normal mode    //tStandby can be:  //  0, 0.5ms  //  1, 62.5ms  //  2, 125ms  //  3, 250ms  //  4, 500ms  //  5, 1000ms  //  6, 10ms  //  7, 20ms  mySensor.settings.tStandby = 0;    //filter can be off or number of FIR coefficients to use:  //  0, filter off  //  1, coefficients = 2  //  2, coefficients = 4  //  3, coefficients = 8  //  4, coefficients = 16  mySensor.settings.filter = 0;    //tempOverSample can be:  //  0, skipped  //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively  mySensor.settings.tempOverSample = 1;  //pressOverSample can be:  //  0, skipped  //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively    mySensor.settings.pressOverSample = 1;    //humidOverSample can be:  //  0, skipped  //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively  mySensor.settings.humidOverSample = 1;    Serial.begin(57600);  Serial.print("Program Started\n");  Serial.print("Starting BME280... result of .begin(): 0x");    //Calling .begin() causes the settings to be loaded  delay(10);  //Make sure sensor had enough time to turn on. BME280 requires 2ms to start up.  Serial.println(mySensor.begin(), HEX);  Serial.print("Displaying ID, reset and ctrl regs\n");    Serial.print("ID(0xD0): 0x");  Serial.println(mySensor.readRegister(BME280_CHIP_ID_REG), HEX);  Serial.print("Reset register(0xE0): 0x");  Serial.println(mySensor.readRegister(BME280_RST_REG), HEX);  Serial.print("ctrl_meas(0xF4): 0x");  Serial.println(mySensor.readRegister(BME280_CTRL_MEAS_REG), HEX);  Serial.print("ctrl_hum(0xF2): 0x");  Serial.println(mySensor.readRegister(BME280_CTRL_HUMIDITY_REG), HEX);  Serial.print("\n\n");  Serial.print("Displaying all regs\n");  uint8_t memCounter = 0x80;  uint8_t tempReadData;  for(int rowi = 8; rowi < 16; rowi++ )  {    Serial.print("0x");    Serial.print(rowi, HEX);    Serial.print("0:");    for(int coli = 0; coli < 16; coli++ )    {      tempReadData = mySensor.readRegister(memCounter);      Serial.print((tempReadData >> 4) & 0x0F, HEX);//Print first hex nibble      Serial.print(tempReadData & 0x0F, HEX);//Print second hex nibble      Serial.print(" ");      memCounter++;    }    Serial.print("\n");  }      Serial.print("\n\n");    Serial.print("Displaying concatenated calibration words\n");  Serial.print("dig_T1, uint16: ");  Serial.println(mySensor.calibration.dig_T1);  Serial.print("dig_T2, int16: ");  Serial.println(mySensor.calibration.dig_T2);  Serial.print("dig_T3, int16: ");  Serial.println(mySensor.calibration.dig_T3);    Serial.print("dig_P1, uint16: ");  Serial.println(mySensor.calibration.dig_P1);  Serial.print("dig_P2, int16: ");  Serial.println(mySensor.calibration.dig_P2);  Serial.print("dig_P3, int16: ");  Serial.println(mySensor.calibration.dig_P3);  Serial.print("dig_P4, int16: ");  Serial.println(mySensor.calibration.dig_P4);  Serial.print("dig_P5, int16: ");  Serial.println(mySensor.calibration.dig_P5);  Serial.print("dig_P6, int16: ");  Serial.println(mySensor.calibration.dig_P6);  Serial.print("dig_P7, int16: ");  Serial.println(mySensor.calibration.dig_P7);  Serial.print("dig_P8, int16: ");  Serial.println(mySensor.calibration.dig_P8);  Serial.print("dig_P9, int16: ");  Serial.println(mySensor.calibration.dig_P9);    Serial.print("dig_H1, uint8: ");  Serial.println(mySensor.calibration.dig_H1);  Serial.print("dig_H2, int16: ");  Serial.println(mySensor.calibration.dig_H2);  Serial.print("dig_H3, uint8: ");  Serial.println(mySensor.calibration.dig_H3);  Serial.print("dig_H4, int16: ");  Serial.println(mySensor.calibration.dig_H4);  Serial.print("dig_H5, int16: ");  Serial.println(mySensor.calibration.dig_H5);  Serial.print("dig_H6, uint8: ");  Serial.println(mySensor.calibration.dig_H6);      Serial.println();  delay(5000);}void loop(){  //Each loop, take a reading.  //Start with temperature, as that data is needed for accurate compensation.  //Reading the temperature updates the compensators of the other functions  //in the background.  T=mySensor.readTempC();  Serial.print("Temperatur: ");  Serial.print(T,2);  Serial.println(" °C");  /*Serial.print("Temperature: ");  Serial.print(mySensor.readTempF(), 2);  Serial.println(" degrees F");*/  pH=mySensor.readFloatPressure()/100.0;  Serial.print("Luftdruck vor Ort: ");  Serial.print(pH, 2);  Serial.println(" hPa");  H=mySensor.readFloatAltitudeMeters(pSL);  E=6.112*exp((17.62*T)/(243.12+T));  pNN=pH*exp(9.80665*H/(287.058*((273.15+T)+0.12*E+a*H/2)));  Serial.print("Luftdruck reduziert: ");  Serial.print(pNN, 2);  Serial.println(" hPa");  Serial.print("Höhe über Meer: ");  Serial.print(H, 2);  Serial.println("m");  /*Serial.print("Altitude: ");  Serial.print(mySensor.readFloatAltitudeFeet(), 2);  Serial.println("ft"); */  RH=mySensor.readFloatHumidity();  Serial.print("Relative Luftfeuchte: ");  Serial.print(RH, 2);  Serial.println(" %");  La=RH*E/(461.51*(273.15+T))*10000.0;  Serial.print("Absolute Luftfeuchte: ");  Serial.print(La, 2);  Serial.println(" g/m³");  TP=243.12*((17.62*T)/(243.12+T)+log(RH/100.0))/((17.62*243.12)/(243.12+T)-log(RH/100.0));  Serial.print("Taupunkt: ");  Serial.print(TP, 2);  Serial.println(" °C");        Serial.println();    delay(5000);}

https://www.mikrocontroller.net/topic/415860



********************************************************I*

BUCH
Manuel Odendahl
29) ARDUINO Physical Computing für Bastler, Designer & Geeks
O'REILY-Verlag
ISBN: 3-8972-1893-3



********************************************************I*

30) Schimmelvermeidung - Richtig Lüften und Entfeuchten
  • Absolute Luftfeuchtigkeit:
  • Sagt aus, wieviel Masse an Wasser ist in einem bestimmten Volumen Luft enthalten ist.
  • Dieser Wert ist nicht temperaturabhäng - was logisch ist: Heizt man einen luftdichten Raum auf, ist danach die gleiche Masse Wasser in der Luft wie vorher. Ändert man also nur die Lufttemperatur, bleibt die absolute Luftfeuchte gleich.
  • Die absolute Luftfeuchte in einem Raum kann also nur durch Lüften oder Entfeuchten geändert werden.
  • Relative Luftfeuchtigkeit:
  •  Man stelle sich die Luft als Schwamm vor.
  • Die relative Luftfeuchtigkeit gibt in Prozent an, wie voll der Schwamm (die Luft) in Prozent mit Wasser vollgesogen ist. Bei 100% ist der Schwamm voll und tropft - im Fall der Luft bedeutet das: Das Wasser kondensiert. Die Fähigkeit der Luft, Wasser zu speichern, ist stark temperaturabhäng. Kalte Luft kann kaum Wasser aufnehmen (die 100% sind schnell erreicht), warme Luft viel mehr.
  • Man kann die relative Luftfeuchtigkeit also - im Gegensatz zur absoluten - auch durch Heizen senken.
  • Taupunkttemperatur:
  • Das ist die hypothetische Temperatur, bei der die relative Luftfeuchte - ausgehend von einer aktuellen Temperatur und gleichzeitig gemessener Luftfeuchtigkeit - genau 100% betragen würde.
  • Ist eine Stelle im Raum kälter, ist dort die Luftfeuchtigkeit bei über 100% und Wassertropfen kondensieren.

https://forum.fhem.de/index.php?topic=29773.0



********************************************************I*

31) Absolute Luftfeuchtigkeit berechnen

Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Diese Formel berechnet aus der relativen Luftfeuchtigkeit die absolute Luftfeuchtigkeit.
Ausgegeben wird dabei die aktuelle Menge des Wasserdampfs in Gramm pro Kubikmeter Luft.

Mein Anwendungsfall ist, zu berechnen, ob ein Lüften sinnvoll bzw. erlaubt ist oder nicht.
Das geht nicht mit der relativen Luftfeuchtigkeit in %, sondern nur mit der absoluten Luftfeuchtigkeit. Beim Lüften soll trockenere Luft von außen (=wenig Wasser in der Luft) in einen Raum mit feuchterer Luft (=viel Wasser in der Luft) gebracht werden.
Da die relative Luftfeuchtigkeit jedoch temperaturabhängig ist, muss eine "Lüftungsempfehlung" mit der absoluten Luftfeuchtigkeit berechnet werden.

Bevor du beginnst, stelle sicher, dass du für die Berechnung folgende Informationen in Loxone verfügbar hast:
  • I1 ... Temperatur (in °C)
  • I2 ... Relative Luftfeuchtigkeit (in %)
  • I3 ... Aktueller Luftdruck (in Millibar)
  • Für den Vergleich Innen <-> Außen benötigst du die Temperatur und die relative Luftfeuchtigkeit von innen und außen.
  • Den Luftdruck benötigst du nur einmal, da der innen und außen gleich ist.
  • Die Daten für außen können natürlich auch von einem Wetterdienst kommen.

Der Ausgang gibt Gramm Wasser pro Kubikmeter Luft (g/m³) aus.

Loxone Konfiguration


Beispiel-Download: Abs Feuchte.zip

Dieses Beispiel berechnet mit den zwei Formeln die absolute Luftfeuchtigkeit von innen und von außen.
Innentemperatur ist 21°C bei 79% Luftfeuchtigkeit.
Das ist eine hohe Luftfeuchtigkeit, es sollte gelüftet werden.
Die Außentemperatur ist 27°C und 63% Luftfeuchtigkeit.
Die Berechnung kommt zu dem Schluss, dass im Raum derzeit 14,76 Gramm Wasser pro Kubikmeter in der Luft steht, während außen sogar 16,58 Gramm in der Luft sind. Ein Lüften würde sogar feuchtere Luft in den Raum bringen -> man sollte also jetzt nicht lüften!

Formel

Die verwendete Formel entstand aus den Formeln der Website
http://www.ib-rauch.de/bautens/formel/abs_luftfeucht.html.
Ich habe die ganzen Berechnungen so zusammengefasst, dass eine einzige Formel herauskommt, die natürlich entsprechend kompliziert ist.

Hinweise dazu:
Sollte dir der Luftdruck in bar (nicht in Millibar) vorliegen, kannst du die Formel ändern - in der Formel kommt zweimal I3/1000 vor, um Millibar in Bar umzurechnen.
Entferne einfach die beiden /1000 und verwende am Eingang bar.
Die Relative Luftfeuchtigkeit muss in Prozent (0 bis 100%) angegeben werden.
Sollte dir die relative Luftfeuchtigkeit in der Form 0 bis 1 vorliegen, kannst du ebenfalls die Formel ändern:
Ersetze I2/100 durch I2 (kommt auch zweimal vor)

Zum Kopieren hier die Formel:
Absolute Luftfeuchtigkeit

0.622 * I2/100 * (1.01325 * 10^(5.426651 - 2005.1 / (I1 + 273.15) + 0.00013869 * ((I1 + 273.15) * (I1 + 273.15) - 293700) / (I1 + 273.15) * (10^(0.000000000011965 * ((I1 + 273.15) * (I1 + 273.15) - 293700) * ((I1 + 273.15) * (I1 + 273.15) - 293700)) - 1) - 0.0044 * 10^((-0.0057148 * (374.11 - I1)^1.25))) + (((I1 + 273.15) / 647.3) - 0.422) * (0.577 - ((I1 + 273.15) / 647.3)) * EXP(0.000000000011965 * ((I1 + 273.15) * (I1 + 273.15) - 293700) * ((I1 + 273.15) * (I1 + 273.15) - 293700)) * 0.00980665) / (I3/1000 - I2/100 * (1.01325 * 10^(5.426651 - 2005.1 / (I1 + 273.15) + 0.00013869 * ((I1 + 273.15) * (I1 + 273.15) - 293700) / (I1 + 273.15) * (10^(0.000000000011965 * ((I1 + 273.15) * (I1 + 273.15) - 293700) * ((I1 + 273.15) * (I1 + 273.15) - 293700)) - 1) - 0.0044 * 10^((-0.0057148 * (374.11 - I1)^1.25))) + (((I1 + 273.15) / 647.3) - 0.422) * (0.577 - ((I1 + 273.15) / 647.3)) * EXP(0.000000000011965 * ((I1 + 273.15) * (I1 + 273.15) - 293700) * ((I1 + 273.15) * (I1 + 273.15) - 293700)) * 0.00980665)) * I3/1000 * 100000000 / ((I1 + 273.15) * 287.1)


Quelle:
http://www.loxwiki.eu/display/LOX/Absolute+Luftfeuchtigkeit+berechnen



********************************************************I*

32) Experimente im Physikunterricht unter Verwendung der ARDUINO Entwicklungsumgebung

Diplomarbeit  2016-09  UNI Graz   +++ (1A) Grundlagen unbedingt lesen


Florian Pfannhofer

Die vorgestellten Versuche und Projekte wurden mit den in Tab. 1.1 aufgelisteten Komponenten durchgeführt, wobei versucht wurde die Kosten möglichst gering zu halten, um den Schuleinsatz zu erleichtern.

      Tab. 1.1:Benötigtes  Material
1x
  Bezeichnung                                         Preis/Stk.
      Simpleduino UNO (Arduinonachbau)             € 13,90

      ARDUINO UNO R3      ATmega328p              € 23,90
      Breadboard                                                   € 2,65
      Gyro- und Beschleunigssensor MPU-6050   € 7,69
      3 Achsen Magnetometer HMC5883L             € 8,99
      4 Kanal Relais-Modul                                     € 3,34
2x  Ultraschall Messmodul HC-SR04                   € 3,95
      Luft-Feuchtigkeitssensor AM2301 DHT22      € 4,77
      Luftdrucksensor BMP180                               € 7,59
      LCD Display 16x2 mit I2C Modul                  € 4,59
2x  Fotowiderstand LRD03  500 kOhm              € 0,20    Sketch
2x  Schrittmotor DAYPOWER S-SPSM-5V         € 4,95
2x  Potentiometer 10 kOhm                                € 1,94
    Sketch
4x  Taster                                                            € 0,15 
Sketch
      Temperatursensor KTY81/222  KTY81-22   € 1,29  Sketch
      Drahtbrückenset mit Box                              € 5,95
      Widerstands Sortiment                                € 2,49
      Elektrolytkondensatoren Sortiment              € 2,79
       LED 5mm rot  1,7V 2mA                                                Sketch
      Jumper Wires male                                      € 2,65
      Jumper Wires female                                   € 2,68
       Sortimentkasten                                         € 4,40
Gesamtsumme € 98,24

https://github.com/adafruit/DHT-sensor-library/archive/master.zip




Codes
3.1 Auslesen eines Fotowiderstands . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 7
3.2 Temperaturmessung mit einem Silizium Widerstandsthermometer . . 13
3.3 Pulsweitenmodulation einer LED . . . . . . . . . . . . . . .
. . . . . . . . . .. . . . . 16
3.4 Steuerung einer LED durch Taster mit Pulldown-Widerstand . . . . 18
3.5 Steuerung einer LED durch Taster und internem Pullup-Widerstand 19
3.6 Trimmung einer LED mit Hilfe eines Drehtpotentiometers . . . . . . 22
3.7 Steuerung einer LED durch ein Relais . . . . . . . . . .
. . . . . . . . . .. . . . . . . 25
3.8 Auslesen eines BMP180 Luftdrucksensors . . . . . . . .
. . . . . . . . . . . . . . . . . 33
3.9 Auslesen des AM2301 Luftfeuchtigkeitssensors . . . . . . . . . . . . . 39
3.10 Berechnung der Lagewinkel aus den Winkelgeschwindigkeitswerten des MPU6050 . . 43
3.11 Bestimmung der lokalen Schwerebeschleunigung . . . . . . . . . . . . 47
3.12 Magnetometer . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .. . 53
3.13 Programm zum Betrieb des Schrittmotors . . . . . . .
. . . . . . . . . . . . . . . . . . 59
3.14 Ultraschallsensor . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 62
3.15 Programm um Text über die serielle Schnittstelle an das LC-Display zu senden  . . 67
4.1 Programm für das Spannungsmessgerät . . . . . . . . . .
. . . . . . . . . . . . . . . . 71
4.2 Programm zur Messung von Kapazitäten . . . . . . . . . .
. . . . . . . . . . . . . . . 77
4.3 Programm zur Bestimmung der Schallgeschwindigkeit . . .
. . . . . . . . . .. . . . . 81
4.4 Wetterstation mit Unwetterwarnung . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 91
4.5 Radar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .. . . . . . . . . . .. . 101



Inhalt
Abstract      . . . . . . . . . . . . . . . . . . . . . . . . . . . .                II
Kurzfassung      . . . . . . . . . . . . . . . . . . . . . . . . . . . .         III
1. Einleitung      . . . . . . . . . . . . . . . . . . . . . . . . . . . .        1
2. Über Arduino    . . . . . . . . . . . . . . . . . . . . . . . . . . . .    3

2.0.1.Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.0.2.Aufbau eines Arduino Programms . . . . . . . . . . . . . . . . 4
3. Grundlegende Experimente und Funktionsweisen von Sensoren       5
3.1. Fotowiderstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1.Phyikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2.Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.3.Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2. Halbleiter Widerstandsthermometer . . . . . . . . . . . . . . . . . . 8
3.2.1.Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.2.Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3.Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3. Pulsweitenmodulation einer LED . . . . . . . . . . . . . . . . . . . . 14
3.3.1.Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.2.Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.3.Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4. Taster, Schalter und eindeutige Zustände . . . . . . . . . . .. 17
3.4.1.Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.2.Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.3.Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.5. Drehpotentiometer . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5.1.Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . . 20
3.5.2.Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5.3.Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6. Relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6.1.Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . . 23
3.6.2.Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6.3.Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7. Protokolle für digitale Datenübertragung . . . . . . . . . . . . . . . 25
3.7.1.         I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.7.2.SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.8. Arbeiten mit externen Bibliotheken . . . . . . . . . . . . . . . . . . 29
3.9. Luftdrucksensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.9.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 30
3.9.2. Atmosphärischer Druck . . . . . . . . . . . . . . . . . . . . . 31
3.9.3. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.9.4. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.10. Luftfeuchtigkeitssensor . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.10.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 35
3.10.2. Luftfeuchtigkeit . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.10.3. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.10.4. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.11. Gyrosensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.11.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 40
3.11.2. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.11.3. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.12. Beschleunigungssensor . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.12.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 45
3.12.2. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.12.3. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.13. Magnetometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.13.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 49
3.13.2. Erdmagnetfeld . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.13.3. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.13.4. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.14. Schrittmotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.14.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 55
3.14.2. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.14.3. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.15. Ultraschallsensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.15.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 60
3.15.2. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.15.3. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.16. LC-Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.16.1. Physikalisches Prinzip . . . . . . . . . . . . . . . . . . . . . . 64
3.16.2. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.16.3. Programmcode . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4. Erweiterte Versuche und Projekte     . . . . . . . . . . . . . . . . . . . . . . .69
4.1. Spannungsmessgerät . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2. Kapazitätsmessung von Kondensatoren . . . . . . . . . . . . . . . . 74
4.3. Messung der Schallgeschwindigkeit . . . . . . . . . . . . . . . . . . . 80
4.4. Bestimmung der Molmasse von Luft . . . . . . . . . . . . . . . . . . 84
4.5. Wetterstation mit Unwetterwarnung . . . . . . . . . . . . . . . . . . 87
4.6. Radar - Geschwindigkeitsmessung über Winkeländerung zum geradlinig bewegten Objekt . . 96
5. Ausblick        . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                     107
Literatur         . . . . . . . . . . . . . . . . . . . . . . . . . . . .                            108
Abbildungen   . . . . . . . . . . . . . . . . . . . . . . . . . . . .               111
Tabellen       . . . . . . . . . . . . . . . . . . . . . . . . . . . .                    113





Literatur
[1] Arduino.Arduino. 2015   https://www.arduino.cc/
[2] Erik Bartmann.
      Die elektronische Welt mit Arduino entdecken
[3] Herbert Bernstein.
     Messelektronik und Sensoren
[4] Ekbert Hering.
    Sensoren in Wissenschaft und Technik
[5] Johannes Niebuhr und Gehrhard Lindner.
     Physikalische Messtechnik mit Sensoren
[6] Frank Bernhard, Hrsg.
      Handbuch der Technischen Temperaturmessung
[7] Horst Kuchling.
     Taschenbuch der Physik
[8] Michael Margolis.
     Arduino Kochbuch
[9] Herbert Bernstein.
     Elektrotechnik/Elektronik für Maschinenbauer
[10] Hans-Jürgen Gevatter und Ulrich Grünhaupt, Hrsg.
Handbuch der Mess- und  Automatisierungstechnik in der Produktion
[11] Erwin Böhmer, Dietmar Ehrhardt und Wolfgang Oberschelp.
Elemente der angewandten Elektronik
[12] NXP.I2C-bus specification and user manual      http://www.nxp.com/documents/user_manual/UM10204.pdf
[13] Klaus Dembowski.
      Mikrocontroller - Der Leitfaden für Maker
[14] Herbert Bernstein.
        Mikrocontroller
[15] Thomas Elbel.
       Mikrosensorik

Bosch.
BMP180 Digital pressure sensor 
https://ae-bst.resource.bosch.com/media/products/dokumente/bmp180/BST- BMP180- DS000-12~1.pdf

Honeywell.  3-Axis Digital Compass IC HMC5883L 
https://aerospace.honeywell.com/~/media/aerospace/files/datasheet/3-axisdigitalcompassichmc5883l_ds.pdf

Zentralanstalt für Meteorologie und Geodynamik. 
http://www.zamg.ac.at/cms/de/geophysik/produkte-und-services-1/online-deklinationsrechner

+++  (1A)

400_d_Diplomarbeit-x_Computergestützte Experimente im Physikunterricht unter Verwendung der ARDUINO Entwicklungsumgebung (121 Seiten)_1a.pdf



********************************************************I*

33) Arduino – Temperatur und Luftfeuchtigkeit mit dem DHT22 prüfen

DHT22 Pin's verdrahtung
Pin 1 (power / links) an +5V
Pin 2 (data) an digitalen pin-9 am Arduino
Pin 3 n.c.  bleibt frei
Pin 4 (rechts) an GND
Pin 2 (data) und Pin 1 (power) werden noch mit einem 10k Widerstand verbunden


Das auslesen der Temperatur und der Luftfeuchte, dauert beim DHT22 gerade einmal 250ms.
Bei einem der Vorgänger Modelle konnte dies bis zu 2 Sekunden dauern.



#include "DHT.h"
 
#define DHTPIN 9    
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup()
{
  Serial.begin(9600);
  Serial.println("DHT22 - Test!");
 
  dht.begin();
}
 
void loop()
{
  float h = dht.readHumidity();     //Luftfeuchte auslesen
  float t = dht.readTemperature();  //Temperatur auslesen
 
  // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben.
  if (isnan(t) || isnan(h))
  {
    Serial.println("DHT22 konnte nicht ausgelesen werden");
  }
  else
  {
    Serial.print("Luftfeuchte: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatur: ");
    Serial.print(t);
    Serial.println(" C");
  }
}

https://github.com/adafruit/DHT-sensor-library

http://fluuux.de/2012/10/arduino-temperatur-und-luftfeuchtigkeit-mit-dem-dht22-prufen/



********************************************************I*

34.1) Feuchte Wände

Die meisten Altbaubewohner kennen das Problem: Die Wand fühlt sich kalt und feucht an, erste Spuren von Schimmel sind vielleicht schon vorhanden. Das Bekämpfen der Symptome mittels Schimmelentferner hat keinen langfristigen Erfolg. Aber um das Übel an der Wurzel zu packen, muss die Ursache bekannt sein. Dieser Artikel soll Ihnen bei der “Spurensuche” helfen.

Angenommen, wir haben unsere Raumluft auf 22°C aufgeheizt, um die “Kältestrahlung” der nicht isolierten Wände zu kompensieren.
Während wir schlafen produzieren wir 50g Wasserdampf pro Stunde.
Nach einer Nacht mit geschlossenem Fenster beträgt die relative Luftfeuchtigkeit im Schlafzimmer 70%.
Der Taupunkt liegt dementsprechend bei 16,3°C.
Die Schlafzimmeraußenwand kühlt in kalten Nächten auf unter 15°C ab.
Luft, die hier vorbeistreicht, kühlt unter die Taupunkttemperatur von 16,3°C ab.
Das überschüssige Wasser kondensiert an der Wand und wird von der Tapete aufgenommen.

http://www.bastelitis.de/feuchte-wande/


34.2) Temperaturen messen mit dem Arduino

1Wire-Temperatursensoren DS18S20

Sketch für die Arduino-Entwicklungsumgebung

/* By R. Plag, December 2009*/

#include <DS18S20.h>  // Erstellen und initialisieren Sie die Liste der DS18S20-Sensoren.
DS18S20_List ds18s20(10);    // pin 10


/ * Auswahl der Sensoren nach "id": Wenn Sie wirklich Pech haben, können Sie zwei Sensoren mit der gleichen ID in Ihrem Array haben, da es nur 65535 IDs und Milliarden von Seriennummern gibt. Ersetzen Sie in diesem Fall den "schlechten" Sensor oder greifen Sie über get_temp_by_no () darauf zu. Wenn Sie die 'ID' anstelle des 'Nein' verwenden, um einen Sensor auszuwählen, sind Sie nicht mehr auf den Index des Sensors in der Liste angewiesen, der sich ändern kann, wenn Sie einen Sensor hinzufügen, entfernen oder austauschen. Sie erhalten T = 85.0, wenn der Sensor nicht vorhanden ist. * /

#define ID_OUTSIDE 0xABC5      // Benutze hier die ID eines deiner Sensoren
/ * Nichts Besonderes hier benötigt ... * /

void setup(void) {
     Serial.begin(9600);
     Serial.print("Sensors found: ");
    Serial.println(ds18s20.count,DEC);
}


void loop(void) {

   Serial.println();

/ * Hier warten wir auf den Abschluss der Konvertierung. Sie können hier einige andere Dinge mit Ihrem Arduino tun. Da dieses Demo-Programm nichts anderes macht und eine Temperaturumwandlung ca. eine Sekunde dauert, machen wir einfach ein: * /

delay(1000);


/ * Lesen Sie die Temperaturwerte und starten Sie die nächste Konvertierung. Sie können dies so oft wie Sie möchten anrufen. Sie werden jedoch nur einmal pro Sekunde neue Werte erhalten. Wenn die vorherige Konvertierung noch nicht abgeschlossen ist, kehrt die Funktion zurück, ohne etwas zu tun. * /

ds18s20.update();

/ * Drucke Temperatur und ID aller Sensoren. Die Reihenfolge der Liste kann sich ändern, wenn Sie Sensoren hinzufügen, entfernen oder austauschen. * /

for (int i=0;i<ds18s20.count;i++)
     {
     Serial.print("Sensor ");
     Serial.print(i,DEC);
     Serial.print(", id=0x");
     Serial.print(ds18s20.get_id(i),HEX);
     Serial.print(", T=");
     print_temperature(ds18s20.get_temp(i));
     Serial.println("C");
     }


/ * Drucke Temperatur eines einzigartigen Sensors unter Verwendung seiner ID. Die ID ändert sich nicht, wenn Sie einen Sensor hinzufügen, entfernen oder austauschen, aber Sie müssen die IDs Ihrer Sensoren kennen, z. von der Ausgabe oben. Sie erhalten T = 85.0, wenn die ID nicht bekannt ist. * /

    float T_outside=ds18s20.get_temp_by_id(ID_OUTSIDE);
    Serial.print("Outside temperature: ");
    print_temperature(T_outside);
   Serial.println("C");

   return;

}


http://www.bastelitis.de/temperaturen-messen-mit-dem-arduino/



********************************************************I*

35) Das h,x-Diagramm nach Mollier

Luft im h,x-Diagramm eindeutig festlegen. Aus diesem Grunde wird das h,x-Diagramm oft auch t,x-Diagramm genannt.
Die Maßeinheit für die absolute Feuchte oder den Wassergehalt x ist: Gramm Wasser je Kilogramm trockene Luft [g/kg].
400_d_Acker-x_Das h,x-Diagramm nach Mollier - Power Point Anwendung_1a,pps

www.mico-multimedia.de/solar/PDF-Daten/h,x-Diagramm.pps

es gibt auch Tabellen da ist der Bezugsdruck p = 1000 hPa
Mollier-h,x-Diagramm für feuchte Luft 
gilt nur bei Luftdruck p = 0,950 bar = 950 hPa = 950 mbar = 540m über dem Meeresspiegel

z.B.
Temperatur              t = 20 °C
Realtive Feuchte phi = 60 % r.F.
Absolute Feuchte / Wasserdampfgehalt x = 9,3 g/kg Luft 
entspricht etwa einer Dichte p= 10,53 g/m3 Luft

Taupunkt ist senkrecht nach unten 12 °C

https://de.wikipedia.org/wiki/Mollier-h-x-Diagramm

400_d_Acker-x_Das h,x-Diagramm nach Mollier - Aufbau und Anwendung (42 Seiten)_1a.pdf



********************************************************I*

36) ARDUINO Temperature Sensors DHT22 versus DS18B20

/*www.geekstips.comTemperature sensor comparison - DHT22 vs DS18B20 | Arduino tutorial*/#include "DHT.h"#define DHTPIN 2     // what digital pin we're connected to// Uncomment whatever type you're using!//#define DHTTYPE DHT11   // DHT 11#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321//#define DHTTYPE DHT21   // DHT 21 (AM2301)// Connect pin 1 (on the left) of the sensor to +5V// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1// to 3.3V instead of 5V!// Connect pin 2 of the sensor to whatever your DHTPIN is// Connect pin 4 (on the right) of the sensor to GROUND// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor// Initialize DHT sensor.// Note that older versions of this library took an optional third parameter to// tweak the timings for faster processors.  This parameter is no longer needed// as the current DHT reading algorithm adjusts itself to work on faster procs.DHT dht(DHTPIN, DHTTYPE);void setup() {  Serial.begin(9600);  Serial.println("DHTxx test!");  dht.begin();}void loop() {  // Wait a few seconds between measurements.  delay(2000);  // Reading temperature or humidity takes about 250 milliseconds!  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)  float h = dht.readHumidity();  // Read temperature as Celsius (the default)  float t = dht.readTemperature();  // Read temperature as Fahrenheit (isFahrenheit = true)  float f = dht.readTemperature(true);  // Check if any reads failed and exit early (to try again).  if (isnan(h) || isnan(t) || isnan(f)) {    Serial.println("Failed to read from DHT sensor!");    return;  }  // Compute heat index in Fahrenheit (the default)  float hif = dht.computeHeatIndex(f, h);  // Compute heat index in Celsius (isFahreheit = false)  float hic = dht.computeHeatIndex(t, h, false);  Serial.print("Humidity: ");  Serial.print(h);  Serial.print(" %\t");  Serial.print("Temperature: ");  Serial.print(t);  Serial.print(" *C ");  Serial.print(f);  Serial.print(" *F\t");  Serial.print("Heat index: ");  Serial.print(hic);  Serial.print(" *C ");  Serial.print(hif);  Serial.println(" *F");}


https://www.geekstips.com/temperature-sensor-dht22-ds18b20-arduino-tutorial/#more-190



********************************************************I*

37) Temperaturüberwachung mit  TMP36 auf pin-A0

Frost- und Hitzealarm  (UGW IO OGW)   4°C & 25°C


TempToAnalogLED.ino


/*
  Program shows the change of temperature in a range from -15 to 35 degrees celsius
  as a color of an RGB LED,
  the LED changes from full blue (-15) over green to red (+35)
  2 different LEDs show a frost and a heat alarm
   
  Programm zeigt die Temperatur allmählichen Temperaturwechsel von -15 bis +35 Grad
  und zeigt Temperatur in diesem Bereich mit einem Farbverlauf in einem RGB-LED an,
  wobei kalte Temperaturen blau, mittlere grün und heisse Temperaturen rot angezeigt werden
  zusätzlich gibt es 2 LEDs für einen Frost- und einen Hitzealarm
  unterhalb einer Maximallimite brennt das blaue LED
  und oberhalb einer Minimallimite das rote LED */
 
int temperaturePin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
                        //the resolution is 10 mV / degree centigrade
                        //(500 mV offset) to make negative temperatures an option
   
int ledAnalogOne[] = {3, 5, 6}; //3 PWM-LEDs: 3 red, 5 green, 6 blue
int ledBlue = 7;
int ledRed = 8;
 
//variables for the temperature and the temperature range                             
float temperature = 15.0;
int range = 50;
int start = -15;
 
int maximumLedBlue = 0; //frost alarm
int minimumLedRed = 25; //heat alarm
 
int red = 0;
int green = 0;
int blue = 0;
float tmp = 0.0;
int mydelay = 1000;
 
byte  black[] = {0, 0, 0};
 
void setup(){
  Serial.begin(9600);
  pinMode(ledBlue, OUTPUT);    
  pinMode(ledRed, OUTPUT);    
  for(int i = 0; i < 3; i++){
   pinMode(ledAnalogOne[i], OUTPUT);   //Set the three LED pins as outputs
  }
   
  setColor(ledAnalogOne, black);     
}
 
void loop(){
    temperature = getTemperature(temperaturePin);
    tmp = 2 * 255 / range;
 
        //converts a temperature to a RGB color
    if (temperature < start) {
      red = 0;
      green = 0;
      blue = 255;
    } else if (temperature <  start + (range / 2)) {
      red = 0;
      green = (temperature - start) * tmp;
      blue = 255 - ((temperature - start) * tmp);
    } else if (temperature < start + range) {
      red = (temperature - (range/2)- start) * tmp;
      green = 255 - ((temperature - (range/2) - start) * tmp);
      blue = 0;
    } else {
      red = 255;
      green = 0;
      blue = 0;
    }
 
    //frost alarm
    if (temperature <= maximumLedBlue) {
          // blue LED is turned on
      digitalWrite(ledBlue, HIGH); 
    } else {
         // blue LED is turned off
      digitalWrite(ledBlue, LOW);
    }
 
    //heat alarm
    if (temperature >= minimumLedRed) {
         // red LED is turned on
      digitalWrite(ledRed, HIGH);  
    } else {
         // red LED is turned off
      digitalWrite(ledRed, LOW);
    }
 
    byte color[] = {red, green, blue};
    printToSerial(temperature, color);
    setColor(ledAnalogOne, color);
    //pauses, before the temperature is read again
    delay(mydelay);
}
 
//fetches a random temperature value
float getRandomTemperature(int start, int range) {
  randomSeed(millis());
  return random(start, start + range);
}
 
//sets the RGB LED to a RGB color
void setColor(int* led, byte* color){
  //iterates through the 3 pins
  for(int i = 0; i < 3; i++){            
   analogWrite(led[i], 255 - color[i]);                 
 }
}
 
//prints the temperature and RGB values at the serial interface
void printToSerial(float temperature, byte* color) {
  Serial.print("T: ");
  Serial.print(temperature);
  Serial.print("; RGB: ");
  Serial.print(color[0]);
  Serial.print("/");
  Serial.print(color[1]);
  Serial.print("/");
  Serial.println(color[2]);
}
 
float getTemperature(int analogPin){
  /* converting from a 0 to 1024 digital range
     to 0 to 5 volts (each 1 reading equals ~ 5 millivolts */
  float voltage = (analogRead(analogPin) * .004882814);
                                      
  //convert into a temperature     
  return (voltage - .5) * 100;       
}


400_b_ARDUINO-x_Temperaturüberwachung - Frost- und Hitzealarm  4°C & 25°C_1a.pdf

http://ecotronics.ch.honorius.sui-inter.net/wordpress/2012/arduino-projekt-temperaturuberwachung/


********************************************************I*

https://funduino.de/


38) Arduino: Temperatur & Luftfeuchtigkeit auf einem LCD-Display

Mit dem Temperatur- / Luftfeuchtigkeits-Sensor messen wir die Werte in der Umgebung und geben das Ergebnis auf einem LCD-Display aus.



Arduino Uno R3  mit ATmega328p
BreadBoard / Steckbrett
Temperatur / Luftfeuchtigkeits-Sensor DHT22
Zweizeiliges I2C LCD-Modul 2x16   I2C-Modul auf der Rückseite des LCD-Moduls  LCM1602 IIC

PCF8574 Portexpander
Jumper-Kabel
Kabel

https://dev-blog.vcp.de/category/hardware-arduino/



Das LCD Modul mit angelötetem I²C Bus ermöglicht die Verwendung eines LCD Moduls mit einer einfachen Verkabelung.
Ein weiterer Unterschied zum normalen LCD Display besteht darin, dass sich auf der Rückseite des Displays ein Drehregler befindet, mit dem die Leuchtstärke des LCD reguliert werden kann.
https://dev-blog.vcp.de/lcd-modul/


benötigte Bibliothek (Library): LiquidCrystal_I2C.h
Um mit dem LCD-Modul arbeiten zu können benötigst du eine Bibliothek (Library).
Die Bibliothek kann zum Beispiel unter:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
als .ZIP Datei heruntergeladen werden.
Danach muss die Bibliothek in der Arduino-Software hinzugefügt werden.

Anleitung zum LCD Display mit I2C Anschluss

https://funduino.de/nr-19-i%C2%B2c-display

I2C / Schnittstellen LCD1602 2004 LCD-Adapterplatte für Arduino

YwRobot LCM1602 IIC V1 20x4 LCD Display with PCF8574T
https://gist.github.com/hezhao/9750621

Verbinden des LCD-Displays mit dem Portexpander PCF8574




LCD LCM 1602 I2C von YwRobot.
PCF8574 Portexpander
http://fluuux.de/2014/04/pcf8574-ein-lcd-display-mit-nur-zwei-pins-arduino-betreiben/



benötigte Bibliotheken:
DHT.h – https://github.com/adafruit/DHT-sensor-library
LiquidCrystal_I2C.hhttps://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

Wenn du die Bibliotheken noch nicht installiert hast:
Wie installiere ich eine zusätzliche Bibliothek?


#include <LiquidCrystal_I2C.h>  // LiquidCrystal_I2C Bibliothek einbinden
#include <Wire.h>   // Wire Bibliothek einbinden
#include <DHT.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2);   //Hier wird festgelegt um was für einen Display es sich handelt. In diesem Fall einer mit 16 Zeichen in 2 Zeilen.
 
 
#define DHTPIN 8
#define DHTTYPE DHT11
 
// DHT sensor
DHT dht(DHTPIN, DHTTYPE);
 
 
void setup() {
  lcd.begin(); //Im Setup wird das LCD-Modul gestartet
  dht.begin(); //Im Setup wird der DHT11 gestartet
  delay(500);
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
  int humidity_data = (int)dht.readHumidity();
  int temperature_data = (int)dht.readTemperature();
//
Ab hier kann das I2C LCD Modul genau wie das einfache LCD Modul programmiert werden.
lcd.setCursor(0,0);          //  um Zeichen und Zeile anzugeben (Zeichen,Zeile)
lcd.print("Temp.: ");        //  um Temp.: auf dem Display anzeigen zu lassen.
lcd.print(temperature_data); //  um den Temp.-Wert auf dem Display anzeigen zu lassen
lcd.print("\337C");          //  um \337C auf dem Display anzeigen zu lassen
lcd.setCursor(0,1);          //  um Zeichen und Zeile anzugeben
lcd.print("Feuchte: ");      //  um Feuchte auf dem Display anzeigen zu lassen
lcd.print(humidity_data);    //  um Feuchte-Wert auf dem Display anzeigen zu lassen
lcd.print("%");              //  um % auf dem Display anzeigen zu lassen
  delay(500);                // 0,5 sec. Wartezeit
 
}


https://dev-blog.vcp.de/temperatur-luftfeuchtigkeit-auf-einem-lcd-display/



********************************************************I*

39) Temperatur mit DS18S20, Kommastellen

Hallo, auch ich darf mal ein Neuling sein und beschäftige mich seit einigen
Wochen mit diesem Thema. Keine Angst, habe auch ein Buch vorn Franzis und auch schon einiges in diesem Forum gelesen.

Ich möchte 2 LCD- Anzeigen zusammenschalten, beide sollen das gleiche anzeigen, hab da auch schon eine Schaltung mittels I²C gefunden und erfolgreich probiert.
Ist jetzt im Moment Nebensache, da ich erstmal die ganze Schaltung und Software auf dem Brett zusammen und nach und nach aufbauen möchte.
Als Erweiterung soll aus einer Steuerung, am USB Anschluss (wo die Daten seriell vor liegen) ebenfalls auslesen und am LCD-Display 20x4 sichtbar machen.

Hab mal mit dem einfachen angefangen:

Temperatur auslesen und darstellen:
Funktioniert auch soweit, wie bekomme ich aber die Temperatur mit einer
Kommastelle angezeigt? Diesen Code habe ich noch nicht hinbekommen.
Anbei mein bisheriger der auch läuft.

#include <LiquidCrystal.h> //LiquidCrystal-Anzeige mit:
#include <OneWire.h> //RS an Pin 12
#include <DallasTemperature.h> //RW an Pin 11
//ENABLE an Pin 10
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); //D4-7 an den Pins 5-2,
#define LCD_WIDTH 20 //Anzahl Spalten des Display (20)
#define LCD_HEIGHT 4 //Anzahl Zeilen des Display (4)

DeviceAddress sensor1 = { 0x10, 0xCD, 0xB6, 0xB5, 0x2, 0x8, 0x0, 0xD4 }; //Sensoradressen
DeviceAddress sensor2 = { 0x10, 0xD9, 0xE1, 0xB5, 0x2, 0x8, 0x0, 0x97 }; //Sensoradressen
OneWire ds(13); //Pin an dem die Datenleitung des ds18s20 hängt

DallasTemperature sensors (&ds);
int temp1, temp2;


void setup()
{
sensors.begin();
Serial.begin(9600);
}
void loop()

{
sensors.requestTemperatures();
temp1 = sensors.getTempC(sensor1);
temp2 = sensors.getTempC(sensor2);

lcd.begin(20,4);
lcd.clear();
lcd.setCursor (0,0);
lcd.print("Aussen Temperatur");
lcd.setCursor (0,1);
lcd.print(temp1); lcd.write(0xDF); lcd.print("C");

lcd.setCursor (0,2);
lcd.print("Innen Temperatur");
lcd.setCursor (0,3);
lcd.print(temp2); lcd.write(0xDF); lcd.print("C");
delay (3000);


}


https://www.arduinoforum.de/arduino-Thread-Temperatur-mit-DS18S20-Kommastellen


********************************************************I*

40) Arduino und DHT22 (AM2302) Temperaturmessung


UNO PLUS
verbessertes Arduino Board

https://www.roboter-bausatz.de/2358/uno-plus-verbessertes-arduino-board


Waveshare UNO PLUS  - verbessertes ARDUINO UNO R3 Board  EXP-R63-033   € 19,95

https://www.exp-tech.de/en/platforms/arduino/7516/uno-plus-arduino-uno-r3-compatible

ist ARDUINO Uno R3 Kompatibel


UNO+

www.hobbycomponents.com  

https://www.waveshare.com/wiki/UNO_PLUS


Produktinformationen "UNO PLUS verbessertes Arduino Board"
Beschreibung:
Arduino kompatibles UNO Plus Board 3.3V/5V

Das UNO Plus Board ist ein Arduino R3 kompatibler Microcontroller mit zahlreichen Verbesserungen.
So besitzt das Board eine einstellbare Betriebsspannung für 3.3V oder 5V, einen Bootloader Switch um Programme direkt ausführen zu können und zusätzliche Pins.
An der Qualität der verbauten Komponenten wurde bei Waveshare nicht gespart!
Bei diesem Board handelt es sich eine robuste und hochwertige Version des UNO R3 Boards.
Eine vollständige Dokumentation des Boards finden Sie auf der Hersteller-Webseite.



http://osepp.com/wp-content/uploads/2012/10/OSEPP_Uno_R3_Plus_Arduino_Compatible-Rev3.0-Schematic.pdf

https://www.waveshare.com/wiki/UNO_PLUS

https://www.waveshare.com/w/upload/0/0d/UNO-PLUS-Schematic.pdf


    1. ATmega328P-AU
   
2. AMS1117-3.3:             3,3V  Spannungsregler
    3.
NCP1117ST50T3G:    5,0V Spannungsregler
   
4. FT232RL: USB zu UART Konverter / Wandler
   
5. Arduino-Schnittstelle
        
kompatibel mit Standard-Arduino-Schnittstelle mit zwei zusätzlichen Analog-Eingängen A6 (Config der CFG), A7
       
Lötpads auf der Unterseite, um das Board mit Hilfe von Stiftleisten Breadboardtauglich zu machen

    6. ICSP-Schnittstelle
   
7. Micro-USB-Anschluss: zum Hochladen von Programm- oder seriellen Port-Debugging
   
8. Leistungsausgang: 3,3 V ODER 5,0 V, Spannungspegel, konfiguriert durch den Onboard-Leistungskonfigurationsschalter, verwendet als Leistungsausgang ODER gemeinsame Erdung mit anderen Boards

8.Power output header : 3.3V ODER 5V Power output oder common ground für andere Boards, der Spannungspegel wird durch den power jumper(#15) bestimmt.

   9. FT232 Pins: zum Brennen des Bootloaders auf den Chip /  in den Mikrocontroller
   
10. Gleichstrom-Eingang: 7,0Vdc bis 12Vdc
   
11. Reset-Knopf
   
12. Power Anzeige  = Betriebsanzeige
   
13.
Serielle Schnittstelle Rx / Tx-Anzeige
   
14. Benutzer-LED
   
15. Stromkonfigurationsschalter: zum Konfigurieren der Betriebsspannung
/ Power jumper : zum Einstellen des Spannungspegel

    16. Bootloader-Auswahlschalter
        
Einschalten: Die Karte wird zurückgesetzt, wenn das Einschalten oder andere USB-Geräte erkannt wurden, die mit dem PC verbunden sind
        
Ausschalten: Das Onboard-Programm läuft sofort nach dem Einschalten und die Karte wird nicht zurückgesetzt, wenn andere USB-Geräte erkannt wurden, die eine Verbindung zum PC herstellen



Hersteller                : Waveshare
Chip                        : ATMEGA328P-AU
AMS1117-3.3          : 3.3V Spannungsregler
NCP1117ST50T3G : 5V Spannungsregler
ICSP interface
Micro-USB-Schnittstelle
FT232 USB-Chip
Eingangsspannung : 7Vdc bis 12Vdc

https://www.waveshare.com/wiki/UNO_PLUS
400_b_ARDUINO-x_UNO PLUS Schematic - UNO+ Schaltplan_1a.pdf




https://www.waveshare.com/UNO-PLUS.htm
https://www.waveshare.com/wiki/UNO_PLUS





UNO PLUS Features

UNO PLUS is a development board compatible with the Arduino UNO R3, an improved & enhanced alternative solution for Arduino UNO R3.

UNO PLUS Vs UNO R3:


UNO PLUS UNO R3 Remarks
Operating voltage 5V/3.3V 5V Dual voltage level to support more shields
Reset Lateral Vertical Lateral button is easier to use when connecting with shield
Bootloader switch Yes None The board can be configured to run program immediately when power-up by the switch
USB connector Micro USB USB Type B Micro connector is more commonly used, and shields won't be blocked anymore while connecting
DC jack Low profile Normal height Shields won't be blocked anymore while connecting
Power output header Yes None

Providing 5V/3.3V power output OR common-grounding with other boards

3.3V power output 800mA Max 150mA Max UNO PLUS features higher driving capability
Oscillator Crystal oscillator Ceramic resonator Crystal oscillator is suit for applications where accurate clock reference is required
ADC channel 8 6 CFG used as ADC6 by configuration, and ADC7 from the Reserved PIN
Connecting with prototype breadboard Supported Not supported Solder pads is provided for DIY interfaces to connecting with prototype breadboard
USB driver Compatible with all main systems Doesn't compatible with WIN7/WIN8 Express Edition Driver will never failed to install thanks to the onboard FT232
Firmware fixing Supported Not supported Firmware can be fixed by using the onboard FT232, no extra programmer is needed




http://www.gunook.com/arduino-und-dht22-am2302-temperaturmessung/
http://www.gunook.com/arduino-37-in-1-sensorsatz-erlautert/




********************************************************I*

41) Eine Wetterstation mit dem Arduino selbst erstellen und programmieren

KURD

In dieser Lernumgebung baust du selber eine kleine Wetterstation. Dabei lernst du Schritt für Schritt wie man einen Arduino programmiert und die wichtigsten physikalischen Grundlagen zur Wetterkunde.

Für WEN ist der Kurs? 

Der Kurs ist für Anfänger. Du brauchst keine Vorkenntnisse im Umgang mit dem Arduino und kein spezielles Vorwissen in Physik dazu.

https://arduinoimphysikunterricht.wordpress.com/unterrichtsbeispiele-und-kurse/kurs-thermodynamik-eine-wetterstation/lernumgebung-wetter/

Bauteile:
1x ARDUINO UNO R3 ATmega328p
16×2 LCD Display
SD Card Shield
BMP085 oder BMP280 Breakout Board von Sparkfun
DHT11 Humidity Sensor
DS 1307 oder kompatibles Real Time Clock Module
Widerstandssortiment


Grundlagen:

Wissenssammlung Teil 1: Die Arduino Software ( IDE ) – Der Anfang
Wissenssammlung Teil 2: Wie ist ein Arduino Programm generell aufgebaut?
Wissenssammlung Teil 3: Variablen – Schubladen zur Datenspeicherung
Wissenssammlung Teil 4: Befehle – Wie sage ich es dem Arduino?
Wissenssammlung Teil 5: Operatoren – Wie rechne ich mit dem Arduino?

Aufgaben:

Aufgabe 1 : Sturmwarnung! – Digitale Ausgänge am Arduino
Aufgabe 2 : Einen Taster anschließen – Digitale Eingänge am Arduino
Aufgabe 3 : Die Helligkeit messen – Analoge Eingänge am Arduino
Aufgabe 4 : Temperaturen messen – Map()-Befehl und Skalen
Aufgabe 5 : Messwerte anzeigen – Das Display
Aufgabe 6 : Wann wurden die Daten gemessen? – Eine Uhr mit dem Arduino verbinden
Aufgabe 7 : Zusammenhang von Beleuchtung und Bodentemperatur – Diagramme erstellen
Aufgabe 8 : Zusammenhang von Luftdruck und Temperatur – Wir messen den Luftdruck
Aufgabe 9 : Zusammenhang von Luftdruck und Wettergeschehen – Das aktuelle Wetter
Aufgabe 10 : Zusammenhang von Luftdruck und Wettergeschehen – Die Wetterprognose


https://arduinoimphysikunterricht.wordpress.com/unterrichtsbeispiele-und-kurse/kurs-thermodynamik-eine-wetterstation/lernumgebung-wetter/
https://arduinoimphysikunterricht.wordpress.com/unterrichtsbeispiele-und-kurse/kurs-thermodynamik-eine-wetterstation/
https://arduinoimphysikunterricht.wordpress.com/unterrichtsbeispiele-und-kurse/kurs-thermodynamik-eine-wetterstation/lernumgebung-wetter/aufgabe-8/



********************************************************I*

42) Eine Arduino-Wetterstation

DHT11 LCD-Display HD44780 kompatibel

Schaltplan / Schaltbild



BreadBoard / Steckbrett Bild


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
#include "DHT.h"
DHT dht(10, DHT11); //wenn ihr einen DHT 11 benutzt
//DHT dht(10, DHT22); //wenn ihr einen DHT 22 benutzt
//Die 10 gibt den digitalen Ein-/Ausgang auf dem Board an, an dem der Datenbus des DHT-Sensors angeschlossen ist
 
void setup() {
  dht.begin();
  lcd.begin(16, 2);
}
 
void loop() {
  
  
  //Auslesen und Zwischenspeichern der Temperarur- und Feuchtigkeitswerte
  int t = dht.readTemperature();
  int h = dht.readHumidity();
  
  //Anzeigen der Werte
  lcd.setCursor(0,0); //Selektion 1. Zeile (man beginnt beim Zählen mit 0)
  lcd.print("T.: ");
  lcd.print(t);
  lcd.print("'C");
  lcd.setCursor(0,1); //Selektion 2. Zeile
  lcd.print("F.: ");
  lcd.print(h);
  lcd.print("%");
  
  
  delay(500);
  }
https://github.com/adafruit/DHT-sensor-library
https://wlanowski.de/tag/wetterstation/
https://wlanowski.de/eine-arduino-wetterstation-bauen/



********************************************************I*

43) Die absolute Luftfeuchte mit Berechnungsbeispiel und Online-Berechnung

In der Luft ist ein Anteil an Wasser in Dampfform enthalten.
Die Menge an Wasser, gerechnet als Masse des Wasserdampfes in kg pro m3 Luft, bezeichnet man als absolute Luftfeuchte x.
Die maximale absolute Luftfeuchte ist derjenige Gehalt an Wasserdampf pro m3 Luft, der bei Sättigung der Luft mit Wasserdampf aufgenommen werden kann.
Je wärmer die Luft, desto mehr Wasserdampf kann sie aufnehmen.
Sinkt die Temperatur der Luft, so bildet sich Nebel/Regen als Kondensat, wenn die Sättigungsfeuchte der jeweiligen Lufttemperatur erreicht wird.

Berechnung der absoluten Luft-Feuchtigkeit


Online-Berechnung

http://www.ib-rauch.de/bautens/formel/abs_luftfeucht.html



********************************************************I*

44) LAN Lufttemperatur und -feuchte Logger mit grafischer Darstellung für ESP8266
WLAN Logger für Lufttemperatur und Feuchtigkeit AM2301 DHT21 ESP8266

https://blog.thesen.eu/wlan-lufttemperatur-und-feuchte-logger-mit-grafischer-darstellung-fuer-esp8266/



********************************************************I*

45) HomeMatic – Raumklimaüberwachung und Entfeuchtung


Features:
Berechung der absoluten Feuchte
Schimmelgefahranalyse
Lüftungsempfehlung
Entfeuchter- bzw. Lüftersteuerung
Optische Anzeige des Ergebnisses der Schimmelgefahranalyse und der Lüftungsempfehlunghttps://smart-wohnen.org/homematic-raumklimaueberwachung-und-entfeuchtung/









DIN A4  ausdrucken
********************************************************I*
Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected]
ENDE