Пребарување код

Како да користите MAX6675 K-тип термопарен сензор со Arduino

Како да користите MAX6675 K-тип термопарен сензор со Arduino

Вовед

Прецизното мерење на температурата е основно барање во безброј електронски проекти, од изградба на рефлов печка за лемење на ПХБ до следење на температурата на 3D печатач или BBQ пушач. Додека стандардните термистори и дигитални сензори како DS18B20 работат добро за умерени температури, тие откажуваат кога станува навистина жешко. Тука доаѓа во игра термопарот од тип К. Тој е робустен, евтин сензор способен да мери екстремни температури, но бара специјален интерфејс чип за да го преведе неговиот мал напонски сигнал во читлива дигитална вредност.

Овој водич демонстрира како да го користите MAX6675 breakout модулот со термопар сензор од тип К и Arduino за читање и прикажување на температури во Целзиусови и Фаренхајтови степени на серискиот монитор (во видео на 00:00). MAX6675 модулот ја обработува сложената кондиционирање на сигналот и компензацијата на ладниот спој за вас, испорачувајќи чисти дигитални податоци преку SPI протоколот. Оваа поставка е совршена за проекти кои бараат сензори за високи температури, како што се:

  • Следење на температурата на 3D печатач или загреана подлога.
  • Изградба на дигитален термометар за BBQ скара или кујнска печка.
  • Креирање контролер за температура за DIY рефлов печка или станица за лемење.
  • Мерење на температурата на издувните гасови во автомобилски или роботски проекти.

Хардверски компоненти

За да го следите овој туторијал, ќе ви требаат следниве компоненти. Поврзувањето е едноставно, а кодот е компатибилен со сите верзии на Arduino плочата (во видео на 00:47).

  • Arduino плоча (Uno, Mega, Nano, итн.)
  • MAX6675 модул (breakout плоча)
  • Термопар сензор од тип К (било кој стил на сонда)
  • Поврзувачки жици

Самиот MAX6675 модул е прилично мал. Како што е прикажано во видеото, неговите димензии се 32.1mm во должина, 15.6mm во ширина и 16.3mm во длабочина (во видео на 02:35). Модулот има мал терминален блок за поврзување на термопарот и ред на пинови за напојување и SPI комуникација. Термопарот од тип К се поврзува со модулот со правилна поларизација; црвената (позитивна) жица оди на '+' терминалот, а жолтата (негативна) жица на '-' терминалот (во видео на 01:27).

Технички спецификации

Пред да навлеземе во поврзувањето, корисно е да ги разбереме можностите на MAX6675 чипот. Според податочната листа од Maxim Integrated, модулот може да мери широк опсег на температури, што го прави погоден за индустриски и хоби апликации (во видео на 01:44).

  • Опсег на мерење: 0°C до +1024°C
  • Резолуција: 12-битна (0.25°C)
  • Комуникација: SPI (Serial Peripheral Interface)
  • Работен напон: 3.0V до 5.5V

Водич за поврзување

Поврзувањето за MAX6675 е едноставно, бара само напојување и три дигитални пинови за SPI комуникација. Во овој пример, ќе ги користиме Arduino пиновите 4, 5 и 6 за податочните линии (во видео на 03:28). Поврзувањата се следниве:

  • VCC (Портокалова жица): Се поврзува со 5V пинот на Arduino (во видео на 02:56).
  • GND (Жолта жица): Се поврзува со GND пинот на Arduino (во видео на 02:51).
  • SO - Serial Out (Зелена жица): Се поврзува со дигиталниот пин 4 на Arduino (во видео на 03:01).
  • CS - Chip Select (Сива жица): Се поврзува со дигиталниот пин 5 на Arduino (во видео на 03:08).
  • SCK - Serial Clock (Бела жица): Се поврзува со дигиталниот пин 6 на Arduino (во видео на 03:14).

Објаснување на кодот

Кодот даден во овој туторијал е дизајниран да биде едноставен и лесен за менување. Тој се потпира на библиотека наречена max6675.h, која треба прво да ја инсталирате. Можете да ја преземете библиотеката како ZIP датотека и да ја додадете во вашиот Arduino IDE со одење на Sketch -> Include Library -> Add .ZIP Library. По инсталацијата, мора да ја затворите и повторно да ја отворите Arduino IDE за библиотеката да биде препознаена (во видео на 04:14).

Откако библиотеката е инсталирана, можете да го копирате дадениот код во вашата скица. Првиот чекор е да ја вклучите библиотеката, што му дава на Arduino пристап до функциите потребни за комуникација со MAX6675 чипот (во видео на 03:55). Следно, ќе ги дефинирате пиновите на кои е поврзан модулот. Ова се единствените линии на код што треба да ги промените ако одлучите да користите различни пинови на вашиот Arduino (во видео на 04:52).


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

По дефинирањето на пиновите, создаваме инстанца од класата MAX6675. Редоследот на аргументите во оваа линија е критичен; тие мора да бидат во редослед sckPin, csPin и soPin. Нивното заменување ќе спречи сензорот да работи правилно (во видео на 05:21).


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

Во функцијата setup(), го иницијализираме серискиот монитор со брзина на пренос од 9600 бауди за да можеме да ги гледаме отчитувањата на температурата на нашиот компјутер (во видео на 05:41). Главната логика се наоѓа во функцијата loop(). Тука, ги повикуваме методите readCelsius() и readFahrenheit() на објектот robojax за да ја добиеме температурата и да ја испечатиме на серискиот монитор. Доцнење од 1000 милисекунди (1 секунда) се додава на крајот на јамката за да се постави стапката на освежување (во видео на 05:54). Ако сакате побрзи ажурирања, можете да го намалите ова доцнење на 100 милисекунди или помалку (во видео на 08:44).


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

Овој код е основен тест за отчитување. Лесно можете да го проширите за да активирате дејства врз основа на температурни прагови. На пример, можете да користите if изјава за да проверите дали температурата надминува одредена вредност и потоа да вклучите вентилатор за да го изладите системот, или да вклучите грејач ако температурата падне премногу ниско (во видео на 06:42).

Демонстрација на проектот во живо

За да се демонстрираат можностите на сензорот, видеото покажува како термопарот се загрева со топлински пиштол. Како што се применува топлината, отчитувањето на температурата на серискиот монитор брзо се зголемува. Демонстрацијата покажува дека температурата достигнува над 125 степени Целзиусови, со соодветната вредност во Фаренхајти прикажана покрај неа (во видео на 08:25). Откако ќе се отстрани топлинскиот пиштол, можете да видите како температурата постепено се лади, потврдувајќи ја точноста и одзивноста на сензорот. Оваа повратна информација во реално време го прави модулот MAX6675 одличен избор за секој проект што бара прецизно следење на високи температури.

Видео поглавја

  • [00:00] Вовед и преглед на проектот
  • [01:15] Објаснет хардвер
  • [02:41] Објаснето жичање
  • [03:28] Објаснет код
  • [07:26] Демонстрација на мерење температура

Слики

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
Јазик: 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);
}

Работи што можеби ќе ви требаат

Ресурси и референци

Датотеки📁

Други датотеки