AUX HT Monitoring for mAIN engine

I faced a problem somehow. Watch, maneuvers, and the 3-position automatic temperature control valve of the HT-circuit of the main engine “switched off”. The temperature went up sharply. Of course, in such cases, the valve must be opened manually, but there is only one problem. How much to open? A very large bypass of water to / from the LT-system will lead to a sharp drop in the temperature of the main engine. Such things are fraught with extremely negative consequences, up to fatal for some very expensive parts of the main engine. Insufficient bypass will lead to overheating, of course with consequences. So how much to open the valve? The closest point to view the temperature of the HT circuit is two decks above the control valve. In simple terms, by the time you open the valve and run to see, it will be too late! So I decided to assemble a device that displays the temperature of the main engine right next to the control valve. And also, I added a humidity and temperature sensor in the engine room to the device. Of course, everything is assembled without any interference with the stationary ship systems and can be easily dismantled or moved. The sensor for measuring the temperature of the HT circuit of the main engine is DS18B20. I programmatically set the measurement accuracy to 3 decimal places. Moisture and temperature in MO is measured by DHT11. Below is the program code.

#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

}

Leave a Reply

Your email address will not be published. Required fields are marked *