Forum: Mikrocontroller und Digitale Elektronik AD-Wander beim ATMega16 spinnt


von Oliver (Gast)


Lesenswert?

Moin Moin, nun gehts ins Eingemachte:

Ich verwende Bascom und einen ATMega16 mit 10 MHz.
Ich muss mit dem AD Wandler 2 Spannungen messen und damit etwas
rum rechnen, hier kurz der Code:
---schnipp --
Dim Ad3 As Word
Dim Ad4 As Word
Dim Pv As Single
Dim Pr As Single
Dim Pwr01 As Single
Dim Pwr05 As Single

---schnipp ---
Pwr: 'Das Unterprogramm
 Start Adc         ' Werte vom AD holen
  Ad3 = Getadc(3)
  Ad4 = Getadc(4)
 Stop Adc

'Leistung vorlauf
 Pwr01 = Ad3 / 0.2046
 Pwr01 = Pwr01 - 937
 Pwr01 = Pwr01 / 25
 Pwr01 = Pwr01 / 10
 Pwr01 = 10 ^ Pwr01
 Pv = Pwr01 / 1000    'Wert Pv merken für Hauptprogramm

'Leistung rücklauf
 Pwr05 = Ad4 / 0.2046
 Pwr05 = Pwr05 - 1187
 Pwr05 = Pwr05 / 25
 Pwr05 = Pwr05 / 10
 Pwr05 = 10 ^ Pwr05
 Pr = Pwr05 / 1000    'Wert Pr merken für Hauptprogramm
Return
------schnipp --

Nun das merkwürdige: Wenn ich entweder Leistung Rücklauf
oder Vorlauf deaktiviere, werden die jeweiligen Messeregebnisse
zu 100% verarbeitet (HF Leistung 144 MHz).
Wenn ich aber beides aktiviere, messe ich nur die Vorlaufleistung,
Rücklauf macht er nur dummes zeug:
meine LCD Anzeige:
PV =  20.1 W  (Wert ok)
Pr =   0.0012 <= Dieser Wert schwankt ständig wild umher.
               (muss aber ca 100mW sein)

Das komische ist, dass meine AD-Wander AD0 bis AD2 alle korrekt
arbeiten. Also am Layout/Bedrahtung dürfte es nicht liegen.
Der AD Teil auf auf dem PCB auch eine getrennte Masse.

Ist evt der RAM knapp ?? Aber ich verbrauche ja nicht voiel mehr an
Variablen, Pwr01 kann ich ja doppelt verwenden, oder mach ich was
falsch ?

Für Tips wie immer besten Dank !

So langsam weiß ich nicht weiter, was der Fehler ist.

mfg
Oliver

von Oliver (Gast)


Lesenswert?

Moin Moin,

was mit noch aufgefallen ist, der AD-Wandler ist wohl nicht der Fehler
denn:

 Pwr01 = Ad3 / 0.2046
       Pwr01 = Pwr01 - 937
       Pwr01 = Pwr01 / 25
       Pwr01 = Pwr01 / 10
       Pwr01 = 10 ^ Pwr01
       Pv = Pwr01 / 1000
       Pr = Pwr01 / 1000

Ich habe einfach Pv und Pr gleich rechnen lassen, bei Pv ist alles ok,

(1.58 Watt), nur bei Pr zeigt er 0.000002561 an und der Wert schwangt
ständig. Ist das ein Fehler in Bascom ? Wenn ich die Variablen als
WORD definierem zeigt er zwar nur ganze Zahlenan, aber dafür gleich.
Was kann da los sein ?? Ich habe das Programm auch auf nur diese
Funktion gekürzt, also RAM technisch sollte es kein Prob. mehr sein.

Für Hinweise besten Dank !

mfg
Oliver

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.