Arduino Nano / ATMEGA328P interne 1,1 V Referenz nicht stabil

OP #6049110
Lesenswert?

Hallo,
ich baue gerade eine Schaltung mit einem Arduino Nano (ATMega328P, kein 
original Arduino) auf, mit der ich die analoge Spannung eines Sensors 
messen möchte. Die Schaltung soll später mit einer 9V-Batterie betrieben 
werden. Als Spannungsreferenz verwende ich die interne 
1,1V-Bandgap-Referenz. Beim rumprobieren habe ich jedoch ein seltsames 
Verhalten bemerkt. Die interne Referenz scheint alles andere als stabil 
zu sein.
Zum Testen habe ich die Schaltung dann mal auf den reinen Arduino Nano 
beschränkt (siehe Schaltplan im Anhang) und führe darauf den folgenden 
Code aus:
1
int sensorValue = 0;
2

3
void setup() {
4
  analogReference(INTERNAL);  // 1,1 V internal reference
5
}
6

7
void loop() {
8
  sensorValue = analogRead(0);
9
  delay(100);
10
}

Wenn ich jetzt die Spannungen zwischen AREF und AGND, sowie zwischen 
AVCC und AGND messe (jeweils direkt an den Pins gemessen) ergeben sich 
folgende Werte:

Arduino Nano nur über USB versorgt:
AREF   = 1,089 V
AVCC   = 4,675 V

Arduino nur über 9V-Batterie versorgt:
AREF   = 1,078 V
AVCC   = 4,946 V

Arduino über 9V-Batterie versorgt und USB angeschlossen:
AREF   = 1,062 V
AVCC   = 4,946 V

Je nach Anschlusssituation schwankt also die Referenzspannungsquelle 
doch ganz schön erheblich (reproduzierbar). Und anscheinend nicht nur in 
Abhängigkeit der Versorgungsspannung. Ich habe das ganze auch mit einem 
anderen Arduino Nano gemessen und komme dort auf ähnliche Ergebnisse. 
Kann sich jemand dieses Verhalten erklären? Ich habe mir die Spannungen 
auch mit dem Oszilloskop angeschaut, aber alles ist glatt wie ein 
Baby-Popo. Ich bin jetzt gerade ratlos und weiß nicht so richtig wie ich 
weitermachen soll um eine stabile Referenzspannung zu kriegen.

Gruß
Stefan
Gast #6049125
Lesenswert?

Stefan L. schrieb:
> Kann sich jemand dieses Verhalten erklären?

Auf jeden Fall hast du es nicht für nötig gehalten deinen
LM1117 mit den vorgeschriebenen und nötigen Abblock-
Kondensatoren an Ein- und Ausgang auszurüsten.

Jetzt komme nicht damit dass dein Vorbild im Internet diese
Kondensatoren auch nicht hatte. Datenblatt lesen hilft.
Gast #6049141
Lesenswert?

Das ist höchstwahrscheinlich ein Problem in der Beschaltung (s. Beitrag 
von OMG) oder schlicht ein Messfehler. Eine kurze Überprüfung hier auf 
einem Steckbrett mit einem ATmega328P-PU ergibt bei 5.000 V Aref= 1.0748 
und bei 3.000 V 1.0742, also zwar auch eine Abhängigkeit (war ja zu 
erwarten), aber um zwei Größenordnungen besser.
Beitrag #6049151 wurde von einem Moderator gelöscht.
OP #6049152
Lesenswert?

Für C3 habe ich 100nF eingelötet. Für GND habe ich das Gehäuse der 
USB-Buchse benutzt. Sollte ich versuchen den Kondensator direkt zwischen 
die Pins zu löten?

Edit: Also so langsam muss ich feststellen, dass der Schaltplan nicht 
ganz stimmt. Statt dem Quarz ist in echt ein Quarzoszillator eingebaut. 
Statt dem LM1117 ein AMS1117. Der C3 war auch ursprünglich gar nicht 
vorhanden.
Angehängte Dateien:
Gast #6049154
Lesenswert?

Stefan L. schrieb:
> Für C3 habe ich 100nF eingelötet.

Nein.

Du hast einen Kondensator an die USB Buchse gelötet. Und diese
Masse (Abschirmung) ist nicht mit der Masse des Arduino verbunden.

Bezugsmasse für alles ist der/die Massepin(s) des Controllers!

Warum schreibst du nicht gleich dass du einen Arduino verwendest?
Salamitaktik ist hier beim Helfen nicht erwünscht.
OP #6049159
Lesenswert?

OMG schrieb:
> Nein.
>
> Du hast einen Kondensator an die USB Buchse gelötet. Und diese
> Masse (Abschirmung) ist nicht mit der Masse des Arduino verbunden.

Doch. Ich ändere es trotzdem.

OMG schrieb:
> Warum schreibst du nicht gleich dass du einen Arduino verwendest?
> Salamitaktik ist hier beim Helfen nicht erwünscht.

Danke, dass du versuchst zu helfen, aber hast du den 
Eingangspost/Thread-Titel gelesen?
Gast #6049170
Lesenswert?

Stefan L. schrieb:
> aber hast du den Eingangspost/Thread-Titel gelesen?

Ok, dann habe ich mich durch den "professionellen" Schaltplan
verwirren lassen. Wenn das mit der Info "Arduino" zusammen-
kommt weiss man nicht mehr was man davon halten soll.

Zur "Professionalität" gehört z.B. dass die USB-Abschirmung
nicht mit der Schaltungsmasse verbunden sein sollte.
OP #6049182
Lesenswert?

OMG schrieb:
>> Für C3 habe ich 100nF
>
> Das darf auch etwas grösser sein.

Hab jetzt auf 200nF verdoppelt und direkt an den AGND Pin angelötet. 
Leider alles unverändert.

S. Landolt schrieb:
> Falls dieser C3 wirklich nicht auf der Unterseite liegt, lässt er sich
> dann nicht (als SMD) direkt an die Pins des Controllers löten?

Hab ich leider nicht als SMD da.

Die Spannungen messe ich auch wirklich direkt an den Controller-Pins. 
Also können da doch auch eigentlich keine Pegelverschiebungen der Masse 
ursächlich sein, oder? Besonders seltsam finde ich, dass sich die 
Referenzspannung allein dadurch ändert, dass ich den USB-Stecker 
einstecke, obwohl dabei die Spannung an AVCC absolut konstant bleibt.
Gast #6049188
Lesenswert?

Stefan L. schrieb:
> Beim rumprobieren habe ich jedoch ein seltsames
> Verhalten bemerkt. Die interne Referenz scheint alles andere als stabil
> zu sein.

Dann gib ihr doch erstmal eine vernünftig entkoppelte 
Versorgungsspannung.
Im Datenblatt des ATmega328/P ist nicht ohne Grund in Figure 28-9 (ADC 
Power Connections) ein Filter mit 10µH und 100nF vor AVCC vorgesehen.
OP #6049194
Lesenswert?

Wolfgang schrieb:
> Dann gib ihr doch erstmal eine vernünftig entkoppelte
> Versorgungsspannung.
> Im Datenblatt des ATmega328/P ist nicht ohne Grund in Figure 28-9 (ADC
> Power Connections) ein Filter mit 10µH und 100nF vor AVCC vorgesehen.

Hm..wo du Recht hast...Allerdings geht mir langsam der Platz aus :D

Ich glaube mit diesem Arduino komme ich hier nicht wirklich weiter. Ich 
werde wohl doch was eigenes aufbauen müssen.

Edit: Einen 100nF an AVCC konnte ich noch reinquetschen. Jetzt ist es 
schon deutlich besser geworden. AREF variiert nur noch zwischen 1,096 V 
und 1,098 V. Eine Spule habe ich leider nicht zur Hand, aber ich gucke 
mal ob ich irgendwo was ausschlachten kann.
Gast #6049372
Lesenswert?

Mahlzeit.
Kommt noch hinzu, dass der ATMEL Chip vermutlich nicht von Atmel stammt 
sondern ein chinesisches Falsifikat ist.
Ich verwende die kleinen Arduinos aus Fernost auch gerne ... habe aber 
schon so manche kleine Überraschung erleben müssen.
Die Kopien sind wirklich gut und billig ... erreichen aber nicht 
unbedingt aller Spec. der Originale.
Aber alles natürlich nur ne Vermutung.
Schönen Tag
Gast #6049552
Lesenswert?

Nach meinen Untersuchungen liegts an der schlechten Entkopplung der 
Versorgungsspannung.
Originalplatine: Uref: 1072 - 1089mV, je nach Versorgung: USB, Uin, USB 
und Uin.
Nach Einfügung von 4x 100nF(siehe Anhänge): Uref: 1098mV. Erst bei 
Absinken der Spannung an +5V auf unter 4,5V änderte sich auch Uref 
geringfügig.

Gerhard
Angehängte Dateien:
Gast #6049766
Lesenswert?

Stefan L. schrieb:
>> Nach Einfügung von 4x 100nF(siehe Anhänge): Uref: 1098mV.
>
> Das sieht gut aus...

Vorsicht, falls damit der absolute Wert gemeint sein sollte, nun, der 
ist Glückssache, siehe Datenblatt:
1
Symbol Parameter               Condition Min. Typ Max Units
2
VINT Internal Voltage Reference           1.0 1.1 1.2 V

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren