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

[ATmega8A] - Zbyt duży pobór prądu w trybie Power Down

mkot123 13 Lut 2016 17:14 2136 16
  • #1 15432226
    mkot123
    Poziom 15  
    Witam,

    Zbudowałem w oparciu o poczciwą ATmega8 układ przenośnego woltomierza. Zadaniem układu będzie pomiar napięcia w zakresie 0-5V. Przez większą część czasu układ ma głęboko spać i nie zużywać energii z baterii. Po przyciśnięciu przycisku uC budzi się i przez 5 sekund wyświetla wartość napięcia. To tyle.

    Początkowo testowałem tą koncepcje na płytce stykowej, ale z ATmega32 i większym wyświetlaczem (4x20, a w docelowym układzie 2x8). Podczas testów udało mi się w trybie uśpienia zejść do prądu 0,37 µA, czyli zgodnie z notą megi. Oczywiście wszystkie możliwe układu wyłączone oraz odpowiednio ustawione stany na wyjściach żeby prąd nie płynął w żadną ze stron.

    Ostateczny schemat układu, który mam już fizycznie zbudowany wygląda następująco:
    [ATmega8A] - Zbyt duży pobór prądu w trybie Power Down

    Przed uśpieniem ustawiam:
    - MCP1525T-PWR - 0V
    - BL - 3,3V
    - BAT-GND - 3,3V
    - Vcc-LED - 0V
    - PWM - 0V
    - wszystkie sygnały sterujące LCD - 0V
    - wyłączam ADC

    Efekt. Układ pobiera 75 µA. To zdecydowanie za dużo w stosunku do moich testów i założeń początkowych.
    Na rezystorach dwóch dzielników napięcia (jak można by się spodziewać) nie ma żadnego spadku napięcia (poniżej 1 mV), z wyjścia MCP1525 do wejścia AREF nie płynie żaden prąd (mierzyłem). Ostatecznie wyjąłem też podczas uśpienia wyświetlacz LCD i pobór nie zmienił się ani troszkę.

    Macie jakieś pomysły, co może pobierać ten prąd? Będzie potrzebny kod programu?
  • #2 15432330
    excray
    Poziom 41  
    1. Do sprawdzenia kondensatory elektrolityczne. pin PWM w jaki stanie zostawiasz?
    2. Załącz kod.
  • #3 15432420
    mkot123
    Poziom 15  
    excray napisał:
    1. Do sprawdzenia kondensatory elektrolityczne. pin PWM w jaki stanie zostawiasz?


    PWM zostawiam 0V. Swoją drogą dla pewności wszystkie sygnały, których stan ustawiam przed uśpieniem sprawdzałem miernikiem, czy aby na pewno są w takim stanie w jakim bym chciał - wszystko ok.
    Kondensatory 100nF są ceramiczne, a 10µF tantale. Które kondensatory konkretnie podejrzewasz?

    Funkcje wywoływane przed przejściem w tryb Power Down:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Makra:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Inicjalizacja peryferiów (tylko raz podczas uruchomienia:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 15433854
    mkot123
    Poziom 15  
    Racja, komparator jest domyślnie włączony. Wyłączyłem go:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Niestety bez zmian:
    - zasilanie 3,3 V - pobór 106 µA
    - zasilanie 3,2 V - pobór 84 µA
    - zasilanie 3,1 V - pobór 64 µA

    Poszukuję dalej.
  • Pomocny post
    #6 15433910
    bgolab
    Poziom 22  
    mc1525tt, no load current typical 86uA.

    Byc może to pobór prądu bez obciązenia stabilizatora mc1525tt.

    Jesli atmega da sie wyjąc (na podstawce?) to mozna by wtedy sprawdzić.

    Dodano po 3 [minuty]:

    Chyba nie doczytałem opisu. Sorry.

    Dodano po 56 [sekundy]:

    Ale tak czy inaczej jeśli nie mamy pomysłu to trzeba chyba odłączać po kawałku podejrzane rzeczy.

    Dodano po 2 [minuty]:

    Zacząłbym od C7, C2

    Dodano po 6 [minuty]:

    i C1.

    Dodano po 31 [minuty]:

    Przegladajac datasheet zauwazylem ze jak jest watchdog enabled to pobor pradu w deep sleep mode jest kilkadziesiac uA. Moze Fuse jest WDTON? Sorry jeśli głupia uwaga. Temat mnie ciekawi a nie mam doświadczenia w usypianiu MCU.
  • #7 15434002
    mkot123
    Poziom 15  
    Zrobiłem jak polecił bgolab.
    Wylutowałem C7, bez zmian, potem C2, bez zmian. Ostatni został C1 przy samym procku - bingo! Wszystkie elementy są SMD, więc wylutowywałem je gorącym powietrzem. Stwierdziłem, że spróbuję jeszcze raz wlutować ten kondensator (C1). Okazało się, że teraz mam pobór 0,38 µA.

    Wniosek z tego taki, że pod kondensatorem (obudowa 0805) musiało być jakieś zanieczyszczenie, które przewodziło ten niewielki prąd. Bardzo dziękuję za pomoc w odnalezieniu przyczyny moich problemów. Jak widać z tak małymi prądami nie ma łatwo.

    P.S. Dla zainteresowanych. Układ ten będzie pełnił funkcję wskaźnika wypalania filtra cząstek stałych w silniku diesel'a. Sprawdzam za jego pomocą napięcie (pozycję) zaworu EGR. Jeśli trwa wypalanie napięcie wynosi 1,1V i ani drgnie, niezależnie od pozycji pedału gazu. Jeśli nie ma wypalania napięcie to zmienia się w zależności od obciążenia silnika od 1 do 2,5 V. Układ chcę używać tylko jako kontrolę tego napięcia przed zgaszeniem silnika - trwa wypalanie = nie gaś silnika.
  • #8 15434022
    bgolab
    Poziom 22  
    Układ bardzo mi sie podoba od strony designu.
  • #9 15434029
    Ricoh_220

    Poziom 38  
    Pomysł super szkoda że producent nie dodał takiej kontrolki na desce np pod nazwą "Don`t stop engine" wtedy ludziska nie popełniali by tego błędu.
  • #10 15434054
    mkot123
    Poziom 15  
    W wielu samochodach jest taka kontrolka, w moim niestety nie (Volvo V50). Dlatego muszę sobie jakoś radzić. Wielokrotne gaszenie silnika podczas procesu wypalania prowadzi do podnoszenia się poziomu oleju silnikowego na skutek przedostawania się do miski olejowej paliwa. Jak to się dzieje, są różne teorie, ale jest to fakt. O problemach jakie mogą wyniknąć z rozrzedzonego oleju silnikowego chyba nie muszę pisać.
  • #11 15434073
    bgolab
    Poziom 22  
    Tak z ciekawości: czy nie dałoby się podłaczyć tego ukłądu do akumulatora (wiadomo stabilizatory itd). Nie trzeba by było oddzielnego zasilania bateryjnego i pracy w low power mode... Czy były jakieś przeciwskazania (zakłocenia pracy itd).
  • #12 15434074
    kamyczek
    Poziom 38  
    większość aut sygnalizuje wypalanie FAP robi to kontrolką na zegarach np. ikoną silnika , świec żarowych lub samego fapa . Poza tym masz jeszcze do dyspozycji bloki pomiarowe w których zazwyczaj jest dostępny status regeneracji jej faza i zanieczyszczenie . Tak czy inaczej nie jest to już tak proste do realizacji bo trzeba znać protokół diagnostyczny zazwyczaj UDS, oraz zazwyczaj obsługę magistrali can .
  • #13 15435159
    mkot123
    Poziom 15  
    bgolab napisał:
    Tak z ciekawości: czy nie dałoby się podłaczyć tego ukłądu do akumulatora (wiadomo stabilizatory itd). Nie trzeba by było oddzielnego zasilania bateryjnego i pracy w low power mode... Czy były jakieś przeciwskazania (zakłocenia pracy itd).


    Oczywiście można by zasilić układ z akumulatora, pamiętając o zastosowaniu odpowiedniego zabezpieczenia ze względu na ekstremalnie duży prąd zwarciowy. Nie było żadnych przeciwwskazań technicznych w tym przypadku. Sygnał jest troszeczkę zaszumiony, ale kondensator C10 100 nF w zupełności wystarcza. Z resztą w tym przypadku dokładność odczytu do 1 miejsca po przecinku jest wystarczająca.
    Ja miałem jednak dwa powody, dla których zdecydowałem się na zasilanie bateryjne. Po pierwsze około miesiąc temu walczyłem z przełożeniem przewodu z komory silnika do kabiny pasażerskiej. Przewód jest dwużyłowy, ponieważ pierwszy pomysł zakładał wykorzystanie woltomierza zasilanego z sygnału mierzonego. Można takie kupić na All... za 20 zł, zakres napięć mierzonych 3-30V. Jednak rozwiązanie nie sprawdziło się, ale dwużyłowy kabel pozostał.
    Drugi powód to chęć sprawdzenia się, czy uda mi się wykonać właśnie taki układ, który będzie mógł pracować na baterii CR2032 przez bardzo długi czas. Niby nic wielkiego, ale jak widać po moim problemie w tym temacie chochliki czają się wszędzie.

    Bilans energetyczny wygląda następująco:
    W stanie spoczynku układ pobiera 0,38µA, zaokrąglamy do 0,4µA. Bateria CR2032 ma od 190 do 220 mAh. Przyjmijmy 200 mAh, czyli w spoczynku układ powinien pracować 200 mAh / 0,00038 mA = 500 000 h ≈ 20 833 dni ≈ 57 lat - teoretycznie. Można więc uznać, że jest to praktycznie pomijalne zużycie energii.
    Podczas pracy pobiera 9 mA, a więc ciągłej pracy mamy 200 mAh / 9 mA ≈ 22 godziny. Jednakże, taką pojemność można uzyskać rozładowując baterię prądem 0,2 mA (CR2032 datasheet). Zakładam zatem, że uzyskam maksymalnie połowę tej pojemności, czyli 10 godzin ciągłej pracy. Jednak po wciśnięciu przycisku układ budzi się na 5 sekund, bo to w zupełności wystarcza, żeby sprawdzić jakie jest mierzone napięcie. Mamy zatem 10 godzin / 5 sekund = 7200 cykli. Zakładając, że każdego dnia będę włączał układ 2 razy (dojazd i powrót z pracy) to na jednej baterii powinien działać 7200 / 365 dni (w roku) = 19 lat.
    Podzielmy tą wielkość jeszcze raz przez 2, żeby wziąć poprawkę na wszystkie inne czynniki, których nie wziąłem pod uwagę (niska temperatura, samorozładowanie, itd.), to nadal zostaje 10 lat użytkowania.

    Tak czy inaczej myślę, że takie rozwiązanie jest praktycznie uzasadnione.

    kamyczek napisał:
    większość aut sygnalizuje wypalanie FAP robi to kontrolką na zegarach np. ikoną silnika , świec żarowych lub samego fapa


    Masz racje - większość :D
    Jednakże w tych, których takiej kontrolki nie ma, sposobów na wyciągnięcie informacji o trwającym procesie wypalania jest co najmniej kilka. Moje rozwiązanie ma jeszcze jedną zaletę - nie musiałem ciąć, lutować oraz izolować żadnych kabli w instalacji silnika. Trik polegał na sprytnych wyprowadzeniu jednego sygnału napięciowego z połączenia gniazdo-wtyczka. Masa w samochodzie jest wszędzie.
  • #14 15435483
    kamyczek
    Poziom 38  
    Jak już kolega tak walczył z tą energooszczędnością to trzeba było zaaplikować tam attiny 4 albo komparator i diodę . 32k pamięci na miganie diody to lekki przerost formy nad treścią ...
  • #15 15435522
    mkot123
    Poziom 15  
    Oczywiście można by zastosować komparator z diodą. Układ oczywiście trzeba by wyłączać, bo nie jest potrzebny przez cały czas. Byłoby to jak najbardziej poprawne rozwiązanie.
    Ja jednak chciałem mieć wyświetlacz i widzieć rzeczywistą wartość napięcia, co udało mi się osiągnąć.

    P.S. ATmega8 ma 8 kB pamięci, a nie 32 kB. Poza tym robi coś więcej niż tylko mruga diodą. Jak napisałem powyżej, widzę na LCD wartość napięcia EGR oraz mogę też sprawdzić poziom napięcia baterii - żebym wiedział kiedy powinienem ją wymienić.
  • #16 15435679
    bgolab
    Poziom 22  
    Nie ma co wybrzydzać. Konstrukcja ładna, szczególnie to wyłączanie stabilizatora dla napięcia referencyjnego by obnizyć pobór prądu.
  • #17 15436089
    kamyczek
    Poziom 38  
    W pierwszym poście pisałeś o testowaniu na medze 32 dlatego sądziłem że o taki mikrokontroler chodzi , jednak jeśli dokonałeś kompilacji miałeś z pewnością świadomość ile zajmuje kodu i czego potrzebuje . Tu akurat potrzebny jest 1 układ zegarowy i przetwornik ad nawet 8 bitowy . Ja osobiście usypiał bym procesor na 2-5s budził, odczytywał wartość adc porównywał ją z poprzednią i zadaną wartością i znów usypiał na kolejne 2-5s . Samą diodę zapalał bym na 0,5s to wystarczający czas by zaobserwować jej zapalenie jednocześnie niezbyt długi by pobierać prąd z baterii . Do tego można dodać pomiar napięcia zasilania . Poza tym ja bym sytuację troszkę odwrócił rezygnując z baterii i zasilając sam mikrokontroler z napięcia 5V występującego w czujniku EGR te mikroampery są dopuszczalne . Dla ograniczenia prądu pobieranego przez układ na wyjściu diody zastosował bym układ OC na tranzystorze podający masę przez rezystor ograniczający jej prąd w trakcie jej aktywności przy takim rozwiązaniu układ nie ma baterii jest zamontowany przy czujniku egr i ma krótkie przewody do przetwornika adc jednocześnie do kabiny wędruje jeden przewód zabezpieczony przed zwarciem rezystorem na module , a sama dioda dostaje zasilanie po stacji i w tym przypadku może to być 12V przy odpowiednim doborze rezystora szeregowego . Podsumowując brak baterii układ w komorze silnika 1 przewód i led dodane 1 tranzystor dwa rezystory wywalona bateria i mniejsze zakłócenia w samym przetworniku adc .
REKLAMA