Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - Czujnik Lm 35 /a Opornosc 10-15m(

05 Lis 2014 20:50 2019 26
  • Poziom 6  
    Witajcie i powiem odrazu mam problem.

    Mianowowicie Interesuje mnie stworzenie wlasniego Termometra skladajacego sie z 3 czujnikow temperatury oraz czujnika wilgotnosci.

    Moja idea bylo stworzenie malego sterownika ktory zczytywal by Informacje z Czujnikow i wyswietlal je kolejno na Wyswietlaczach.
    Wiec przeszlem do konkretow zaczynajac od podstaw interesowalo mnie sprawdzenie czy Czujnik temperatury na odleglosci 20cm i 10m bedzie pokazywa ta sama Temperature, niestety tutaj zaczely sie komplikacje

    Arduino - Czujnik Lm 35 /a Opornosc 10-15m(

    przewod ma dlugosc okolo 10m Ma opornosc mniej wiecej 1 Ohma nie moge zmierzyc jej dokladniej na moim multimetrze.

    drugi czujnik jest podlonczony bezposrednio pod Arduino.

    ...1*C !.. 2*C
    22.46 ! 12.25
    22.46 ! 12.25
    22.46 ! 25.74
    22.46 ! 24.51
    22.46 ! 13.48
    22.46 ! 29.82

    Kod Programu

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Prosil bym kogos o jakies pomysl jak rozwiazac ten problem.
    Przygode z elektronika zaczolem zaledwie kilka tygodni temu wiec zbyt wielkiego doswiadczenia niemam.

    Szukam jeszczce osoby ktory byla by chetna pomoc mi na dluzsza mete przy wykonaniu plytki drukowanej metoda domowa oraz jej zaprojektowaniu.

    dla chetnych podam swojego Skypa

    Sins1996

    Dziekuje :)
  • PCBway
  • Pomocny post
    Poziom 28  
    W jednym dzielisz 1024 a w drugim1224.

    Dodano po 5 [minuty]:

    Opor raczej nic nie zmieni. Masz oba czujniki przy sobie?
  • Poziom 6  
    Tak jak na zdjeciu drugi czujnik jest okolo 10 cm oddalony :) w plytce stykowej.
    Jak ja sobie to wyobrazalem.

    Podczas zmiany Temperatury otoczenia Zmienia sie Opornosc Polprzewodnika znajdujacego sie w czujniku Lm35. na kabelku od czujnika do Arduino jest to bardzo krotki dystans a kabelek ma bardzo mala oopornasc zedu kilku mili Ohm. A na tej dlugosci jest to jedkan 1 Ohm.

    temperatura_2 = (5.0 * lm35_2 * 100.0)/1224.0;

    Jedno pytanie czy w tej linijce uwzgledniana jest opornosc do Obliczenia Temperatury. ?
  • Pomocny post
    Poziom 36  
    gwenblead1 napisał:
    Witajcie i powiem odrazu mam problem.



    przewod ma dlugosc okolo 10m Ma opornosc mniej wiecej 1 Ohma nie moge zmierzyc jej dokladniej na moim multimetrze.

    drugi czujnik jest podlonczony bezposrednio pod Arduino.


    W tym przypadku jest to bez znaczenia..
    Czytając datasheet zauważ kilka znaczących tam danych:
    - szeroki zakres napięcia zasilania (4V do 30V)
    - output: Linear + 10.0 mV/°C
    -Suitable for remote applications ( nadaje się do odległych pomiarów)
    -mniej niż 60 μA pobór prądu

    Jak to nalezy interpretowac?
    - Niezależnie od napięcia zasilania (ważne aby było powyzej 4V) na wyjściu otrzymasz napięcie zależne tylko od temperatury.
    - martwi cię spadek napięcia na rezystancji przewodów.
    Przypomnij sobie prawo Ohma: - od czego zalezy spadek napięcia w przewodach?
    U= I*R ; rezystancję zmierzyłeś (ok 1 ohma - taka dokładnoś jest dostatecznie wystarczająca), pozostaje drugi parametr prąd .
    Oblicz dla ciekawości spadek napięcia na zasilaniu czujnika, którego pobór prądu jest 60 µA, a rezystancja 2-ch przewodów jest 2 ohmy (dwa przewody zasilające).

    Trzeci przewód: output do ADC; aby wyznaczy ten spadek napięcia potrzebujesz określic prąd tam płynący !!!. Czy tam w ogóle płynie prąd ?

    Ludzie często szukają przyczyn błędów w miejscu gdzie one nie występują, zakładając jednocześnie własna nieomylnośc!

    e marcus
  • Poziom 6  
    witoldwitoldowicz napisał:
    W jednym dzielisz 1024 a w drugim1224.

    Dodano po 5 [minuty]:

    Opor raczej nic nie zmieni. Masz oba czujniki przy sobie?


    Ehm co do tego tak bo zaczolem sie bawic. ale w podstawowym kodzie mialem 1024

    Dodano po 30 [minuty]:

    Dziekuje za odpowiedzi. Na jutro postaram sie zakupic jakis lepszy i dokladniejszy multimetr, moj niestety odmowil posluszenstwa a tym drugim nei jestem w stanie sie poslugiwac pokazuje prad od 0.5A.

    Tak na szybko zprawdzilem napiecie pomiedzy pinami w czujniku

    a wiec
    pomiedzy Vcc a Gnd mam 5 V
    pomiedzy Vcc a Data mam 5V
    pomiedzy Data a Gnd mam 0V
  • Specjalista - Mikrokontrolery
    Jak tak, to zobacz zlinkowany w poście #4 pdf, strona 9 i następne. Masz ten szeregowy rezystor (ewentualnie obwód RC)?
  • Pomocny post
    Poziom 28  
    Sprawdz czy niemasz zwarcia miedzy vcc a data.
  • Poziom 6  
    Arduino - Czujnik Lm 35 /a Opornosc 10-15m(

    wiec tak

    R1= U / I
    R1 = 5 / 0.050mA
    R1 = 100 Ohm.

    Czyli mam podlonczyc pomiedzy Gnd a Vout 100 Ohmowy Opornik ? :)
  • PCBway
  • Poziom 28  
    50uA czyli 0,00005 A
  • Poziom 6  
    ow dziekuje... mikro nie mili :) juz koryguje :)

    R1= U / I
    R1 = 5 / 0.00005uA
    R1 = 100 KOhm.
  • Poziom 28  
    Z tego wyglada ze nie bedziesz mogl mierzyc ujemnych temperatur ( potrzebujesz ujemne napiecie).
  • Poziom 6  
    15.14 ------15.63
    15.14 -------9.28
    15.14 -------9.28
    15.14 --------13.67
    15.14 -------14.65
    15.14------- 10.25
    15.14------ 27.83
    15.14------- 14.16
    15.14 ------24.41
    15.63------ 28.32
    15.63 -------13.18
    15.63------- 16.60
    15.63 ------15.63


    a Wiec po lewej jest czujnik nr 1 po prawej czujnik 2

    jak widac po dolutowaniu opornika 100k Ohm temperatura jesczcze dziwniej sie zachowuje.
  • Poziom 28  
    Może masz kabel przy jakimś urządzeniu który zakłóca(transformator). Kabel powinien chyba być ekranowany przy takiej długości.
  • Specjalista - Mikrokontrolery
    Spróbuj podłaczyć jak na rysunku 14 lub 17.
  • Poziom 6  
    kabel nie jest ekranowany lecz nieznajduje sie w poblizu zaklocen.

    Mam jedno pytanie jak uzyskac napiecie ujemne.

    bo jak na schemacie widac R1 trzeba podlonczyc do Punktu napiecia ujemnego a nie do Masy.
  • Poziom 1  
  • Poziom 28  
    Raczej potrzebujesz napięcia 1V (do GND) a GND jako Vss. Przetwornik AD chyba nie obsługuje ujemnych napięć.
  • Poziom 6  
    szelus napisał:
    Spróbuj podłaczyć jak na rysunku 14 lub 17.


    Zrobie tak jak kolega powiedzial zobacze jaki bedzie rezultat.

    Bardzo dziekuje za odpowiedzi:)

    Bede testowal na biezaco az sie uda :) ostatecznie czujnik ma funkcjonowac na odleglosc do 30m :) Wiec zobaczymy.

    Co do napiecia ujemnego nie mam pojecia jak to zrobic widze ze tutaj kolega napisal mniej wiecej jak to samemu zrobic oczywiscie zaczne szukac informacji i postaram sie to czarna magie pojac :)

    Dodano po 50 [sekundy]:

    Marek_Skalski napisał:
    To ja zaproponuję, abyś zamiast:
    Kod: C
    Zaloguj się, aby zobaczyć kod

    napisać:
    Kod: C
    Zaloguj się, aby zobaczyć kod

    I przypuszczam, że tym razem będziesz miał dziwne wyniki dla tego czujnika na płytce stykowej. A jeżeli tak, to problemem jest przetwarzanie ADC. Jeżeli zmieniasz kanał, to trzeba "chwilę" zaczekać zanim wystartujesz kolejną konwersję.
    Sprawdź proszę.

    A co do napięcia ujemnego, to prosty układ push-pull na tranzystorach, 2 diody i 2 kondensatory sterowane z uC (PWM) załatwiają sprawę. Jeżeli nie chcesz tak, to użyj ICL7660 czy innego takiego.



    Co do Wypowiedzi Kolegi
    Sprawdzalem zmienilem kod i tam masz racje 1 czujnik wtedy Szaleje drugi jest okey.

    1 Czujnik 31.74 2 Czujnik 19.53
    1 Czujnik 21.00 2 Czujnik 19.53
    1 Czujnik 20.02 2 Czujnik 19.53
    1 Czujnik 14.16 2 Czujnik 19.53
    1 Czujnik 14.16 2 Czujnik 19.53
    1 Czujnik 33.20 2 Czujnik 19.53

    w Kodzie powyzej jest ustawiona co 1 delay (1000);
    zmienilem to aktualnie na delay (10000);
    lecz niestety to nic niepomoglo.
  • Poziom 1  
  • Poziom 6  
    Marek_Skalski Dziekuje za odpowiedz. mimo ze nie bylem w stanie zbyt wiele z niej zrozumiec odrazu zaczolem googlowac :)
    dowiedzialem sie co to jest ADC Automated Data Collection.
    Lecz nie mam pojecia jak napisac program w c++ aby mogl rozpisac Funkcje do Analogread w przypadku Arduino.
    Co do Vss szukam i szukam nie moge znalez. Wiem jak to ma mniej wiecej wygladac mimo tego bylo by bardzo fajnie jak by ktos mogl jakis schemat wyslac albo cos wiecej o tym powiedziec.
    co do Filtra RC tez znalazlem kila schematow no i moim zdaniem jak troche poczytalem wydaje sie sensowne na dlugiej odleglosci zastosowac taki filtr.

    Dziekuje za wszyskie odpowiedzi potraktuje to Forum oraz ten Temat jak material do Nauki
    jak widac dopiero zaczynam i too widac mam nadzieje ze nadrobie z cazsem.

    A wiec mial bym jeszcze pytanie co do RC.
    1.
    Czy taki Filtr daje sie na

    poczatku
    koncu
    Srodko czy
    to nie gra roli ?
    Arduino - Czujnik Lm 35 /a Opornosc 10-15m(

    czy mozliwe ejst napisace w Arduino tkaiego programu pozwalajacego sterowaniem ADC w Analogread.
  • Poziom 6  
    . Dzieki wielkie :)
  • Pomocny post
    Poziom 36  
    gwenblead1 napisał:
    szelus napisał:
    Spróbuj podłaczyć jak na rysunku 14 lub 17.


    Zrobie tak jak kolega powiedzial zobacze jaki bedzie rezultat.

    Bardzo dziekuje za odpowiedzi:)

    Bede testowal na biezaco az sie uda :) ostatecznie czujnik ma funkcjonowac na odleglosc do 30m :) Wiec zobaczymy.

    Co do napiecia ujemnego nie mam pojecia jak to zrobic


    W zasadzie wszystko co potrzebujesz masz opisane w datasheet (link podany w poście #4).

    W pierwszym rzędzie wyzbądź sie tego niezrozumiałego dzielnika "/1224"- z jakiego żródła on pochodzi? Widzę że wszyscy go acceptują i powielają(!?).
    Nie może byc więcej niż 1024 dla 10-bitowego ADC w AVR (2^10= 1024).

    Aby było jaśniej:
    Pierwszy rysunek jaki masz w datasheet to przykład podłączenia sensora do pomiaru tylko temperatur dodatnich i to od 2°C w górę do 150°C , bo taki jest jego zakres. Jeżel masz 0.1 V/ 1°C to maxymalne napięcie na wyjściu możesz spodziewac sie w zakresie 1.5V.
    Drugi rysunek rozszerza zakres na pomiar także temperatur ujemnych, ale wymaga zastosowania symetrycznego +/- zasilania, który próbowałeś zastosowac z miernym skutkiem bo nie masz ujemnego napięcia.
    Inne przykłady w datasheet podaję różne rozwiązania, z których najbardziej optymalny i przydatny byłby ten z fig.18 (link z postu #4).
    Powrócmy na chwilę do napięcia referencyjnego.
    Arduino 'by default' ma Vref =5 Volt traktowane też jako standartowe napięcie zasilania, które to pokazuje się we wzorze na obliczenie temperatury. A jaki będzie wynik jeżeli faktycznie zasilasz arduino np. 3.3 V., albo zasilanie jest na poziomie 5.1V?

    Jak wspomniałem wcześniej maxymalne napięcie wyjściow z LM35 będzie 1.5 Volt, co w sumie daje kiepską rozdzielczośc na skali 0 do 5 Volt. Wskazane byłoby wybrac napięcie referencyjne 2.5 Volt.
    Stosując układ pomiarowy z fig.16 (ten z dwoma diodami i rezystorem 18 k) daje ci offset ok 1V. Mirząc wartości ADC z obydwu portów (na rysunku ten z (+) jako główny pomiar powiedzmy A, oraz ten z(-) jako offset B, obliczając różnicę da ci aktualną temperatutę. Obydwa tak mierzone napięcia są dodatnie więc i pomiary ADC sa w zasadzie bez znaku ale ich różnica może by ujemna.
    Dlatego wartośc T dla temperatury winna tam wystąpic jako 'float'.

    Jedyna niedogodnośc tej metody, to koniecznośc użycia 2 kanałów ADC.

    e marcus
  • Moderator Samochody
    Ja tylko przypomnę, że istnieją czujniki temperatury z interfejsem cyfrowym, eliminującym tego typu trudności... choćby popularny DS18B20 czy DHT11 z czujnikiem wilgotności.
  • Poziom 6  
    Dziekuje najmocnie za kolejne odpowiedzi...
    A wiec tak mam zbyt mala wiedze na ten temat aby podlonczyc Analogowy czujnik lecz nie mowie ze tego nie sporbuje.
    Lecz zastosuje tak jak kolega tzok powiedzial Czujniki Cyfrowe.
    A podlonczenie Analogowego uznam jako Nauke :)

    Wiec napewno bede zadawal kolejne Pytania :)
  • Poziom 36  
    gwenblead1 napisał:
    Dziekuje najmocnie za kolejne odpowiedzi...
    A wiec tak mam zbyt mala wiedze na ten temat aby podlonczyc Analogowy czujnik lecz nie mowie ze tego nie sporbuje.
    Lecz zastosuje tak jak kolega tzok powiedzial Czujniki Cyfrowe.
    A podlonczenie Analogowego uznam jako Nauke :)

    Wiec napewno bede zadawal kolejne Pytania :)


    Z tego wszystkiego to LM35 (analogowy) jest jeszcze najłatwiej obsłużyc jeśli to ma byc własny projekt dydaktyczny. Pozostałe,...
    -owszem zrobisz kopiując cudzy code; przy takim podejściu.

    Zacząłeś dobrze i nagle chęci odeszły cię w 'siną dal' !....

    e marcus