Herzlich willkommen

Herzlich willkommen auf der Unimog-Community-Website. Seit 1999 treffen sich hier die Mercedes-Benz Unimog- und MBtrac-Enthusiasten zum Meinungsaustausch und Fachsimpeln.

Spezial-Forum zur Unimog-Baureihe U 404 S.

Moderatoren: stephan, krahola

#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

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
Unimog Computer_Easy-Resize.com.jpg (97.34 KiB) 1902 mal betrachtet
MG68 liked this
#548102
Hallo Marius
welche Temperatur bzw wie wird diese erfasst. Ist ein Temp-Geber im Öl oder am Ölstopfen oder gar nur am Gehäuse angebracht? Zu dem Vorschlag von Justus, wenn es dir möglich ist, überwache alle Vorgelege. Ein Kollege hat anhand der erhöhten Temperatur am Vorgelege eine festsitzende Bremse erkannt.
Die Temperaturanzeige würde ich auf ein Display beschränken und den Wert automatisch anzeigen lassen, der seine Grenze überschreitet. Solange die grüne LED leuchtet, ist wie bisher auch keine Anzeige notwendig.
#548106
Grüßt euch,

Ja die Vorgelege wollte ich ursprünglich auch überwachen. Das ist von den Ein- und Ausgängen auch kein Problem. Allerdings habe ich bis jetzt noch keine passenden Tauchhülsen dafür finden können. Ich habe die Temperatursensoren mit Tauchhülsen in die Gewinde der jeweiligen Ölablassschrauben eingesetzt. Das war für meine Belange die einfachste und meiner Meinung nach die beste Lösung.

Das ganze auf einen Display zu beschränken der die Temperaturen z.b. abwechselt anzeigt, alle 5 Sek oder so wäre auch kein Problem, ein größerer Display der alles auf einmal anzeigt wäre auch eine Lösung .In meinem Fall möchte ich aber gerne immer alle Temperaturen sehen können und der erwähnt größere Display passt leider von der Höhe nicht an den vorgesehenen Einbauort.

Gruß
Marius
#548107
Hallo Marius,

toll noch ein Arduino-Fan. In meinem E-TrialMog arbeitet auch ein Arduino Nano um die Temperatur von Motor und Motorcontroller anzuzeigen. Allerdings nutze ich herkömmliche analoge Rundinstrumente mit blauem, weißn und roten Bereich.

Wo hast Du den Luftfeuchtsensor in Deinem Luftstrom eingebaut.
Dieser Sensor DHT_11 misst ja die relative Luftfeuchte und die Temperatur. Meiner Meinung nach ist für Dich als Kritrium für eine mögliche Vereisung nicht die absolute Luftfeuchte in g/m³ sondern der Taupunkt wesentlich. Der von Dir genannte Grenzwert von 11g/m³ wird im Sommer bei 35°C und nur 28% relativer Luftfeuchtigkeit überschritten. Eine Vergaservereisung kann ich mir unter diesen Bedingungen für uns hier auf der Erdoberfläche bei einem 404 nur schwer vorstellen. Auf der anderen Seite ist bei 0°C und 100% Luftfeuchtigkeit schon erhebliche Vereisungsgefahr aber es sind nur 4,8g/m³ Luftfeuchte.
#548109
Hallo Marius noch einmal :D

Die Vorgelege und die Differenziale am 404 haben doch die gleichen ÖÖlablassschrauben. Wie tief reichen den Deine Tauchhülsen da hinein, dass sie bei den Vorgelegen nicht passen.
#548129
Dieser Sensor DHT_11 misst ja die relative Luftfeuchte und die Temperatur. Meiner Meinung nach ist für Dich als Kritrium für eine mögliche Vereisung nicht die absolute Luftfeuchte in g/m³ sondern der Taupunkt wesentlich. Der von Dir genannte Grenzwert von 11g/m³ wird im Sommer bei 35°C und nur 28% relativer Luftfeuchtigkeit überschritten. Eine Vergaservereisung kann ich mir unter diesen Bedingungen für uns hier auf der Erdoberfläche bei einem 404 nur schwer vorstellen. Auf der anderen Seite ist bei 0°C und 100% Luftfeuchtigkeit schon erhebliche Vereisungsgefahr aber es sind nur 4,8g/m³ Luftfeuchte.
Ich denke das eine Vergaservereisung bei Außentemperaturen von >20 Grad eh kaum möglich sind..... aber das ist ein schwieriges Thema was ich hier nicht nochmal anreißen möchte. :D Ich habe mir ja auch nur ungefähre Punkte gesetzt anhand einer Taupunkttabelle wo ich eine Vergaservereisung für möglich halte laut meinen Infos. Ich finde das ist ein sehr schwieriges Thema bei dem sich echt die Geister streiten. Und ich werde Anfang des Jahres bei den erste Testfahrten sehen wie sich das ganze verhalten wird.
Ich stimme dir zu, dass der exakte Taupunkt der wahrscheinlich bessere Messpunkt für mich wäre. Allerdings hat der ja noch eine Variable (Druck).... Und ich müsste die Oberflächentemperatur im Vergaser messen. Damit würde ich mich dann eventuell in Version 1.1 beschäftigen :D

Aber du hast recht das ist eine Verbesserung! Danke für den Input.

Die Tauchhülsen sind 30mm lang ohne Gewinde.... mit Gewinde sind sie 50mm lang.
Wie gesagt ist das ganz während meiner aktuellen Quarantäne entstanden. Ich hab die Explosionszeichnungen nicht daheim und im Internet nur sehr schlechte gefunden aus denen ich entnommen habe, das meine Tauchhülse nicht länger als 15 mm sein dürfte... davon ziehen wir noch 5 mm Panikplatz ab und wären dann bei 10mm. Die habe ich bis jetzt noch nicht finden können.

Korrigiert mich wenn das falsch ist!

Danke und Gruß
Marius
#548133
Hallo Marius,

den Luftdruck kannst Du bei der Bestimmung des Taupunktes getrost vernachlässigen, zumal Dein Mog kaum in kurzer Zeeit auf 10.000m Höhe klettert.

Als Öltemperatursensor für die Vorgelege könntest Du Dir vielleicht mal den VDO A2C1755460001 anschauen.
#548141
den Luftdruck kannst Du bei der Bestimmung des Taupunktes getrost vernachlässigen, zumal Dein Mog kaum in kurzer Zeeit auf 10.000m Höhe klettert.
Ja werde mich die kommenden Tage mal mit dem Thema vertraut machen.... muss gestehen das das nicht mein Fachgebiet ist ;)

Super danke! Der sieht schon ganz gut aus :) allerdings wäre es mir am liebsten wenn ich alle Messungen mit dem selben Sensor durchführen könnte. Da der DS18B20 ja Wasserfest ist werde ich mal versuchen ihn in eine alte Ölablassschraube ein zu bauen.... Vielleicht funktioniert das ja mit einer PG Verschraubung.

Gruß
#548145
Hallo,
hier och ein Tipp für den Einbau der Temperaturfühler:
Wir haben früher oft in alte Öl-Ablassschrauben eine Bohrung gemacht.
Diese war mittig in der Schraube und es blieben ca. 2mm Material stehen.
Den Temperaturfühler (bei uns waren das PT 1000 Fühler) haben wir mit Wärmeleitkleber in die Schraube geklebt
(Achtung, nur den Sensor, die Anschlüsse freilassen, oft ist Wärmeleitkleber auch elektrisch leitfähig).
Das restliche Loch (inkl. den Anschlüssen mit angelöteten Litzen) wurde dann mit 2K-Harz ausgegossen.

Dieses System hat sich bewährt, es kann fast überall nachgerüstet werden.
Evtl. hilft dir das ja weiter.

Grüße
Thomas
#548148
Wir haben früher oft in alte Öl-Ablassschrauben eine Bohrung gemacht.
Diese war mittig in der Schraube und es blieben ca. 2mm Material stehen.
Den Temperaturfühler (bei uns waren das PT 1000 Fühler) haben wir mit Wärmeleitkleber in die Schraube geklebt
(Achtung, nur den Sensor, die Anschlüsse freilassen, oft ist Wärmeleitkleber auch elektrisch leitfähig).
Das restliche Loch (inkl. den Anschlüssen mit angelöteten Litzen) wurde dann mit 2K-Harz ausgegossen.
Hallo Thomas,

danke für deine Anmerkung. So in etwa hatte ich mir das auch gedacht und werde es auch so umsetzen.

Was denkt ihr denn über die Temperaturwerte die ich genommen habe. Sind die so in Ordnung oder kann man die noch anpassen?

Gruß
#548157
Hallo
sofern in den Achsen Hypoidöl eingefüllt wird, muss bei den verwendeten Bauteilen bzw Materialien auf Buntmetallkorrosion geachtet werden.
#555084
Moin,

Schöne Idee mit dem 404 Bordcomputer. Leider sind wir mit unserem Projekt noch lange nicht so weit, planen aber auch so etwas. Wir wollen dazu ein Rundinstrument als Bildschirm ausbauen und dann möglichst viele Sensoren anschließen. Geplant sind drahtlose Sensoren um den Verkabelungsaufwand zu minimieren. Zunehmend gibt es ja auch Tendenzen, das Sensoren smart werden und sich die benötigte Energie selber herstellen. Bei Reifenherstellern soll es das schon geben.
Also mindestens der Reifendruck muss noch auf Dein Display :idee

Grüße
Matthias

Guten Morgen Micha Deine Verdrahtungsangaben oder […]

Ausnahme STVZO par. 47 und 49

Guten Tag, 5 Jahre später und immer noch ohn[…]

Hallo Alex, danke Dir. Da ich ja den Auger verbau[…]

Wer kann mein Tinyhouse ziehen ?

Moin Ralf Wenn Dein Daily 3,5t ziehen darf,dann ka[…]