Оглавление:

Датчик температуры DIY с использованием одного диода: 3 шага
Датчик температуры DIY с использованием одного диода: 3 шага

Видео: Датчик температуры DIY с использованием одного диода: 3 шага

Видео: Датчик температуры DIY с использованием одного диода: 3 шага
Видео: Датчик температуры своими руками. 2024, Ноябрь
Anonim
Датчик температуры DIY с использованием одного диода
Датчик температуры DIY с использованием одного диода
Датчик температуры DIY с использованием одного диода
Датчик температуры DIY с использованием одного диода

Так как одним из фактов о PN-переходах является то, что их прямое падение напряжения изменяется в зависимости от проходящего тока и температуры перехода, мы собираемся использовать это, чтобы сделать простой дешевый датчик температуры.

Эта установка обычно используется во многих интегральных схемах для измерения внутренней температуры и многих датчиков температуры, таких как знаменитый LM35, который основан на этом свойстве.

Просто прямое падение напряжения на диоде (который представляет собой одиночный PN-переход) изменяется по мере изменения величины проходящего через него тока, а также при изменении температуры диода, падение напряжения будет меняться (при повышении температуры прямое падение уменьшается на величину (от 1,0 до 2,0 милливольт для кремниевых диодов и 2,5 милливольт для германиевых диодов).

Таким образом, пропуская постоянный ток через диод, прямое падение напряжения теперь должно изменяться только в зависимости от температуры диода. Теперь нам просто нужно измерить прямое напряжение диода, применить несколько простых уравнений и вуаля вот и ваш датчик температуры !!!

Запасы

1 - диод 1n4007 # 12 - резистор 1 кОм # 13 - плата Arduino

Шаг 1: Принципиальная схема

Принципиальная электрическая схема
Принципиальная электрическая схема

Как видно на схеме, это очень просто. подключив диод последовательно с токоограничивающим резистором и стабильным источником напряжения, мы можем получить грубый источник постоянного тока, поэтому измеренное напряжение на диоде будет изменяться только из-за изменения температуры. слишком низкий, чтобы через диод проходит большой ток и вызывает заметный самонагрев в диоде, а также не очень высокий резистор, поэтому проходящего тока недостаточно для поддержания линейной зависимости между прямым напряжением и температурой.

резистор 1 кОм с питанием 5 В должен давать ток диода 4 мА, что является достаточным значением для этой цели. I (диод) = VCC / (Rseries + Rdiode)

Шаг 2: кодирование

Нам нужно иметь в виду, что есть некоторые значения, которые нужно настроить в коде, чтобы получить лучшие результаты, например:

1 - VCC_Voltage: поскольку значение analogRead () зависит от VCC микросхемы ATmega, нам нужно добавить его в уравнение после измерения на плате Arduino.

2 - V_OLD_0_C: прямое падение напряжения используемого диода при токе 4 мА и температуре 0 Цельсия

3 - Temperature_Coefficient: температурный градиент вашего диода (лучше получить из таблицы данных), или вы можете измерить его, используя следующее уравнение: Vnew - Vold = K (Tnew - Told)

куда:

Vnew = вновь измеренное падение напряжения после нагрева диода

Vold = измеренное падение напряжения при некоторой комнатной температуре

Tnew = температура, при которой диод был нагрет до

Told = старая комнатная температура, при которой был измерен Вольд.

K = Temperature_Coefficient (отрицательное значение, варьирующееся от -1,0 до -2,5 милливольт). Наконец, теперь вы можете загрузить код и получить результаты измерения температуры.

#define Sens_Pin A0 // PA0 для платы STM32F103C8

двойной V_OLD_0_C = 690.0; // Прямое напряжение 690 мВ при 0 Цельсия при испытательном токе 4 мА

двойной V_NEW = 0; // Новое прямое напряжение при комнатной температуре и испытательном токе 4 мА double Temperature = 0.0; // Расчетная температура помещения double Temperature_Coefficient = -1.6; // изменение на -1,6 мВ на градус Цельсия (-2,5 для германиевых диодов), лучше брать из даташита диода double VCC_Voltage = 5010.0; // Напряжение на шине 5V Arduino в милливольтах (требуется для большей точности) (3300.0 для stm32)

void setup () {

// поместите сюда свой установочный код для однократного запуска: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// поместите сюда ваш основной код для повторного запуска: V_NEW = analogRead (Sens_Pin) * VCC_Voltage / 1024.0; // делим на 4,0, если вы используете 12-битный АЦП Temperature = ((V_NEW - V_OLD_0_C) / Temperature_Coefficient);

Serial.print ("Temp =");

Serial.print (Температура); Serial.println ("C");

задержка (500);

}

Шаг 3. Получение лучших ценностей

Получение лучших ценностей
Получение лучших ценностей
Получение лучших ценностей
Получение лучших ценностей

Я думаю, что при выполнении этого проекта желательно иметь рядом с собой надежное устройство для измерения температуры.

вы можете видеть, что есть заметная ошибка в показаниях, которая может доходить до 3 или 4 градусов по Цельсию, так откуда эта ошибка?

1 - вам может потребоваться настроить переменные, упомянутые на предыдущем шаге

2 - разрешение АЦП Arduino ниже, чем то, что нам нужно, чтобы обнаружить небольшую разницу напряжений

3 - опорное напряжение Arduino (5 В) слишком высокое для этого небольшого изменения напряжения на диоде

Поэтому, если вы собираетесь использовать эту настройку в качестве датчика температуры, вы должны знать, что, хотя это дешево и удобно, оно неточно, но может дать вам очень хорошее представление о температуре вашей системы, если она включена. Печатная плата или установка на работающий двигатель и т. Д.

Эта инструкция предназначена для использования как можно меньшего количества компонентов, но если вы хотите получить наиболее точные результаты от этой идеи, вы можете внести некоторые изменения:

1 - добавьте несколько каскадов усиления и фильтрации, используя операционные усилители, как в этой ссылке 2 - используйте нижний внутренний аналоговый опорный контроллер, как платы STM32F103C8 с аналоговым опорным напряжением 3,3 В (см. Пункт 4) 3 - используйте внутреннее аналоговое опорное напряжение 1,1 В в arduino, но имейте в виду, что вы не можете подключить более 1,1 вольт к любому из аналоговых контактов arduino.

вы можете добавить эту строку в функцию настройки:

analogReference (ВНУТРЕННИЙ);

4 - Используйте микроконтроллер с АЦП с более высоким разрешением, например STM32F103C8, который имеет 12-битное разрешение АЦП Итак, в двух словах, эта установка на основе Arduino может дать хороший обзор температуры вашей системы, но не очень точные результаты (приблизительно 4,88 мВ / показание)

установка STM32F103C8 даст вам довольно точный результат, поскольку он имеет более высокий 12-битный АЦП и более низкое аналоговое опорное значение 3,3 В (приблизительно 0,8 мВ / показание)

Ну вот и все !!: D

Рекомендуемые: