www.mikrocontroller.net

Forum: Compiler & IDEs KTY10-7


Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht bin ich ja hier richtig :

Moin moin zusammen,
ich habe einen KTY10-7 in reiche zu einen 4k7 Ohm geschaltet und den
mittelabgriff auf den ADC des ATmega8 geschaltet. Habe eine Aref von
2,75V. Die ADC werte bekomme ich wunderbar raus und gebe Sie über
RS232
weiter.
Ich will aber die Temperatur werte weitergebn. Wie kann ich die
Temperatur errechnen ?
Das hier bringt mir nur Müll raus :
#define KTY_R25 2030
#define KTY_RS 4700
#define KTY_ALPHA 0.00788
#define KTY_BETA 0.00001937
float temp_calc(int adcwert)
{
float vAdc, temp, kt;
vAdc = (adcwert * V_REF) / 1024;
kt = (KTY_RS / (vcc / vAdc - 1)) / KTY_R25;
temp = pow(KTY_ALPHA, 2) - 4 * KTY_BETA + 4  KTY_BETA  kt;
temp = 25 + ((sqrt(temp) - KTY_ALPHA) / (2 * KTY_BETA));
tempHighbyte = temp;
tempLowbyte = (temp - tempHighbyte) * 10;
return temp;
}
Kann mir da jemand bitte weiterhelfen ?
mirki

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schnellschuss: Füge bei den Konstanten mal überall ein ".0" an.

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort,....

aber was hab ich davon wenn ich bei den konstanten '.0' hinzufüge ?
Sorry für die blöde frage, dann würde es ja heissen

#define KTY_R25 2030.0
#define KTY_RS 4700.0
#define KTY_ALPHA 0.00788 .0
#define KTY_BETA 0.00001937.0

mirki

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>#define KTY_ALPHA 0.00788 .0
>#define KTY_BETA 0.00001937.0

Ähem, DA natürlich nicht ;-)
Das anhängen von "komma null" (.0) macht aus den Konstanten
Integerwerten Floats.

>vAdc = (adcwert * V_REF) / 1024;
>kt = (KTY_RS / (vcc / vAdc - 1)) / KTY_R25;
>temp = pow(KTY_ALPHA, 2) - 4 * KTY_BETA + 4  KTY_BETA  kt;
>temp = 25 + ((sqrt(temp) - KTY_ALPHA) / (2 * KTY_BETA));
>tempHighbyte = temp;
>tempLowbyte = (temp - tempHighbyte) * 10;

Da solltest Du das übrigens auch machen. Also bei 1024, 1, 2, 4...

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fällt mir grad noch was auf.
Was soll das denn bezwecken:

>tempHighbyte = temp;
>tempLowbyte = (temp - tempHighbyte) * 10;

Da steht ja eigentlich:

>tempHighbyte = temp;
>tempLowbyte = (temp - temp) * 10;

Also "0 * 10" und das ergibt 0.

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
// Was soll das denn bezwecken:

keine Ahnung !!!

>tempHighbyte = temp;
>tempLowbyte = (temp - temp) * 10;

Also "0 * 10" und das ergibt 0.


mirk

Autor: Martin Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, das Format ist schon wichtig.
Wenn temp ein float-Zahl ist und
tempHighByte / tempLowByte ein Byte,
dann steht, wie der Name vermuten läßt,
in tempHighByte der Wert vorm Komma und in
tempLowByte die erste Stelle nach dem Komma...

also 28.67 wird zu 28 und 6.

Ahoi, Martin

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na gut, dann setzen wir mal ein:

tempHighbyte = temp;
tempLowbyte = (temp - tempHighbyte) * 10;

temp = 28.67

tempHighbyte = 28.67;
tempLowbyte = (28.67 - 28.67) * 10;
tempLowByte = 0

Oder sieht das jemand anders?

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tempLowByte kann nicht "0" sein !! :-)

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sondern?

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0.00

LOL

Scheisse, mein progger ist im A...... !

mirki

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
am A.... meinte ich Natürlich, LOL

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp OldBug, es funzt und ich bekomme nun gute werte.

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.