Vraag:
arduino wordt gereset of loopt vast nadat DHT22 van stroom is voorzien
rubix_addict
2015-02-01 02:05:23 UTC
view on stackexchange narkive permalink

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:

schematic

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

Dit komt waarschijnlijk door een spanningsval wanneer u de DHT van stroom voorziet. Heb je geprobeerd een ontkoppelingskap toe te voegen tussen pin 4 en GND? Anders kan een MOSFET die wordt geactiveerd door pin 4 en de voeding naar de DHT leveren, een goede oplossing zijn.
Houd er rekening mee dat sub 10uA-verbruik tijdens inactiviteit erg ambitieus is en ik vraag me af hoe je met zo'n circuit onder deze drempel kunt blijven.
De 220 weerstand is een oplossing, maar je wilt er waarschijnlijk een condensator achter toevoegen om de spanning op de DHT af te vlakken. De datasheet suggereert al het toevoegen van een condensator van 100 nF over het vermogen van de sensor.
pinMode (4, UITGANG)?
Ik heb de dop nooit hoeven gebruiken, zelfs niet met 20 meter kabellengten. (Misschien doet de kabel dat voor mij.) Met zo'n lange run krijg ik een duidelijke spanningsval, dus het kost nauwelijks stroom, maar levert toch nauwkeurige waarden op. Nooit zou ik een weerstand over een van de pinnen plaatsen, zelfs niet als mijn kabel maar 10 cm lang is. Maar heb je het geprobeerd?
Drie antwoorden:
MAC
2015-02-01 14:41:57 UTC
view on stackexchange narkive permalink

De sensor is een grote capacitieve belasting. U moet de ontkoppeling van de CPU-voeding verbeteren.

Een 10 uF tussen 5V en GND zal helpen voor de stroompiek en de weerstand in serie met de sensor zal geen probleem zijn (50 uA op 250 Ohm maakt slechts 12,5 mV spanningsverlies zodra de sensor is gestart).

Marla
2015-02-01 21:23:06 UTC
view on stackexchange narkive permalink

De eerdere antwoorden met betrekking tot het toevoegen van ontkoppelingscondensatoren zijn goed.
U hoeft zich geen zorgen te maken over de spanningsval over uw 220 ohm-weerstand. Het antwoord van MAC stelt dat slechts 12,5 mv afname bij 50uA (wanneer niet wordt gemeten).
Tijdens de meting zal 1,5 mA resulteren in een afname van 0,33 V over de 220 ohm weerstand. Dit moet worden opgemerkt, maar is geen probleem. Het gegevensblad van de DHT22 laat zien dat het elke voedingsspanning tussen 3,3 V en 6 V accepteert.
Het lijkt erop dat je een goed ontwerp hebt.

William L
2015-12-29 14:07:10 UTC
view on stackexchange narkive permalink

Ontkoppelingscondensatoren helpen, zoals vermeld in de andere antwoorden.

Om een ​​goede aflezing te krijgen, kan na het opstarten van uw digitale pin 4 een vertraging van misschien 100-500 ms nodig zijn om de DHT22 om te stabiliseren. Voor betere resultaten kunt u ook meerdere metingen uitvoeren (aanroepvertraging (dht.getMinimumSamplingPeriod ()) tussen de metingen) en deze gemiddeld maken.

Het lijkt erop dat u een Arduino Uno gebruikt. Voor verdere energiebesparing kunt u overwegen om een ​​Pro Mini te gebruiken en enkele hardwaremodificaties uit te voeren. Voor energiebesparende technieken voor software is er geen betere bron dan Nick Gammon's Energiebesparende technieken voor microprocessors.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...