Вспомогательный Мониторинг Температуры главного двигателя

Столкнулся я как-то с проблемой. Вахта, манёвры, а 3-х позиционный автоматический клапан регулировки температуры HT-контура главного двигателя «заглючило». Температура резко пошла вверх. Разумеется, в таких случаях его необходимо открывать в ручную, вот только есть одна проблема. На сколько открывать? Сильно большой перепуск воды в/из LT-системы, приведёт к резкому падению температуры главного двигателя. Подобные вещи чреваты крайне негативными последствиями, вплоть до фатальных для некоторых очень дорогих частей ГД. Недостаточный перепуск приведёт к перегреву, разумеется с последствиями. Так на сколько открывать клапан? Близлежащая точка, где можно посмотреть температуру HT-контура находится на две палубы выше клапана регулировки. Говоря простыми словами, пока приоткроешь клапан и сбегаешь посмотреть, будет уже поздно! Вот и решил я собрать девайс выводящий температуру главного двигателя прямо возле клапана регулировки. А заодно, добавил к устройству датчик влажности и температуры в машинном отделении. Разумеется, всё собрано без какого-либо вмешательства в стационарные судовые системы и может быть легко демонтировано или перемещено. Датчик измерения температуры HT-контура главного двигателя — DS18B20. Програмно установил точность измерения до 3-знаков после запятой. Влажность и температуру в МО измеряет DHT11. Ниже код программы.

#include <LiquidCrystal_I2C.h> // Подключаем библиотеку ЖК дисплея по шине I2C
#include <Wire.h> // Подключаем библиотеку Wire
#include <OneWire.h> // Подключаем библиотеку OneWire
#include <DallasTemperature.h> // Подключаем библиотеку Dallas Temperature 
#include "DHT.h" // Подключаем библиотеку датчика влажности и температуры DHT

#define ONE_WIRE_BUS 8 // Определяем вход датчика DS18B20

OneWire oneWire(ONE_WIRE_BUS); // Подключаем OneWire устройство
 
DallasTemperature sensors(&amp;oneWire); // Подключаем oneWire к Dallas Temperature.

#define DHTPIN A0 // Определяем вход датчика DHT11

#define DHTTYPE DHT11 // Подключаем датчик влажности и температуры DHT11

DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = // Кодируем символ градуса на матрице дисплея
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};

LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея
// Выводы дисплея для Arduino UNO подключаем к:
//SDA-A4
//SCL-A5
void setup()
{

lcd.backlight(); // Включаем подсветку дисплея

// Кодируем Сообщение Приветствия

//Выводим сообщение №1
lcd.init(); // Инициализируем lcd дисплей
lcd.setCursor(0, 0); // Устанавливаем курсор
lcd.print("AUX SYS. OF TEMP"); // Выводим текст первой строки
lcd.setCursor(0, 1); // Устанавливаем курсор
lcd.print("    CONTROL    "); // Выводим текст 2 строки
delay(3000); // ждём 3000 миллисекунд

//Выводим сообщение №2
lcd.init(); // Инициализируем lcd дисплей
lcd.setCursor(2, 0); // Устанавливаем курсор
lcd.print("FOR MSC UMA"); // Выводим текст первой строки
lcd.setCursor(2, 1); // Устанавливаем курсор
lcd.print("ENGINE CREW"); // Выводим текст второй строки
delay(2000); // ждём 2000 миллисекунд

//Выводим сообщение №3
lcd.init(); // Инициализируем lcd дисплей
lcd.setCursor(1, 0); // Устанавливаем курсор
lcd.print("From Alexandr"); // Выводим текст первой строки
lcd.setCursor(1, 1); // Устанавливаем курсор
lcd.print("Cheban-Lianka"); // Выводим текст 2 строки
delay(1000); // ждём 1000 миллисекунд

//Выводим сообщение №4
lcd.init(); // Инициализируем lcd дисплей
lcd.setCursor(3, 0); // Устанавливаем курсор
lcd.print("HT-Sensor"); // Выводим текст первой строки
lcd.setCursor(4, 1); // Устанавливаем курсор
lcd.print("DS18B20"); // Выводим текст 2 строки
delay(100); // ждём 100 миллисекунд

//Выводим сообщение №5
lcd.init(); // Инициализируем lcd дисплей
lcd.setCursor(1, 0); // Устанавливаем курсор
lcd.print("Hummidity&amp;Temp"); // Выводим текст первой строки
lcd.setCursor(1, 1); // Устанавливаем курсор
lcd.print("Sensor - DHT11"); // Выводим текст 2 строки
delay(100); // ждём 100 миллисекунд

//Выводим сообщение №6
lcd.init(); // Инициализируем lcd дисплей
lcd.setCursor(0, 0); // Устанавливаем курсор
lcd.print("chebanlianka.com"); // Выводим текст первой строки
lcd.setCursor(0, 1); // Устанавливаем курсор
lcd.print("-----------------"); // Выводим текст 2 строки
delay(3000); // ждём 3000 миллисекунд

// Инициализируем дисплей
lcd.init(); // Инициализируем lcd дисплей
lcd.backlight(); // Включаем подсветку
lcd.createChar(1, degree); // Создаем символ под номером 1

dht.begin(); // начинаем работать с DHT11

sensors.begin(); // начинаем работать с DS18B20

};

void loop() {

//  Начинаем работу с DS18B20

sensors.requestTemperatures();
  
float temp = sensors.getTempCByIndex(0); // Читаем информацию с датчика температуры №1

// Начинаем работать с DHT11

float h = dht.readHumidity(); // Читаем с датчика DHT11 уровень влажности
float t = dht.readTemperature();  // Читаем с датчика DHT11 температуру в градусах цельсия 

// Выводим на дисплей данные датчика DS18B20

lcd.setCursor (0, 0 ); // Устанавливаем курсор в начало 1 строки
lcd.print("HT-Temp="); // Выводим текст
lcd.print(temp, 3); // Выводим значение температуры, "3" - уровень точности, 3 знака после запятой
lcd.print(""); // Выводим текст
lcd.setCursor(14, 0); // Устанавливаем курсор на 14 символ 1 строки
lcd.print("\1C"); // Выводим текст - символ градуса

// Выводим на дисплей показания влажности и температуры в машинном отделении с датчика DHT11

lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
lcd.print("E/R-  \1C"); // Выводим текст, "\1" - символ градуса
lcd.setCursor(4, 1); // Устанавливаем курсор на 4 символ 2 строки
lcd.print(t,0); // Выводим значение температуры, "0" - отсутствие знаков после запятой
lcd.setCursor(9, 1); // Устанавливаем курсор на 9 символ 2 строки
lcd.print("Hum-  %"); // Выводим текст
lcd.setCursor(13, 1); // Устанавливаем курсор на 13 символ 2 строки
lcd.print(h, 0); // Выводим значение влажности вмашинном отделении, "0" - отсутствие знаков после запятой

delay(100); // Добавляем паузу в 100 миллисекунд между измерениями

// Программа написана Александром Чебан-Лянка www.chebanlianka.com
// oleksandr@chebanlianka.com
// +380674836583

}

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

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