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

Dwie ATmegi i jedno źródło danych

robin_pl 22 Sie 2009 12:10 4545 20
  • #1 6920347
    robin_pl
    Poziom 12  
    Witam

    Zaczynam dopiero przygodę z elektroniką i mam problem - jak mogę podłączyć dwie różne ATmegi - Arduino - do tego samego urządzenia bez spalenia wejść i wyjścia w urządzeniu? Urządzenie zewnętrzne pracuje na 12V i chodzi o sygnał "1"/"0".
    Chyba powinienem zastosować transoptor/optocoupler?
    W podobny sposób chciałbym podpiąć się pod szyny I2C/TWI i RS232 - na początek nasłuchiwać co jest nadawane.
    Gdyby ktoś był tak miły i umieścił jakiś schemat albo linka to byłbym wdzięczny.
  • #2 6920471
    riddyk
    Poziom 20  
    Pytanie jest czy chcesz korzystać tylko z wyjść uP, czy tylko z wejść?

    Jeśli tyko z wyjść to przez tranzystor a wcześniej przez multiplekser podpinasz do urządzenia.

    a jeśli też z wejść, to przez tranzystor obniżasz napięcie, odpowiednio dobierasz rezystor bazy.

    a jednocześnie z wejść i wyjść będzie bardziej skomplikowanie więcej będzie multiplekserów.
  • #3 6920935
    robin_pl
    Poziom 12  
    riddyk napisał:
    [...]a jeśli też z wejść, to przez tranzystor obniżasz napięcie, odpowiednio dobierasz rezystor bazy.


    A mógłbym poprosić o bardziej łopatologiczną podpowiedź ;)
    Proszę też pamiętać, że chcę również nasłuchiwać na szynie I2C/TWI i RS232 - można od razu uwzględnić późniejsze nadawanie na tych szynach ;)
  • Pomocny post
    #4 6921472
    m.bartczak
    Poziom 16  
    Jeżeli znasz angielski, zajrzyj na stronę http://www.kpsec.freeuk.com/trancirc.htm, tam jest fajny rozdział dotyczący łączenia tranzystorów z układami - "Connecting a transistor to the output from an IC", razem z wzorami i schematami, zarówno dla PNP jak i NPN.
  • #5 6921911
    robin_pl
    Poziom 12  
    m.bartczak napisał:
    Jeżeli znasz angielski, zajrzyj na stronę http://www.kpsec.freeuk.com/trancirc.htm, tam jest fajny rozdział dotyczący łączenia tranzystorów z układami - "Connecting a transistor to the output from an IC", razem z wzorami i schematami, zarówno dla PNP jak i NPN.


    Dzięki ;) niby znam angielski ;) ale to i tak troche za dużo jak dla mnie ;) bo nie mam podstaw :( a nie chce się bawić metodą prób i błędów :(

    Więc dalej poproszę o jakąś łopatologię - coś jak najbardziej gotowego ;)
  • #7 6926465
    robin_pl
    Poziom 12  
    Przeszukałem sieć pod kątem transoptorów i znalazłem taki opis:

    http://wkretak.pl/readarticle.php?article_id=17

    Dwie ATmegi i jedno źródło danych

    Jaką wartość powinien mieć R1 przy założeniu, że układ wejściowy pracuje na 12V?

    Po "prawej" stronie - wywalam przekaźnik K1 a masę podpinam do wejścia ATmegi/Arduino?
    Czy może mogę wyjście 3 transoptora podpiąć od razu do ATmegi/Arduino bez oporników i tranzystora?

    Z tego co znalazłem w sieci to 4N25 powinien wyrobić się nawet z "nasłuchem" RS232 i I2C/TWI?
    http://www.tme.eu/transoptor-5k3v-vio_2k5v-70v-ctr20-dip6/arts/pl/a06/4n25.html

    Dodano po 31 [minuty]:

    m.bartczak napisał:
    Jeżeli znasz angielski, zajrzyj na stronę http://www.kpsec.freeuk.com/trancirc.htm, tam jest fajny rozdział dotyczący łączenia tranzystorów z układami - "Connecting a transistor to the output from an IC", razem z wzorami i schematami, zarówno dla PNP jak i NPN.


    Poczytałem jeszcze raz ... tylko nie bardzo rozumiem stwierdzenie:
    "The two power supplies must be linked, normally this is done by linking their 0V connections. In this case you should use an NPN transistor."
    dla mnie to brzmi tak:
    "Oba źródła zasilania muszą zostać połączone i normalnie robi się to przez połączenie 0V. W tym wypadku należy użyć tranzystora NPN."
    Ostatnie zdanie tyczy się tego tranzystora z rysunku - czy chodzi o jakiś dodatkowy tranzystor, który należy użyć przy łączeniu 0V ?

    Dwie ATmegi i jedno źródło danych
  • #8 6944141
    robin_pl
    Poziom 12  
    Czy warto kupić coś takiego:

    Dwie ATmegi i jedno źródło danych
    http://www.futurlec.com/DC_Opto_Input_4.shtml

    czy bawić się w transoptory 6N136 - szybsze niż 4N25 - tyle, że zapewne nie obejdzie się bez tej całej zabawy z wyliczaniem oporności, prądów, itp. :(
  • Pomocny post
    #9 6956293
    kordirko
    Poziom 22  
    Cytat:
    Czy warto kupić coś takiego:

    moim zdaniem do twoich celów nie warto
    Cytat:
    nie obejdzie się bez tej całej zabawy z wyliczaniem oporności, prądów

    Cała przyjemność tkwi w tej zabawie :)

    A wracając do głównego tematu posta - jak podłączyć 2 procki do wyjścia jednego urządzenia:
    możesz użyć optoizolator, ale najprościej to zrobić układem na 1 tranzystorze i 2 rezystorach (po jednym takim układzie do każdego procka):
    Dwie ATmegi i jedno źródło danych
    Te rezystory tworzą dzielnik napięcia - jeśli na wejściu masz 12V, to dobierasz je tak
    aby przy napięciu wejścia powiedzmy od 8V "podzieliły" je tak, aby na bazie tranzystora pojawiło się 0,7V.
    Tranzystory krzemowe generalnie mają tak, że baza zaczyna przewodzić od 0,6-0,7V,
    poniżej tego napięcia jest zatkana.
    Wyliczenie jest proste i bazuje na prawie Ohma - powiedzmy że R6 damy 1K, przy napięciu 0,7V popłynie przez niego 0,7mA,
    to aby przy tym prądzie na R7 odłożyło się (8 - 0,7) V = 7,2V musi on mieć ok. 10K.
    Przy takim wyliczeniu tranzystor zacznie przewodzić gdy na wejściu pojawi się min. 8 V, i wtedy "zewrze" nogę procesora do masy.
    Kondensator jest tam dodany żeby filtrować ewentualne zakłócenia.

    Z optoizloatorem też jest sprawa bardzo podobna:
    Sięgasz najpierw do Dataszita,
    i tam jest taki parametr "Forward voltage" - napięcie na diodzie wejściowej,
    typical 1,05 - 1,3 V, maximum 1,5V.
    Bierzesz dzielnik z tego schematu co powyżej, podłączasz do wejścia LED, i liczysz
    ten dzielnik tak alby przy 10-11V na wejściu, na dzielniku (na wejściu diody) pojawiło się 1,5V (czyli najgorszy przypadek)..
    Wyjście optoizolatora (kolektor tranzystora) podłączasz do nogi procka.
  • #10 6957035
    robin_pl
    Poziom 12  
    kordirko napisał:
    Cytat:
    nie obejdzie się bez tej całej zabawy z wyliczaniem oporności, prądów

    Cała przyjemność tkwi w tej zabawie :)


    Domyślam się :) Tylko, że moją działką jest programowanie a elektronika to dla mnie niestety czarna magia :(

    Dzięki za super wykład :)

    Dwie ATmegi i jedno źródło danych

    Mam tylko jedno pytanko - co z masą układu WE?
    Bo mi się cały czas wydawało, że przecież żeby płynął prąd musi być zamknięty obwód - no a tutaj będzie chyba tak, że prąd z jednego układu będzie "przepływał" do drugiego układu - ale masy nie są połączone? Czy tak jest OK, bo prąd w obwodzie skąd pochodzi WE i tak już sobie płynie więc nic się nie stanie jak trochę go "wypłynie" przez WE ? ;)

    Gdzie mam podłączyć te 3x GND z rysunku? Do GND ATmegi czy GND układu WE?

    No i pozostaje jeszcze jedno pytanie - jaki tranzystor muszę użyć, żeby "wyrobił się" jeżeli będę chciał podpiąć się pod RS232? Zakładam, że prędkość transmisji to 9600 ew. max 19200 ... Czy może powinienem użyć transoptorów?
  • Pomocny post
    #11 6957533
    kordirko
    Poziom 22  
    Cytat:
    Mam tylko jedno pytanko - co z masą układu WE?

    Masa ze "zdalnego" układu musi być podłączona do masy "naszego" układu - bo faktycznie prąd nie popłynie :)
    Jeśli nam zależy na izolowaniu mas układów, np. w sytuacji gdy jedno urządzenie pracuje na potencjale np. 220V,
    albo jest niebezpieczeństwo że potencjały na masach są różne
    i przez drut łączący masy będzie płynął duży prąd
    - wtedy trzeba użyć optoizolatora. W tym przypadku masa WE jest podłączona
    do diody wejściowej, a masa procka - do tranzystora wyjściowego w optoizolatorze,
    i masy obu urządzeń będą odizolowane.
    Ale w przypadku RS-232 np. z portu na PC-cie można spokojnie spiąć obie masy.

    Cytat:
    Gdzie mam podłączyć te 3x GND z rysunku? Do GND ATmegi czy GND układu WE?

    GND to wspólna masa procka i układu WE

    Cytat:
    jaki tranzystor muszę użyć, żeby "wyrobił się" jeżeli będę chciał podpiąć się pod RS232?

    Jakikolwiek najmniejszy i najtańszy małej mocy m.cz. - np. BC107, ja stosuję SMD BC847 bo takie są w najbliższym sklepie
  • Pomocny post
    #12 6959328
    rpal
    Poziom 27  
    Chciałem koledze pomóc jednak czytając pierwszy post mimo wszystko nie wiem o co kolega pyta.
    Czy problemem byłoby zadanie bardziej konkretnego pytania co z czym ma być połączone i po co ?
    Jeśli ma to być prosta komunikacja we-wy to można to zrobić na różne sposoby, np. stosując bufory zmieniające logikę napięć (w tym przypadku nie ma izolacji mas układów bo nie zawsze jest to potrzebne. Jeśli takowa ma być to niestety trzeba zastosować transoptory. Ale to dopiero początek bo jeszcze trzeba obmyśleć protokół transmisji i tu jest problem bo kolega na ten temat kompletnie nic nie napisał o co mu chodzi. Zatem więcej informacji trzeba :) Pytam może mocno łopatologicznie bo na wstępie pisałeś że ma to być proste 0/1 ale potem rozwinął kolega skrzydła i wspomniał o rs232, i2c,twi a to już nie to samo .
  • #13 6959336
    robin_pl
    Poziom 12  
    rpal napisał:
    Jeśli ma to być prosta komunikacja we-wy to można to zrobić na różne sposoby, np. stosując bufory zmieniające logikę napięć (w tym przypadku nie ma izolacji mas układów bo nie zawsze jest to potrzebne. Jeśli takowa ma być to niestety trzeba zastosować transoptory. Ale to dopiero początek bo jeszcze trzeba obmyśleć protokół transmisji i tu jest problem bo kolega na ten temat kompletnie nic nie napisał o co mu chodzi. Zatem więcej informacji trzeba :) Pytam może mocno łopatologicznie bo na wstępie pisałeś że ma to być proste 0/1 ale potem rozwinął kolega skrzydła i wspomniał o rs232, i2c,twi a to już nie to samo .


    No ale czy 0/1 to nie jest część składowa RS232, I2C/TWI ? ;)
    Jak będę wiedział jak bezinwazyjnie przechwycić transmitowany strumień danych - to z rozszyfrowaniem/przekodowaniem zawartości raczej sobie poradzę ;)

    Może temat wątku był trochę pokrętny/mylący - ale nie chciałem komplikować sprawy - chodzi o to, że chcę się wpiąć pomiędzy dwa urządzenia i przechwycić to o czym między sobą "rozmawiają" ;)
    Próbowałem w innych wątkach zadać podobne pytanie - ale nikt mi nie odpisał :( więc postanowiłem zadać pytanie bardziej ogólnie ...
  • Pomocny post
    #14 6959343
    rpal
    Poziom 27  
    Teoretycznie tak tylko jak kolega przeczyta na czym polega protokół i2c to już to nie będzie takie oczywiste. Najprościej jest z rs232 bo każda linia służy do czego innego czyli jest albo wejściem albo wyjściem, podobnie jest z SPI (ale co z adresewaniem układu jeśłi jest ich więcej niż 1 ?). Natomiast w i2c sprawa się znacznie komplikuje. Poza tym podłuchiwanie transmisji jest zdecydowanie bardziej skomplikowane niż to się z pozoru zdaje. do rs232 starczy transoptor aby zapewnić separację. Podobnie z SPI tylko który transoptor wytrzyam transmisję zegara np. 8 MHz ? Trzeba zapewnić odpowiednio szybkie parametry a tutaj transpotor moze być zawodny. o i2c nawet już nie wspomnę bo linia SDA jest linią dwukierunkową i standart przewiduje lpołaczenie typu OC jak chcesz to zatem wykonac na transoptorze aby zapewnić separację ? I co najważniejsze po co ?
  • #15 6959352
    robin_pl
    Poziom 12  
    rpal napisał:
    Teoretycznie tak tylko jak kolega przeczyta na czym polega protokół i2c to już to nie będzie takie oczywiste. Najprościej jest z rs232 bo każda linia służy do czego innego czyli jest albo wejściem albo wyjściem, podobnie jest z SPI (ale co z adresewaniem układu jeśłi jest ich więcej niż 1 ?). Natomiast w i2c sprawa się znacznie komplikuje. Poza tym podłuchiwanie transmisji jest zdecydowanie bardziej skomplikowane niż to się z pozoru zdaje. do rs232 starczy transoptor aby zapewnić separację. Podobnie z SPI tylko który transoptor wytrzyam transmisję zegara np. 8 MHz ? Trzeba zapewnić odpowiednio szybkie parametry a tutaj transpotor moze być zawodny. o i2c nawet już nie wspomnę bo linia SDA jest linią dwukierunkową i standart przewiduje lpołaczenie typu OC jak chcesz to zatem wykonac na transoptorze aby zapewnić separację ? I co najważniejsze po co ?


    OK :) Wersja z podsłuchem I2C/TWI odpadła w międzyczasie - bo już mam pewność, że połączenie jednej z magistral, które chciałem podsłuchiwać nie może być I2C/TWI - jest za długie - producent systemu alarmowego sugeruje, że max. długość kabli pomiędzy urządzeniami to 500m a jeżeli chce się dalej to trzeba się skontaktować z producentem.

    Ale udało mi się ustalić - wywnioskować z napisów ;), że w najbardziej interesującym mnie module - połączenie pomiędzy elementami tego modułu - jest po RS232. Zakładam, że prędkość transmisji nie będzie zbyt duża więc transoptory powinny wytrzymać ;) A ponieważ kompletnie nie mam pojęcia jakie rozkazy wysyła element A do elementu B i co odpowiada na to element B - i kompletnie nie ma szans na uzyskanie tego od producenta ;) to chcę na początek nasłuchiwać obu linii - czyli RX i TX.
  • Pomocny post
    #16 6959725
    rpal
    Poziom 27  
    No to jesteśmy kolego w domu :)
    Rozumiem że chcesz w jakiś sposób zobaczysz co jedno do drugiego wysyła ? Zakładam że obydwa urzadzenia z racji odległości chodzą w typowym dla rs232 poziomie napięć. Użyj więc zwykłego MAX232 aby sobie to sprzęgnąć bo taki poziom napięć powinien byc na liniach "urządzenia". Różnica od normalnego zastosowania jest taka że na linie urządzania skieruj obydwie końcówki RXD bo twój szpieg ma nasłuchiwać obydwu linii a nie nadawac na nie. Wyjścia zaś TXT zakończ transoptorami i daj ich kolektory na wejście twojego szpiega. Uważam że transoptory są zbyteczne , ale cóż uparłeś się. Ponieważ twój szpieg jest nastawiony na nasłuchiwanie bo taka jest idea podsłuchu czyli bez nadawania, powinieneś miec procka z 2 uartami czyli minimum atmega64 wówczas jakoś sobie zrealizujesz swoje monitorowanie linii. Chodzi o to że RXD i TXD to w sumie linie nadawcze tylko z poziomu odbiornika i nadajnika różnie to wygląda i jedno jest wyjściem a drugie wejściem, kumasz ?
    A tak po prawdzie to najprościej byłoby podłaczyć to pod jakiego pc-ta i nie trzeba by było żadnych procków i innych pierdół.
  • #17 6962920
    robin_pl
    Poziom 12  
    rpal napisał:
    No to jesteśmy kolego w domu :)
    Rozumiem że chcesz w jakiś sposób zobaczysz co jedno do drugiego wysyła ? Zakładam że obydwa urzadzenia z racji odległości chodzą w typowym dla rs232 poziomie napięć. Użyj więc zwykłego MAX232 aby sobie to sprzęgnąć bo taki poziom napięć powinien byc na liniach "urządzenia". Różnica od normalnego zastosowania jest taka że na linie urządzania skieruj obydwie końcówki RXD bo twój szpieg ma nasłuchiwać obydwu linii a nie nadawac na nie. Wyjścia zaś TXT zakończ transoptorami i daj ich kolektory na wejście twojego szpiega. Uważam że transoptory są zbyteczne , ale cóż uparłeś się. Ponieważ twój szpieg jest nastawiony na nasłuchiwanie bo taka jest idea podsłuchu czyli bez nadawania, powinieneś miec procka z 2 uartami czyli minimum atmega64 wówczas jakoś sobie zrealizujesz swoje monitorowanie linii. Chodzi o to że RXD i TXD to w sumie linie nadawcze tylko z poziomu odbiornika i nadajnika różnie to wygląda i jedno jest wyjściem a drugie wejściem, kumasz ?

    Problemem jest to, że mam tylko Arduino, które ma jednego UART'a, który na dodatek jest wykorzystywany do połączenia z PC'tem ;) Z dobrych wiadomości - mam dwa Arduina, kupione za przysłowiową złotówkę ;) W sieci są biblioteki do softwareowej obsługi UART'a - więc jakoś można by sobie poradzić ;)
    rpal napisał:
    A tak po prawdzie to najprościej byłoby podłaczyć to pod jakiego pc-ta i nie trzeba by było żadnych procków i innych pierdół.

    No do monitorowanie - a raczej logowania tego co przechwycą Arduino(a) - chciałbym użyć PC'ta ... Ale docelowo chcę użyć Arduino jako autonomiczne urządzenie, które będzie przechwytywać transmisję i reagować w przypadku gdy pojawią się informacje monitorowane ...
    Jeżeli początkowe monitorowanie przy użyciu PC'ta było by łatwiejsze - to poproszę o przepis :)
  • #18 6966668
    rpal
    Poziom 27  
    W kwestii PC-ta to musiałbym się co nieco zastanowić i zrobić próbę co będzie gdy port COM będzie pozbawiony jednej linii nadawczej bo wysyłanie informacji ciebie nie interesuje. Jak będe miał nieco czasu to to sprawdzę. Niestety ciebie interesuje podglądanie obydwu linii czyli txd i rxd. Czyli jeden port to za mało i tzreba do tego dwa ale z tym nie kłopot bo typowy pc ma 2 szt. Zobaczysz to w terminalu ew. bedziesz musiał sobei napisać jakąś aplikację co to zobrazuje na ekranie. w drugim wariancie czyli na uC nie masz specjalnie innego wyjścia jak użyć przerwań zinmplementować sobie softwarową obsługę RS232 a wyprowadzenia od UART użyć to wysłanie tej informacji na zewnątrz. O ile dobrze pamietam to używane są tam przerwania do wykrywania bitu startu więc coś mi się zdaje że obsłuzenie 2 linii (rxd,txd) na raz może być kłopotliwe i nie wiem czy nie jest celowe zastosowanie do tego dodatkowych rejestrów przesównych co poprawi wydajności procka. Znasz w ogóle prędkość transmisji tej twojej magistrali rs232 bo to niezbędna informacja abyś sobie cokolwiek zaczął robić . Zależy od tego częstotliwość taktowania linii w twoim szpiegu ? :)
  • #19 6974195
    robin_pl
    Poziom 12  
    kordirko napisał:
    Z optoizloatorem też jest sprawa bardzo podobna:
    Sięgasz najpierw do Dataszita,
    i tam jest taki parametr "Forward voltage" - napięcie na diodzie wejściowej,
    typical 1,05 - 1,3 V, maximum 1,5V.
    Bierzesz dzielnik z tego schematu co powyżej, podłączasz do wejścia LED, i liczysz ten dzielnik tak alby przy 10-11V na wejściu, na dzielniku (na wejściu diody) pojawiło się 1,5V (czyli najgorszy przypadek)..
    Wyjście optoizolatora (kolektor tranzystora) podłączasz do nogi procka.


    Dwie ATmegi i jedno źródło danych

    Tylko, że ja chciałbym "wpiąć" się w już istniejący układ bez oporników, dzielników, itp. - żeby to było całkowicie "przeźroczyste" dla istniejącego połączenia - czyli rozpinam wtyczkę, +5V puszczam bezpośrednio, GND puszczam bezpośrednio ale już RXD puszczam przez transoptor - czyli podłączam do wejścia numer 1 a wyjście 2 podłączam do drugiej wtyczki. Odwrotnie robię z TXD. Pozostaje jeszcze piąty przewód - prawdopodobnie CTS/RTS ...

    Do 5tek transoptora podłączam +5V z Arduino a 4ki do wejść Arduino ... Czy mogę tak zrobić ?
  • #20 6976470
    robin_pl
    Poziom 12  
    Czy takie coś będzie OK ?

    Dwie ATmegi i jedno źródło danych

    kolory:
    zielony - +VCC
    czerwony - sygnał TXD albo RXD
    niebieski - masa
REKLAMA