www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik KTY81-110 schnelle Rechnung


Autor: Steffen003 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe auch den KTY81-110 und habe mir auch schon die Threads hier im 
Forum durchgelesen. Leider bekomme ich aber nicht die richtige Rechnung 
hin um auf den korrekten Wert zu kommen. Habe einen 2,2k Vorwiderstand 
und (ich benutze Bascom) Aref als Referenzspannung. Bei 17 Grad 
Temperatur bekomme ich einen ADC Wert von 546. Jetzt brauche ich nur 
noch die richtige Formel um die korrekte Temperaturlinearisierung 
hinzubekommen.
Danke

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Lazy Bee (lazybee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe das folgendermaßen gemacht.
Datenblatt des KTY besorgen.
In eine Excel-Tabelle die Daten Temperatur und Widerstand aus dem 
Datenblatt übertragen. Mit der Diagrammfunktion die Formel erstellt (3. 
oder 4. Grades, weiß ich aber nicht mehr genau). Damit dann die Werte 
mit einem PIC berechnet und angezeigt. Voraussetzung ist aber, daß Deine 
Programmiersprache Gleitkomma beherrscht. Andernfalls mit Tabellen 
arbeiten.
Den KTY über eine Konstantstromquelle (1 mA) betreiben.

Gruß
LazyBee

Autor: JoGi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

unter dem o.g. link auf www.sprut.de gibt es noch ein pic Thermometer. 
Bei diesem Artikel wird beschrieben, wie du um floats rumkommst.

bei mir sieht es so aus:

int8_t Kty_Get_TV (void)
{
 int16_t result = 0;
 uint8_t i;

// ADC0 wählen
 ADMUX = ADMUX & ~(_BV(MUX3)) & ~(_BV(MUX2)) & ~(_BV(MUX1)) & 
~(_BV(MUX0));

// Eigentliche Messung - Mittelwert aus 64 aufeinanderfolgenden 
Wandlungen
 for(i=0;i<64;i++)
 {
   ADCSRA |= _BV(ADSC);  // eine Wandlung "single conversion"
   loop_until_bit_is_clear (ADCSRA,ADSC); // auf Abschluss der 
Konvertierung warten

   result += ADCW; // Wandlungsergebnisse aufaddieren
 }
   result += 32;
   result +=50;
   result /= 101;
   result -=152; //Offsetwert

   if ((result < -127) | (result > 127)) result = -127; //auf defekten 
Sensor prüfen
   return ((int8_t) result);
}

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.