Elektroda.pl
Elektroda.pl
X
TermopastyTermopasty
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATmega8 + FT232RL - zasilanie napięciem 3.3V

09 Sty 2013 21:12 8715 32
  • Poziom 8  
    Witam wszystkich

    Przepraszam z góry jeśli temat nie znajduje się w odpowiednim dziale, ale jestem początkującym użytkownikiem forum i myślę że to odpowiedni dział.

    Dużo już czytałem na forum na temat połączenia układu scalonego FT232RL połączonego z ATmega8 ale żaden z postów nie zadowolił mnie informacjami, które chciałem uzyskać.

    Mianowicie chciałbym połączyć się z z komputerem PC poprzez USB z mikrokontrolerem ATmega8. Nie było by problemu jeśli zasilał bym cału układ napięciem 5v. Niestety w skład mojego układu wchodzi jeszcze transeiver RFM12B, który może być zasilany maksymalnym napięciem 3.6V z tego też względu całość zasilam napięciem 3.3V (również mikrokontroler). (przegapiłem fakt że są produkowane również takie RFM, które można zasilić napięciem 5V).

    Problem polega na tym, że chciałbym wykorzystać układ scalony FT232RL do komunikacji mikrokontrolera z komputerem. Niestety w dokumentacji tego układu niejasno (jak dla mnie) jest wytłumaczona konfiguracja na napięcie 3.3V.

    ATmega8 + FT232RL - zasilanie napięciem 3.3V

    Czy ktoś mógłby podpowiedzieć jak należy to zrobić?
    Kombinowałem już z podłączeniem dlatego zamieszczam obrazek na którym jest część związana z połączeniem układu FT232RL z ATmega8. Czy jest on wykonany prawidłowo? czy należy coś w nim zmienić?

    Dziękuję za podpowiedzi.
  • TermopastyTermopasty
  • Poziom 39  
    Prosto - na pinie nr 17 układu FT232RL masz pożądane przez ciebie napięcie 3,3V, z którego możesz zasilać dalszą część (Atmega + RFM12B)... Pamiętaj, że wydajność prądowa tego wyjścia jest ograniczona - a jaka - odsyłam do datasheet FT232RL.
    Sprawdź, zanim obciążysz go zbyt mocno.
    Być może LM1117 stanie się zbędny.
  • Moderator na urlopie...
    A jeśli już to do VCCIO podepnij napięcie 3v3 podawane przez stabilizator LM1117.
    Poza tym niestety stabilizator 3v3 w FT232RL jest bardzo poddany na skoki poboru prądu - czasami może to powodować nieoczekiwane zawieszanie się układu i komunikacji z PC nawet pomimo odpowiedniego filtrowania. Dlatego bym zostawił ten stabilizator, tylko na nogę FT232RL-VCCIO podaj napięcie zasilające procesor, a wyjście 3v3 z FT232RL przez kondensator do masy.
    Dalej masz coś nie tak z zasilaniem za LM1117 - dlaczego VCC do procesora idzie przez diodę LED?
    Dalej jeśli to FT232RL i nie przeprogramujesz mu jednego bitu konfiguracyjnego to oscylator zewnętrzny jest zbędny - kość domyślnie pracuje na wewnętrznym oscylatorze.
    Poza tym pomyśl co się stanie jak podepniesz jednocześnie USB i zasilanie jackiem - jeśli komputer da Ci 5V, a zasilacz 5,1V to spalisz bezpiecznik na płycie główniej PC w najlepszym razie. Tu musisz albo zostawić tylko jedno połączenie, albo dodać 2 diody. A tak wogóle czy to urządzenie ma działac bez komputera? Bo jeśli ma ono zawsze być podłączone do PC to nie ma sensu zasilania zewnętrznego...
  • Pomocny post
    Poziom 39  
    Jeszcze jedno - powyłączaj w Atmega to, czego nie używasz. To powinno dość mocno ograniczyć pobór prądu. Gdzieś był fajny film o tym, ale nie mogę znaleźć.
    Patrząc na pobór prądu - myślę, że na te 2 układy (Atmega i RFM12B) nawet wspomniane w dokumentacji 50 mA spokojnie powinno wystarczyć.
    Ograniczajmy zużycie prądu - to nie tylko jest "cool", ale i niezła nauka :)
  • TermopastyTermopasty
  • Moderator na urlopie...
    A i jeszcze pin TEST FT232RL - z tego co pamiętam (sprawdź w DS) też do masy.
    I to samo RESET - chyba powinien iść do VCC bezpośrednio lub przez pull-up'a.
  • Poziom 39  
    Mam jeszcze pytanie - czym podyktowany jest wybór kwarcu w twoim układzie - 10MHz?
    Czy w ten sposób nie ograniczasz sobie maksymalnej prędkości UART ?
    Czy nie lepiej przetaktować go na 11.0592 MHz (albo w dół na 7.3728 MHz)?

    Jest jeszcze parę innych błędów - jaka jest np. zasadność włączenia diody D1 w szeregowo w obwód zasilania? tak zasilana Atmega - "nie pójdzie".
    Co z Avcc i ARef?
    Po co kwarc do FT232? On dobrze działa bez :)
    Co ze złączem programatora?

    Zacznij od tego:
    http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html
  • Poziom 8  
    Odpowiadam na pytanie PIOTRVA

    Urządzenie to ma służyć do tego, aby były odbierane informacje na temat stany miejsca parkingowego dlatego też będzie podłączony cały czas do komputera.

    Diodę LED znalazła się za układem LM1117, aby sygnalizowała czy układ jest zasilany. Jednak jest to zły pomysł?

    Jeśli dobrze rozumiem kwestie wewnętrznego oscylatora w FT232RL to jeśli VCC nie będzie podłączone do zasilania tylko VCCIO zasilę napięciem 3.3V z wyjscia układu LM1117 to będzie on działać prawidłowo?

    Jeśli usunę zewnętrzne zasilanie to poprostu podłączyć 5V z USB na wejście LM1117?

    Dodano po 6 [minuty]:

    MICPR

    Wybrałem kwarc 10MHz ze względu na to że tak podpowiedział mi znajomy więc zdałem się na jego podpowiedź. W takim razie można go przetaktować już w samej części kodu??

    Wezmę pod uwagę stronę internetową wysłaną przez Ciebie i zaraz zmodyfikuję układ
  • Poziom 39  
    stardamos napisał:
    Diodę LED znalazła się za układem LM1117, aby sygnalizowała czy układ jest zasilany. Jednak jest to zły pomysł?
    Podłącz ją więc (wraz z szeregowym rezystorem) między 3,3V a masę, a nie VCC Atmegi.
    stardamos napisał:
    Jeśli dobrze rozumiem kwestie wewnętrznego oscylatora w FT232RL to jeśli VCC nie będzie podłączone do zasilania tylko VCCIO zasilę napięciem 3.3V z wyjscia układu LM1117 to będzie on działać prawidłowo?
    VCCIO jak nazwa wskazuje służy do zasilania portów I/O - czyli na schemacie są to piny po prawej stronie FT232. Jak widzisz - domyślnie FT232RL jest zasilany 5V, ale porty I/O w tym przykładzie są w "standardzie" 3,3V.
    Bez zasilania +5V FT232 nie będzie działać - bo i jak i po co? Zasilając samo VCCIO będziesz jedynie utrzymywał zasilanie portów IO - które będą "martwe".
    stardamos napisał:
    Jeśli usunę zewnętrzne zasilanie to poprostu podłączyć 5V z USB na wejście LM1117?
    Tak
    stardamos napisał:
    Wezmę pod uwagę stronę internetową wysłaną przez Ciebie i zaraz zmodyfikuję układ
    Czekamy, w miarę możliwości pomożemy :)

    Jeszcze jeden błąd TX FT232 musi iść do RX Atmegi, a RX FT232 - do TX Atmegi.
    Inaczej transmisji nie będzie :)

    stardamos napisał:
    Wybrałem kwarc 10MHz ze względu na to że tak podpowiedział mi znajomy więc zdałem się na jego podpowiedź. W takim razie można go przetaktować już w samej części kodu??
    Nie.
    Kwarce, które podałem umożliwią ci transmisję aż do maksimum standardowego interfejsu COM czyli 115200 bodów.
    Kwarc 10MHz ograniczy prędkość UART do około 14400 bodów. Na większych prędkościach zaczną pojawiać się błędy transmisji.
    Gdy urządzenie końcowe ma pracować powiedzmy z prędkością 9600 - nie ma to znaczenia.

    Pamiętaj również, że teoretyczna maksymalna częstotliwość kwarcu dla Atmegi zasilanej z 3,3V to około 8MHz. Wszystko inne mieści się poza "granicami", choć są to granice umowne - i wspomniane 11 czy nawet 12 MHz - spokojnie Atmega uciągnie. Więcej w datasheet :)
  • Poziom 8  
    Zmodyfikowałem schemat zgodnie z zaleceniami.Atmegę połączyłem minimalnie jak się dało ponieważ nie będę korzystał z ADC więc myślę że takie podłaczenie wystarczy.
    Na schemacie nie umieściłem diody LED ale myślę że jest to mało ważne.

    piotrva napisał:
    I to samo RESET - chyba powinien iść do VCC bezpośrednio lub przez pull-up'a.


    W dokumentacji FT232RL tylko w jednym przypadku reset jest podłączony do VCC gdy jest w KONFIGURACJI SELF POWERED.

    zamieszczam cały schemat ze wględu na to aby łatwiej było dyskutować na temat problemu.

    mickpr napisał:
    Co ze złączem programatora?

    Które to dokładnie złącze bo pierwszy raz spotkałem się z tym określeniem

    Dodano po 48 [sekundy]:

    ATmega8 + FT232RL - zasilanie napięciem 3.3V
  • Poziom 39  
    stardamos napisał:
    Które to dokładnie złącze bo pierwszy raz spotkałem się z tym określeniem
    A jak chcesz zaprogramować Atmegę?
    Jeśli w zewnętrznym programatorze - to nie musisz mieć złącza.
    W przeciwnym przypadku - złącze ISP. (MISO, MOSI, SCK, RESET i masa muszą być wyprowadzone. Dodatkowo możesz wyprowadzić Vcc).
    Widzę, że używasz Altium Designer - lub Protel'a - użyj jako masę elementu GND - to ułatwi czytanie schematu.
    Kwarc z RFM12B chyba źle podłączyłeś.
    Antena RFM12B ma być podłączona do zasilania? Chyba nie.
  • Poziom 8  
    jeszcze zrodziło się pytanie z mojej strony czy jeśli zasilam układ 5V na VCC oraz 3.3V na VCCIO, to czy jest to konfiguracja SELF POWERED?

    Dodano po 2 [minuty]:

    mickpr napisał:
    A jak chcesz zaprogramować Atmegę?
    Jeśli w zewnętrznym programatorze - to nie musisz mieć złącza.


    Chcę zaprogramować w zewnętrznym programatorze

    Dodano po 1 [minuty]:

    I używam Altium Designer
  • Pomocny post
    Poziom 39  
    RFM12B ma kwarc na płytce, więc po co drugi?
  • Poziom 8  
    mickpr napisał:
    Kwarc z RFM12B chyba źle podłączyłeś.
    Antena RFM12B ma być podłączona do zasilania? Chyba nie.


    Racja antena nie powinna być podłączona do zasilania

    A kwarc powinien być podłączony do wyprowadzenia XTL/REF niestety RFM12 w SMD nie posiada takiego wyprowadzenia. Czy w taki razie ma on już fabrycznie dodany kwarc?
  • Poziom 39  
    stardamos napisał:
    A kwarc powinien być podłączony do wyprowadzenia XTL/REF niestety RFM12 w SMD nie posiada takiego wyprowadzenia. Czy w taki razie ma on już fabrycznie dodany kwarc?
    Musisz sprawdzić na podstawie dokładnego numeru tego modułu.
    Ja przez wyszukiwarkę Google jakoś nie mogę znaleźć modułu bez kwarcu.
    To wygląda tak?
    http://www.robotshop.com/wireless-smd-transceiver-rfm12b.html


    Zauważyłem przy Atmega kwarc 8MHz.
    Taką częstotliwość może Atmega może wygenerować sobie sama wewnątrz układu (bez tego kwarcu i jego kondensatorów).
    Tyle, że nadal będzie taki sam problem, o którym pisałem w związku z RS232 i błędami transmisji.
  • Poziom 8  
    Zgadzam się z tym że ma kwarc w obudowie bo ja używam SMD i wygląda on tak:

    Dodano po 25 [sekundy]:

    ATmega8 + FT232RL - zasilanie napięciem 3.3V

    Dodano po 2 [minuty]:

    stardamos napisał:
    Zauważyłem przy Atmega kwarc 8MHz.
    Taką częstotliwość może Atmega może wygenerować sobie wewnątrz (bez kwarcu i jego kondensatorów).
    Tyle, że nadal będzie to samo co pisałem w związku z RS232 i błędami transmisji.


    W takim razie zastosować większy kwarc? 12MHz o którym była mowa?

    Dodano po 1 [minuty]:

    Czy od strony USB już teraz jest wszystko w porządku po wprowadzeniu poprawek?

    Oczywiście w tej chwili usunąłem kwarc przy RFM oraz antenę odłączyłem od VCC
  • Moderator na urlopie...
    Jeszcze musisz pociągnąć odpowiednią nogę rfm12b żeby aktywowac bufor fifo.
    I zrób 6-cio pinowe złącze isp do programowania, bo to nie lata 90-te gdzie trzeba było przekładać układy do programowania.
    Podłączenie ft232rl to coś ala self powered - podciagnij tak czy siak ten reset - to dobry nawyk i eliminuje problemy.

    Dodano po 1 [minuty]:

    Co do fifo ok, masz już nfss podłączone
  • Poziom 39  
    FT232RL wygląda w porządku. Atmega też. Zamień tylko kwarc na jeden z tych - które podałem. Jeśli chcesz łączyć się z tym urządzeniem z prędkością 9600 bodów - wtedy możesz nawet zrezygnować z kwarcu i kondensatorów (C4 i C5). Ja bym jeszcze dał rezystor 10k między pin 16 Atmegi (sterujący nSEL'em RFM12B) a VCC (3,3V) - celem podciągnięcia do "H". Wtedy masz pewność że jeśli Atmega nie wystawi nic na ten pin - RFM12B jest zablokowany.
    Nie wiem jak z pozostałymi pinami RFM12B - czy mogą "wisieć w powietrzu" - to musisz doczytać z dokumentacji.
  • Moderator na urlopie...
    Z podciaganiem cs rfma masz racje, co do reszty pinow rfm z tego co pamiętam mogą wisieć w powietrzu.
  • Poziom 8  
    piotrva napisał:
    Z podciaganiem cs rfma masz racje, co do reszty pinow rfm z tego co pamiętam mogą wisieć w powietrzu.


    CS to który dokładnie pin na moim schemacie?
  • Poziom 8  
    Uwzględniłem wszystkie poprawki dotyczące mojego schematu:

    ATmega8 + FT232RL - zasilanie napięciem 3.3V

    Czy został prawidłowo podciągnięty reset? (korzystałem z dokumentacji FT232RL)

    Czy pin 16 łączący się z nSEL'em RFM jest prawidłowo połączony?
  • Poziom 39  
    stardamos napisał:
    Czy został prawidłowo podciągnięty reset? (korzystałem z dokumentacji FT232RL)
    Ja bym go zostawił niepodłączonego.
    W dokumentacji jest napisane
    Cytat:
    Active low reset pin. This can be used by an external device to reset the FT232R. If not required can be left unconnected, or pulled up to VCC.

    Nigdy nie spotkałem się z problemami - a nie podłączałem tego pinu nigdy!
    Podłączenie pull-up i jednocześnie pull-down, które zastosowałeś jest złe!
    Zwłaszcza, że sztucznie wymuszasz potencjał 5*10/14,7 = 3,4 V.
  • Poziom 8  
    Ok w takim razie usuwam ze schematu

    Dodano po 4 [minuty]:

    W takim razie reszta jest w porządku i mogę zacząć projektować płytkę PCB?
  • Poziom 39  
    Ewentualnym dodatkiem może być wpięcie bezpiecznika SMD 0.3-0.5A w linię VBUS (5V) bezpośrednio przy USB.
    Zabezpieczy to nieco komputer przez zwarciem zasilania 5V (a często to się może zdarzyć).
    Możesz też dodać dodatkowo w tym miejscu dławik (jak zalecają w FTDI).
    Dodatkowo - jeśli chcesz widzieć że UART działa - możesz wykorzystać piny CBUS0..1 do podłączenia diód LED (z rezystorami) pamiętając o ustawieniu sygnalizacji transmisji na tych liniach w FT232RL programem FT_PROG.
    Bezpiecznik wstaw - koszt bezpiecznika SMD to pare groszy - a koszt zasilacza PC - to stówka, lub więcej.
    Pamiętaj, że maksymalnie port USB 1.0/2.0 ma wydajność prądową 500 mA.
  • Poziom 8  
    Gdzie mogę taki program nabyć?

    I kiedy go wykorzystać?
  • Poziom 39  
    Program pobierasz ze strony FTDI http://www.ftdichip.com/Support/Utilities.htm
    Pamiętaj też o sterownikach :) W końcu to normalne urządzenie USB (ze strony PC'ta).

    stardamos napisał:
    I kiedy go wykorzystać?

    Programem tym zmieniasz parametry (i między innymi funkcje bitów CBUSx) - ale oczywiście z sensem.
    Nie ruszaj VID i PID - mają być takie - jakie są.
    Opis programu - na stronie FTDI.
  • Poziom 8  
    Myślę że ograniczę się do zmiany parametrów tylko na ustawieniu sygnalizacji transmisji.

    Dodano po 15 [minuty]:

    mickpr napisał:
    Ewentualnym dodatkiem może być wpięcie bezpiecznika SMD 0.3-0.5A w linię VBUS (5V) bezpośrednio przy USB.


    Czy może być to zwykły bezpiecznik, a nie SMD? Ciężko mi znaleźć bibliotekę do altiuma.
  • Poziom 39  
    stardamos napisał:
    Czy może być to zwykły bezpiecznik, a nie SMD? Ciężko mi znaleźć bibliotekę do altiuma.
    Jeśli już nie chce ci się rysować - dopasuj jakiś element, choć wiem, że rysowanie elementów (schamatowych i pcb) to równie dobra zabawa jak rysowanie schematów. Wstawianie zwykłego bezpiecznika mija się z celem.

    Mała dygresja - w jakim standardzie robisz płytkę - skoro:
    1. FT232RL jest tylko w obudowie SMD,
    2. Chcesz programować Atmegę w zewnętrznym programatorze (więc pewnie w obudowie DIP (THT)). Posłuchaj kolegi piotrva i mnie - i wstaw złącze ISP.
    3. Bezpiecznik chcesz dać zwykły...
    4. Płytka RFM128 masz w standardzie SMD - choć tutaj akurat można dolutować piny - więc wtedy będzie standard THT.

    To trochę mija się z celem.
    Zrób od razu wszystko w SMD.
    Naprawdę prostsze niż THT - choć wygląda początkowo na trudniejsze.
  • Poziom 17  
    I oczywiscie Atmega8 w wersji L :)


    Napisze jeszcze że RFM12B jest BARDZO czuły na tętnienia zasilania, Spada mu zasieg a jak przekroczą pewien próg to wogóle traci komunkacje. Tak że jak bedziesz chciał zasilić to ustrojstwo z jakiejś przetworniczki impulsowej np. z baterii to oscyloskop jest podstawą i dobranie odpowiedniej filtracji zasilania bo potem sie mogą cuda dziać i spedzisz poł dnia myśląc co jest nie tak ze nie działa albo raz chodzi raz nie...
  • Poziom 39  
    wojekkk napisał:
    I oczywiscie Atmega8 w wersji L

    Masz rację.
    ...albo w wersji A... w wersji V chyba Atmega 8 nie występuje , jedynie jej młodsza siostra Atmega 88 :)