Hallo, Ich betreibe schon jahrelang eine Solaranlage mit Heizungssteuerung mit meinem Atmega16. "Zur Vorsicht" besorgte ich mir gestern nochmal einige Atmegas. Dass zwischen den Prozessoren geringe Temperatur-Messdifferenzen bestehen ist mir immer schon aufgefallen. Mit den neuen Prozessoren ist das aber nun "krass": 5 Grad Differenz bei der Messung von ca 55 Grad! Mich wundert dies, wie kann man sich das erklären? Die Hardware, die den Microprozessor umgibt ist identisch und die Software auch. Das Verhältnis Masse-Messspannung zu Messspannung-Maximalspannung ist in jedem Fall somit sehr konstant. Trotzdem sind so große Differenzen bei den verschiedenen ADT-Wandlern der verschiedenen Microprozessoren. A. Geigenberger
:
Bearbeitet durch User
Alfons G. schrieb: > Die Hardware, die den Microprozessor umgibt ist identisch und die > Software auch. Aber beides uns unbekannt und die Gedankenleser sind gerade im Urlaub.
Alfons G. schrieb: > Die Hardware, die den Microprozessor umgibt ist identisch Wurde nur der Prozessor ausgewechselt oder auch die "identisch" aufgebaute Hardware? Dir ist bekannt, das elektronische Bauteile mit einer Tolleranz behaftet sind. Normale Kohleschichtwiderstände haben beispielsweile eine Tolleranz von 10%. Das kann in der Kombination schon Messunterschiede von 5°C ergeben.
PoE schrieb: > Dir ist bekannt, das elektronische Bauteile mit > einer Tolleranz behaftet sind. Normale Kohleschichtwiderstände haben > beispielsweile eine Tolleranz von 10%. So toll ist das mit der Toleranz manchmal gar nicht. Bei Temperaturmessungen würde ich immer einen Spezialisten (i.e. Temperatursensor) befragen. Alfons G. schrieb: > Mit den neuen Prozessoren ist das aber nun "krass": 5 Grad Differenz > bei der Messung von ca 55 Grad! Und was sagt das Datenblatt zur garantierten oder typischen Genauigkeit der Temperaturmessmimik im Prozessor?
Die Eigenschaften (max. mögliche Fehler, Toleranzen) der AD-Wandler sind im Datenblatt der AT-µCs dokumentiert. Die Frage ist doch, ob du "blauäugig" die Toleranzen der AT-µCs ignoriert hast, oder die Toleranzen der "umgebenden Hardware", oder ob es ECHTE Ausreißer sind. Meckern alleine hilft nicht viel.
Jakob schrieb: > Die Frage ist doch, ob du "blauäugig" die Toleranzen der AT-µCs > ignoriert hast, oder die Toleranzen der "umgebenden Hardware", > oder ob es ECHTE Ausreißer sind. Fehlerrechnungen mit Worst-Case-Annahmen sind teilweise erstaunlich. Wenn man einen Spannungsteiler mit 2 Widerständen mit je 10% Fehler aufbaut, dann kann die Abweichung des Teilverhältnisses bei +-20% des Sollwertes liegen. Aber man hat nicht nur 2 Bauteile, da hilft nur genaue Bauteile (teuer) verwenden und/oder kalibrieren (lästig) Beispiel: Soll: Spannungsteiler aus 2 Widerständen mit je 100Ohm. Extrembeispiel mit maximalem Fehler: Widerstand 1 mit 90 Ohm, Widerstand 2 mit 110Ohm Alfons G. schrieb: > Die Hardware, die den Microprozessor umgibt ist identisch und die > Software auch. Das Verhältnis Masse-Messspannung zu > Messspannung-Maximalspannung ist in jedem Fall somit sehr konstant. > Trotzdem sind so große Differenzen bei den verschiedenen ADT-Wandlern > der verschiedenen Microprozessoren. Man prüfe alle Spannungsteiler, Messverstärker und Referenzspannungsquellen. Bei hohen Genauigkeitsanforerungen sollt man hier nicht auf die in den µC eingebauten Baugruppen setzen.
(Temperatur)Messgeräte kann und sollte man Kalibrieren.
Hallo, Danke für die vielen und schnellen Antworten! @ Peter Dannegger: Gedankenleser sind nicht nötig. Die Fragestellung ist - wie ich meine - ausreichend genau. Man hat einen Spannungsteiler und man hat eine Software: Beides ändert sich nicht. Trotzdem liefern verschiedene Atmegas sehr verschiedene Messwerte. Welche Infos fehlen da noch? @ PoE: Es wird nur der Prozessor ausgewechselt. Die große Toleranzbreite bei den Widerständen des externen Spannungsteilers ist mir bekannt und spielt hier keine(!) Rolle: 1. Der Spannungsteiler bleibt immer identisch. -> 2. Das Massepotential bleibt immer identisch -> 3. Die Referenzspannung bleibt immer identisch -> 4. Die Spannung am Spannungsteiler (Quotient) bleibt immer identisch. -> 5. Also MUSS wohl die Digitalzahl, die der ADC-Wandler liefert (zwischen 0 und 1023), wohl von Atmega zu Atmega erheblich unterschiedlich sein. Kleine Differenzen sind verständlich, so große Differenzen wundern mich. @ Wolfgang: Wie gesagt, die Toleranzen der "umgebenden" Hardware sollten keine Rolle spielen, diese sind für jeden der gewechselten Atmegas identisch. Das Datenblatt habe ich dazu noch nicht befragt. @ Jakob: Ich meckere nicht; tut mir leid, wenn dies so rüber gekommen ist!! Ich stelle nur diese Differenzen fest und vielleicht gibt diese Diskussion hier anderen Lesern (ebenfalls nicht so versierten Atmel-Kennern) einen Hinweis auf die Tatsache, dass ein Mikrokontrollerwechsel nicht ganz unproblematisch ist. Dann hat dieser Thread ja einen Sinn. Sooo hohe Genauigkeitsanforderungen habe ich gar nicht. Eine "Parallelverschiebung" aller Werte an den verschiedenen ADC-Eingängen um 1-2 Grad wäre kein Problem, da ja Temperaturen meist nur "verglichen" werden müssen. 5-6 Grad Unterschied bei einem Messwert von ca. 50 Grad ist ja dann aber schon eine "Hausnummer". [Soll erneut wieder nicht gemeckert sein; ist nur eine Feststellung] @ Schreiber: Wohl wahr(!); ist aber nicht so einfach, wenn 12 Sensoren ausgewertet werden! Diese Sensoren sind "verbaut" und ich kann nicht mit einem Glas Eiswasser zum Nullabgleich auf das Dach klettern. Also wie gesagt: Ich wollte nur dieses Atmel-Verhalten hier beschreiben; vielleicht kann ja jemand erklären, warum die Differenzen zwischen den Prozessoren so groß sind. Und vielleicht hilft dieser Hinweis ja Anderen. Einen schönen Sonntag noch! A. Geigenberger
Hallo, nur so als Anregung auf einen atmega88/328 uä. bezogen: Interne Referenz benutzt? Erste Wandlung verworfen? (Die kann falsch sein) Mikrocontroller AD Eingänge mit passender RC Kombination abgeblockt. Analoge Versorgungsspannung extra abgeblockt mit RC Kombination? Zu guter Letzt hilft ein Blick ins Datenblatt wo steht, dass die interne BG-Referenz zwischen 1,0V und 1,2V schwanken kann ... Da hast du bei anderen Mikrocontrollern auch keine Vorteile. Z.B. haben die meisten STM32 gar keine int. Referenz. Da vergleicht man dann gegen die rauschende Versogungsspannung... Heißt, wenns genau sein muss ... mit ext. Refereenz vergleichen oder abgleichen. VG
Alfons G. schrieb: > Kleine Differenzen sind verständlich, so große Differenzen wundern mich. da musst du wohl einen Blick ins Datenblatt werfen, was für eine Spannungsreferenz verwendest du denn?
Alfons G. schrieb: > @ Peter Dannegger: Gedankenleser sind nicht nötig. Die Fragestellung ist > - wie ich meine - ausreichend genau. Man hat einen Spannungsteiler und > man hat eine Software: Beides ändert sich nicht. Trotzdem liefern > verschiedene Atmegas sehr verschiedene Messwerte. Welche Infos fehlen da > noch? Na z.B. wär interessant, wie groß die 5° Temperaturfehler denn als Spannungsfehler sind. Wenn du geheimnisvolle "umgebende Hardware" ein LM35 sein sollten, dann entsprechen die 5° einem Spannungsfehler von 50mV. Wenn sie stattdessen aus einem unverstärkten K-Typ Thermoelement bestehen sollte, dann entsprechen 5° einem Spannungsfehler im Bereich 200µV. Ob die beiden ADC um 50mV unterschiedlich messen oder um 200µV (oder um irgendeinen Wert dazwischen) spielt vielleicht soch eine gewisse Rolle, oder? Inzwischen verrätst du wenigstens, dass der Sensor per Spannungsteiler ausgewertet wird. Als wahrscheinlich ein NTC, oder ein KTY-irgendwas oder ein Pt1000 oder ... Da beträgt der Bereich möglicher Spannungsfehler denn wenigstens nicht mehr einen Faktor 250 sondern "nur" noch ~eine Größenordnung. Trotzdem wäre der konkrete Wert noch immer interessant, wenn man eine halbwegs sinnvolle Aussage zur Toleranz deiner ADC treffen soll. Alfons G. schrieb: > Ich wollte nur dieses Atmel-Verhalten hier beschreiben; Dann tu das bitt: welche Spannungsabweichung ergibt zwischen zwischen den verschiedenen ADCs?
Hi Die Sensoren unter sich bleiben aber 'liegen'? Dann könnte ich mir vorstellen, daß die interne Referenz hier rein spielt. Vll. kannst Du Das etwas abmildern, wenn Du statt 1,1V auf 2,56V gehst oder auf Vdd (müsste nachschlagen, was Alles möglich ist). Je größer die Referenz, desto kleiner der Fehler. MfG
Alfons G. schrieb: > @ Wolfgang: Wie gesagt, die Toleranzen der "umgebenden" Hardware sollten > keine Rolle spielen, diese sind für jeden der gewechselten Atmegas > identisch. Das Datenblatt habe ich dazu noch nicht befragt. Dann tue das, bevor du dich über irgendwelche Abweichungen zwischen Porzessorexemplaren wunderst.
Walter S. schrieb: > da musst du wohl einen Blick ins Datenblatt werfen, was für eine > Spannungsreferenz verwendest du denn? So wie es aussieht wohl die interne; schlimmer geht's ja nicht. Einfache Abhilfe: Vcc als Referenz anwählen.
Hallo, Danke für die Antworten; meine Spannungsversorgung ist wohl nicht optimal: Ich habe VCC an einem Netzteil angeschlossen und die Spannung an AVCC über eine Spule geführt, mit einem Kondensator gegen Masse. Für genauere Messungen sollte man also eine Referenzspannung an AREF führen?? Den "internen Spannungsteiler" benutze ich: 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); Die ersten drei Messungen werden verworfen, dann 30mal gemessen und das Ergebnis entsprechend mathematisch ausgewertet. Temperaturfühler: KTY 81 Also AREF beschalten? A. Geigenberger
Alfons G. schrieb: > Temperaturfühler: KTY 81 Wenn du den Spannungsteiler optimal ausgelegt hast, entsprechen 5° Temperaturfehler also 25mV Spannungsfehler, dein Ergebnis springt also um bis zu 10 LSB - na das ist doch wenigstens mal ne Aussage. (Mit ungeschickt dimensioniertem Spannungsteiler kann es dann übrigens auch wieder weniger sein.) Alfons G. schrieb: > die Spannung an AVCC > über eine Spule geführt, mit einem Kondensator gegen Masse. Klingt vom Ansatz her vernünftig, wobei auch hier viel an der konkreten Implementierung hängen kann (es gibt alle möglichen Arten von "Spulen" und nicht jede davon wäre hier ideal). Alfons G. schrieb: > Also AREF beschalten? Zumindest ein Filterkondensator gehört daran. Für eine hohe Absolutgenauigkeit brauchst du entweder eine externe Referenz (die für alle eingesetzten µCs gleich ist) oder du musst die interne bandgap-reference zu Beginn ausmessen (denn die darf laut Datenblatt von Chip zu Chip um +-20% unterschiedlich sein).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.