Ziel
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.
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
Funktionsbeschreibung
Dieser Sensor ist relativ genau und sehr günstig z.B. über Ebay oder hier
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)