www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Atmega88


Autor: Anfänger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Jungs, habe ein Programm geschrieben, der mir 3 spannungegn misst und 
diese in einer Berechnung einbezieht und anschliessend an PC übertrage.
nun habe ich ich eine schwankende Messung, mal richtig mal falsch, 
obwohl meine Eigangsspannungen alle relativ konstant sind.

Nun habe ich die Bitte, ob jemand mal schauen kann, ob ich den 
integreirten Adc richtig verwende, besonders ob die Anweiseung für den 
ADMUX in der richtigen Stelle steht.Wäre auch dankbar für Andare 
Hinweise bezüglich des Programms.
Das Programm findt ihr im Anhang, ich verwende ein Atmega88

Danke im Voraus

Pedro

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Mein erster Gedanke war die Übertaktung des ADCs. Der Teiler steht auf 
32, was bei den im Quelltext angegebenen 3,072MHz richtig gewählt ist. 
Allerdings ist diese Frequenz ziemlich exotisch. Prüfe deshalb bitte 
zuerst, ob Du wirklich diese Taktung benutzt und nicht etwa den internen 
RC-Oszillator mit 8MHz, denn damit würdest Du übertakten und ein 
instabiles Wandeln provozieren.

Gruß - Wolfgang

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>was bei den im Quelltext angegebenen 3,072MHz richtig gewählt ist

Ist eine 'handelsübliche' Frequenz.

Wo kommen die Spannungen her? Quellimpedanz?

MfG Spess

Autor: Pol (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube nicht , ob das was mit der Quellimpedanz zu tun hat,da ich 
meine alte baugruppe auch an der gleichen spannungsversorgung 
anschliesse und es funktioniert.

Autor: Pol (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat das was mit der Signal() interrupt, weil diese schon veraltet ist??
MfG

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Sommerschlaf gehalten?

MfG Spess

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

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht deine Schaltung aus? Was hast du mit AREF gemacht?

Was bedeutet 'relativ konstant'?

Hast du dir schon mal die ADC Werte direkt ausgeben lassen, ohne 
Umrechnung? So wie du sie vom ADC erhältst.

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

Bewertung
0 lesenswert
nicht lesenswert
Du rechnest da

     a=1-(((Vml/Vms2)-1)/((Vml/Vms1)-1));

      b=((Vml/Vms2)-1)*((1/(Rsa*((Vml/Vms1)-1)))-(1/Rsi));

      c=((Rma*Rsa*((Vml/Vms2)-1))-Rsi*Rsa-Rsi*Rma)/(Rsi*Rma*Rsa);


      t=b+c;

        Rka=a/t;

ziemlich blauäugig drauf los.
Hast du schon versucht, ob du mathematisch diesen Formalismus noch 
vereinfachen kannst? Dinge zusammenziehn, Brüche auflösen, Doppelbrüche 
auflösen etc. Solange bis du alles in nur einer Formel beisammen hast.

Floating Point rechnen ist wie das Umschaufeln von Sand.
Mit jeder Operation verliert man ein bischen Sand und gewinnt ein 
bischen Schmutz dazu. Je weniger Operationen, desto reiner bleibt der 
Sand.

Autor: Juergen G. (jup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl Heinz Buchegger

hast recht, auf den ersten Blick sieht das ziehmlich wuest aus.

Beim naeheren hinschauhen, sieht man das es schon zusammengefasst und 
c-Code optimiert ist.

@Anfänger

Das Datenblatt sagt, so in etwa,  dass man nach Aenderungen am MUX 
(Kanalwechsel) die erste Messung wegschmeissen soll.

So wie Du das machst, beziehst Du den Muell nach der Kanalumschaltung 
mit in Deine Mittelwertberechnung ein.
Keine Ahnung ob das bei 18 Messungen ins Gewicht faellt.

anderer Tip: bei 2^x Messungen reicht ein >> (right shift) fuer die 
Division.

Ju

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

Bewertung
0 lesenswert
nicht lesenswert
Juergen G. schrieb:
> @Karl Heinz Buchegger
>
> hast recht, auf den ersten Blick sieht das ziehmlich wuest aus.
>
> Beim naeheren hinschauhen, sieht man das es schon zusammengefasst und
> c-Code optimiert ist.

Ich weiss nicht, wie und wo du dir das angesehen hast. Aber diese 
Variablen sind durchgehend double und volatile. Wenn der Compiler da 
grossartig optimiert dann ist er fehlerhaft. Denn genau das darf er 
nicht.


> anderer Tip: bei 2^x Messungen reicht ein >> (right shift) fuer die
> Division.

Der Tip mit der 2-er Potenz ist gut. Aber den Shift lass besser den 
Compiler ersetzen.

Autor: Juergen G. (jup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Missverstaendnis

Das C-Code optimiert bezog sich auf die Formel, nicht auf die Wahl der 
Variablen.

Ju

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

Bewertung
0 lesenswert
nicht lesenswert
Juergen G. schrieb:
> Missverstaendnis
>
> Das C-Code optimiert bezog sich auf die Formel, nicht auf die Wahl der
> Variablen.

Ähm, das hängt zusammen.
Der Compiler darf die Formeln nicht verändern und zb gleiche Ausdrücke 
zusammenziehen, eben WEIL die Variablen alle volatile sind.

Autor: Juergen G. (jup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oben geschriebenes bezog sich auf folgende Aussage von Dir.

[schnipp]
>
> ziemlich blauäugig drauf los.
> Hast du schon versucht, ob du mathematisch diesen Formalismus noch
> vereinfachen kannst? Dinge zusammenziehn, Brüche auflösen, Doppelbrüche
> auflösen etc. Solange bis du alles in nur einer Formel beisammen hast.

Ju

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.