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

[ATmega32] Połączenie mikrokontrolera 5V i układu na 3V

Piotrek.pxf 14 Paź 2009 04:22 3677 11
  • #1 7126186
    Piotrek.pxf
    Poziom 27  
    Chciałbym połączyć mikrokontroler ATmega32 z układem transceivera radiowego nRF2401 (a dokładniej modułu TLX2401 firmy eMOD). Problem polega na tym, że ATmega pracuje z napięciem 5V, a układ radiowy z 1,9V do 3,6V. Potrzebuję jakiegoś układu translatora napięcia 5V<->3V, tylko niestety dwukierunkowego - na linii DATA dane przesyłane są w dwóch kierunkach. Proszę o jakiś schemat lub poradę jak to zrobić. Wersja z użyciem mikrokontrolera ATmega32L zasilanym 3V odpada, gdyż inne elementy urządzenia pracują na 5V.

    Pliki PDF:
    Układ nRF2401
    Moduł radiowy TLX2401
    Opis połączenia układu nRF2401 z mikrokontrolerem przez interfejs SPI
  • #3 7126391
    Piotrek.pxf
    Poziom 27  
    Dziękuję, ale ten układ chyba się nie nadaje do tego zastosowania: po pierwsze to jest on przystosowany do napięć 1,2V, 1,5V, 1,8V, 2,5V i 3,3V, a absolutnym maksimum zasilania jest 4,6V. Mnie potrzeba 5V. Po drugie to jakoś nie widzę go w cennikach sklepów internetowych, więc zapewne tym bardziej nie znajdę go w tradycyjnym sklepie. Ma ktoś jakiś inny pomysł?
  • #4 7126562
    Alchemik84
    Poziom 14  
    Proponuje 2 kostki:
    74LVC245 lub 74LVC244
    Jedną zasilamy z 3,3V i będzie pracowała w kierunku ATMEGA->tranciver
    Drugą zasilamy z 5V i będzie pracowała w przeciwnym kierunku
    Jeżeli oczywiście potrzebujesz transmisji dwukierunkowej. W przeciwnym wypadku wystarczy jeden scalak.
  • #6 7127070
    arnoldziq
    VIP Zasłużony dla elektroda
    Tak na prawdę to potrzebujesz tylko zmienić napięcie, gdy wysyłasz dane z 5V->3V, w drugą stronę Atmega da sobie spokojnie radę.
    Do tego możesz użyc np. : 74LVX08 - LOW VOLTAGE CMOS QUAD 2-INPUT AND GATE WITH 5V TOLERANT INPUTS - STMicroelectronics
  • #7 7131109
    Robin-99
    Poziom 11  
    Witam,
    Moim zdaniem najprosciej jest zastosowac Atmege32L, ktora ma mozliwosc pracy w zakresie napiec 2.7-5.5
    Pozdrawiam

    Pisze w edycji, poniewaz cos sie chrzani i nie moge odpowiedziec poprzez przycisk "odpowiedz" (wywala mnie na glowa stone forum!!)

    atom1477:
    Faktycznie nie doczytalem.

    Jak napisal arnoldziq, w kiedunku 3V->5V, ATmega powinna zinterpretowac 3V jako logiczna '1'. Chociaz jest to juz na granicy wejscia w stanie wysokim, ktore dla Atmegi wynosci 0.6Vcc dla wszystkich portow oprocz XTAL i RESET, wiec dokladnie 3V. Ale z noty wynika ze uklad tlx moze byc zailany do 3.6V, wiec wystarczy podciagnac napiecie zasilania i problem "granicy" znika.
    W odwrotnym kierunku na jednej linii wystarczy zatosowac rezystor i diode shotkiego (ze wzgledu na maly spadek napiecia przewodzenia) jak na rysunku.
    Problem pojawia sie w przypadku linii dwukierukowej, gdzies czytalem o rozwiazaniu z dioda zenera, ale nie moge sobie przypomniec.
    Pozdrawiam
  • #8 7131230
    Konto nie istnieje
    Poziom 1  
  • #9 7133657
    pol1111
    Poziom 12  
    Miałem podobny motyw z podłączaniem transreceivera rfm12b (o max napięciu zasilania 3,8V) do atmegi32 (na 5V).

    Można zrobić to bez używania dodatkowych układów. Wystarczą 2 diody prostownicze, kilka oporników 120Ohm i tyleż samo diód zenera (w moim przypadku na 3V6)

    W załączniku dorzuciłem przykład takiego podłączenia. Napięcie zasilające przypinasz przez diody prostownicze. Na krzemowej odkłada się 0,7V. Czyli na dwóch około 1,4V. Co daje na wejściu transreceivera ok 3,6V czyli tyle ile miało być
    [ATmega32] Połączenie mikrokontrolera 5V i układu na 3V

    Połączenia komunikacyjen zabezpieczasz opornikiem po stronie uC i za nim diode zenera. Robisz tak tylko na liniach wejściowych do tego modułu komunikacyjnego. Na wyjściach z niego nic nie musisz dawać. Atemega rozpoznaje 1 ligiczną coś ponad 2,5V, więc jak będzie dostawała 3,6 to będzie ok. W drugą stronę (na kierunku uC -> rfm) robisz tak jak opisałem powyżej. Na tym przykładowym schemacie pin SDO na module komunikacyjnym to wyjście z niego i jest podpięte bezpośrednio do pinu uC. A SDI to wejście do rfm'a i jest podpięte pzez opornik i zenera. Oczywiście nie am tu wszystkich połączeń niezbędnych do komunikacji tego akurat transreceivara z atemgą, ale chodzi tylko o sposób postępowania.

    Działa mi to stabilnie, nawet jak jest włączone przez kilka godzin. Jak podpinałem wcześniej bez żadnych zabezpieczeń to po jakimś czasie rfm się palił.
  • #10 7138361
    Piotrek.pxf
    Poziom 27  
    Dziękuję wszystkim za odpowiedzi.

    Sprawdziłem jak to jest z tym stanem wysokim na ATmega i rzeczywiście nota katalogowa podaje 0,6*Vcc, ale to jest minimalne gwarantowane napięcie przełączające w stan wysoki. Pokusiłem się o sprawdzenie tego na kilku AVR'ach i wyszło, że w praktyce stan wysoki zaczyna się od ~1,7V. Nawet jeśli się trzymać ściśle dokumentacji, to mogę zasilać mój układ napięciem 3,3V i będzie się wszystko zgadzało.

    Jeszcze raz podaję link z opisem podłączenia nRF2401 przez SPI. Skoro AVR będzie "rozumiał" napięcia 3,3V to chyba można zastosować diody zenera, tak jak to pol1111 napisał.

    Zrobiłem taki schemat (to co czerwone jest dorysowane przeze mnie):
    [ATmega32] Połączenie mikrokontrolera 5V i układu na 3V
    Czy to będzie działało?
    I czy można by to zrobić po prostu na rezystorowych dzielnikach napięcia?

    Może głupio się tak dopytuję, ale moduły TLX są (jak na moją kieszeń) przeraźliwie drogie i gdybym je spalił cały projekt by poszedł na zmarnowanie.
  • #11 7139117
    tmf
    VIP Zasłużony dla elektroda
    Diody zenera sa raczej niepotrzebne - nie wiem jak dziala ten modul radiowy, ale jesli to sa wejscia do scalaka to kazdy ma a)zabezpieczenia na wejsciach, b) pasozytnicza diode na strukturze, tak wiec jesli tylko wstawisz rezystory ograniczajace prad to napiecie samo sie zbije do 3V3+0V6 spadku na diodzie. Dzielnik rezystorowy jak najbardziej mozesz zastosowac. Tu tylko mala uwaga - poniewaz to jest SPI wiec potencjalnie mozna to taktowac dosyc wysoko, nie wiem jaka masz szybka transmisje, ale jesli to jest kilka-kilkadziesiat MHz to taki pasywny konwerter moze sie nie wyrabiac. I ten rezystor do MIS(O?) jest niepotrzebny.
  • #12 7140075
    Piotrek.pxf
    Poziom 27  
    Te rezystory 10k podał producent układu (w tym linku co podałem), więc chyba nie są niepotrzebne. To nie jest tak do końca standardowe SPI, bo jak widać jest tylko jedna linia DATA zamiast dwóch MISO i MOSI. Rezystory chyba służą do tego, żeby te dwie linie sobie wzajemnie nie przeszkadzały.

    Więc na każdej linii od MCU do radiowego dam dzielnik złożony z rezystorów 2k i 3,3k, a na linii data za rezystorami 10k dam 15k do masy (żeby utworzył z 10k dzielnik). Tak będzie dobrze?
REKLAMA