- 20.12.2020, 16:49
#548092
Guten Abend zusammen,
ich habe in den letzten 3 Tagen Quarantäne mal ein kleines Tool für unseren 404 entwickelt und wollte es gerne mit euch teilen.
Ich wollte die Öl-Temperaturen aus Motor / Getriebe / Differenzial hinten / Differenzial vorne überwachen.
Außerdem hatte ich ja schon mal ein Thema zur Vergaserheizung gemacht, da es mir scheint das ich Probleme damit habe.
Hier wollte ich die Ansaugtemperatur in Kombination mit der Luftfeuchte überwachen um mir die Situationen anzeigen zu lassen, in denen ich die Vergaserheizung Ein- bzw. Aus-schalten muss.
Umgesetzt habe ich die ganze Sache über einen Microcontroller. Gekostet hat mich die "Hardware" ca 105€.
1 x Microcontroller Board - 11€
3 x I2C Board mit LCD - 10€
4x DS18b20 Sensor + Tauchhülse - 68€
1x DHT11 Sensor - 5€
LEDs grün/blau/orange/rot - 1€
4x 220 Ohm Widerstand - 1€
1x 4,5 kOhm Widerstand - 0,5€
1x Travo von 12/24V auf 5/9V - 10€
1x On/Off Wippschalter - 3€
4x Led halter - 1€
Wie der Boardcomputer verkabelt ist seht ihr auf dem Bild.
Auf dem Display 1 werden die Motoröl und Getriebeöltemperatur angezeigt.
Auf dem Display 2 werden die beiden Differenzialtemperaturen angezeigt.
Auf dem Display 3 werden die Lufttemperatur und die Luftfeuchte in % angezeigt.
Ich habe jeder Temperatur bestimmte Grenzwerte zugeordnet, die dafür sorgen das die Überwachungs-LEDs leuchten.
LED Grün (Alle Temperaturen ok) -
Motor <=100°C / Getriebe <=90°C / Differenzial vorne <=85°C / Differenzial hinten <=85°C
LED Orange (eine oder mehrere Temperaturen im Arbeitsbereich) -
Motor >=100°C / Getriebe >=90°C / Differenzial vorne >=85°C / Differenzial hinten >=85°C
LED Rot (eine oder mehrere Temperaturen in Überlast) -
Motor >=120°C / Getriebe >=115°C / Differenzial vorne >=100°C / Differenzial hinten >=100°C
Um die blaue LED leuchten zu lassen, habe ich mich damit auseinandergesetzt bei welchen Luftzuständen - Vergaserfrost entstehen kann:
Dabei kam ich dazu, das eine Warnung immer dann ausgegeben wird, wenn die Feuchtigkeit größer 11g/m3 in der Ansaugluft ist. Wenn dieser Wert angezeigt wird leuchtet die blaue LED und zeigt mir so an die Vergaserheizung zu zu schalten.
Die Messungen werden in meinem Programm alle 0,5 Sekunden wiederholt um immer ein gleichbleibendes Ergebnis zu haben.
Ich hätte gerne noch eure Meinungen zu den Werten gehört ob die so realistisch bzw. vertretbar sind.
Wenn jemand Interesse an der ganzen Geschichte hat kann ich ihm gerne die Links zu den einzelnen Bauteilen zukommen lassen. Den Quelltext für das Programm packe ich auch noch unten rein.
Freu mich über eure Anregungen und Verbesserungen. Vielleicht hat ja jemand Ideen was man noch dazu packen kann.
Schönen Abend Marius
ich habe in den letzten 3 Tagen Quarantäne mal ein kleines Tool für unseren 404 entwickelt und wollte es gerne mit euch teilen.
Ich wollte die Öl-Temperaturen aus Motor / Getriebe / Differenzial hinten / Differenzial vorne überwachen.
Außerdem hatte ich ja schon mal ein Thema zur Vergaserheizung gemacht, da es mir scheint das ich Probleme damit habe.
Hier wollte ich die Ansaugtemperatur in Kombination mit der Luftfeuchte überwachen um mir die Situationen anzeigen zu lassen, in denen ich die Vergaserheizung Ein- bzw. Aus-schalten muss.
Umgesetzt habe ich die ganze Sache über einen Microcontroller. Gekostet hat mich die "Hardware" ca 105€.
1 x Microcontroller Board - 11€
3 x I2C Board mit LCD - 10€
4x DS18b20 Sensor + Tauchhülse - 68€
1x DHT11 Sensor - 5€
LEDs grün/blau/orange/rot - 1€
4x 220 Ohm Widerstand - 1€
1x 4,5 kOhm Widerstand - 0,5€
1x Travo von 12/24V auf 5/9V - 10€
1x On/Off Wippschalter - 3€
4x Led halter - 1€
Wie der Boardcomputer verkabelt ist seht ihr auf dem Bild.
Auf dem Display 1 werden die Motoröl und Getriebeöltemperatur angezeigt.
Auf dem Display 2 werden die beiden Differenzialtemperaturen angezeigt.
Auf dem Display 3 werden die Lufttemperatur und die Luftfeuchte in % angezeigt.
Ich habe jeder Temperatur bestimmte Grenzwerte zugeordnet, die dafür sorgen das die Überwachungs-LEDs leuchten.
LED Grün (Alle Temperaturen ok) -
Motor <=100°C / Getriebe <=90°C / Differenzial vorne <=85°C / Differenzial hinten <=85°C
LED Orange (eine oder mehrere Temperaturen im Arbeitsbereich) -
Motor >=100°C / Getriebe >=90°C / Differenzial vorne >=85°C / Differenzial hinten >=85°C
LED Rot (eine oder mehrere Temperaturen in Überlast) -
Motor >=120°C / Getriebe >=115°C / Differenzial vorne >=100°C / Differenzial hinten >=100°C
Um die blaue LED leuchten zu lassen, habe ich mich damit auseinandergesetzt bei welchen Luftzuständen - Vergaserfrost entstehen kann:
Dabei kam ich dazu, das eine Warnung immer dann ausgegeben wird, wenn die Feuchtigkeit größer 11g/m3 in der Ansaugluft ist. Wenn dieser Wert angezeigt wird leuchtet die blaue LED und zeigt mir so an die Vergaserheizung zu zu schalten.
Die Messungen werden in meinem Programm alle 0,5 Sekunden wiederholt um immer ein gleichbleibendes Ergebnis zu haben.
Ich hätte gerne noch eure Meinungen zu den Werten gehört ob die so realistisch bzw. vertretbar sind.
Wenn jemand Interesse an der ganzen Geschichte hat kann ich ihm gerne die Links zu den einzelnen Bauteilen zukommen lassen. Den Quelltext für das Programm packe ich auch noch unten rein.
Freu mich über eure Anregungen und Verbesserungen. Vielleicht hat ja jemand Ideen was man noch dazu packen kann.
Schönen Abend Marius
Code: Alles auswählen
// Bedingung für das Programm im Unimog.
// 2D-Motoröltemp / 2D-Getriebeöltemp / 2D-Differenzialtemp vorne / 2D-Differnezialtemp hinten
// 5D - Eingang Temperatur und Feutigkeit außen
// 6D - LEDgrün - System OK
// 7D - LEDorange - System warnung
// 8D - LEDrot - Systemfehler
// 9D - LEDblau - Vergaserheizung zuschalten
// 0A & 1A-Analoge PINs LCD1
// 0A & 1A-Analoge PINs LCD2
// 0A & 1A-Analoge PINs LCD3
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h> // Lib für den BUS
#include <DallasTemperature.h> // LIB für die Config Temp sensDS18B20
#include <DHT.h> // LIB für config Temp DHT11
#define ONE_WIRE_BUS 2 // definierung des Pins für den Bus
#define DHTPIN 3 // definierung des Pins für den Bus
#define DHTTYPE DHT11 // definierung Sensormodell
OneWire oneWire (ONE_WIRE_BUS); // definierung der Abfragen
DallasTemperature sensors (&oneWire);
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd1 (0x27, 16, 2); // definition BUSDISPLAY 1
LiquidCrystal_I2C lcd2 (0x26, 16, 2); // definition BUSDISPLAY 2
LiquidCrystal_I2C lcd3 (0x25, 16, 2); // definition BUSDISPLAY 3
int Anzahl_Sensoren = 0; // abfrage der Sensoren
int LED_green = 6; // Zuweisung der LED Ausgänge
int LED_orange = 7;
int LED_red = 8;
int LED_blue = 9;
void setup() {
Serial.begin(9600); // Serielle einstellung zur moinitorausgabe
sensors.begin(); // Digitale Messung starten
dht.begin(); // Messbeginn DHT11
Anzahl_Sensoren = sensors.getDeviceCount();
pinMode(6, OUTPUT); // PIN Mode beschreiben
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
lcd1.init(); // LCDs initialisieren
lcd2.init();
lcd3.init();
}
void loop() {
{
lcd1.init(); // LCD einschalten
lcd1.backlight(); // LCD Hintergrundbeleuchtung einschalten
lcd1.setCursor(0,0); // LCD ausgabe Temperatur Motor
lcd1.print("TM: ");
lcd1.print(sensors.getTempCByIndex (0));
lcd1.print (" C");
lcd1.setCursor(0,1);
lcd1.print("TG: "); // LCD ausgabe Temperatur Getriebe
lcd1.print(sensors.getTempCByIndex (1));
lcd1.print (" C");
}
{
lcd2.init();
lcd2.backlight();
lcd2.setCursor(0,0); // LCD ausgabe Temperatur Diff v
lcd2.print("TDv: ");
lcd2.print(sensors.getTempCByIndex (2));
lcd2.print (" C");
lcd2.setCursor(0,1);
lcd2.print("TDh: "); // LCD ausgabe Temperatur Diff h
lcd2.print(sensors.getTempCByIndex (3));
lcd2.print (" C");
}
{
lcd3.init();
lcd3.backlight();
lcd3.setCursor(0,0); // LCD ausgabe Luftfeuchte
lcd3.print("LFeuchte: ");
lcd3.print(dht.readHumidity()) ;
lcd3.print (" %");
lcd3.setCursor(0,1);
lcd3.print("LTemp: "); // LCD ausgabe Lufttemperatur
lcd3.print(dht.readTemperature());
lcd3.print (" C");
}
Serial.println (sensors.getDeviceCount());
sensors.requestTemperatures(); //Absatz für Digitale Messung 0 & Darstellung
Serial.print ("Temperatur-Motor: ");
Serial.print (sensors.getTempCByIndex (0));
Serial.println ("°C");
delay(500);
sensors.requestTemperatures(); //Absatz für Digitale Messung 1 & Darstellung
Serial.print ("Temperatur-Getriebe: ");
Serial.print (sensors.getTempCByIndex (1));
Serial.println ("°C");
delay(500);
sensors.requestTemperatures(); //Absatz für Digitale Messung 1 & Darstellung
Serial.print ("Temperatur-Diff-v: ");
Serial.print (sensors.getTempCByIndex (2));
Serial.println ("°C");
delay(500);
sensors.requestTemperatures(); //Absatz für Digitale Messung 1 & Darstellung
Serial.print ("Temperatur-Diff-h: ");
Serial.print (sensors.getTempCByIndex (3));
Serial.println ("°C");
delay(500);
float myfloat; //Absatz zum speichern der Variablen
float Motor = (sensors.getTempCByIndex (0));
float Getriebe = (sensors.getTempCByIndex (1));
float Diffv = (sensors.getTempCByIndex (2));
float Diffh = (sensors.getTempCByIndex (3));
if (Motor <= 100 && Getriebe <= 90 && Diffv <= 85 && Diffh <= 85){ // Messung aller Temperaturen im normal Bereich
digitalWrite(LED_green, HIGH);
digitalWrite(LED_orange, LOW);
}
else //
{
digitalWrite(LED_green, LOW);
}
if (Motor >= 100 || Getriebe >= 90 || Diffv >= 85 || Diffh >= 85) { // Messung aller Temperaturen im angestrengten Bereich
digitalWrite(LED_orange, HIGH);
}
else //
{
digitalWrite(LED_orange, LOW);
}
if (Motor >= 115 || Getriebe >= 110 || Diffv >= 95 || Diffh >= 95){ // Messung aller Temperatur im Überlastbereich Bereich 1
digitalWrite(LED_red, HIGH);
digitalWrite(LED_orange, LOW);
}
else //
{
digitalWrite(LED_red, LOW);
}
float Lfeuchte = (dht.readHumidity()); // Lesen der Luftfeuchtigkeit und speichern in die Variable h
float Ltemp = (dht.readTemperature()); // Lesen der Temperatur in °C und speichern in die Variable t
Serial.print("Luftfeuchtigkeit: "); //Im seriellen Monitor den Text und
Serial.print(Lfeuchte); //die Dazugehörigen Werte anzeigen
Serial.println(" %");
Serial.print("Temperatur: ");
Serial.print(Ltemp);
Serial.println(" Grad Celsius");
if (Lfeuchte >=25 && Ltemp >= 30 || Lfeuchte >=60 && Ltemp >= 25 || Lfeuchte >=80 && Ltemp >= 15 || Ltemp <= 10) { // Messung Temp & Feuchte zum einschalten Vergaserheizung
digitalWrite(LED_blue, HIGH);
}
else //
{
digitalWrite(LED_blue, LOW);
}
}
Dateianhänge:
Unimog Computer_Easy-Resize.com.jpg (97.34 KiB) 2340 mal betrachtet
MG68 liked this
Unimog 404 - Bj. 66