Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

bartibv 06 Apr 2014 16:58 3300 19
  • #1
    bartibv
    Level 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:
    Code: text
    Log in, to see the code



    I działający z Arduino Leonardo (różni się tylko konfiguracją pinów):
    Code: text
    Log in, to see the code


    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.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • #2
    BlueDraco
    MCUs specialist
    LED bez rezystora, tranzystor M2 stale włączony, po załączeniu tranzystora Q3 mikrokontroler dostał 8 V i pewnie już go nie ma.
  • #3
    bartibv
    Level 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
    BlueDraco
    MCUs specialist
    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
    bartibv
    Level 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!:)
  • #6
    BlueDraco
    MCUs specialist
    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
    bartibv
    Level 15  

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



    Edit

    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??
  • Helpful post
    #8
    BlueDraco
    MCUs specialist
    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
    bartibv
    Level 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



    Edit
  • #10
    BlueDraco
    MCUs specialist
    Tranzystor Q1 nadal źle podłączony - tak pMOSa nie wysterujesz.
  • #11
    bartibv
    Level 15  
    Kurde zły schemat wkleiłem! aaaghhhhrr miało być to:


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



    Edit
  • #12
    BlueDraco
    MCUs specialist
    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
    bartibv
    Level 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...
  • Helpful post
    #14
    dondu
    Moderator on vacation ...
    bartibv wrote:
    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
    bartibv
    Level 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
    User removed account
    Level 1  
  • #17
    bartibv
    Level 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
    bartibv
    Level 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
    dondu
    Moderator on vacation ...
    Zdjęcia są na tyla nieostre, że trudno je analizować.

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

    Code: c
    Log in, to see the code

    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
    bartibv
    Level 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.