UTI03 - Auswertung Pt100/Pt1000

Gast #2844008
Lesenswert?
• ▲
▼
Hallo,

ich möchte einen Smartec UTI03 zur Auswertung von Pt100/Pt1000 
verwenden.
(DB: 
http://www.smartec-sensors.com/assets/files/pdf/sensors/SMTUTIN.PDF)
Dieser liefert als Ausgangssignal ein pulsbreiten-moduliertes Signal.

Leider schwanken meine Werte sehr und ich erhalte in weiterer Folge 
keine sinnvollen Temperaturwerte.

Verwendet habe ich folgende Komponenten:
a) ATMega32 (betrieben an Quarz mit 16 MHz)
b) UTI03 (samt notwendigen Widerständen und Pt100)
c) LCD 4x40 Display

(aufgebaut alles auf einem Steckbrett)

Meine Grundidee zur Auswertung des UTI03 ist folgende:
1) Timer1 mit Systemtakt starten (mit Noise Canceller und auf rising 
Edge getriggert)

TCNT1 = 0x0000;
TCCR1B = (1<< ICNC1) + (1<<CS10) +  (1<<ICES1);
TIMSK = (1<<TOIE1) + (1<<TICIE1);
sei();

2) bei Overflow von Timer1 eine uint-Variable inkrementieren
ISR (TIMER1_OVF_vect)
{
  ovf_counter++;
}

3) bei Input Capture die aktuellen Werte von ICR1 und der 
Overflow-Variable in ein Array speichern; nach einer bestimmbaren Anzahl 
von Messwerten den Timer1 deaktivieren und über ein Flag das Messende 
signalisieren
ISR (TIMER1_CAPT_vect)
{


  ICR[meas_counter] = TCNT1;
  OVF[meas_counter] = ovf_counter;

  meas_counter++;

  if (meas_counter >= MEAS_CYCLES * MEAS_NUMBER)
  {
    cli();
    TIMSK &= ~((1<<TOIE1) + (1<<TICIE1));
    meas_finished = 1;
  }

  return;
}

4) Die Berechnung der Zeitdifferenzen erfolgt nach den Messungen mit 
folgender Formel:
diff[i] = (OVF[i+1] * 0x10000 + ICR[i+1]) - (OVF[i] * 0x10000 + ICR[i])

Anmerkung:
OVF[], ICR[] unsigned int,
diff[] unsigned long


Habe ich einen massiven Denkfehler in der Logik?
Schwanken die Werte der UTI03 wirklich so sehr (auf meinem Oszi sieht 
das nicht so aus)?


Bin für jeden Tipp dankbar.

PS: grundsätzlich soll der UTI03 aufgrund gewisser Rahmenbedingungen 
verwendet werden!
(Firma: Brainit GmbH) #2845077
Lesenswert?
• ▲
▼
ich bin grad dabei eine Platine mit 3 Stück UTI für insgesamt 9x PT 100 
// PT500 // PT1000 in Betrieb zu nehmen, allerdings mit Arduino. Die 
ersten Tests schauen vielversprechend aus, ich bin mit den 
messergebnissen soweit zufrieden, bisher recht genau und kaum 
Schwankungen.

ich arbeite allerdings nicht mit timern, sondern mit einer "normalen" 
mess-Schleife, die einfach nur Durchläufe zählt.

Wenns dich interessiert kann ich gerne mal meinen Code posten.

offtopic: wie schreib ich einen Schrägstrich, wenn ich nicht kursiv 
haben will?
Gast #5054817
Lesenswert?
• ▲
▼
Hallo Michael
konntest Du Dein Projekt mit Erfolg abschliessen?
Würdest Du Deine Erfahrungen teilen?
Ich möchte als Endziel eine Heizungssteuerung bauen, aber vorerst mich 
mit der Thematik der genauen Temperaturmessung mit UTI03 und Arduino 
auseinandersetzen.
Schon vorab vielen Dank für Dein Feedback

Daniel

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.