Moin Moin zusammen, ich verwende ein AVR ATMega8 mit BASCOM, nun zu meinem Problem: Ich messe eine Spannung am A/D Wandler, die sich um 25mV pro dB erhöht. Diese Spannung wird von einem AD8307 erzeugt, der nur eine HF Spannung misst, diese ist Frequenzunabhängig. Ich möchte nun im LCD die Leistung in Watt anzeigen. Gibt es eine Möglichkeit, die logarithmischen Messergebnisse linear in Watt anzuzeigen ? Oder muss ich alle Zahlenwerte z.B. in einem EEPROM ablegen ? Daran habe ich auch schon gedacht, nur leider aufwändig. Wenn ich die Leistung in dBm anzeigen würde, wäre alles sehr einfach. Als Beispiel 10 db = 250 mV = 10mW aber 13 db = 325 mV = 20 mW !!!! Ich kann also nicht einfach die Spannung am A/D gleich der Leistung setzen. Wenn ich alle leistungswerte in Abhängigkeit vom Messergebniss des A/Ds in ein EEPROM schreibe, wie könnte man die Adressen ansteuern ? Leider brauch ich ja 2 Byte für den Wert 10Watt und für 100 Watt schon 3 Bytes im EEPROM. Ich habe noch keine Lösung gefunden, wie ich sicher die Adressen ansteuere. Gibt es dafür eine Lösung ? Für Eure Antworten besten Dank im voraus !! mfg Oliver
kenn mich zwar mit Bascom überhaupt nicht aus - aber es sollten doch Logarithmus/Exponentialfunktionen verfügbar sein ??? Ansonsten, bei geringer Auflösung, könnte es durchaus sinnvoll sein, die Ergebnisse in einer Tabelle zu haben, ich würde dafür allerdings den Flash nehmen. Schneller als eine Berechnung ist der Tabellenzugriff auf jeden Fall, braucht aber bestimmt mehr Speicher.
Du machst Dir zuerst eine Tabelle für 0..2,99dB in der geforderten Genauigkeit, z.B. mit Excel. Dann teilst Du die dB durch 3 und potenzierst mit dem Ergebnis 2: 2^(dB/3). Den Rest nimmst Du dann als Index auf die Tabelle und multiplizierst mit dem Ergebnis, also: 2^(db/3) * Tabelle(db%3) Peter
Moin Moin, dass ging ja fix. Leider kann BASCOM nicht Logarithmus. Peter: Habe es leider noch nicht recht verstanden, aber das Problem mit der Tabelle ist etwas anders. Ich bekomme ja von dem A/D Wandler ein Word von 0 bis 1023 . Nun soll der µC in ein EE schauen, welche Leistung er im LCD passend zum AD-Word anzeigen soll. Dies wäre die Tabellenmethode, wobei ich hier nicht weiß, wie ich die richtigen EE-Adressen ansteuern kann/soll. Schöner wäre nun, wenn der µC aus der Spannung 2250mV = 0 dBm = 1mW macht, aber aus 2500mV = 10dBm = 10mW macht. 75mV mehr sind 13dBm, also schon 20mW etc (1dB/25mV). Mein Hauptproblem ist nur, die richtige EEPROM Adresse zum passenden Messergebnis anzusteuern und deren Inhalt im LCD anzuzeigen. Zur Genauigkeit, ich brauche 1-150 Watt im Display, also 150 Einträge im EEPROM. Ein 512 Byte I2C EEPROM sollte reichen. Besten Dank nochmal mfg Oliver
kleiner Irrtum, eine Funktion als Tabelle braucht soviele Einträge, wie Eingangskombinationen da sind, in deinem Fall also 1024. In C würde das in etwa so aussehen: const unsigned char watt_tab[1024]={0,0,...1,1,1,2,2...150} Das ist die eigentlich Tabelle, den entsprechenden Funktionswert bekommst du dann ganz einfach mit Watt=watt_tab[A2D];
Man kann den Logarithmus auch einfach in eine Reihe entwickeln und je nach Genauigkeit dann nach dem x-ten Glied abbrechen. Mit dieser Vereinfachung kann dann auch der Controller rechnen, ohne dass man spezielle Bibliotheken einbinden muss. Falls du in Mathe nicht so bewandert bist, googele einfach mal nach "Taylor". Gruss Alex
@Oliver Bei insgesamt ca. 22db von 1-150W macht das 550mV am ADC-Eingang, oder 220 Werte bei 2,5mV Auflösung. Niedrige höhere Werte müssen dann entsprechend visualisiert werden. Peters Methode ist eigentlich schon die richtige um ne kleine Tabelle zu bekommen. a) Messwert durch 75mV teilen b) linearen Wert für den Rest aus a aus Tabelle holen (ggf. interpolieren) c) um das ganzzahlige Ergebnis aus a nach links schiften Die Tabelle für b könnte auch durch ne Reihenentwicklung (Taylor) gemacht werden. Die Auflösung bei 25mV pro db ist aber nicht besonders (am oberen Ende gibts nur Stufen 144, 147, 150). @Alex Taylor für den ganzen Messbereich halte ich für nicht geeignet. Entweder wird die Reihe zu lang, oder zu ungenau. Als Ersatz für die 0..3db-Tabelle aber wohl gut geeignet.
Wenn Du nur 1..150W anzeigen willst, reicht tatsächlich eine Tabelle mit 150 Einträgen. Entweder Du vergleichst alle Tabellenwerte hintereinander mit dem ADC-Wert (max 149 Vergleiche) oder Du fängst in der Mitte an und näherst Dich in max 8 Vergleichen dem richtigen Eintrag an. 149 Vergleiche sind aber für den AVR ein Klacks. Peter
Hi, Leutz ich habe FastAVR, da würde ich das soo machen... dim leistungstabelle(1024) as Flash Byte print leistungstabelle(adc(0)) leistungstabelle: 001,002,004,008...,150 eine Tabelle im Flash anlegen mit den korrespondierenden Leistungswerten zu eingangsspannung. Hier kanal 0 am adc, dann ausgeben, wie auch immer, in diesem Fal über die UART. Grüße AxelR.
Moin Moin zusammen, erstmal besten Dank für Eure Antworten. Ich habe nun doch eine Lösung ohne Tabelle gefunden. Ich messe die HF-Leistung mit dem Log-Verstärker AD8307. Er macht zwar 25mV/dB, aber da ich erst ab 1 Watt messe, entsprechen 1 Watt schon 1,750 Volt. Nun muss ich von meiner gemessenen Spannung die 1,750V abziehen, dass Ergebnis / 25mV und erhalte die dB. Jetzt noch db / 10 = Bell und 10^Bell gleich mein Multiplikator-Faktor. Da meine Referenz 1 Watt ist, ist der Faktor gleich meiner Leistung. Dieses Verfahren ist aber nur möglich, da der Wandler sehr linear ist, also das Verhältnis db/Ua. Wenn ich die Leistung direkt von einer UHF-Gleichrichter Diode messen würde, wäre die Kennlinie nicht so einfach zu Berücksichten. Ich hoffe, dass ich das einigermaßen erklärt habe. Zum Hintergrund für interessierte: Es soll eine Schutzschaltung mit LCD-Anzeige für eine Röhrenendstufe (144 MHz) entwickelt werden. Sie soll Leistung, Anoden- Spannung und Strom, Temp, Betriebsstunden und die Anpassung zur Antenne überwachen. Eine Power Peak Anzeige darf auch nicht fehlen :-) Bei Interesse => http://www.dg7xo.de => Selbstbauprojekte Soo, möchte mich noch mal für Eure Infos bedanken, und viel Erfolg weiterhin in diesen schönem Fachgebiet :-) mfg Oliver
@Oliver "Moin Moin, dass ging ja fix. Leider kann BASCOM nicht Logarithmus." Doch kann es
@Thomas Jo, habe ich auch schon gemerkt, aber auch, dass ich es doch nicht brauche :-) (siehe oben) Nur wenn ich die Rückflussdämpfung (Fehlanpassung der Ant) anzeigen möchte (in dB), dann brauche ich LOG10. Aber ich bin nun am Ende mit dem ATMega8, ich werde wohl umsteigen müssen auf ATMega16 oder gar 32. 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.