Forum: Mikrocontroller und Digitale Elektronik Arduino Nano / ATMEGA328P interne 1,1 V Referenz nicht stabil


von Stefan L. (stefan_l134)



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

von OMG (Gast)


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.

von Stefan L. (stefan_l134)


Lesenswert?

Ok, hab ich hinzugefügt. Problem bleibt bestehen.

von S. Landolt (Gast)


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.

von OMG (Gast)


Lesenswert?

Welchen Wert hat C3?

Zeige deinen Aufbau, der ist vermutlich nicht optimol.

von OMG (Gast)


Lesenswert?

S. Landolt schrieb:
> oder schlicht ein Messfehler.

Yes, da schleichen sich durch Masseströme schon mal Pegel-
verschiebungen ein. Wer misst, misst Mist.

Der Quarz hat keine Lastkapazitäten, das ist vermutlich
auch ein Fehler (abhängig davon was da wirklich vorgesehen
ist).

Beitrag #6049151 wurde vom Autor gelöscht.
von Stefan L. (stefan_l134)


Angehängte Dateien:

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.

: Bearbeitet durch User
von OMG (Gast)


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.

von Stefan L. (stefan_l134)


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?

von OMG (Gast)


Lesenswert?

Stefan L. schrieb:
> Statt dem Quarz ist in echt ein Quarzoszillator eingebaut.

Nein, es ist ein Kermaik-Resonator.

Stefan L. schrieb:
> Statt dem LM1117 ein AMS1117.

Das ist ziemlich egal.

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

Das darf auch etwas grösser sein.

von S. Landolt (Gast)


Lesenswert?

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?

von OMG (Gast)


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.

von Hans Dampf (Gast)


Lesenswert?

OMG schrieb:

> Warum schreibst du nicht gleich dass du einen Arduino verwendest?

Stefan L. schrieb im Eingangspost 5x "Arduino".
Bist du lesetaub?

von OMG (Gast)


Lesenswert?

OMG schrieb:
> Kermaik-Resonator.

Keramik ...

von Stefan L. (stefan_l134)


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.

von Wolfgang (Gast)


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.

von Stefan L. (stefan_l134)


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.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Stefan L. schrieb:
> AREF variiert nur noch zwischen 1,096 V und 1,098 V.

Dann lass es damit gut sein, nennenswert besser wird es nur mit einer 
externen Referenzquelle.

von Stefan L. (stefan_l134)


Lesenswert?

Ja, Du hast recht. Das sind dann eh nur 2 LSB. Damit kann ich sehr gut 
leben. Danke für Eure Hilfe, ihr habt mir sehr weitergeholfen!

von Peter D. (peda)


Lesenswert?

Stefan L. schrieb:
> Besonders seltsam finde ich, dass sich die
> Referenzspannung allein dadurch ändert, dass ich den USB-Stecker
> einstecke

Klingt nach Erdschleife über den Schutzleiter des PC.
Ist Dein Meßgerät oder das Netzteil geerdet?

Auf Arbeit benutze ich immer einen USB-Isolator, damit mir das USB nicht 
alle Messungen versaut.

von Stefan L. (stefan_l134)


Lesenswert?

Der PC ist geerdet, aber die Schaltung und das Messgerät sind 
batteriebetrieben, ohne Erdung.

von ich (Gast)


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

von Gerhard (Gast)


Angehängte Dateien:

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

von Wolfgang (Gast)


Lesenswert?

Gerhard schrieb:
> Front.jpg

> Nach Einfügung von 4x 100nF(siehe Anhänge)

Sind die Kondensatoren angeklebt?

SCNR

von Stefan L. (stefan_l134)


Lesenswert?

Gerhard schrieb:
> Nach Einfügung von 4x 100nF(siehe Anhänge): Uref: 1098mV.

Das sieht gut aus. Ich musste es jetzt mit bedrahteten Kondensatoren 
machen. Welche Baugröße haben die Kondensatoren direkt zwischen den 
Controller-Beinchen?

von Einer K. (Gast)


Lesenswert?

ich schrieb:
> dass der ATMEL Chip vermutlich nicht von Atmel stammt
> sondern ein chinesisches Falsifikat ist.

Iss klar...

Wenn die Chinesen Atmel Chips "Nachkonstruieren", dann machen sie es 
richtig!
z.B. der MD328D 
http://www.inhaos.com/uploadfile/otherpic/DS-MD-328D-V01-20160412.pdf

Mehrere Brüder er hat.
Alle unterscheiden sich erheblich vom Orginal.

von S. Landolt (Gast)


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

von Gerhard (Gast)


Lesenswert?

Ja natürlisch!
Bei einem anderen Board sinds 1085mV. Die interne Referenz ist aber gut 
zu gebrauchen wenn man das weiß. Im Gegensatz zu VCC.

Beitrag "Re: Arduino Nano / ATMEGA328P interne 1,1 V Referenz nicht stabil"
Es sind 0402 SMDs.

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.