Ik ontwikkel een energiezuinig project gebaseerd op Atmega328p dat onder andere een DHT22 gebruikt om de luchtvochtigheid te meten. De DHT22-specificatie zegt dat het 50uA verbruikt tijdens inactiviteit. Dit is te hoog voor mij (ik streef naar een verbruik van minder dan 10uA voor het hele apparaat in de slaapmodus), dus ik heb bedacht dat ik het gewoon zal voeden via een van de Atmega328p-pinnen. Dit geeft me de mogelijkheid om het op softwareniveau uit of in te schakelen. De DHT22 verbruikt slechts 1,5 mA tijdens de meting, dus het zou in orde moeten zijn (een enkele Atmega's pin kan veilig tot 20 mA leveren). Ik heb een volgend testcircuit opgezet:
De rode draad voedt DHT22, de blauwe is voor gegevensoverdracht, de zwarte is GND en de 4.7k is een pull-up weerstand.
Mijn probleem is dat nadat ik de DHT22 heb aangezet met alleen:
digitalWrite (4, HIGH);
de Atmega reset of loopt vast of ... zet de DHT22 met succes aan en blijft werken, maar dat gebeurt ongeveer 10% van de tijd. Mijn vermoeden is dat er een stroompiek is op het moment dat de DHT22 van stroom wordt voorzien. Helaas heb ik geen oscilloscoop om dit te bevestigen.
Ik heb een 220 ohm weerstand toegevoegd tussen VCC pin van DHT22 en pin 4 op de Arduino en het probleem is opgelost. Mijn vraag is: zal het zo betrouwbaar werken? Zijn vochtigheidsmetingen betrouwbaar als de spanning niet gestabiliseerd is (maar binnen het bereik van 3,3-5,5 V blijft, zoals vereist in het gegevensblad)? Ik zou natuurlijk een transistor kunnen gebruiken om het aan / uit te zetten, maar ik zou het zo eenvoudig mogelijk willen houden.
Waarom wordt in de datasheet van DHT22 deze stroompiek niet genoemd? Hier is het ter referentie: http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf