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/FQZR0UVIIHRL4UQ.MEDIUM.jpg) 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
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
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?
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.
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
Zu meiner Entschuldigung es steht nicht in dem Datenblatt drin das Reichelt zu verfügung stellt :( http://cdn-reichelt.de/documents/datenblatt/A200/DS_AT168A_PA_328_P.pdf
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-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf
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.
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.
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
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.
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
achja und bevor ich es vergesse bei External muss beachtet werden das die Spannung: 0V < AREF < 5V ist.
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.
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.
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?
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.
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.
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.
ja, für hell/dunkel reicht es allemal und mehr gibt ein LDR nicht her...
Mike schrieb: > ok was muss ich den dabei in der Schaltung beachten? Die 100nF zwischen VCC und AVCC gegen Gnd nicht vergessen!
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.
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?
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.
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 :-)
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.
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
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.
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 ?!
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.
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.
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
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
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_connection.png eine Spule zwischen VCC und AVCC
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.
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.
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 :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.