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
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
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
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.
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.
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.
@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
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.
Missverstaendnis Das C-Code optimiert bezog sich auf die Formel, nicht auf die Wahl der Variablen. Ju
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.
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
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.