Jak zasilić konwerter poziomów I2C 3,3–5 V, gdy urządzenie ma tylko 12 V, i czy zamiast stabilizatora wystarczy dzielnik napięcia?
Nie musisz wytwarzać 5 V z 12 V, jeśli po stronie magistrali są już rezystory podciągające — w układzie open-drain to one ustalają poziom „1”, więc strona wysokonapięciowa BSS138 nie potrzebuje osobnego napięcia referencyjnego [#15848937][#15849032] Jeśli jednak podciągania nie ma i naprawdę potrzebujesz 5 V, nie używaj dzielnika jako zasilania, tylko stabilizator/LDO z 12 V [#15851178] W opisywanym radiu Opla wygląda na to, że podciąganie jest w oryginalnym wyświetlaczu, a radio samo nie podciąga linii, więc po stronie ATmegi z 3,3 V może wystarczyć własne podciąganie do 3,3 V, o ile radio uzna to za stan wysoki [#15850045][#15850674] Trzeba jednak sprawdzić, czy radio poprawnie rozpoznaje poziom ACK przy 3,3 V, bo z obserwacji wynika, że „High” może wymagać ponad 4 V [#15850045][#15851018]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
Witam,
Mam urządzenie I2C, które dysponuje sygnałami w logice 5V i chcę je podłączyć do procesora AVR zasilanego 3.3V. Jak wiadomo, najprościej zastosować dobrze znany konwerter na tranzystorach BSS138. Konwerter ten potrzebuje jednak referencji 5V dla "jednej ze stron". Niestety urządzenie moje nie udostępnia na zewnątrz "sygnału" 5V tylko 12V, w związku z czym pytanie czy z tych 12V trzeba dać jakiś stabilizator by "utworzyć" referencję 5V dla konwertera, czy też wystarczy zwykły dzielnik napięcia, który z 12V da 5V? Z góry dzięki za odpowiedź...robiw
Strona wysokonapięciowa wcale nie potrzebuje napięcia referencyjnego. Jak wylutujesz rezystory podciągające po tej stronie to napięcie 5V nie będzie potrzebne.
Ale podciągające po każdej ze stron muszą przecież być? Poza tym, przypuszczam, że po stronie urządzenia, czyli po stronie 5V, te rezystory i tak są, a nie mogę modyfikować tego układu... robiw
Dodano po 20 [minuty]:
Hmm, to mnie się wydaje, że jest odwrotnie patrząc na schemat konwertera BSS138. Jeśli w urządzeniu I2C 5V są rezystory podciągające do 5V to ja nie potrzebuję ich stosować u siebie, więc nie potrzebuję referencji 5V...jeśli ich nie ma to właśnie potrzebuję? robiw
No jeżeli są w układzie to nie potrzebujesz. A zakładam że raczej są.
Jeżeli nie ma to oczywiście potrzebował byś.
Co o za urządzenie? Sprawdź czy ma te rezystory czy nie.
Swoją drogą, przez zapominalstwo, podłączyłem go (logika 5V) do ATmegi zasilanej 3.3V (linie podciągane do 3.3V)... nie mogłem nawiązać transmisji... ciekawe, czy porty wejściowe ATmegi nie ucierpiały....robiw
Hej,
DS'a nie ma, bo to zwyczajnie radio Opla (napisałem wcześniej z pośpiechu, że to wyświetlacz). Do tego radia, które ma interfejs zbliżony do I2C, chcę podłączyć zwykł wyświetlacz alfanumeryczny. Radio najprawdopodobniej nie ma na liniach SDA, SCL i MRQ (dodatkowy sygnał) rezystorów podciągających, gdyż miernik pokazuje napięcie w granicach 0.2, zaś oscyloskop "śmieci", jednak widać w tych "śmieciach" sygnał zegarowy SCL - mowa o pomiarach na samym radioodbiorniku z odłączonym, oryginalnym wyświetlaczem. Gdy wyświetlacz podłączony, przebiegi "nabierają" kształtów z logiką na poziomie 5V. Wniosek z tego, że rezystory podciągające są w wyświetlaczu. Pytanie w takim razie, czy ATmega podłączona do tego radia musi mieć konwerter, czy też zwykłe podciąganie do 3.3V (po stronie procka) wystarczy, hmm? Nie mogłem nawiązać komunikacji przy bezpośrednim połączeniu (nie mogłem "złapać" sekwencji START, wszystko zrobione na ISR'ach i ext ints) i rezystorach 3.3V, ale być może winna była funkcja ISR lub też fakt, że na jedno wejść ATmegi "szedł" sygnał 5V (informujący o załączeniu radia)... robiw
Dodano po 9 [minuty]:
...choć z drugiej strony, skoro radio nie ma rezystorów podciągających a tylko i wyłącznie zapisuje dane do wyświetlacza (poza, sygnałem ACK, który musi przeczytać) to takie podłączenie bez konwertera ATmegi zasilanej 3.3V z rezystorami po stronie ATmegi podciągającymi do 3.3V powinno w zupełności wystarczyć...robiw
No jeżeli radio tylko wysyła to powinno wystarczyć podciągnięcie do 3.3V.
Oczywiście pod warunkiem że 3.3V będzie przez radio odczytywane jako stan wysoki, bo inaczej mogą być problemy z odczytem bitów ACK.
Może to nie jest kompatybilne z I2C?
Jest wiele wersji żeby obejść patent na I2C.
Jak masz oscyloskop cyfrowy to wstaw kawałek sczytanej komunikacji z oryginalnym wyświetlaczem.
Tak sobie obserwuję od miesięcy Twoje zmagania... Do radyjek bez wyświetlaczy od lat są emulatory na PC. Możesz z nich podejrzeć interfejsy bo schematy są ogólnodostepne. Transmisja chyba też nie jest tabu Mam całą kolekcję tych programów, ale każdy można znaleźć w sieci.
Niemniej interfejs możesz odgapić.. Jeśli podłączasz to prosto do procka a nie do PC to pewnie bufory nie są potrzebne... niveasoft
PS. Tak w ogóle to zabierasz się do tego jak pies do jeża - wpisz w Google "Opel TID protocol" i zobaczysz że nawet dzieci w Arduino mają to już rozpykane Sens to by miała może jakaś apka na Androida - coś chyba skrobnę jak będę się nudził , ale to się zdarza rzadko
Oj bardzo słabo obserwujesz . Przez ostatnich kilka lat "popełniłem" kilka układów, które współpracują z TID-em (wyświetlaczem Opla) i nie miałem z tym jakiś większych problemów:
Sterownik klimatyzacji Opel TID (2007), TID-termostat (2008) i TIDex (2013)...także ostatnie miesiące nie mają kompletnie znaczenia. Tym razem, jednak, chcę TID'a zastąpić zwykłym LCD alfanumerycznym, czyli jest to działanie w drugą stronę...stąd pytanie o interface...
atom1477 napisał:
No jeżeli radio tylko wysyła to powinno wystarczyć podciągnięcie do 3.3V.
Oczywiście pod warunkiem że 3.3V będzie przez radio odczytywane jako stan wysoki, bo inaczej mogą być problemy z odczytem bitów ACK.
Hmm, bity ACK to przecież ściągnięcie SDA do ZERA, więc wartość napięcia, do którego podciągana jest linia SDA nie powinna mieć w zasadzie znaczenia. Co zaś się tyczy samego protokołu to już bardzo dawno temu Dario Carluccio dokładnie go opisał:
...co znaczyłoby, że te 3.3V nie wystarczy i potrzebne jest podciąganie do 5V...no, ale to są jego obserwacje...które nie dają 100% pewności, bo zdarzyło mi się, że moje układy pewnych typów TID'a nie chciały obsłużyć - tych bardzo starych, pewnie to kwestia timingów.
Moje zrzuty transmisji pomiędzy radiem a TID'em wyglądają następująco (Salae), co potwierdza poniekąd ustalenia Dario:
Sekwencja Power On Test - po włączeniu radia (sygnał AA staje się równy 12V) - służąca sprawdzeniu magistrali:
Początek transmisji (TID potwierdza swoją obecność poprzez ściągnięcie SDA po trzecim ściągnięciu MRQ do ZERA):
I obrazek, który potwierdza fakt, iż Slave (wyświetlacz TID) potwierdza każdy bajt (adres, czy bajt danych) niezależnie od tego, czy jest adresowany do niego (czy zgadza się adres):
Także protokół znam, choćopracowanie Carluccio, mimo, że bardzo cenne nie jest 100% pewne... jednak zapytanie w tym wątku dotyczyło zupełnie czegoś innego... konwertera i potrzeby podciągania... Generalnie "odpalę" mojego Slave'a (LCD zastępujący TID'a) w logice 5V a potem zobaczę, co trzeba zrobić, by działał na 3.3V. Tak naprawdę, zupełnie na szybko, jużuruchomiłem emulator TID'a na LCD...jednak działał on poprawnie (dekodował ramkę) dopóki był wpięty w transmisję (czyli do radia podłączony był TID a mój układ "obserwował" tylko dane). Po odłączeniu TIDa...przestawał poprawnie dekodować transmisję...ale soft pisałem na szybko, z ciekawości czy zadziała...
Nie ma problemu, ja nie biorę do siebie takich rzeczy . Po prostu tym razem zastanawiam się nad konwerterem, choć pewnie powinienem to sprawdzić w praktyce i nie byłoby tematu hehe. Niemniej jednak, przez skórę, czuję, że z tym interface to nie będzie tak różowo, jak opisał to Carluccio....bo TID'y mają rożnych producentów i choćby TIDex działał dotychczas każdemu...aż tu ktoś mi pisze, że u niego nie działa...podmieniamy TID'a na innego, nowszy model (na szczęście jest tani) i działa...a oryginalne radio...działa z każdym, niezależnie od tego czy stary, czy nowy i czy 8-znakowy czy 10-znakowy...no, ale Opel wie najlepiej, jak to zostało zrobione...
Także póki co, emulator działał (soft zrobiony na ISR'ach dla każdego z sygnałów: SDA, SCL, MRQ i AA)...ale do czasu dopóki tylko nasłuchiwał transmisji pomiędzy radiem a TID'em...no i dopóki był na 5V... Swoją drogą te emulatory programowe na PC-tanie mają otwartego kodu? robiw
Hmm, bity ACK to przecież ściągnięcie SDA do ZERA, więc wartość napięcia, do którego podciągana jest linia SDA nie powinna mieć w zasadzie znaczenia.
Miałem na myśli bit ACK w sensie numeru bitu w ramce (ACK/NACK) a nie konketnie ACK (że nie NACK).
Czyli podciąganie będzie miało znaczenie gdy akurat będzie transmitowany bit przy którym zwieranie do masy jest wyłączone.
robiw napisał:
http://wiki.carluccio.de/index.php/Opel_TID
Co prawda pisze tutaj, że:
Spannung für High: >4V
Spannung für Low: <1V
Może wystarczyło by dać diody 1N4148 w szereg z liniami SCL i SDA.
Wtedy stan niski za diodą zostanie podniesiony z 0.0V do 0.7V, a stan wysoki z 3.3V do 4.0V.
No to równolegle do tych diod inne diody antyrównolegle (najlepiej Shottky'ego).
Choć to chyba i tak nic nie da bo i tka trzeba rezystory podciągające do szyny 5V której nie ma.
Chyba bo nie rozumiem jak to ma być podłączone.
Miało być do wyświetlacza. Potem powiedziałeś że do radia.
No ale radio nie odbiera tylko wysyła.
Więc już nic nie rozumiem.
Narysuj co do czego ma być podłączone, kto do kogo ma wysyłać, i gdzie są jakie napięcia i czy są rezystory podciągające.
Robię emulator oryginalnego wyświetlacza TID. Radio wysyła dane do tego wyświetlacza, tylko i wyłącznie, wyświetlacz tylko wystawia ACK (nie wysyła żadnych danych). Oryginalny wyświetlacz (TID) pracuje w logice 5V, więc jak jest podłączony do radia to wszystkie sygnały są w logice 5V, bo jak sprawdziłem sygnały niepodłączonego radia (SCL, SDA, MRQ) nie sądo niczego podciągnięte. Ja chcę do radia podłączyć wyświetlacz alfanumeryczny na 3.3V...robiw
A tak z ciekawości zapytam dlaczego nie zrobisz drugiego i2c programowego? Bedziesz miał interfejs sprzętowy do radia wylacznie, a programowy do LCD. i nic Ci się nie pogryzie. ponizej kod Petera Fleury.
Po co miałbym robić 2 interfejsy skoro zwyczajnie do radia (zmodyfikowane I2C Opla) chcę podłączyć ATmegę, by na zwykłym LCD wyświetlać przesłane przez radio dane? r
Czyli robisz 2 urządzenia (interfejsy) na raz?
Z radia do uC na 5V. I tu nic nie trzeba konwertować.
I z uC 5V do LCD na 3,3V. Tu też nic nie trzeba specjalnie konwertować bo w dół jest łatwiej (wystarczy podciąganie do 3.3V zamiast do 5V) a do tego można olać sprawdzanie ACK skoro na uC sami piszemy kod. Ewentualnie być może się da jeżeli ta ATMega wykrywa 3.3V jako stan wysoki (zależy jaka o ATMega).
Czyli problem nie istnieje chyba że czegoś dalej nie rozumiem.
Czyli problem nie istnieje chyba że czegoś dalej nie rozumiem.
Chyba niezbyt jasno tłumaczę. Mamy radio Opla, które nadaje w specyfikacji podobnej do I2C (wcześniej załączyłem stosowne linki i przebiegi): sygnały AA, MRQ, SDA, SCL. Typowo, radio to współpracuje z wbudowanym, dedykowanym wyświetlaczem ()TID, który to linie SDA, SCL, MRQ podciąga do 5V. Wyrzucam ten wyświetlacz i chcę podłączyć do tego radia ATmegę zasilaną z 3.3V, która to obsługuje własny, wbudowany wyświetlacz LCD (też zasilany 3.3V), na którym chcę wyświetlać dane z radia otrzymane przy udziale tej magistrali. Do obsługi linii AA, MRQ, SCL i SDA wykorzystuję w ATmedze przerwania zewnętrzne... Radio wyłącznie wysyła dane do wyświetlacza, nic nie odczytuje z niego, poza sygnałem ACK...robiw
Po co miałbym robić 2 interfejsy skoro zwyczajnie do radia (zmodyfikowane I2C Opla) chcę podłączyć ATmegę, by na zwykłym LCD wyświetlać przesłane przez radio dane? r
Ponieważ z tego co zrozumiałem i2c opla gryzie się z wyświetlaczem. A tak separujesz interfejsy od siebie. Jednym interfejsem robisz sobie z radiem co chcesz (jaki by to nie byl i2c oplowski), a drugim wysyłasz do LCD. Nie mają szans się pokłócić.
Jak jest podłaczone radio do atmegi? Poprzez sprżetowy I2C czy tez poprzez piny i recznie je czytasz? Z Twojego postu rozumiem że poprzez sprzętowe I2C. Jak obsługujesz czytanie (przerwania, czy w pętli to już jest drugorzędne).
✨ Użytkownik poszukuje sposobu na zasilenie konwertera I2C z 12V do 5V, aby połączyć urządzenie I2C z logiką 5V z procesorem AVR zasilanym 3.3V. W dyskusji poruszono kwestie dotyczące podciągania linii SDA i SCL oraz konieczności użycia stabilizatora lub dzielnika napięcia. Ustalono, że jeśli w urządzeniu I2C są rezystory podciągające do 5V, to nie ma potrzeby ich stosowania po stronie procesora. Użytkownik planuje podłączyć wyświetlacz alfanumeryczny do radia Opla, które wysyła dane, a nie odbiera. Wskazano, że ATmega może działać na 3.3V, o ile radio akceptuje ten poziom jako stan wysoki. Dyskutowano również o możliwościach użycia diod oraz LDO do konwersji napięcia. Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.