Search Code

Jak używać czujnika termopary typu K MAX6675 z Arduino

Jak używać czujnika termopary typu K MAX6675 z Arduino

Wprowadzenie

Dokładny pomiar temperatury to podstawowe wymaganie w niezliczonych projektach elektronicznych, od budowy pieca rozpływowego do lutowania PCB po monitorowanie temperatury hotendu drukarki 3D czy wędzarni BBQ. Podczas gdy standardowe termistory i czujniki cyfrowe, takie jak DS18B20, dobrze sprawdzają się w umiarkowanych temperaturach, zawodzą, gdy robi się naprawdę gorąco. W tym miejscu z pomocą przychodzi termopara typu K. To wytrzymały, niedrogi czujnik zdolny do pomiaru ekstremalnych temperatur, ale wymaga specjalnego układu interfejsowego, aby przetłumaczyć jego maleńki sygnał napięciowy na czytelną wartość cyfrową.

Ten przewodnik pokazuje, jak używać modułu MAX6675 z termoparą typu K i Arduino do odczytu i wyświetlania temperatur zarówno w stopniach Celsjusza, jak i Fahrenheita na monitorze szeregowym (na filmie w 00:00). Moduł MAX6675 zajmuje się za Ciebie złożonym kondycjonowaniem sygnału i kompensacją zimnych końców, wyprowadzając czyste dane cyfrowe przez protokół SPI. Ta konfiguracja jest idealna do projektów wymagających pomiaru wysokich temperatur, takich jak:

  • Monitorowanie temperatury hotendu lub podgrzewanego stołu w drukarce 3D.
  • Budowa termometru cyfrowego do grilla BBQ lub piekarnika kuchennego.
  • Tworzenie regulatora temperatury do domowego pieca rozpływowego lub stacji lutowniczej.
  • Pomiar temperatury spalin w projektach motoryzacyjnych lub robotycznych.

Komponenty sprzętowe

Aby śledzić ten samouczek, będziesz potrzebować następujących komponentów. Okablowanie jest proste, a kod jest kompatybilny ze wszystkimi wersjami płytek Arduino (na filmie w 00:47).

  • Płytka Arduino (Uno, Mega, Nano itp.)
  • Moduł MAX6675 (płytka breakout)
  • Czujnik termopary typu K (dowolny styl sondy)
  • Przewody połączeniowe

Sam moduł MAX6675 jest dość mały. Jak pokazano na filmie, jego wymiary to 32,1 mm długości, 15,6 mm szerokości i 16,3 mm głębokości (na filmie w 02:35). Moduł posiada małą listwę zaciskową do podłączenia termopary oraz rząd pinów do zasilania i komunikacji SPI. Termopara typu K podłączana jest do modułu z zachowaniem właściwej polaryzacji; czerwony (dodatni) przewód idzie do zacisku „+”, a żółty (ujemny) do zacisku „-” (na filmie w 01:27).

Specyfikacje techniczne

Zanim przejdziemy do okablowania, warto zrozumieć możliwości układu MAX6675. Zgodnie z kartą katalogową firmy Maxim Integrated, moduł może mierzyć szeroki zakres temperatur, co czyni go odpowiednim zarówno do zastosowań przemysłowych, jak i hobbystycznych (na filmie w 01:44).

  • Zakres pomiarowy: 0°C do +1024°C
  • Rozdzielczość: 12-bitowa (0,25°C)
  • Komunikacja: SPI (Serial Peripheral Interface)
  • Napięcie zasilania: 3,0 V do 5,5 V

Schemat połączeń

Okablowanie MAX6675 jest proste i wymaga tylko połączenia zasilania oraz trzech pinów cyfrowych do komunikacji SPI. W tym przykładzie użyjemy pinów Arduino 4, 5 i 6 dla linii danych (na filmie w 03:28). Połączenia są następujące:

  • VCC (pomarańczowy przewód): Łączy się z pinem 5V Arduino (na filmie w 02:56).
  • GND (żółty przewód): Łączy się z pinem GND Arduino (na filmie w 02:51).
  • SO – Serial Out (zielony przewód): Łączy się z pinem cyfrowym Arduino 4 (na filmie w 03:01).
  • CS – Chip Select (szary przewód): Łączy się z pinem cyfrowym Arduino 5 (na filmie w 03:08).
  • SCK – Serial Clock (biały przewód): Łączy się z pinem cyfrowym Arduino 6 (na filmie w 03:14).

Wyjaśnienie kodu

Kod dostarczony w tym samouczku został zaprojektowany tak, aby był prosty i łatwy do modyfikacji. Opiera się na bibliotece o nazwie max6675.h, którą należy najpierw zainstalować. Możesz pobrać bibliotekę jako plik ZIP i dodać ją do Arduino IDE, przechodząc do Szkic -> Dołącz bibliotekę -> Dodaj bibliotekę .ZIP. Po instalacji musisz zamknąć i ponownie otworzyć Arduino IDE, aby biblioteka została rozpoznana (na filmie w 04:14).

Po zainstalowaniu biblioteki możesz skopiować dostarczony kod do swojego szkicu. Pierwszym krokiem jest dołączenie pliku biblioteki, co daje Arduino dostęp do funkcji potrzebnych do komunikacji z układem MAX6675 (na filmie w 03:55). Następnie zdefiniujesz piny, do których podłączony jest moduł. To jedyne linie kodu, które musisz zmienić, jeśli zdecydujesz się użyć innych pinów na swoim Arduino (na filmie w 04:52).


int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin

Po zdefiniowaniu pinów tworzymy instancję klasy MAX6675. Kolejność argumentów w tej linii jest krytyczna; muszą być w kolejności sckPin, csPin i soPin. Zamiana ich miejscami uniemożliwi prawidłowe działanie czujnika (na filmie w 05:21).


MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675

W funkcji setup() inicjalizujemy monitor szeregowy z szybkością transmisji 9600, abyśmy mogli podglądać odczyty temperatury na naszym komputerze (na filmie o 05:41). Główna logika znajduje się w funkcji loop(). Tutaj wywołujemy metody readCelsius() i readFahrenheit() obiektu robojax, aby pobrać temperaturę i wydrukować ją na monitorze szeregowym. Na końcu pętli dodano opóźnienie 1000 milisekund (1 sekunda), aby ustawić częstotliwość odświeżania (na filmie o 05:54). Jeśli chcesz szybszych aktualizacji, możesz zmniejszyć to opóźnienie do 100 milisekund lub mniej (na filmie o 08:44).


Serial.print("C = "); 
Serial.print(robojax.readCelsius());
Serial.print(" F = ");
Serial.println(robojax.readFahrenheit());
delay(1000);

Ten kod to podstawowy test odczytu. Możesz go łatwo rozbudować, aby wyzwalał akcje na podstawie progów temperatury. Na przykład możesz użyć instrukcji if, aby sprawdzić, czy temperatura przekracza określoną wartość, a następnie włączyć wentylator w celu schłodzenia systemu lub włączyć grzałkę, jeśli temperatura spadnie zbyt nisko (na filmie o 06:42).

Prezentacja działania projektu na żywo

Aby zademonstrować możliwości czujnika, na filmie termopara jest podgrzewana opalarką. W miarę przykładania ciepła odczyt temperatury na monitorze szeregowym szybko rośnie. Demonstracja pokazuje temperaturę przekraczającą 125 stopni Celsjusza, z odpowiednią wartością w stopniach Fahrenheita wyświetlaną obok (na filmie o 08:25). Po usunięciu opalarki można zobaczyć, jak temperatura stopniowo spada, co potwierdza dokładność i szybkość reakcji czujnika. Ta informacja zwrotna w czasie rzeczywistym sprawia, że moduł MAX6675 jest doskonałym wyborem do każdego projektu wymagającego precyzyjnego monitorowania wysokich temperatur.

Rozdziały filmu

  • [00:00] Wprowadzenie i przegląd projektu
  • [01:15] Omówienie sprzętu
  • [02:41] Omówienie podłączeń
  • [03:28] Omówienie kodu
  • [07:26] Demonstracja pomiaru temperatury

Obrazy

MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
K-Type Thermocoupler module with wire
K-Type Thermocoupler module with wire
K-Type thermocoupler connector
K-Type thermocoupler connector
Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
171-How to use a MAX6675 thermocouple K-type sensor with Arduino
Język: C++
// Original library source:
// www.ladyada.net/learn/sensors/thermocouple
 /*
 * Arduino code to read temperature using MAX6675 chip and K-type thermocouple
 * and display it on the serial monitor
 * 
 * Watch video instructions for this code: https://youtu.be/VGqONmUinqA
 * Download this code from Robojax.com
 *  
 * Updated by Ahmad Shamshiri for Robojax.com on Saturday, November 23, 2018 
 * at 21:25 in Ajax, Ontario, Canada
 * 
 
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 * This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

 
#include "max6675.h" // max6675.h file is part of the library that you should download from Robojax.com

int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin

MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675


void setup() {

          
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax MAX6675"); 

}

void loop() {
  // Basic readout test, just print the current temperature
  // Robojax.com MAX6675 temperature reading on serial monitor
   Serial.print("C = "); 
   Serial.print(robojax.readCelsius());
   Serial.print(" F = ");
   Serial.println(robojax.readFahrenheit());

             
   delay(1000);
}

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Pliki📁

Inne pliki