www.mikrocontroller.net

Forum: Compiler & IDEs NTC Softwarelinearisierung


Autor: Alfred Q. (higedigdag)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle!

Ich wollte mit einem avr die temp. mit einem ntc messen.
Die werte für eine Kennlinie sind vorhanden.

Ist es möglich das man z.b. mehrere geraden an die "krumme" Kennlinie 
des ntc anlegt und diese dann in dem jeweiligen Bereich zur Berechnung 
benutzt?

Hat jemand schon mal etwas in der Richtung gemacht?

Ich habe eine pdf als Beispiel gemacht.

Mir ist klar das diese Methode mit einem recht großen Fehler behaftet 
ist.
Aber es muss nicht so genau sein. Wollte das Problem halt per Software 
lösen.

Mfg Andy

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy H. wrote:
> Hallo an alle!
>
> Ich wollte mit einem avr die temp. mit einem ntc messen.
> Die werte für eine Kennlinie sind vorhanden.
>
> Ist es möglich das man z.b. mehrere geraden an die "krumme" Kennlinie
> des ntc anlegt und diese dann in dem jeweiligen Bereich zur Berechnung
> benutzt?

Möglich ist alles.
Im PDF wurde das ja anscheinend schon gemacht.
Es gibt 13 Geraden, die an die Kennlinie angelegt
wurden.

Berechne noch die Schnittpunkte von 2 aufeinanderfolgenden
Kennlinien, damit du eine Tabelle aufstellen kannst, ab wann
welche Geradengleichung gilt und dann sollte das eigentlich
schon gehen.

Autor: Alfred Q. (higedigdag)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja genau, das wollt ich noch machen...
hab nur gerade nich ganz so viel zeit weil ich noch für die klausuren 
lernen muss :(

wie hoch ist denn der rechenaufwand bei sowas?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andy H. wrote:
> ja genau, das wollt ich noch machen...
> hab nur gerade nich ganz so viel zeit weil ich noch für die klausuren
> lernen muss :(
>
> wie hoch ist denn der rechenaufwand bei sowas?

Trivial:

> Berechne noch die Schnittpunkte von 2 aufeinanderfolgenden
> Kennlinien,

Falls du nicht weist, wie das geht:

2 Geraden schneiden sich in einem Punkt (wenn sie nicht gerade
parallel sind)
Es gibt also einen Punkt Xs/Ys, der auf beiden Geraden liegen
muss (sonst wäre er ja kein Schnittpunkt)

Für diesen Punkt gilt logischerweise: er liegt auf Gerade 1.
Er erfüllt also die Gleichung

      Ys = m1 * Xs + n1

Aber derselbe Punkt muss logischerweise auch auf Gerade 2 liegen
Ere muss also auch die Gleichung

      Ys = m2 * Xs + n2

erfüllen

(m1, n1 sind die Koeffizienten der ersten Gerade
 m2, n2 sind die Koeffizienten der zweiten Gerade
 die hast du ja schon, sind im PDF angegeben)

Jetzt hast du aber 2 Gleichungen, mit 2 Unbekannten


      Ys = m1 * Xs + n1
      Ys = m2 * Xs + n2

(m1,n1,m2,n2 sind konstant; Xs, Ys sind die Unbekannten)

und das sollte sich doch lösen lassen.
zb durch Einsetzen von Ys aus Gleichung 1 in Gleichung 2

   m1 * Xs + n1 = m2 * Xs + n2

   m1  Xs - m2  Xs = n2 - n1

   Xs( m1 - m2 ) = n2 - n1

        n2 - n1
   Xs = -------
        m1 - m2


Das rechnest du dir mal für die Zahlenwerte von 2 Gleichgunen
konkret aus und setzt das in Gleichung 1 ein

    Ys = m1 * Xs + n1

und erhältst so den Widerstandswert an dem von Gleichung 1 auf
Gleichung 2 umgeschaltet werden muss.


Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochwas: Die im PDF angegebenen Gleichungen sind Vorwärtsgleichungen
X ist die Temperatur, Y ist der Widerstandswert.

Du wirst das aber wahrscheinlich in die andere Richtung brauchen.
Gegeben Widerstandswert, gesucht Temperatur.

oder mathematisch ausgedrückt:
Die Gleichung
   Y = m * X + n

nach X auflösen.

Autor: Alfred Q. (higedigdag)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja super...
danke für die Antwort.

Werde das in den Ferien mal ausgiebig testen.

Autor: MI.SA. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Eine andere Möglichkeit.


#define NTC_RN      33000.0
#define NTC_RV      100000.0
#define NTC_A1      0.003354016
#define NTC_B1      0.0002519110
#define NTC_C1      0.00000351094
#define NTC_D1      0.000000110518

get_TemperaturV(float & val)
{
 float ohm, tmp , tcelsius ;

 ohm = get_Ohm( ADC(ONE) );
 tmp =1/( NTC_A1+NTC_B1*log(ohm/NTC_RN)+NTC_C1*pow(log(ohm/NTC_RN),2) +NTC_D1*pow(log(ohm/NTC_RN),3));
 tcelsius = (tmp  - 273.15);
 val = (tcelsius);
 return true;
}

get_Ohm(float val)
{
 float ohm;

 if ( val < 1 )
   {
  val = 1;
  }
 ohm = NTC_RV/(1024.0/val-1);
 return (ohm);
}


NTC_RV = Vorwiderstand (z.B. 100K)
NTC_RN = NTC Widerstand bei 25°C (z.B. 33K)
NTC_A1 , NTC_B1 , NTC_C1 , NTC_D1 = Materialkonstanten (Datasheet 
Vishay)

gruss

Autor: Alfred Q. (higedigdag)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe leider kein gutes Datenblatt für diesen NTC.
Also fehlen mir auch diese Konstanten.

Es ist ein Öltemp.fühler von VDO in peilstabform. gibt leider kaum 
Informationen über die Sensoren.

Ich hab die Sache mit den Geraden gestern mal simuliert, als 
Konsolenanwendung :) klappt ganz gut.

trotzdem danke

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von Infineon gibts das:
NTC Thermistors Standardized R/T characteristics
http://www.epcos.com/web/generator/Web/Sections/Pr...
elend lange URL, und die angegebenen Formeln sehen auch nicht sehr 
hilfreich aus.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.