PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ESP32 Öltemperatur mit VDO NTC messen



alexander_ro
18.08.2018, 11:12
Hi Mädels ... Jungs ... :)

ich bin ja nun mehr der Software Entwickler und daher gerade am Rätseln wie man denn am besten den Spannungsteiler Dimensioniert. Laut VDO hat der Sensor einen definierten Bereich von 50 - 17000 Ohm. Wenn man den Spannungsteiler mit dem AD-Wandler belastet ist das dann ein belasteter Spannungsteiler oder ein unbelasteter. Ich nehme mal an der Widerstand eines AD-Wandler Eingangs ist relativ hoch.

Die zweite Frage ist Versorgt man dann den Spannungsteiler mit 12V oder 3,3V?

Viele Grüße
Alexander

Mxt
18.08.2018, 15:20
Hallo,

von der Theorie her ist es natürlich immer ein belasteter Spannungsteiler, sobald man irgendwas dran hängt. Aber solange es keine Präzisionsmessung wird, kann man den Effekt wohl ignorieren. Im Zweifelsfall mit einem guten Voltmeter messen, ob sich die Spannung ängert, wenn man den AD-Wandler dazuhängt.

Wenn es wirklich ein einfacher NTC-Widerstand ist, sollte die Spannung eigentlich egal sein. Aber das scheint ja was zum Einsatz im Auto bei hohen Temperaturen zu sein. Steht dazu was im Datenblatt ?

Mit 3,3 V Technik direkt an einem Motor wird man noch ganz andere Probleme kriegen ...

HaWe
18.08.2018, 16:11
ist der NTC ganz isoliert nur am ESP oder hängt er auch noch am 12V Kfz-Netz?

alexander_ro
18.08.2018, 16:18
Es ist laut Datenblatt ein NTC mit einem Pin an Masse der andere als Kabelanschluss. Der Sensor ist sonst nicht mit dem Auto verbunden. Er geht nur an ein VDO Zeigerinstrument. Das VDO Instrument soll weg und dafür der ESP32 dann die Temperatur per WLAN zum Handy übertragen. Messen kann er bis 150 Grad das sind dann 10,96 Ohm (war oben leider falsch) bei -40 Grad sind es 17162,35 Ohm also etwa 17 KOhm.

Da es ein Diesel ist muss man schon mal nicht mit den Störungen der Zündanlage rechnen. Die 12V die ja im Auto nie wirklich 12V sind ... sind aber recht sauber die Lichtmaschine scheint wenig Störungen zu produzieren.

Versorgt man den Spannungsteiler mit 12V müsste man die ja Regeln weil Spannungsschwankungen ja das Ergebnis verfälschen würden. Die 3,3V wären ja schon geregelt. Deshalb die Idee mit den 3,3 Volt. Ich weiß aber nicht so genau was besser ist.

HaWe
18.08.2018, 16:32
mit 12V am Auto UND an 3.3V ESP - da muss ich passen

alexander_ro
18.08.2018, 16:37
Es hat ja nur die Masse Verbindung mit dem Auto. Die Masseleitungen von verschiedenen Spannungsquellen sollte man doch problemlos verbinden können.

HaWe
18.08.2018, 16:44
ach so: NUR Masse!
dann ja, dann misst man einen Widerstand z.B. so (mit 100k Pullup an ADC):

https://2.bp.blogspot.com/-bqoq50JR7uM/VfLIEcUM6LI/AAAAAAAABeU/gvGwU1qpOLg/s1600/Schaltplan_Feuchtigkeitssensor.png
(statt "Erde" dann hier dein NTC)

Mxt
18.08.2018, 17:13
Hier noch etwas detailreicher für einen NTC, auch mit der notwendigen Mathematik zum Linearisieren:
https://learn.adafruit.com/thermistor/using-a-thermistor

Das hier würde ich mir auch reinziehen, ist hier zwar für 5V, der ESP ist 3,3, gilt aber entsprechend.
https://www.digikey.com/en/articles/techzone/2012/apr/protecting-inputs-in-digital-electronics

Für die Stromversorgung gilt ähnliches, da finde ich auf Anhieb keine so schöne Seite.

alexander_ro
19.08.2018, 10:50
Ich habe jetzt mal ein bisschen gerechnet. Der 100k Widerstand erscheint mir ein bisschen sehr groß. Weil bei 150 Grad der Sensor ja nur noch 10 Ohm hat fallen dann nur noch 0,00033V ab. Die kann der 12-Bit Wandler zwar auch auflösen aber die Störanfälligkeit wird dadurch doch auch größer? Bei einem Kiloohm und 3,3V fließen 3,3mA das ist vielleicht ein bisschen viel. Aber 5 oder 10 Kiloohm sollten doch gehen und durch den etwas höheren Strom sollte die Störanfälligkeit doch auch geringer werden.

HaWe
19.08.2018, 11:40
ja, 10k klingen gut, es kommt ja auch v.a. auf den Messbereich an, der dir wichtig ist.

alexander_ro
19.08.2018, 16:46
Die 150 Grad braucht man schon weil normale Öltemperatur bis 120-130 geht die (150) zeigt auch das VDO Instrument an. Das VDO Instrument beginnt aber erst bei 50 Grad. Ich hätte aber gerne auch eine Anzeige im kalten Zustand aber in unseren breiten werden es sicher keine -40 Grad. Ich nehme mal an -20 würden reichen. Der Widerstandsbereich würde dann von 5067,60 Ohm bis 10,96 Ohm gehen.

Ich habe heute jemanden hier getroffen der auch so Elektronik Sachen baut der meinte man könnte das auch mit einer Konstantstromquelle bauen. Ich glaube aber ich werde das trotzdem erst mal mit einem Widerstand versuchen sonst muss ich erst mal suchen wie man die Konstantstromquelle baut. Den durch die Konstantstromquelle zu ersetzen kann ich ja später immer noch machen.

alexander_ro
22.08.2018, 11:41
Jetzt habe ich da noch ein Merkwürdiges Problem mit der Software. Erst mal das Programm das ich zum Testen benutzt habe.



#include <Arduino.h>

#include "Wlan.cpp"

const char* ssid = "+++";
const char* passwd = "???";

void setup ()
{
Serial.begin (9600);

Serial.println ("");

// connectWlan objWlan (ssid, passwd);
}

void loop ()
{
Serial.println ("Start AD-Wandler lesen");

int analogChannel = 25;
int sensorReading = analogRead (analogChannel);

Serial.print ("AD-Wandler Kanal ");
Serial.print (analogChannel);
Serial.print (": ");
Serial.println (sensorReading);

delay (1000);
}


Wenn ich das Wlan benutze dann funktioniert der AD-Wandler nicht mehr richtig. Es wird immer der maximal Wert 4095 ausgegeben. Ohne Wlan Erhalte ich normale Werte je nach angelegter Spannung. Das verbinden mit dem WLAN macht die Methode "connectWlan objWlan (ssid, passwd);".

Die Wlan.cpp ist eine einfache Klasse die die Verbindung zum Hotspot aufbaut.



#include <WiFi.h>

class connectWlan
{
public:
connectWlan (String strSsid, String strPasswd)
{
Serial.println ("Connect: WLAN");

// Verbinde mit dem WLAN
Serial.print ("WLAN Verbindung aufbauen ");

// Connect mit WPA Verschlüsselung
WiFi.begin (strSsid.c_str (), strPasswd.c_str ());

while (WiFi.status () != WL_CONNECTED)
{
Serial.print (".");
delay (500);
}
Serial.println ("");

Serial.print ("IP-Adresse: ");
Serial.println (WiFi.localIP ());
}
};


Ich hoffe Ihr habt da eine Idee ich bin im Moment ein bisschen Ratlos warum das nicht geht. Ich habe auch nichts gefunden das der ESP32 Pico mit WLAN die Ports anderweitig benutzen würde.

<Edit>
Nachdem ich andere Ports getestet habe hat sich herausgestellt das der 32 auch geht wenn das WLAN an ist. Von der Elektor gibt es ein Buch zu dem ESP32 Pico Kit in dem wird auch der IO32 benutzt leider hat der Autor nichts darüber geschrieben ob und warum die anderen mit WLAN nicht funktionieren.

Das habe ich nach längerem Suchen gefunden sagt aber auch nicht wirklich was nicht geht: https://github.com/espressif/arduino-esp32/issues/102

Lordcyber
01.11.2018, 09:54
ach so: NUR Masse!
dann ja, dann misst man einen Widerstand z.B. so (mit 100k Pullup an ADC):

https://2.bp.blogspot.com/-bqoq50JR7uM/VfLIEcUM6LI/AAAAAAAABeU/gvGwU1qpOLg/s1600/Schaltplan_Feuchtigkeitssensor.png
(statt "Erde" dann hier dein NTC)

Hallo womit hast du das Bild erstellt?
Danke

piggituX
02.11.2018, 14:01
Hi,

fritzing kann sowas

http://fritzing.org/home/