Go Down

Topic: Öl Temperatur messen, welcher Öltemperaturgeber? (KFZ) (Read 55462 times) previous topic - next topic

HotSystems

Prima, wenn es jetzt funktioniert.
Danke für die Rückmeldung.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

cb1000r

So Miteinander,

funktioniert alles super bis ich den Motor anlasse...siehe Video

Als letzten Schritt werde ich die Kunstoffbox in Alufolie einpacken und mit auf Masse legen.
Das Cat7 Kabel ist schon an beiden Enden auf Masse gelegt. Bild von der Kunststoffbox

combie

Quote
Als letzten Schritt werde ich die Kunstoffbox in Alufolie einpacken und mit auf Masse legen.
Das ist nicht das Problem, und damit auch nicht der letzte Schritt.

Wie hast du deine Stromversorgung aufgebaut?


----
SPI, oder I2C  Display?
Die Kabel sind sehr lang.
Der Verstand, und die Fähigkeit ihn zu gebrauchen, sind zweierlei Fähigkeiten.

cb1000r

Wie hast du deine Stromversorgung aufgebaut?
----
SPI, oder I2C  Display?
Die Kabel sind sehr lang.
Ich greife mir 12V von der Kennzeichenbeleuchtung ab und gehe mit einem DC/DC mit 5V auf den Arduino . Mit dem Hintergedanken das ich keine Überspannungen auf den Arduino bekomme. Das ich keine extra Schutzbeschaltung aufbauen muss.

Ich verwende ein I²C Display das Problem mit dem zu langem Kabel habe ich ein paar Posts vorher gelöst. Denke ich. Taktfrequenz verringert.

cb1000r

Das ist nicht das Problem, und damit auch nicht der letzte Schritt.
Stimmt, die Alufolie hat nicht geholfen...das wusstest Du aber schon :o

Vielleicht kannst Du mir kurz deine Meinung schildern. Du weißt scheinbar mehr als ich.

Oder der Themaeröffner kann was dazu sagen?
Problem gelöst?
Oder Projekt abgebrochen?


combie

Quote
...das wusstest Du aber schon :o
Ja!
Meine Glaskugel hat mir das eingeflüstert!
(Jahrzehnte lange KFZ Erfahrung und selber XJ900 Treiber)


Weiterhin:
1. Dein Bussystem
2. Stromversorgung
3. Störungen über Sensorleitung


Ich halte I2C nicht für verwendbar. Zumindest war es nie nicht für solche Einsätze gedacht.
Nicht ohne Grund werden im KFZ Bereich differenzelle Bussysteme verwendet.
z.B. CAN oder/und LIN


Vorschlag:
Mit einem Oszilloskop prüfen, WO es überhaupt klemmt. Erst dann kann man konkrete Abhilfe schaffen. Alles andere ist stochern im Nebel.



Ein Besserung könntest du evtl erzielen:
1. Wenn du zwei P82B715 I2C Bus Extender verwendest.
2. Auf CAN umstellt
3. Einen Händilader als DC/DC Wandler einsetzt.




Der Verstand, und die Fähigkeit ihn zu gebrauchen, sind zweierlei Fähigkeiten.

cb1000r

Servus,
ich hatte mal wieder Zeit um weiter zu forschen. Das Problem liegt in der Stromversorgung. Wenn ich die Stromversorgung von extern bereit stelle klappt alles auch im laufenden Betrieb. Sobald ich auf 12V oder 5V DC/DC von dem Moped gehe habe ich Störungen. Kann mir jemand eine Lösung für eine saubere Stromversorgung empfehlen?

Beste Grüße

meister_q

Ich hatte es genau anders rum. DCDC Wandler an 12V Batterie auf 5V für den Arduino klappte. Externe Powerbank als Stromversorgung, klappte nicht.

Nutz geschirmte Leitungen und mach die Wege möglichst kurz.

HotSystems

Alles in ein Metallgehäuse bauen und davor ein Entstörfilter setzen.
Z.B. Entstörfilter
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

y4y0

Hallo zusammen,

ich muss dieses Thema leider nochmal aktivieren. Ich habe einen unbekannten NTC und möchte gerne mit diesem eine Temperatur messen.

NTC:
ohm temp
1612 20
654 42
358 60
187 80
110 100

Ich habe bei einer Versorgungsspannung (Arduino & Messschaltung) von 6V einen Temperaturwert von 13°C, bei 3,86V einen Wert von 29°C. Der aktuelle Widerstand beträgt zu diesem Zeitpunkt 1454 Ohm.

Ich habe es so verstanden, dass aufgrund des Spannungsverhältnisses die Versorgungsspannung nicht berücksichtigt werden muss.

Was mache ich falsch ?


Vielen Dank im Voraus !!


Folgender Code wird verwendet:

Code: [Select]
/ NTC temperature calculation by "jurs" for German Arduino forum
#define ABSZERO 273.15
#define MAXANALOGREAD 1023.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(9600);

}

#define ANALOGPIN A2

void oiltemp()
{
  float T0 = 20;  // Nenntemperatur des NTC-Widerstands in °C
  float R0 = 1612; // Nennwiderstand des NTC-Sensors in Ohm
  float T1 = 42; // erhöhte Temperatur des NTC-Widerstands in °C
  float R1 = 654; // Widerstand des NTC-Sensors bei erhöhter Temperatur in Ohm
  float Vorwiderstand = 1500; // 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, 3788, Vorwiderstand, aValue / MAXANALOGREAD);
  Serial.print("NTCB: "); Serial.print(temp); Serial.println(" C");
}

void loop() {
  
  oiltemp();

  delay(1000);

}

HotSystems

#100
Nov 23, 2017, 09:23 pm Last Edit: Nov 23, 2017, 09:30 pm by HotSystems
Wozu kaperst du einen Thread, der ein anderes Thema bearbeitet.

Zur besseren Übersicht solltest du einen eigenen Thread aufmachen.
Da wird dann nichts vermischt.

Und setze bitte im neuen Thread in Code-Tags, damit wird dieser für alle besser lesbar.

Unklar ist die Betriebsspannung von 6 Volt.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

y4y0

Mein vorhaben basiert auf diesem Thema + Mein Code ist bis auf ein paar variablen identisch.

HotSystems

Sehe ich nicht, für mich wird das nur unübersichtlicher.
Aber dennoch darfst du Fragen beantworten.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

y4y0

Die 6V stammen aus einem Spannungsregler, die 3,86V kommen aus einem USB-Hub. Die Versorgungsspannung geht in VIN und GND des Arduino Uno und die Messschaltung.

Aufbau Spannungsteiler:


6V  -- R1500 --+-- Geber == GND
                            |
            Analog-Eingang (A2)

Tommy56

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up