Hallo zusammen, hab einen ATmega8, der mir in meiner Stromsenke Parameter wie Spannung und Strom misst. (über den ADC) Der Mega läuft intern mit 8MHz, ich wandle mit 10 Bit und AREF führe ich extern zu (2.1V). Das alles funktioniert einigermassen, nur: die ADC-Werte ruckeln ganz schön ordentlich in der Gegend herum. Ich bilde per Software schon Durchschnitte, damit die Werte stabiler werden, hilft aber net so gross. Die ADC-Eingänge weisen saubere Gleichspannung auf, mit dem Oszi nichts zu messen. Ist das ein Problem des ADC (Konfiguration) oder etwas anderes? Herzlichen Gruss Mario
Hmm, die Werte zeige ich nicht direkt an, aber der Strom schwankt so um die 100-200mA. UND: Wenn kein Strom fliesst (0V am ADC-Eingang), dann zeigt er mir einen Strom von 0.4A an... Sonst (über 1.5A) stimmt der Strom net schlecht. Hab schon andere Kanäle probiert ==> nix, genau das Gleiche. Die Spannung hingegen schwankt nur sehr schwach und stimmt ziemlich exakt. Herzlichen Gruss Mario
Falls deine Quellen hochohmig sind, solltest du Kondensatoren (10nF) an die Eingänge schalten, damit der kurze Stromstoß während Sample&Hold abgefangen werden kann. Dann solltest du für AGND eine eigene Masseleitung haben, da sonst die Stromspitzen auf der Digitalmasse Spannungsabfälle verursachen können. Ähnliches gilt für AVcc, da möglichst mit Drossel. Abblock-Kondensatoren (100nF Keramik) an Vcc und AVcc sollten auch nicht fehlen. Ich nehme mal an, dass die Taktfrequenz des ADC auch zwischen 50kHz und 200kHz liegt? ...
Die Taktfrequenz des ADC sollte stimmen. Aber: ich hab grad nochmals das Oszi drangehängt. Am Eingang vom Temperaturfühler hats ein kleines Rauschen dahinter (lange Leitungen) Aber: Das ist mein stabilster Wert! Die Spannungs- und Strommesseingänge zeigen rein gar nix an auf dem Oszi, absolut auf 0. Und trotzdem hab ich anscheinend 0.4A Strom. Die Software stimmt auch absolut. Herzlichen Gruss Mario
Nu verrate endlich mal ein paar Date. Beispielsweise über den Messwiderstand und was für Spannungswert da gemessen werden.
Der Stromshunt ist ein 0.01 Ohmer. AREF=2.1V. Der Eingang liegt am einen Ende des Shunt, die Masse am anderen. Abblockkondensatoren sind drin (für die Versorgung) Der ADC hat keine eigene Masseleitung. Am Eingang für den Strom hängt noch ein Eingang eines OpAmps. Das könnte auch eine Fehlerquelle sein, aber da ich am ADC-Eingang nix messen kann und trotzdem einen Wert kriege ist trotzdem strub...
0,4A x 0,01 Ohm => 4mV Messfehler. Auflösung des ADC ist ca. 2mV. Ungenaugkeit je nach Takt, Beschaltung und und Messweise mind. 1,75..3 LSBs, also ca. 4-6mV.
Ist 2,1V AREF nicht zu wenig? Mussten das nicht min. 2,5 V sein?
Nö, 2V ist Minimum AREF. Ah, ok, dann ist der hohe Offset-Wert ok. Herzlichen Gruss und Danke Mario
Ich denke, wenn ich jetzt alles richtig gelesen habe, dass man einen Hardware-Fehler ausschließen kann, so ergaben es die Oszi-Untersuchungen. Vielleicht stellst Du uns Deine Programm-Code zur Verfügung, damit wir nicht "orakeln" müssen? Kleiner Tipp: Da Du sicherlich mehrere ADC-Eingänge per ADC auswertest, kannst Du problemlos einen Kanal (nur einen, nicht alle !!!)intern auf VBG oder auf intern GND schalten lassen. Wie sieht dann das Ergebnis aus?
Bist Du sicher, daß Dein GND Potential OK ist ? Der ADC hat zwar einen eigenen Masseanschluß, relevantes GND Potential ist aber dennoch immer Gesamt-GND der Schaltung. Alternative: Differentialmessung mit 2 ADC Eingängen. Gruß, Marcus
Eine saubere Masse am ADC ist enorm wichtig. Analogmasse sollte nur an einem Punkt (Versorgung) mit der Digitalmasse verbunden werden (Sternschaltung), außerdem muß die Analogmasse "stromfrei" sein, sonst zieht´s das Bezugspotential sonstwohin. Der ADC braucht zudem ein L/C-Filter in der Vcc. Bei manchen Anwendungen kann auch eine Differenzmessung über 2 Analogeingänge gute Stabilität bringen (der Fehler subtrahiert sich weg).
Magst Du hier mal schmökern? Vlt ist da was bei, hatten wir gerade erst: http://www.mikrocontroller.net/forum/read-1-325540.html Gruß AxelR.
Ok, vielen Dank! Aber noch ne Frage: Macht es etwas, (Hardware) wenn die Spannung am ADC-Eingang höher ist als AREF, aber kleiner als 5V. Oder wird der einfach den Wert 1024 rausgeben? Herzlichen Gruss Mario
Steht im Datasheet: ...single channels that exceed VREF will result in codes close to 0x3FF...
Sorry, sollte natürlich heißen 'single ended channels' (S. 198 im Datenblatt)
Aaaaaaah! Ich krieg die Krise mit Datenblättern von Controllern.... Da steht alles an einem anderen Ort... Naja, ich werds auch noch lernen.. Herzlichen Gruss Mario
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.