logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmel/ATmega644PA-AU/BASCOM - Jak skutecznie usypiać AVR i oszczędzać energię?

Hypno 19 Gru 2016 21:47 2337 33
  • #1 16138072
    Hypno
    Poziom 10  
    Witam ponownie,

    Chciałbym zapytać o Wasze doświadczenia z BASCOM i usypianiem AVRka i wyłączaniem czego się da w celu oszczędzania energii.
    Co i jak wyłączać, dotyczy zwłaszcza portów I/O?

    Załóżmy, że wybudzać procka ma jedno jedyne przerwanie a cała reszta jest niepotrzebna.

    Celowo nie wklejam żadnych przykładów, żeby nikogo nie zasugerować.
    Powodem zapytania jest oczywiście moja walka z tematem. Doszedłem w zużyciu prądu uśpionego procka do wartości, której nie jestem w stanie już obniżyć, a jest ona sporo wyższa od tej z noty katalogowej.
  • #3 16138136
    excray
    Poziom 41  
    Hypno napisał:
    Chciałbym zapytać o Wasze doświadczenia z BASCOM i usypianiem AVRka i wyłączaniem czego się da w celu oszczędzania energii.
    Co i jak wyłączać, dotyczy zwłaszcza portów I/O?

    Jest cały rozdział w DSie na ten temat.
    Hypno napisał:
    Załóżmy, że wybudzać procka ma jedno jedyne przerwanie a cała reszta jest niepotrzebna.

    Jakie przerwanie? Zewnętrzne? Wewnętrzne?
    Hypno napisał:
    Doszedłem w zużyciu prądu uśpionego procka do wartości, której nie jestem w stanie już obniżyć, a jest ona sporo wyższa od tej z noty katalogowej.

    Podaj więcej szczegółów. Który tryb uśpienia. Jak wybudzasz. Co wyłączyłeś przed uśpieniem. Jaki pobór otrzymałeś.
  • #4 16138166
    Hypno
    Poziom 10  
    Procka wybudza przerwanie z PCF8583 czyli zegarka. Oczywiście zegarek ma własną baterię. Jaki otrzymałem prąd to ciężko powiedzieć, gdyż mam procek w układzie z kilkoma rzeczami i wszystko lutowane SMD więc ciężko powiedzieć ile ciągnie sam procek. Ogólnie wyszło mi 10,9mA. W układzie jest rzeczony PCF, jest pamięć EEPROM I2C, wyświetlacz 44780 i 24 bitowy przetwornik ADC. Jest jeszcze modem z komunikacją po RS ale na własnym zasilaniu, które jest włączane sygnałem z procka. Z tego co wyliczone układ w uśpieniu (wyłączone także podświetlenie LCD) powinien brać max 5mA....
    Przed uśpieniem daję STOP na I2C, zatrzymuję wszystkie ADC, AC, timer'y i conter'y i oczywiście wyłączam podświetlenie i przetwornicę modemu. Zasilanie z modemu spada, podświetlenie gaśnie... a te 11mA zostaje. Oczywiście kombinacje z ustawianiem portów i podciąganiem także są.

    A piszę tutaj bo co znalazłem w necie w ciągu 5 dni to przeczytałem.
  • #6 16138223
    Hypno
    Poziom 10  
    @dondu Twoje artykuły czytałem dokładnie ;-)

    Z kodu poniżej wycięte ustawianie portów (bonie widziałem żadnej różnicy w zużyciu prądu).
    Procek ustawione fusami na 8MHz wewnętrzny z podziałem przez 8

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #8 16138258
    Hypno
    Poziom 10  
    Co przypuszczałeś?
    Schemat jest dość spory ale nie ma w nim nic nietypowego. Wszystko dokładnie z not katalogowych.
    Następna wersja układu na pewno będzie miała oddzielone zasilanie procka i reszty sterowane sygnałem z procka (na TS2951CS) ale póki co mam to co mam.
  • #11 16138546
    dasej
    Poziom 32  
    Witam.

    Z At możesz zejść jeszcze niże do uA.
    Przejrzyj PDF innych układów i zobacz czy mają stan sleep i jak go uruchomić.
    np. mcp9800 pobiera 200 uA a w sleep poniżej 1uA i ma na to komendę.
    Raczej masz problem w peryferiach poza prockiem.
  • #12 16138588
    Hypno
    Poziom 10  
    Pamięć EEPROM usypia wysłanie sekwencji STOP na I2C, modem nie problem bo i uśpić można komendą AT i wyłączyć zasilanie, HX711 w powerdown wprowadza wysoki sygnał dłuższy niż 60us na nóżce zegarowej (PD_SCK). Z LCD jest problem bo nie znalazłem nic jak go uśpić. Planuję GND LCD podłączyć pod tranzystor odcinający masę podświetlania i tak go włączać i wyłączać razem z podświetlaniem.
  • #14 16138731
    Hypno
    Poziom 10  
    Ad. 1 Akumulator żelowy 6v
    Ad. 2 Mierzę prąd całego układu czyli z akumulatora
  • #16 16138806
    Hypno
    Poziom 10  
    Tak, karta SIM praktycznie nic istotnego nie wnosi bo ma zasilanie z modemu, który jest wyłączony ale i tak wyjęta. Natomiast karta uSD to dodatkowe 2mA. Jak włożona razem daje 13mA jak wyjęta właśnie 10,9mA.

    Istotna uwaga jest taka, że mimo wyłączonego modemu ale jeżeli są podpięte piny RX i TX pomiędzy modemem a prockiem pobór jest o kolejne około 2mA większy. Jak odłączę (a mam na płytce właśnie na tę intencję wyłącznik, żeby można było modem sprawdzić podłączając zewnętrznie RSa) jest to 10,9 jak podłączę jest +2 mniej więcej. Oczywiście cały czas piszę o trybie powerdown.
  • #17 16138910
    dondu
    Moderator na urlopie...
    Ziarnko do ziarnka:
    ≈0,3mA na dzielniku R10+R43
    ≈0,5mA na R1
    ≈0,8mA na R44
    ≈0,7mA na R45
    itd.

    + LCD
    + prądy spoczynkowe układów wyłączonych
    + niespolaryzowane nieużywane pinu mikrokontrolera,

    Generalnie taki projekt (jeśli można) powinien mieć wyłączane przez mikrokontroler zasilanie pozostałych układów od strony Vbat z wyjątkiem PCFa.
    To luźne myśli, ponieważ Ty znasz projekt od podszewki, w tym założenia techniczne.

    Jeśli masz inną wolną ATmegę, to sprawdź swój program pod kątem Power down. Będziesz miał pewność, czy to kwestia programu, czy też schematu.

    BTW.
    Mam nadzieję, że bardzo dokładnie wyczyściłeś PCB po lutowaniu.
  • #18 16138935
    Hypno
    Poziom 10  
    ≈0,3mA na dzielniku R10+R43
    to święta racja, ponieważ tu nie są potrzebne żadne prądy, a tylko dzielnik napięcia dla ADC więc zwiększę opory,

    ≈0,5mA na R1
    ≈0,8mA na R44
    Hmmm tu jest pewien problem, układ włączania modemu jest według noty katalogowej, można spróbować zwiększyć opory ale nie wiem co z tego wyjdzie. Pocieszające jest to że tu prąd ucieka nie podczas "powerdown" ale pracy co ma miejsce jakieś 4,5 min na dobę ;-)

    ≈0,7mA na R45
    To proste do zlikwidowania, ten fragment jest do podłączenia DS1402 we wtyczce więc ten rezystor przenoszę na zewnątrz i będzie gubił tylko podczas wetknięcia wtyczki czyli .... 2-3 min na tydzień ;-)

    Generalnie tego co pokazałeś byłem świadomy. I tak jak napisałem na pewno wersja 2.0 będzie miała wyłączane zasilanie innych rzeczy niż sam AVR.

    Jednak ponawiam swoje pierwotne pytanie odnośnie ustawiania portów przed usypianiem. Chcę się upewnić, że albo robię dobrze albo źle. Za każdą odpowiedź będę wdzięczny.

    Dodano po 2 [minuty]:

    Wolną megę mam ale nie w tej samej wersji choć to w sumie mała różnica bo mam w DIPie.

    Płytka jest mucha nie siada, wykonana PRO.
  • #19 16138957
    dondu
    Moderator na urlopie...
    Pisałem w artykułach o ustawianiu nieużywanych pinów. Ustaw pin na wyjście lub na wejście i włącz pull-up.

    Prąd R1 i R44 jest w power down, bo zapewne wtedy wyłączasz ST1S10 włączając tranzystor Q5.

    Zrób testy na innym mikrokontrolerze - typ obudowy nie ma znaczenia.

    Hypno napisał:
    Płytka jest mucha nie siada, wykonana PRO.

    Ważne, by była czyściutka po lutowaniu.
  • #20 16138974
    Hypno
    Poziom 10  
    Hmmm masz rację z tym włączaniem. Trzeba będzie to zmienić na przeciwne.

    A płytka jest wykonana, polutowana i oczyszczona że mucha nie siada.

    Czy mógłbyś jednak jeszcze raz napisać "na wszelki wypadek" jak ustawiać i podciągać w BASCOM, oraz może słowo o CONFIG XPIN by się przydało odnośnie zwykłych AVRków (nie XMEGA).
  • Pomocny post
    #21 16139010
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #22 16139305
    dasej
    Poziom 32  
    Hypno napisał:
    ≈0,3mA na dzielniku R10+R43
    to święta racja, ponieważ tu nie są potrzebne żadne prądy, a tylko dzielnik napięcia dla ADC więc zwiększę opory,



    Inne spojrzenie na dzielnik.

    Atmel/ATmega644PA-AU/BASCOM - Jak skutecznie usypiać AVR i oszczędzać energię?

    Pin portu ustawisz tuż przed pomiarem na zero ( dokładasz parę omów ) , po czym wracasz do jedynki bez podciągania rezystora na tym pinie.

    Cytat:

    ≈0,5mA na R1
    ≈0,8mA na R44
    Hmmm tu jest pewien problem, układ włączania modemu jest według noty katalogowej, można spróbować zwiększyć opory ale nie wiem co z tego wyjdzie. Pocieszające jest to że tu prąd ucieka nie podczas "powerdown" ale pracy co ma miejsce jakieś 4,5 min na dobę ;-)


    Cała przetwornice ustawiasz w stanie włączona, a przednią wstawiasz p-Mosfet.
  • #23 16139926
    dondu
    Moderator na urlopie...
    niveasoft napisał:
    Możesz oczywiście na niego wpłynąć programowo, ale nie przez DDRD bo kontrolę nad pinem przejął USART.
    Myślę, że prostym rozwiązaniem jest taki układ, notabene cząsto stosowany przy konwersji napięć uC<>modem.
    Atmel/ATmega644PA-AU/BASCOM - Jak skutecznie usypiać AVR i oszczędzać energię?

    Dobrze, że o tym wspomniałeś, ale w trybie uśpienia piny ustawia się tak jak trzeba. Jeśli należy wyłączyć jakiś wewnętrzny moduł, to należy to zrobić programem. Nie potrzeba żadnych dodatkowych elementów.

    Hypno napisał:
    Czy mógłbyś jednak jeszcze raz napisać "na wszelki wypadek" jak ustawiać i podciągać w BASCOM, ...

    BASCOM nie znam :)

    EDIT:
    Sposób wskazany przez kol. Dasej dot dzielnika pomiarowego to właściwa droga:
    http://mikrokontrolery.blogspot.com/2011/04/S...PIP-czujnik-swiatla-oszczedzanie-energii.html
    http://mikrokontrolery.blogspot.com/2011/04/SmartPIP-czujnik-swiatla-testowanie.html
  • #24 16140505
    Hypno
    Poziom 10  
    Za moment usystematyzuję to może w jedną całość.

    Mam tylko jedną wątpliwość z tym dzielnikiem napięcia. Jeżeli tak będzie jak proponujecie to czy przypadkiem nie dostanę na porcie ADC pełnego napięcia akumulatora w trybie "poza pomiarem"? Jeżeli tak to może się skończyć spaleniem procka, a przynajmniej uszkodzeniem samego ADC w procku (co już wypraktykowałem). Spaleniem dlatego, że przewiduję także podłączanie zasilania akumulatorem 12V.
  • #26 16140545
    Hypno
    Poziom 10  
    Tak pisałem o 6V ale należy rozumieć jako sytuację typową. Idealnie jednak będzie jak będę mógł także całe ustrojstwo podłączyć do aku 12V.
    Jednego mega już tak spaliłem, znaczy ubiłem mu ADC bo reszta bebechów działa...
  • #28 16142587
    Hypno
    Poziom 10  
    To tak dla innych co będą przeglądali dodaję linka jakby mieli wątpliwości co i jak podciągać :D
    Łopatologicznie i po prostu wyjaśnione przy okazji projektu.
    Co i jak podciągać
  • #29 16142807
    dasej
    Poziom 32  
    Jak nie wiesz na jakie zasilanie się zdecydujesz to proponuje coś takiego.
    Atmel/ATmega644PA-AU/BASCOM - Jak skutecznie usypiać AVR i oszczędzać energię?

    Oprócz tego że zmierzysz napięcie zasilania to i prąd jaki układ pobiera.
    Dzięki pomiarowi prądu będziesz mógł testować cały układ czy działa poprawnie.
  • #30 16142812
    Hypno
    Poziom 10  
    Do prototypu jak najbardziej, do wersji produkcyjnej to podnoszenie kosztów.
    To nie jest problem, prototyp sobie opomiaruję. Na pewno jednak może to uprościć te pomiary.

    Z tej dyskusji na prawdę dużo już się dowiedziałem i pod tym kątem dość mocno zmienię projekt.
REKLAMA