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
intsensorValue=0;
2
3
voidsetup(){
4
analogReference(INTERNAL);// 1,1 V internal reference
5
}
6
7
voidloop(){
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
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.
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.
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).
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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
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
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?
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.
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: