Ich habe hier im Forum gelesen, dass die Referenzspannung bei den AtTiny44 zwar stabil sein soll, der Absolutwert sich aber bei verschiedenen µCs leicht variiert. Deshalb habe ich mir ein ganz einfaches Programm geschrieben, welches den Kanal 1 misst und wenn der Wert 1023 ist, dann einen Port auf High setzt, anderenfalls den Port auf 0 setzt. Wenn ich über ein Poti(15k) eine Spannung anlege, dann beginnt mein Port ab ca. 1,070 V teilweise auf high zu schalten. Was ja bedeutet, dass einige Messungen als Resultat 1023 liefern, einige nicht. Erst ab 1,090V ist der Port immer auf High, erst jetzt ist also jede Messung gleich 1023. Wie kommt dieser Effekt zu Stande? Müsste der Port nicht ziemlich schnell zwischen Low und High wechseln? Welche Referenzspannung soll ich für die Berechnung meiner Spannungsteiler nehmen? (Am Poti habe ich einen 100n Kondensator)
Matthias wrote: > Ich habe hier im Forum gelesen, dass die Referenzspannung bei den > AtTiny44 zwar stabil sein soll, der Absolutwert sich aber bei > verschiedenen µCs leicht variiert. Wie es speziell beim Tiny44 ist, weiß ich noch nicht, ich habe mit dem noch nichts gemacht, aber allgemein bei AVRs mit ADC unterliegt die interne Referenz Exemplarstreuungen, ist aber recht stabil. > Deshalb habe ich mir ein ganz > einfaches Programm geschrieben, welches den Kanal 1 misst und wenn der > Wert 1023 ist, dann einen Port auf High setzt, anderenfalls den Port auf > 0 setzt. Also einen Komparator... > Wenn ich über ein Poti(15k) eine Spannung anlege, dann beginnt mein Port > ab ca. 1,070 V teilweise auf high zu schalten. Was ja bedeutet, dass > einige Messungen als Resultat 1023 liefern, einige nicht. Erst ab 1,090V > ist der Port immer auf High, erst jetzt ist also jede Messung gleich > 1023. Das ist normal. > Wie kommt dieser Effekt zu Stande? Der Takt des Controllers erzeugt Störungen. Diese fängt der ADC über AREF und/oder den Eingang ein. Eine einfache Schaltung mit AVR und ADC-Benutzung ist kein Problem, geht eigentlich immer. Soll das aber hochpräziese sein, dann muss man das Fachgebiet des Platinendesign schon recht virtuos beherrschen. Es gibt nicht allzuviele Leute, die das können. Ich gehöre auch nicht dazu. > Müsste der Port nicht ziemlich > schnell zwischen Low und High wechseln? Warum? Zufall ist nicht immer schnell. > Welche Referenzspannung soll ich > für die Berechnung meiner Spannungsteiler nehmen? > (Am Poti habe ich einen 100n Kondensator) Es kommt darauf an, was Du damit machen willst. Willst Du nur ein Poti als Eingabegerät zum Einstellen von Parametern nutzen, dann ist die Betriebsspannung wohl die richtige Referenz. Willst Du externe Analogsignale "messen", dann könnte die interne Referenz interessant sein. Ich habe jetzt nicht im Datenblatt nachgeschaut, kann mich aber erinnern, dass ein Pin des TinyX4 die Bezeichnung AREF trägt. Also muss es einen ADC-Modus geben, bei dem man einen C (100n) an AREF anlegen kann, um die interne AREF vor Störungen zu schützen. An diesem Pin kann man AREF auch mit einem Multimeter messen. Bei Verwendung der internen Referenz sollte diese für jedes Exemplar ermittelt werden und das Programm so gestaltet werden, dass man exemplarbedingte Korrekturen vornehmen kann. Wenn ich mich nicht irre, gibt's bei ATMEL eine AVR-Appnote, die das Thema ADC-Calibration behandelt. ...
Ich habe es jetzt mal mit dem Noise Canceler versucht, aber mit dem gleichen Effekt. Dabei ist mir aufgefallen, dass der Simulator im AVRstudio den AD Wandler nicht startet wenn ich den Sleep Befehl gebe. Dadurch wird das Interrupt nie ausgelöst. In der Hardware geht es aber. Die Schaltung soll übrigens Akkuspannungen messen und sie dann per Funk versenden. Deshalb wäre es schon gut wenn ich eine gute Auflösung hätte. Und eine Möglichkeit die Referenzspannung am Aref zu messen habe ich laut Datenblatt nicht gefunden.
Matthias wrote: > Ich habe es jetzt mal mit dem Noise Canceler versucht, aber mit dem > gleichen Effekt. > Dabei ist mir aufgefallen, dass der Simulator im AVRstudio den AD > Wandler nicht startet wenn ich den Sleep Befehl gebe. Dadurch wird das > Interrupt nie ausgelöst. In der Hardware geht es aber. Selbst bei älteren AVRs kann der Simulator das nicht. Schau mal in die Hilfe unter Know Issues. > > Die Schaltung soll übrigens Akkuspannungen messen und sie dann per Funk > versenden. Deshalb wäre es schon gut wenn ich eine gute Auflösung hätte. Die Akkuspannung (also die Betriebsspannung des AVRs) messe ich gerne durch messen der internen Referenz gegen die Betriebsspannung des AVRs und umwandeln der Messwerte mittels Tabelle. Also Vcc als Referenz, IRef als ADC-Eingang (siehe Tabelle 18-3, Zeile 11). Das hat den Vorteil, dass kein Portpin benötigt wird. > > Und eine Möglichkeit die Referenzspannung am Aref zu messen habe ich > laut Datenblatt nicht gefunden. Dann schau Die mal in Tabelle 18-2 die untere Zeile an. Da wird die interne Referenz auf PA0 geschaltet um dort einen Kondensator anzuschließen. Und in dieser Betriebsart kannst Du an PA0 mit einem Multimeter die interne Referenz sehr wohl messen. ...
Die Idee mit der Messung der Betriebsspannung im Verhältniss zur Referenz gefällt mir. Wieder ein Pin, 2 Widerstände und ein bissel Strom gespart. Danke
Matthias wrote: > Die Idee mit der Messung der Betriebsspannung im Verhältniss zur > Referenz gefällt mir. Wieder ein Pin, 2 Widerstände und ein bissel Strom > gespart. Danke Wird hier z.B. angewendet: http://www.hanneslux.de/avr/mobau/7ksend/7ksend02.html Allerdings nicht numerisch, sondern mit einer Art "Fehlerpunkte", die blinkend über die Betriebs-LED angezeigt werden. ...
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.