Forum: Mikrocontroller und Digitale Elektronik Atmega - Messunsicherheit


von Alfons G. (alibaba55)


Lesenswert?

Hallo,
auch auf die Gefahr hin, dass dieser Thread als "meckern" bezeichnet 
wird, möchte ich diesen Beitrag:
Beitrag "Temperaturmessdifferenzen zwischen Atmegas"
nochmal aufgreifen.

Ich habe nun auf alle 5 kürzlich gleichzeitig bestellte Atmega16 "in 
Serie" dieselbe Software aufgespielt und diese Prozssoren der Reihe nach 
in die Fassung meiner Heizungssteuerung gesteckt.

Beispielhaft kenne ich die reellen Temperaturen:
Außentemperatur (AT) 6 Grad, Temperatur des Viessmann-Brenners (BT): 57 
Grad
also:

Real_____: AT: 6 Grad  BT: 57 Grad

Atmega_#1: AT  2 Grad  BT: 55 Grad
Atmega_#2: AT  8 Grad  BT: 59 Grad
Atmega_#3: AT  0 Grad  BT: 48 Grad
Atmega_#4: AT  6 Grad  BT: 55 Grad
Atmega_#5: AT 12 Grad  BT: 63 Grad

Dies sind also erhebliche Unterschiede! Nicht nur von Prozessor zu 
Prozessor, sondern auch innerhalb eines Prozessors von Port zu Port.

Die gesamte Diskussion (s.o.) bzgl. der umgebenden Peripherie zielt ins 
Leere, denn die Bedingungen sind für jeden Prozessor gleich, absolut 
gleich!
Und nochmal: Dies ist kein "Rumheulen" oder eine "Beschwerde"! Es soll 
nur ein Hinweis auf die erhebliche Streuung von Prozessor zu Prozessor 
sein, die dem einen oder anderen bei einer "Fehlersuche" vielleicht 
helfen kann. Also bitte nicht persönlich angegriffen fühlen! Auch den 
"Atmega" möchte ich damit nicht beleidigen! In diesem Zusammenhang ist 
es auch gar nicht wichtig, ob diese massiven Differenzen im Datenblatt 
als Toleranzen angegeben werden oder nicht und ob es ECHTE Ausreisser 
sind.

A. Geigenberger

(Zum Messvorgang: Die ersten drei Messungen werden verworfen, dann 30mal 
gemessen und das Ergebnis entsprechend mathematisch ausgewertet. 
Temperaturfühler: KTY 81 )

: Bearbeitet durch User
von THOR (Gast)


Lesenswert?

Was sind das für ATMegas wo ein Temperatursensor verbaut ist. Das ist ja 
praktisch.

von Alfons G. (alibaba55)


Lesenswert?

????  ->
(Zum Messvorgang: Die ersten drei Messungen werden verworfen, dann 30mal
gemessen und das Ergebnis entsprechend mathematisch ausgewertet.
Temperaturfühler: KTY 81 )
natürlich mit Spannungsteiler! [Bitte länger als 10 Sekunden lesen!]

von Peter II (Gast)


Lesenswert?

Alfons G. schrieb:
> Die gesamte Diskussion (s.o.) bzgl. der umgebenden Peripherie zielt ins
> Leere, denn die Bedingungen sind für jeden Prozessor gleich, absolut
> gleich!

wenn die Interne Referenz verwendet wird - dann ist es nicht egal. Sie 
ist in jedem µC anders.

Ohne jetzt den anderen Thread gelesen zu haben, wie groß ist denn die 
Abweichung in den werten die der ADC liefert? Also vor der Umrechnung.

Wenn 1 Bit schon 2 Grad ausmacht, und die Temperatur genau in der Mitte 
liegt, dann kann es schon mal um 2 Grad schwanken.

von THOR (Gast)


Lesenswert?

Alfons G. schrieb:
> ????  ->
> (Zum Messvorgang: Die ersten drei Messungen werden verworfen, dann 30mal
> gemessen und das Ergebnis entsprechend mathematisch ausgewertet.
> Temperaturfühler: KTY 81 )
> natürlich mit Spannungsteiler! [Bitte länger als 10 Sekunden lesen!]

Den Wink mit dem Zaunpfahl nicht verstanden, was. Ein ATMega hat auch 
keine 2 Pins die für PTCs gedacht sind! Der hat ADC, Analog Comp und 
GPIO.

Was hast du genommen, wie hast du das beschaltet, wie rechnest du von 
ADC-Wert auf Temperatur um.

Also wie immer: Code, Schaltplan.

Und DANN kann man Rückschlüsse auf die Streuung zwischen ADCs ziehen.

Bisher hast du nur ne völlig schwachsinnige Messreihe gemacht und den 
AVRs den schwarzen Peter untergeschoben. Ein Beweis dass die auch Schuld 
sind, sehe ich nirgendwo. Noch nichtmal eine plausible Vermutung, gar 
nichts.

von Alfons G. (alibaba55)


Lesenswert?

" wenn die Interne Referenz verwendet wird - dann ist es nicht egal. Sie
ist in jedem µC anders. "
... und nennt man das nicht "Streuung"? Und nur auf diese wollte ich 
aufmerksam machen.

von Thomas E. (thomase)


Lesenswert?

THOR schrieb:
> Was sind das für ATMegas wo ein Temperatursensor verbaut ist. Das ist ja
> praktisch.

48..328

von Peter II (Gast)


Lesenswert?

Alfons G. schrieb:
> " wenn die Interne Referenz verwendet wird - dann ist es nicht egal. Sie
> ist in jedem µC anders. "
> ... und nennt man das nicht "Streuung"? Und nur auf diese wollte ich
> aufmerksam machen.

wer ohne Kalibrierung messen will, verwendet nicht die interne Referenz. 
Also hast du damit nur gezeigt das das Datenblatt recht hat?

von Joachim B. (jar)


Lesenswert?

Peter II schrieb:
> wer ohne Kalibrierung messen will, verwendet nicht die interne Referenz.
> Also hast du damit nur gezeigt das das Datenblatt recht hat?

genau, dafür gibt es externe Referenzen.

Ich verstehe den Thread nicht, ein ATmega ist kein kalibriertes 
Messgerät aber mit oder ohne Abgleich in den benannten Grenzen nutzbar.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Alfons G. schrieb:
> ... und nennt man das nicht "Streuung"? Und nur auf diese wollte ich
> aufmerksam machen.

 Das ist keine Streuung bei dir, das sind Fehler.
 Sehr grosse Fehler.

 Da stimmt etwas nicht.
 Und zwar bei dir - entweder deine Schaltung oder dein Program.

 P.S.
 Messe mal die Spannung am AREF Pin.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Alfons G. schrieb:
>> " wenn die Interne Referenz verwendet wird - dann ist es nicht
>> egal. Sie ist in jedem µC anders. "

> ... und nennt man das nicht "Streuung"? Und nur auf diese wollte ich
> aufmerksam machen.

Ach!

1. steht das im Datenblatt

2. weiß das jeder, der ernsthaft mit dem ADC und
   der internen Referenz arbeitet

3. braucht man für eine ratiometrisch arbeitende
   Sensoranordnung die interne Referenz gar nicht

Zusammenfassung: du hast mit einer Schaltung, die unnötig
sensibel auf die Serienstreuung der Spannungsreferenz ist,
herausgefunden daß das Datenblatt korrekt ist. Toll!

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Axel S. schrieb:
> Zusammenfassung: du hast mit einer Schaltung, die unnötig
> sensibel auf die Serienstreuung der Spannungsreferenz ist,
> herausgefunden daß das Datenblatt korrekt ist. Toll!

 Auch so dürfte der Fehler nicht mehr als +/- 10 Prozent betragen.
 Seine Messungen sind Lichtjahre davon  entfernt.

von Alfons G. (alibaba55)


Lesenswert?

Aber immerhin!
Es gibt nämlich tatsächlich Leute, die nicht täglich und ernsthaft mit 
ADC und internen Referenzen arbeiten und trotzdem einen Atmega Prozessor 
verwenden.
Und für diese Menschen ist es schon erstaunlich, welche Toleranzen als 
"ganz normal" angesehen werden.

von Peter II (Gast)


Lesenswert?

Marc V. schrieb:
> Auch so dürfte der Fehler nicht mehr als +/- 10 Prozent betragen.
>  Seine Messungen sind Lichtjahre davon  entfernt.

das könne wir nicht wissen, wenn er die Temperatur auf einen Bereich von 
0.01V - 0.05V umsetzt und dann mit der internen Referenz misst sind das 
weniger als 10%.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Alfons G. schrieb:
> Und für diese Menschen ist es schon erstaunlich, welche Toleranzen als
> "ganz normal" angesehen werden.

 Was als "ganz normal" angesehen wird und was als "ganz unnormal", ist
 in diesem Zusammenhang uninteressant.

 Du machst ganz einfach etwas falsch.

 Und willst mit Gewalt das auf die MEGAs abschieben...

von m.n. (Gast)


Lesenswert?

Alfons G. schrieb:
> Und für diese Menschen ist es schon erstaunlich, welche Toleranzen als
> "ganz normal" angesehen werden.

Auf die Frage, ob die interne Referenz verwendet wird, hast Du nie 
eindeutig geantwortet. In Deinem anderen Beitrag hatte ich dies vermutet 
und Dir empfohlen, Vcc als Referenz zu verwenden. Aber irgendwie bist Du 
diesbezüglich wohl resistent.
Die Daten der int. Referenz stehen im Datenblatt und sind damit genormt 
oder einfach "normal".

von Alfons G. (alibaba55)


Lesenswert?

Ich poste mal einfach die Routine, die den Messwert ausgibt.
( ... und ich möchte wirklich den Atmega nicht "beleidigen", sondern 
(als "Neuling" nur ein wenig mehr verstehen, Sorry!)
1
/* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
2
long ReadChannel(short muxy)
3
{
4
        char buf[9]; 
5
  long result;
6
  unsigned char u;
7
  result = 0;
8
  u = 0;
9
////////////////////////////////////////////    
10
  ADMUX = muxy;   // Kanal waehlen
11
//        REFS1 = 1  und REFS0 = 1   // Interne 2,56 Volt
12
//        REFS1 = 0  und REFS0 = 1  // AVCC als Referenz
13
  ADMUX |= (0<<REFS1) | (1<<REFS0); // AVCC als referenz , also ca 5 Volt
14
//  ADMUX |= (1<<REFS1) | (1<<REFS0); // so sieht  2,5 Volt aus 
15
  
16
  _delay_ms(4);
17
////////////////////////////////////////////  
18
  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung mit 5 Volt
19
  while ( ADCSRA & (1<<ADSC) ) 
20
    { ; }  // auf Abschluss der Konvertierung warten 
21
  result = ADCW;  // ADCW muss einmal gelesen werden,  
22
  _delay_ms(4);    
23
  ////////////////////////////////////////////
24
  ADMUX |= (1<<REFS1) | (1<<REFS0); // jetzt 2,5 Volt             
25
  _delay_ms(2);    
26
        ////////////////////////////////////////////  
27
  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung; jetzt mit 2,5 Volt 
28
  while ( ADCSRA & (1<<ADSC) ) 
29
    { ; }  // auf Abschluss der Konvertierung warten 
30
        result = ADCW;  // ADCW muss einmal gelesen werden,
31
  _delay_ms(3);
32
        ////////////////////////////////////////////    
33
34
  if ( (result > 2000 ) || (result < 200 ) )  // damit werden "Hardware-Fehler" gemeldet
35
          {
36
    y.Flag_alarm_kanal = 1;
37
    lcd_clrscr();    
38
    lcd_puts("Fehler! Kan: ");
39
    itoa( muxy , buf, 10);    lcd_puts(buf);  
40
    warten(20);
41
    lcd_clrscr();
42
    }        // Wenn Fehler in "ReadChannel" auftritt    
43
    
44
  u = 0;      
45
        while (u < 5) 
46
  {  ADCSRA |= (1<<ADSC);              // fünf ADC-Wandlungen "verwerfen)
47
    while ( ADCSRA & (1<<ADSC) ) 
48
    { ; }  // auf Abschluss der Konvertierung warten 
49
    u = u + 1;  
50
  }
51
52
  result = 0;
53
  u = 0;      
54
        while (u < 30) 
55
  {  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung 
56
    while ( ADCSRA & (1<<ADSC) ) 
57
    {   ;    }   // auf Abschluss der Konvertierung warten       
58
    _delay_ms(3);
59
    result = result + ADCW;    //  result ist 10-fach RohT
60
    u = u + 1;
61
    _delay_ms(1);
62
  }
63
  
64
     result = result / 30 ;      
65
     if (y.Flag_Rohwerte == 0)
66
      {
67
      result = ( result - 610 ) ;   //630;  
68
      result = ( result  * 100 ) ;  
69
      result = (result / 308 ) ;
70
//  Subtrahieren verschiebt Kurve parallel nach unten
71
//  Dividieren verändert die Steigung der kurve : je groesser desto flacher      
72
73
//  ab jetzt Korrektur von Processor zu Prozessor      
74
      result = ( result  * 100 ) ;  
75
      result = ( result  / TempKorrekturfaktor ) ;   // je nach Processor (neu eingeführt, damit vom Anwender Korrekturen durchgeführt werden können)
76
      result = ( result + TempVerschieben ); // je nach Processor (neu eingeführt, damit vom Anwender Korrekturen durchgeführt werden können)
77
      }      
78
79
  _delay_ms(4);      
80
  return  result ;
81
}
82
/* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/

: Bearbeitet durch Moderator
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Alfons G. schrieb:
> Und für diese Menschen ist es schon erstaunlich, welche Toleranzen als
> "ganz normal" angesehen werden.

 Ohne jeglichen Abgleich liegt der Fehler normalerweise unter 1,5%.

 Nun, 1,5% sind bestimmt nicht normal aber weeeeeiiiit von deinen
 "Messergebnissen" entfernt.

von Peter II (Gast)


Lesenswert?

Alfons G. schrieb:
> Ich poste mal einfach die Routine, die den Messwert ausgibt.

besser ist erst einmal zu messen. `

Welche Spannung hat die Referenz?
Welche Spannung liegt am ADC an?

dann schaut man was in ADW drin steht. -> passt das zu den Spannung?

dann kann man im code weitermachen.

von Joachim B. (jar)


Lesenswert?

Axel S. schrieb:
> 3. braucht man für eine ratiometrisch arbeitende
>    Sensoranordnung die interne Referenz gar nicht

sehr sehr guter Einwand was ich total übersah,

mit bekannten ADC Fehler, 1,5% Sensor und 1%er Vorwiderstand können 
unmöglich Fehler im 10-100% Bereich kommen, OK mehr als 2-stellige % 
Meßfehler nur am Anfangsmesswert, nie am Skalenendmesswert!

Da klemmt was anderes beim TO, evtl. das ganze Verständnis.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Joachim B. schrieb:
> mit bekannten ADC Fehler, 1,5% Sensor und 1%er Vorwiderstand können
> unmöglich Fehler im 10-100% Bereich kommen.

klar doch. Weil wir(ich) nicht wissen wie der Messbreich im ADC Bereich 
liegt.

Wenn die Schaltung für -200Grad bis +1600Grad ausgelegt ist, dann kann 
man kaum mit 10Bit sinnvoll 10-30Grad messen.

von m.n. (Gast)


Lesenswert?

Alfons G. schrieb:
> ////////////////////////////////////////////
>   ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung mit 5 Volt
>   while ( ADCSRA & (1<<ADSC) )
>     { ; }  // auf Abschluss der Konvertierung warten
>   result = ADCW;  // ADCW muss einmal gelesen werden,
>   _delay_ms(4);
>   ////////////////////////////////////////////
>   ADMUX |= (1<<REFS1) | (1<<REFS0); // jetzt 2,5 Volt
>   _delay_ms(2);
>         ////////////////////////////////////////////
>   ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung; jetzt mit 2,5
> Volt
>   while ( ADCSRA & (1<<ADSC) )
>     { ; }  // auf Abschluss der Konvertierung warten
>         result = ADCW;  // ADCW muss einmal gelesen werden,
>   _delay_ms(3);

Was soll das denn?
Erst mit 5 V Referenz messen, Ergebnis verwerfen und dann noch einmal 
mit der ungenauen 2,5 V Referenz?
Da kann nur Müll herauskommen!

von Alfons G. (alibaba55)


Lesenswert?

Nein, da kommt kein Müll heraus, denn die Anlage läuft bei mir schon 
über 5 Jahre!! (Damit gebe ich dem Messsystem die nötige "Pause")

Den Messbereich sieht man nun am "Quellcode": Eine Temperaturdifferenz 
von 1 Grad ergibt ein Differenz des ADCW-Wertes von ca. 3.
Beispiel:

ADCW: (Beispiel)
700 - 610 = 90 * 100 = 9000 / 308 = 29,2208 Grad
703 - 610 = 93 * 100 = 9300 / 308 = 30,1948 Grad


Aber egal: Nochmal zu meiner (Mess)-Anordnung:
Ich tausche der Reihe nach einen Prozessor mit dem anderen aus; ALLES 
andere bleibt VÖLLIG gleich. Und ich finde die oben beschriebenen 
Messdifferenzen.
Bitte entschuldigt, aber das ist mir unverständlich:

"Die gesamte Diskussion (s.o.) bzgl. der umgebenden Peripherie zielt ins
Leere, denn die Bedingungen sind für jeden Prozessor gleich, absolut
gleich!"  (sh. Eingangsthread)

von mario eduardo (Gast)


Lesenswert?

Wenn man alles nach deinem Wunsch herausnimmt bleibt nur mehr die 
Referenzspannung als Quelle des Übels über. lt Datenblatt des Atmega 
2560 (den ich verwende):

VINT Internal Voltage Reference
Min  Typ   Max
2.3  2.56  2.8

Das ist ja nicht gerade wenig. Du kanst die mit einem gutenn Multimeter 
ja auf dem passenden Pin messen, wenn es hochohmig genug ist.

Mario

von m.n. (Gast)


Lesenswert?

Alfons G. schrieb:
> Ich tausche der Reihe nach einen Prozessor mit dem anderen aus; ALLES
> andere bleibt VÖLLIG gleich.

Und damit änderst Du jedesmal auch die Referenzspannung.
Ich geb's auf!

von Alfons G. (alibaba55)


Lesenswert?

:-)
Man soll nie aufgeben! Und - -  jetzt habe ich es verstanden.

ABER:
Die Referenzspannung streut zwichen 2.3 und 2.8 Volt. Das ist enorm 
viel! Und damit streuen die Prozessoren ebenfalls untereinander in 
dieser Größenordnung.
Ok, steht so im Datenblatt und ist ja völlig in Ordnung!. Wenn man aber 
kein so intimer Kennerder Materie ist, dann ist man schon erst einmal 
verwundert, was sich bei einem schlichten Prozessorwechsel so alles 
verändert.

Ich hätte diese Größenordnung jedenfalls nicht für möglich gehalten und 
vielleicht hilft dieser Thread ja mal einem anderen Leser.

Jedenfalls Danke!
A. Geigenberger

von Jim M. (turboj)


Lesenswert?

Alfons G. schrieb:
> en Messbereich sieht man nun am "Quellcode": Eine Temperaturdifferenz
> von 1 Grad ergibt ein Differenz des ADCW-Wertes von ca. 3.
> Beispiel:
>
> ADCW: (Beispiel)
> 700 - 610 = 90 * 100 = 9000 / 308 = 29,2208 Grad
> 703 - 610 = 93 * 100 = 9300 / 308 = 30,1948 Grad

Naja, und die bis 11,5% Abweichung (+-0.3 V bei 2,6V nominal) nach 
Datenblatt sind bei 700 counts eben 80 counts oder 26°C. AFAIK kommt INL 
und DNL noch dazu, das ist aber nur 1 oder 2°C.

Da bleiben Deine Chips oben alle deutlich drunter.

Hier führt das Einsparen von 1,50€ für eine REF5025 dazu dass man jeden 
Atmega einzeln kalibrieren muss.

von Axel S. (a-za-z0-9)


Lesenswert?

Ich fasse das "Programm" mal in Prosa zusammen:

1. eine Wandlung mit VREF=AVCC, wofür auch immer
2. eine Wandlung mit VREF=Bandgap, überschreibt das Ergebnis von 1.
3. ein Vergleich mit zumindest einem unmöglichen ADC-Wert als 
"Fehlerdetektion"
4. 5 Messungen verwerfen
5. 30 weitere Messungen mitteln
6. irgendwelche undurchsichtigen Rechnereien mit dem Mittelwert, aber 
keine Korrektur der Sensor-Nichtlinearität

wenn man jetzt die ganze Umrechnerei mal weglassen würde und nur 
Rohdaten zwischen den einzelnen µC vergleicht, dann sollten die 
Abweichungen etwa in der selben Größenordnung liegen wie die erlaubten 
Abweichungen der Referenzspannung. D.h. der größte gemessene Wert sollte 
nicht größer sein als das 1.22-fache des kleinsten gemessenen Werts 
(2.8V/2.3V ~= 1.22)

Eine Kalibrierung auf die Referenzspannung würde jetzt bei den Rohdaten 
ansetzen. Und erst danach würde man jegliche Rechnungen zur Kennlinien- 
begradigung und zum Skalieren des Meßwerts auf eine Temperaturskala 
machen.

Der weitaus cleverere Weg wäre allerdings, den Spannungsteiler aus KTY81 
und Festwiderstand so auszulegen, daß beide in der Mitte des gewünschten 
Temperaturmeßbereichs etwa den gleichen Widerstand haben. Und dann mit 
VREF=AVCC messen (vulgo: ratiometrisch). Dabei kürzen sich dann alle 
Abhängigkeiten von Betriebsspannung und Referenzspannung heraus. Die 
Auflösung ist abhängig von der Steilheit des Sensors (das rechne ich 
jetzt nicht nach). Ob man eine Linearisierung braucht, hängt vom 
Meßbereich ab. Wenn es nur um die Raumtemperatur geht, sicher nicht.

von Manfred (Gast)


Lesenswert?

Alfons G. schrieb:
> " wenn die Interne Referenz verwendet wird - dann ist es nicht egal. Sie
> ist in jedem µC anders. "
> ... und nennt man das nicht "Streuung"? Und nur auf diese wollte ich
> aufmerksam machen.
So ist das, scheint hier aber nicht verstanden worden zu sein :-(

Joachim B. schrieb:
> mit bekannten ADC Fehler, 1,5% Sensor und 1%er Vorwiderstand können
> unmöglich Fehler im 10-100% Bereich kommen, OK mehr als 2-stellige %
> Meßfehler nur am Anfangsmesswert, nie am Skalenendmesswert!
Das Datenblatt vom ATmega16(L) ist in sich widersprüchlich.

Seite 42: "The 2.56V reference to the ADC is generated from the internal 
bandgap reference."

und etwas weiter unten:
Symbol Parameter               Min  Typ  Max Units
VBG Bandgap reference voltage  1.15 1.23 1.4 V

http://www.atmel.com/images/doc2466.pdf

Das reicht allemal, solch heftige Abweichungen zwischen den Exemplaren 
zu erklären!

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Manfred schrieb:
> Das reicht allemal, solch heftige Abweichungen zwischen den Exemplaren
> zu erklären!

 Nein.
 Punkt.

von Erwin D. (Gast)


Lesenswert?

Marc V. schrieb:
> Manfred schrieb:
>> Das reicht allemal, solch heftige Abweichungen zwischen den Exemplaren
>> zu erklären!
>
>  Nein.
>  Punkt.

Er stimmt dir zu, und du sagst "Nein."?

von m.n. (Gast)


Lesenswert?

Axel S. schrieb:
> Der weitaus cleverere Weg wäre allerdings, den Spannungsteiler aus KTY81
> und Festwiderstand so auszulegen, daß beide in der Mitte des gewünschten
> Temperaturmeßbereichs etwa den gleichen Widerstand haben. Und dann mit
> VREF=AVCC messen (vulgo: ratiometrisch).

Hier ein Beispiel, was allerdings noch eine LC-Anzeige ansteuert.
Die ratiometrische Messung und die Linearisierung sollten aber 
nachvollziehbar sein: 
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#lcd7

von Alfons G. (alibaba55)


Lesenswert?

Noch eine kurze Frage:
Wenn ich nun eine externe Referenzspannung benutzen wollte, wie wäre 
dies zu programmieren?

ADMUX |= (0<<REFS1) | (1<<REFS0); // AVCC als referenz , also ca 5 Volt
ADMUX |= (1<<REFS1) | (1<<REFS0); // so sieht  2,5 Volt aus

ADMUX |= (0<<REFS1) | (0<<REFS0); // So ?

von Hurra (Gast)


Lesenswert?

Marc V. schrieb:
> Alfons G. schrieb:
>> Und für diese Menschen ist es schon erstaunlich, welche Toleranzen als
>> "ganz normal" angesehen werden.
>
>  Ohne jeglichen Abgleich liegt der Fehler normalerweise unter 1,5%.
>
>  Nun, 1,5% sind bestimmt nicht normal aber weeeeeiiiit von deinen
>  "Messergebnissen" entfernt.

Ach nee. Da fehlts gewaltig an den Grundlagen :-(

Der Fehler im ADC hat einen absoluten Anteil und einen relativen. Der 
relative ist z.B. +-x% vom Messwert , der absolute ist +-xLSB absolut.

Beim ATMEGA16 steht zum Beispiel im Datenblatt, dass der ADC 
Typischerweise +-3LSB genau ist. Das steht auf S297 unter "Absolute 
Accuracy").
Das ist der ABSOLUTE Anteil am FEhler.

Und wenn der Temperaturmesswert nur 10LSB groß ist, ja dann ist man 
TYPISCHERWEISE schon 30% daneben.

Und da ist von den realtiven Anteilen, dem Rauschen auf der Versorgung 
und der Ungenauigkeit der Referenz noch gar nichts gesagt.

Und genau deshalb muss uns der TO seine Schaltung zeigen.

von m.n. (Gast)


Lesenswert?

Alfons G. schrieb:
> ADMUX |= (0<<REFS1) | (0<<REFS0); // So ?

ADMUX |= (0<<REFS1) | (1<<REFS0); // So!

von Alfons G. (alibaba55)


Angehängte Dateien:

Lesenswert?

... und wäre der Anschluss so richtig?

von m.n. (Gast)


Lesenswert?

Nein. Siehe Datenblatt ADMUX.

von Alfons G. (alibaba55)


Lesenswert?

m.n. schrieb:
> Alfons G. schrieb:
>> ADMUX |= (0<<REFS1) | (0<<REFS0); // So ?
>
> ADMUX |= (0<<REFS1) | (1<<REFS0); // So!

<<<<<<<<<<

Hier: Beitrag "ADC - interne Referenzspannung"
finde ich das so:

Wenn ich aber das Datenblatt lese, dann sollte dies doch gar nicht
funktionieren, da sich folgendes gilt:

REFS1  REFS0

  0      0     extern
  0      1     intern AVCC
  1      0     reserviert
  1      1     2.56V

-->  also jeweils "0"  (??)

von Henning (Gast)


Lesenswert?

Versuchs mal damit; dieses verodern mit geschobenen Nullen bringt rein 
gar nix

//extern
ADMUX &= ~((1<<REFS1) | (1<<REFS0));

//intern AVCC
ADMUX &= ~(1<<REFS0);
ADMUX |= (1<<REFS0);

//2.56V
ADMUX |= (1<<REFS0)|(1<<REFS0);

Grüße Henning

von Henning (Gast)


Lesenswert?

EDIT:

//intern AVCC
ADMUX &= ~(1<<REFS1);
ADMUX |= (1<<REFS0);


//2.56V
ADMUX |= (1<<REFS0)|(1<<REFS1);

von Bitte ein Bit (Gast)


Lesenswert?

> Aber egal: Nochmal zu meiner (Mess)-Anordnung:
> Ich tausche der Reihe nach einen Prozessor mit dem anderen aus; ALLES
> andere bleibt VÖLLIG gleich. Und ich finde die oben beschriebenen
> Messdifferenzen.
> Bitte entschuldigt, aber das ist mir unverständlich:
>
> "Die gesamte Diskussion (s.o.) bzgl. der umgebenden Peripherie zielt ins
> Leere, denn die Bedingungen sind für jeden Prozessor gleich, absolut
> gleich!"  (sh. Eingangsthread)

Wer schon nicht den Unterschied zwischen Controller und Prozessor nicht 
kennt, der sollte hier mal gaaaaanz langsam den Mund halten!

von Stefan K. (stefan64)


Lesenswert?

Für diese Messung ist doch gar keine genaue Referenz notwendig. Wichtig 
ist nur, dass die verwendete Referenz mit der Versorgung des 
Spannungsteilers (KTY81 und Rfix) identisch ist und keine Ripple etc 
aufweist. Denn das Einzige, was interessiert, ist das Verhältnis

          Spannung am KTY81
    ---------------------------------
    Gesamtspannung am Spannungsteiler

Das Schlimmste, was Du machen kannst, ist die interne Referenzspannung 
für den ADC in der Firmare auszuwählen, während Dein Spannungsteiler an 
AVCC oder gar an VCC angeklemmt ist.

Deshalb wäre es wichtig, wenn Du mal postest, wie GENAU Dein ADC und 
Dein Spannungsteiler des KTY81 verschaltet sind.

Viele Grüße, Stefan

von Achim S. (Gast)


Lesenswert?

Marc V. schrieb:
> Nein.
>  Punkt.

Mensch Marc: du rechnest die ganze Zeit nur in prozentualen Fehlern, und 
ignorierst dabei, dass "10% Temperaturfehler" nicht bedeuten, dass der 
ADC um 10% daneben liegt.

Die 5° Abweichung sind 10% vom aktuellen Temperaturwert (nicht 10% vom 
vollen Messbereich). So lange der TO nicht klar stellt, wie die 
Temperatur auf die ADC-Spannung abgebildet wird, könnte die 5° 
Temperaturabweichung irgendeinem beliebigen ADC-Fehler entsprechen. Es 
wäre ja theoretisch auch denkbar, dass  er den KTY81 so doof einsetzt, 
dass 5° grade mal einem LSB des ADC entsprechen.

Dummerweise ziert sich der TO harnäckig, seine konkrete Schaltung zu 
zeigen, so dass man schlicht keine seriöse Aussage zu dem tatsächlichen 
ADC-Fehler machen kann. Er hat leider immer noch nicht kapiert, dass die 
Größe des Temperaturfehlers vollständig davon abhängt, wie er die 
Temperatur in eine Spannung umsetzt (welchen Temperaturmessbereich er 
auf den Spannungsbereich des ADC abbildet).

Im Ursprungsthread kam nach wiederholtem Nachbohren wenigstens mal 
heraus, dass er einen KTY81 in einem Spannungsteiler betreibt.
Beitrag "Re: Temperaturmessdifferenzen zwischen Atmegas"
Jetzt muss man zwar immer noch raten in welchem Teilerverhältnis und mit 
welcher Versorgung, aber damit kann man wenigstens mal eine vernünftige 
Annahme treffen.

Falls er den KTY81 mit einem 1kOhm Widerstand an 2,5V betreiben sollte, 
dann entsprächen die 5° ungefähr einem Spannungsfehler von 25mV. Und 
25mV lassen sich natürlich mit der Schwankungsbreite der internen 
Referenz erklären.

Manfred schrieb:
> Symbol Parameter               Min  Typ  Max Units
> VBG Bandgap reference voltage  1.15 1.23 1.4 V

von Einer K. (Gast)


Lesenswert?

Stefan K. schrieb:
> Deshalb wäre es wichtig, wenn Du mal postest, wie GENAU Dein ADC und
> Dein Spannungsteiler des KTY81 verschaltet sind.

Die Schaltung ist geheim, und der Aufbau ohne jeden Fehl und Tadel!

von Bitte ein Bit (Gast)


Lesenswert?

Aha!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Achim S. schrieb:
> 10% Temperaturfehler

So viel ist es ja auch nicht.  Es sind unter 3 %.  Schließlich ist
der Nullpunkt der Temperaturskala nicht bei 0 °C. :-)

@Alfons:

Ist die ratiometrische Messung wirklich so schwer zu begreifen?

Du baust einen Spannungsteiler mit deinem KTYxx zwischen Vcc und
dem Eingang des ADC, auf die andere Seite einen Festwiderstand
vom Eingang nach Masse.  Gemessen wird dann mit Vcc als Referenz
(also das Bit REFS1 gesetzt).  Damit ist die absolute Höhe der
Spannungsreferenz völlig schnurz, deshalb eben auch „ratiometrisch“:
du misst das Verhältnis des KTYxx zu einem Festwiderstand, nicht mehr
und nicht weniger.

Exemplarschwankungen hast du natürlich trotzdem noch, denn der ADC
ist nicht beliebig gut linear.

von Alfons G. (alibaba55)


Lesenswert?

Danke, Stefan K. !!
Das ist jetzt DIE aussagekräftige Antwort und genau so werde ich's 
machen.
A. Geigenberger

(Warum müssen eigentlich die Umgangsformen von so Vielen so herablassend 
und arrogant sein? Zumal, wenn sie nicht mal richtig Deutsch können!)

von Alfons G. (alibaba55)


Lesenswert?

@  Jörg Wunsch: Auch an Dich, Danke!
Ich denke, so meinte es Stefan K. auch.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Achim S. schrieb:
> Temperaturabweichung irgendeinem beliebigen ADC-Fehler entsprechen. Es
> wäre ja theoretisch auch denkbar, dass  er den KTY81 so doof einsetzt,
> dass 5° grade mal einem LSB des ADC entsprechen.

 Ja, natürlich kann das sein.
 Nur, wer macht so etwas ?

 Und falls doch, ist nicht nur der KTY81 doof.

von Peter II (Gast)


Lesenswert?

Marc V. schrieb:
> Ja, natürlich kann das sein.
>  Nur, wer macht so etwas?

eventuell solche Leute die sich auf die interne Referenz verlassen?

von Stefan K. (stefan64)


Lesenswert?

Postings nach dem Motto
"Dein Schaltplan ist ja doof, zeig ihn mir mal"
halte ich für nicht sehr zielführend.

Stefan

von Einer K. (Gast)


Lesenswert?

Stefan K. schrieb:
> Postings nach dem Motto
> "Dein Schaltplan ist ja doof, zeig ihn mir mal"
> halte ich für nicht sehr zielführend.
>
> Stefan

Mein Interesse, mir Schaltpläne einzubilden und dann falsch zu liegen, 
ist nahe Null!
Nichts gegen Fanatsie...

Denn wenn es der TE so gemacht hätte, wie ich es machen würde, hätte er 
diese Probleme vermutlich gar nicht.
;-) dafür, evtl größere/andere ;-)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Alfons G. schrieb:
> Danke, Stefan K. !!
> Das ist jetzt DIE aussagekräftige Antwort und genau so werde ich's
> machen.
> A. Geigenberger
>
> (Warum müssen eigentlich die Umgangsformen von so Vielen so herablassend
> und arrogant sein? Zumal, wenn sie nicht mal richtig Deutsch können!)

 Vielleicht weil Leute die einen Thread eröffnen und behaupten, die
 MEGAs sind Schrott, ganz einfach keine Ahnung haben ?

 KTY81/110 z.B. hat bei 25 Grad 1000 Ohm, zwischen -20 und +60 Grad
 eine Differenz von 616 Ohm bei 1mA Strom.

 Nun stellt sich die überaus komplizierte Frage:
 Welchen Wert nehme ich als Festwiderstand ?

 100K ?
 100M ?
 Oder noch grösser ?

 Und dann noch irgendwelchen Blödsinn posten und dies als "Messwerte"
 und "Messvorgang" bezeichnen ?

 LOL.

von René H. (Gast)


Lesenswert?

Marc V. schrieb:
> Und dann noch irgendwelchen Blödsinn posten und dies als "Messwerte"
>  und "Messvorgang" bezeichnen ?

Sorry Marc,

ich bin überzeugt, dass Alfons in der Lage ist, einen Spannungsteiler zu 
berechnen.

Grüsse,
René

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

René H. schrieb:
> Sorry Marc,
>
> ich bin überzeugt, dass Alfons in der Lage ist, einen Spannungsteiler zu
> berechnen.

 Ich will natürlich nicht versuchen, dich vom Gegenteil zu überzeugen
 aber:

 Spannungsteiler war angeblich für alle MEGAs gleich, Fehler also
 auch gleich bei allen "Messvorgängen".

 "Messergebnise" variieren zwischen -100% und +100%.
 Das sind keine Exemplarstreuungen mehr, das ist ein Fehler beim
 Aufbau der Schaltung.

 Und da der Rest seiner Schaltung nur aus Spannungsteiler besteht...

 P.S.
 Was ich sagen will, ist folgendes:
 Er hat (selbstverständlich vorhandene) Exemplarstreuungen mit
 seinem Spannungsteiler um ein mehrfaches verstärkt.

: Bearbeitet durch User
von Alfons G. (alibaba55)


Lesenswert?

Marc V. schrieb:
> ... behaupten, die MEGAs sind Schrott, ...
Naja....

von Bitte ein Bit (Gast)


Lesenswert?

Ja, und wie geht es jetzt weiter?

Alle Controller sind defekt, oder soll ich das Gejammer jetzt 
verstehen???

von Kummer (Gast)


Lesenswert?

Es gibt nur ein Problem: Der TO ist ein Ignorant.

Das zeigt schon das Zitat aus dem Eingangsbeitrag:

"Die gesamte Diskussion (s.o.) bzgl. der umgebenden Peripherie zielt ins
Leere, denn die Bedingungen sind für jeden Prozessor gleich, absolut
gleich!"

von Wolfgang (Gast)


Lesenswert?

Sorry, trotz der Länge des Threads konnte ich immmer noch kein 
Schaltbild finden.

Machst du eine ratiometrische Messung, i.e. wie wird dein Messsignal 
erzeugt und womit vergleichst du es?

Alfons G. schrieb:
> (Zum Messvorgang: Die ersten drei Messungen werden verworfen, dann 30mal
> gemessen und das Ergebnis entsprechend mathematisch ausgewertet.
> Temperaturfühler: KTY 81 )
> natürlich mit Spannungsteiler! [Bitte länger als 10 Sekunden lesen!]

Die Frage ist nicht, ob der als Spannungsteiler betrieben wird, sondern 
geht schon etwas weiter. Wie groß ist der zweite Widerstand im 
Spannungsteiler und welche Spannung teilst du?

von Bitte ein Bit (Gast)


Lesenswert?

Ich habs mal erlebt das ein Drehwinkel kleiner 45 Grad mit einem 5Volt 
gespeisten Poti auf 0,1 Grad genau gemessen werden sollte. Schwachsinn!

von M. K. (sylaina)


Lesenswert?

Bitte ein Bit schrieb:
> Ich habs mal erlebt das ein Drehwinkel kleiner 45 Grad mit einem 5Volt
> gespeisten Poti auf 0,1 Grad genau gemessen werden sollte. Schwachsinn!

Kommt aufs Poti an. Bei nem 25 Gang Poti ist das sicher eine 
Herausforderung, bei einem 270 Grad-Poti ist das problemlos umsetzbar.

von Alfons G. (alibaba55)


Lesenswert?

"Eine Temperaturdifferenz von 1 Grad ergibt ein Differenz des 
ADCW-Wertes von ca. 3." (s.o.)
 Den Widerstand eines KTY kennt ihr? Dann sollte so mancher Schlaumeier 
doch wirklich den Wert des zweiten Widerstandes am Spannungteiler 
ausrechnen können... (Hinweis: Den Dreisatz muss man zweimal anwenden! 
Schwierig!)

" Es soll nur ein Hinweis auf die erhebliche Streuung von Prozessor zu 
Prozessor sein,..." (s.o.) ->

"Symbol Parameter               Min  Typ  Max Units
 VBG Bandgap reference voltage  1.15 1.23 1.4 V"

...und sowas nenne ich Streuung! Und mehr wollte ich in meinem 
Eingangsthread nicht zum Ausdruck bringen!

...wo soll ich geschrieben haben, dass ein Atmega "Schrott" ist?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Alfons G. schrieb:
> "Symbol Parameter               Min  Typ  Max Units
>  VBG Bandgap reference voltage  1.15 1.23 1.4 V"
>
> ...und sowas nenne ich Streuung! Und mehr wollte ich in meinem
> Eingangsthread nicht zum Ausdruck bringen!

 Das ist ein Unterschied von +/- 12%
 Mir scheint es als ob bei dir Schwankungen von +/- 100% vorkammen.

 Wenn man schon damit arbeitet, dann kalibriert man so etwas auch,
 deswegen schrieb ich dir schon gestern:
Marc V. schrieb:
> P.S.
>  Messe mal die Spannung am AREF Pin.

 Aber du scheinst ja Beratungsresistent zu sein und willst alles
 besser wissen...


> Den Widerstand eines KTY kennt ihr? Dann sollte so mancher Schlaumeier
> doch wirklich den Wert des zweiten Widerstandes am Spannungteiler
> ausrechnen können... (Hinweis: Den Dreisatz muss man zweimal anwenden!
> Schwierig!)

 Deswegen hat die Rechnerei bei dir nicht geklappt  ?

: Bearbeitet durch User
von Alfons G. (alibaba55)


Lesenswert?

Moin Marc,

Marc V. schrieb:
> Deswegen hat die Rechnerei bei dir nicht geklappt  ?

Der ADCW-Wert von 0 Grad ist nicht die Grundlage für die Berechnung der 
prozentualen Abweichung von Prozessor zu Prozessor.

Bei 0 Grad dürfte der ADCW-Wert bei etwa 610 liegen:
610 - 610 = 0 * 100 = 0 / 308 = 0,00 Grad
(Berechung sh. oben und sh. "Quellcode")

Und damit dürfte die Abweichung schon sehr, sehr gut mit dem Datenblatt 
(und der dort tolerierten Streuung) übereinstimmen.

Ich werde in den nächsten Tagen, wenn ich wieder mehr Zeit habe, mal 
eine externe Referenzspannung anlegen und die Werte meiner 5 neuen 
Atmegas nochmals bestimmen. In diesem Zusammenhang dürfte der Begriff 
"ratiometrische Messung" die Lösung zu den ganzen Missverständnissen 
hier beinhalten.

A. Geigenberger

von Peter D. (peda)


Lesenswert?

Alfons G. schrieb:
> ????  ->
> (Zum Messvorgang: Die ersten drei Messungen werden verworfen, dann 30mal
> gemessen und das Ergebnis entsprechend mathematisch ausgewertet.
> Temperaturfühler: KTY 81 )
> natürlich mit Spannungsteiler! [Bitte länger als 10 Sekunden lesen!]

Messungen verwerfen ist Unsinn, die erste Messung nach dem Umschalten 
des MUX ist gültig.
Eine Ausnahme ist die Umschaltung auf die interne Referenz, die braucht 
etwas Zeit zum Anlaufen. Man kann aber auch die Brownout-Reset Fuse 
setzen, dann ist die interne Referenz immer aktiv.

Alfons G. schrieb:
> Temperaturfühler: KTY 81 )

Und das setzt Du einfach mal voraus, daß jeder nur mit KTY81 mißt.
Ich messe z.B. mit LM335, DS18B20 und für hohe Auflösung mit SMT160-30, 
PT1000, Typ-K, Typ-R (1400°C).
Für Typ-K, PT1000 benutze ich fertige 24Bit-ADCs die als 
Außenbeschaltung nur einen hochpräzisen Widerstand benötigen (AD7793).
Es gibt unzählig viele Varianten, die Temperatur zu messen und in einen 
Digitalwert zu wandeln, ein Schaltplan ist daher Pflicht!

Alfons G. schrieb:
> natürlich mit Spannungsteiler! [Bitte länger als 10 Sekunden lesen!]

Und da brichst Du Dir echt nen Zacken aus der Krone, den Spannungsteiler 
einfach mal aufzumalen und abzufotografieren ???
Um einen Spannungsteiler zu berechnen, braucht man erstmal den 
geforderten Meßbereich und die Auflösung.

von Einer K. (Gast)


Lesenswert?

Alfons G. schrieb:
> Ich werde in den nächsten Tagen, wenn ich wieder mehr Zeit habe, mal
> eine externe Referenzspannung anlegen und die Werte meiner 5 neuen
> Atmegas nochmals bestimmen. In diesem Zusammenhang dürfte der Begriff
> "ratiometrische Messung" die Lösung zu den ganzen Missverständnissen
> hier beinhalten.

Was wirfst du die 2 wieder in einen Topf?

Alfons G. schrieb:
> Die gesamte Diskussion (s.o.) bzgl. der umgebenden Peripherie zielt ins
> Leere, denn die Bedingungen sind für jeden Prozessor gleich, absolut
> gleich!

Beachte:

Peter D. schrieb:
> Und da brichst Du Dir echt nen Zacken aus der Krone, den Spannungsteiler
> einfach mal aufzumalen und abzufotografieren ???
> Um einen Spannungsteiler zu berechnen, braucht man erstmal den
> geforderten Meßbereich und die Auflösung.
Und da du das nicht raus rücken willst, darfst du hier ohne mich weiter 
rum eiern.

von Stefan K. (stefan64)


Lesenswert?

Alfons G. schrieb:
> Ich werde in den nächsten Tagen, wenn ich wieder mehr Zeit habe, mal
> eine externe Referenzspannung anlegen und die Werte meiner 5 neuen
> Atmegas nochmals bestimmen.

Waren wir nicht schon soweit, daß die Referenzspannung in die Ermittlung 
Deines Widerstandsverhältnisses nicht mit eingeht?

Dein Widerstandsverhältnis kannst Du bei 5V genausogut wie bei 3V 
ermitteln, vorausgesetzt, Spannungsteiler und ADC werden von derselben 
Quelle gespeist.

Gruß, Stefan

von Joachim B. (jar)


Lesenswert?

Alfons G. schrieb:
> " Es soll nur ein Hinweis auf die erhebliche Streuung von Prozessor zu
> Prozessor sein,..." (s.o.) ->
>
> "Symbol Parameter               Min  Typ  Max Units
>  VBG Bandgap reference voltage  1.15 1.23 1.4 V"
>
> ...und sowas nenne ich Streuung! Und mehr wollte ich in meinem
> Eingangsthread nicht zum Ausdruck bringen!

und das ist Unfug!

Axel S. schrieb:
> 3. braucht man für eine ratiometrisch arbeitende
>    Sensoranordnung die interne Referenz gar nicht

man braucht weder die interne Ref noch den Wert der VCC.

Das ist einfach nur die Teilung von KTY81 zu Rv mit deren Toleranzen + 
die Digitfehler im Messbereich!

Der TO macht hier grundsätzliche Messfehler und will es dem AVR grundlos 
in die Schuhe schieben.

von Axel S. (a-za-z0-9)


Lesenswert?

Marc V. schrieb:
> Alfons G. schrieb:
>> "Symbol Parameter               Min  Typ  Max Units
>>  VBG Bandgap reference voltage  1.15 1.23 1.4 V"
>>
>> ...und sowas nenne ich Streuung! Und mehr wollte ich in meinem
>> Eingangsthread nicht zum Ausdruck bringen!
>
>  Das ist ein Unterschied von +/- 12%
>  Mir scheint es als ob bei dir Schwankungen von +/- 100% vorkammen.

Wie oft willst du diesen Unsinn noch vorbringen? Denn es ist Unsinn.

Der TE subtrahiert 610 vom gemittelten Meßwert, bevor er ihn linear 
weiter skaliert. Damit verschieben sich der Nullpunkt und Endwert der 
Skala. Die ursprüngliche Fehlerangabe von +/-11% gilt aber für Nullpunkt 
und Skala des ADC.

Einfaches Beispiel: der korrekte Meßwert sei 650. Der reale Meßwert kann 
um +/- 10% abweichen. Wir bekommen also irgendwas zwischen 585 und 715. 
Nach Abzug von 610 haben wir irgendwas zwischen -25 und +105. Der wahre 
Wert wäre 40.

von Alfons G. (alibaba55)


Lesenswert?

Axel S. schrieb:
> Wie oft willst du diesen Unsinn noch vorbringen? Denn es ist Unsinn.

Sagt, mal? Macht es Euch Spaß, das ständig zu wiederholen?
Gestern bereits um 15:21 Uhr hat Stefan K. das prima erklärt und um 
15:36 Uhr habe ich dies auch hier geschrieben!
Und ja! Meine Überlegungen waren fehlerhaft/Unsinn. Aber warum darf man 
bei Unklarheiten nicht kompetentere Leute in einem Forum fragen?

Axel S. schrieb:
> "Symbol Parameter               Min  Typ  Max Units
>  VBG Bandgap reference voltage  1.15 1.23 1.4 V"

Und ich konnte ja nicht ahnen, dass meine Bemerkung, dieser 
"Streubereich" sei "bemerkenswert", gleich als Blasphemie ausgelegt wird 
und zu einer Steinigung führt.
Mich erstaunt es weiterhin, dass ein REFERENZ-Wert solche Unterschiede 
von Prozessor zu Prozessor aufweist. Und darüber bin ich ja auch initial 
gestolpert. Ich konnte mir GESTERN (mittlerweile schon!) einfach nicht 
erklären, wie es zu den so stark abweichenden Temperaturwerten von 
Prozessor zu Prozessor kommen kann.

Und da fragte ich halt hier mal nach: Sorry!!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alfons G. schrieb:
> Mich erstaunt es weiterhin, dass ein REFERENZ-Wert solche Unterschiede
> von Prozessor zu Prozessor aufweist.

Moment mal: du hast die Referenzspannung ja gar nicht gemessen,
sondern nur deren potenzielle Auswirkung über eine uns ansonsten
komplett vorenthaltene Restschaltung und etwas, was ich jetzt mal
als „Software-Magie“ bezeichne.  Das ist nicht abwertend gemeint,
aber mit irgendwelchen Mittelwertbildungen, Messwert-Verwerfen
etc. ist das, was da passiert, natürlich alles andere als eine klar
und deutliche Ermittlung der Referenzspannung.

Man kann die Referenzspannung bei entsprechender Einstellung des
ADMUX durchaus auch ganz einfach mit einem Multimeter an AREF
nachmessen.  Das wäre deutlich aufschlussreicher gewesen als das
Herumorakeln über deren Schwankungen basierend auf irgendwelcher
Software-Magie anhand von indirekten Messungen an einer externen
Beschaltung.

Da die Datenblatt-Garantiewerte über den gesamten Betriebsspannungs-
und -temperaturbereich gelten, würde ich schon deutlich geringere
Exemplarstreuungen als die dort genannten Wert erwarten, zumal die
Bandgap während der Fertigung ja auch kalibriert wird.

von Alfons G. (alibaba55)


Lesenswert?

Das stimmt! Wie gesagt: Ich habe es ja verstanden!
Ich bezog mich aber soeben NUR auf die Angaben der Firma selbst. Und 
dabei erstaunt mich, dass (nochmal) "ein REFERENZ-Wert solche 
Unterschiede von Prozessor zu Prozessor aufweist".

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alfons G. schrieb:
> ein REFERENZ-Wert solche Unterschiede von Prozessor zu Prozessor
> aufweist

Das wiederum hast du aber gar nicht nachgewiesen.

Es kann doch gut sein, dass deine restliche Schaltung irgendwie
bislang so unglücklich ist, dass eben selbst Unterschiede im Bereich
einiger 10 mV (die ich für völlig realistisch halte) zu solch
starken Streuungen deines Ergebnisses führen.

Wie geschrieben: diese Datenblattwerte sind Garantiewerte, die dir
Atm^H^H^HMicrochip über den kompletten Bereich von Betriebsspannung
und Umgebungstemperatur zusichert.  Daher müssen zwangsläufig bei
konstanter Spannung und Temperatur die Exemplarstreuungen viel geringer
ausfallen als diese im Datenblatt zugesicherten Werte.

von Alfons G. (alibaba55)


Lesenswert?

Jörg W. schrieb:
> Alfons G. schrieb:
>> ein REFERENZ-Wert solche Unterschiede von Prozessor zu Prozessor
>> aufweist
>
> Das wiederum hast du aber gar nicht nachgewiesen.

Das stimmt auch. Ich habe nur das Datenblatt zitiert.

> Es kann doch gut sein, dass deine restliche Schaltung irgendwie
> bislang so unglücklich ist, dass eben selbst Unterschiede im Bereich
> einiger 10 mV (die ich für völlig realistisch halte) zu solch
> starken Streuungen deines Ergebnisses führen.

Ebenfalls richtig! Deshalb sagte ich ja, ich werde mir die angezeigten 
Temperaturen nochmals unter Anwendung einer externen Referenzspannung 
ansehen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alfons G. schrieb:
> Deshalb sagte ich ja, ich werde mir die angezeigten Temperaturen
> nochmals unter Anwendung einer externen Referenzspannung ansehen.

Da du offenbar eine Reihe von ATmega16 da hast, wäre es (im Interesse
dessen, wofür du diesen Thread gestartet hast) viel sinnvoller,
stattdessen einfach mal bei jedem von ihnen AREF extern mit dem
Multimeter nachzumessen und die Messreihe hier zu posten, am besten
mit beiden Einstellungen (1,23 und 2,56 V).

Bezüglich deiner Temperaturmessung sollte dir ja inzwischen klar sein,
dass bei korrekt aufgebauter Messung der genaue Wert der
Referenzspannung völlig unerheblich ist, da er sich während der
Messung herauskürzt.  So gesehen ist dein Ansinnen, die Messung mit
irgendeiner externen Referenz zu wiederholen, eigentlich an jeglicher
Aufgabenstellung vorbei gearbeitet: du kannst damit weder irgendwas
Praxistaugliches für die Temperaturmessung mit einem KTYxx an Erkenntnis
hinzu gewinnen, noch irgendeine Aussage bezüglich der tatsächlichen
Höhe der Exemplarstreuungen zwischen mehreren ATmega16.

von Alfons G. (alibaba55)


Lesenswert?

ok, ich geh jetzt in den Keller, stecke die Prozessoren der Reihe nach 
rein und messe dies durch.
Kleinen Moment bitte :-)

von Hurra (Gast)


Lesenswert?

Das hier ist ein Musterbeispiel, warum die typischen Werte aus den 
Datenblätttern für die Auslegung (!) eher kein Kriterium sein sollten!

Der unerfahrene Entwickler liest:
"Die Referenz des ATMEGA16 hat 1,23V"

Das ist FALSCH.

Richtig ist:
"Die Referenz des ATMEGA16 hat bei 25°C irgenwas zwischen 1,15 und 1,4V"
"Die Referenz hat einen nicht näher spezifizierten negativen 
Temperaturkoeffizienten"
"Dui Referenzspannung ist außerdem von der Versorgungsspannung abhängig"

Man beachte zum TK Fig. 190. Aber Vorsicht hier: Fig. 190 gibt den 
typischen Verlauf wieder.

was der typische Wert aussagt:
"Die Werte der ATMEGA16-Referez ist normalverteilt um 1,23V"

Ein typischer Wert darf niemals das einzige Kriterium für eine Auslegung 
sein. Min und Max sind immer mitzuziehen, in einigen Fällen 
sinnigerweise mit Fehlerfortpflanzung.

von Alfons G. (alibaba55)


Lesenswert?

... so, also:

MP1: Warmwasserspeicher
MP2: Außentemperatur
MP3: Temperatur im Viessmann-Boiler
Volt: Spannungsmessung

#1: 28  7 43   2,61
#2: 35 13 47   2,53
#3: 25  5 36   2,64
#4: 32 11 42   2,56
#1: 39 17 50   2,48

von Alfons G. (alibaba55)


Lesenswert?

... und "sortiert:

> #1: 39 17 50   2,48
> #2: 35 13 47   2,53
> #4: 32 11 42   2,56
> #1: 28  7 43   2,61
> #3: 25  5 36   2,64

von Alfons G. (alibaba55)


Lesenswert?

kleine Abweichungen der Referenzspannung "potenzieren" sich also, aber 
eine Abhängigkeit scheint deutlich zu sein.

von Sheeva P. (sheevaplug)


Lesenswert?

Alfons G. schrieb:
> Aber immerhin!
> Es gibt nämlich tatsächlich Leute, die nicht täglich und ernsthaft mit
> ADC und internen Referenzen arbeiten und trotzdem einen Atmega Prozessor
> verwenden.
> Und für diese Menschen ist es schon erstaunlich, welche Toleranzen als
> "ganz normal" angesehen werden.

Was ist denn bloß so besonders speziell an Deinem Schaltplan, Deinem 
Programm und Deinem Aufbau, daß Du sie nicht zeigen willst? Selbst wenn 
die Peripherie dieselbe ist, kann es da trotzdem wesentliche 
Unterschiede geben, etwa wenn Schmutz oder Korrosion den 
Übergangswiderstand zwischen den Pins Deines uC und seinem Sockel 
beeinflußen.

von Toni Tester (Gast)


Lesenswert?

Alfons G. schrieb:
> ... so, also:

... d. h. (2,56 +/- 0,08)V, entsprechend +/- 3,1%, Standardabweichung 
0,057V.

Denke, für die AVR-Gurken ganz okay - für den STM32F103 liegt z. B. die 
garantierte Maximalabweichung bei +/- 3,3% über den Bereich von 
-40°C...+85°C.

von Toni Tester (Gast)


Lesenswert?

Sheeva P. schrieb:
> Was ist denn bloß so besonders speziell an Deinem Schaltplan, Deinem
> Programm und Deinem Aufbau, daß Du sie nicht zeigen willst?

Stimmt, jetzt wäre wirklich mal so langsam der konkrete Aufbau 
interessant, der es schafft, aus an sich immer noch relativ geringen 
Toleranzen derart massive Abweichungen zu generieren - das ist fast 
schon etwas Besonderes ;-)

von Bitte ein Bit (Gast)


Lesenswert?

Den werden wir niemals zu sehen bekommen, wetten?

von Harald W. (wilhelms)


Lesenswert?

Alfons G. schrieb:

> #1: 28  7 43   2,61
> #2: 35 13 47   2,53
> #3: 25  5 36   2,64
> #4: 32 11 42   2,56
> #1: 39 17 50   2,48

Das halte ich für eine "erstaunlich kleine"  Abweichung vom Nennwert.
Wollte man diese Abweichungen verkleinern, würde sich der Preis des
Prozessors wohl vervielfachen, da ein Grossteil der Prozessoren
weggeworfen werden müsste. Und das, obwohl ein Grossteil der Nutzer
eine genauere Referenzspannung überhaupt nicht benötigen.

von Alfons G. (alibaba55)


Lesenswert?

... es ist nicht so, dass ich den Schaltplan geheim halten möchte...
Aber: Es gibt keinen :-(
Und so besonders ist der "Schaltplan" nicht:
5Volt -- Widerstand -- KTY -- Masse
zwischen Widerstand und KTY geht's zum Port des Prozessors.

Ist mir jetzt aber egal und ich möchte nicht länger nerven:
Ich kalibriere den verwendeten Mikroprozessor individuell ein - und wenn 
er dann die nächsten 5 Jahre problemlos arbeitet: Gut ist's!

Danke für die Hilfsbereitschaft!
A. Geigenberger

von Hurra (Gast)


Lesenswert?

Alfons G. schrieb:
> Ist mir jetzt aber egal und ich möchte nicht länger nerven:
> Ich kalibriere den verwendeten Mikroprozessor individuell ein - und wenn
> er dann die nächsten 5 Jahre problemlos arbeitet: Gut ist's!

Und wie gehst du damit um, dass die Referenz eine recht starke 
Temperaturabhängigkeit hat?
Und damit, dass sie von der Versorgungsspannung abhängt?

Das kannst du nicht wegkalibrieren...

Machs so:

5V ---> Widerstand ---> Widerstand --> Sensor --> Masse
                    |               |
                Port1             Port2

Und dann berechnest du den Wert aus den Rohwerten von Port1 und Port2 
direkt.

Wenn du die 5V als Referenz nimmst, kann Widerstand 1 z.B. 100E sein, 
Widerstand 2 1k. Die interne Referenz schaltest du aus, die brauchst du 
nicht.

Weder Referenz noch Versorgung spielen dann irgendeine Rolle. Keine 
Kalibrierung nötig.

von Einer K. (Gast)


Lesenswert?

Alfons G. schrieb:
> Ist mir jetzt aber egal und ich möchte nicht länger nerven:
> Ich kalibriere den verwendeten Mikroprozessor individuell ein - und wenn
> er dann die nächsten 5 Jahre problemlos arbeitet: Gut ist's!

Du hast es immer noch nicht verstanden...


Klartext:
Du brauchst die interne Referenz nicht.

Und nochmal:
Du brauchst die interne Referenz nicht.

Und nochmal, diesmal zum Mitmeißeln:
Du brauchst die interne Referenz nicht.

Jetzt klarer?!?!

von Frank S. (_frank_s_)


Lesenswert?

Sheeva P. schrieb:
> Was ist denn bloß so besonders speziell an Deinem Schaltplan, Deinem
> Programm und Deinem Aufbau, daß Du sie nicht zeigen willst?

Alfons G. schrieb:
> ... es ist nicht so, dass ich den Schaltplan geheim halten möchte...
> Aber: Es gibt keinen :-(

Und das Programm gibt es das? (bitte in vollständig! - als Anhang)
Und den Aufbau? (Foto?)

von S. Landolt (Gast)


Lesenswert?

Auf Wunsch von Jörg Wunsch:

5.0 V  13 °C

ATmega16-16PU (1625K)
2.610 2.637 2.589 2.496 2.510 2.593 2.572 2.559 2.596 2.562
2.534 2.566 2.578 2.597 2.598 2.559 2.506 2.459 2.529 2.472

und, mangels Stückzahl aber wenig aussagekräftig,

ATmega16A-PU (1340)
2.592 2.482 2.534

von Bitte ein Bit (Gast)


Lesenswert?

Und was haben diese Zahlenfolgen jetzt zu bedeuten? Was für eine Message 
steht dahinter?

von Paul B. (paul_baumann)


Lesenswert?

Bitte ein Bit schrieb:
> Und was haben diese Zahlenfolgen jetzt zu bedeuten?

Vielleicht die Spannung an AREF von 20 Stück Atmega 16 -aber frag 
ruhig...

Worum es hier geht, ist Dir wohl entgangen?

Paul

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Axel S. schrieb:
> Wie oft willst du diesen Unsinn noch vorbringen? Denn es ist Unsinn.

 Nein, es ist kein Unsinn.
 Unsinn ist das, was der TO gemacht hat.

 Ob er etwas vom gemittelten Meßwert subtrahiert hat, bevor er ihn
 linear weiter skaliert hat und damit den Nullpunkt verschoben hat,
 oder ob er ganz einfach den falschen Spannungteiler benutzt hat...

 Ich habe ihm schon gestern (als Erster) vorgeschlagen, auch die
 Spannung am AREF zu messen (gerade wegen der Streuung) - er hat es
 aber nicht getan.

 Also, es interessiert mich kein bisschen wo die Ursachen für seine
 Fehler zu suchen sind - es ist Falsch.
 Punkt.

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

> Vielleicht die Spannung an AREF...

So ist es.
Um wenigstens einen kleinen Nutzen für mich selbst aus dieser 
unsäglichen Diskussion zu ziehen, habe ich die kleine Messreihe 
durchgezogen, und dann dachte ich, ich stelle sie hier vor, warum auch 
nicht.

von Einer K. (Gast)


Lesenswert?

Ich danke dir dafür....

Die Ergebnisse finde ich allerdings nicht überraschend.
Aber, das hat ja auch was gutes.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

S. Landolt schrieb:
> dann dachte ich, ich stelle sie hier vor, warum auch nicht.

Ja, danke sehr!

von Wolfgang (Gast)


Lesenswert?

Alfons G. schrieb:
> 5Volt -- Widerstand -- KTY -- Masse
> zwischen Widerstand und KTY geht's zum Port des Prozessors.

Genau hier liegt dein Fehler, wenn du das zum Prozessor geführte Signal 
gegen die Referenzspannung vergleichst.

Spannungsteiler und ADC müssen die gleiche Bezugsspannung verwenden, 
sonst bist du hoffnungslos den Toleranzen bei der Prozessorherstellung 
ausgeliefert, aber das weisst du ja bereits.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

S. Landolt schrieb:
> durchgezogen, und dann dachte ich, ich stelle sie hier vor, warum auch
> nicht.

 Ja.
 Durchschnittswert = 2.556V
 Max. Wert         = 2.637V
 Min. Wert         = 2.459V

 Abweichung (vom Durchschnittswert) = +3.16% / - 3.80%
 Abweichung (vom Typ. Wert)         = +1.42% / - 5.42%

 Weitaus besser als im DaBla angegeben.

: Bearbeitet durch User
von Alfons G. (alibaba55)


Lesenswert?

Hallo,
wenn ich die Schriftgröße verändern könnte, würde ich das hier jetzt 
seehr klein schreiben:
Ich hatte eine nachgeschaltete mathematische Prozedur übersehen, die 
kleine Abweichungen arithmetisch massiv gespreizt hat :-( .
Vielleicht poste ich dies im Fasching 2018
Bitte entschuldigt mein Beharren auf meinen Gedankengang.

A. Geigenberger

... und was jetzt auf mich zukommt, werde ich geduldig ertragen...

von Joachim B. (jar)


Lesenswert?

Alfons G. schrieb:
> Ich hatte eine nachgeschaltete mathematische Prozedur übersehen, die
> kleine Abweichungen arithmetisch massiv gespreizt hat :-( .
> Vielleicht poste ich dies im Fasching 2018
> Bitte entschuldigt mein Beharren auf meinen Gedankengang.
> A. Geigenberger

1. ich finde ess gut wenn jemand Fehler einsieht und sie benennt!
2. Ich verstehe immer noch nicht wieso auf die Spannungsabweichung von 
allem rumgeritten wird!

3. Wenn es nur um das Verhältnis Sensor RV geht ist die Spannung 
unnötig.
4. Wenn ich messe dann immer am "Skalenendwert" und nie in den untersten 
digit bei +- Digitfehler.

Notfalls trenne ich Aussentemperatur und Brenner in 2 Messkreise, die 
Aussentemperatur wird hier hoffentlich nicht die Brennertemperatur 
erreichen, die Brennertemperatur wird hier hoffentlich nie unter 0°C 
fallen.

Für die Aussentemperaturen sind 1w DS18B20 eine gute Wahl, bis 85°C 
könnten die auch vielleicht deine Brennertemperatur zeigen aber ich 
kenne das Maximum bei deiner Brennertemperatur nicht.

Hohe Messfehler im unteren Digit Bereich um 0°C wären für die 
Brennertemperatur irrelevant.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nun, wenn du selbst was draus lernst (vor allem, wie man mit einem
KTYxx optimal messen sollte), dann war es nicht umsonst.

Ganz nebenbei haben wir ein bisschen über die Streuungen der Bandgap
von ATmega16 und anderen AVRs erfahren, was ja auch nicht umsonst ist.

Ich habe die Statistik für S. Landolts Messungen mal noch ergänzt:
zum Mittelwert 2.5561 V gehört eine Standardabweichung von 0.0468 V.
Allerdings ist natürlich bei 20 Werten die Statistik noch nicht
sehr sinnvoll im mathematischen Sinne.

von Harald W. (wilhelms)


Lesenswert?

Alfons G. schrieb:

> Vielleicht poste ich dies im Fasching 2018

Besser am 1.April.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Jörg W. schrieb:
> Allerdings ist natürlich bei 20 Werten die Statistik noch nicht
> sehr sinnvoll im mathematischen Sinne.

 Aber doch aussagekräftiger als bei nur 2 oder 5 Exemplaren.
 Vielleicht wäre die LotNr. auch nicht schlecht gewesen.

von Johannes S. (Gast)


Lesenswert?

ich habe gerade noch die Erfahrung gemacht das die Messung auch stark 
von der Qualität der Versorgungsspannung abhängt:
Ich baue gerade meinen alten 3D Drucker fertig, der hat ein 3Drag Board 
mit ähnlicher Temperaturmessung, NTC im Spannungsteiler und 10µ Elko zum 
glätten der Messspannung. Ich habe das aber modifiziert und den 7805 
ausgebaut und die 5V von einem alten Servernetzteil genommen. Beim 
ersten Test sprang die Temperatur wie wild hin und her, in Spitzen fast 
+/- 10°. Zur Fehlersuche habe ich mir die 5V Versorgung angesehen und da 
waren satte 1,5 V (!) Vpp Ripple mit 20 kHz drauf. Ich habe meine 
Lastwiderstände für die 3A min. Last von den 5V weggenommen und der 
Ripple ging auf einige zig mV zurück und damit war die Temperaturmessung 
sofort stabil.
Also AVCC als Vref und Versorgung für den Spannungsteiler funktioniert 
nur bei sauberer Versorgungsspannung. Und gute alte Längsregler haben 
hier Vorteile gegenüber Schaltreglern (wenn die nicht super geglättet 
werden) würde ich sagen.
Auf dem 3Drag Board hat man sich noch den C an ARef gespart, der gehört 
laut DB aber auch bei Vref=AVCC dahin.

von m.n. (Gast)


Lesenswert?

Alfons G. schrieb:
> Und so besonders ist der "Schaltplan" nicht:
> 5Volt -- Widerstand -- KTY -- Masse
> zwischen Widerstand und KTY geht's zum Port des Prozessors.

Das schreit doch nach ratiometrischer Auswertung. Die Genauigkeit ist - 
neben dem Sensor selbst - allein von der Güte des Widerstandes abhängig. 
Ein Typ mit 0,1% und TK <= 50 ist für Messungen mit Auflösung 1 K 
ausreichend. Beispiel für ATmega328 mit 6 Kanälen: 
Beitrag "Temperatursensor KTY81 am ATmega328 (Arduino UNO), 1-6 Kanäle"

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

m.n. schrieb:
> Das schreit doch nach ratiometrischer Auswertung.

Ja.  Das kauen wir ja seit ein paar Tagen hier durch …

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.