В этом проекте мы сделаем промышленный термометр на основе термопары MAX6675 и платы Arduino, а измеренную температуру будем отображать на экране ЖК-дисплея 16×2. Используя плату Breakout Board MAX6675 и термопару K-типа (K-Type), мы можем легко измерять температуру в диапазоне от 0°C до 1024°C с помощью любого микроконтроллера. Выходные данные чипа отправляются через интерфейс SPI. Этот интерфейс есть и у платы Arduino Uno, поэтому мы без труда сможем подключить термопару MAX6675 к этой плате.
Ранее для измерения температуры с помощью платы Arduino мы использовали датчики температуры, такие как DS18B20, LM35 и DHT11, но они могут измерять только температуру ниже 125 °C. Когда дело доходит до измерения высоких температур, MAX6675 является лучшим вариантом. Большим преимуществом термопары является простота ее использования при измерении высоких температур. Единственный другой способ измерения такой высокой температуры — использование бесконтактного датчика температуры MLX90614. Но недостатком бесконтактного ИК-датчика температуры является его высокая стоимость.
Этот чип MAX6675 разработан специально для использования с термопарой K-типа, которая является самой популярной микросхемой. Чип имеет внутренние функции для измерения температуры, все, что нужно, это подключить термопару и считать выход с контактов SPI. Итак, давайте сделаем промышленный термометр на термопаре MAX6675, Arduino и ЖК-дисплее.
Также ранее на нашем сайте мы рассматривали использование термопары MAX6675 в проекте ПИД регулятора температуры на Arduino.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- ЖК дисплей 16x2 (купить на AliExpress).
- Модуль преобразователя термопары на MAX6675 с термопарой типа К (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Датчик температуры термопары типа K MAX7765
Этот модуль MAX6675 + датчик термопары типа K преобразует сигнал с термопары K-типа Maxim MAX6675 в цифровой формат. Он обеспечивает совместимый с микроконтроллером цифровой последовательный интерфейс (совместимый с SPI) для точного измерения температуры с температурной компенсацией.
Он имеет 12-битное разрешение, позволяя измерять температуру до +1024 °C с разрешающей способностью до 0,25 °C, он использует 8 младших разрядов для измерения температур от 0 °C до +700 °C. Винтовые клеммы позволяют подключать термопары к лепестковым разъемам, а 5-контактный стандартный 0,1-дюймовый разъем обеспечивает интерфейс для микроконтроллера.
Технические характеристики модуля
1. Рабочее напряжение: DC 5 В.
2. Рабочий ток: 50 мА.
3. Диапазон измеряемых температур: 0 °C – 1024 °C.
4. Точность измерения: +/-1,5 °C.
5. Разрешение: 0,25 °C.
6. Режим вывода: цифровой сигнал SPI.
Принцип работы термопары (эффект Зеебека)
Термопара измеряет разницу потенциалов между горячим и холодным концом двух разнородных металлов. Один конец металла поддерживается при высокой температуре, а другой — при холодной температуре льда . Если это сделать, то разница температур на проводе термопары от конца до конца вызовет генерацию напряжения (эффект Зеебека ), пропорционального разнице температур.
Напряжения, создаваемые эффектом Зеебека, невелики, обычно всего несколько микровольт (миллионных долей вольта) на кельвин разницы температур в месте соединения. Если разница температур достаточно велика, некоторые устройства на основе эффекта Зеебека могут создавать несколько милливольт (тысячных долей вольта).
Компенсация холодного спая и ИС MAX6675
Генерируемое напряжение чрезвычайно мало, поэтому для преобразования показаний в пригодную для использования форму требуется усилитель. Поэтому используется метод, называемый Cold-Junction-Compensation (CJC) .
Вот тут-то и появляется MAX6675, поскольку в нем есть все встроенное, например, встроенный усилитель, компенсатор холодного спая (CJC) и АЦП. Фактически, чип делает использование термопары типа K тривиальным, и вам даже не нужно извлекать аналоговое значение, АЦП генерирует цифровой выход, который передается как 12-битная последовательность .
Взаимодействие термопары MAX6675 и ЖК-дисплея с Arduino
Теперь давайте подключим датчик термопары MAX6675 к плате Arduino и отобразим показания температуры на ЖК-дисплее 16×2. Схема подключения приведена на следующем рисунке.
Соединение между платой Arduino UNO/Nano и MAX6675 простое, как показано ниже.
Аналогично подключите ЖК-дисплей 16X2 согласно приведенной принципиальной схеме. Подключите контакты 1, 5, 16 ЖК-дисплея к GND, а 2, 15 к VCC 5 В. Используйте потенциометр 10 кОм на выводе 3 для регулировки контрастности ЖК-дисплея. Подключите выводы 4, 6, 11, 12, 13, 14 дисплея к контактам Arduino 7, 6, 5, 4, 3, 2. Вы также можете использовать макетную плату для соединения термопары max6675, ЖК-дисплея и Arduino.
Исходный код программы
Исходный код программы для сопряжения модуля MAX6675 с платой Arduino приведен ниже. Код не требует никаких дополнительных библиотек (кроме встроенных в Arduino IDE) для компиляции. Просто скопируйте код и вставьте его в Arduino IDE. Затем загрузите на плату Arduino, которую вы используете.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include <SPI.h> #include <LiquidCrystal.h> LiquidCrystal lcd(7, 6, 5, 4, 3, 2); #define MAX6675_CS 10 #define MAX6675_SO 12 #define MAX6675_SCK 13 void setup() { lcd.begin(16,2); } void loop() { float temperature_read = readThermocouple(); lcd.setCursor(0,0); lcd.print(" TEMPERATURE"); lcd.setCursor(4,1); lcd.print(temperature_read,2); delay(1000); } double readThermocouple() { uint16_t v; pinMode(MAX6675_CS, OUTPUT); pinMode(MAX6675_SO, INPUT); pinMode(MAX6675_SCK, OUTPUT); digitalWrite(MAX6675_CS, LOW); delay(1); // Read in 16 bits, // 15 = 0 always // 14..2 = 0.25 degree counts MSB First // 2 = 1 if thermocouple is open circuit // 1..0 = uninteresting status v = shiftIn(MAX6675_SO, MAX6675_SCK, MSBFIRST); v <<= 8; v |= shiftIn(MAX6675_SO, MAX6675_SCK, MSBFIRST); digitalWrite(MAX6675_CS, HIGH); if (v & 0x4) { // Bit 2 indicates if the thermocouple is disconnected return NAN; } // The lower three bits (0,1,2) are discarded status bits v >>= 3; // The remaining bits are the number of 0.25 degree (C) counts return v*0.25; } |
Тестирование работы проекта
Как только код будет загружен на плату, ЖК-дисплей начнет отображать температуру в помещении в градусах Цельсия. Вы можете преобразовать значение температуры в градусы Фаренгейта. Температура будет обновляться на ЖК-дисплее каждую секунду.
Чтобы проверить работу и способность датчика измерять высокую температуру, вы можете начать нагревать датчик паяльником или простой газовой зажигалкой. В моем случае я использовал пламя газовой зажигалки и нагревал стержень датчика.
30 просмотров