Forum: Analoge Elektronik und Schaltungstechnik Referenzspannung vom Tiny44 messen?


von Matthias (Gast)


Lesenswert?

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)

von Hannes L. (hannes)


Lesenswert?

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.

...

von Matthias (Gast)


Lesenswert?

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.

von Hannes L. (hannes)


Lesenswert?

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.

...

von Matthias (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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
Noch kein Account? Hier anmelden.