logo elektroda
logo elektroda
X
logo elektroda
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 1944 6
  • Moduł przetwornika A/D MAX6675 z termoparą typu K i kolorowymi przewodami
    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ł.
    Strona internetowa z ofertami czujników temperatury typu K i modułów MAX6675.
    Zrzut ekranu oferty platformy zakupowej dla modułu MAX6675 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:
    Schemat elektryczny i opis przetwornika A/D 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 noty katalogowej przetwornika termopary MAX6675.
    Wizualnie przedstawiona komunikacja:
    Diagramy protokołu interfejsu szeregowego i czasowania dla przetwornika cyfrowego 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:
    Prototyp z termoparą typu K i modułem MAX6675 na płytce stykowej
    Płytka stykowa z podłączonym modułem i termoparą
    Termopara typu K przymocowana za pomocą zacisku krokodylkowego.
    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 
  • #2 21070471
    radex324
    Poziom 24  
    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.



  • #3 21070494
    p.kaczmarek2
    Moderator Smart Home
    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 dla układów MAX6675 i MAX31855.
    MAX31855 z kolei ma 0.1s:
    Tabela z charakterystykami termicznymi przetwornika MAX31855.
    Pomogłem? Kup mi kawę.
  • #4 21071535
    austin007
    Poziom 17  
    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  
    >>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ś?
  • #6 21075786
    radex324
    Poziom 24  
    @cukras Zewnętrzna sonda EGT 3mm.
  • #7 21077058
    cukras
    Poziom 17  
    Witam, możesz rozwinąć troszkę albo na PW wyjaśnić jak to mocowałeś i czym był odczyt?
REKLAMA