Chciałbym w tym temacie poruszyć dwa problemy z jakimi się zmagam.
Pierwszy:
To obliczenie poboru prądu układu pracującego na baterii-zastanawiam sie czy dobrze to robię;
Drugi:
Optymalizacja kodu tak aby był pobór prądu był krótszy.
Układ składa się z M8 (taką akurat mam pod ręka docelowo będzie zastąpione nowszym procesorem z picopower) wzmacniacza operacyjnego, czujnika i RFM22b.
Założenia są taki aby wybudzić procesor dokonać pomiaru ADC i wysłać dane co 1s.
W celu zmierzenia poboru prądu wstawiłem szeregowo rezystor 1Ω - 1% - mierząc na nim spadek napięcia.
oglądając oscylogram mogę wyróżnić następujące funkcje:
czas trwania / prąd
wybudzenia 65µs / 4,08mA
wlaczenie układów 20µs / 10,7mA
ADC 85µs / 8mA
inne i sleep 35µs / 11,1mA
aby obliczyć ładunek Q, muszę pomnożyć czas * prąd i zsumować
wynik jest = 1,5477µAs
do tego dochodzi samo wysłanie inf. - postępując wyżej wymienionego schematu
otrzymuje Q=30,59µAs
no i czas między wybudzeniami procesora z trybu power_save będzie równy 1s-(czas_pomiaru)-(czas_wysłania) =0,995425, M8 pobiera około 15µA, czyli=14,93µAs
Sumując wszystko razem =1,5477µAs+30,59µAs+14,93µAs=47,06µAs
Zakładam że zasilę układ baterią 3,6V - 2400mAh, po przekształceniach wychodzi mi że bateria starczy mi na ≈5,8lat.
i w jaki sposób odnieść wynik 47,06µAs do linku (zaczerpnięte ze strony http://mikrokontrolery.blogspot.com) poniżej gdzie są chyba podane średnie prądy a ja mam ładunek muszę jakoś pozbyć się czasu
Link
Druga część problemu to działanie samego programu, procesor taktuje wew. rezonatorem 2MHz, (przy 1MHz wszystko działa jeszcze dłużej)
po wybudzeniu uP potrzebuje aż 65µs żeby wykonać operacja przejścia do procedury włączenia układów peryferyjnych oraz obslugi przetwornika ADC, podczas pomiaru uP jest usypiany (dokonuje tylko jednego pomiaru - I tu ważne pytanie jak dla mnie pomiar jest za długi, prze taktowałem przetwornik do 250kSPS
czy może warto się przesiąść na inny uP żeby było szybciej - może koledzy by coś zaproponowali?)
czy jest możliwość skrócenia np. "wybudzania" a może warto przejść na napisanie tego programu w ASM?
Za wszelkie uwagi będę wdzieczny.
Pierwszy:
To obliczenie poboru prądu układu pracującego na baterii-zastanawiam sie czy dobrze to robię;
Drugi:
Optymalizacja kodu tak aby był pobór prądu był krótszy.
Układ składa się z M8 (taką akurat mam pod ręka docelowo będzie zastąpione nowszym procesorem z picopower) wzmacniacza operacyjnego, czujnika i RFM22b.
Założenia są taki aby wybudzić procesor dokonać pomiaru ADC i wysłać dane co 1s.
W celu zmierzenia poboru prądu wstawiłem szeregowo rezystor 1Ω - 1% - mierząc na nim spadek napięcia.
oglądając oscylogram mogę wyróżnić następujące funkcje:
czas trwania / prąd
wybudzenia 65µs / 4,08mA
wlaczenie układów 20µs / 10,7mA
ADC 85µs / 8mA
inne i sleep 35µs / 11,1mA
aby obliczyć ładunek Q, muszę pomnożyć czas * prąd i zsumować
wynik jest = 1,5477µAs
do tego dochodzi samo wysłanie inf. - postępując wyżej wymienionego schematu
otrzymuje Q=30,59µAs
no i czas między wybudzeniami procesora z trybu power_save będzie równy 1s-(czas_pomiaru)-(czas_wysłania) =0,995425, M8 pobiera około 15µA, czyli=14,93µAs
Sumując wszystko razem =1,5477µAs+30,59µAs+14,93µAs=47,06µAs
Zakładam że zasilę układ baterią 3,6V - 2400mAh, po przekształceniach wychodzi mi że bateria starczy mi na ≈5,8lat.
i w jaki sposób odnieść wynik 47,06µAs do linku (zaczerpnięte ze strony http://mikrokontrolery.blogspot.com) poniżej gdzie są chyba podane średnie prądy a ja mam ładunek muszę jakoś pozbyć się czasu
Link
Druga część problemu to działanie samego programu, procesor taktuje wew. rezonatorem 2MHz, (przy 1MHz wszystko działa jeszcze dłużej)
po wybudzeniu uP potrzebuje aż 65µs żeby wykonać operacja przejścia do procedury włączenia układów peryferyjnych oraz obslugi przetwornika ADC, podczas pomiaru uP jest usypiany (dokonuje tylko jednego pomiaru - I tu ważne pytanie jak dla mnie pomiar jest za długi, prze taktowałem przetwornik do 250kSPS
czy może warto się przesiąść na inny uP żeby było szybciej - może koledzy by coś zaproponowali?)
czy jest możliwość skrócenia np. "wybudzania" a może warto przejść na napisanie tego programu w ASM?
Za wszelkie uwagi będę wdzieczny.
