Skocz do zawartości
SOYER

Podłaczenie czujników TMP36GT9Z

Pomocna odpowiedź

Napisano (edytowany)

Hejka, podłączyłem 3 szt ww. czujników temperatury (https://botland.com.pl/pl/czujniki-temperatury/2558-czujnik-temperatury-tmp36gt9z-analogowy-tht.html)do arduino. Każdy czujnik podłaczony skrętką UTP o długości ok. 1-2m do puszki instalacyjnej(gwiazda), a następnie pojedynczą skrętką UTP (przewodzącą też zasilanie czujników) o długości ok 6m podłączone do arduino.

Problemem jest niestabilny odczyt temperatury, odchylenia rzędu  nawet 5 stopni. 

Pytanie, gdzie leży problem? Rodzaj przewodów, ich dlugość? Może jakieś kondensatory?

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

A datasheet tego układu czytałeś? Są tam fragmenty zatytułowane "USING TMP3x SENSORS IN REMOTE LOCATIONS" i "DRIVING LONG CABLES OR HEAVY CAPACITIVE LOADS" - mogą się przydać

Edytowano przez Belferek
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Czyli 750 Om na wyjściu i 1uF między plusem i minusem....? 

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

Ogólnie taka sugestia na przyszłość, że jak coś jest "analogowe" to podłączanie tego na długich przewodach to proszenie się o kłopoty 😉 Tutaj małe zakłócenie przekłamuje całkiem odczyt temperatury, a Ty masz podłączony 2 metrowy przewód, który jak antena zbiera wszelkie śmieci z powietrza. Pewnie nawet jak ktoś podejdzie w okolice tego przewodu to już zmienią się wskazania. Tutaj lepiej sprawdziłoby się coś cyfrowego.

7 godzin temu, SOYER napisał:

Czyli 750 Om na wyjściu i 1uF między plusem i minusem....? 

Spróbuj 750R i 0,1uF (tak jak w nocie), powinno pomóc. Tylko umieść kondensator blisko czujnika, a nie po drugiej stronie obwodu.

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Faktycznie, 0.1, a ja napisałem 1uF. 

To jakie polecacie czujniki temperatury do długich przewodów. DS18B20 cyfrowe też odpadają z powodu pojemności długich przewodów.... 

Udostępnij ten post


Link to post
Share on other sites
34 minuty temu, SOYER napisał:

DS18B20 cyfrowe też odpadają z powodu pojemności długich przewodów....  

A ile Ty masz tego przewodziku... osiem metrów raptem 🙂 Powinno działać bez problemu (oczywiście na trzech przewodach, a nie na pasożytniczym). Jeśli nie - zawsze możesz w tę puszkę wrzucić jakiegoś klona Pro Mini za dychę (taniej wyjdzie niż ATmega), niech zbiera sobie dane z termometrów i pcha serialem do następnego.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Rozdział dokumentacji pt. "..remote locations" dotyczy naprawdę dużych odległości, gdzie zamieniamy sygnał napięciowy na prąd w pętli - aż takiej armaty nie trzeba w tym przypadku używać. Za to informacje o sterowaniu dużych obciążeń pojemnościowych mogą się przydać, bo właśnie filtra tu brakuje. SOYER zrób tak:

  • Przy samym czujniczku dajesz kondensator 100nF-1uF między zasilaniem a masą scalaka. Wielkość pojemności zupełnie nie jest krytyczna. Może lepiej żeby było to coś ceramicznego niż wiekowy elektrolit wyciągnięty z czeluści szuflady, choć oczywiście nowo kupiony 1uF będzie OK.
  • Po drugiej stronie masz wejście przetwornika ADC i to tutaj musisz odfiltrować śmiecie jakie weszły na kabel i które widzisz jako przypadkowe zmiany temeperatury. Do kabla prowadzącego sygnał dajesz zatem opornik szeregowo (to może być 100R-1k) i od wejścia analogowego kondensator do masy. Tutaj musisz poeksperymentować, bo wcale nie jest oczywiste jakiego typu zakłócenia widzi Twój ADC. Jeżeli są to częstotliwości radiowe (komórka, WiFi itp źródła) prostowane na którymś złączu p-n i dodające się do sygnału temperatury, to para 100R/10nF w zupełności wystarczy. Natomiast jeśli jest to raczej 50/100Hz z sieci AC, to wtedy filtr powinien być raczej spory, np. 1k/10uF. Tutaj uważaj, bo opornik szeregowy może zacząć dawać błąd gdy przez niego płynie prąd. Normalnie taka sytaucja nie zachodzi, bo wejścia ADC są bardzo wysokoomowe i prądu nie biorą, ale spory elektrolit - jeśli taki zapakujesz do filtra może swoje uA brać z upływności. A 20uA na 1k robi już 20mV co zaczyna być widać. Także - rozsądnie.
  •  Przy długich przewodach także na linii zasilania robi się niefajnie i niestety działa to w dwie strony, tj. śmiecie łapane przez kabel mogą wpływać nie tylko na czujnik, ale także przedostają się do zasilania Arduino. Bo zakładam, że po "pierwotnej" stronie masz jakiś tego typu komputerek. Tak więc tuż przy złączu przez, które wysyłasz 5V do czujnika daj jakiś nieduży opornik szeregowy, np. 33-100R. Odseparuje on paskudny kabel od Twojego Vcc a ostatnią rzeczą jaką byś chciał to zasyfienie sobie tej szyny (z której korzysta cały systemna płytce) przez coś z powietrza.

Może dla pewności narysuj i wrzuć tu schemat tego co masz zrobić z rozróżnieniem miejsc włączenia poszczególnych elementów 🙂

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Dziękuję za odpowiedzi. Postaram się wieczorem to rozrysować. Jeszcze jedno, czy będzie błędem danie tych kondensatorów 100nF-1uF, zamiast przy samym czujniki, to w tej puszce o której pisałem pierwszym poście? Nie musiałbym wyciągać wszystkich czujników, rozlutowywać... 

Udostępnij ten post


Link to post
Share on other sites

No wiesz, ktoś kto ma milion jest bogatszy od tego co ma pół miliona a zero metrów kabla jest lepsze niż jeden metr. Kondensator przy samym czujniku jest oczywiście dużo lepszy niż taki oddalony w puszce. Wstaw i oceń po wynikach. Nie wiemy ani jak te kable idą, w pobliżu czego ani co je zakłóca a fusy (takie z kawy) też nic nie mówią o Twojej instalacji. Na drugi raz zanim cokolwiek..., sam już wiesz, prawda?

Udostępnij ten post


Link to post
Share on other sites

Najlepsze, że czujniki kupiłem za Twoją namową;). Kiedyś gadaliśmy o DS i pojemności przewodów, mówiłeś po co komplikować życie cyfrówką, lepsze analogi. Kupiłem analogi choć w szufladzie leżały DSy, a tu jeszcze większy problem:))).

Ale co się nauczę to moje... 

Udostępnij ten post


Link to post
Share on other sites

OK, no to teraz wyobraź sobie co musiałbyś zrobić gdyby się okazało, że protokół czujników cyfrowych nie działa na tak długim kablu i w tych konkretnych warunkach. Tutaj dajesz po prostu głupi kondensator i opornik, które filtrują szumy poza pasmem. Wciąż są zakłócenia? To albo dajesz mocniejszy filtr analogowy albo mierzysz 100 razy co 1ms, uśredniasz i masz poprawne wyniki - zrobiłeś filtr cyfrowy. Interesuje Cię sygnał grubo poniżej 1Hz a to na pewno przejdzie po każdym kablu i jest trywialne do odseparowania od dużo szybszych zakłóceń. Protokół cyfrowy, nawet gdybyś mierzył temperaturę raz na minutę, to pasmo 1MHz lub więcej i nie mówię tu o prędkości transmisji, ale o koniecznej szybkości zboczy i składowych w.cz. takiego sygnału. Po jednym drucie masz tylko 1-wire albo jakieś egzotyki typu DHT2x i jeżeli miałbyś coś takiego przepychać przez długi kabel i nie zadziałałoby od razu, jesteś w czarnej.. dziurze. Tam impulsy muszą mieć określoną długość i odpowiednio szybko narastające zbocza i nie są to sekundy. Jakieś wzmacniacze, konwertery, dopasowanie do linii przesyłowej a wszystko w dwóch kierunkach.. i musiałbyś strzelać z armaty do wróbla. Więc nie narzekaj. Gdybyś taką nonszalancję (tu był oryginalnie inny wyraz - doceń to)  jak zrobiłeś (bez urazy) popełnił instalując swoje kino domowe i puścił sygnały audio gołymi drutami z jednego końca pokoju na drugi to po pierwszym odsłuchaniu sieci 50Hz w swoich wypasionych głośnikach wiedziałbyś co jest źle i że może warto było dać przewody ekranowane albo chociaż skrętkę. Tutaj puszczasz sygnał analogowy w którym interesują Cię miliwolty przez metry gołego kabla i dziwisz się, że dochodzi na końcu coś śmieciowego? Wyjścia analogowe nie są lepsze w ogólnym sensie, ale nie są też gorsze.Każde rozwiązanie ma wady i zalety i każde trzeba umieć zastosować, bo w obu można popełnić błędy i wtedy po prostu ono nie zadziała.Tutaj nauczyłeś się czegoś i tę lekcję na pewno zapamiętasz - to jest właśnie to bezcenne doświadczenie, którego troszkę Ci zabrakło :)

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Nie denerwuję się :). Dla mnie ta cała elektronika to jedna wielka przygoda. A naszą rozmowę wspomniałem jako anegdotę;). 

Udostępnij ten post


Link to post
Share on other sites

Ależ ja nawet z Twojego zdjęcia widzę, że się nie denerwujesz (przynajmniej z byle powodu). Wyczułem tylko, że trochę marudzisz i chciałem pocieszyć pokazując, że jakiś opornik to jeszcze nie tragedia.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Niestety w tym tygodniu nie dam rady założyć tych kondensatorów by zobaczyć różnicę... Wklejam informacyjnie wykresy z tych trzech czujników, drugi bardziej dokładny z automatycznym zakresem. 

Screenshot_20190518-144042.jpg

Screenshot_20190518-144157.jpg

Udostępnij ten post


Link to post
Share on other sites

To jeszcze kilka uwag:

1. Sprawdź, czy problemem są rzeczywiście długie kable i zakłócenia z nich pochodzące. Weź taki sam czujnik, albo nawet zrób dzielnik rezystorowy np. 2k/10k, podłącz to wprost do Arduino (Vcc, któryś pin AnalogInput, GND) i obejrzyj wyniki. Być może problem leży np. w jakości zasilania samego komputerka. Jeżeli tak to musisz raczej na tym się skupić. Albo inaczej: czy ten sam ADC, ale na innym wejściu mierzy jeszcze coś innego, np. poziom zasilania czy coś i tam wyniki są bardziej stabilne?

2. Filtr na wejściu analogowym (zamontowany tuż przy płytce Aduino) jest dużo ważniejszy niż kondensator na zasilaniu czujnika - od tego zacznij.

3. Z wykresów widać, że wyniki jakoś jednak oscylują wokół sensownej wartości, odchylenia nie są kosmiczne a trendy temperatury są widoczne i wyglądają OK. Może spróbuj zaimplementować filtrowanie cyfrowe? To wydaje się w ogóle inwestycją bezkosztową i ciekawą próbą. Masz jeszcze miejsce w pamięci procka? To zacznij od zastąpienia jednego strzału AnalogRead() np. serią np. 100 pomiarów robionych co 10ms. Wynik będzie oczywiście sumą tych próbek podzieloną przez 100. Zajmie to sekundę, ale powinno wyciąć mnóstwo śmiecia. Jeżeli podejrzewasz zakłócenia 50Hz to możesz proces skrócić do 20ms: np. 20 pomiarów co 1ms.

Spróbuj i daj znać jak poszło.

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »

×