Minimalizacja pobieranego prądu.

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Minimalizacja pobieranego prądu.

Post autor: Kulpina » 14 wrz 2010, 15:19

Jak zmniejszyć prąd pobierany przez mikroprocesor?
Wg noty z ATmegi48/88/168:

Kod: Zaznacz cały

• Low Power Consumption
– Active Mode: 
1 MHz, 1.8V: 240µA
32 kHz, 1.8V: 15µA (including Oscillator)
– Power-down Mode: 
0.1µA at 1.8V
U mnie to low power consumption jest na poziomie 370uA, co niezbyt mnie zadowala...
Jest to sam prąd pobierany przez mikroprocesor, taktowany wewnętrznym oscylatorem 16khz.

Próbowałem włączyć Power Down, aczkolwiek nie działa - jak to włączyć (w C)?
Czy są jeszcze jakieś sposoby które przegapiłem?

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 14 wrz 2010, 17:28

Przeanalizuj ów przytoczoną przez ciebie notę to się dowiesz co? Ogólnie sprawdz co można powyłanczać całkiem, np. przetwornik A/C, komparator(y) itp. Ale zwróć też uwagę na to dla jakich parametrów te dane zostały podane, np. zegar CPU. No i nie bez znaczenia jest otoczenie CPU, i to jak mierzysz ten prąd u siebie, bo np. stabilizator do pracy tez pobiera jakiś prąd, nie jest perpetum mobile.

Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 14 wrz 2010, 20:47

Kod: Zaznacz cały

wdt_disable(); //jeśli korzystasz z watchdoga, wyłącz poza tym wszystkie peryferia, liczniki, adc itp
sei(); //jeśli przypadkiem gdzieś blokowałeś przerwania
MCUCR=_BV(SM1)|_BV(SE); //ustaw tryb power down i włącz aktywację przerwań stanem niskim
asm volatile("sleep"::); //no i po tym już smacznie śpi:)

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 15 wrz 2010, 14:37

Jest jeszcze inna koncepcja. Czy jeśli zamiast przerwań wykorzystam watchdoga, to pobór prądu znacząco spadnie?

Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 15 wrz 2010, 18:08

Powinno pomóc. Licz się jednak z tym, że watchdog pożera sporo prądu, nawet 15uA dla 3V. Lepiej jak dołożysz zewnętrzny kwarc niskiej częstotliwości i wykorzystasz tryb power save. Zajrzyj na 317 stronę karty katalogowej i dalej, a będzie wszystko jasne.

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 17 wrz 2010, 22:16

Wyłączyłem Adc, wszystkie timery i inne dodatki (niewiele to dało) przełączam zewnętrzny czujnik w tryb shutdown zaraz po pomiarze. Korzystam tylko z jednego timera.

Ogólnie pobór udało się zmniejszyć. Teraz jest 67uA.
Da się jeszcze bardziej? (Bo skoro mówisz, że 15uA watchdoga to dużo...)

Coś mi tu jeszcze nie gra, bo przy włączeniu powerdown (chociaż nie ma go co wyłączyć i program się wiesza) mam dalej pobór ok 53uA, czy to nie dziwne?

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 18 wrz 2010, 7:32

A nie jest tak że przy PowerDown procesor budzi tylko Reset :?: lub przerwanie od Watchdoga.
Down arrow
Widocznie w twoim układzie jest to granica poniżej której już nie zejdziesz, z jakiegoś powodu i nie musi to być procesor.
Ostatnio zmieniony 18 wrz 2010, 19:16 przez kayron, łącznie zmieniany 2 razy.

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 18 wrz 2010, 10:13

Źle to napisałem.
W moim programie nic nie wybudzała procesora z powerdown, ale nie to jest istotą rzeczy.
Chodziło o to, że jak już procesor przeszedł w to powerdown, to dalej ciągnie koło 50uA

Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 18 wrz 2010, 22:07

Upewnij się, że wszystkie peryferia są wyłączone, nie jest obciążone żadne wyjście IO, w tym także poprzez rezystor podciągający, odłącz programator przy pomiarze. Jeżeli wciąż pobiera 57uA, to wyrzuć również procesor, wtedy nie będzie już pobierał prądu :wink: A tak na poważnie, naprawdę go wylutuj czy coś, i sprawdź pobór prądu, bo może akurat problem leży gdzieś indziej.

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 19 wrz 2010, 9:34

Właśnie takie cośmam w planach ^^
Są rezystory podciągające dla szyny i2c (pb6 i pb7), ale po skonczeniu pracy szyny ustawiam pb6 i pb7 w stan wysoki. Tam nie płynie żaden nawet najmniejszy prąd?

kaliska5
Użytkownik
Posty: 348
Rejestracja: 01 maja 2008, 8:24
Lokalizacja: z nienacka
Kontakt:

Post autor: kaliska5 » 19 wrz 2010, 9:47

Może ustaw piny w stan HI-Z

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 19 wrz 2010, 11:25

Tzn, przykładowo:
DDRD = 0x00;
PORTD = 0x00;

Czyli po ustawieniu portu jako wejście i wpisaniu im 0, przejdą w stan wysokiej impedancji?

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 19 wrz 2010, 11:40

Dokładnie tak.

Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 21 wrz 2010, 11:26

Nie daje to żadnych rezultatów ^^
Spróbuję jeszcze czy po pozostawieniu samego procesora pobór prądu będzie mniejszy i dam znać :)

[ Dodano: 2010-09-21, 12:57 ]
Po pozostawieniu samego procka spadło o jakieś 3uA (czujnik temp cośtam pobiera).
Po przełączeniu na kwarc zewnętrzny jest tak samo.

Przy pracy na kwarcu wewnętrznym i każdorazowym przechodzeniu w idle po zakończeniu przerwania, pobór wyosi 70uA.

W trybie powerdown mam 20uA.

Czy przychodzi wam do głowy coś innego oprócz trybu power-save i wybudzania z niego przez timer2?

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 22 wrz 2010, 9:39

Powerdown i ,,wybudzanie'' resetem z wartdog.

ODPOWIEDZ