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

Pomiar temperatury ds18b20 - rs232 + konwerter USB

Jufo 03 Gru 2010 00:13 13953 21
  • #1 8819148
    Jufo
    Poziom 14  
    Witam, chciałbym sie dopytać bardziej doświadczonych forumowiczów, czego taka prosta rzecz nie chce mi działać. Mianowicie zakupiłem konwerter USB-rs232 oparty o znany chip FT232 RL i prosty schemat połączenia czujników ds18b20 po rs232 i sobie wymyśliłem że to razem połączę i będzie działać, a nie chce.
    Pytanie, jakie są pomysły żeby to uruchomić, potrzebuje tego i stoję w miejscu. W załączeniu trochę zdjęć. Może napięcie pracy wejść / wyjść TTL przestawić z 3,3V na 5V. Z góry dziękuje za wszelką pomoc Robert

    Pomiar temperatury ds18b20 - rs232 + konwerter USB
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Update: 03.12.10 Uklad do połączenia ds18b20 z rs232, działa prawidłowo, więc sprawa leży po stronie przejściówki, tylko czemu nie działa :/
  • #2 8822955
    maciej_333
    Poziom 38  
    Usiłujesz podpiąć DS18B20 bezpośrednio pod zaemulowany RS232. RS232 nijak się ma do 1-wire. Prawdopodobnie da się zaemulować 1-wire na tym porcie, ale wówczas trzeba nietypowo sterować takim portem. Innymi słowy należy odpowiednio sterować liniami portu tak by uzyskać emulację 1-wire. Może udać się to z fizycznym interfejsem RS232, ale konwerter zna jedynie transmisję asynchroniczną. Podobnie jest z konwerterami USB/LPT. Też nie da się zwyczajnie ustawiać linii D0...D7 na 0/1 tak jak się nam podoba (z fizycznym LPT nie ma problemu). Trzeba stosować protokół transmisji równoległej.
  • #3 8822979
    Jufo
    Poziom 14  
    Zatem co proponujesz zrobić, powiem że z miła chęcią przyjmę każde rozwiązanie aby zadziałało. Mogę jeszcze raz płytkę zrobić jeżeli trzeba jakiś układ dorobić - czy nie da się nic zrobić ? :(. Wiem że może głupie pytanie a jakbym zrobił jak to ma się w AVT2787 (http://download.avt.pl/INSTRUKCJE/AVT2787.pdf)

    P.S. doczytałem się w temacie: https://www.elektroda.pl/rtvforum/topic1707381.html
    Cytuję " Istnieje możliwość wyposażenia konwertera w MAX232 lub inną przetwornicę w celu zapewnienia kompatybilności z ogólnym standardem"
    Czy to pomoże ?

    Edit: 12:48, 04.12.10, coś znalazłem:
    MOP00202 - MODUŁ INTERFEJSU 1WIRE NA USB (CHIPSET FT232RL + DS2480B) - Urządzenie zbudowane jest na bazie kontrolera konwertera DS2480B firmy Dallas-Maxim (konwerter RS232 - 1Wire). Do konwersji ze standardu RS232 na USB zastosowano układ FT232RL firmy FTDI. Tylko jakiś schemacik (na 6 czujników) by się przydał ;)

    Zestaw avt5230 też wykorzsytuje konwerter, ale trzeba jeszcze zaprogramować pic'ka.
  • Pomocny post
    #4 8824508
    maciej_333
    Poziom 38  
    Udało mi się znaleźć bardzo ciekawy PDF Atmela. Przeczytaj go dokładnie i wykonaj wszystko tak jak tam opisano. Myślę, że pomiędzy podanym w tym dokumencie buforze (strona 3), a zaemulowanym RS232 nie koniecznie musi być konwerter poziomów - MAX232. Pokazany tam bufor wzbogaciłbym o diodę pomiędzy B a E pierwszego tranzystora. Oczywiście katoda do B, anoda do masy. Dioda ta zapobiegnie uszkodzeniu tego tranzystora w momencie pojawienia się ujemnego napięcia na TXD (dla 0 logicznego). Z kolei na RXD pojawią się poziomy TTL, które RS232 i tak bez problemu rozpozna.

    W sumie powinno działać. Początkowo możesz napisać prosty program w C++ i testować emulację 1-wire na RS232 zgodnie z podanym opisem.
  • #5 8824764
    Jufo
    Poziom 14  
    Czy powinno być jak na tym schemacie co zrobiłem ? :

    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Czy coś jeszcze mam zrobić, poza tym mam pytanie co się dzieje z DTR tak jak to było w standardowym schemacie połączenia z rs232 i ds18b20. Jakie napięcie Vcc mam podać 5V czy 3,3V ?, jaką diodę zastosować ?. Nie umiem programować (no dobra kiedyś miałem podstawy C++, ale już nie pamiętam), chciałbym się posłużyć gotową aplikacją do pomiarów ds18b20 ja kto się ma w rs232.

    Edit: 16:33, 04.12.10:
    Znalazłem cosik takiego: http://www.maxim-ic.com/app-notes/index.mvp/id/214
    co jednoznacznie wygląda na to samo rozwiązanie co zaproponowane twoje tylko na innych tranzystorach, proszę o weryfikację schematu oraz odpowiedzi na powyższe pytania.
  • #6 8825100
    maciej_333
    Poziom 38  
    Zasilanie ma wynieść +5V. Linia DTR=Data Terminal Ready nie musisz stosować tej linii. Wg. tego co napisał Atmel wystarczy RxD i TxD. To co napisano w podanym PDF ma zastosowanie dla sprzętowego UART'a mikrokontrolera, ale ze wspomnianą drobną zmianą musi działać też dla zaemulowanego RS232, bądź fizycznego w PC. Widzę, że chcesz koniecznie zasilać DS18B20 z szyny 1-wire. Można i tak, tego jednak nigdy nie próbowałem. Jeżeli zasilasz DS18B20 z szyny, to możesz mieć kłopoty, jeżeli nie trzymasz dobrze zależności czasowych. Schemat, jaki narysowałeś jest poprawny.

    Czy da radę zastosować gotowe oprogramowanie ? Może i tak, ale do końca nie wiadomo jak te implementacje działają i jakiego (w sumie prostego) układu pośredniczącego potrzebują. Do tego nie wiadomo po co tam DTR.

    Możesz sobie pobrać jakiś terminal. Polecam Realterm. Po odpowiednim skonfigurowaniu można próbować zbadać działanie całej emulacji zgodnie z opisem.

    W podanym linku na stronę Maxima jest równoważny układ na tranzystorach unipolarnych. Nawet lepiej tam wszystko opisali. Skonfiguruj port w Realterm tak jak podano na Figure 4. Następnie wyślij 0xF0 i powinieneś otrzymać 0x10...0x90, jeżeli pojawi się impuls obecności. Proponowałbym najpierw bawić się z jednym czujnikiem. To całkiem łatwo zrobić w C++. Ja też na studiach go nie miałem, bo ktoś wymyślił sobie Javę. Jednak, choć od Javy jest on trudniejszy to można się go szybko nauczyć na tyle by zrobić prostą aplikację w trybie CRT.
  • #7 8830158
    Jufo
    Poziom 14  
    Ok, dzięki za info, co do zasilenia sugerowałem się poprzednia implementacja za pośrednictwem rs232, jak sugerujesz żeby zasilić go oddzielnie proszę o schemacik bo nie do końca rozumiem koncepcji podłączenia tego inaczej, wracając do diody którą zasugerowałeś, jaką kupić by wszystko pasowało do siebie ? Jutro się przeje na WGK i kupie potrzebne elementy, jakby zadziałało to byłbym szczęśliwy.
  • #8 8830437
    maciej_333
    Poziom 38  
    Jako dioda powinna pasować dowolna przełączająca. Może to być np. 1N4148, lub nawet lepiej dioda Shotty'ego np. 1N5711. Zasilanie DS18B20 z szyny jest o tyle wygodne, że do dołączenia czujników wystarczą dwa przewody. Jeżeli chcesz zasilać czujnik osobno to musisz podpiąć pin 1 (GND) do masy, pin 2 (DQ) do szyny 1-wire, pin 3 (Vdd) do +5V. Narysowali to zresztą w datasheet.
  • #9 8830735
    Jufo
    Poziom 14  
    No tak, ja głupi nie pomyślałem co piszę ;). W załączeniu schemacik w jakiej konfiguracji jutro będę chciał to przetestować;)

    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Co ciekawego czytając artykuł dotyczący AVT2787, cytuję: "Układy pobierają prąd z końcówki DTR" - może tylko do tego jest potrzebny ten sygnał, móże ten układ będzie też dobry a jest przystosowany do RS232:

    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    A tu link do całego archiwalnego artykułu: http://download.avt.pl/INSTRUKCJE/AVT2787.pdf
  • #10 8832005
    maciej_333
    Poziom 38  
    Proponowany przeze mnie układ powinien działać. Połączenia czujników masz dobre. Radziłbym najpierw zastosować tylko jeden czujnik. Układ na dwóch tranzystorach stosuje jedynie linie RxD i TxD. Tyle wystarczy by pozyskać dwu kierunkową transmisję dla RS232 (w najprostszym przypadku). Wykonaj to i przetestuj za pomocą Realterm, lub gotowego oprogramowania. Jednak nie gwarantuję, że gotowy program zadziała.
  • #11 8836144
    Jufo
    Poziom 14  
    Nie wiem czy to można nazwać postępem, ale wygląda że jest lepiej ale nie tak do końca. Po pierwsze nie wolno oddzielnie podawać napięcia pod czujnik ds18b20, momentalnie nagrzewa się - nie wiem dlaczego, myślałem że już go spaliłem, ale na to wygląda że żyje, w przypadku ds18b20p (wersja PAR) nic się nie dzieje i nie jest wykrywany.

    Czytając o wersji PAR cytuję " Derives power from data line (“parasite power”) -does not need a local power supply", czyli co układ który zmajstrowałem podaję złe napięcie dla czujników ds18b20 ?, według specyfikacji "Can Be Powered from Data Line; Power Supply Range is 3.0V to 5.5V "to już po prostu ogłupiałem - mierząc napięcie mam 4,6 na mierniku czyli mieści się w normie.

    Do układu użyłem tranzystory bc574b a nie bc547 - nie były dostępne pod WGK, zamiast diody shotkiego 1N5711 użyłem 1n4148.

    Dobre wieści są takie że w przypadku ds18b20 jest wykrywany, widać numer seryjny ale programy pokazują dla 1 czujnika 127,500 lub 2 czujnika 127,938.

    Bardziej ucieszyłem się - przez przypadek, pomyślałem czy będzie różnica na wersji PAR i się okazało że jest! temperatura była podawana bardziej normalna ale myślę że zawyżana o jakieś +2C (a może nawet mniej, jutro to sprawdzę). Panowie co proponujecie w tej sprawie zrobić, na pewno nie jestem wstanie napisać programu, ale można coś dostroić plikami konfiguracyjnymi, albo zmienić elementy. Programy które przetestowałem to :
    - Lampomittari
    - Termo v1.0
    - Pomiar Temperatury.exe
    - iButton Viewer32 oraz x64 (iButton-TMEX)

    Systemy operacyjne: Windows XP SP3 oraz Windows 7 Professional (licencja MSDNAA).

    Screen pomiaru z ds18b20P (PAR)- temperatura na zewnątrz jakieś 2,5h temu:
    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Screen pomiaru z ds18b20 - temperatura nie zmienna w pokoju:
    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    A tu na szybkiego pająka układzik (docelowo płytka ze złączami na czujniki - 6szt):
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
  • #12 8837502
    maciej_333
    Poziom 38  
    Z pewnością można podać napięcie na pin Vdd czujnika. Zobacz to:
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
    Nie ma szansy by doszło do grzania przy poprawnym połączeniu. Sam stosowałem kiedyś DS18B20+ (większa rozdzielczość przetwornika niż w DS18B20) i zasilałem go osobno. Wszystko działało poprawnie. Wersja PAR ma możliwość zasilania tylko z szyny 1-wire i taka jest różnica pomiędzy PAR, a resztą DS. W wersji PAR pin 3 jest NC, więc nie ma sensu dołączać go do czegokolwiek. Zwykły DS, zasilany osobno też musi działać.
  • #13 8837538
    Jufo
    Poziom 14  
    I tu jest pies pogrzebany, myslalem że może czujniki są złe ale przy zwykłym podłączeniu do rs'a było ok, sprawdzałem kilka razy czy poprawnie nóżki podłaczałem i może tutaj trzeba to odwrotnie podłączyć (poprostu już głupieje, korzystałem z datasheet'a ds18b20). Test przeprowadzałem na 3 czujnikach ds18b20. A może któryś z poniższych układów będzie pasował: http://www.coolcircuit.com/circuit/rs232_driver/
  • #14 8837997
    maciej_333
    Poziom 38  
    Te układy to konwertery poziomów napięć. Zamieniają one poziomy RS232 (0-wartość ujemna, 1-dodatnia) na TTL. Nie mają tu jednak zastosowania. Jeżeli czujniki masz sprawne i połączenia poprawne, to na 99% winę za złą pracę układu ponosi oprogramowanie. Kombinowałeś z Realterm (terminal dla RS232) ? Spróbuj też odpalić układ z jednym czujnikiem.

    Ponadto co dokładnie napisali na Twoich DS18B20 ? Chodzi mi o te, które się grzały. Może w jakiś zły sposób dołączyłeś zasilanie ?

    [edit]Nie liczysz przypadkiem numerów wyprowadzeń DS od złej strony ? Z załączonej fotografi wynikałoby, że tak. GND czujnika masz odłączony, DQ masz poprawnie, Vdd masz dołączony do masy układu. W takiej konfiguracji nie dziw się, że coś się grzeje. Zobacz:
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
  • #15 8840373
    Jufo
    Poziom 14  
    Witam,

    I wszystko jasne, wszystko działa !, Okazało się że miałem racje, podłączyłem odwrotnie zasilanie niż jest podane w specyfikacji i wszystko zadziałało (wiem że to dziwnie brzmi), musi być oddzielnie zasilany ds tak jak kolega wspominał. Najlepszy programik pod słońcem to Lampomittari, który sobie nieźle daje radę. Jedyny ból to częstotliwość odświeżania pomiaru 1s x ilość czujników). Pomiar jest podawany w miarę poprawnie (muszę poszukać dobrego wzorca), jedynie tak jak pisałem czujnik ds18b20p zawyża o 2C, sprawdziłem z innym termometrem z ds18b20 nie ma problemu. Dziękuje koledze "maciej_333" za cierpliwość i pomoc bo defakto jego pomysł to strzał w dziesiątkę (wiszę Tobie piwo). Co uzyskaliśmy:
    - 1-wire za 36 zł a nie za 52 zł (allegro)
    - w pełni funkcjonalny konwerter USB do rs232, który można po rozłączeniu modułu 1-wire podłączyć jako programator np. do atmegi, itp.
    - większą kompatybilność z oprogramowaniem po rs232 (przetestowałem, każde działa), nie wiem jak się to zachowuje w innych przejściówkach 1-wire.

    W załączeniu screen:

    Pomiar temperatury ds18b20 - rs232 + konwerter USB
  • #16 8845943
    maciej_333
    Poziom 38  
    Jufo napisał:
    Jedyny ból to częstotliwość odświeżania pomiaru 1s x ilość czujników).

    Tego nie przeskoczysz - nie zależy to od oprogramowania. Jeżeli DS18B20+ ma ustawioną rozdzielczość przetwornika A/C na 12 bitów, to czas konwersji wyniesie 750ms. Cieszę się, że mogłem pomóc. Jednak pewnie faktycznie źle liczysz wyprowadzenia i dlatego odwrócenie polaryzacji rozwiązuje problem.
  • #17 8848933
    Jufo
    Poziom 14  
    Zamieszczam kilka fotek juz gotowego układu co by nacieszyć oczy:
    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Pomiar temperatury ds18b20 - rs232 + konwerter USB

    Mam nadzieje że przyda się opisany problem też innym, wydaję się bardzo fajnym rozwiązaniem.
  • #18 8849021
    Marek31415
    Poziom 31  
    Zastosowałeś połączenie termometrów w "gwiazdę". Przy małej ilości termometrów takie połączenie działa, przy większej może być problem. Producent zaleca połączenie na jednym kablu, czyli kabel od interfejsu do czujnika, od czujnika do następnego itd. Reszta OK.
  • #19 8849416
    Jufo
    Poziom 14  
    Ok rozumiem, połaczyłem tak jak na schemacie z posta 05 Gru 2010 19:29. Czyli wszystkie czujniki sa wpiete rownolegle korzystajac z jednej szyny i dodatkowo odchodzą dłusze kable do czujników. Przy 6 czujnikach bedzie już problem?, o jakich liczbach tutaj sie mówi ;)
  • #20 8849972
    Marek31415
    Poziom 31  
    Jufo napisał:
    Ok rozumiem, połaczyłem tak jak na schemacie z posta 05 Gru 2010 19:29. Czyli wszystkie czujniki sa wpiete rownolegle korzystajac z jednej szyny i dodatkowo odchodzą dłusze kable do czujników. Przy 6 czujnikach bedzie już problem?, o jakich liczbach tutaj sie mówi ;)

    Schemat ideowy nie podaje takich informacji, nie da się z niego tego "wyczytać". Obydwa połączenia są zgodne ze schematem. Co do ilości, trudno powiedzieć. Zależy od konkretnych warunków zakłóceniowych. Ten sposób połączenia powoduje zmniejszoną odporność na zakłócenia i problemy z "lokalizacją" termometrów przez interfejs. Nie mam doświadczenia z tego typu połączeniem, zawsze robię zgodnie z zaleceniami firmy Maxim-Dallas.
  • #21 8850052
    maciej_333
    Poziom 38  
    Faktem jest, że przy połączeniu w "gwiazdę" (w zasadzie to nie topologia gwiazdy, tylko magistrali) będą większe zakłócenia. Jednak przy jedynie sześciu czujnikach i niezbyt długich przewodach nie powinno być problemu. Skoro już zastosowano przewody ekranowane, to warto byłoby dołączyć ekran do masy. Aktualnie ekranowania w zasadzie nie ma.
  • #22 8850102
    Jufo
    Poziom 14  
    maciej_333 napisał:
    Faktem jest, że przy połączeniu w "gwiazdę" (w zasadzie to nie topologia gwiazdy, tylko magistrali) będą większe zakłócenia. Jednak przy jedynie sześciu czujnikach i niezbyt długich przewodach nie powinno być problemu. Skoro już zastosowano przewody ekranowane, to warto byłoby dołączyć ekran do masy. Aktualnie ekranowania w zasadzie nie ma.


    Faktycznie, w najblizszym czasie ekran podepnę do masy USB, kable mają po 2m długości, do rozwiazania wątpliwości wieczorkiem wrzuce schemat płytki ;).

    Widok od strony elementów:
    Pomiar temperatury ds18b20 - rs232 + konwerter USB
REKLAMA