poniedziałek, 4 kwietnia 2011

SmartPIP - Decyzje strategiczne


Autor: Dondu

Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel

Ponieważ SmartPIP, będzie wyposażony w licznik czasu oraz generator dźwięków, to należy podjąć strategiczne decyzje ściśle związane z problemem oszczędzania energii. Dlatego od tego należy zacząć.

Jedno z założeń mówi o tym, że mamy minimalizować ilość elementów elektronicznych, co oznacza, że nie zastosujemy żadnego zewnętrznego układu zegara czasu rzeczywistego.



Timer2 z kwarcem 32,768kHz

Stosując mikrokontroler ATmega8 mamy do dyspozycji specjalnie zaprojektowane funkcjonalności, które ułatwią nam zrealizowanie zadania dot. licznika czasu przy jednoczesnym minimalizowaniu poboru energii:
  • Timer2 pracujący w trybie asynchronicznym z kwarcem 32,768kHz,
  • specjalny tryb oszczędzania energii: Power Save.

Jak to działa?

Timer2 działając w trybie asynchronicznym współpracować będzie z kwarcem 32,768kHz, podczas gdy w tym samym czasie mikrokontroler będzie mógł być uśpiony do trybu Power Save, w którym wyłączone są prawie wszystkie jego wewnętrzne układy.

Co to jest tryb asynchroniczny? Najprościej można to określić tak:

Timer2 robi swoje, a reszta mikrokontrolera swoje. Aby razem mogły się dogadać, trzeba użyć specjalnych metod, które pozwolą się im zsynchronizować.

Synchronizacja nas na szczęście za bardzo nie będzie obchodzić, bo zrobi to za nas mikrokontroler.


Wybudzanie z Power Save.

Mikrokontroler uśpiony do trybu Power Save możemy wybudzić na kilka sposobów, z których nas interesować będzie przede wszystkim jeden (przepełnienie Timer2):







Częstotliwość pracy mikrokontrolera.

Skoro Timer2 wymagać będzie zewnętrznego kwarcu, a ten podłączany jest to pinów kwarcu XTAL1/TOSC1 oraz XTAL2/TOSC2, to nie mamy innej możliwości, jak taktowanie mikrokontrolera z wewnętrznego generatora RC.

Z tym problemem jest także związany fakt, iż mikrokontroler musi pracować z prędkością co najmniej 4 razy większą niż kwarc 32,768kHz:




Nie mamy więc wyjścia i musimy skorzystać z wewnętrznego generatora RC wybierając jedną z dostępnych częstotliwości - 1, 2, 4 lub 8MHz:




Ponieważ z powodu baterii zależy nam na minimalizowaniu prądu pracy mikrokontrolera, powinniśmy wybrać zegar 1MHz. Jednakże należy się zastanowić, czy 1MHz wystarczy nam do poprawnego generowania dźwięku w trybie PWM. Zakładając, że próbki dźwięku będą 8-bitowe możemy wyliczyć, ile próbek odtworzymy w ciągu jednej sekundy:




Oznacza to, że spokojnie uzyskamy dźwięk wystarczający do denerwowania ofiary :-)





Spodziewane zużycie energii

Popatrzmy co nam da taki podział zegarów pod kątem zużycia energii. Interesują nas oczywiście wykresy w temperaturze pokojowej 25°C dla wybranego przez nas źródła zasilania 2,7-3V

Gdy podłączymy zasilanie, ale uśpimy mikrokontroler do trybu Power Save bez włączonego Timer2, możemy się spodziewać poboru prądu około 5µA:





Jeżeli dodatkowo włączymy Timer2, (mikrokontroler nadal uśpiony do trybu Power Save), to musimy do powyższego dodać prąd Timera2 około 5µA:




Razem mamy więc w trybie włączonego lecz uśpionego SmartPIP'a wraz z włączonym Timer2:

I(Power Save + Timer2)   5µA + 5µA  10µA



Natomiast w przypadku, gdy mikrokontroler będzie pracował pełną parą na wewnętrznym generatorze RC 1MHz, pobierany prąd będzie wynosił około 1,4mA:

Rys. ATmega8A

czyli:
Ipracy  1,4mA


Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel

6 komentarzy:

  1. "(...)Timera2 około około 5µA(...)"
    "około około"?

    OdpowiedzUsuń
  2. Można też taktować cały mikrokontroler kwarcem 32.768kHz i będzie większa oszczędność energii

    OdpowiedzUsuń
    Odpowiedzi
    1. ATmega8 nie ma możliwości pracy w trybie jednoczesnego taktowania mikrokontrolera oraz Timer2 (w trybie asynchronicznym) ze wspólnego kwarcu 32,768kHz. Opisałem to w tym artykule w punkcie: Częstotliwość pracy mikrokontrolera.

      A ponieważ, stosunek czasu pracy do czasu uśpienia będzie minimalny, stąd z punktu widzenia oszczędności energii istotniejsze jest wykorzystanie Timer2 w trybie asynchronicznym z kwarcu 32,768kHz.

      Usuń
  3. Ale jeżeli mikrokontroler bedzie taktowany z 32.768kHz to tryb asynchroniczny będzie zbędny, bo Timer2 będzie korzystał z głównego źródła taktowania czyli kwarcu 32.768kHz.

    OdpowiedzUsuń
    Odpowiedzi
    1. Zastanów się, do którego trybu snu tak zaproponowane przez Ciebie rozwiązanie byłoby zdolne uśpić mikrokontroler zachowując możliwość odmierzania czasu?

      Następnie przeczytaj jeszcze raz punkt "Timer2 z kwarcem 32,768kHz" i przyglądnij się zawartemu tam fragmentowi datasheet.

      Później porównaj zużycie energii w trybie IDLE lub NOISE REDUCTION w porównaniu do trybu POWER SAVE.

      Ostateczne wnioski wyciągnij proszę z mojego poprzedniego postu cyt. "A ponieważ, stosunek czasu pracy do czasu uśpienia będzie minimalny ...".

      Usuń