Обзор
KY-013 — это аналоговый модуль датчика температуры на основе NTC терморезистора. Он обеспечивает измерение температуры в диапазоне -55°C до +125°C с точностью ±0.5°C. Модуль работает при напряжениях 3.3В–5В и идеально подходит для систем климат-контроля, мониторинга окружающей среды и других температурных применений.
KY-013 — аналоговый модуль датчика температуры с NTC терморезистором. Он измеряет температуру от -55°C до +125°C с точностью ±0.5°C и работает от 3.3В до 5В. Подходит для метеостанций, систем отопления и других проектов.
О модуле KY-013 Analog Temperature Sensor
KY-013 — это аналоговый модуль датчика температуры, который использует NTC терморезистор (Negative Temperature Coefficient). При повышении температуры сопротивление NTC терморезистора уменьшается, что позволяет определить температуру путём измерения напряжения при использовании в конфигурации делителя напряжения. Модуль работает при напряжениях между 3.3В и 5В, что делает его совместимым с различными микроконтроллерами, включая Arduino и ESP32.
🔗 Подробнее о аналоговых датчиках температуры. 🔗 Ознакомьтесь с NTC терморезисторами для понимания принципа работы.
Приобретите KY-013
Характеристики KY-013
Полные технические характеристики модуля KY-013 Analog Temperature Sensor.
Распиновка KY-013
KY-013 — это 3-пиновый аналоговый модуль датчика температуры с NTC терморезистором.
- Интерфейс — аналоговый выход (делитель напряжения).
- НТС — сопротивление падает с ростом температуры.
- Передача сигнала — требует пересчёта через уравнение Steinhart-Hart.
| № | Название | Тип | Описание | Примечания |
|---|---|---|---|---|
| 1 | - | Питание | Земля (GND) | Общая земля |
| 2 | средний | Питание | Питание (3.3В–5В) | Любое в диапазоне |
| 3 | S | Аналоговый выход | Аналоговый сигнал | Напряжение меняется с температурой |
Подключение KY-013 к Arduino
Для интерфейса KY-013 с Arduino используйте аналоговый вход (ADC). Модуль работает от 5В, что совместимо с Arduino, но также может работать и от 3.3В. Выход датчика — аналоговое напряжение, которое нужно преобразовать в температуру с помощью уравнения Steinhart-Hart.
| Вывод KY-013 | Подключение | Вывод Arduino | Описание |
|---|---|---|---|
| - (Pin 1)обязательно | → | GND | Общая земля |
| средний (Pin 2)обязательно | → | 5V (или 3.3V) | Питание (3.3В или 5В) |
| S (Pin 3)обязательно | → | A0 (или любой аналоговый) | Аналоговый выход (требует пересчёта) |
Устранение неполадок KY-013
Распространённые проблемы и решения, которые помогут запустить датчик.
Некорректные показания температуры
Значения слишком высокие, низкие или плавающие
Проблема: датчик показывает нестабильные или заведомо неверные значения температуры.
Возможные причины: нестабильное питание, неправильные соединения, шумы в аналоговой цепи.
Решение: проверьте стабильность питания, убедитесь в надёжности контактов, реализуйте фильтрацию сигнала в коде (среднее значение). Убедитесь, что используете правильные параметры в уравнении Steinhart-Hart (R0=10 кОм, B=3950K).
Датчик не отдаёт данных
Постоянное значение или отсутствие изменений
Проблема: аналоговый вход показывает одно и то же значение независимо от температуры.
Возможные причины: окисление контактов, повреждение NTC элемента, короткое замыкание, неправильный вывод на плате.
Решение: проверьте целостность соединений, протестируйте датчик мультиметром (сопротивление должно меняться при нагреве/охлаждении). Убедитесь, что подключены правильные пины (не перепутаны VCC и сигнал).
Ошибка переполнения ADC на ESP32
Значения за пределами 0–4095
Проблема: значения analogRead выходят за пределы диапазона.
Причина: неправильный режим ADC или подача напряжения выше, чем диапазон ADC.
Решение: на ESP32 используйте adc1_config_width(ADC_WIDTH_BIT_12) для 12-битного ADC (0–4095) и правильную аттенюацию (ADC_ATTEN_DB_11 для 0–3.3В). Убедитесь, что напряжение на сигнальном выводе не превышает 3.3В при питании 3.3В.
Советы по отладке
Serial монитор
Проверка сырых значений ADC
Проверка сопротивления мультиметром
Вручную убедиться в работе NTC
Дополнительные ресурсы
Примеры программирования KY-013
Готовые к использованию примеры кода для различных платформ и фреймворков
Пример для Arduino
Совместим с Arduino IDE и платами ESP32 (Arduino core)
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32 (Arduino core)
// Аналоговый датчик температуры KY-013 на Arduino
// Использует уравнение Steinhart-Hart для расчёта температуры
const int sensorPin = A0; // Аналоговый вход подключен к A0
// Параметры NTC терморезистора
#define R0 10000.0 // Сопротивление при 25°C (10 кОм)
#define B_VALUE 3950.0 // B-constant (3950K)
#define T0 298.15 // 25°C в Кельвинах
#define V_SUPPLY 5.0 // Напряжение питания (5В для Arduino)
#define R_SERIES 10000.0 // Сопротивление резистора в делителе (10 кОм)
void setup() {
Serial.begin(9600);
Serial.println("KY-013 Temperature Sensor");
}
void loop() {
// 1. Считываем аналоговое значение (0-1023 для 10-битного ADC)
int rawValue = analogRead(sensorPin);
// 2. Преобразуем в напряжение
float voltage = rawValue * (V_SUPPLY / 1023.0);
// 3. Рассчитываем сопротивление NTC
// Формула делителя: V_out = V_SUPPLY * (R_NTC / (R_SERIES + R_NTC))
// => R_NTC = R_SERIES * V_out / (V_SUPPLY - V_out)
float resistance = R_SERIES * voltage / (V_SUPPLY - voltage);
// 4. Уравнение Steinhart-Hart (упрощённое)
// 1/T = 1/T0 + (1/B) * ln(R/R0)
float lnR_R0 = log(resistance / R0);
float temperatureK = 1.0 / (1.0 / T0 + (1.0 / B_VALUE) * lnR_R0);
float temperatureC = temperatureK - 273.15;
// 5. Выводим результат
Serial.print("Raw: ");
Serial.print(rawValue);
Serial.print(" | Voltage: ");
Serial.print(voltage, 3);
Serial.print("V | Resistance: ");
Serial.print(resistance, 1);
Serial.print(" Ohm | Temperature: ");
Serial.print(temperatureC, 2);
Serial.println(" °C");
delay(1000); // Задержка 1 секунда
}
Этот Arduino-скетч считывает аналоговое значение с NTC терморезистора KY-013, преобразует его в напряжение, затем в сопротивление, и наконец вычисляет температуру с использованием уравнения Steinhart-Hart. Для корректного расчёта необходимо знать параметры NTC: R0 = 10 кОм при 25°C, B-constant = 3950K. Резистор в делителе также должен быть 10 кОм.
Важные замечания:
- Для Arduino Nano/Uno используется 10-битный ADC (0–1023) и напряжение питания 5В.
- На ESP32 в режиме Arduino используется 12-битный ADC (0–4095) и обычно 3.3В.
- Результаты могут незначительно отличаться из-за расхождений реальных параметров NTC и tolerance резистора.
Уточнение параметров
Если датчик показывает систематическую погрешность, откалибруйте его, измерив температуру одновременно с эталонным термометром и подстроив R0 или B_VALUE в коде.
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
C++
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
// Аналоговый датчик KY-013 на ESP-IDF
// Использует ADC1 и уравнение Steinhart-Hart
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/adc.h"
#include "math.h"
#define ADC_CHANNEL ADC1_CHANNEL_0 // GPIO36 (ADC1)
#define ADC_WIDTH ADC_WIDTH_BIT_12 // 12-битный ADC
#define ADC_ATTEN ADC_ATTEN_DB_11 // Полный диапазон 0–3.3В
// Параметры NTC
#define R0 10000.0
#define B_VALUE 3950.0
#define T0 298.15
#define R_SERIES 10000.0
#define V_SUPPLY 3.3
void app_main() {
// Настройка ADC
adc1_config_width(ADC_WIDTH);
adc1_config_channel_atten(ADC_CHANNEL, ADC_ATTEN);
while (1) {
// Считываем значение (0–4095)
int raw = adc1_get_raw(ADC_CHANNEL);
// Преобразуем в напряжение (0–3.3В)
float voltage = raw * (V_SUPPLY / 4095.0);
// Рассчитываем сопротивление NTC
float resistance = R_SERIES * voltage / (V_SUPPLY - voltage);
// Уравнение Steinhart-Hart
float lnR_R0 = log(resistance / R0);
float temperatureK = 1.0 / (1.0 / T0 + (1.0 / B_VALUE) * lnR_R0);
float temperatureC = temperatureK - 273.15;
// Вывод
printf("Raw: %d | Voltage: %.3fV | R_NTC: %.1f Ohm | Temp: %.2f °C\n",
raw, voltage, resistance, temperatureC);
vTaskDelay(pdMS_TO_TICKS(1000)); // Задержка 1 секунда
}
}
Пример для ESP-IDF демонстрирует использование 12-битного ADC ESP32 (ADC1, канал 0, GPIO36) для чтения аналогового сигнала от NTC термистора. Код включает настройку ADC, чтение сырого значения, преобразование в напряжение, расчёт сопротивления NTC, применение уравнения Steinhart-Hart и вывод результата каждую секунду.
Ключевые моменты:
-
Используется ADC_ATTEN_DB_11 для полного диапазона 0–3.3В.
-
Параметры NTC: R0 = 10 кОм, B = 3950K.
-
Расчёт температуры в °C вычитает 273.15 из кельвинов.
-
Для точности можно добавить усреднение несколькихADC-сэмплов.
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
YAML
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
# Конфигурация ESPHome для KY-013
# Требуется интеграция с Home Assistant
# Настройка ADC (ESP32)
adc:
- pin: GPIO36
id: ky013_adc
attenuation: 11dB
# Создаем NTC сенсор на основе ADC
sensor:
- platform: adc
pin: GPIO36
id: ntc_resistance
name: "KY-013 Resistance"
unit_of_measurement: "Ω"
update_interval: 5s
attenuation: 11dB
# Рассчитываем температуру через lambda-выражение
- platform: template
name: "KY-013 Temperature"
unit_of_measurement: "°C"
lambda: |-
// Получаем сопротивление из ADC
float voltage = id(ntc_resistance).state * (3.3 / 4095.0);
float r_ntc = 10000.0 * voltage / (3.3 - voltage); // R_series = 10 кОм
// Steinhart-Hart
float ln_r = log(r_ntc / 10000.0);
float temp_k = 1.0 / (1.0 / 298.15 + (1.0 / 3950.0) * ln_r);
return temp_k - 273.15;
update_interval: 5s
ESPHome использует ADC для измерения напряжения на NTC, а затем применяет lambda-выражение для расчёта температуры по уравнению Steinhart-Hart. Сначала измеряется напряжение (0–3.3В), затем вычисляется сопротивление NTC, учитывая резистор делителя 10 кОм, и наконец температура в °C.
Примечания:
-
Убедитесь, что использован правильный пин ADC (GPIO36) и аттенюация 11dB (0–3.3В).
-
Параметры NTC (R0 = 10 кОм, B = 3950K) соответствуют KY-013.
-
Можно добавить фильтрацию (moving average) для стабилиции показаний.
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
src/main.cpp
// KY-013 Temperature Sensor with PlatformIO (ESP32)
// Uses ADC + Steinhart-Hart equation
const int sensorPin = 36; // GPIO36 (ADC1)
const float V_SUPPLY = 3.3; // ESP32 ADC reference
const float R_SERIES = 10000.0;
const float R0 = 10000.0;
const float B_VALUE = 3950.0;
const float T0 = 298.15;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("KY-013 Sensor (PlatformIO)");
}
void loop() {
// Read raw ADC (12-bit on ESP32 Arduino)
int rawValue = analogRead(sensorPin);
// Voltage
float voltage = rawValue * (V_SUPPLY / 4095.0);
// NTC resistance
float resistance = R_SERIES * voltage / (V_SUPPLY - voltage);
// Steinhart-Hart
float lnR = log(resistance / R0);
float tempK = 1.0 / (1.0 / T0 + (1.0 / B_VALUE) * lnR);
float tempC = tempK - 273.15;
Serial.printf("Raw: %d | V: %.3fV | R: %.1fΩ | Temp: %.2f°C\n",
rawValue, voltage, resistance, tempC);
delay(2000);
}
Проект PlatformIO для ESP32 использует фреймворк Arduino и читает аналоговый сигнал с GPIO36. На ESP32 ADC имеет 12-битное разрешение (0–4095) и диапазон 0–3.3В. Уравнение Steinhart-Hart применяется для перевода сопротивления NTC в температуру.
Ключевые параметры соответствуют KY-013:
- Резистор делителя: 10 кОм
- NTC R0: 10 кОм при 25°C
- B-value: 3950K
Файл platformio.ini минимален: платформа ESP32, board esp32dev, фреймворк arduino и скорость монитора 115200 бод.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
# KY-013 Temperature Sensor (MicroPython)
# ADC + Steinhart-Hart equation
import machine
import time
import math
# Настройка ADC
sensor_pin = machine.Pin(36) # GPIO36
adc = machine.ADC(sensor_pin)
adc.atten(machine.ADC.ATTN_11DB) # 0–3.3В диапазон
# Параметры NTC
R0 = 10000.0 # 10 кОм при 25°C
B_VALUE = 3950.0 # B-constant
T0 = 298.15 # 25°C in Kelvin
R_SERIES = 10000.0 # Резистор делителя 10 кОм
V_SUPPLY = 3.3 # Напряжение питания ESP32
def read_temperature():
# Считываем сырое ADC-значение (0–4095)
raw = adc.read()
# Напряжение
voltage = raw * (V_SUPPLY / 4095.0)
# Сопротивление NTC
resistance = R_SERIES * voltage / (V_SUPPLY - voltage)
# Steinhart-Hart
ln_r = math.log(resistance / R0)
temp_k = 1.0 / (1.0 / T0 + (1.0 / B_VALUE) * ln_r)
temp_c = temp_k - 273.15
return temp_c
while True:
try:
temperature = read_temperature()
print("Temperature: {:.2f} °C".format(temperature))
except Exception as e:
print("Sensor error:", e)
time.sleep(1)
Этот скрипт MicroPython для ESP32 использует ADC на GPIO36 с аттенюацией 11dB для диапазона 0–3.3В. Функция read_temperature() вычисляет температуру через уравнение Steinhart-Hart, используя параметры NTC 10 кОм, B=3950K и резистор делителя 10 кОм. Основной цикл выводит значение каждую секунду, перехватывая исключения для отладки.
При необходимости можно добавить усреднение нескольких измерений (например, 5–10 сэмплов) для снижения шума аналогового входа.
Итоги KY-013
Модуль **KY-013 Analog Temperature Sensor** — это простой и доступный аналоговый датчик температуры на NTC терморезисторе. Он работает от 3.3В или 5В и подходит для базовых задач контроля температуры. Для получения значений требуется аналоговый вход микроконтроллера и программный расчёт через уравнение Steinhart-Hart.
Рекомендации
Для точных измерений используйте резистор делителя с допуском 1% или меньше. Добавьте фильтрацию (усреднение 5–10 сэмплов) кода для снижения шума аналогового входа. Размещайте датчик подальше от источников тепла для корректных показаний.
Безопасность прежде всего
Не подавайте на аналоговый вход напряжение выше, чем опорное (AREF на Arduino или 3.3В на ESP32). Избегайте короткого замыкания между выводами питания и сигналом. Модуль выдерживает до 125°C, но для долговечности ограничьте диапазон до -40…+85°C.
Готовы начать создавать?
Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-013 в ваш проект на Arduino или ESP32 и воплотить идеи в жизнь!
Изучите альтернативные датчики
Ищете альтернативы KY-013? Посмотрите эти похожие датчики — возможно, они лучше подойдут под задачи вашего проекта.

KY-011 Two-color LED Module
Модуль двухцветного светодиода (красный/зелёный). Управляется через цифровой выход, позволяет отображать два состояния...

KY-012 Active Buzzer Module
Активный зуммер, который генерирует tones при подаче питании. Простой цифровой выход для звуковых сигналов и прерываний...

KY-010 Bistable Push-button Module
Бистабильный (защёлкивающийся) модуль кнопки. Нажимаете один раз — включается, ещё раз — выключается. Отлично подходит...