Goto page 1, 2, 3 Next
Robbo
Guest
Sun Oct 11, 2015 10:59 am
Witam uprzejmie.
Na obrazku przedstawiam przebiegi transmisji RS485 zrealizowanej przez mój
układ.
http://s26.postimg.org/esnm54kqx/rs485.png
Sondy logiczne (dolny obrazek) podłączone był bezpośrednio do nóżek
mikrokontrolera ATmega16.
Sonda analogowa (górny obrazek) była podłączona do zacisków A i B magistrali
RS485.
Obydwa przebiegi (obrazek górny i dolny) zdjęto oddzielnie (przy dwóch
różnych transmisjach, ale z identycznymi danymi) -- układ ma separację
galwaniczną.
Parametry transmisji: 19200 8N1
Układ posiada separację galwaniczną (3 transoptory dla: odbioru, nadawania,
zmiany kierunku).
Na wejściach diody Schottky SA16C.
Zastosowano układ MAX485ECPA.
Mikrokontroler ATmega16.
Kabel LAPPKABEL UNITRONIC BUS LD 2x2x0,22 o długości 85 metrów, zwinięty w
krąg.
Na zaciskach A i B magistrali RS485 założono rezystory 120om, w obu
urządzeniach.
Podłączono linie A, B i C.
Ekran wisi w powietrzu.
Układ działa w ten sposób, że wysyła 83 bajty, a następnie czeka na odbiór
(odbiera 8 bajtów).
Na przebiegach pokazano moment, gdy wysyłanie kończy się i następuje odbiór
danych.
Nadawanie danych przebiega prawidłowo (zdalny odbiornik otrzymuje prawidłowo
dane, z prawidłową sumą kontrolną).
Problem polega na tym, że odbiornik na początku odbiera niepożądany bajt o
wartości 0 (zero), po którym następuje dopiero właściwy ciąg bajtów,
rzeczywiście nadany przez zdalny nadajnik.
Na podstawie przedstawionych przebiegów, wydaje mi się, że jest pewna
zależność między zmianą nadawania na odbiór, a pojawieniem się stanu
niskiego na linii odbioru (co powoduje pojawienie się niechcianego bajtu o
wartości zero). Robiłem próbę polegającą na tym, że wprowadziłem pewną
zwłokę po otrzymaniu ostatniego bajtu a zmianą
nadawania na odbiór -- wtedy też zmianie sygnału przełączającego nadawanie
na odbiór towarzyszyło pojawienie się w tym samym monecie stanu niskiego na
linii odbiornika. Zatem można mieć chyba pewność, że przełączenie nadajnika
na odbiór w jakiś sposób wpływa na linię odbiornika, co jest niekorzystne i
powoduje problemy.
Proszę o pomoc w tej sprawie.
Robbo
Robbo
Guest
Sun Oct 11, 2015 1:05 pm
EKSPERYMENT 1:
Zrobiłem taki eksperyment, że w pętli nieskończonej raz ustawiam a raz
zeruję linię PD2 mikrokontrolera ATmega16.
Linia ta steruje wejściami DE-RE/ (przełączanie między nadawaniem a
odbieraniem) układu MAX485ECPA
Na oscyloskopie obserwowałem generowany przeze mnie na linii PD2 przebieg
prostokątny. Identyczny przebieg prostokątny występował na linii PD0 (odbiór
danych).
Po wyjęciu układu MAX485ECPA z podstawki, pozostał tylko generowany przeze
mnie przebieg na PD2, natomiast przebieg wcześniej występujący na PD0
zniknął.
EKSPERYMENT 2:
Przewody kabla transmisji danych podpięte są tylko do jednego urządzenia. Z
drugiej strony kabel wisi w powietrzu. Kabel ma 85metrów, jest zwinięty w
krąg.
Problem nie występuje. Sterowanie przełączaniem nadajnik-odbiornik nie
wpływa na stan linii odbiorczej mierzonej na nóżce PD0 mikrokontrolera
ATmega.
Dołączam rezystor 120om do przewodów A i B po drugiej stronie (po tej
stronie, która wisi w powietrzu). Problem pojawia się. Sterowanie
przełączaniem nadajnik-odbiornik powoduje, że taki sam przebieg pojawia się
na nóżce PD0 mikrokontrolera ATmega. Dołożenie rezystora 120om po stronie
urządzeina nie zmienia sytuacji.
?
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Robbo
Guest
Sun Oct 11, 2015 1:17 pm
EKSPERYMENT 1:
Zrobiłem taki eksperyment, że w pętli nieskończonej raz ustawiam a raz
zeruję linię PD2 mikrokontrolera ATmega16.
Linia ta steruje wejściami DE-RE/ (przełączanie między nadawaniem a
odbieraniem) układu MAX485ECPA
Na oscyloskopie obserwowałem generowany przeze mnie na linii PD2 przebieg
prostokątny. Identyczny przebieg prostokątny występował na linii PD0 (odbiór
danych).
Po wyjęciu układu MAX485ECPA z podstawki, pozostał tylko generowany przeze
mnie przebieg na PD2, natomiast przebieg wcześniej występujący na PD0
zniknął.
EKSPERYMENT 2:
Przewody kabla transmisji danych podpięte są tylko do jednego urządzenia. Z
drugiej strony kabel wisi w powietrzu. Kabel ma 85metrów, jest zwinięty w
krąg.
Problem nie występuje. Sterowanie przełączaniem nadajnik-odbiornik nie
wpływa na stan linii odbiorczej mierzonej na nóżce PD0 mikrokontrolera
ATmega.
Dołączam rezystor 120om do przewodów A i B po drugiej stronie (po tej
stronie, która wisi w powietrzu). Problem pojawia się. Sterowanie
przełączaniem nadajnik-odbiornik powoduje, że taki sam przebieg pojawia się
na nóżce PD0 mikrokontrolera ATmega. Dołożenie rezystora 120om po stronie
urządzeina nie zmienia sytuacji.
?
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Robbo
Guest
Sun Oct 11, 2015 1:41 pm
Schemat:
http://images67.fotosik.pl/1249/f6dd8a1a74fab412.png
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Mario
Guest
Sun Oct 11, 2015 1:53 pm
W dniu 2015-10-11 o 15:41, Robbo pisze:
Quote:
Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący
stanem nieaktywnym na UART.
--
pozdrawiam
MD
Robbo
Guest
Sun Oct 11, 2015 4:01 pm
Quote:
Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący stanem
nieaktywnym na UART.
Dziękuję za radę. Dziś będę to sprawdzał.
Tak na marginesie, zrobiłem jeszcze jeden eksperyment. Odłączyłem całkowicie
kabel od zacisków A, B, C. Włączyłem urządzenie. Urządzenie zainicjowało LCD
i USART, ale nie prowadzi żadnej transmisji i nie steruje wyjściami.
Oscyloskopem z analizatorem logicznym obserwuję sygnały na nóżkach PD0
(odbiór), PD1 (wysyłanie), PD2 (przełączanie nadajnik/odbiornik)
mikrokontrolera ATmega16. Początkowo PD2 jest w stanie niskim, PD1 i PD0 są
w stanie wysokim. Przykładam rezystor 120om do zacisków A i B -- powoduje to
pojawienie się stanu niskiego na PD0 (odbiór).
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Robbo
Guest
Sun Oct 11, 2015 9:13 pm
Quote:
Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący stanem
nieaktywnym na UART.
Pierwsza próba z tymi rezystorami (przy czym miałem coś rzędu 500om) nie
powiodła się. Otrzymywałem błędy ramki (frame error). Muszę jeszcze
pokombinować.
-----
Sprawdziłem inne egzemplarze MAXa.
Z ostatnio zakupionych MAX485ECPA na 2 jest źle, na 4 jest dobrze.
Mam jakiś MAX487, na którym jest źle. Mam zwykły MAX485, na którym jest źle.
Źle: przełączenie z nadawania na odbiór powoduje pojawienie się sygnału
niskiego na linii odbioru mikrokontrolera, mimo tego że jeszcze zdalny
nadajnik nie nadaje.
Dobrze: przełączenie z nadawania na odbiór nie wpływa na sygnał linii
odbioru mikrokontrolera -- pozostaje on w stanie wysokim do czasu, aż zdalny
nadajnik zacznie nadawać dane.
Teraz się zastanawiam, czy te układy są rzeczywiście uszkodzone, czy mój
układ ma problemy, żeby pracować poprawnie. Czy z Waszego doświadczenia
wynika, że z MAXami bywają tego typu problemy, czy raczej szukać przyczyn u
siebie?
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Mario
Guest
Sun Oct 11, 2015 9:47 pm
W dniu 2015-10-11 o 23:13, Robbo pisze:
Quote:
Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący
stanem nieaktywnym na UART.
Pierwsza próba z tymi rezystorami (przy czym miałem coś rzędu 500om) nie
powiodła się. Otrzymywałem błędy ramki (frame error). Muszę jeszcze
pokombinować.
-----
Sprawdziłem inne egzemplarze MAXa.
Z ostatnio zakupionych MAX485ECPA na 2 jest źle, na 4 jest dobrze.
Mam jakiś MAX487, na którym jest źle. Mam zwykły MAX485, na którym jest
źle.
Źle: przełączenie z nadawania na odbiór powoduje pojawienie się sygnału
niskiego na linii odbioru mikrokontrolera, mimo tego że jeszcze zdalny
nadajnik nie nadaje.
Dobrze: przełączenie z nadawania na odbiór nie wpływa na sygnał linii
odbioru mikrokontrolera -- pozostaje on w stanie wysokim do czasu, aż
zdalny nadajnik zacznie nadawać dane.
Teraz się zastanawiam, czy te układy są rzeczywiście uszkodzone, czy mój
układ ma problemy, żeby pracować poprawnie. Czy z Waszego doświadczenia
wynika, że z MAXami bywają tego typu problemy, czy raczej szukać
przyczyn u siebie?
Dziwne, że podłączenie rezystorów nie pomogło. W przypadku MAX485
zazwyczaj pomaga. Może odwrotnie podłączyłeś. Jak nie pomogło 5k można
zmniejszyć do 3k. Fakt, że MAXy stwarzają problemy. Lepiej dać SN75176.
--
pozdrawiam
MD
Piotr Gałka
Guest
Mon Oct 12, 2015 8:09 am
Użytkownik "Robbo" <niemam@gmail.com> napisał w wiadomości
news:561a4112$0$27508$65785112@news.neostrada.pl...
Quote:
Zastosowano układ MAX485ECPA.
Sprawdź w karcie katalogowej, czy ten scalak gwarantuje że na wyjściu
odbiornika jest 1 jak między A i B jest 0.
Jak nie gwarantuje to wszystko jasne.
P.G.
Piotr GaĹka
Guest
Mon Oct 12, 2015 8:14 am
Użytkownik "Robbo" <niemam@gmail.com> napisał w wiadomości
news:561ad0df$0$8383$65785112@news.neostrada.pl...
Quote:
Z ostatnio zakupionych MAX485ECPA na 2 jest źle, na 4 jest dobrze.
Mam jakiś MAX487, na którym jest źle. Mam zwykły MAX485, na którym jest
źle.
Źle: przełączenie z nadawania na odbiór powoduje pojawienie się sygnału
niskiego na linii odbioru mikrokontrolera, mimo tego że jeszcze zdalny
nadajnik nie nadaje.
Dobrze: przełączenie z nadawania na odbiór nie wpływa na sygnał linii
odbioru mikrokontrolera -- pozostaje on w stanie wysokim do czasu, aż
zdalny nadajnik zacznie nadawać dane.
Teraz się zastanawiam, czy te układy są rzeczywiście uszkodzone, czy mój
układ ma problemy, żeby pracować poprawnie. Czy z Waszego doświadczenia
wynika, że z MAXami bywają tego typu problemy, czy raczej szukać przyczyn
u siebie?
Nie jestem pewien i nie chce mi się sprawdzać, ale wygląda mi na to, że nie
przeczytałeś kart katalogowych tych scalaków.
Przypuszczam, że one nie gwarantują 1-ki na wyjściu gdy A=B więc zachowują
się zgodnie ze specyfikacją.
P.G.
Robbo
Guest
Mon Oct 12, 2015 9:35 am
Quote:
Dziwne, że podłączenie rezystorów nie pomogło. W przypadku MAX485
zazwyczaj pomaga. Może odwrotnie podłączyłeś. Jak nie pomogło 5k można
zmniejszyć do 3k. Fakt, że MAXy stwarzają problemy. Lepiej dać SN75176.
Chciałem dopytać, czy przy rezystorach pullup i pulldown rzędu 5k, stosuje
się jeszcze terminatory 120om? Bo wydaje mi się, że przy stosowaniu
terminatorów 120om, możliwe wartości rezystorów pullup i pulldown muszą być
mniejsze niż 750om. Pullup i pulldown 5k może być tylko bez terminatorów
120om(?)
R.
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Piotr GaĹka
Guest
Mon Oct 12, 2015 10:11 am
Użytkownik "Robbo" <niemam@gmail.com> napisał w wiadomości
news:561b7ee2$0$619$65785112@news.neostrada.pl...
Quote:
Dziwne, że podłączenie rezystorów nie pomogło. W przypadku MAX485
zazwyczaj pomaga. Może odwrotnie podłączyłeś. Jak nie pomogło 5k można
zmniejszyć do 3k. Fakt, że MAXy stwarzają problemy. Lepiej dać SN75176.
Chciałem dopytać, czy przy rezystorach pullup i pulldown rzędu 5k, stosuje
się jeszcze terminatory 120om? Bo wydaje mi się, że przy stosowaniu
terminatorów 120om, możliwe wartości rezystorów pullup i pulldown muszą
być mniejsze niż 750om. Pullup i pulldown 5k może być tylko bez
terminatorów 120om(?)
Masz rację.
Aby na 120om było co najmniej 200mV potrzeba 1,6666mA.
Jeśli do "rozciągania" użyjesz 5V to suma rezystorów (razem z tym 120om)
powinna być nie większa niż 3k.
Zakładam "rozciąganie" każdego z rezystorów 120 om osobno, na obu końcach
kabla. Jakby się chciało zrobić to z jednej strony to trzeba uwzględnić
rezystancję kabla i uzyskanie 200mV po drugiej stronie będzie wymagało
więcej jak 200mV po stronie z rezystorami.
P.G.
Robbo
Guest
Mon Oct 12, 2015 10:25 am
Quote:
Zastosowano układ MAX485ECPA.
Sprawdź w karcie katalogowej, czy ten scalak gwarantuje że na wyjściu
odbiornika jest 1 jak między A i B jest 0.
Jak nie gwarantuje to wszystko jasne.
P.G.
Napisano tam "The receiver input has a fail-safe feature that guarantees a
logic-high output if the input is open circuit."
Jeśli dobrze rozumiem, to układ powinien działać prawidłowo bez konieczności
stosowania rezystorów podciągających(?)
R.
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Robbo
Guest
Mon Oct 12, 2015 10:34 am
Choć z drugiej strony open circuit to nie to samo do idle bus condition.
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
Piotr Gałka
Guest
Mon Oct 12, 2015 12:35 pm
Użytkownik "Robbo" <niemam@gmail.com> napisał w wiadomości
news:561b8cb1$0$27520$65785112@news.neostrada.pl...
Quote:
Choć z drugiej strony open circuit to nie to samo do idle bus condition.
Dokładnie.
To oznacza, że gwarantuje 1-kę jeśli pracujesz bez rezystorów 120om na
końcach linii. Da się przy odpowiednio niskiej prędkości w stosunku do
długości kabla.
Są też scalaki, które mają fail-safe zarówno przy rozwarciu jak i przy
zwarciu linii.
P.G.
Goto page 1, 2, 3 Next