mikrocontroller.net

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


Autor: David P. (david_)
Datum:
Angehängte Dateien:
  • adc.txt (412 Bytes, 217 Downloads)

Bewertung
0 lesenswert
nicht 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

Autor: Dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bitte Tipps geben.

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

Autor: GPS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerd mir mal die 64 Werte einzeln ansehen.

Autor: GPS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und dann das Ganze mal im simulator durchsteppen

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Code habe ich doch angehängt, oder?

Wie bedient man im AVR-Studio den Simulator eigentlich?

Viele GRüße,

David

Autor: David P. (david_)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas O. (kosmos)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leerlaufstrom? Im Leerlauf fließt doch garkein Strom, meinst du 
vielleicht Leerlaufspannung?

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: David P. (david_)
Datum:

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

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was für eine Last? Ein Motor, ein Poti, eine Lampe.....

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine ohmsche

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibst du Strom auf eine Solarzelle oder auf eine Akkuzelle?

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICh gebe ihn auf eine solarzelle.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ICh gebe ihn auf eine solarzelle.

Wozu ? Soll die dann leuchten ;)

Autor: David P. (david_)
Datum:

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

Autor: Tcf Kat (tcfkat)
Datum:

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

Autor: David P. (david_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt. Ich fertige einen an. moment.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.