Hallo jurs, hallo guntherb,
erstmal Danke, dass ihr euch die Zeit genommen habt, hier dazu etwas zu schreiben, und durchzurechnen.
Beim Thema linear habe ich mich selber widersprochen, das stimmt. Habe aus dieser Tabelle eventuell auch falsche Werte entnommen:

Zum VDO Öldrucksensor muss ich noch sagen, dass ich auch schon in div. Foren aufgeschnappt habe, dass der ab 7 bar Erfassung nach oben driftet. Was eigentlich nicht schlimm ist, denn an meinem KFZ-Motor am Motorblock "liegen" eh nur maximal 6-7 bar Öldruck an.
Die Schaltung habe ich schon aufgebaut, und ist im Probebetrieb. Die Schaltung wird seperat mit einem ungeregelten 12V Netzteil versorgt, geht in einen 7805 Festspannungsregler. Gegen das "schwingen" habe ich 2 Kondensatoren vor- und -nachgeschaltet.
Was vom vorgeschlagenen Schaltungsaufbau abweicht, ist dass ich keinen festen 150R Widerstand benutze, sondern einen Spindelpoti 200R. So kann ich "Softwaremäßig" und "Hardwaremässig" die Geschichte einpendeln.
Würde mir von einem damaligen Arbeitskollegen, der sich viel Zeit genommen hat, mir eine LCD Öldruck Anzeige zu entwerfen, so empfohlen.
Der Sketch funktioniert nun! Vielen Dank für die Geduld und Mühe!
So sieht das im Moment aus:
#include <LiquidCrystal.h> // richte die library fuer das LCD ein
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// VDO pressure sensor code by 'jurs' for German Arduino Forum
float pressure_VDO_10bar(float RV, float VA_VB)
// Ermittlung des Drucks mit einem VDO Öldruckgeber 10bar
// Erklärung der Parameter:
// RV : Vorwiderstand in Ohm
// VA_VB : Spannungsverhältnis "Spannung am NTC zu Betriebsspannung"
// Rückgabewert : Öldruck
//
// Info: Öl Temperatur messen, welcher Öltemperaturgeber? (KFZ) - Deutsch - Arduino Forum
// VDO Öldruck 0-10 bar + Temperatur NTC 8k Ohm - Deutsch - Arduino Forum{
float a = 8.37e-8;
float b = 0.000054058;
float c = 0.0439893708;
float d = -0.4453831665;
float RN=RVVA_VB / (1-VA_VB); // aktueller Widerstand des NTC Oeldruckgeber
float pressure= aRNRNRN + bRNRN + c*RN + d;
if (pressure<0) return 0; // Begrenzung nach unten, keine negativen Werte extrapolieren
else if (pressure>11.1) return 11.1; // Willkürlich gewählte Begrenzung nach oben
else return(pressure);
}void setup() { // das Setup / die Initialisierung wird erst bei Reset neu geladen
lcd.begin(40, 2); // LCD-Setup (40 Stellen in 2 Reihen)
lcd.setCursor(0, 0); // setze den Cursor an Stelle 0, Zeile 0
lcd.write("\357LD:"); // schreibe an dieser Stelle (Cursor) "OLD:"
}void loop() {
float pressure;
float vorWiderstand=150; // Hier Vorwiderstand in Ohm angeben!
int analogPin=A1; // Hier den Analog-Pin angeben!
int messwert=analogRead(analogPin); // Hier wird gemessen!
pressure=pressure_VDO_10bar(vorWiderstand, messwert/1023.0); // Hier wird gerechnet!
lcd.setCursor(4, 0); // setzt Cursor an Stelle 4, Reihe 0
lcd.print(pressure,2); // LCD druckt den Wert mit 2. Kommastelle (oeldruck)
delay(200); // 200ms warten (quasie die Wiederholungsrate LCD warte)
}
Und das ist mein Schaltungsaufbau im Moment (etwas gruselig noch, aber wird schon):

