Pages: [1]   Go Down
Author Topic: Temperatur- und Druckanzeige: Steinhart-Hart-Werte? Linearer Wert für Druck  (Read 1179 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusamen!

Ich hab heut schonmal wegen meinem Display was gepostet und wurde von euch da schon so toll weitergeholfen.

Kurz zum "Problem":
Ich möchte Motoröltemperatur auslesen und Öldruck.
Hab nen Sketch im Netz gefunden der NTC´s ausliest und die Werte auf´s Display bringt und seriell zum PC zurück.
Jetz gibts da Steinhardt-Hardt-Koeffizienten die man im Datenblatt finden soll. Ich hab nur das Datenblatt hier:http://www.produktinfo.conrad.com/datenblaetter/175000-199999/182805-in-01-de-KENNLINIE_TEMP_SENSOR.pdf

Kann man da was mit anfangen? Mir zeigt´s die Temperaturen zwar schon an also auf Eis ziemlich genau 0°C und im kochenden Wasser ca 100°C ( bis auf die schnellen Sprünge wenn gerade ne Dampfblase am Fühler ist), hab aber keine Ahnung wie weit die Abweichung von wegen nicht linear ist. Oder meint ihr ich soll den Code einfach so stehn lassen?
Wobei unter 40°C - 60°C nur Low angezeigt werden soll (steht noch nicht ganz fest ab wann).
Wie kann ich eigentlich sagen das die Ausgabe auf´s Display nur ganze grad sein soll, also ohne Kommawerte? Der Code schaut im Moment so aus:
Code:
else
{
  lcd.setCursor(10,0);
  lcd.print(temp,1);
  lcd.setCursor(14,0);
  lcd.print((char)223);
  lcd.print("C");
}

Zum Thema Druck auch gleich wenn ich schon hier bin:
Sensor ist 3polig, 5V, Masse, Signal. Da könnt ich ja quasi auch nen Sketch für nen Poti benutzen?
Wegen umrechnen auf bar weiß ich dass der Sensor Spannungssignal zwischen 0,5V bei 0Bar und 4,5V bei 10Bar ausgibt, dazwischen linearer anstieg. Kann ich da einfach die 2 Werte irgendwie vorgeben dass sich der Code dann selber die Gerade errechnet? Denk des würde am einfachsten sein.
Datenblatt falls interessant:
http://www.produktinfo.conrad.com/datenblaetter/500000-524999/503568-da-01-ml-DRUCKSENSOR_9677010900_0_10_BAR_de_en.pdf

PS: bin Programmiertechnisch nicht wirklich fit, also falls die ein oder andere Saudumme Frege kommt bitte ich um Nachsicht smiley-confuse

Grüßla Mathias
Logged

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Zum Thema Druck auch gleich wenn ich schon hier bin:
Sensor ist 3polig, 5V, Masse, Signal. Da könnt ich ja quasi auch nen Sketch für nen Poti benutzen?
Wegen umrechnen auf bar weiß ich dass der Sensor Spannungssignal zwischen 0,5V bei 0Bar und 4,5V bei 10Bar ausgibt, dazwischen linearer anstieg. Kann ich da einfach die 2 Werte irgendwie vorgeben dass sich der Code dann selber die Gerade errechnet? Denk des würde am einfachsten sein.
Soweit ich weiß sind am Analog-Eingang 5V = 1023
Jetzt kannste dir mit dem Dreisatz ausrechnen was 0,5V und 4,5V sind.
Diese Werte kannst du dir MAPpen
zb:
Code:
druck = map(wert,  100,900,0,10)
Werte sind ausgedacht!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo!

Also demnach wär ja dann
5V    =  1023
0V    =  0
0,5V =  102
4,5V =  920

Wie nutz ich den map-Befehl? Ich hab im google und hier im Forum ned wirklich was gefunden, nur die Arduino-Seite, aber da is mei Englisch ned gut genug und vermutlich auch meine Programmierkentnisse.
Kann ich irgendwie die die 100 Werte zwischen 0V und 0,5V bzw. zwischen 4,5V und 5V nutzen?

Grüße
Logged

Germany
Offline Offline
Edison Member
*
Karma: 48
Posts: 2342
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Die erste Anlaufstelle ist ja immer die Arduino-Referenz: http://arduino.cc/en/Reference/Map
Und auch wenn dein Englisch nicht besonders gut ist, helfen meiner Meinung nach einem die Beispiele recht gut weiter.

Code:
void loop(){
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

Hier wird von einem analogen Eingang (10 bit), also ein Wertebereich von 0 bis 1023 in einen anderen Bereich "gemappt", also umgewandelt. Was früher 0 war, bleibt 0, was 1023 war wird 255. Werte dazwischen werden linear angepasst.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

NRW
Offline Offline
Sr. Member
****
Karma: 2
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mal ganz abgesehen davon hab ich dir den Befehl ja schon vorgegeben, sogar mit geringer Toleranz.

map(variable, kleiner wert vorher, großer wert vorher, kleiner wert nachher, großer wert nachher)

so viel Text ist da jetzt auch nicht auf der Seite den man übersetzen müsste.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi!

Erst nochmal Danke, wie gesagt ich bin beim programmieren neu dabei und kenn mich mit den ganzen Sachen ned wirklich aus. Und die Handbücher die ich bis jetz in der Hand oder am PC hatte haben mir zwar mal den ein oder anderen Begriff zufliegen lassen, aber verstanden sind leider die meisten Sachen noch nicht. Also nix für ungut wenn ich aus deinem Post nicht gleich schlau geworden bin smiley-red

Zum Map: der kann keine Nach-Komma-Werte ausgeben, hab ich richtig gelesen?
Für den Bereich (Druck in bar) sind ganze Bar fast etwas zu grob

Dankbare Grüße

Mathias
Logged

WW
Offline Offline
Jr. Member
**
Karma: 0
Posts: 59
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, map + analogRead liefern nur ganze Zahlen.
Entweder Du rechnest selbst mit einem Dreisatz oder Du wählst einfach einen größeren Bereich in map und dividierst anschließend.
z.B. Millibar messen, bar ausgeben:
Code:
void setup(){
  Serial.begin(115200);  
}

void loop(){
  float p = map(analogRead(0), 102, 920, 0, 10000);  // Ergibt p in Millibar
  Serial.print("Druck: ");
  Serial.print(p/1000);                              // p in bar
  Serial.println(" bar");
  delay(1000);
}
Den Bereich zwischen 0 und 0.5V bzw. 4.5 und 5V kannst Du imho nicht benutzen.

p.s.: Auch wenn man umgangssprachlich gerne schon mal z.B. vier Komma fünf Volt sagt (obwohl es vier Punkt fünf Volt lauten sollte), man schreibt (in Technik und Wissenschaft) 4.5 V - das Komma verwenden nur Kaufleute. Siehe z.B. die serielle Ausgabe des Arduino oder auf jedem Taschenrechner.

edit: Sorry fürs Korinthenk*cken, Haarespalten, Klugsche*ßen oder wie immer man es nennen will, aber ich selbst wurde im Studium auf Punkt statt Komma getrimmt. Wenn man jedesmal bei so etwas wie "13,4 g Benzoesäure ( 82,3 % Ausbeute)" die Kommata fett rot angestrichen bekommt, dann gewöhnt man sich das schnell ab und man bemerkt es sofort bei anderen. smiley-wink
« Last Edit: February 21, 2012, 12:49:12 am by mime » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Holla!

Also erstmal Danke! Auf die gleiche Idee bin ich auch gekommen als ich mein PC ausgemacht hab und siehe da: am nächsten Tag stellt sich raus dass ich nicht mal so auf dem Holzweg war! *freu*
Jedenfalls die Sache mit dem Druck sollte gehn, muss nur noch nen Testlauf mit dem echten Sensor machen, hab den Eingangswert zum testen nur mittels Poti simuliert und 0.5V bis 4.5V angelegt  smiley-mr-green
Ergebins war dann dass ich natürlich auch ca 0V und 5V hab anzeigen lassen können. Um bei Spannungsschwakungen das ganze zu unterbinden und quasi stabilisieren hab ich negative Werte ausgeschlossen vom Display und auch Werte größer 9.9bar.

Aber nochmal zu den Temperaturwerten:
Kennt sich zufällig jemand mit den Steinhart-Hart-Sachen aus? Wie gesagt, das Datenblatt hier
http://www.produktinfo.conrad.com/datenblaetter/175000-199999/182805-in-01-de-KENNLINIE_TEMP_SENSOR.pdf
hab ich, ich weiß nur nicht was es mit den deltaR/R, alpha und deltaT auf sich hat. Quasi ob des nur ne andere schreibweise von den A-, B- und C- Koeffizenten ist.

Gruß

PS: Danke für´s Korinthenk*cken, Haarespalten, Klugsche*ßen oder wie immer man es nennen will smiley-mr-green
aber ich finde interessant solche Dinge/Details zu wissen!
Logged

WW
Offline Offline
Jr. Member
**
Karma: 0
Posts: 59
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ich weiß nur nicht was es mit den deltaR/R, alpha und deltaT auf sich hat.

Das ist der Fehler der Messung/des Sensors. Von 0 - 90°C 0.4°C - wenn Du also einen Temperaturwert in diesem Bereich ermittelst, dann wäre die korrekte Angabe der Temperatur (z.B.) 23.3 +- 0.4°C.
Da Du sicher keine wissenschaftliche Abhandlung über die Öltemperatur Deines Motors verfassen wirst, kannst Du Dir das eigentlich sparen.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen!

Entschuldigt dass ich nix mehr von mir hab hören lassen, ich vergess immer zu schaun und Emailbenachrichtigung klappt i-wie ned.

Aber erst nochmal Danke an alle, hab die Probleme in den Griff bekommen.

Die a,b,c-Koeffizienten hab ich beim Hersteller erhalten mit der Zusatzinfo dass die Temperaturmessung mittels Steinhart-Hart nur quasi Schätzcharakter hat, im Fahrzeugbereich würde mit Stützwerten aus Widerstandstabellen gearbeitet.
Mir reicht die Genauigkeit vorerst, wenn ich mal wieder Muse und mehr Zeit hab mach ich mich vllt nochmal dran des ganze weiter zu verfeinern.

Jedenfalls Danke und schöne Zeit bis zum nächsten mal!

Griasla Mathias
Logged

Pages: [1]   Go Up
Jump to: