Próbuję wykonywać kontrolne pomiary napięcia zasilania w układzie zasilanym bateryjnie (ER14505). Zasilanie procesora prowadzone jest raczej prawidłowo: każda nóżka, która tego wymaga, ma doprowadzone zasilanie wraz z kondensatorem ceramicznym w bezpośrednim sąsiedztwie, dodatkowe układy (transceiver nRF24L01+ i czujnik AM2302) mają swoje dodatkowe elektrolity. Cały układ zasilany jest z baterii przez diodę schottky.
Większość czasu układ jest uśpiony i wtedy pobiera ok. 17 uA; co minutę procesor jest wybudzany, wykonuje pomiary, wysyła dane radiem i zasypia - wtedy bierze pewnie ze 2 mA (za krótko, żeby dokładnie zmierzyć multimetrem).
Co do kodu - przetwornik konfiguruję tak:
A tak obrabiam dane:
Bateria ma napięcie 3,64 V, a za diodą w czasie uśpienia jest ponad 3,4 V. Niestety układ przesyła wartość w okolicach 184, czyli zgodnie z powyższym wyjaśnieniem, daje to napięcie 2,84V. Nie mam pojęcia, dlaczego takie niskie. Testowałem program również z ADC w trybie 8 bit i przesyłałem surową wartość rejestru - to samo.
Myślałem, że może jednak po wybudzeniu napięcie drastycznie siada i dołożyłem elektrolit (supercapa) 100 mF, ale to też nic nie zmieniło.
Gdzie może tkwić problem?
Większość czasu układ jest uśpiony i wtedy pobiera ok. 17 uA; co minutę procesor jest wybudzany, wykonuje pomiary, wysyła dane radiem i zasypia - wtedy bierze pewnie ze 2 mA (za krótko, żeby dokładnie zmierzyć multimetrem).
Co do kodu - przetwornik konfiguruję tak:
Kod: C / C++
A tak obrabiam dane:
Kod: C / C++
Bateria ma napięcie 3,64 V, a za diodą w czasie uśpienia jest ponad 3,4 V. Niestety układ przesyła wartość w okolicach 184, czyli zgodnie z powyższym wyjaśnieniem, daje to napięcie 2,84V. Nie mam pojęcia, dlaczego takie niskie. Testowałem program również z ADC w trybie 8 bit i przesyłałem surową wartość rejestru - to samo.
Myślałem, że może jednak po wybudzeniu napięcie drastycznie siada i dołożyłem elektrolit (supercapa) 100 mF, ale to też nic nie zmieniło.
Gdzie może tkwić problem?
