Датчик температуры и влажности ардуино dht11

Примеры работы для Arduino

Один датчик

Рассмотрим простой пример — подключения одного датчика.

Сенсор подключается к управляющей плате через один сигнальный пин.
При подключении к Arduino в компактном формфакторе, например Arduino Micro или Iskra Nano Pro, воспользуйтесь макетной платой и парочкой нажимных клеммников.

Между сигнальным проводом и питанием установите сопротивление 4,7 кОм.

При коммуникации сенсора со стандартными платами Arduino формата Rev3, Arduino Uno или Iskra Neo, используйте Troyka Slot Shield совместно с модулем подтяжки.

Код программы

Выведем температуру сенсора в Serial-порт.

simple.ino
// библиотека для работы с протоколом 1-Wire
#include <OneWire.h>
// библиотека для работы с датчиком DS18B20
#include <DallasTemperature.h>
 
// сигнальный провод датчика
#define ONE_WIRE_BUS 5
 
// создаём объект для работы с библиотекой OneWire
OneWire oneWire(ONE_WIRE_BUS);
 
// создадим объект для работы с библиотекой DallasTemperature
DallasTemperature sensor(&oneWire);
 
void setup(){
  // инициализируем работу Serial-порта
  Serial.begin(9600);
  // начинаем работу с датчиком
  sensor.begin();
  // устанавливаем разрешение датчика от 9 до 12 бит
  sensor.setResolution(12);
}
 
void loop(){
  // переменная для хранения температуры
  float temperature;
  // отправляем запрос на измерение температуры
  sensor.requestTemperatures();
  // считываем данные из регистра датчика
  temperature = sensor.getTempCByIndex();
  // выводим температуру в Serial-порт
  Serial.print("Temp C: ");
  Serial.println(temperature);
  // ждём одну секунду
  delay(1000);
}

Серия датчиков

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

Добавим к предыдущем схемам подключения ещё по паре датчиков в параллель.

Код программы

Просканируем все устройства на шине и выведем температуру каждого сенсора отдельно в Serial-порт.

multipleSensors.ino
// библиотека для работы с протоколом 1-Wire
#include <OneWire.h>
// библиотека для работы с датчиком DS18B20
#include <DallasTemperature.h>
 
// сигнальный провод датчика
#define ONE_WIRE_BUS 5
 
// создаём объект для работы с библиотекой OneWire
OneWire oneWire(ONE_WIRE_BUS);
// создадим объект для работы с библиотекой DallasTemperature
DallasTemperature sensors(&oneWire);
// создаём указатель массив для хранения адресов датчиков
DeviceAddress *sensorsUnique;
// количество датчиков на шине
int countSensors;
 
// функция вывода адреса датчика
void printAddress(DeviceAddress deviceAddress){
  for (uint8_t i = ; i < 8; i++){
    if (deviceAddressi < 16) Serial.print("0");
    Serial.print(deviceAddressi, HEX);
  }
}
 
void setup(){
  // инициализируем работу Serial-порта
  Serial.begin(9600);
  // ожидаем открытия Serial-порта
  while(!Serial);
  // начинаем работу с датчиком
  sensors.begin();
  // выполняем поиск устройств на шине
  countSensors = sensors.getDeviceCount();
  Serial.print("Found sensors: ");
  Serial.println(countSensors);
  // выделяем память в динамическом массиве под количество обнаруженных сенсоров
  sensorsUnique = new DeviceAddresscountSensors;
 
  // определяем в каком режиме питания подключены сенсоры
  if (sensors.isParasitePowerMode()) {
    Serial.println("Mode power is Parasite");
  } else {
    Serial.println("Mode power is Normal");
  }
 
  // делаем запрос на получение адресов датчиков
  for (int i = ; i < countSensors; i++) {
    sensors.getAddress(sensorsUniquei, i);
  }
  // выводим полученные адреса
  for (int i = ; i < countSensors; i++) {
    Serial.print("Device ");
    Serial.print(i);
    Serial.print(" Address: ");
    printAddress(sensorsUniquei);
    Serial.println();
  }
  Serial.println();
  // устанавливаем разрешение всех датчиков в 12 бит
  for (int i = ; i < countSensors; i++) {
    sensors.setResolution(sensorsUniquei, 12);
  }
}
 
void loop(){
  // переменная для хранения температуры
  float temperature10;
  // отправляем запрос на измерение температуры всех сенсоров
  sensors.requestTemperatures();
  // считываем данные из регистра каждого датчика по очереди
  for (int i = ; i < countSensors; i++) {
    temperaturei = sensors.getTempCByIndex(i);
  }
  // выводим температуру в Serial-порт по каждому датчику
  for (int i = ; i < countSensors; i++) {
    Serial.print("Device ");
    Serial.print(i);
    Serial.print(" Temp C: ");
    Serial.print(temperaturei);
    Serial.println();
  }
  Serial.println();
  // ждём одну секунду
  delay(1000);
}

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

Что такое разрешение?

В технических характеристиках сообщается, что датчик DS18B20 может измерять температуру с различным разрешением. Разрешение — это как у линейки: миллиметры между сантиметрами. Так же и c разрешением у DS18B20 — это шаг между последовательными ступенями градусов Цельсия.

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

Для 9 битного разрешения есть 2 шага между последовательными уровнями:

  • 0,0 °C
  • 0,5 °C

То есть, вы можете прочитать температуру с разрешением 0,5 °C. Для 9 битного разрешения время измерения составляет 93,75 мс. То есть, вы можете выполнять 10,6 измерений в секунду.

Для 10 битного разрешения есть 4 шага между последовательными уровнями:

  • 0,0 °C
  • 0,25 °C
  • 0,5 °C
  • 0,75 °C

В этом случае мы считываем температуру с разрешением 0,25 °C. Время измерения для 10 битного разрешения составляет 187,5 мс, что позволяет выполнить 5,3 измерений в секунду.

Для 11 битного разрешения есть 8 шагов между последовательными уровнями:

  • 0,0 °C
  • 0,125 °C
  • 0,25 °C
  • 0,375 °C
  • 0,5 °C
  • 0,625 °C
  • 0,75 °C
  • 0,875 °C

То есть разрешение составляет 0,125 °C. Время измерения для 11 битного разрешения составляет 375 мс. Это позволяет выполнить 2,6 измерения в секунду.

Для 12 битного разрешения есть 16 шагов между последовательными уровнями:

  • 0,0 °C
  • 0,0625 °C
  • 0,125 °C
  • 0,1875 °C
  • 0,25 °C
  • 0,3125 °C
  • 0,375 °C
  • 0,4375 °C
  • 0,5 °C
  • 0,5625 °C
  • 0,625 °C
  • 0,6875 °C
  • 0,75 °C
  • 0,8125 °C
  • 0,875 °C
  • 0,9375 °C

Следовательно, разрешение составляет 0,0625 °C. Время измерения для 12 битного разрешения в районе 750 мс. То есть вы можете сделать 1,3 измерений в секунду.

Что такое точность измерения?

Ничто в мире, и особенно в электронике, не является совершенным. Можно только приближаться к совершенству, тратя все больше и больше денег и сил. Так же и с этим датчиком. Он имеет некоторые неточности, о которых вы должны знать.

В технических характеристиках сказано, что в диапазоне измерения от -10 до 85 °C датчик DS18B20 имеет точность на уровне +/- 0,5 °C. Это значит, что, когда в комнате у нас температура 22,5 °C, то датчик может вернуть нам результат измерения от 22 до 23 °C. То есть, может показать на 0,5 °C больше или меньше. Все это зависит от индивидуальной характеристики датчика.

В диапазоне от -55 до 125 °C погрешность измерения может возрасти до +/- 2 °C. То есть, когда вы измеряете что-то с температурой 100 °C, то датчик может показать температуру от 98 до 102 °C.

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

Что такое дрейф измерения?

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

Дрейф датчика температуры DS18B20 +/- 0.2 °C. Например, когда в комнате постоянная температура составляет 24 °C, датчик может выдавать результат в диапазоне от 23,8 °C до 24,2 °C.

Скачать datasheet DS18B20 (379,0 KiB, скачано: 1 312)

Электрический паяльник с регулировкой температуры
Мощность: 60/80 Вт, температура: 200’C-450’C, высококачествен…

Подробнее

Использование датчика температуры

Подключение датчика температуры

Внутри подобных датчиков находится маленький чип

Чип достаточно тонкий, так что устанавливать датчик надо осторожно. Будьте аккуратны со статическим электричеством при установке датчика

Убедитесь, что питание подключено правильно и находится в диапазоне от 2.7 до 5.5 В – постоянный ток. Не используйте батарейки на 9 В!

Чувствительный элемент датчика находится в пластиковом обрезанном по одной грани цилиндре с тремя «ногами». «Ноги» легко изгибаются для установки на монтажной плате. К ним можно припаять провода. Если вы хотите сделать ваш датчик водонепроницаемым – вот отличный проект с Instructables.

Считывание аналоговых значений температуры

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

Не забудьте, что для питания необходим диапазон от 2.7 до 5.5 вольт. В приведенной выше схеме подключения датчика температура к Arduino используется пин 5 вольт. Но можно использовать и пин 3.3 вольта. Вне зависимости от напряжения питания, считываемое аналоговое значение напряжения будет находится в диапахоне от 0 до 1.75 В.

Если вы используете 5 В Arduino и подключаете датчик напрямую к аналоговому пину, можно использовать следующие формулы для преобразования 10-битных аналоговых значений в температуру:

Напряжение на пине в миливольтах = (значения с аналогового пина ADC) * (5000/1024)

С помощью этой зависимости мы преобразуем числовое значение в диапазоне 0-1023 с аналогового пина в 0-5000 миливольт (= 5 вольт)

Если вы используете 3.3 Arduino, используйте следующую зависимость:

Напряжение на пине в миливольтах = (значения с аналогового пина ADC) * (3300/1024)

Эта зависимость преобразовывает числовое значение 0-1023 с аналогового пина в 0-3300 миливольт (= 3.3 вольт)

После этого, для преобразования милливольт в температуру, используйте формулу:

Температура в цельсиях = / 10

Исходный код программы

В начале программы подключим библиотеки, необходимые для работы с датчиком DHT11 и ЖК дисплеем.

Когда вы скачаете эту библиотеку, добавьте ее в вашу Arduino IDE с помощью инструкции вида (или с помощью аналогичного пункта меню в Arduino IDE):

Затем определим контакты к которым подключен ЖК дисплей и датчик DHT и инициализируем их все в секции setup программы (скетча). Затем в секции loop мы с помощью функции dht считываем данные с датчика DHT и затем используем ряд dht функций чтобы извлечь из этих данных температуру и влажность и отобразить их на ЖК дисплее.

Символ градуса на экране ЖК дисплея будет формироваться, используя известное отображение его в виде символа.

Далее приведен полный текст программы.

Arduino

#include<dht.h> // подключаем библиотеку для использования dht функций
#include<LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // номера контактов, к которым подключен ЖК дисплей
#define dht_dpin 12
dht DHT;
byte degree =
{
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup()
{
lcd.begin(16, 2);
lcd.createChar(1, degree);
lcd.clear();
lcd.print(» Humidity «);
lcd.setCursor(0,1);
lcd.print(» Measurement «);
delay(2000);
lcd.clear();
lcd.print(«Circuit Digest «);
delay(2000);
}
void loop()
{
DHT.read11(dht_dpin); //считываем данные с контакта, к которому подключен датчик DHT11
lcd.setCursor(0,0);
lcd.print(«Humidity: «);
lcd.print(DHT.humidity); // отображаем значение влажности на экране ЖК дисплея
lcd.print(» %»);
lcd.setCursor(0,1);
lcd.print(«Temperature:»);
lcd.print(DHT.temperature); // отображаем значение температуры на экране ЖК дисплея
lcd.write(1);
lcd.print(«C»);
delay(500);
}

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

#include<dht.h>      // подключаем библиотеку для использования dht функций
#include<LiquidCrystal.h>

LiquidCrystallcd(2,3,4,5,6,7);// номера контактов, к которым подключен ЖК дисплей

#define dht_dpin 12

dhtDHT;

bytedegree8=

{

0b00011,

0b00011,

0b00000,

0b00000,

0b00000,

0b00000,

0b00000,

0b00000

};

voidsetup()

{

lcd.begin(16,2);

lcd.createChar(1,degree);

lcd.clear();

lcd.print(»   Humidity   «);

lcd.setCursor(,1);

lcd.print(»  Measurement «);

delay(2000);

lcd.clear();

lcd.print(«Circuit Digest «);

delay(2000);

}

voidloop()

{

DHT.read11(dht_dpin);//считываем данные с контакта, к которому подключен датчик DHT11

lcd.setCursor(,);

lcd.print(«Humidity: «);

lcd.print(DHT.humidity);// отображаем значение влажности на экране ЖК дисплея

lcd.print(» %»);

lcd.setCursor(,1);

lcd.print(«Temperature:»);

lcd.print(DHT.temperature);// отображаем значение температуры на экране ЖК дисплея

lcd.write(1);

lcd.print(«C»);

delay(500);

}

Измерительные трансформаторы

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

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

Трансформаторы напряжения можно изготовить самому, но если вам нужен простой бытовой трансформатор с напряжением на 220 вольт и понижением до 12 вольт, то лучше его приобрести. Сколько стоят трансформаторы напряжения можно узнать на любом интернет-сайте, как правило, на бытовые понижающие трансформаторы напряжения цены не очень высоки.

Артиллерийские единицы

Что нужно, чтобы настроить работу датчика DS18B20 для Arduino Processing LCD

Из программного обеспечения вам в обязательном порядке потребуются:

  • Программа Arduino IDE.
  • База данных OneWire library, примечательная тем, что она значительным образом упрощает работу как с самим Arduino, так и со всеми датчиками, включая DS18B20.
  • Скетч.

Программу «Ардуино» можно скачать с ее официального сайта — там есть ее последняя версия в открытом доступе.

Программа Arduino IDE

Из оборудования вам в обязательном порядке потребуются:

  • Nano-датчик для измерения температурных показателей DS 18B20 в количестве минимум одного экземпляра.
  • Контроллер «Ардуино».
  • Термостат.
  • Коннекторы в количестве 3 штук.
  • Плата для монтажных работ.
  • Кабель, который будет обеспечивать подключение «Ардуино» к вашему компьютеру посредством USB-соединения.

Кабель, описанный в последнем пункте, необходим для программирования Arduino Processing LCD. После того как скетч будет успешно загружен на плату, ее можно будет смело подсоединять к независимому источнику питания.

Nano-датчик температуры DS 18B20

Вводная информация

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

Один из них и наиболее популярный, что естественно, — Ардуино. Конструктор моментальной сборки электронных автоматических устройств любой степени сложности: высокой, средней и низкой. Эту платформу называют иначе «physical computing» за плотное взаимодействие с окружающей средой. Печатная плата с микропроцессором, открытый программный код, стандартные интерфейсы и подключение датчиков к Ардуино — слагаемые его популярности.

Система Ардуино — плата, которая объединяет все нужные компоненты, обеспечивающие полный цикл разработки. Сердце этой платы — микроконтроллер. Он обеспечивает управление всей периферией. Датчики, подключаемые к системе, позволяют системе «общаться» и взаимодействовать с окружением: анализировать, отмечать изменять.

Необходимые компоненты

Arduino

В этом проекте мы используем микроконтроллер для контроля всего процесса, который размещен на плате Arduino. Некоторые называют Arduino микроконтроллером, но это не совсем так, потому что Arduino представляет собой операционную систему или начальный загрузчик, который работает на основе микроконтроллера AVR. Если говорить шире, то Arduino – это аппаратная платформа с открытым исходным кодом, которая очень удобна для реализации многих практических проектов в электронике.

Датчик температуры LM35

Номер контакта Функция Обозначение
1 Питающее напряжение; 5V (+35V to -2V) Vcc
2 Выходное напряжение (+6V to -1V) Output
3 Земля (0V) Ground

Питание

Плата Arduino уже имеет встроенный модуль подачи питания, поэтому здесь нам необходимо только подсоединить адаптер на 9 или 12 вольт к плате, или можно запитать ее от USB-порта компьютера или ноутбука.

Шаг 5. Программирование

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

  1. Adafruits SSD1306
  2. Adafruits MLX90614

Программа постоянно считывает данные о температуре с MLX90614, но отображается на OLED только при нажатии кнопки триггера. Если нажать на курок, лазер также включается, чтобы помочь определить, какой объект измеряется.

Код для нашего инфракрасного термометра Ардуино ниже:

#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // Ширина дисплея, в пикселях
#define SCREEN_HEIGHT 64 // Высота дисплея, в пикселях

const int Laser_Pin=5;  //Laser Pin
int buttonState = 0; 
const int buttonPin = 2;     // количество пинов кнопки

// Декларация для дисплея SSD1306, подключенного к I2C (выводы SDA, SCL)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {
  Serial.begin(9600);
  Serial.println("Adafruit MLX90614 test"); 
  
  pinMode(Laser_Pin,OUTPUT);
  pinMode(buttonPin, INPUT);
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Адрес 0x3D для 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  

  display.clearDisplay();
  display.setRotation(2);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 35);
  display.println("Initializing Temp");
  display.display();
  delay(250);
  display.clearDisplay();

  mlx.begin(); 
  
}

void loop() {

  buttonState = digitalRead(buttonPin);
  Serial.println(buttonState);
  
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); 
  Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); 
  Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");
  
  // проверяем, нажата ли кнопка и если это так, то buttonState - HIGH:
  if (buttonState == HIGH) {
    // включаем LED (светодиод):
    digitalWrite(Laser_Pin, HIGH);
    
    display.clearDisplay();
    display.setTextSize(2);  // Размер 2 означает, что каждый пиксель имеет ширину 12 и высоту 16
    display.setCursor(25, 10);
    display.print(mlx.readObjectTempC());
    display.setCursor(95, 10);
    display.print("C");
    display.setTextSize(2);
    display.setCursor(25, 36);
    display.print(mlx.readObjectTempF());
    display.setCursor(95, 36);
    display.print("F");
    display.display();    
    
  } else {
    // turn LED off:
    digitalWrite(Laser_Pin, LOW);
  
    display.clearDisplay();
    display.setTextSize(2);  // Размер 2 означает, что каждый пиксель имеет ширину 12 и высоту 16
    display.setCursor(35, 10);
    display.print("-----");
    display.setCursor(105, 10);
    display.print("");
    display.setTextSize(2);
    display.setCursor(35, 36);
    display.print("-----");
    display.setCursor(105, 36);
    display.print("");
    display.display();    
    
  }

  Serial.println();
  delay(500);
}

Подключение датчика температуры

Несмотря на то, что функция измерения температуры входит во многие датчики, лучше использовать отдельный специализированный датчик. Например, DS18B20. Это интегральный датчик, имеющий цифровой последовательный интерфейс.

Его сильные стороны:

  • предварительная заводская калибровка;
  • погрешность менее 0,5°С;
  • программно задаваемая разрешающая способность в 0,0625°С при 12-и битном разрешении;
  • чрезвычайно большой диапазон измеряемых температур: от -55°С до +125°С;
  • в датчике имеется встроенный АЦП;
  • в одну линию связи могут быть включены несколько датчиков.

Корпус ТО-92 — самый распространённый для этих датчиков. Приняты две основные схемы подключения температурного датчика DS18B20 к микропроцессору или контроллеру:

  1. Схема питания извне. Или при помощи внешнего источника.
  2. Схема так называемого «паразитного питания». Датчик подключается только двумя проводами. Это имеет значение при размещении датчика на больших расстояниях.

При работе с температурой выше 100°С, схему с паразитным питанием использовать нельзя ввиду большой погрешности измерений.

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

Эти три операции демонстрируют работу с датчиком и библиотека OneWire прекрасно их поддерживает. Устанавливаем библиотеку OneWire Library. После этого грузим скетч — и программная среда готова.

Возможно подключение нескольких датчиков DS18B20 — в этом случае их требуется подключать параллельно. Библиотека OneWire позволит считывать показания сразу со всех одновременно. При одновременном большом количеством подключений датчиков необходимо добавлять дополнительно резисторы на 100 или 120 Ом между ножкой data датчика DS18B20 и шиной data на Ардуино.

БК на Arduino: измерение температуры воздуха, ОЖ, давления масла в двигателе и температуры масла в КПП

Давно занимаясь Arduino, пришла мысль сделать бортовой компьютер для автомобиля, который бы снимал ряд показаний, например, температура масла в МКПП. Рассмотрим реализацию подобного БК на ВАЗ 21074 и Arduino Uno.

Для простоты реализации будем использовать стандартные датчики для ВАЗ и Arduino, а именно:

  • датчик температуры ОЖ 23.3828
  • датчик температуры DS18B20
  • датчик температуры DHT22
  • датчик давления масла ММ393А

Датчиками 23.3828 будем измерять температуру ОЖ на выходе из ГБЦ, используя стандартный тройник головки блока ВАЗ 2123, и температуру масла в КПП (здесь сложнее, понадобится найти гайку М12х1.5, которую необходимо вварить в поддон КПП). Установку датчика в КПП можно посмотреть в Instagram .

Датчиком температуры DS18B20 будем измерять температуру воздуха под капотом (а именно, у воздушного фильтра карбюратора).

Датчиком температуры DHT22 будем измерять температуру и влажность в кабине.

Датчиком давления масла ММ393А будем измерять давление масла в двигателе, используя стандартный тройник от ваз 2106.

Если проблем с DS18B20 и DHT22 — нет (есть стандартные библиотеки для Arduino для снятия с них показаний), то для 23.3828 и ММ393А — ничего нет, поэтому необходимо используя графики зависимости сопротивление/температура и сопротивление/давление, прописать в Arduino пропорциональные зависимости. Необходимо отметить, что датчики 23.3828 необходимо подключать через резистор (например, 1 кОм), считывая аналоговым входом Arduino напряжение Uout в делителе напряжения, а ММ393А можно подключить через резистор 560 Ом

Важно помнить, что датчикам 23.3828 необходимо напряжение 5 В, а ММ393А — 12 В. Для подбора резисторов по номиналу и/или по обозначению полезным будет приложение, например, маркировка резисторов (Google Play) , а для расчета выходного напряжения в делителе напряжения — делитель напряжения (Google Play)

Сопротивление датчика 23.3828 в зависимости от температуры:

130 °C — 70 Ом, 110 °C — 133 Ом, 100 °C — 177 Ом, 90 °C — 241 Ом, 80 °C — 332 Ом, 70 °C — 467 Ом, 60 °C — 667 Ом, 50 °C — 973 Ом, 40 °C — 1459 Ом, 30 °C — 2238 Ом, 20 °C — 3520 Ом, 10 °C — 5670 Ом, 0 °C — 9420 Ом, -10 °C — 16180 Ом, -20 °C — 28680 Ом, -30 °C — 52700 Ом, -40 °C — 100700 Ом.

Сопротивление датчика ММ393А в зависимости от давления:

0 кг/см2 — 305 Ом, 0.5 кг/см2 — 282 Ом, 1.0 кг/см2 — 260 Ом, 1.5 кг/см2 — 238 Ом, 2.0 кг/см2 — 212 Ом, 2.5 кг/см2 — 190 Ом, 3.0 кг/см2 — 165 Ом, 3.5 кг/см2 — 142 Ом, 4.0 кг/см2 — 119 Ом, 4.5 кг/см2 — 108 Ом, 5.0 кг/см2 — 92 Ом, 5.5 кг/см2 — 80 Ом, 6.0 кг/см2 — 68 Ом, 6.5 кг/см2 — 51 Ом, 7.0 кг/см2 — 38 Ом, 7.5 кг/см2 — 16 Ом, 8.0 кг/см2 — 8 Ом.

Конфигурация: ВАЗ 21074 с стоковым двигателем 1.6 л и карбюратором ДААЗ Солекс 21073, выхлоп 4-2-1, облегченный маховик 2123, БСЗ, колеса R14 175/65, редукторный стартер.

Обозначения на БК:

Tw — температура ОЖ Tg — температура масла в КПП Ta — температура воздуха под капотом Tc и Hc — температура и влажность воздуха в кабине Po — давление масла

  • масло в КПП при прогреве двигателя также прогревается
  • при динамичной езде температура масла в КПП поднимается выше 50 °C
  • температура воздуха под капотом при движении по трассе близка к температуре окружающего воздуха
  • температура воздуха под капотом резко растет при стоянии в пробках и может превышать 50 °C (даже в зимний период)

Дополнительные материалы можно посмотреть в Instagram .

Источник

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий