Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATmega8] - Power save mode - pobór prądu

papiozo 06 Gru 2012 16:32 3345 19
  • #1 06 Gru 2012 16:32
    papiozo
    Poziom 7  

    Witam,


    Jaki prąd pobiera Atmega8A w trybie Power-Save ??

    Dodano po 11 [minuty]:

    Znalazłem coś takiego w datasheecie od Atmega8:

    [ATmega8] - Power save mode - pobór prądu

    To znaczy że przy zasilaniu 3V (bateria pastylkowa) powinien pożerać jakieś 0,01 mA czyli biorąc pod uwagę jej pojemność (dajny 65 mAh) powinno to starczyć na ok. 270 dni pracy timera odliczającego czas. Dobrze myślę ?

  • Pomocny post
    #2 07 Gru 2012 00:57
    GSM
    Poziom 25  

    Dobrze myślisz, ale...
    Wartość odczytana z wykresu jest prawdziwa, jeśli się nie popełni jakiejś gafy w schemacie układu, jeśli faktycznie się porządnie uśpi układ, etc...
    Podobnie z szacowaniem żywotności baterii, lepiej się w tym opierać o kartę katalogową producenta baterii. Powinien być w takiej dokumentacji dobrze opisana charakterystyka rozładowania takiej baterii (kilka ładnych wykresów), która pozwoli dokładniej oszacować na ile nam starczy energii.
    Diabeł tkwi w szczegółach.

    Pozdrawiam,
    GSM

  • Pomocny post
    #3 07 Gru 2012 07:42
    94075
    Usunięty  
  • #4 07 Gru 2012 14:33
    papiozo
    Poziom 7  

    Dziękuję za odpowiedź.

    @GSM: Co do baterii to korzystając z tego wykresu:
    [ATmega8] - Power save mode - pobór prądu

    Można określić że jeśli przy prądzie 0,19mA bateria osiągnęła 2,8 V po 900h, co przy poborze 19 razy mniejszym, bateria osiągnie ten stan po 900*19h = 712 dni. Right?

    @albertb: Hmm chodzi Ci o to, że te operacje pobierają dodatkowy prąd?

    Wiem, że tak jest z tymi pinami. Ogólnie planuję AtMegę taktować z oscylatora wewnętrzenego, a piny wykorzystać do podłączenia kwarcu zegarkowego i tylko timer2 taktować z zewnętrzengo oscylatora. Co myślisz o takim rozwiązaniu ?

    Jest to projekt czysto edukacyjny, a rozważania na temat oszczędzania energii prowadzę, ponieważ chcę żeby zegarek trochę pochodził bez wymiany baterii :)

    Mam jeszcze jedno pytanie z innej beczki. Czy do kwarcu zegarkowego podłącza się kondensatory 22pF ? Słyszałem, że się w ogóle żadnych nie podłącza.

  • Pomocny post
    #5 07 Gru 2012 21:42
    94075
    Usunięty  
  • Pomocny post
    #6 07 Gru 2012 22:01
    tmf
    Moderator Mikrokontrolery Projektowanie

    I zainteresuj się nowszymi AVRami, nawet jeśli to tylko projekt edukacyjny. M8 to już denat, nie warto z niego robić zombie :) Od biedy może byc i M88, albo lepiej coś z serii XMEGA, nie tylko masz np. w serii A3 dedykowany układ podtrzymania do RTC, to masz 32 bitowe RTC, dzięki czemu potrzeba wybudzenia nigdy nie zajdzie, a sam układ pobiera 0,4-0,6 mikroA, czyli prawie 20-razy mniej niż M8.

  • Pomocny post
    #7 07 Gru 2012 22:02
    GSM
    Poziom 25  

    papiozo napisał:
    Można określić że jeśli przy prądzie 0,19mA bateria osiągnęła 2,8 V po 900h, co przy poborze 19 razy mniejszym, bateria osiągnie ten stan po 900*19h = 712 dni. Right?

    Szacujesz w dobrą stronę, więc nie powinno Cię spotkać niemiłe zaskoczenie, ale... Bateria też sama z siebie traci ładunek (od tego też są wykresy w datasheet-cie porządnych baterii). Bawiąc się tak dalej, przy poborze 190 razy mniejszym, bateria starczy nam na 20 lat - wątpię by tyle wytrzymała.

    Skoro i tak potrzebujesz oscylatora 32kHz pracującego non-stop dla zegarka to już lepiej żeby to też było źródło taktowania mikrokontrolera, jeden oscylator mniej = mniejszy pobór prądu. Chyba, że z jakiś wyjątkowych powodów potrzebujesz jednak wysokiego taktowania do czegoś, ale wątpię.

    Co kondensatora przy kwarcu skonsultuj się z kartą katalogową układu do którego będzie on podpięty. Stosuje się też trymer zamiast kondensatora stałego. Umożliwia to kalibrację takiego generatorka.

    Pozdrawiam,
    GSM

  • #9 08 Gru 2012 12:46
    papiozo
    Poziom 7  

    albertb napisał:
    No i jeszcze jak zamierzasz wyświetlać czas? To też będzie miało udział w bilansie prądowym.


    Chcę go wyświetlać na wyświetlaczu LCD 16x2. Ogólna koncepcja zakłada wyświetlanie czasu tylko po podłączeniu zasilania zewnętrznego. Zastanawiam się jednak jeszcze nad opcją aby na baterii wyświetlacz także pokazywał czas jednak bez podświetlania. Po podłączeniu zasilania zewnętrzengo będzie się załączało podświetlanie którego intensywność będzie można wybrać poprzez wypełnienie PWM.

    albertb napisał:
    Co do kondensatorów należy stosować. Czy akurat 22pF to zależy od danych katalogowych kwarcu i układu generatora. Jego dane powinny być w DS, lub gdzieś u Atmela.


    Hmm w AtMega8 do kwarcu zewnętrzego stosuje się 22pF, jednak słyszałem że w AtMega16 nie trzeba stosować kondensatorów gdy używany oscylatora zegarkowego (nie mogę znaleźć w data sheecie atmega8a takiej informacji ;/).

    GSM napisał:
    Skoro i tak potrzebujesz oscylatora 32kHz pracującego non-stop dla zegarka to już lepiej żeby to też było źródło taktowania mikrokontrolera, jeden oscylator mniej = mniejszy pobór prądu.


    Wycinek z datasheet atmega8a: "The Asynchronous
    Timer/Counter uses the same XTAL pins as the CPU main clock but requires a CPU main clock
    frequency of more than four times the Oscillator frequency. Thus, asynchronous operation is
    only available while the chip is clocked on the Internal Oscillator." Niestety do poprawnego działania potrzebny jest oscylator wewnętrzy o taktowaniu przynajmniej 4x większym od taktowania oscylatora zegarkowego.

    @dondu bardzo dziękuję za linka - kompendium wiedzy!

  • Pomocny post
    #10 08 Gru 2012 18:03
    tmf
    Moderator Mikrokontrolery Projektowanie

    Zwykły LCD alfanumeryczny, nawet bez podświetlenia ciągnie wielokrotnie więcej prądu niż MCU. Co do kondensatorów - tak jak albertb pisał, powinny być. Jakie to zależy od kwarcu i pojemności pinów TOSC ATMegi. Generalnie pojemność tych pinów + ścieżek doprowadzających + kondensatorów zewnętrznych powinna odpowiadać zalecanej pojemności obciążenia dla użytego kwarcu, deklarowanej przez producenta. Niektóre ATMegi mają możliwość włączenia przy pomocy fusebitów wewnętrznych kondensatorów. Weź też pod uwagę, że generatory do kwarcu zegarkowego to generatory ultra low power, ja bym przy nich nie bazował na niesprawdzonych wiadomościach, a jednak zasięgnął solidnej porcji wiedzy z not katalogowych, chociażby dotyczących projektowania układu tak, aby uniknąć interferencji. Często ludzie projektują niedbale, a potem okazuje się, że generator widzi wszelkie szumy i w efekcie RTC je zlicza.

  • Pomocny post
    #11 08 Gru 2012 22:04
    GSM
    Poziom 25  

    papiozo napisał:
    Wycinek z datasheet atmega8a: "The Asynchronous
    Timer/Counter uses the same XTAL pins as the CPU main clock but requires a CPU main clock
    frequency of more than four times the Oscillator frequency. Thus, asynchronous operation is
    only available while the chip is clocked on the Internal Oscillator." Niestety do poprawnego działania potrzebny jest oscylator wewnętrzy o taktowaniu przynajmniej 4x większym od taktowania oscylatora zegarkowego.


    Dobrze, że czytasz datasheet. Cofnij się do strony 28.
    Używając 32kHz jako głównego zegara nie potrzebujesz już korzystać z Timer-a w trybie asynchronicznym, używasz go wtedy po prostu normalnie.
    Tylko trzeba się wtedy zastanowić jak będzie z oszczędnościami energii przy stosowaniu innego trybu uśpienia (mniej ekonomicznego) - różnice nie są wielkie.
    Poza tym nie powinieneś się martwić, bo w Power-save wewnętrzny generator RC jest wyłączany i chodzi tylko generator 32kHz na kwarcu dla Timer-a.

    Pozdrawiam,
    GSM

  • #12 09 Gru 2012 09:36
    papiozo
    Poziom 7  

    @GSM hmm ciekawa propozycja. Rzeczywiście prawdopodobnie nie będę potrzebował szybszego taktowania do poprawnej pracy układu. Zastanowię się nad tym.
    Projekt jak wcześniej pisałem ma być czystko edukacyjny, tzn. nauczyć mnie jak największej ilości rozwiązań - ogólna optymalność końcowego rozwiązania nie jest na pierwszym miejscu. (Dlatego np. do nastawiania zegara używam ADC z potencjometrem - chociaż pewnie nie będzie to najwygodniejsze rozwiązanie, ale zapoznam się z tematyką ADC w praktyce).

    @tmf Bardzo dziękuję, zrozumiałem teorię. Problem jest że nadal nie potrafię znaleźć tych wartości. Czy dla kwarcu zegarkowgo i dla takiego o taktowaniu np. 12MHz pojemność będzie taka sama? (Jeśli tam to wtedy 22pF na pewno są ok) Jeśli nie i to zależy od rodzaju kwarcu to czy mógłbyś mi podać wskazówkę jak mam tego szukać lub podać mi wartości dla ATMega8A oraz kwarcu zegarkowego 32768 Hz?

  • Pomocny post
    #13 09 Gru 2012 09:55
    tmf
    Moderator Mikrokontrolery Projektowanie

    Dokładne wartości znajdziesz w nocie użytego kwarcu. Z pewnością dla kwarcu 12 MHz i 32 kHz będą różne. Na oko można strzelać, że dla kwarcu 12 MHz to będzie coś koło 8-10pF, dla kwarcu zegarkowego koło 20pF. Pamiętaj, że jeśli użyjesz kwarcu zegarkowego to drugi nie jest ci potrzebny, chyba, że wewnętrzny RC ma za małą częstotliwość. Kalibrację wewnętrznego RC można zrobić przy pomocy kwarcu zegarkowego.
    Jeśli jednak chodzi głównie o naukę, to gorąco zachęcam cię do porzucenia M8, która jest przestarzałym prockiem i wiele w niej ciekawych rzeczy nie ma. Zachęcam do przejścia na XMEGA, gdzie w temacie RTC masz do nauki:
    - system backupu bateryjnego,
    - RTC 16/32 bitowy,
    - kilka źródeł zegara, preskalery + PLL do mnożenia częstotliwości,
    - układ DFLL do kalibracji generatorów
    - pobór prądu dla RTC <0,6 mikroA,
    - wiele różnych ciekawych opcji i peryferii.
    Wkrótce wyjdzie rodzina XMEGA E, która będzie dostępna też w TQFP32, czyli takiej obudowie jak stara M8 i zapewne będzie od niej tańsza.

  • #14 09 Gru 2012 10:20
    papiozo
    Poziom 7  

    @tmf Na pewno w przyszłości skorzystam z procka XMEGA, jednak ten projekt ma także ograniczenia finansowe, ogólnie AtMega8 jest tania i ma wszystko co potrzebuję na ten czas więc pozostaję przy niej.

    Co do kondensatorów to w datasheecie pojawia się jedynie "Load capacitance" który dla zegarkowego wynosi 12pF, a w kwarcu np. 12MHz ten sam parametr ma wartość "10 - 50 pF", pojawia się jeszcze "Shunt capacitance" i tutaj jest "7pF max." jednak nie znalazłem tego parametru dla zegarkowego. Czy chodzi o ten Load cap. ? Jeśli tak to na każdą nóżkę trzeba dać te 12 pF?

  • #15 09 Gru 2012 11:00
    tmf
    Moderator Mikrokontrolery Projektowanie

    Shunt capacitance to jest pojemność wejścia+pojemności rozproszone i obudowy. Generalnie tych kondensatorów nie trzeba jakoś super dokładnie dobierać, tym bardziej, że część parametrów możesz co najwyżej w przybliżeniu oszacować, a i tolerancja kondensatorów to jakieś 20%. Dokładnie to trzebaby to liczyć tak, że użyty kondensator to 2*(pojemność obciążenia kwarcu - pojemności pinu, doprowadzeń). Pod każdą nóżkę kwarcu dajesz jeden taki kondensator do masy. W nocie masz zakresy bo każdy kwarc ma nieco inną pojemność obciążenia, a wszystko jeszcze zależy od jego jakości i max ESR. Ale jak pisałem wystarczy to zgrubnie oszacować i kondensatory rzędu 10-20pF dla kwarcu zegarkowego będą ok.

  • #16 09 Gru 2012 11:20
    papiozo
    Poziom 7  

    Ok, dzięki! :)

    Nie mogę więcej "pomógł" wstawić :P


    Mam jeszcze ciekawą koncepcję z usypaniem mikrokontrolera. Nie chcę zakładać z tym osobnego tematu, chociaż może tak zrobię jeśli temat okaże się nie taki trywialny.
    Mianowicie, chciałbym żeby przerwanie zewnętrzne zostało wykrywane po odłączeniu (zbocze opadające) i podłączeniu (zbocze wzrastające) kabla zasilania. Czy wystarczy zasilanie (ew. przez rezystor) podłączyć do INT1 (na przykład) i wykrywać te zbocza ?
    Nie wiem czy wystarczająco zrozumiale to opisałem.

  • #17 09 Gru 2012 11:48
    tmf
    Moderator Mikrokontrolery Projektowanie

    Wystarczy, o ile MCU jest cały czas podtrzymywany np. z baterii, a w twoim przypadku tak jest. Przy czym znowu próbujesz zrealizować coś, co np. XMEGA już ma (np. A3). BTW, jeśli chodzi o wybudzenie MCU z uśpienia to musisz wykorzystać możliwość generowania przerwań asynchronicznych z pinu IO.

  • #18 09 Gru 2012 22:10
    papiozo
    Poziom 7  

    Ok przyjąłem, że wykorzystuje archaiczne rozwiązanie :P Z drugiej strony jeśli coś trzeba zrobić samemu lepiej się to zrozumie :)

    Hmm co do przerwania asynchronicznego z pinu IO to nie rozumiem do końca o co Tobie chodzi, ale pewnie wyjdzie w praniu, albo wiem o co chodzi tylko nie wiem, że tak to się nazywa.

    Dzięki za pomoc, w razie dalszych wątpliwości poruszę jeszcze temat.

  • #19 10 Gru 2012 00:40
    dondu
    Moderator Mikrokontrolery Projektowanie

    papiozo napisał:
    Czy wystarczy zasilanie (ew. przez rezystor) podłączyć do INT1 (na przykład) i wykrywać te zbocza ?
    Nie wiem czy wystarczająco zrozumiale to opisałem.

    Jeżeli użyjesz trybu najgłębszego snu, to musisz być świadomy, że on wybudza mikrokontroler (ATmega) tylko poziomem nie zboczami. To może nie mieć dla Ciebie znaczenia, ale równie dobrze może być baaardzo istotne.

  • #20 10 Gru 2012 11:13
    papiozo
    Poziom 7  

    Będę używał Power-save mode, nie Power-down mode.

    dondu napisał:
    on wybudza mikrokontroler (ATmega) tylko poziomem nie zboczami.


    Rzeczywiście w dokumentacji jest napisane "Only level interrupt INT1 and INT0." Tzn. u mnie będzie poziom (jeśli dobrze rozumiem tą koncepcję), bo po podłączeniu zasilania na INT1 ciągle będzie napięcie zasilania. Ale czy ze strony programistycznej to się różni w wykrywaniu?

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo