Sekunden genauer Timer im Energiespar Modus

Hallo,

ich habe folgendes Problem wie folgt:

Hardware:
Arduino Pro mini 8MHz / 3.3V (Spannungsregler+LED entfernt)
HTU21D Temp-Feuchte-Sensor
2x AAA Batterien
1x Sender 433 MHz HFS-300
1x DC Converter Boost Step up Down 0.9V/3.3V

Software:
Ein Temperatur/Feuchte/Sensor für eine Wetterstation sendet genau alle 174,5s ein
Datentelegram. Im Standby Betrieb werden 8,7mA benötigt, dass ist für den Batteriebetrieb
langfristig gesehen ein zu hoher Wert. Optimal wären ca. < 1 mA im Standby Betrieb.
Der Watchdog-Timer ist leider zu ungenau.

Sketch:

#include <TempHygroTX868.h>
#include <SparkFunHTU21D.h>

HTU21D htu;
TempHygroTX868 tx;
// pin of build-in signal LED
#define LED 13

void setup()
{
 // HFS-300 is at data pin 5
 htu.begin();
 tx.setup(5, TempHygroTX868::PROT_V12);
}

void loop()
{
 byte address = 4;

 digitalWrite(LED, HIGH);
 float humidity = htu.readHumidity();
 float temperature = htu.readTemperature();

#ifdef DEBUG
 Serial.print(humidity);
 Serial.print("t");
 Serial.println(temperature);
#endif
 
 delay(100);
 
 if (humidity < 900 && temperature < 900) {
   // valid reading
   tx.send(temperature, humidity);
 }
 digitalWrite(LED, LOW);

 tx.setAddress(address);
 tx.send(temperature, humidity);
 
 delay(2.9 * 60 * 1000UL);
}

Vielleicht kann mir wer weiter helfen?
Danke!
LG
Rene

Der nächste Schritt wäre den ATMega mit internem Takt laufen zu lassen.
Da das viel zu ungenau ist, könntest du den Resonator gegen einen Uhrenquarz tauschen, wobei dann Timer2 als RealTimeCounter dienlich ist.

Hallo,

danke für die schnelle Information.
Leider habe ich zu wenig Erfahrung für einen solchen Aufbau.

Danke!
LG
Rene

Leider habe ich zu wenig Erfahrung für einen solchen Aufbau.

Und das kann man kompensieren, in dem man in mehreren Foren fragt?

Ich glaube nicht.

Habe versucht in weiteren Foren eine Antwort zu bekommen, so ein schlechter Ansatz?

elvelv:
danke für die schnelle Information.
Leider habe ich zu wenig Erfahrung für einen solchen Aufbau.

Welcher Aufbau ?
Den Resonator gegen einen Quarz tauschen ?

@TO: Hast Du Dich mal über "Crossposting" schlau gemacht?

Gruß Tommy

Sorry nein!

Dann solltest Du das tun. Nutze die Suchmaschine deiner Wahl.

Gruß Tommy

Sorry dann schließe ich den POST wenn es OK ist?

elvelv:
Sorry dann schließe ich den POST wenn es OK ist?

Den kannst du nicht schließen, erst alle Fragen beantworten.

HotSystems:
Den kannst du nicht schließen, erst alle Fragen beantworten.

OK

Hallo!

Jetzt habe ich eine brauchbare Lösung gefunden:

Hardware:
Arduino Pro mini 8MHz / 3.3V (Spannungsregler+LED entfernt)

Bootloader auf interen Oszillator flashen.
SMD PIN XTAL1 und XTAL2 vom MEGA 328P wo der Quarz (8Mhz) angelötet ist auflöten
Danach einen Uhrenquarz (32,768 kHz) anlöten

Software:
Timer 2 im Asynchron-Mode aktivieren
Timer 2 21x 8sek Power Save =168sek
Timer 2 6x 1sek Power Save =6sek
Im Sketch delay1ms(200) + delay1ms(100) +delay1ms(100) +delay1ms(100)

168sek+6sek+0,5sek= 174,5sek (sendet Datentelegramm,TX)
SLEEP_MODE_PWR_SAVE aktivieren

Stromverbrauch Messung+Berechnung:
Timer 2 8sek Power Save 0,1826 mAh
Timer 2 1sek Power Save 0,0030 mAh
8 Mhz Mode 61,8sek 0,0680 mAh bei if Abfrage (4mA/3600)x61,8=0,068mAh
Funk-Telegramm 1s 0,1316 mAh bei 23mA (23mA/3600)x20,6 pro h =0,1316mAh

0,3852 mAh

TX_32kHz_LowPower.ino (4.36 KB)

Hi

Deine Messung MUSS fehlerhaft sein - Ah ist kein Strom - das H ist Da definitiv falsch!
Du kannst eventuell auf die mAh rückschließen, wenn Du die Einzelverbräuche, je nach Lebenslage und Dauer der Sketchabschnitte, zusammen rechnest - davon sehe ich aber Nichts.

Bedeutend wichtiger wäre, mit welchem High-End-Messgerät Du die 4.te Nachkommastelle messen konntest (wenn Du Das irgendwie messen konntest) - bei mir ist Da schon lange eine Hausnummer.

MfG

Hallo,

du hast recht die die Wortfolge sollte heißen:

milli Ampere pro Stunde, Messung+Berechnung:

Ich habe absichtlich das Wort Berechnung in der Wortfolge eingebaut, da es sich nicht nur um gemessene mA Werte handelt sonderen auch um theo. rechnete Werte in mAh.
(sofern kein Fehler in der Rechenlogik ist)

Ich habe folgendes gemacht vielleicht ist es der falsche Ansatz:

Messgerätt UNIT-T UT70A ist kein High-End-Messgerät, jedoch für meine Hobby Zwecke ausreichend.

Software:
Timer 2 im Asynchron-Mode aktivieren
Timer 2 21x 8sek Power Save =168sek
Timer 2 6x 1sek Power Save =6sek
Im Sketch delay1ms(200) + delay1ms(100) +delay1ms(100) +delay1ms(100)

Ein Datentelegramm:
Ein Datentelegramm wird alle 174,5sek gesendet= 3600sek (1h) / 174,5sek= 20,63 Telegramme (1h)

Das UNIT-T UT70A hat z.B im "Bereich mirkro A" 18,26 mirkro A angezeigt ~ 0,19mA
Wie komme ich auf den Wert: Timer 2 Takt-8sek Power Save 0,1826mAh
21x Timer 2 if-Abfrage = 168sek im Takt 8sek
168sek / 20,63x (1h) = 3465sek (1h) (vorher habe ich mit nur 20,6x gerechnet= 3460,8~3461sek

0,19mA / 3600s x 3465sek= 0,1732mAh (vorher 0,1826mAh)
Takt-8sek Power Save pro h 0,1826mA Batterie Kapazität

Das ganze analog für:
6x Timmer 2 if-Abfrage = 6sek im Takt 1sek
Timer 2 Takt 1sek UNIT-T UT70A zeigt 18,26 mirkro A und gleich 4mA im 1sek Takt.
3sek 18,26 mirkro A~ 0,19mA + 3sek ~ 4mA =6sek
3sek x 20,63x (1h) = 61,89sek
0,19mA / 3600s x 61,89sek= 0,0032mAh
3sek x 20,63x (1h) = 61,89sek
4,0mA / 3600s x 61,89sek= 0,0687mAh

Funksender 433 MHz 1sek mit Messgerät UNIT-T UT70A 23mA
1sek x 20,63x (1h) = 20,63sek (1h)
23,0mA / 3600s x 20,63sek= 0,1318mAh (1h)

Danach habe ich alles addiert:
Funksender = 0,1318mAh
CPU 8Mhz I-Oszi 3sek Takt 1sek 4,0mA = 0,0687mAh
Power Save 3sek Timer2 Takt 1sek = 0,0032mAh
Takt-8sek Power Save = 0,1732mAh (vorher 0,1826mAh)

0,3769mAh

Das ganz war nur als Anhaltspunkt gedacht wie lang komme ich mit zwei AAA Batterien aus.
Bin von ca. 1400mAh / AAA ausgegangen. (2x 2800mAh) ca. 10 Monate.

LG