Der AM2302 oder auch bekannt als DHT22 ist ein integrierter digitaler Temperatur und Feuchtigkeitssensor, der über eine One-Wire Verbindung angebunden wird. Um den Sensor mal auszuprobieren, habe ich mal ein kleines Demoprojekt aufgesetzt, bei dem der Sensor ausgelesen wird und die Ergebnisse auf einem DOGS102-LCD angezeigt werden.

LCD Anzeige Temperatur / Rel. Feuchtigkeit

Spezifikation des Sensors:
  • Power Supply 3.3-6V
  • Output Digital
  • Internal Humidity Sensor  Polymer capacitor
  • Internal Temperatur Sensor DS18B20
  • Measuring Range 0 – 100% RH -40 – 125° C
  • Accuracy 2 – 5% ±0.5° C
  • Sampling Rate 0.5 Hz

 

Vollständiges Datenblatt des Sensors

Dieser Sensor ist relativ genau und sehr günstig z.B. über Ebay oder hier zu beziehen. Grundsätzlich ist der AM2302 einfach einzusetzen, da er außer der Betriebsspannung nur noch einen PULL-Up-Widerstand an der Datenleitung benötigt. Die Anbindung des AM2302/ DHT22 an den LPC1769 erfolgt über den als GPIO geschalteten Portpin P2.12.

Beschaltung des LPCXpresso mit LCD DOG102 und AM2302

Für das Einlesen des ONE-Wire Protokolls ist ein genaues Bittiming wichtig. Bei der Demoapplikation wird der Pegel des Sensorsignal gepollt und das Timing der Flankenwechsel ausgemessen. Um möglichst unabhängig vom aktuellen Core-Clock zu sein, wird der SystemTick-Timer als Zeitbasis benutzt und die entsprechenden Timing-Parameter mit dem Core-Clock verrechnet. Die aktuell eingestellte Core-Frequenz des LPC1769 ist 100MHz.

Die Implementation der Bitabtastung ist durch die Verwendung des SystemTick-Timers relativ stabil gegenüber Laufzeitänderungen durch Interrupts. Bei hoher Interruptfrequenz oder langen Latenzen in den Interrupt Service Routinen wird es aber zu Problemen kommen. Dafür ist die aktuelle Implementation nicht geeignet.

Für die Ansteuerung des LCD DOGS102 wurde der Sourcecode der AVR-Version von www.lcd-module.de auf den LPC1769 portiert. Hardwaremäßig erfolgt die Ansteuerung über eine der SPI-Schnittstellen des LPC1769.

Download Projekt-Sourcen als .ZIP (Stand 24.02.2013)

Testboard mit Sensor AM2302 / DHT22