Strona 1 z 1

[MAX6675] Obsługa termopary

: niedziela 09 lip 2017, 21:08
autor: gaweł
Pomiar temperatury poprzez termoparę

Zaistniała potrzeba pomiarów temperatury. Niby nic wielkiego, ale... wymagany zakres pomiarowy obejmuje temperatury dodatnie do 300 stopni C. Już w przedbiegach wypadają wszelkiej maści rozwiązania typu sławetny DS1820. No cóż, za wysokie progi. Pozostaje zastosowanie rozwiązania opartego o termoparę. Trochę odstraszyła mnie konieczność budowania jakiegoś „chorego” rozwiązania do przetwarzania sygnału z termopary. Jak pogooglać, to nie jest tak źle. Można przykładowo zastosować układ MAX6675. Stanowi on kompletną obsługę toru pomiarowego. Mało tego, to da się zakupić to w formie już przylutowanej do maleńkiej PCB.
max6675_ilu01.jpg
Musiałem jedynie zrobić sobie maleńki kabelek, by złącze GOLDPINOWE modułku zintegrować z płytą do eksperymentów, czyli Solderless Breadboard. Na PCB jest nadruk opisujący funkcję poszczególnych pinów złącza, więc nie było żadnego kłopotu by stworzyć możliwość porozumienia ze wspomnianym układem MAX6675 (złącze ma 5 pinów: masa [GND], zasilanie [+5V], wybór układu [CS], sygnał zegarowy do taktowania szeregowej transmisji danych [CLK] oraz dane pomiarowe [SO]).
Środowisko uruchomieniowe oparte jest o moduł M32 (Opis modułu M32), do którego przyłączony jest dwuwierszowy display LCD i wspomniany MAX6675. Szczegóły pokazuje poniższa ilustracja.
max6675_ilu02.png
Zbudowanie środowiska do badań zajęło dosłownie chwilę.
max6675_ilu03.jpg
W niedzielne popołudnie miałem w pracowni 25.5 stopnia C.
max6675_ilu04.jpg
Zacząłem podgrzewać atmosferę.
max6675_ilu05.jpg
I szybko zrobiło się ciepło.
max6675_ilu06.jpg
Układ MAX6675, oprócz przetwarzania temperatury na bity, ma jeszcze dodatkową cechę (uważam, że istotną). Potrafi zasygnalizować, że nie ma kontaktu z sondą termopary.
Rzeczywiście, odłączenie sondy
max6675_ilu07.jpg
jest sygnalizowane, i procek może o tym się dowiedzieć (jak zwykle, wiedza to potęga).
max6675_ilu08.jpg
Implementacja obsługi również nie nastręczała żadnych problemów. W dokumentacji układu jest jasno określone co należy zrobić.
max6675_ilu09.png
Czyli: wystawić sygnał CS do logicznego zera, pomachać 16 razy pinem SCK zgarniając przy opadającym zboczu stan pinu SO. Zastosowana obsługa jest następująca:

Kod: Zaznacz cały

static void DoTheMeasurement ( void )
{
  uint8_t Loop ;
  uint8_t Data ;
  /*-------------------------------------------------------------------------*/
  MeasurementData = 0 ;
  MeasurementPort &= ~ ( 1 << Thermocouple_CS ) ;
  nop ( ) ;
  nop ( ) ;
  nop ( ) ;
  nop ( ) ;
  for ( Loop = 0 ; Loop < 16 ; Loop ++ )
  {
    MeasurementPort |= ( 1 << Thermocouple_SCK ) ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    MeasurementPort &= ~ ( 1 << Thermocouple_SCK ) ;
    Data = MeasurementInputPort ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    nop ( ) ;
    MeasurementData = MeasurementData << 1 ;
    if ( Data & ( 1 << Thermocouple_SO ) )
      MeasurementData |= 1 ;
  } /* for */ ;
  MeasurementPort |= ( 1 << Thermocouple_CS ) ;
  MeasurementTechData = MeasurementData ;
  MeasurementData = MeasurementData >> 3 ;
} /* DoTheMeasurement */


Załącznik: projekt w AVRSTUDIO:
avr-max6675.zip

Re: [MAX6675] Obsługa termopary

: niedziela 09 lip 2017, 21:14
autor: Antystatyczny
Czy do tego układu można podłączyć termoparę K, która często dodawana jest do średniej klasy multimetrów?

Re: [MAX6675] Obsługa termopary

: niedziela 09 lip 2017, 21:54
autor: gaweł
Antystatyczny pisze:Czy do tego układu można podłączyć termoparę K, która często dodawana jest do średniej klasy multimetrów?

Ta termopara (typu K) była zakupiona razem z modułem MAX6675. Cóż, gdzieś miałem taką termoparę od miernika. Jak znajdę, to zrobię badania.
IMG_6011.JPG

Re: [MAX6675] Obsługa termopary

: poniedziałek 10 lip 2017, 00:51
autor: gaweł
Pomyślałem, że skoro do miernika również jest dawana sonda typu K, to może by tak zamiast szukać oryginalnej sondy, zastosować opisaną wyżej (nie mam pojęcia gdzie może być oryginalna sonda, więc nie ma zbyt wielkich szans na szybkie jej znalezienie). Wetknąłem posiadaną sondę do miernika i zadziałało. Eksperyment zajął mi minutę.Po "przypaleniu" jej zapalniczką, miernik coś wskazał. Przed "nagrzaniem" wskazywał na podobną wartość temperatury otoczenia jak w przykładzie wyżej.
IMG_6013.JPG
IMG_6012.JPG

Na zasadzie równoważności, klasycznej logiki, można wysnuć wniosek, że oryginalna sonda powinna współdziałać z układem MAX6675.

Re: [MAX6675] Obsługa termopary

: poniedziałek 10 lip 2017, 16:38
autor: StaryAnoda
Bardzo ciekawy artykuł.

Bawiłem się wieloma czujnikami temperatury. Termopary zawsze bałem się dotknąć, ze względu na to, że spodziewałem się dość skomplikowanego podejścia zarówno od strony programistycznej jak i tej czysto elektronicznej. A tutaj pokazujesz, że to nie takie trudne. Scalak w przystępnej obudowie więc da radę go przylutować każdą lutownicą. Jak uda mi się uruchomić swój prototyp to dam znać i się pochwalę.
Może się jeszcze zapytam jak jest z pomiarem temperatur poniżej zera, czy jest to wykonywalne?

Re: [MAX6675] Obsługa termopary

: poniedziałek 10 lip 2017, 21:24
autor: gaweł
StaryKatoda pisze:Może się jeszcze zapytam jak jest z pomiarem temperatur poniżej zera, czy jest to wykonywalne?

Nie wiem. Eksperymentów na ujemne temp. nie robiłem (trochę to teraz skomplikowane, w końcu mamy lato). Niby można włożyć do zamrażarki, ale kabelek trochę krótki. Z drugiej strony, potrzeby są takie, że realizowany jest pomiar temp. dodatnich. Z trzeciej strony w dokumentacji od MAX6675 jest napisane, że mierzy od 0 do 1024 stopni C, chociaż w tym układzie jest miejsce na znak (ale ustawiony na 0 na stałe). Reasumując: sam układ MAX6675 nie mierzy temp. ujemnych, ale to chyba nie oznacza, że nie jest to niewykonalne (z punktu widzenia samej fizyki). Jest niewykluczone, że istnieją inne rozwiązania, które umożliwiają taki pomiar.

Re: [MAX6675] Obsługa termopary

: poniedziałek 10 lip 2017, 21:42
autor: acid3

DS tego układu zapewnia, że możliwe są pomiary temperatur od -270°C do +1800°C
Zapewne należy wtedy dobrać też odpowiednią termoparę do mierzonych temperatur.


PS.1.0 W razie zainteresowania tymi układami zapraszam na PW, gdzieś jakaś sztuka powinna się jeszcze walać (sam scalak bez płytki)
PS.2.0 termopara typu K to najczęściej stosowany czujnik temperatury w miernikach uniwersalnych (ale to nie jest reguła)

Re: [MAX6675] Obsługa termopary

: środa 12 lip 2017, 19:53
autor: tasza
no proszę, chyba bywamy w tym samym sklepie z zabawkami...
IMG_7197.JPG

Re: [MAX6675] Obsługa termopary

: czwartek 13 lip 2017, 09:29
autor: gaweł
tasza pisze:no proszę, chyba bywamy w tym samym sklepie z zabawkami...
IMG_7197.JPG

No faktycznie, można powiedzieć, że drepczemy po tym samym świecie.

Re: [MAX6675] Obsługa termopary

: wtorek 18 lip 2017, 19:32
autor: tasza
a z tego lodu to mogłam sobie takiego fajnego drinka zrobić, heh . . zatem proszę - from fire to ice

IMG_7257.JPG
IMG_7251.JPG


w górę można podgrzewać dowolnie zależnie co się tam ma,
w dół - do lodu na dłuższą chwilę, ponieważ ta grubaśna śruba daje sporą bezwładność cieplną to po raz, po dwa - tam (przynajmniej u mnie) jest luz pomiędzy czujnikiem w środku, nie ma aż tak dobrego kontaktu termicznego

dwie klatki z filmiku, co przed chwilą do materiałów zrobiłam, takie the best of.

skan-karta-278.png
skan-karta-277.png


po włożeniu w lód - MAX6675 zwraca równiutkie zera, zakładam ze ostygnięty czujnik miał kilka ujemnych stopni - a odczyty zerowe aż do powrotu do nieujemnej temperatury, i takie zachowanie nie dziwota, ponieważ bit znaku na sztywno jest wyzerowany.

dla MAX31855 bit znaku jest aktywny (tabela 4 d-s) https://datasheets.maximintegrated.com/ ... X31855.pdf ,
stąd możliwe ujemne wyniki...muszę sobie tę kostkę zamówić, no tak....