ESP32-S3 VDO Öl Temperatur und Druck

Hallo zusammen,
ich versuche gerade den Code von Jurs aus diesem Thread (Öl Temperatur messen, welcher Öltemperaturgeber? (KFZ) - #12 by jurs) auf ein ESP32-S3 Board zu übertragen.
Genau genommen ist es dieses Board: https://www.waveshare.com/wiki/ESP32-S3-LCD-1.28
Leider zeigt er keine brauchbaren Messergebnisse an.
Liegt es daran, dass ich nur mit 3,3V arbeite?
Ist der Code überhaupt auf ein ESP32 übertragbar?
Kann man nur bestimmte Pins für Analoge Messungen nehmen?
Ich stehe auf dem Schlauch...

Ich poste morgen meinen bisherigen Code dazu.

Viele Dank schon mal.
Matthias

Das dürfte dem NTC egal sein. Allerdings muß der Wert #define MAXANALOGREAD 1023.0 an die verwendete Auflösung angepaßt werden, normal 4095.0.

Ja.

Ja, möglichst die vom ADC1. A2 mußt Du in die Pinnummer wandeln, beispielsweise 36.

Hi,
danke schon mal.
Die Punkte habe ich aber schon berücksichtigt.
Demnach muss ja mit meiner Schaltung oder mit dem NTC etwas nicht stimmen.

Hier der aktuelle Code:

// NTC temperature calculation by "jurs" for German Arduino forum
#define ABSZERO 273.15
#define MAXANALOGREAD 4095.0

float temperature_NTCB(float T0, float R0, float B, float RV, float VA_VB)
// Ermittlung der Temperatur mittels NTC-Widerstand
// Version der Funktion bei gegebener Materialkonstante B
// Erklärung der Parameter:
// T0           : Nenntemperatur des NTC-Widerstands in °C
// R0           : Nennwiderstand des NTC-Sensors in Ohm
// B            : Materialkonstante B
// Vorwiderstand: Vorwiderstand in Ohm  
// VA_VB        : Spannungsverhältnis "Spannung am NTC zu Betriebsspannung"
// Rückgabewert : Temperatur
{
  T0+=ABSZERO;  // umwandeln Celsius in absolute Temperatur
  float RN=RV*VA_VB / (1-VA_VB); // aktueller Widerstand des NTC
  return T0 * B / (B + T0 * log(RN / R0))-ABSZERO;
}


float temperature_NTC(float T0, float R0, float T1, float R1, float RV, float VA_VB)
// Ermittlung der Temperatur mittels NTC-Widerstand
// Version der Funktion bei unbekannter Materialkonstante B
// Erklärung der Parameter:
// T0           : Nenntemperatur des NTC-Widerstands in °C
// R0           : Nennwiderstand des NTC-Sensors in Ohm
// T1           : erhöhte Temperatur des NTC-Widerstands in °C
// R1           : Widerstand des NTC-Sensors bei erhöhter Temperatur in Ohm
// Vorwiderstand: Vorwiderstand in Ohm  
// VA_VB        : Spannungsverhältnis "Spannung am NTC zu Betriebsspannung"
// Rückgabewert : Temperatur
{
  T0+=ABSZERO;  // umwandeln Celsius in absolute Temperatur
  T1+=ABSZERO;  // umwandeln Celsius in absolute Temperatur
  float B= (T0 * T1)/ (T1-T0) * log(R0/R1); // Materialkonstante B
  float RN=RV*VA_VB / (1-VA_VB); // aktueller Widerstand des NTC
  return T0 * B / (B + T0 * log(RN / R0))-ABSZERO;
}


void setup()
{
  Serial.begin(115200);
}


#define ANALOGPIN 35

void loop()
{
  float T0=60;    // Nenntemperatur des NTC-Widerstands in °C
  float R0=221.2; // Nennwiderstand des NTC-Sensors in Ohm
  float T1=120;   // erhöhte Temperatur des NTC-Widerstands in °C
  float R1=36.5;  // Widerstand des NTC-Sensors bei erhöhter Temperatur in Ohm
  float Vorwiderstand=100; // Vorwiderstand in Ohm  
  float temp;    
  int aValue=analogRead(ANALOGPIN);
  
  // Berechnen bei unbekannter Materialkonstante
  temp=temperature_NTC(T0, R0, T1, R1, Vorwiderstand, aValue/MAXANALOGREAD);
  Serial.print("NTC : ");Serial.print(temp);Serial.println(" C");
  // Berechnen bei bekannter Materialkonstante B=3933;
  temp=temperature_NTCB(T0, R0, 3933, Vorwiderstand, aValue/MAXANALOGREAD);
  Serial.print("NTCB: ");Serial.print(temp);Serial.println(" C");
  delay(1000);
}

Und so habe ich es derzeit angeschlossen:


Die LED ist der Sensor :wink:. Es ist übrigens dieser hier: Ölmessstab m. Temperaturgeber - 327mm - 6-24V - 2-polig | ClassicGo

Wenn ich es nun mit 100 Ohm Vorwiderstand aufbaue, habe ich bei Zimmertemperatur einen Wert von -273.15 C. Egal ob ich den NTC, einen Poti oder einen 100 Ohm Widerstand messe.
An einem ADC2 Pin (z.B. 4) bekomme ich einen Wert von ca. 22 C bei 100 Ohm.

Ich hoffe mit den Informationen könnt ihr mir helfen.
Danke
Matthias

Beim Ölpeilstab irritiert mich diese Angabe:

Spannung : 6-24 Volt

Ein Widerstand hat keinen Spannungsbereich.

Du hast einen ESP32-S3, da ist GPIO35 kein anloger Pin, sorry. Bitte nutze einen der ADCn_x Pins, möglichst ADC11). Mußt mal sehen, welcher bei Deiner Platine zugänglich ist.


Anm.:

  1. Bei meinen ESP32 funktioniert nur ADC1 zusammen mit WiFi. Ob das auch für den ESP32-S3 gilt, weiß ich nicht. Ohne WiFi kannst Du aber auch ADC2 nutzen.

Wifi nutze ich zumindest nicht. Muss ich es dann explizit abschalten?

Ich denke die 6-24 Volt beziehen sich nur auf die mögliche Bordspannung im Fahrzeug.

Hier mal die aktuelle Schaltung:

Damit bekomme ich mit einem 100 Ohm Widerstand anstelle des NTC einen Wert von 88 C.
Das entspricht ja in etwa dem Wert, den @jurs in der Excel Tabelle berechnet hat.

Mit dem VDO NTC bei Zimmertemperatur -273.15 C.
Das lässt mich ja fast vermuten, dass der VDO Sensor falsche Werte liefert.
Ich werde gleich mal den Widerstand des Sensors bei Zimmertemperatur messen.

Nö, Nichtnutzung genügt.

Könnte sein.

Quelle: ESP32-S3 Dev Board, GC9A01 Display Driver Chip With 1.28inch IPS Round LCD
Wiki: ESP32-S3-LCD-1.28 darin Schaltplan

Seh ich auch so. Das ist eine Seite für Autoersatzteile, das sagt das mehr oder weniger "passt für alle" :laughing:

Dann nach Möglichkeit auch noch bei ein paar höheren Temperaturen (die Angaben auf der Seite müssen nicht stimmen) damit Du die Formel zur Temperatur anpassen kannst. Die Teile sind nicht linear.

Zitat von der Liferantenseite:

  • 60°C = 237,5 Ohm ± 20 Ohm
  • 90°C = 89,0 Ohm ± 6 Ohm
  • 120°C = 38,4 Ohm ± 2 Ohm

Das wird in dem Bereich der eigentlich interessant ist eine ungenaue Geschichte...

Das analogRead Ergebnis würde ich auch aus mindestens 50 Wiederholungen mitteln, - der ADC des ESP32 gilt nicht als einer der Präzisen.

Also, das Ergebnis:

Zimmertemperatur ca 19 C = 0,1 Ohm
Kochendes Wasser ca 100 C = 0,1 Ohm

Ungläubig wie ich bin habe ich das Multimeter getestet.
Da liegt dann wohl ein Kurschluss vor oder?

Ich werde den Sensor umtauschen und dann weiterschauen.
Sobald es etwas neues gibt melde ich mich wieder!

Vielen Dank an euch.
Matthias

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.