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

ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego

bartibv 06 Kwi 2014 16:58 3387 19
REKLAMA
MediaMarkt Black Week
  • #1 13482113
    bartibv
    Poziom 15  
    Witam
    Wypróbowałem swój kod na Arduino Leonardo, wszystko hula. Gorzej jak podepnę to do ATtiny13A. Układ mimo podłączenia tak jak do Arduino nie wysyła napięcia na pin z MOSFETem, nawet jeśli ono się zgadza. Jeśli jednak wypnę obydwie baterie to wtedy przy kliknięciu guzika dioda zapala się tak jak być powinno (bo napięcie wynosi 0V ), jeśli nie wyjmę to nie.
    Jestem zielony w gołych mikrokontrolerach, czy to może być skutek braku jakiejś części, np słyszałem, że trzeba podpiąć dławik ale nie wiem gdzie, inna sprawa ze na gołej ATmedze8 dziala bez niego.
    Najdziwniejsze jest to, że jak wypnę USBasp z portu USB i podam napięcie z li-ion na przetwornik ADC (którykolwiek) to wtedy pali się diodka zasilania na USBasp (tak jakby przetwornik analogowy zmieniał sie w Vcc?)
    Od razu mówię, że to raczej nie jest problem z fusebitami, bo sprawdzałem w mkAVRcalculatorze i w uproszczonych się zgadza z bootloaderem.
    Programy piszę w Arduino IDE.
    Kody:
    Niedziałający w ATtiny13A:
    Kody:
    Niedziałający w ATtiny13A:
    Kod: text
    Zaloguj się, aby zobaczyć kod



    I działający z Arduino Leonardo (różni się tylko konfiguracją pinów):
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Schemat podłączenia:
    ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego

    Dla wypróbowania układu zamiast tranzystorów i MOSFETa podłączyłem diodę LED.Na arduino wszystko działało, zaś na ATtiny13A nie.
  • REKLAMA
    MediaMarkt Black Week
  • #2 13482282
    BlueDraco
    Specjalista - Mikrokontrolery
    LED bez rezystora, tranzystor M2 stale włączony, po załączeniu tranzystora Q3 mikrokontroler dostał 8 V i pewnie już go nie ma.
  • #3 13482297
    bartibv
    Poziom 15  
    Jak już wspominałem tranzystorów jeszcze nie załączałem do obwodu, zamiast tego dałem diodę LED i nie działa jak powinno. Chodzi mi na razie o rozwiązanie problemu z nieprawidłowym odczytem i przetworniku analogowym cudownie zamieniającym się rolą z Vcc.

    Możesz rozwinąć temat z tranzystorem Q3? Co z nim nie tak?

    Rezystor przy ledzie się omsknął, przepraszam za niedopatrzenie :)
  • #4 13482382
    BlueDraco
    Specjalista - Mikrokontrolery
    Ja bym raczej zapytał "a co z nim tak?" Emiter wisi na napięciu dwóch baterii, zgaduję, że to 8 V, po włączeniu przez tranzystor popłynie prąd wprost do wejścia uC.

    uC teoretycznie jest zasilany z 5V, to znaczy, że niezależnei od stanu wyjść Q3 i M2 będą zawsze otwarte (M2 trochę mniej niż Q3 ;)), w konskwencji uC zasilai się przez wejście prądem płynącym przez Q3.
  • #5 13482432
    bartibv
    Poziom 15  
    Da się temu jakoś zapobiec ?
    Obydwa Q można usunąć. Zależy mi na MOSFETcie, żeby odcinał baterie od odbiornika gdy napięcie spadnie. Prąd pobierany przez dzielniki nie jest jakiś wielki, więc mi nie przeszkadza.

    EDIT: aaa teraz zauważyłem! - dzielnik napięcia powinien być na drugim akumulatorku!:)
  • REKLAMA
    MediaMarkt Black Week
  • #6 13483288
    BlueDraco
    Specjalista - Mikrokontrolery
    pMOS steruj z tranzystora npn, np. PDTC114 albo zwykłego przez rezystor w bazie. Pomiędzy źródło i bramkę pMOS daj rezystor np. 47k.
  • #7 13483346
    bartibv
    Poziom 15  

    ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego



    Edytuj

    W ten sposób?
    Jeśli mogę jeszcze zapytać... po co tranzystor przed MOSFETem? Z tego co wiem prąd płynący do nich z uC jest malutki więc czemu on służy??
  • Pomocny post
    #8 13483657
    BlueDraco
    Specjalista - Mikrokontrolery
    Po to, żeby pMOS nie był cały czas otwarty. W stanie wysokim masz na wyjściu uC 5V, czyli o ok 3.4 V mniej, niż na źródle pMOS.

    Tranzystor podłączyłeś źle - emiter ma być na masie, kolektor na bramce pMOS.
  • #9 13485146
    bartibv
    Poziom 15  
    Witam ponownie
    Testowo podmieniłem MOSFETa i tranzystor na diodę, żeby sprawdzić czy stany HIGH i LOW się zgadzają i dalej to samo. uC zasila się z pinów analogowych i nie załącza MOSFETu, ale za to dioda, która ma się zapalić, gdy napięcie jest za niskie po naciśnięciu guzika działa poprawnie. O co więc chodzi??


    ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego



    Edytuj
  • #10 13485389
    BlueDraco
    Specjalista - Mikrokontrolery
    Tranzystor Q1 nadal źle podłączony - tak pMOSa nie wysterujesz.
  • #11 13485428
    bartibv
    Poziom 15  
    Kurde zły schemat wkleiłem! aaaghhhhrr miało być to:


    ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego



    Edytuj
  • #12 13485707
    BlueDraco
    Specjalista - Mikrokontrolery
    Zasilanie uC przez linię portu - to zdecydowanie zły pomysł. Daj rezystor szeregowy np. 10k, a przy obu wejściach ADC kondensatory 10..100n.

    Z postu powyżej można wnioskować, że uważasz, że układ działa błędnie, ale zupełnie nie wiadomo, na czym polega to błędne działanie.
  • #13 13485849
    bartibv
    Poziom 15  
    O jakim porcie mówisz? Gdzie dać ten rezystor?Zasilam układ stabilnym 5V z usb przez USBasp na nóżki Vcc i GND. Weź poprawkę, że dopiero zaczynam i wszystkiego nie rozumiem :))

    Błędne działanie polega na tym, że:
    -gdy napięcie na obydwóch akumulatorach jest w granicach 3.2 a 4.2V to uC powinien dawać stan wysoki na pin 1. Cały czas jest stan niski.
    -kod się zgadza przy współpracy z Arduino a z uC nie
    -gdy napięcie na dowolnym aku spadnie poniżej 3.4 V to przy kliknięciu guzika na pinie 0 zapala się dioda na pinie 1 i to działa, czyli ADC działa tylko nie zawsze
    -gdy zasilanie jest odłączone i podłączone zostają akumulatorki na Analog input'y to wtedy układ się zasila i podaje zasilanie dalej na USBasp przez Vcc i masę - tak chyba nie powinno być, nie?

    Nie rozumiem tego, że kiedy w tej samej konfiguracji podpinam to do Arduino to wszystko hula...
  • Pomocny post
    #14 13486048
    dondu
    Moderator na urlopie...
    bartibv napisał:
    O jakim porcie mówisz? Gdzie dać ten rezystor?Zasilam układ stabilnym 5V z usb przez USBasp na nóżki Vcc i GND. Weź poprawkę, że dopiero zaczynam i wszystkiego nie rozumiem :))

    Jak sądzę BlueDraco chodzi o to, że gdy wyłączysz zasilanie z USB, a pozostawisz podłączony V2, to będzie on zasilał mikrokontroler przez diodę zabezpieczającą pin 4 Attiny. Zobacz w dokumentacji jak wygląda pin mikrokontrolera:

    ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego

    chodzi o tę górną diodę, która z pinu kieruje do Vcc. Takiego stanu rzeczy należy unikać, bo można tę diodę uszkodzić.

    Więcej na temat pinów: http://mikrokontrolery.blogspot.com/2011/04/jak-mikrokontroler-widzi-sygnal-cyfrowy.html
    i zaglądnij do spisu treści skoro dopiero zaczynasz :)
  • #15 13486131
    bartibv
    Poziom 15  
    Dobra lekturka, dzięki :) Czyli problem z USBaspem ze się zapala mimo braku Vcc to nie problem :) A co z tym, że mimo napięcia mieszczącego się w przedziale kontroler nie reaguje ? I gdzie w końcu ten rezystor ?:p

    Ja przepraszam, że tak drążę i męczę no i dzięki za wyrozumiałość, startuję dopiero, nie chcę być upierdliwy bo sukcesywnie poszerzam swoją wiedzę, ale zależy mi, żeby ten projekt jak najszybciej uruchomić :)
  • #16 13486584
    Konto nie istnieje
    Poziom 1  
  • #17 13486609
    bartibv
    Poziom 15  
    eeee... dzięki za fatygę ale nie na temat :p Układ jest zasilany ze stabilnego źródła jakim tutaj dla przykładu jest USBasp. Aku są po to, żeby zasilać inny układ, powiedzmy żarówkę i uC ma zmierzyć napięcie na każdym z nich, że gdyby ono spadło poniżej 3.2V lub było wyższe niż 4.2 V to ma odciąć zasilanie poprzez MOSFET. Dodatkowo dioda po wciśnięciu guzika ma się zapalić, jeśli napięcie na którejś z nich jest niższe niż 3.4V.Pisałem o tym już.
  • #18 13489522
    bartibv
    Poziom 15  
    Po lekturze mikrokontrolery-jak zacząć, do swojego uC podłączyłem kondensatory filtrujące chyba wszędzie-zasilanie, obydwa ADC, ładnie podciągnąłem reset i myślałem, że powiem:" GLORIA HURA UDAŁO SIĘ"..ale tak się nie stało...

    Znów testowo zamiast MOSFETa podłączyłem diodę i ten sam problem-nie świeci się, mimo prawidłowych napięć na zaciskach akumulatorków. Dioda, która jest normalnie w schemacie także nie świeci, bez względu na stan guzika czy poziomu napięcia którejkolwiek baterii... Mikrokontrolera nie spaliłem i działa, mkAVRcaltulator go wykrywa jak trzeba.Dosyłam jeszcze zdjęcia na płytce stykowej, starałem się zrobić tak, żeby to było jak najbardziej czytelne... ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego ATtiny13A - Arduino IDE +ATtiny13A Li-ion controller brak stanu wysokiego

    Panowie błagam, jest schemat, jest kod, jest opis problemu, są zdjęcia... ja już na prawdę nie mam bladego pojęcia co to może być ...:(
  • #19 13494632
    dondu
    Moderator na urlopie...
    Zdjęcia są na tyla nieostre, że trudno je analizować.

    Ustalmy na początek co działa. W tym celu przygotowałem program:

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

    oraz plik hex w załączniku, którym zaprogramuj ATtiny.
    Do PB4 podłącz rezystor, do niego anodę diody LED, a jej katodę do masy.

    Daj znać jakie są rezultaty.
  • #20 13494849
    bartibv
    Poziom 15  
    Przepraszam za jakość zdjęć, starałem się zrobić co w mojej mocy ale niestety dysponuje tylko tabletem :/

    Dioda miga, ale dużo szybciej. Ustawiłem sobie metronom na tempo 30 i dioda miga 4x szybciej z czego wynika, że co 250ms zmienia stan.

    Bootloader do ATtiny13a z arduino mam na taktowanie 9,6MHz bez dzielenia. Jak wgrywałem 'migacz' przez arduino IDE to tempo zmiany stanu się zgadzało.
REKLAMA