welche Spannungsreferenz gewählt ? (es gibt mehr als eine)
was misst du mit dem Multimeter am AREF Pin ?
welcher Arduino ? (es gibt mehr als einen und jeder kann verschiedene
interne REF)
was misst du mit dem Multimeter am Teiler zwischen 44k und 22k nach GND
?
was gibt mess aus ?
meine Glaskugel ist zur Wartung :-)
Filth __ schrieb:> Es kommen falsche Werte raus, stimmt mein Code nicht?
Dann tue nicht so geheimnisvoll und verrate, was du da machst, i.e. was
bei welcher Spannung als Wandlungsergebnis rauskommt und was für
Gerätschaften unter welchen Betriebbedingungen du vor dir hast.
Also am Teiler messe ich 1.61v gegen GND.
VIN gegen GND 4.82v
Es handelt sich um einen Micro Pro 3.3v.
Als Spannung bekomme ich 4.68v, also müsste mess = 483 sein
Filth __ schrieb:> also müsste mess = 483 sein
schon wieder räts du ?
du schliesst aus deiner Berechnung was mess liefern sollte aber prüfst
das nicht durch Ausgabe derselben nach ? und sagst aber auch nicht ob du
die interne AREF nutzt oder die VCC und ob der Chip überhaupt auf 3,3V
oder 5V läuft ?
ich dachte meine Fragen waren verständlich ....
welche Spannungsreferenz gewählt ? (es gibt mehr als eine)
was misst du mit dem Multimeter am AREF Pin ?
was gibt mess aus ?
Das der Chip läuft auf 3.3v.
Mess gibt aus: 489
Wie kann ich rausfinden, was als Spannungsreferenz gewählt wurde?
Welcher ist der AREF pin? Ich glaube der ist beim Pro Mini nicht
rausgeführt.
Filth __ schrieb:> Wie kann ich rausfinden, was als Spannungsreferenz gewählt wurde?
Arduino Hilfe... irgendwo gibts sicher ne Anleitung zu AnalogRead()
Default ist die Betriebsspannung. Bei dir anscheinend 3.3V.
> Welcher ist der AREF pin?
Gab es keine Art von Datenblatt dazu, wo du das Teil gekauft hast?
Sonst hilft auch die Arduino-Website.
http://arduino.cc/en/pmwiki.php?n=Main/ArduinoBoardProMini
Ich vermute jedoch stark, dass du nen China-Nachbau hast
Aber lies doch am besten mal den Thread:
www.mikrocontroller.net/topic/344829
Ist auf der gleichen Seite und scheint ein ähnliches Problem zu haben
...
Filth __ schrieb:> Es kommen falsche Werte raus, stimmt mein Code nicht?
warum *3 ?
1
floatmess=analogRead(A0);
2
floatspannung=(mess*3.3/1023)*3;
denn 489 * 3,3 / 1023 = 1,577 (V)
und mit
Filth __ schrieb:>Also am Teiler messe ich 1.61v gegen GND
sieht das doch gut aus, genauer wird es wenn du mehrere Messwerte
mittelst.
#define READS 3
// (bis 5)
ich lese immer 2^READS Werte und addiere sie in einer unsigned int auf
und shifte dann entsprechend READS nach rechts
definiere dein falsch ! doch nicht etwa die 33mV Abweichung ?
fehlt der Kondi am AREF Pin ?
und rechne dann erst mit mess
Filth __ schrieb:> Welcher ist der AREF pin? Ich glaube der ist beim Pro Mini nicht> rausgeführt.
Dann nimm dir einfach das Datenblatt vom Prozessor (je nach Version von
deinem Board: ATmega168 oder ATmega328) und guck nach, welche der
Aref-Pin am µC ist. Wenn da ordnungsgemäß ein Kondensator dran ist,
kannst du da bequem mit deinen Prüfspitzen ran.
Bernhard F. schrieb:> Bei dir anscheinend 3.3V.
Dazu sagt die Arduino Pro Mini Seite
http://arduino.cc/en/Guide/ArduinoProMini
"Please note that there are two versions of the board: one that operates
at 5V (like most Arduino boards), and one that operates at 3.3V. "
Ja, das was am Pin ankommt ist richtig - aber ich möchte eigentlich VCC
messen. Daher der Spannungsteiler - was ich rausbekommen will, ist der
Batteriestand, also die 4.8V
Mike schrieb:> Bernhard F. schrieb:>> Bei dir anscheinend 3.3V.>> Dazu sagt die Arduino Pro Mini Seite> http://arduino.cc/en/Guide/ArduinoProMini> "Please note that there are two versions of the board: one that operates> at 5V (like most Arduino boards), and one that operates at 3.3V. "
Ähm ich will ja nicht meckern aber:
Filth __ schrieb:> Es handelt sich um einen Micro Pro 3.3v.Filth __ schrieb:> Das der Chip läuft auf 3.3v.
muss ich dazu noch was sagen?
Wobei ich aber dann noch das falsche Board verlinkt hab, was ich zu
meiner Schande gestehen muss.
Und das mal 3... kommt schon.
Er will eine Spannung von 0..5V messen und hat die mit einem
Spannungsteiler im Verhältnis 2:1 verringert auf ein Drittel des
Ursprungswertes.
Grundsätzlich ist das Richtig, da man es tunlichst vermeiden sollte, an
den Pin mehr als die Betriebsspannung anzulegen.
Und jetzt die Quizfrage: Wie kommt man von dem Wert am Abgriff des
Spannungsteilers zu dem Ursprungswert, den er mit dem Hilfsmittel
"Spannungsteiler+A/D-Wadnlung" messen will?
Eine Spannung von 0 .. 1.7V jetzt aber mit dem vollen Messbereich von 0
.. 3.3V AD zu wandeln gibt allein schon dadurch einen größeren
Fehler,dass hier ein Bereich mit abgedeckt wird, der nie erreicht wird.
Gibt ja dann eine gröbere Auflösung.
Ein Spannungsteiler im Verhältnis von 2:3 Würde sich hier schonmal
anbieten. Oder eine andere Referenz aber ich hab jetzt keine Lust die
möglichen aus dem Datenblatt zu ziehen...
Und ja ich hab jetzt gerade Auflösung und Genauigkeit ein wenig in den
gleichen Topf geworfen. Ich kann das gerne auch nochmal detallierter
erläutern, falls es da noch Bedarf gibt.
Joachim B. schrieb:> definiere dein falsch ! doch nicht etwa die 33mV Abweichung ?
Anscheinend ist es doch genau das.
Durch die bescheidene Anpassung vom Messbereich und dann noch den Faktor
3 ist dieser Fehler aber größer als er eigentlich sein müsste.
Uwe S. schrieb:> wieso wird mit /1023 gerechnet ?
Weil die bei Arduino dazu folgendes in ihrem ofiziellen Tutorial sagen.
1
To change the values from 0-1023 to a range that corresponds to the
2
voltage the pin is reading, you'll need to create another variable, a
3
float, and do a little math. To scale the numbers between 0.0 and 5.0,
4
divide 5.0 by 1023.0 and multiply that by sensorValue :
5
6
float voltage= sensorValue * (5.0 / 1023.0);
Es ist doch nicht etwa falsch was das große Arduino sagt? Und zählt
wirklich, was im Datenblatt von Atmel steht? hust
Ein Arduino irrt nie !!!!1einself
Und sollte sich doch mal ein Arduino irren, dann ist irgendwo etwas in
einer lib versteckt, wodurch automatisch die Zeile davor in Kraft tritt
...
Also es stünde noch 1.1v interne Referenz zur Verfügung.
Wenn ich einen 2:3 Spannungsteiler baue, also
5.0v --> 44k --> A0 --> 66k --> GND
Welche Spannung liegt dann bei A0 an?
Filth __ schrieb:> Welche Spannung liegt dann bei A0 an?
Dein Ernst? Versuch es mal mit 3V ...
Natürlich darfst du dann in deiner Rechnung nicht mehr x3 rechnen,
sondern mal 5 durch 3.
Pferdehaar schrieb:> Wie wäre es zuvor mit Grundlagen?
Bis dahin stimm ich dir noch zu.
> Ein "2:3" Spannungsteiler verringert die Spannung um den Faktor 0.666.
Ich meinte "zwei zu drei" und habe das als "2:3" geschrieben... einen
"zweidrittel" Spannungsteiler hätte ich wenn dann mit "2/3" beschrieben
auch wenn das irgendwie seltsam klingt. Das ist so schon richtig.
> 66K:44k teilt auf 0.6 herunter.
Und genau das habe ich vorgeschlagen. Damit er auch noch was messen
kann, wenn seine "max 5V" mal auf bis zu 5,5V hochgehen und nicht gleich
der uC sich beschwert.
Bernhard F. schrieb:> Und genau das habe ich vorgeschlagen. Damit er auch noch was messen> kann, wenn seine "max 5V" mal auf bis zu 5,5V hochgehen und nicht gleich> der uC sich beschwert.
Der wird sich da bestimmt nicht beschweren, sondern einfach etwas Strom
durch seine Eingangsschutzdiode fließen lassen, bis der Spannungsabfall
am oberen Teilerwiderstand so groß ist, dass die Eingangsspannung
unkritisch ist.
> Und genau das habe ich vorgeschlagen. Damit er auch noch was messen> kann, wenn seine "max 5V" mal auf bis zu 5,5V hochgehen und nicht gleich> der uC sich beschwert.
Ein 3.3v uC verträgt doch keine 5v am Pineingang, oder?
bei 66k würde der max Strom bei 5V unter 0,1mA liegen, aber der Atmel
würde die über seine internen Schutzdioden nach VCC abführen und selber
verbrauchen sprich die VCC veniger belasten. Ich denke auch das
klappt.Eigntlich muss am 66k nur 5V-3,6V = 1,4V / 66k Ohm, oder anders
gesagt 1,4^2/66k an Leistung im Vorwiderstand "vernichtet" werden
Hi
>Ein 3.3v uC verträgt doch keine 5v am Pineingang, oder?
Kommt auf den Strom an. Es gibt eine App-Note von ATMEL an der ein
AVR-Eingang an 230V Wechselspannung liegt.
Für ADC-Eingänge wird von ATMEL eine Eingangsimpedanz von <=10k
empfohlen.
MfG Spess
Wolfgang schrieb:> Der wird sich da bestimmt nicht beschweren, sondern einfach etwas Strom> durch seine Eingangsschutzdiode fließen lassen, bis der Spannungsabfall> am oberen Teilerwiderstand so groß ist, dass die Eingangsspannung> unkritisch ist.
Hab ja auch nicht behauptet, dass er gleich abraucht.
Ich würde trotzdem den Spannungsteiler nicht genau auf die Grenze
auslegen.
So präziese sind die Widerstände auch nicht, dass die 5V Exakt auf 3,3V
geteilt werden. Mit E48 komme ich im Worst-Case schonmal auf 3,388V und
das liegt schon deutlich über der Referenz. Dann kommt noch die
Genauigkeit des A/D Wandlers dazu... Und die 5V sollen doch wohl noch
sicher detektiert werden und nich als "allers größer als 4,9V ist eh nen
0x03FF" untergehen.
Und dann kommt es ja immer noch darauf an, was die Bastelkiste
hergibt...
Von daher bleibe ich erstmal bei dem Vorschlag, den Spannungsteiler im
Verhältnis 2 zu 3 auszulegen. Auch wenn das Argument "um den µC zu
schützen" auf wackligen Beinen steht.
Filth __ schrieb:> Ein 3.3v uC verträgt doch keine 5v am Pineingang, oder?
Hier ging es aber auch um 5V Eingang an deinem Spannungsteiler wie im
Eingangspost beschrieben???
Bernhard F. schrieb:> Hier ging es aber auch um 5V Eingang an deinem Spannungsteiler wie im> Eingangspost beschrieben???
und somit wird die 5V über den Vorwiderstand nie zum A Pin gelangen
und selbst wenn die geteilte Spannung über 3,3V liegt dauert es ewig bis
es kritisch für dan A Pin wird
spess53 schrieb:> Kommt auf den Strom an. Es gibt eine App-Note von ATMEL an der ein> AVR-Eingang an 230V Wechselspannung liegt.
Nicht der Eingang selbst, sondern ein Widerstand vorm Eingang ;-)
Du meinst die AVR182: Zero Cross Detector
http://www.atmel.com/images/doc2508.pdf
Hallo Filth,
Filth __ schrieb:> Also am Teiler messe ich 1.61v gegen GND.> VIN gegen GND 4.82v> Es handelt sich um einen Micro Pro 3.3v.> Als Spannung bekomme ich 4.68v, also müsste mess = 483 sein
Meiner Meinung nach ist Deine Schaltung genau richtig und Deine
Ergebnisse doch auch. Zwischen 4.68 und 4.82 liegen ja nur 3%
Abweichung. Das ist doch schon sehr genau!
Wenn du noch genauer messen willst, dann ist das sehr sportlich. Du
bräuchtest z.B:
*) Ein hochpräzises Multimeter zur Kontrolle. Wie absolut genau ist Dein
jetziges?
*) Genaue Widerstände im Spannungsteiler (die ihren Widerstand auch
wenig mit der Temperatur ändern), zum Beispiel 0.1% oder genauer.
*) Eine präzise Spannungsreferenz. Deine jetzige Spannungsreferenz ist
VCC, also die Ausgangsspannung des Linearreglers auf Deinem Micro Pro
oder Pro Mini oder was-auch-immer Du jetzt für einen Arduino hast. Das
ist aber bei weitem keine Präzisionsreferenz. Und auch die interne
1.1V-Referenz des Atmega328P kann laut Datenblatt irgendwo zwischen 1.0V
und 1.2V liegen, kann also schon mal 10% Fehler erzeugen. Ein MCP1525
hat auch nur ±1% Genauigkeit. Mit einer LM4040B (siehe
http://www.skillbank.co.uk/arduino/measure.htm) könntest Du anscheinend
±0.2% erreichen.
*) Die maximale absolute Genauigkeit des ADC des Atmega328P liegt
typisch bei ±0.2%. Um diese Genauigkeit zu erreichen sind aber einige
Massnahmen nötig. So sollte zum Beispiel eine separate Ground Plane
unter dem Analogteil des IC vorgesehen werden, der Analog Noise
Canceller sollte benutzt werden, und noch andere Kleinigkeiten. Siehe
Atmega328P Datenblatt, Abschnitt 24.6. Das wird bei Deinem Pro Mini aber
eher nicht der Fall sein.
*) Dicke Kupferkabel und -leitungen.
Oder hab ich Dich falsch verstanden?
LG, Sebastian
Hallo!
Das Messen von VCC geht bei den (meisten) ATmegas auch intern ohne
zusätzliche Hardware. Der Code unten funktioniert zumindest bei
ATmega168 328 1280 / 2560. Wahrscheinlich gehts auch mit dem ATmega8
(kenn sein Datenblatt nicht auswendig).
1
int getBandgap(void) // Returns actual value of Vcc (x 100)
Hallo Udo,
uxomm schrieb:> Das Messen von VCC geht bei den (meisten) ATmegas auch intern ohne> zusätzliche Hardware. Der Code unten funktioniert zumindest bei> ATmega168 328 1280 / 2560. Wahrscheinlich gehts auch mit dem ATmega8> (kenn sein Datenblatt nicht auswendig).
Der OP will ja gar nicht VCC messen. Er will VIN messen, also die (max.
5V) Speisespannung seines Arduino Pro Mini vor dem 3.3V-Linearregler.
Und das schafft er auch schon, mit sodala Genauigkeit, mit seinem
Spannungsteiler.
Was der OP jetzt noch genau darüber hinaus will ist mir allerdings etwas
unklar ...
LG, Sebastian