Skocz do zawartości

Rzeczywisty vs teoretyczny czas pracy na baterii - czujnik Arduino mini


javjaff

Pomocna odpowiedź

Cześć wszystkim. Mam problem którego nie mogę rozkminić.
Może ktoś mi podpowie co robię źle, czego nie uwzględniłem, co poprawić.

Opis problemu:
Zrobiłem czujnik temperatury/wilgotności który wysyła do centralki dane pomiarowe co 15m.
Czujnik działa na baterii tylko ok 60 dni (1440h).

Zastosowane układy:

  • Arduino mini 3,3V 8MHz - wymontowana dioda sygnalizująca zasilanie; zasilanie przez RAW;
  • DHT 22;
  • nRF24L.

Akumulator:

  • ogniwo 2500mAh; Li-ion MH12210 (18650B) - przy max naładowaniu 4,2V

Informacje dodatkowe:

  • w oprogramowaniu korzystam z LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF) dla Arduino i radio.powerDown() dla nRF24L;
  • gdyby ktoś brał pod uwagę temperaturę pracy; to praca w warunkach pokojowych ok 21 stopni


Rzeczywisty pobór prądu podczas pracy:
0,008mA - w stanie powerDown;
max 9mA - raz na 15 min przez ok 2 sec.

Korzystając z kalkulatorów (po zaokrągleniu poboru prądu do 0,01mA) mamy
2500 / 0.01 = 250000h

A ze wzoru h = ((Ah x V) / W ) / 1,6
P = 3,3V x 0,00001A (zaokrągliłem mA w górę)
2,5Ah x 3,3V / 0,000033W / 1,6 = 156250 h

Teoretyczny czas pracy na baterii 156250h VS rzeczywisty czas 1440h to spora różnica. Co przeoczyłem?

Edytowano przez javjaff
Link do komentarza
Share on other sites

No cóż, rozjazd dwóch rzędów wielkości to spora skucha. Zacząłbym od samego akumulatora. Czasem te co tańsze mają w środku głównie powietrze więc jeśli nie zapłaciłeś za niego min. 20zł, to jest spora szansa, że 2500 to tylko napis na obudowie. Przodują w tym akumulatory z "Fire" w nazwie, ale nie tylko. Naładuj (czym ładujesz?), po 5 minutach po wypięciu z ładowarki sprawdź napięcie, jeśli nadal >4.1V to podłącz opornik żeby płynęło z 50-100mA, poczekaj aż napięcie spadnie < 3.0V i napisz co wyszło. Czy Twój aku ma PCM/BMS? No a potem pomiar rzeczywistego prądu. Czym to mierzyłeś, w jakiej gałęzi (schemat może jakiś?) i czy uwzględniłeś wszystko? Jak i skąd zasilasz DHT? Czy jemu też wyłączasz zasilanie? Te 9mA to pomiar? Czym? Bo 2s to trochę krótko jak na niektóre multimetry. Masz (albo czy możesz sklecić) jakąś sondę prądową i sprawdzić, jak wygląda rzeczywisty, impulsowy pobór w czasie odliczania tych 15 minut? Bo przecież procek musi ruszać co 8 sekund z watchodga a to kosztuje energię i to sporo. Tego multimetr może nie pokazać a oscyloskop jak najbardziej. Jeśli co te 8s wykonujesz całą rozbiegówkę C (w jakim języku pisałeś kod?), wszelkie inicjalizacje peryferiów, portów, załączasz zasilania wszystkiego a potem za chwilę to wyłączasz bo trzeba iść spać na kolejne 8 s, to i tak już zmarnowałeś mnóstwo energii na naładowanie pojemności.

Także: test akumulatora, prawdziwy schemat, kod i metody/nadzędzia pomiarowe. Cudów nie ma, albo masz za mało energii albo gdzieś ją tracisz.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)
Cytat

Zacząłbym od samego akumulatora. Czasem te co tańsze mają w środku głównie powietrze więc jeśli nie zapłaciłeś za niego min. 20zł, to jest spora szansa, że 2500 to tylko napis na obudowie.

Akumulatory Samsung albo Philips (już nie pamiętam); te z "nadmuchaną" pojemnością omijałem szerokim łukiem.

Ogniwa testowane na ładowarce everActive UC-4000:

  • ładowanie - dobija do ponad 2400mA
  • rozładowywanie prądem stałym - też wychodzi ponad 2400mA

 

Cytat

Jak i skąd zasilasz DHT? Czy jemu też wyłączasz zasilanie?


DHT i nRF24L nie są odłączane od zasilania; podłączone do pinu VCC Arduino mini.

Cytat

Czym to mierzyłeś, w jakiej gałęzi (schemat może jakiś?) (...) Te 9mA to pomiar? Czym? Bo 2s to trochę krótko jak na niektóre multimetry.

Mam zwykły multimetr za kilkadziesiąt złotych; ma opcję MAX zapamiętującą największą wartość pomiaru - z tego skorzystałem.

Amperomierz podłączony na wejściu + pomiędzy ogniwem a wejściem RAW Arduino mini.

Cytat

Bo przecież procek musi ruszać co 8 sekund z watchodga a to kosztuje energię i to sporo. Tego multimetr może nie pokazać a oscyloskop jak najbardziej. Jeśli co te 8s wykonujesz całą rozbiegówkę C (w jakim języku pisałeś kod?), wszelkie inicjalizacje peryferiów, portów, załączasz zasilania wszystkiego a potem za chwilę to wyłączasz bo trzeba iść spać na kolejne 8 s, to i tak już zmarnowałeś mnóstwo energii na naładowanie pojemności.

Może coś w tym jest, ale bez lepszego sprzętu tego nie sprawdzę. Program w C.

 

Edytowano przez javjaff
Link do komentarza
Share on other sites

Ok, to pierwszy punkt z głowy. Co nie znaczy, że np. BMS nie ciągnie 100uA i krótkim okresie i przy rozładowaniu 1C to nie ma znaczenia, ale w porównaniu do spodziewanego poboru przez urządzenie jest to kilka razy więcej.

To teraz czekamy na odpowiedzi na pozostałe pytania. Bez tego możesz liczyć tylko na wróżby z fusów.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie edytuj swoich postów w tak rozległy sposób tylko dopisuj nowe, bo teraz widzisz jak wyszło.Ale do rzeczy: sam DHT trzymany pod prądem i nicnierobiący pobiera kilkadziesiąt uA. Wniosek prosty: swój pomiar prądu możesz o kant potłuc. Opcja MAX to nie żadna magia analogowa (np. detektor szczytowy) tylko komparator wyników już po stronie cyfrowej. Jeśli Twój multimetr mierzy dwa-trzy razy na sekundę a ma jeszcze jakiś filtr wejściowy, to 2s są o wiele za krótkim czasem by cokolwiek sensownego pokazać. Sam nadajnik powinien wciągać z 10mA (jaką mocą nadajesz?) a do drugie tyle procesor. jednak głownym problemem jest pomiar w stanie uśpienia. Tutaj możesz mieć jakiś błąd (1000%?) a to już jakoś zbliża się do wartości rzeczywistej, wynikającej z pojemności ogniwa i czasu pracy. Na jakim zakresie mierzyłeś te 8uA? Może masz spalony bezpiecznik? Czy urządzenie wtedy rzeczywiście działało, wstawało i zasypiało?

  • Lubię! 1
Link do komentarza
Share on other sites

Dzięki za informacje i wskazówki.

Idąc tym tropem, że nie ma co kierować się pomiarami z mojego multimetra pogrzebałem w sieci i znalazłem filmik jak poniżej dotyczący poboru prądu przez nRF24l01 do ok 13 mA w trakcie nadawania (ja nadaję z pełną mocą tak żeby mieć zwiększyć zasięg czujników):

Cytat

Na jakim zakresie mierzyłeś te 8uA? Może masz spalony bezpiecznik? Czy urządzenie wtedy rzeczywiście działało, wstawało i zasypiało?

Urządzenie działało podczas pomiaru; w  trakcie wybudzenia pobierało więcej prądu. Pomiar w stanie uśpienia robiłem na zakresie uA (najmniejszym możliwym); mierząc prąd dla wybudzonego układu robiłem to w mA bo zakres uA jest tutaj za mały.

W wolnej chwili spróbuję 3 modyfikacji:

  • odłączać DHT22 jeżeli nie ma robionego pomiaru (ta jak napisałeś pobiera energię nawet jeśli jest nie używany);
  • odlutuję kondensator od nRF24 który został dodany żeby w trakcie transmisji mieć zapas energii (jak wspomniałeś "i tak już zmarnowałeś mnóstwo energii na naładowanie pojemności");
  • przetestuję zasięg na ustawionej mniejszej mocy nadawania
Link do komentarza
Share on other sites

Udało mi się zbić zużycie z ponad 3mA na godzinę do 0,25mA na godzinę - testy nie są może idealne, ale i tak widać różnicę.

Testowałem wersję 1 i wersję 2 po zmianach w ten sposób, że odpalałem jednostkę na w pełni naładowanym ogniwie; po 24 godzinach ponownie ładowałem ogniwo i sprawdziłem ile mAh ładowarka dobiła do pełnego naładowania baterii.
(Po dwa testy na wersję. Przy dłuższym czasie testu prawdopodobnie wynik byłby obarczony mniejszym błędem.)

Zejście z ponad 3mAh do 0,25mAh jest dla mnie na chwilę obecną satysfakcjonujące 🙂

Wprowadzone zmiany:

  • zasilanie DHT22 bezpośrednio z pin-u analogowego Arduino (zamiast vcc) i odłączanie zasilania na czas kiedy DHT nie jest używane;
  • zmniejszenie radio.setPALevel z RF24_PA_MAX do RF24_PA_HIGH;
  • zamiast pomiaru i wysyłania temperatury i wilgotności co 15 min (dwa posty jeden po drugim); pomiaru dokonuję co 5 min, ale wysyłam temperaturę lub wilgotność tylko jeżeli uległa zmianie o określoną wartość; wymuszam wysyłkę danych przynajmniej raz na 3 godziny.

Zobaczymy ile teraz pociągnie na jednym ładowaniu.

  • Lubię! 1
Link do komentarza
Share on other sites

Na Twoim miejscu przyjrzałbym się miernikowi i zweryfikował kilka zakresów pomiarowych kilku wielkości na lepszym sprzęcie. Praca z multimetrem któremu nie wierzysz jest jak wyprzedzanie kolumny TIRów rzęchem z "wypadającym" jednym cylindrem. Zwykle kończy się na adrenalince i strachu, ale czasem na cmentarzu. Dobre narzędzia oszczędziłyby Ci mnóstwo czasu i ślepego poszukiwana - warto w nie inwestować.

I jeszcze jedno: co to znaczy "mA na godzinę"? Albo mówisz o prądzie średnim (i wtedy to są mA) albo o ładunku wysysanym z baterii w jakimś czasie (i wtedy mAh/h) - co z resztą wychodzi na to samo i wracamy do prądu średniego w mA.

  • Lubię! 2
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.