Hallo Leute! Folgendes Problem: Ich habe zuerst eine AD -Wandlung mit der Versorgungsspannung und GND als Referenzspannungen - also so wie es standardmäßig beim PIC16f877 geschieht. Dabei wurde z.B. der Eingangswert 740mV in ca. 148 binär gewandelt (bei 10bit) (Vref+ - Vref-)/1024 =5V/1024=ca. 5mV 740mV / 5mV = 148 Diese AD -Wandlung stimmt also noch! Als nächstes legte ich an Pin 3 von Port A (der Eingang für positive Referenzspannung)2,56V an. Die Referenzspannungsquelle habe ich als Dateianhang dazugegeben!!!! Nun müsste der Eingangswert von 740mV so ca. 300 binär ergeben oder? (Vref+ - Vref-)/1024 =2,56V/1024=ca. 2,5mV (als Vref- wurde GND verwendet). 740mV / 2,5mV=296 Bei der AD -Wandlung ergibt sich jedoch ca. 40 als Binärwert ,also viel zu niedrig? Weiß jemand an was das liegen könnte?? mfg
Ohne pickilante Ahnung würde ich auf 8 bit Auflösung tippen. Addiere 256 und Du bekommst genaue 2 x 148 = 296 = 256+40, wenn ich mich nicht verrechnet habe.
Ja aber ich frag mich warum die Auflösung durch das Anlegen einer Referenzspannung kleiner wird? Naja vielleicht ist das ja der Normalfall. danke
Hallo, hast du ein Oszi um die Versorgungsspannung für den ADC zu prüfen, evtl. bricht sie kurz ein oder da sind noch Spannungsspitzen, wenn die Mux auf einen Kanal umschaltet oder die Messung gerade beginnt. Bei den AVR's wird im Datenblatt empfohlen einen Tiefpass bestehend aus kleiner Spule und Kondensator zu nehmen. Habe mal ein Bild reingesetzt schaus dirs mal an könnte dir helfen. Evtl. reicht auch schon ein Kondensator. Als Typ wird ein Tantalkondnsator empfohlen und die Referenzspannung mit einem 1µF Elko zu Puffern kann auch nichts schaden so bleibt die wenigsten stabil.
Habe leider kein Oszi bei der Hand, aber hab das mal mit dem Kondensator ausprobiert --> gleiches Ergebnis wie vorher! mfg
Hallo, mach mal den Kondensator sowohl zw. AVCC-AGND als auch zw- AREF-AGND, möglichst nah an die Pins. Bau mal zum testen einen normalemn Spannungsteiler um auf deine 2,56V zu kommen. Wähle den ersten Wiederstand etwas kleiner so um die 400 Ohm, damit die Spannung auch belastbar bleibt. Manche AVR können doch intern 2,56V an den AREF geben, dann würde sich das ganze erübrigen. Außerdem gibt es das Problem das die gängigen Stabilisierer (LM7805) bei geringer Last ca. 5,1Volt ausspucken und erst bei höherer Last korrekt auf 5,0V regeln, evtl. tut das deine Referenzspannungsquelle auch etwas beeinflussen.
Bevor ich an der Hardware rumspielen würde, würde ich zunächst das High-Byte beachten.
Ohne Dein Programm gesehen zu haben, meine ich, daß man für 10 Bit zwei Stück Bytes braucht: low + high. Mir scheint, Du verwendest nur das low-Byte, womit man keine größeren Werte als 255 darstellen kann.
Okay ich hab mal das Programm als Anhang dazugegeben. Okay vielleicht wandelt er deswegen so komisch -aber warum ist es dann zuvor bei 5V als Referenzspannung gegangen??? da hat er doch mit 10 bit gewandelt, warum sollte er es jetzt nicht mehr machen??? kann es vielleicht sein, dass ich den Eingang den ich für die Referenzspannung verwende irgendwie setzen muss oder ---keine ahnung!!! mfg
hab jetzt versucht einen neuen PIC zu verwenden, hab als Datentyp unsigned int probiert, hab eine andere Referenzspannungsquelle probiert - schon langsam habe ich keine idee mehr? Hat irgendjemand schon einmal eine ad -wandlung mit referenzspannungen gemacht???
Tja, einfache erklärung: 178 lässt sich mit 8bit darstellen, 296 eben nicht mehr. Deswegen, solltest du das high byte beachten;) Damit du sicher seien kannst, das richtige zu verwenden nimm uint16_t oder falls es bei avr anders sein sollte das äquivalent dazu. Und jetzt noch das "Phänomen": 296: 1 0010 1000 bei blos 8 bit: 0010 1000 = 40 -> somit wäre ja wohl eindeutig klar was da abgeht. set_adc_channel(0);// EingangA.0 als Eingang auswählen tempwert = Read_ADC(); Wieso schreibst du das als funktionen? Das kostet dich ne menge ausführungszeit, für das was in der Funktion dann getan wird. tempwert = ADCL; tempwert += ADCH; dass sollte alles sein, was du brauchst. Dafür ne eigene Funktion ist doch etwas übertrieben. mfg Flo
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.