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

Pomiar wysokich temperatur - termopara z MAX6675 - podłączenie i protokół komunikacji

p.kaczmarek2 05 Maj 2024 00:13 2733 6

TL;DR

  • Termopara typu K z modułem MAX6675 mierzy wysokie temperatury i upraszcza odczyt dla mikrokontrolerów.
  • Komunikacja działa przez prosty SPI na trzech GPIO: CS nisko, kolejne impulsy zegara i odczyt 16 bitów z SO/MISO.
  • Układ pracuje przy 3 V–5,5 V, mierzy zakres 0°C–800°C i zwraca wynik z rozdzielczością 12 bitów, czyli 0,25°C.
  • Gotowe biblioteki dla Arduino przyspieszają start, a zestaw sprawdził się też na BK7231 i w testach hot air.
  • Trzeba kupić cały zestaw, nie sam moduł z MAX6675, choć w Chinach komplet kosztuje około 10 zł.
Wygenerowane przez model językowy.
REKLAMA
📢 Słuchaj (AI):
  • Termopara typu K z modułem przetwornika A/D MAX6675, zestaw.
    Termopara typu K wraz z modułem przetwornika A/D MAX6675 pozwala łatwo mierzyć wysokie temperatury z zakresu 0°C do 800°C przy rozdzielczości 12 bitów. Prezentowany tu zestaw pracuje na napięciu od 3 V do 5,5 V i do komunikacji wykorzystuje prosty protokół SPI, który równie dobrze można zrealizować na dowolnych trzech GPIO wybranego mikrokontrolera.

    Zacznijmy chyba od najważniejszego, czyli od ceny - na moment pisania tego tematu całość można kupić z przesyłką za kilkadziesiąt złotych u nas w kraju, a sprowadzając z Chin możemy zamknąć się i w kwocie 10 zł.
    Oferta czujników temperatury typu K z modułem MAX6675
    Zrzut ekranu oferty modułu temperatury MAX6675 wraz z termoparą typu K.
    Ważne by tylko zamówić cały zestaw, a nie przypadkiem sam moduł z MAX6675... a przy okazji zajrzyjmy do jego noty katalogowej:
    Diagram zastosowań układu MAX6675
    Podłączenie do MCU wydaje się być bardzo proste, potrzebne są tylko trzy linie
    MISO, SCK, SSB, ale nie zapominajmy też o wspólnej masie i o zasilaniu.
    Protokół SPI - to brzmi groźnie, ale w praktyce tutaj SPI jest użyte w najprostszy możliwy sposób. Nota katalogowa opisuje jak odbywa się komunikacja:
    Strona z noty katalogowej przetwornika MAX6675.
    Wizualnie przedstawiona komunikacja:
    Rysunki przedstawiające protokół interfejsu szeregowego i sposób odczytu danych z układu MAX6675.
    Czyli w zasadzie ustawiamy CS na stan niski, potem manipulujemy zegarem i odczytujemy kolejne bity z SO. Całość trzeba wykonać jednocześnie respektując timingi, ale wszystko jest na diagramie. Znaczenie odczytanych 16 bitów określa również diagram - nas interesuje przede wszystkim 12 bitów pomiaru, czyli bity od 3 do 14 włącznie.
    Teraz pytanie jak to wykorzystać z MCU - no cóż, najlepiej użyć gotowej biblioteki, jest tego mnóstwo pod Arduino:
    https://www.arduino.cc/reference/en/libraries/max6675/
    Można ją dodać poprzez Library Manager.
    Tu kolejna biblioteka:
    https://github.com/adafruit/MAX6675-library
    Dla większości osób można by tu zakończyć, ale i tak teraz zajrzymy jak ta komunikacja jest wewnątrz zaimplementowana.
    Nie używamy tutaj sprzętowego SPI - wystarczą dowolne cyfrowe GPIO:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Do odczytu mamy 16 bitów, czyli dwa bajty. Potrzebna będzie funkcja odczytująca bajt:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    W pętli ustawiamy zegar na stan niski, odczekujemy moment a potem odczytujemy dane z MISO. Potem ustawiamy zegar na stan wysoki i czekamy, po czym pętla się powtarza.
    Brakuje jeszcze manipulacji pinem CS, ale to mamy na zewnątrz tej funkcji:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Tutaj też odczytamy oba bajty i składamy je w jedno słowo 16-bitowe (chociaż równie dobrze można by w spiRead czytać od razu całe 16 bitów).
    Potem trzeba zinterpretować odczytane dane. Mamy tu nieco więcej niż sam pomiar...
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jeden z bitów pozwala sprawdzić nam czy w ogóle pomiar się udał. Może to być przydatne w trakcie poszukiwania błędów. Po sprawdzeniu błędu po prostu przesuwamy całość o 3 bity (by "uciąć" trzy najmłodsze) a potem mnożymy przez 0.25 by uzyskać wynik w stopniach.
    I to tyle - już mamy pomiar. Jak zapewne widać, jest to bardzo łatwe do zrealizowania na praktycznie dowolnym MCU a te dumne SPI z ofert wcale nie jest takie straszne w tym przypadku.

    Do czego to można wykorzystać?
    W moim przypadku zestaw z MAX6675 przydaje się do testów hot air:
    Termopara typu K z modułem przetwornika A/D MAX6675 na płytce prototypowej.
    Mikrokontroler z podłączonymi przewodami na płytce stykowej
    Zbliżenie na termoparę typu K podczas połączenia ze śrubą, w warsztacie.
    Jest to dla mnie niezwykle przydatne, ponieważ jak się z czasem przekonałem, temperatura rzeczywiście "widziana" przez PCB może znacznie się różnić od temperatury na wyświetlaczu stacji hot air w zależności od tego jaką stację mamy i jaki nadmuch nastawimy. Swoje pomiary dokumentuję i umieszczam na interaktywnych wykresach (wersja 350°C,wersja 450°C).

    Podsumowując, zestaw z MAX6675 jest bardzo tani i jednocześnie łatwy do uruchomienia, początkujący nie powinni mieć z nim żadnego problemu, jak również powinien ruszyć na nieco mniej znanych MCU, sam go nawet uruchomiłem na BK7231, chociaż w zasadzie ten sam kod ruszy na wszystkich platformach wspieranych przez OBK.
    Zapraszam do dyskusji. Czy ktoś z Was też korzystał z MAX6675 w projektach? Jakie macie doświadczenia z tym układem, a może wolicie jakąś alternatywę?

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    Inżynier programista z wieloletnim doświadczeniem embedded i full stack developer.
    Specjalizuje się w: embedded, Full-Stack Developer
    p.kaczmarek2 napisał 14499 postów o ocenie 12505, pomógł 651 razy. Jest z nami od 2014 roku.
  • REKLAMA
  • #2 21070471
    radex324
    Poziom 24  
    Posty: 1248
    Pomógł: 50
    Ocena: 206
    Lepiej uzywać układu MAX31855, max6675 przy 2 pomiarach na sekunde powyżej 600* "zacina się" i pomiary zmieniają się co 2-3s. Robiłem sterownik do odczytu EGT w samochodzie i właśnie początkowy ten moduł był używany ale przy testach wyszły błędy, MAX31855 3 odczyty na sekunde i zero problemów.



  • REKLAMA
  • #3 21070494
    p.kaczmarek2
    Moderator Smart Home
    Posty: 14499
    Pomógł: 651
    Ocena: 12505
    To ciekawe, nie spotkałem tego problemu z MAX6675, tylko że ja używam go tylko do 500°C. Dodatkowo wedle noty katalogowej dla MAX6675 nie powinno to zajmować więcej niż 0.22s:
    Tabela parametrów elektrycznych czujnika MAX6675, w tym czas konwersji.
    MAX31855 z kolei ma 0.1s:
    Tabela z charakterystykami termicznymi dla przetwornika MAX31855.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #4 21071535
    austin007
    Poziom 17  
    Posty: 762
    Pomógł: 6
    Ocena: 271
    Kiedyś miałem kupić u majfriendów tę płytkę z MAX6675 ale po doświadczeniach z maxim17043 zrezygnowałem. Chyba to podróbki układów. Funkcjonalnie sprawdzałeś,że działa poprawnie?
  • #5 21075483
    cukras
    Poziom 17  
    Posty: 295
    Pomógł: 14
    Ocena: 28
    >>21070471
    Też rozmyślałem nad podglądem temperatury EGT celem zrobienia wskaźnika wypalania DPF(moje auto QQ+2, 2.0 dCi w żaden sposób nie sygnalizuje, że zaczęła się procedura wypalania DPF). Mam problem czy umieszczać termoparę na obudowie DPFa czy może da się podpiąć pod czujnik temperatury.
    Radex324 jak to kolego realizowałeś?
  • REKLAMA
  • #6 21075786
    radex324
    Poziom 24  
    Posty: 1248
    Pomógł: 50
    Ocena: 206
    @cukras Zewnętrzna sonda EGT 3mm.
  • #7 21077058
    cukras
    Poziom 17  
    Posty: 295
    Pomógł: 14
    Ocena: 28
    Witam, możesz rozwinąć troszkę albo na PW wyjaśnić jak to mocowałeś i czym był odczyt?
📢 Słuchaj (AI):

Podsumowanie tematu

✨ Dyskusja dotyczy pomiaru wysokich temperatur za pomocą termopary typu K i modułu MAX6675, który umożliwia pomiar w zakresie od 0°C do 800°C z rozdzielczością 12 bitów. Użytkownicy poruszają kwestie związane z wydajnością MAX6675, wskazując na problemy z dokładnością pomiarów przy wyższych temperaturach oraz sugerując alternatywę w postaci MAX31855, który oferuje lepszą szybkość odczytu. Pojawiają się również pytania dotyczące zastosowania termopary w kontekście monitorowania temperatury EGT w pojazdach oraz możliwości jej montażu. Użytkownicy dzielą się doświadczeniami z zakupem modułów, zwracając uwagę na potencjalne podróbki.
Wygenerowane przez model językowy.
REKLAMA