Съдържание:

Направи си сам сензор за температура с един диод: 3 стъпки
Направи си сам сензор за температура с един диод: 3 стъпки

Видео: Направи си сам сензор за температура с един диод: 3 стъпки

Видео: Направи си сам сензор за температура с един диод: 3 стъпки
Видео: Zigbee датчик протечки с проводным сенсором, использование для DIY проектов 2024, Юли
Anonim
Направи си сам сензор за температура с един диод
Направи си сам сензор за температура с един диод
Направи си сам сензор за температура с един диод
Направи си сам сензор за температура с един диод

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

Тази настройка обикновено се използва в много интегрални схеми за измерване на вътрешната температура и много температурни сензори като известния LM35, който се основава на това свойство.

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

Така че чрез преминаване на постоянен ток през диода, спадът на напрежението напред трябва да варира само в зависимост от температурата на диода. Сега просто трябва да измерим напрежението на диода напред, да приложим някои прости уравнения и ето го вашият температурен сензор !!!

Консумативи

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

Стъпка 1: Електрическа схема

Електрическа схема
Електрическа схема

Както можете да видите в схемата, това е много просто. чрез последователно свързване на диода с резистор за ограничаване на тока и стабилен източник на напрежение можем да получим суров източник на постоянен ток, така че измереното напрежение в диода ще варира само поради промяната на температурата. Уверете се, че стойността на резистора не е твърде нисък, че много ток преминава през диода и прави забележимо самонагряване в диода, също не е много висок резистор, така че преминаването на тока не е достатъчно за поддържане на линейна връзка между напрежението напред и температурата.

резистор от 1 килоом с 5V захранване трябва да доведе до диоден ток от 4 милиампера, което е достатъчна стойност за тази цел. I (диод) = VCC / (Rseries + Rdiode)

Стъпка 2: Кодиране

Трябва да имаме предвид, че има някои стойности, които трябва да се променят в кода, за да се получат по -добри резултати като:

1 - VCC_Voltage: тъй като стойността analogRead () зависи от VCC на чипа ATmega, тогава трябва да го добавим към уравнението, след като го измерим на платката arduino.

2 - V_OLD_0_C: предният спад на напрежението на използвания диод при ток 4 mA и температура 0 Celsius

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

където:

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

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

Tnew = температурата, при която диодът се нагрява

Казано = старата стайна температура, при която е измерен Волд

K = Температура_Коефициент (отрицателна стойност, варираща между -1.0 до -2.5 миливолта) Накрая вече можете да качите кода и да получите резултатите от температурата.

#дефинирайте Sens_Pin A0 // PA0 за платка STM32F103C8

двойно V_OLD_0_C = 690.0; // 690 mV Предна напрежение при 0 по Целзий при 4 mA изпитвателен ток

двойно V_NEW = 0; // Ново напрежение напред при стайна температура при 4 mA изпитващ ток двойна Температура = 0,0; // Стайна изчислена температура двойна Temperature_Coefficient = -1,6; //-1,6 mV промяна на градус по Целзий (-2,5 за германиеви диоди), по-добре да получите от листа с данни за диода двойно 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 -битова температура на ADC = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

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

забавяне (500);

}

Стъпка 3: Получаване на по -добри стойности

Получаване на по -добри ценности
Получаване на по -добри ценности
Получаване на по -добри стойности
Получаване на по -добри стойности

Мисля, че е препоръчително да имате доверено устройство за измерване на температурата до себе си, когато правите този проект.

можете да видите, че има забележима грешка в показанията, която може да достигне 3 или 4 градуса по Целзий, така че откъде идва тази грешка?

1 - може да се наложи да промените променливите, споменати в предишната стъпка

2 - разделителната способност на ADC на arduino е по -ниска от тази, от която се нуждаем, за да открием малката разлика в напрежението

3 - референтното напрежение на arduino (5V) е твърде високо за тази малка промяна на напрежението в диода

Така че, ако ще използвате тази настройка като температурен сензор, трябва да сте наясно, че макар и евтин и удобен, не е точен, но може да ви даде много добра представа за температурата на вашата система, или е на Печатна платка или монтирана към работещ двигател и др.

Тази инструкция е предназначена да използва възможно най -малкото компоненти, но ако искате да получите най -точните резултати от тази идея, можете да направите някои промени:

1 - добавете някои усилвания и филтриращи етапи с помощта на операционни усилватели, както в тази връзка 2 - използвайте по -нисък вътрешен аналогов контролен контролер като платки STM32F103C8 с аналогово референтно напрежение 3,3 V (вижте точка 4) 3 - използвайте вътрешния 1,1 V аналогов референтен в arduino, но имайте предвид, че не можете да свържете повече от 1,1 волта към някой от аналоговите щифтове на arduino.

можете да добавите този ред във функцията за настройка:

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

4 - Използвайте микроконтролер, който има ADC с по -висока разделителна способност като STM32F103C8, който има 12 -битова ADC резолюция. Така че накратко, тази настройка, базирана на arduino, може да даде хубав преглед на температурата на вашата система, но не толкова точни резултати (приблизително 4,88 mV/четене)

настройката на STM32F103C8 ще ви даде доста точен резултат, тъй като има по-висок 12-битов ADC и по-ниска 3.3V аналогова референтна стойност (приблизително 0,8 mV/четене)

Е, това е !!:Д

Препоръчано: