Подключение ntc 10k b 3950 к arduino. терморезисторы. отрицательный коэффициент ткс

Способ 2: чтение датчика DS18B20 по адресу

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

Поиск адресов датчиков DS18B20s на шине

Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.

Вы можете подключать только один датчик за раз, чтобы определить его адрес (или последовательно добавлять по одному новому датчику, чтобы вы могли идентифицировать каждый из них по его адресу). Затем вы можете пометить каждый датчик.

Теперь откройте монитор последовательного порта. Вы должны получить что-то подобное:

Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине

Скопируйте все адреса, так как они нам понадобятся в следующем скетче.

Чтение показаний датчиков DS18B20 по адресу

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

Вывод вышеприведенного эскиза выглядит так

Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса

Объяснение кода

Как обычно, скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки .

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

Во фрагменте настройки мы инициализируем библиотеку путем вызова функции и инициализируем последовательную связь с ПК.

В цикле мы просто посылаем команду всем датчикам для преобразования температуры, используя функцию .

Затем, чтобы напечатать температуру датчика, мы вызываем пользовательскую функцию , для которой передается в качестве параметра.

Вышеприведенная функция просто вызывает библиотечные функции для отображения температуры в градусах Цельсия и для отображения температуры в градусах Фаренгейта.

Объяснение программы для Arduino

Полный текст программы приведен в конце статьи, здесь же рассмотрим его наиболее важные фрагменты.

Для выполнения математических операций мы в программе должны подключить библиотеку “#include <math.h>”, а для работы с ЖК дисплеем – библиотеку “#include <LiquidCrystal.h>». Также мы должны инициализировать контакт, к которому подключено реле — “#define RELAY 8”. Также плате Arduino необходимо сообщить контакты, к которым подключен ЖК дисплей.

Arduino

#include <math.h>
#include «LiquidCrystal.h»
#define RELAY 8
LiquidCrystal lcd(6,7,5,4,3,2); // сообщаем плате Arduino контакты, к которым подключен ЖК дисплей, в формате LCD(Rs, EN, D4, D5, D6, D7)

1
2
3
4

#include <math.h>
#include «LiquidCrystal.h»
#define RELAY 8  

LiquidCrystallcd(6,7,5,4,3,2);// сообщаем плате Arduino контакты, к которым подключен ЖК дисплей, в формате LCD(Rs, EN, D4, D5, D6, D7)

Также в функции Void setup() мы должны инициализировать ЖК дисплей и задать режим работы на вывод данных для контакта, к которому подключено реле.

Arduino

Void setup(){
lcd.begin(16,2);
lcd.clear();
pinMode(RELAY, OUTPUT);
}

1
2
3
4
5

Voidsetup(){

lcd.begin(16,2);

lcd.clear();

pinMode(RELAY,OUTPUT);

}

Для расчета температуры с помощью уравнения Стейнхарта-Харта мы должны в программе выполнить ряд математических расчетов, описанных ранее в статье.

Arduino

float a = 1.009249522e-03, b = 2.378405444e-04, c = 2.019202697e-07;
float T, logRt, Tf, Tc;
float Thermistor(int Vo) {
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (a + b*logRt + c* logRt * logRt * logRt)); // рассчитываем температуру в кельвинах с помощью уравнения Stein-Hart
Tc = T — 273.15; // преобразуем кельвины в градусы Цельсия
Tf = (Tc * 1.8) + 32.0; // преобразуем кельвины в градусы по шкале Фаренгейта
return T;
}

1
2
3
4
5
6
7
8
9

floata=1.009249522e-03,b=2.378405444e-04,c=2.019202697e-07;

floatT,logRt,Tf,Tc;

floatThermistor(intVo){

logRt=log(10000.0*((1024.0Vo-1)));

T=(1.0(a+b*logRt+c*logRt*logRt*logRt));// рассчитываем температуру в кельвинах с помощью уравнения Stein-Hart

Tc=T-273.15;// преобразуем кельвины в градусы Цельсия

Tf=(Tc*1.8)+32.0;// преобразуем кельвины в градусы по шкале Фаренгейта

returnT;

}

В следующем участке кода мы считываем падение напряжения на терморезисторе и печатаем его на экране ЖК дисплея.

Arduino

lcd.print((Thermistor(analogRead(0))));

1 lcd.print((Thermistor(analogRead())));

Также мы запрограммируем функцию, которая вычисляет температуру исходя из падения напряжения на терморезисторе.

Arduino

float Thermistor(int Vo)

1 floatThermistor(intVo)

Также мы должны запрограммировать условия для включения и выключения лампы в соответствии со значениями температуры. Если температура увеличивается более 28 градусов мы будем включать лампу подавая на контакт 8 (к нему подключено реле) напряжение высокого уровня, а когда температура падает ниже 28 градусов, мы будем выключать лампу.

Arduino

if (Tc > 28) digitalWrite(RELAY, HIGH),lcd.setCursor(0,1),lcd.print(«Light status:ON «),delay(500);
else if (Tc < 28) digitalWrite(RELAY, LOW),lcd.setCursor(0,1),lcd.print(«Light status:OFF»),delay(500);

1
2

if(Tc>28)digitalWrite(RELAY,HIGH),lcd.setCursor(,1),lcd.print(«Light status:ON «),delay(500);

elseif(Tc<28)digitalWrite(RELAY,LOW),lcd.setCursor(,1),lcd.print(«Light status:OFF»),delay(500);

Our Project

Our goal was to build a temperature sensing device using the Arduino Uno and an NTC thermistor temperature sensor that would display the same room temperature as a standard room thermometer. We were targeting a temperature range between 20 ˚C and 30 ˚C.

We wanted a compact NTC thermistor temperature sensor with high accuracy for this project, so we chose the Ametherm ACCU-CURVE series part # ACC-001 which has an resistance value of 2,252 @ 25 ˚C.

Although there are several ways to read temperature using an Arduino, in this post, we focus on the use of NTC thermistor temperature sensors with the Arduino Uno for a few good reasons.

  • First, the ACCU-CURVE series of NTC thermistor temperature sensors are interchangeable, which means no need to re-calibrate.
  • They provide a high rate of accuracy and are compact.
  • They respond quickly to temperature changes.

Analog Voltage Reading Method

To measure the temperature, we need to measure the resistance. However, a microcontroller does not have a resistance-meter built in. Instead, it only has a voltage reader known as a analog-digital-converter. So what we have to do is convert the resistance into a voltage, and we’ll do that by adding another resistor and connecting them in series. Now you just measure the voltage in the middle, as the resistance changes, the voltage changes too, according to the simple voltage-divider equation. We just need to keep one resistor fixed

Say the fixed resistor is 10K and the variable resistor is called R — the voltage output (Vo) is:

Vo = R / (R + 10K) * Vcc

Where Vcc is the power supply voltage (3.3V or 5V)

Now we want to connect it up to a microcontroller. Remember that when you measure a voltage (Vi) into an Arduino ADC, you’ll get a number.

ADC value = Vi * 1023 / Varef

So now we combine the two (Vo = Vi) and get:

ADC value = R / (R + 10K) * Vcc * 1023 / Varef

What is nice is that if you notice, if Vcc (logic voltage) is the same as the ARef, analog reference voltage, the values cancel out!

ADC value = R / (R + 10K) * 1023

It doesn’t matter what voltage you’re running under. Handy!

Finally, what we really want to do is get that R (the unknown resistance). So we do a little math to move the R to one side:

R = 10K / (1023/ADC — 1)

Скетч для DS18B20

Алгоритм получения информации о температуре в скетче состоит из следующих этапов:

  • Определение адреса датчика, проверка его подключения.
  • На датчик подается команда с требованием прочитать температуру и выложить измеренное значение в регистр. Процедура происходит дольше остальных, на нее необходимо примерно 750 мс.
  • Подается команда на чтение информации из регистра и отправка полученного значения в «монитор порта»,
  • Если требуется, то производится конвертация в градусы Цельсия/Фаренгейта.

Пример простого скетча для DS18B20

Самый простой скетч для работы с цифровым датчиком выглядит следующим образом. (в скетче мы используем библиотеку OneWire, о которой поговорим подробнее чуть позже).

#include /* * Описание взаимодействия с цифровым датчиком ds18b20 * Подключение ds18b20 к ардуино через пин 8 */ OneWire ds(8); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком void setup(){ Serial.begin(9600); } void loop(){ // Определяем температуру от датчика DS18b20 byte data; // Место для значения температуры ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем — датчик его положит во внутреннюю память delay(1000); // Микросхема измеряет температуру, а мы ждем. ds.reset(); // Теперь готовимся получить значение измеренной температуры ds.write(0xCC); ds.write(0xBE); // Просим передать нам значение регистров со значением температуры // Получаем и считываем ответ data = ds.read(); // Читаем младший байт значения температуры data = ds.read(); // А теперь старший // Формируем итоговое значение: // — сперва «склеиваем» значение, // — затем умножаем его на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию — это 0,0625) float temperature = ((data <<

Скетч для работы с датчиком ds18b20 без delay

Можно немного усложнить программу для ds18b20, чтобы избавиться от функции delay(), тормозящей выполнение скетча.

#include OneWire ds(8); // Объект OneWire int temperature = 0; // Глобальная переменная для хранения значение температуры с датчика DS18B20 long lastUpdateTime = 0; // Переменная для хранения времени последнего считывания с датчика const int TEMP_UPDATE_TIME = 1000; // Определяем периодичность проверок void setup(){ Serial.begin(9600); } void loop(){ detectTemperature(); // Определяем температуру от датчика DS18b20 Serial.println(temperature); // Выводим полученное значение температуры // Т.к. переменная temperature имеет тип int, дробная часть будет просто отбрасываться } int detectTemperature(){ byte data; ds.reset(); ds.write(0xCC); ds.write(0x44); if (millis() — lastUpdateTime > TEMP_UPDATE_TIME) { lastUpdateTime = millis(); ds.reset(); ds.write(0xCC); ds.write(0xBE); data = ds.read(); data = ds.read(); // Формируем значение temperature = (data <<

Библиотека DallasTemperature и DS18b20

В своих скетчах мы можем использовать библиотеку DallasTemperature, упрощающую некоторые аспекты работы с датчиком ds18b20 по 1-Wire. Пример скетча:

#include // Номер пина Arduino с подключенным датчиком #define PIN_DS18B20 8 // Создаем объект OneWire OneWire oneWire(PIN_DS18B20); // Создаем объект DallasTemperature для работы с сенсорами, передавая ему ссылку на объект для работы с 1-Wire. DallasTemperature dallasSensors(&oneWire); // Специальный объект для хранения адреса устройства DeviceAddress sensorAddress; void loop(void){ // Запрос на измерения датчиком температуры Serial.print(«Измеряем температуру…»); dallasSensors.requestTemperatures(); // Просим ds18b20 собрать данные Serial.println(«Выполнено»); // Запрос на получение сохраненного значения температуры printTemperature(sensorAddress); // Задержка для того, чтобы можно было что-то разобрать на экране delay(1000); } // Вспомогательная функция печати значения температуры для устрйоства void printTemperature(DeviceAddress deviceAddress){ float tempC = dallasSensors.getTempC(deviceAddress); Serial.print(«Temp C: «); Serial.println(tempC); } // Вспомогательная функция для отображения адреса датчика ds18b20 void printAddress(DeviceAddress deviceAddress){ for (uint8_t i = 0; i < 8; i++) { if (deviceAddress< 16) Serial.print(«0»); Serial.print(deviceAddress, HEX); } }

How a Thermistor Works

Thermistors are variable resistors that change their resistance with temperature. They are classified by the way their resistance responds to temperature changes. In Negative Temperature Coefficient (NTC) thermistors, resistance decreases with an increase in temperature. In Positive Temperature Coefficient (PTC) thermistors, resistance increases with an increase in temperature.

NTC thermistors are the most common, and that’s the type we’ll be using in this tutorial. NTC thermistors are made from a semiconducting material (such as a metal oxide or ceramic) that’s been heated and compressed to form a temperature sensitive conducting material.

The conducting material contains charge carriers that allow current to flow through it. High temperatures cause the semiconducting material to release more charge carriers. In NTC thermistors made from ferric oxide, electrons are the charge carriers. In nickel oxide NTC thermistors, the charge carriers are electron holes.

Код Arduino. Использование DHT11 и DHT22/AM2302 с LCD дисплеем

Иногда может возникнуть идея, контролировать температуру и влажность в инкубаторе. Тогда для отображения условий в инкубаторе вам, вероятно, понадобится символьный LCD дисплей 16×2 вместо монитора последовательного порта. Итак, в этом примере вместе с датчиком DHT11 или DHT22/AM2302 мы подключим к Arduino LCD дисплей.

Если вы не знакомы с LCD дисплеями на 16×2 символов, взгляните на статью «Взаимодействие Arduino с символьным LCD дисплеем».

Далее нам нужно подключиться к LCD дисплею, как показано ниже.

Рисунок 9 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT11Рисунок 10 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT22

Следующий скетч будет выводить значения температуры и относительной влажности на символьном LCD дисплее 16×2. Он использует тот же код, за исключением того, что мы печатаем значения на LCD дисплее.

Рисунок 11 – Показания температуры и влажности на LCD дисплее

Теория

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

Но что, если вы действительно хотите, чтобы яркость светодиода была функцией температуры? Здесь появляется термистор. Как вы могли догадаться, у термистора сопротивление сильно изменяется при небольшом изменении температуры. Чтобы проиллюстрировать это, ниже приведена кривая изменения сопротивления термистора:

На рисунке показаны лишь единицы измерения без фактических значений, так как диапазон сопротивлений зависит от типа конкретного термистора. Как вы можете заметить, по мере увеличения температуры сопротивление терморезистора уменьшается. Это является отличительным свойством резистора с отрицательным температурным коэффициентом (Negative Temperature Coefficient), или, кратко, NTC термистора.

Существуют также терморезисторы с положительным температурным коэффициентом (Positive Temperature Coefficient, PTC), сопротивление которых увеличивается по мере роста температуры. Однако, PTC термисторы имеют своего рода точку перелома и сильно меняют сопротивление при некоторой температуре. Это делает взаимодействие с PTC термисторами чуть более сложным. По этой причине в большинстве дешевых измерителей температуры предпочтительнее использовать NTC термисторы.

В оставшейся части статьи, как вы можете догадаться, мы будем говорить о терморезисторах типа NTC.

Что такое термистор и его виды

Термистор Ардуино — резистор, меняющий свое сопротивление в зависимости от температуры. Существуют два вида активных элементов подобного типа — реагирующие конкретно на охлаждение NTC «Negative Temperature Coefficient» или нагрев PTC «Positive Temperature Coefficient».

Каждый терморезистор имеет маркировку, указывающую на его сопротивление при определенной норме температуры. Для NTC принято считать последнюю за 25 ºС, у PTC она равна 0 ºС. На определении текущего значения характеристики и строиться выявление уровня нагрева или охлаждения окружающей элемент среды.

Термисторы выпускаются с определенным изначальным сопротивлением, которое может варьироваться от 100 Ом до 100 кОм. Условно, все чувствительные к нагреванию элементы разделяют на три класса — низкотемпературные, с работой ниже минус 100 ºС, средние, с пределом от -100 ºС до +235 ºС, и обеспечивающие выявление высоких значений характеристики среды, в промежутке с 300 ºС по 1000 ºС.

Аппаратно, все детекторы подобного типа напрямую подключить к Ардуино не получиться. В микроконтроллере отсутствует вход определяющий сопротивление нагрузки. Но есть пять, для Arduino Mini/Uno, или 16, у Mega 2560, АЦП вводов чувствительных к уровню поступающего сигнала — в пределах от 0 до 5 В. Здесь, чтобы узнать текущее значение характеристики резистора, достаточно использовать классическую схему делителя тока, одним плечом которого выступает известный и неизменный элемент, вторым — сам термистор. Подобная конструкция будет понижать напряжение проходящего тока, в зависимости от номиналов переменного и постоянного сопротивления.

Микроконтроллер, пользуясь полученной информацией на входе, может рассчитывать значения текущей температуры по формуле Стейнхарта — Харта, выводя ее из текущего значения характеристики термистора:

Или используя более простой, но обеспечивающей достаточную точность, для измеряющих устройств:

В первой, A и C берутся из спецификации к резистору. В остальном, для обоих: T — полученная температура в кельвинах,

  • T0 — температура изначального номинала (для NTC, к примеру, T0=298.15),
  • B — коэффициент, зависящий от датчика и равный его значению в документации конкретной модели,
  • R — измеренное сопротивление,
  • R0 — номинальное.

Само текущее значение сопротивления R2, автоматически вычисляться по формуле, используемой для расчета делителей напряжения:

Где R1 — известный резистор плеча, Vвх — входящее напряжение (в Arduino — 5 В), Vвых — итоговое на входе логического модуля.

Есть нюанс, касающийся непосредственно получения значений напряжения с аналогового контакта микроконтроллера. Числовые данные порта АЦП лежат в пределах от 0 до 1023 и соответствуют промежутку от 0 до 5 В. Для расчета понятных человеку данных характеристики используется формула:

Приведенный метод не очень точен, по причине нелинейности роста сопротивления термистора от температуры. Разница в некоторых случаях, с реальным положением дел, может достигать нескольких десятков градусов. В представленном скетче используется иной принцип. Текущий нагрев среды будет определяться по таблице соответствий, представленной производителем чувствительного элемента. Скачать ее, для модели, указанной в схеме далее, можно из интернета по адресу https://datasheetspdf.com/pdf-file/944190/Danfoss/NTC100K/1.

Методика считывания аналогового напряжения

Для того, чтобы определить температуру, мы должны измерить сопротивление. При этом на Arduino нет встроенного измерителя сопротивления. Но зато есть возможность считать напряжение с помощью аналогово-цифрового конвертера. Так что нам надо преобразовать сопротивление в напряжение. Для этого мы последовательно добавим в схему подключения еще один резистор. Теперь, когда вы будете мерять напряжение по центру, с изменением сопротивления, будет меняться и напряжение.

Скажем, мы используем резистор с постоянным номиналом 10K и переменный резистор, который называется R. При этом напряжение на выходе (Vo), которое мы будем передавать Arduino, будет равно:

Vo = R / (R + 10K) * Vcc,

где Vcc – это напряжение источника питания (3.3 В или 5 В)

Теперь мы хотим подключить все это к Arduino. Не забывайте, что когда вы измеряете напряжение (Vi) с использованием АЦП на Arduino, вы получите числовое значение.

ADC value = Vi * 1023 / Vcc

Теперь мы совмещаем два напряжения (Vo = Vi) и получаем:

ADC value = R / (R + 10K) * Vcc * 1023 / Vcc

Что самое прекрасное, Vcc сокращается!

ADC value = R / (R + 10K) * 1023

То есть вам неважно, какое напряжение питания вы используете!

В конце мы все же хотим получить R (сопротивление). Для этого надо использовать еще одно преобразование, в котором R переносятся в одну сторону:

R = 10K / (1023/ADC – 1)

Отлично. Давайте попробуем, что из этого всего выйдет. Подключите термистор к Arduino как это показано на рисунке ниже:

Подключите один контакт резистора на 10 КОм к контакту 5 В, второй контакт резистора 10 КОм 1% – к одному контакту термистора. Второй контакт термистора подключается к земле. ‘Центр’ двух резисторов подключите к контакту Analog 0 на Arduino.

Теперь запустите следующий скетч для Arduino:

// значение ‘другого’ резистора

#define SERIESRESISTOR 10000

// к какому пину подключается термистор

#define THERMISTORPIN A0

void setup(void) {

Serial.begin(9600);

}

void loop(void) {

float reading;

reading = analogRead(THERMISTORPIN);

Serial.print(“Analog reading “);

Serial.println(reading);

// преобразуем полученные значения в сопротивление

reading = (1023 / reading) – 1;

reading = SERIESRESISTOR / reading;

Serial.print(“Thermistor resistance “);

Serial.println(reading);

delay(1000);

}

В результате вы должны получить значения, которые соответствуют измеренным с помощью мультиметра.

Код программы для Arduino

Код снабжен большим количеством комментариев, чтобы помочь вам понять логику программы.

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

Для забавы добавлены также некоторые операторы » if…else «, чтобы показать, как вы можете действовать в зависимости от диапазона температур.

входное напряжение

Всё в данной статье показывает довольно простой способ измерения температуры с помощью дешевого термистора. Есть еще пара способов улучшить схему:

  • добавить небольшой конденсатор параллельно выходу делителя. Это стабилизирует напряжение и может даже устранить необходимость усреднения большого количества выборок (как было сделано в коде) — или, по крайней мере, мы сможете усреднять меньшее количество выборок;
  • использовать прецизионные резисторы (допуск меньше 1%), чтобы получить более предсказуемые измерения. Если вам критична точность измерений, имейте в виду, что самонагревание термистора может повлиять на измерения; в данной статье самонагрев не компенсируется.

Конечно, термисторы — это только один из датчиков, используемых для измерения температуры. Другой популярный выбор — это микросхемы датчиков (пример работы с одной из них описан ). В этом случае вам не придется иметь дело с линеаризацией и сложными уравнениями. Два других варианта — это термопара и инфракрасный тип датчика; последний может измерять температуру без физического контакта, но он уже не так дешев.

Надеюсь, статья оказалась полезной. Оставляйте комментарии!

АЦП MAX6675, MAX31855

Представленная далее схема, как и сам АЦП изначально не рассчитаны на использование с термопарами, требующими заземления, что нужно учитывать при разработке финальной конструкции устройства. Платы MAX6675 и MAX31855 электрически взаимозаменяемы. Единственное различие в подключаемой библиотеке. Для первого АЦП получить ее можно по адресу http://github.com/adafruit/MAX6675-library, для второго https://github.com/adafruit/Adafruit-MAX31855-library.

Схема подключения

У обоих АЦП на плате 5 выходных контактов. Два используются для питания, на них подается +5В и GND соответственно. Остальные размечены следующим образом:

Контакт Описание Используется
CLK Используется при побитовой передаче — указывая, что можно забрать следующий бит IN/OUT
DO Побитовый вывод результата OUT
CS Устанавливается в HIGH контроллером Arduino для проведения замера IN

В качестве линий питания и земли можно также использовать цифровые пины Arduino, но нежелательно. Будут заняты еще два контакта. В случае, если все же требуется использовать такую конструкцию, в инициализацию void setup () нужно добавить следующие строки:

Соответственно в шапке скетча задать

Некоторые замечания по специализированным АЦП

В случае с аналого-цифровым преобразователем непонятно откуда он берет температуру «холодного» конца термопары. Скорее всего считает ее равной измеренной встроенным термодатчиком. Соответственно  точность показаний зависит от непосредственного расположения усиливающей платы рядом с измеряющей линией.

Кроме вышеназванной проблемы стоит не забывать о «шумности» входов преобразователя, на которую жалуются пользователи АЦП MAX. Для уменьшения мешающего фактора рекомендуется разместить между контактами термопары фильтрующий конденсатор от 0.001 до 0.01 мкФ.

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

Подключение нескольких датчиковoв DS18B20+

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

Запускаем среду программирования IDE Arduino, копируем пример кода в в окно программы и загружаем в контроллер.

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 12.11.2016г.
*/

#include <OneWire.h> // Подключаем библиотеку OneWire
#include <DallasTemperature.h> // Подключаем библиотеку DallasTempature

#define ONE_WIRE_BUS 2 // Указываем, к какому выводу подключена DQ

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
Serial.begin(9600); // Задаем скорость передачи данных
sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит
}

void loop(void)
{
Serial.print(» Reading Temperature…»);
sensors.requestTemperatures(); // Запрос на считывание температуры
Serial.println(«Read»);
Serial.print(» Sensor Temperature 1: «);
Serial.print(sensors.getTempCByIndex(0)); // Отображение температуры датчика 1
Serial.print(» Reading Temperature…»);
Serial.println(«Read»);
Serial.print(» Sensor Temperature 2: «);
Serial.print(sensors.getTempCByIndex(1)); // Отображение температуры датчика 2
}

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

/*
Тестирование производилось на Arduino IDE 1.6.11
Дата тестирования 12.11.2016г.

*/

 
 
#include <OneWire.h>                        // Подключаем библиотеку OneWire
#include <DallasTemperature.h>              // Подключаем библиотеку DallasTempature
 
#define ONE_WIRE_BUS 2                      // Указываем, к какому выводу подключена DQ
 

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

voidsetup(void)

{

Serial.begin(9600);// Задаем скорость передачи данных

sensors.begin();// Запуск библиотеки, по умолчанию 9 бит

}

voidloop(void)

{

Serial.print(» Reading Temperature…»);

sensors.requestTemperatures();// Запрос на считывание температуры

Serial.println(«Read»);

Serial.print(» Sensor Temperature 1: «);

Serial.print(sensors.getTempCByIndex());// Отображение температуры датчика 1

Serial.print(» Reading Temperature…»);

Serial.println(«Read»);

Serial.print(» Sensor Temperature 2: «);

Serial.print(sensors.getTempCByIndex(1));// Отображение температуры датчика 2

}

Ссылки  Документация к DS18B20+  Скачать библиотеку DallasTemperature  Скачать библиотеку OneWire v.2.2

Купить на Aliexpress  Контроллер Arduino UNO R3 на CH340G  Контроллер Arduino UNO R3 на Atmega16U2  Провода DuPont, 2,54 мм, 20 см  Датчик температуры DS18b20

Купить в Самаре и области  Контроллер Arduino UNO R3 на CH340G  Контроллер Arduino UNO R3 на Atmega16U2  Провода DuPont, 2,54 мм, 20 см  Датчик температуры DS18b20

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector