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

[BASCOM] Problem z ADC-dzielnik

inspector_electro 01 Sty 2017 18:18 984 10
  • #1 16165349
    inspector_electro
    Poziom 22  
    Mam problem z ADC. Otóż zasilam cały układ z akumulatorka LI-iON 3,7V/120mAh.
    Dla tego też, ADC mam skonfigurowane: Reference = internal. Wtedy muszę dawać dzielnik rezystorowy na + i - baterii. Razem około 20k. Problem w tym, że po wyłączeniu procesora, "powerdown" mam 700 mikro Amper.(0,7mA).
    Sam dzielnik rezystorowy pobiera cały czas około 185 mikro Amper.
    Oleda wyłączam portem kontrolera poprzez transoptor, dla tego że przy bezpośrednim podłączeniu pod port, wiesza się oled. Na razie wszystko działa tak jak chciałem, ale:
    -Gdziekolwiek bym nie wpisał procedury wyłączającej ADC "disable ADC", to procesor się zawiesza. Próbowałem patentów z $noramclear alenie dało rady.
    Chciałem także odłączyć linie i2C od oleda, ale nie chce później wstać po obudzeniu procesora.

    Podsumowując, nie mogę wyłaczyć ADC, i dzielnik rezystorowy pobiera dużo prądu. Dodatkowe odłaczanie SCL i SDA, powoduje że wyświetlacz nie wstaje po obudzeniu mikrokontrolera.

    Aref mam podłaczone do masy poprzez kondensator 100n.
    Pomoże mi ktoś to ogarnąć?

    Moderowany przez tmf:

    Masz nowy problem, to załóż nowy temat. Posty z tematu niepowiązanego wydzieliłem do nowego.

  • #2 16165385
    dasej
    Poziom 32  
    Witam w nowym roku.

    [BASCOM] Problem z ADC-dzielnik

    Masz tu dwie różne metody kontrolą baterii LI-iON 3,7V
    oraz innych baterii dających wyższe napięcie od zasilania uC.

    W twoim przypadku na R5 ( 1 pin uC ) podajesz zero i robisz pomiar, po zakończeniu pomiaru
    wstawiasz stan wysoki czyli 1 i nie masz poboru prądu. Nawet jak całkowicie uśpisz procesor.
  • #3 16165629
    Konto nie istnieje
    Konto nie istnieje  
  • #4 16165643
    inspector_electro
    Poziom 22  
    Nie za bardzo właśnie wiem o co chodzi z tym schematem po prawej stronie.

    niveasoft Twój oled wstał bez problemu dla tego że jest "goła obsługa" tylko dla niego. W programie wygląda to zupełnie inaczej. Nie muszę od nowa inicjować OLEDA bo już działa, Ale gdy chcę zatrzymać np. ADC i dodam w pętli gł. STOP ADC LUB DISABLE ADC, to program wisi, lub mam sieczkę na ekranie.
    A koledze chyba chodziło o to, by wziąć minus dla dzielnika z porty up.
  • #5 16165679
    dasej
    Poziom 32  
    Pomiar napięcia baterii tak wykonany by dzielnik napięcia nie pobierał stale prądu z akumulatora.
    Programowo robisz tak.
    - włączasz zasilanie przetwornik ADC
    - ustawiasz PD3 = 0
    - wyzwalasz dokonanie jednego pomiaru na ADC3
    - ustawiasz PD3 = 1
    - odczytujesz dane
    - wyłączasz zasilanie przetwornika ADC

    Dzielnik pobiera prąd tylko przez krótką chwilę.
    Teraz wiesz o co mi chodzi.
    Schemat z lewej strony działa identycznie tylko można mierzyć wyższa napięcia niż zasilanie procesora.
  • #6 16165796
    Konto nie istnieje
    Konto nie istnieje  
  • #7 16165815
    inspector_electro
    Poziom 22  
    Patent od kolegi dasej działa. Myślałem że minus z portu będzie trochę inny, ale się myliłem. Odczyt napięcia jest ok, i po wejściu procesora w powerdown, pobór prądu spada do 620 mikroA.
    Nie mogę sobie poradzić z wyłączeniem ADC. Gdy wstawię komendę do pętli głównej, to po obudzeniu procesora na ekranie oleda mam albo sieczkę, albo świeci co ciekawe NA NIEBIESKO :)
    Oto część kodu:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #8 16165898
    Konto nie istnieje
    Konto nie istnieje  
  • #9 16165940
    inspector_electro
    Poziom 22  
    Jak zwykle miałeś rację :), i znowu pasuje powiedzieć "diabeł tkwi w szczegółach".
    Wiem że nie nie powinno używać się GOTO, ale w moim przypadku, po naciśnięciu przycisku POWERDOWN, przy instrukcji CALL wyświetlacz "zamarza" i po ponownym naciśnięciu dopiero przechodzi w PWDN. Instrukcja CALL wykonuje się tylko raz i wraca prawda?
    W dodatku całe moje zmagania z "wyłączeniem adc to lipa", bo rzeczywiście ta instrukcja disable ADC wyłącza tylko przerwanie. Czy żeby wyłączyć ADC trzeba wpisywać do MCUCR? Czytałem o tym trochę, ale coś mi nie wychodziło.
  • #10 16165984
    Konto nie istnieje
    Konto nie istnieje  
  • #11 16166127
    inspector_electro
    Poziom 22  
    Zastopowałem timery i ADC, ale to nic nie dało. Odpuszczę chyba to oszczędzanie energii. W dodatku po drugim uśpieniu i obudzeniu up prąd wzrasta o 100ua.

    Dodano po 42 [minuty]:

    Do moderatora tmf. Nie rozumiem co znaczy wydzielone. To znaczy że część postów przeniesiona?. Pytam bo pierwszy raz się spotykam z taką sytuacją.
REKLAMA