Forum: Mikrocontroller und Digitale Elektronik AD-Wandler zeigt falsche Ergebnisse an


von David P. (david_)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!
Eine Frage beschäftigt mich schon den ganzen abend. Bitte den 
angehängten Programmcode ansehen. Es liegen Null Volt am ADC-Eingang. 
Wenn ich im Mainprogramm Liefere_UI_Paar() aufrufe bekomme ich einen 
Wert um die 23 bis 28 Mikrovolt angezeigt. Der Wert entsteht bei einem 
gewissen umrechnungsfaktor.
Ich schaue mir den Wert über die serielle schnittstelle an.

Rufe ich jedoch diese Funktion aus: Liefere_Ungemitteltes_UI_Paar(), 
dann wird mir tatsächlich Null vol auch angezeigt.
Ich weiß jedoch nicht wieso ?!

Noch ein Hinweis:

Die Variablen spannung und strom sind global definiert, als uint16_t 
strom und uint16_t spannung.

Bitte Tipps geben.

Viele Grüße,

David

von Dummy (Gast)


Lesenswert?

>Bitte Tipps geben.

Zu was ? Zu dem Code den du nicht rausrückst ?
Hier sind keine Hellseher unterwegs.

von GPS (Gast)


Lesenswert?

Ich wuerd mir mal die 64 Werte einzeln ansehen.

von GPS (Gast)


Lesenswert?

Und dann das Ganze mal im simulator durchsteppen

von David P. (david_)


Lesenswert?

Den Code habe ich doch angehängt, oder?

Wie bedient man im AVR-Studio den Simulator eigentlich?

Viele GRüße,

David

von David P. (david_)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!
Nun habe ich den hauptsächlichen Programmcode angehängt. Aaber 
eigentlich geht es nur um diese beiden Funktionen, von denen die untere 
den richtigen wert liefert, nämlich Null für den Strom und die obere den 
falschen wert.




void Liefere_UI_Paar()
{
  strom=0;
  spannung=0;
  uint8_t z;

  for (z=0; z<64; z++) //Erhöht die ADC-Genauigkeit
  {
  spannung+=LesePortPF(0);
  strom+=LesePortPF(1);
  //spannung=LesePortPF(0);
  //strom=LesePortPF(1);
  }

  spannung=spannung/z;
  strom=strom/z;

  ADCStoppen();
}


void Liefere_Ungemitteltes_UI_Paar()
{
  spannung=LesePortPF(0);
  strom=LesePortPF(1);
  ADCStoppen()
}

Besten Gruß

von Ralph (Gast)


Lesenswert?

Möglicherweise bekommst du in der oberen Funktion einen Überlauf.

Was gibt die Funktion LesePortPF() zurück?
Wahrscheinlich eine U16, aber wie ist der mögliche Wertebreich, wo 
skalierst du den Wert um ?

Und wieviele Messungen hast du dir mit der unteren Funktion angesehen ?

Bei der Mittelwertbildung i der oberen Funktion reicht es wenn eine (1) 
Meßwert ungleich 0 ist, und das gesamtergebnis ist ungleich 0.
Bei der unteren Funktion siehst du das nur dann, wenn du zufällig diese 
eine Messung erwischst.
Es reicht zb schon wenn durch die Stromversorgung eine Spannungspitze 
auf den µC kommt um das Meßergebnis zu verfälschen.

von David P. (david_)


Lesenswert?

Hallo!
Meine Schaltung scheint sich irgendwie störsignale einzufangen. Zuerst 
schwingte sie mit 2MHz. Daraufhin habe ich den OP des 
Strom-Spannungswandler auf meiner Messplatine mit einem 
Keramikkondensator im Rückkopplungszweig versehen, um die Bandbreite des 
Op zu beschränken. Denn ich möchte sowieso nur Gleichspannung messen.
Aber irgendwie scheint der Op sich immer nich den einen oder anderen 
Peak eizufangen. Die werte sehen bei angelegten Null volt etwa so aus: 
0,0,341,0,0,210,0,0 damit meine ich die ganzzahligen werte, die der ADC 
rausgibt. eigentlich sollte ja nur 0,0,0,0,0,0,0,0,0,0 rauskommen.

KAnn man noch sowas wie einen Tiefpass vor den ADC-Eingang schalten? Wie 
verhält sich das dann bezüglich der Messgenauigkeit?

Gruß,
David

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

Hast du dich an die Beschaltung der AVCC gehalten wie sie im Datenblatt 
vorgeschlagen wird? Hier mal am Beispiel des ATtiny26.

Ein Abfallen der Referenzspannung könnte auch höhere Werte ausspucken 
aber die sind ja in deinem Fall ganz schön hoch. Nutz du die interne 
Referenz? Probier es doch mal aus die 64 AD-Wandlungen im Sleep-Modus 
durchzuführen um zu sehen ob die Störung vom AVR herrühren oder von 
externen Bauteilen, welche du auch mal abtrennen könntest um sie 
auszuschließen.

von David P. (david_)


Lesenswert?

Hi !

Also: Ich habe diese Beschaltung so an meinem ADC bereits realisiert. 
Leider scheint es daran nicht zu liegen.
Was ich mit der schaltung mache ist: Ich messe an einer solarzelle die 
Leerlaufspannung und den kurzschlussstrom. Dies mache ich mit einem 
Strom-Spannungswandler. Nur wenn ich den stromkreis öffne und die 
solarzelle mit ihrem Minuspol an dem Stromspannungswandler-Op liegt 
dürfte ja eigentlich kein Strom fließen, weil der stromkreis geöffnet 
ist. Aber dennoch zeigt der ADC was an. Klemme ich dann die Zelle ab, 
dann ist ruhe am ADC-Ausgang. Er gibt dan schön seine Nullen 0,0,0,0,0,0 
aus, wie er es soll.
Aslo liegt es wohl an der zelle. meine idee ist es nun hinter dem 
Stromspannungswandler noch einen tiefpass mit nachgeschaltetem 
impedanzwandler zu schalten.
Funktioniert sowas?
Gruß,
David

von Thomas (kosmos)


Lesenswert?

dein Problem tritt doch nur auf wenn du eh nichts messen willst. Also 
speilt es doch garkeine Rolle. Wenn du einen externen Analogmultipleyer 
verwendest ist das Signal zum ADc auch unterbrochen und dann hast du 
wirklich immer 0 anliegen.

von David P. (david_)


Lesenswert?

Um mich dem Leerlaufstrom nähern zu können muss ich ja den strom so weit 
runterfahren, dass er nahe null wird und letztendlich null wird. Aber 
der fehler ist ja viel zu groß, wenn statt werte um null werte die viel 
größer sind als null angezeigt werden.
Gruß,
David

von Thomas (kosmos)


Lesenswert?

Leerlaufstrom? Im Leerlauf fließt doch garkein Strom, meinst du 
vielleicht Leerlaufspannung?

von David P. (david_)


Lesenswert?

Nein ich meine den Strom, den man durch einprägen einer immer größer 
werdenden spannung erreicht. Dieser Strom nähert sich natürlich 
irgendwann dem wert null, wenn man die Leerlaufspannung erreicht hat. 
ICh meine Also die stelle, wo man fast die Leerlaufspannung erreicht hat 
und somit fast kein strom mehr fließt. Und in der nähe vom Stromnull 
sollen keine Störungen auftreten und keine peaks gemessen werden, die 
nicht vom wirklichen strom herrühren. Die Leerlaufspannung misst man ja

von Thomas (kosmos)


Lesenswert?

Ich verstehe jetzt nicht was du meinst. Für mich ist die 
Leerlaufspannung die Spannung wenn kein Verbraucher also keine Last 
dranhängt und ohne Last fleißt normalerweise auch kein Strom.

Hast du ein regelbare Last die du immer geringer einstellst die dann 
irgendwann bei Null ist und das Modul so die Leerlaufspanung liefert?

Was für einen Verbraucher hast du da am Modul dran?

von David P. (david_)


Lesenswert?

Ganz genau. eine regelbare last. Es ist ein sehr kleines A-SI-Moul mit 4 
Zellen und etwa 2Volt leelaufspannung.

von Thomas (kosmos)


Lesenswert?

was für eine Last? Ein Motor, ein Poti, eine Lampe.....

von David P. (david_)


Lesenswert?

eine ohmsche

von Thomas (kosmos)


Lesenswert?

ganz schön hartnäckig, sag mir doch bitte um was für einen Verbraucher 
es sich handelt, könnte sein das diese keine gleichmäßige Stromaufnahme 
hat. Vielelicht würde sie mal überlastet und ist jetzt stark 
temperaturabhängig. Betreibe in mal an einer Konstantspannungsquelle und 
beobachte mal mit nem Multimeter ob der Strom gleichmäßig ist oder auch 
wieder diese Ausreiser hat. Hoffe mal das die Ausreiser nicht zu kurz 
sind.

von Karl H. (kbuchegg)


Lesenswert?

David P. wrote:
> Um mich dem Leerlaufstrom nähern zu können muss ich ja den strom so
> weit runterfahren, dass er nahe null wird und letztendlich null wird.
> der fehler ist ja viel zu groß, wenn statt werte um null werte die viel
> größer sind als null angezeigt werden.

Ich denke du jagst einem Phantom nach.

> Nur wenn ich den stromkreis öffne und die
> solarzelle mit ihrem Minuspol an dem Stromspannungswandler-Op liegt
> dürfte ja eigentlich kein Strom fließen, weil der stromkreis geöffnet
> ist.

Ein offener Stromkreis ist was anderes, als wenn dein Leerlaufstrom
langsam zu 0 wird. In einem offenen Stromkreis kannst du dir
allerhand Störungen buchstäblich aus der Luft einfagen, weil dein
Eingänge wie Antennen alles aufsaugen, was sie kriegen können.

Also versuch das doch mal unter realistischen Bedingungen.

von David P. (david_)


Lesenswert?

Ich betreibe eine PWM, die ich glätte und auf die Zelle gebe. Dann messe 
ich strom und spannung. den strom messe ich mit einem 
strom-spannungswandler, in den der strom direkt reinfließt. und genau 
dieser macht probleme.

von Thomas (kosmos)


Lesenswert?

Gibst du Strom auf eine Solarzelle oder auf eine Akkuzelle?

von David P. (david_)


Lesenswert?

ICh gebe ihn auf eine solarzelle.

von holger (Gast)


Lesenswert?

>ICh gebe ihn auf eine solarzelle.

Wozu ? Soll die dann leuchten ;)

von David P. (david_)


Lesenswert?

Nein, das ist die sogenannte Gegenspannungsmethode, mit der man 
üblicherweise Solarzellenkennlinien aufnimmt. Jedenfalls scheinen aus 
dem Strom-Spannungswandler irgendwelche störimpulse zu kommen.

von Tcf K. (tcfkat)


Lesenswert?

Oh man... ein kompletter Gesamtschaltplan wäre ja mal nicht schlecht...

von David P. (david_)


Lesenswert?

Stimmt. Ich fertige einen an. moment.

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
Noch kein Account? Hier anmelden.