Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

pomiar temperatury termopara typu K potrzebny wzmacniacz?

dturczak 25 Jun 2010 01:24 12868 17
Altium Designer Computer Controls
  • #1
    dturczak
    Level 19  
    Witam
    zastanawialem sie nad pomiarem temperatury za pomoca termopary typu K.
    Czy rzeczywiscie konieczny jest wzmacniacz do tego?
    czy nie wystarczy np napiecie odniesienia 1,2V ?
    wtedy przy 10bitowych przetworniku mamy 1 próg( z 1024) na poziomie 1 mV.
    patrzac na charakterystyke od 0 st do 1300 napiecie zmienia sie w granicy 0-50mV.
    mniej wiecej wychodzi ze mozemy zaobserowac zmiane 25 stopni co na pomair zgrubny wysokich temperatur chyba wystarczy.
    mniejsze napiecie odniesienia nie polepszy jeszcze wyniku ?
    czy to wogole ma sens ? :)
  • Altium Designer Computer Controls
  • #2
    arturt134
    Level 27  
    Obciążalność termopary jest praktycznie zerowa. Jeżeli podłączysz ją bezpośrednio do ADC, to przetwornik tak obciąży termoparę, że napięcie na niej nie będzie odpowiadało temperaturze. Musisz dać wzmacniacz pomiarowy.
    Ja kiedyś używałem do tego celu LT1101 (instrumentation amplifier), ale to było kilka lat temu, być może pojawiły się lepsze.
  • Altium Designer Computer Controls
  • #4
    tmf
    Moderator of Microcontroller designs
    Oprócz tego co koledzy napisali wyżej jest jeszcze jeden problem. Rozdzielczość ADC. Ona nie wynika tylko z prostego podzielenia zakresu przez ilość bitów, każdy ADC ma pewną minimalną rozdzielczość poniżej której nie można zejść (bez sztuczek typu oversampling). Np. ADC AVRów ma minimalną rozdzielczość ok. 2mV, więc zmniejszając napięcie odniesienia poniżej 2*1024=2,048V nie zyskujemy na rozdzielczości - najmłodsze bity będą zaszumione.
  • #5
    shg
    Level 35  
    arturt134 wrote:
    Obciążalność termopary jest praktycznie zerowa.

    Termopara ma rezystancję "wyjściową" od kilku do kilkudziesięciu omów, w zależności od długości przewodu. Obciążalność uzależniona jest od tej właśnie rezystancji. W piecach gazowych wykorzystuje się zawory gazu których cewka zasilana jest przez termoparę, prąd płynie tam dość spory.
    arturt134 wrote:
    Jeżeli podłączysz ją bezpośrednio do ADC, to przetwornik tak obciąży termoparę, że napięcie na niej nie będzie odpowiadało temperaturze.

    Rezystancja wejściowa przetwornika w AVR jest chyba rzędu 100 MΩ.
    Przykładowo 20 mV z termopary o rezystancji 15 Ω i podłączonym do niej przetworniku o rezystancji wejściowej 100 MΩ daje 19,999997 mV. Rzeczywiście, nie odpowiada to mierzonej temperaturze.
    arturt134 wrote:
    Musisz dać wzmacniacz pomiarowy.

    Przydał by się taki z zerowaniem offsetu i małą jego zależnością od temperatury.

    Używałem termopary K podłączonej bezpośrednio do wejść przetwornika w ATmega16. Przetwornik skonfigurowany do pomiaru różnicowego ze wzmocnieniem 200 razy. Błąd pomiaru wynosił kilka °C w temperaturze pokojowej i temperaturze wrzenia oksydanu ;]. W innych nie sprawdzałem, bo mi się nie chciało, taki tylko eksperyment w trakcie uruchamiania. Pomiary były zaszumione jak jasna cholera, trzeba było sporo próbek przefiltrować.

    Poniżej jak to wyglądało po wsadzeniu termopary do czajnika w którym przed chwilą zagotowała się woda. Próbkowanie 4 kHz, uśrednianie po 4000 próbek.
    pomiar temperatury termopara typu K potrzebny wzmacniacz?
  • #6
    dturczak
    Level 19  
    dzieki za wiele cennych wskazowek..
    a w tym ukladzie max6675 jak sie odbywa zamiana na temperature ?
    na schemacie w dokumentacji widze ze sygnal jest wzmacniany(czemu 2 wzmacniacze? ) i na koncu po dodaniu temperatury z kompensacji zimnego konca leci na przetwornik..
    i teraz wartosc napiecia porownywana jest z jakas tablica czy zaleznosc jest jakos zlineryzowana poprostu ?
    jaka funkcje przelacznik S2 moze pelnic ?
    pomiar temperatury termopara typu K potrzebny wzmacniacz?

    Mam tez pytanie jak interpretowac tabelke :
    pomiar temperatury termopara typu K potrzebny wzmacniacz?
    Im wyzsze napiecie(temperatura) tym zaklocenia wystepuja na wiekszej ilosc mlodszych bitow? jezeli tak to co mi daje znajomosc tej zaleznosci,moge jakos wyeliminowac bledy?
  • #7
    shg
    Level 35  
    Drugi wzmacniacz jest buforem. Zastosowany filtr dolnoprzepustowy RC ma bardzo dużą rezystancję i małą pojemność. Przetwornik AC ma pewnie układ sample & hold, którego włączenie równoważne jest naładowaniu jego kondensatora, kosztem energii zgromadzonej w kondensatorze filtra. Typowo pojemność takiego kondensatora jest rzędu pikofaradów, a więc porównywalna z pojemnością kondensatora filtrującego. Brak bufora powodowałby znaczący błąd.
    S2 służy prawdopodobnie do automatycznego zerowania offsetu wzmacniacza.

    Nie widzę tam dodawania temperatury zimnego złącza. Nie zaglądałem do noty, ale wygląda na to, że ten układ mierzy napięcia za pomocą ADC, osobno dla zimnego złącza i osobno dla termopary.
    Układ w żaden sposób nie przetwarza wyniku pomiaru (napięcia), to już działka użytkownika, dostaje się "goły" wynik z przetwornika. Pierwszy wykres przedstawia błąd pomiaru przetwornika w zależności od temperatury. Tzn. że wartość na wyjściu przetwornika będzie się różnić o tyle ile widać na wykresie od tego co powinno być. To nie są zakłócenia o charakterze losowym, tylko błąd statyczny, spowodowany najpewniej jakimiś prądami upływu.
    Drugi wykres to błąd pomiaru w zależności od napięcia różnicowego na wejściu.
    Z pierwszym nic nie zrobisz, drugi być może możesz wykorzystać do poprawienia jakości wyniku, o ile ten błąd jest powtarzalny i nie zależny od innych czynników, a wynika prawdopodobnie z zasady działania układu. Chociaż te kilka LSB to pewnie nie za wielki błąd, nie wiem jaką to ma rozdzielczość, ale raczej większą niż 10 bitów. Będzie trochę rósł wraz z temperaturą.

    Tablicę, albo równanie opisujące zależność temperatury od napięcia z termopary masz sobie sam znaleźć i umieścić w programie. Podpowiedź: "ITS-90".
    Pomiar wykonuje się w ten sposób, że na przemian mierzy się napięcie z termopary i z czujnika wewnętrznego (kompensacja zimnego złącza). Do tego przed rozpoczęciem pomiarów (i co jakiś czas w trakcie, zwłaszcza przy zmianie temperatury układu) wykonuje się kompensację offsetu wzmacniacza, przez zwarcie S2 i pomiar napięcia, które potem odejmuje się od wyniku. Szczegóły na pewno opisane są w dokumentacji.
  • #8
    dturczak
    Level 19  
    dokumentacja nie jest jakas bogata...
    wyczytalem ze po odczycie po interfejsie SPI mamy juz zmierzona temperature wiec ukladanie rownania odpada. piszą ze do aproksymacji zastosowane jest liniowe rownanie VOUT = (41μV / °C) X (TR - TAMB) a sam przetwornik jest 12 bitowy.
    Tylko układ drogi,50 zł to troche duzo...
  • #9
    shg
    Level 35  
    Faktyczne, ten rysunek jest mylący, a do dokumentacji nie zajrzałem. Tak jak napisałeś, używane jest przybliżenie liniowe, a cała automatyka pomiaru (zerowanie wzmacniacza, wykrywanie odłączenia termopary, kompensacja temperatury zimnego złącza) realizowana jest przez sam układ.
    Cena faktycznie paskudna, taniej wyjdzie zrobienie tego samemu, ale to kupa roboty i więcej elementów.
    Ale jeżeli chcesz tylko zgrubny pomiar, to jakiś AVR z różnicowym wejściem ADC (i wbudowanym wzmacniaczem) powinien wystarczyć. Do tego jeszcze jakiś czujnik temperatury otoczenia, termistor, dioda, LM35, wybór jest spory. Potem ewentualnie dodatkowa kalibracja.
  • #10
    dturczak
    Level 19  
    Witam problem z układem max6675.
    Zalaczam schemat pcb ,ideowy,odchylki mam przerozne w zaleznosci od temperatury ktora mierze.

    pomiar dokonuje korzystajac z biblioteki :
    http://www.tobias-schlegel.de/?page_id=295

    usredniam wynik z 10 pomiarow.

    bardzo bym prosil o zerkniecie i naprowadzenie gdzie moge popelniac blad.
    Moze cos przy samym projektowaniu plytki ?
    zworki sa po to zeby przelaczac programowanie ISP/sprzetowe SPI z ktorego na poczatku korzystalem.
    Probowalem zarowna z zasilaniem 5V jak i 3,3V
    Uzywam termopary K firmy Czaki.
    Da testow ukladu podpialem zwykly dzielnik napiecia dzieki ktoremu dosc dokladnie moge przechodzic przez caly zakres temperatury dzialania termoelementu.

    niestety na plytce stykowej jak sprawdzam wszystko zachowuje sie tak samo ;/
    
    
     	while(1)    
     	{
    		int l;
    		uint16_t srednia[10];
    
    		for(l=0;l<10;l++)
    		{
    
    			value=gettemp();
    			srednia[l]=value;
    		
    			for(j=0;j<70;j++) _delay_ms(10);
    		}
    
    
    	    	value=(srednia[0]+srednia[2]+srednia[3]+srednia[4]+srednia[5]+srednia[6]+srednia[7]+srednia[8]+srednia[9])/10;
    
    		//WYsylka value
    


    Wyniki:

    pomiar temperatury termopara typu K potrzebny wzmacniacz?

    Ideowy:
    pomiar temperatury termopara typu K potrzebny wzmacniacz?
    PCB:
    pomiar temperatury termopara typu K potrzebny wzmacniacz?
    Wykonanie:
    pomiar temperatury termopara typu K potrzebny wzmacniacz?
  • #11
    dturczak
    Level 19  
    taki dzielnik napiecia z rezystorami 0R cos moze pomoc wogole?
    pomiar temperatury termopara typu K potrzebny wzmacniacz?
  • #12
    mieczotronix
    Level 16  
    zależy czym mierzysz temp. rzeczywistą - może ten miernik mieć jakąś nieliniowość
    jeszcze też możesz mieć jakieś błędy przy arytmetyce stałopozycyjnej, które maleją przy dużych wartościach (mniejsze zaokrąglenia)

    a co do dzielnika na 0R to przecież tak jakbyś zrobił dzielnik z dwóch zworek... weź no
  • #13
    dturczak
    Level 19  
    napiecie odpowiadajace konkretnej temperaturze ustawiam przez dzielnik napiecia.
    temp jako takiej nie mierze...

    zamieszczam pelny kod...
    myslalem ze to faktycznie wina mojej konwersji.
    Teraz zastosowalem sprintf() do konwersji uint16_t w ktorej mam wynik.
    Zamieszam pelny kod.

    w kwesti dzielnika O R tez wydawalo mi sie to troche bezsensowne ale chcialem na wszelki wypadek zapytac ;)
  • #15
    dturczak
    Level 19  
    zalaczylem caly projekt..
    tamto z palca pisalem..
    teraz jak sprawdzam napewno nie kwestia konwersji ...
    moja funkcja write_int() z lcd.c
    dziala tak samo jak wyswietlanie z sprintf
  • #16
    mieczotronix
    Level 16  
    no widziałem cały projekt, ale w nim nie ma żadnych obliczeń, procedura obsługi maxa odczytuje po prostu dane z jego przetwornika, ty to potem dzielisz przez cztery i wyświetlasz.
    Więc albo zadajesz złe napięcie albo woltomierz albo max (raczej nie) się myli
  • #17
    michalko12
    MCUs specialist
    dturczak wrote:

    
    
     	while(1)    
     	{
    		int l;
    		uint16_t srednia[10];
    
    		for(l=0;l<10;l++)
    		{
    
    			value=gettemp();
    			srednia[l]=value;
    		
    			for(j=0;j<70;j++) _delay_ms(10);
    		}
    
    
    	    	value=(srednia[0]+srednia[2]+srednia[3]+srednia[4]+srednia[5]+srednia[6]+srednia[7]+srednia[8]+srednia[9])/10;
    
    		//WYsylka value
    


    
    value=(srednia[0]+srednia[2]+srednia[3]+srednia[4]+srednia[5]+srednia[6]+srednia[7]+srednia[8]+srednia[9])/10; 


    A gdzie srednia[1]? Sam się prosisz o problemy piszac w ten sposób.
    Trudno to w petli zrobić? Petle potrafisz tworzyć i to w naimniej potrzebnych miejscach
    for(j=0;j<70;j++) _delay_ms(10);


    Przy tym usrednianiu tabelka z pomiarami ma sie nijak do rzeczywistości.
    W ostatich zamieszczonych źródłach już nie uśredniasz, ale o wynikach nic nie napisałeś.
  • #18
    dturczak
    Level 19  
    jeszcze raz mowie,tamto pisalem z palca ,dlatego nie ma jednego pomiaru (nie mialem dostepu do komputera z kodem)...

    tutaj nie usredniam ,ale odchylki od prawidlowego wyniku sa podobne.

    kwestia czy jak podlacze dzielnik napiecia normalnymi miedzianymi kablami to mi uwzgledni kompensacje zimnych koncow... chyba tutaj jest problem..

    chociaz jak podlaczam termopare w pokoju napewno nie mam teraz 32 stopni ;/