mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA 328 - AREF wiedersprüchlich


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mal eine blöde Frage zum AREF Pin beim ATMEGA 328P PU bzw. AU.
Und zwar baue ich ein kleines Batterie betriebenes Gerät bei dem ich ua. 
auch einen Analog Pin zur "helligkeitsmessung" benutzen will.

Nun habe ich aber beim entwurf meines PCBs das Problem das ich auf 
wiedersprüchliche Quellen bezüglich der verwendung des Analog Referenz 
Pins stosse so wird er bei Arduino.cc direkt auf VCC geschaltet (siehe 
hier: https://www.arduino.cc/en/uploads/Main/arduinobb_10.jpg) in vielen 
Quellen wird er gar nicht geschaltet und sogar davon abgeraten (zb. 
hier: 
https://cdn.instructables.com/FQZ/R0UV/IIHRL4UQ/FQ...) 
und hier bei mikroconroller habe ich sogar schon gelesen das er auf GND 
geschaltet werden soll (siehe hier: 
Beitrag "AREF = AVCC ????") und leider ist das 
Datenblatt mit der Aussage "AREF is the analog reference pin for the A/D 
Converter." (Das ist tatsächlich alles was dazu drin steht) auch nicht 
wirklich hilfreich. Wie habe ich den denn nun zu verwenden? :S

Autor: Alexander S. (alesi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Wie habe ich den denn nun zu verwenden?

Das ist z.B. hier unter "Referenzspannung AREF" beschrieben:

    https://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, wenn ich diesen Satz "Wenn eine Referenz in Höhe der 
Versorgungsspannung benutzt werden soll, so ist es besser, dies über die 
interne Referenz zu tun. Außer bei anderen Spannungen als 5V bzw. 2,56V 
gibt es eigentlich keinen Grund, an AREF eine Spannungsquelle 
anzuschließen." Richtig verstanden habe heisst das also ich kanns mir 
sparen den AREF Pin zu belegen, denn meine Anwendung soll komplett auf 
4,5 Volt (3 AAA Zellen) laufen. Ist das korrekt?

Autor: Torsten C. (torsten_c) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> und hier bei mikroconroller habe ich sogar schon gelesen das er auf GND
> geschaltet werden soll (siehe hier: Beitrag "AREF = AVCC ????")

Wo genau? Ich finde die Stelle nicht.
Wenn Du AREF benutzen willst, soll ein Kondensator an Masse.

Mike schrieb:
> Wie habe ich den denn nun zu verwenden?

Du kannst wählen:
1.) intern (2,56V)
2.) extern über den Pin AREF
3.) AVCC with external capacitor at AREF pin

Steht auch in dem anderen Thread.

Z.B. ist ein TL431 an AREF vielleicht genauer als die internen 2,56V.

Autor: Werner P. (wpfundstein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht doch im Datenblatt:

Table 24-3. Voltage Reference Selections for ADC

REFS1 REFS0 Voltage Reference Selection
0     0     AREF, Internal Vref turned off
0     1     AVCC with external capacitor at AREF pin
1     0     Reserved
1     1     Internal 1.1V Voltage Reference with external capacitor at 
AREF pin

external capacitor immer nach GND

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu meiner Entschuldigung es steht nicht in dem Datenblatt drin das 
Reichelt zu verfügung stellt :( 
http://cdn-reichelt.de/documents/datenblatt/A200/D...

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Zu meiner Entschuldigung es steht nicht in dem Datenblatt drin das
> Reichelt zu verfügung stellt :(
Das ist auch nicht das Datenblatt, sonder nur ein 
Überblick/Zusammenfassung, auch Summary genannt.

Das Datenblatt gibt es bei Atmel:
http://www.atmel.com/images/Atmel-8271-8-bit-AVR-M...

Autor: ASM Superprofi (Gast)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Hallo Mike,

die Frage ist nicht blöd. Es hat halt fast niemand wirklich Ahnung und 
sagt lieber irgendwas falsches statt einfach mal die Fresse zu halten. 
Sowas erkennt man immer gut an Beiträgen mit Ratschlägen ohne 
Begründung. Argumente wie "das macht man halt so!" runden das Bild vom 
Vollidioten dann ab. Meistens gepaart mit Beleidigungen, damit man bloss 
nicht nachfragt, sonst könnte ja rauskommen, dass man KEINE AHNUNG HAT!

Ich fasse mich kurz, auch wenn man zum Thema ADCs ein Buch füllen kann.

Wie GENAU willst du messen? Da du offensichtlich gerade erst einsteigst, 
wirst du überrascht sein, dass es in der Welt ausserhalb des Computers 
keine künstlichen Grenzen gibt.

Ich rate mal, dass es eigentlich völlig Wurscht ist, solange irgendwie 
ein plausibler Wert bei rauskommt. Wenn dem so ist, dann lass AREF leer 
und schalte es intern. Selbst den Kondensator kannst du dir sparen. Du 
wirst immernoch Messungen erhalten.

Ist dir das ganze dann zu ungenau, musst du halt ARBEITEN. Also 
Kondensator dran packen, neuer Versuch. Immernoch zu zappelig? Dann ist 
VCC zu versaut, also musst du die Spannung entkommeln und "reinigen". 
Das macht man mit Beads und Kondensatoren. Immer noch zu ungenau? Dann 
nimmt man einen externen ADC, den man professionell abschirmt. Externe 
ADCs gibts ab 50 Cent, du kannst aber auch gerne 3000 Euro für einen 
High-End ADC ausgeben.

Fazit: Eine ZAHL bekommst du immer (ausser dein Display ist kaputt.) Was 
genau die Zahl aussagt, steht auf einen anderen Blatt. Taste dich halt 
ran vom einfachsten Weg. Meistens wird dir die Genauigkeit ausreichen.

Kaputt machen kannst du übrigens nichts.

Autor: ASM Superprofi (Gast)
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Ach und wenn du irgendwann mal sagst "SO, jetzt lern ich ADC!" dann 
plane mal so ein Jahr ein. Das Thema ist unverschämt umfangreich und 
kompliziert.

Komplexität = Messgenauigkeit * Messgeschwindigkeit

Schonmal ein digitales Multimeter geöffnet? Eigentlich ist das auch 
nichts anderes als eine reine ADC-Maschine.

Autor: ASM Superprofi (Gast)
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Grad gesehen: Der ADS5474MHFGV ist für knapp 9000 Euro zu haben hrhrhr

Autor: Hansi (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
PLONK!

Autor: Mike (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo ASM Superprofi,

ich danke dir vielmals für deine Antwort (die erste die mir wirklich 
geholfen hat) ich habe nun eine Kondensator mit 100nF zwischen 
geschaltet um es ein wenig genauer zu kriegen (bzw. mal auszuprobieren 
wie groß die auswirkungen mit und ohne für mich sind :) ) Ich danke dir 
auf jeden Fall sehr :-D

Autor: MWS (Gast)
Datum:

Bewertung
5 lesenswert
nicht lesenswert
Mike schrieb:
> Hallo ASM Superprofi,

Superschwätzer trifft Ahnungslosen.

Erkennt man daran, dass zur ursprünglich gestellten Frage, also über 
Sinn, bzw. Unsinn AREF fest auf VCC zu legen, nichts beantwortet wird.

Und der TE findet solch eine Ansammlung von aneinandergereihten Worten 
auch noch gut, daran erkennt man den Ahnungslosen, die umfangreichste 
Antwort beeindruckt, sei sie auch noch so inhaltsleer.

Sicher schon tausendmal geschrieben und so nachzulesen:

Bei den klassischen 8-Bit AVRs legt man außer zur Glättung über einen 
Kondensator oder zum Anschluss einer externen Referenz den AREF-Pin 
nirgendwohin, denn AREF ist dort direkt mit dem Referenzeingang des ADC 
verbunden.

Daraus ergibt sich:

- Wird AREF auf GND gelegt, bekommt der ADC 0 Volt als Referenz und kann 
nicht arbeiten
- AREF auf VCC legen geht, aber
   a) kann das genauso intern über Register geschehen
   b) nimmt man sich die Option der internen Referenz
   c) wenn trotzdem die interne Referenz gewählt wird, wird diese 
kurzgeschlossen

Vier Gründe warum manche Entwicklungsboards den AREF-Pin extern auf VCC 
legen:
   1) schlechtes Design
   2) schlechtes Design
   3) schlechtes Design
   4) der ADC bekommt so auf jeden Fall eine Referenzspannung, auch wenn 
der Anwender vergisst eine auszuwählen.

Bei den XMegas wurde das Design geändert, da sorgt ein Multiplexer 
dafür, dass einer der Referenzeingänge des MUX auf den Referenzeingang 
des ADC gelegt wird, die interne Referenz kann damit nicht mehr 
kurzgeschlossen werden.

Das ist übrigens alles, wie auch beim ATM328, aus den Blockschaltbildern 
zum ADC im Datenblatt zu entnehmen, man muss nicht einmal Englisch dafür 
können, nur Bildchen ansehen muss klappen.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, ich glaub ich kriegs so langsam zusammen:

ich hab jetzt den Aref analogReference(DEFAULT); gesetzt.

Damit benutzt er 5V als internen Referenzwert und damit kann ich darauf 
verzichten den AREF auf VCC zu schalten und sollte nur noch einen 100nF 
Kondensator zwischen Aref und GND setzen um diesen zu "beruhigen" (Mir 
fällt grad kein passenderes Wort ein). Damit erreiche ich zwar keine 
große Genauigkeit die aber für mich in diesem Fall auch nicht nötig ist.

Sprich:

GND O-----||-----O AREF
        100 nF

Wenn die Genauigkeit eine größere Rolle spielt muss ich 
analogReference(EXTERNAL) setzen und zwischen GND und VCC einen 
Spannungsteiler setzen und dazwischen die Spannung für AREF "abgreifen".

Sprich:

GND O-----[R0]---+---[R1]-----O VCC
                 |
                 O
               AREF

Dabei gilt: R0 = R1 = xy Ohm

Das ist zwar genauer aber auch "Aufwändiger".

Ist das jetzt (zumindest halbwegs) richtig? :S

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja und bevor ich es vergesse bei External muss beachtet werden das 
die Spannung: 0V < AREF < 5V ist.

Autor: Mitlesa (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mike schrieb:
> Wenn die Genauigkeit eine größere Rolle spielt muss ich
> analogReference(EXTERNAL) setzen

.... und eine genaue externe Referenz anschliessen, und nicht
so einen Käse wie einen Spannungsteiler der die ungenaue
Versorgungsspannung als "Referenz" benutzt.

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> und zwischen GND und VCC einen
> Spannungsteiler setzen und dazwischen die Spannung für AREF "abgreifen".

Wie soll das genauer sein, als die Versorgung?
Nee...
Ein Irrtum.

Wenn du es genauer willst, nimm die interne Referenz.
Und sehe eine "Kalibrierung" vor.

Noch genauer wirds wohl mit einer externen Referenz. Aber damit ist kein 
primitiver Spannungsteiler gemeint.

: Bearbeitet durch User
Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok denn war mein allererster Ansatz also doch nicht so falsch, nur was 
ist der unterschied zwischen Internal und Default, ja schon klar Default 
referenz ist 5V bzw 3.3V und Internal 1.1V  (siehe hier 
https://www.arduino.cc/en/Reference/AnalogReference) aber was mach das 
für mich als Anwender am ende für einen Unterschied?

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachdem man jetzt garnicht weiß, wie die Helligkeit gemessen werden 
soll, ist ein diskutieren über die Genauigkeit der Referenz eigentlich 
hinfällig. Es nütz ja nix, wenn (vermutlich) der Fotowiderstand als Teil 
eines Spannungsteilers an VCC liegt und der adc mit interner Referenz 
mist.

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist momentan mein Schaltplan :S

Autor: G. H. (schufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal ganz verallgemeinert:

internal: ist halt zumindest eine "Referenz" deren Stabilität und 
Genauigkeit im Datenblatt beschrieben (eingegrenzt) ist.

default: kann alles sein. Wenn du einen einfachen 7x05 verwendest und 
lange Leitungen hast, bzw. der Regler überlastet/unterfordert ist, wird 
sich sowohl die Stabilität als auch die Genauigkeit nur relativ zur 
Spannungsversorgung "vermuten" lassen.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok was muss ich den dabei in der Schaltung beachten?

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Das ist momentan mein Schaltplan :S

So wie ich sehe, hängt dein Spannungsteiler der Helligkeitsmessung an 
VCC, sodass du als Referenz auch VCC wählen solltest.

Autor: G. H. (schufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, für hell/dunkel reicht es allemal und mehr gibt ein LDR nicht her...

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> ok was muss ich den dabei in der Schaltung beachten?

Die 100nF zwischen VCC und AVCC gegen Gnd nicht vergessen!

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok dh. ich sollte es doch wie beim Arduino Breadboard Tutorial machen 
und AREF direkt auf VCC schalten und dann benötige ich nicht einmal eine 
Angabe im Quellcode wenn ich das so noch richtig im hinterkopf habe.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael K. schrieb:
> Die 100nF zwischen VCC und AVCC gegen Gnd nicht vergessen!

du meinst also zwischen VCC und GND einen 100nF und AVCC und GND einen 
100nF Kondensator?

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der pin VCC und der pin AVCC sehr nahe beieinander liegen, reicht 
mMn. ein 100nF.
Ich würde die Einstellung im code vornehmen, dann kann nicht 
versehentlich die interne Vref kurzgeschlossen werden. Kurzschluss ist 
nie gut, wenn auch hier vielleicht nicht schädlich.

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
also sieht das jetzt so für mich aus + in Code 
analogreference(internal).

Wenn das jetzt wirklich so stimmt dann vielen, vielen Dank für die 
anstrengende Mühe die ich gemacht hab und ihr so geduldig ertragen habt 
:-)

Autor: Jim M. (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Ist das jetzt (zumindest halbwegs) richtig? :S

Nö. Die Variante mit dem Kondensator ist wesentlich weniger störanfällig 
als die mit dem Spannungsteiler, wo auch höherfrequente Störungen auf 
VCC voll auf AREF durchschlagen. Die würde der Kondensator nämlich glatt 
bügeln.

Den Kondensator braucht man auch falls man AREF auf die interne 
(Bandgap) Referenz einstellen möchte. Die ist oft wesentlich genauer als 
VCC. Die Schaltung mit dem Kondensator erlaubt Dir maximale 
Flexibilität.

Strom einspeisen würde man in AREF nur mit externem Referenzbaustein, 
d.h. einer viel präzieseren Spannungsquelle als VCC. Das sieht man bei 
dem grottligen 10-Bit ADC aber praktisch nie, weil man dann meistens 
auch einen externen ADC braucht.

Autor: Jim M. (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> also sieht das jetzt so für mich aus + in Code
> analogreference(internal).

Genau so sollte man es nicht machen. Alle VCC Störungen schlagen voll 
auf AREF durch, und man kann die interne Referenz nicht einschalten.

: Bearbeitet durch User
Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> also sieht das jetzt so für mich aus + in Code
> analogreference(internal).
>
> Wenn das jetzt wirklich so stimmt dann vielen, vielen Dank für die
> anstrengende Mühe die ich gemacht hab und ihr so geduldig ertragen habt
> :-)

Den Aref nicht mit AVCC oder VCC verbinden, nur 100nF gegen Gnd.
An VCC und AVCC einen 100nF dran.
Im code angeben 'ref=AVCC', wie das beim Arduino-c geht, weiß ich nicht.

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok der Satz von Michael

Michael K. schrieb:
> So wie ich sehe, hängt dein Spannungsteiler der Helligkeitsmessung an
> VCC, sodass du als Referenz auch VCC wählen solltest.

hatte mich dazu gebracht also hab ich jetzt wieder einen Kondensator 
zwischen AREF und GND und einen "neuen" zwischen AVCC/VCC und GND.

Damit und mit analog refrenz auf internal sollte es denn jatzt aber 
klappen ?!

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Damit und mit analog refrenz auf internal sollte es denn jatzt aber
> klappen ?

Wenn damit nicht die 1,1V gemeint sind, dann ja.

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> ok dh. ich sollte es doch wie beim Arduino Breadboard Tutorial machen
> und AREF direkt auf VCC schalten und dann benötige ich nicht einmal eine
> Angabe im Quellcode wenn ich das so noch richtig im hinterkopf habe.

Genau diesen Unsinn habe ich bei den ersten BASCOM-Tutorials beobachtet 
und ist vielfach auch heute noch so. Die Beispielprogramme funktionieren 
nur wenn AREF mit VCC verbunden ist.
Bei vielen Arduino Tutorials ist es das gleiche.
Dieser Unsinn wird sich daher nie mehr ausmerzen lassen.

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werner P. schrieb:
> REFS1 REFS0 Voltage Reference Selection
> 0     0     AREF, Internal Vref turned off
> 0     1     AVCC with external capacitor at AREF pin
> 1     0     Reserved
> 1     1     Internal 1.1V Voltage Reference with external capacitor at
> AREF pin
>
> external capacitor immer nach GND

Die zweite Option

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok denn muss ich nach Arduino logik auf Default und nicht auf internal 
;) https://www.arduino.cc/en/Reference/AnalogReference dann hab ich 5V 
also referenz

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Damit und mit analog refrenz auf internal sollte es denn jatzt aber
> klappen ?!

besser wäre

https://www.mikrocontroller.net/wikifiles/9/9e/Adc...

eine Spule zwischen VCC und AVCC

Autor: Michael K. (tschoeatsch)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mike schrieb:
> ok denn muss ich nach Arduino logik auf Default und nicht auf internal
> ;) https://www.arduino.cc/en/Reference/AnalogReference dann hab ich 5V
> also referenz

Das schaut gut aus, bei dir sind's halt keine 5V sondern nur deine 
Batteriespannung, die langsam weniger wird, aber ebenso am 
Spannungsteiler mit dem LDR. Somit ist bei gleichbleibender Helligkeit 
auch ein gleichbleibender adc-Wert vorhanden, selbst wenn die Batterien 
schwächer werden.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super vielen Dank für eure Hilfe und Geduld! :-D

Autor: Holger L. (max5v)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denk bitte daran, was Michael K. bereits erwähnt hatte, die Spannung 
einer AAA Zelle beginnt bei ~1,5V und endet bei ~0,8V. Was ungeregelt 
wie es bei dir der Fall sein sollte (3xAAA) ~4,5V - ~2,4V bedeutet. 
Solange AREF der Versorgungsspannung folgt ist es Messtechnisch kein 
Problem, bei anderen Komponenten in der Schaltung unter Umständen 
allerdings schon.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja an das Problem hab ich auch schon gedacht und dafür einen USB 
Anschluss verplant um ggf. auch ein große USB Power bank nutzen zu 
können ;) aber ich has auch schon mal bis 3V getestet und da lief 
zumindest noch alles einwandfrei :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.