www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lichtorgel mit Bandpassfilter


Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

Ich glaube, ich stehe gerade ein bisschen auf dem Schlauch...

Ich möchte mit einem AVR ein 6-Kanal-Lichtorgel realisieren (~40Hz - 
16kHz, zerlegt in 6 Intervalle).

Meine Idee ist dabei, eine Audioquelle auf den ADC zu legen.
Dann will ich meine 6 Frequenzbereiche durch je einen Bandpass (IIR, 
digital) berechnen lassen. Also ADC-Werte durch Bandpass1, Bandpass2, 
... usw schicken.

Und wie weiter? Bekomme ich dann schon die Werte, die ich haben will? 
Bin nach 4 Stunden studieren der Materie irgendwie durcheinander.

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo


wenn du deine 6 Amplituden hast, lege jeweils einen Schwellwert fest. In 
abhängigkeit davon jeweils ein Port steuern der die Endstufe steuert.

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe ich das richtig, dass ich bei einer maximalen Frequenz (16kHz), die 
ich noch wahrnehmen möchte, doppelt so schnell abtasten muss (Nyquist)?

Das heißt ich muss mindestens im 32kHz Takt einen ADC-Messwert 
aufnehmen?

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:
> Sehe ich das richtig, dass ich bei einer maximalen Frequenz (16kHz), die
> ich noch wahrnehmen möchte, doppelt so schnell abtasten muss (Nyquist)?
>
> Das heißt ich muss mindestens im 32kHz Takt einen ADC-Messwert
> aufnehmen?

Das siehst du richtig.
Leg aber noch ein wenig drauf. Wenn du an die Grenze kommst, enstehen 
sonst Schwebungseffekte.

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal ich.

Die Idee mit dem digitalen Filter habe ich verworfen. Dauert einfach zu 
lange (~ 500 Ticks pro Filteriteration * 6 Frequenzbänder). Da ist ein 
AVR mit 20MHz einfach zu langsam.

Nun bin ich aber bei meinen Recherchen auf aktive analoge Filter mit 
OpAmps gestoßen. Das scheint ganz gut zu funktionieren.

Nun stellen sich aber neue Fragen:

1) Ich habe den nicht-invertierenden Verstärker 
Operationsverstärker-Grundschaltungen für Audiosignale aufgebaut, 
allerdings mit LM358. Das Signal wird gut in den positiven Bereich 
verschoben, aber die Verstärkung passt irgendwie nicht. Hatte es mit 
Poti aufgebaut, die Verstärkung war damit von 1-66 einstellbar. Aber 
irgendwie gibts beim Signal keinen Unterschied zwischen den 
Verstärkungen. Liegts am LM358?

2) Gleich bezogen auf 1: Auf welche Werte muss man bei der Auswahl eines 
OpAmp achten für meine Anwendung? Es gibt die Dinger ja wie Sand am 
Meer. Vielleicht hat jemand einen Link mit einer guten Erklärung für 
mich.

3) Wie würdet ihr die Frequenzen aufteilen? Ich würde diese 
Frequenzbänder benutzen:

Tiefpass: 130 Hz
Bandpass: 130 Hz - 600 Hz
Bandpass: 600 Hz - 2000 Hz
Bandpass: 2000 Hz - 6000 Hz
Bandpass: 6000 Hz - 10000 Hz
Hochpass: 10000 Hz


MfG,
Yoogi

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Früher (so ca. 1970) hat man für Lichtorgeln drei Bereiche (Höhen, 
Mitte, Bässe) gewählt, denn R-G-B benötigt für jede Farbe auch nur 3 
Grundfarben.

Zur Verstärkung:
Je nach Frequenzbereich bekommst Du unterschiedliche Eingangsamplituden 
und benötigst dementsprechend unterschiedliche Verstärkung je Kanal:
- Bässe wenig
- Mitten mehr
- Höhen viel.

Die Idee mit aktiven Bandpässen (per Operationsverstärker) klingt recht 
brauchbar. Für die Höhen sollte allerdings das Bandbreite- 
Verstärkungsprodukt des eingesetzten Operationsverstärkers ausreichend 
hoch sein.

Bernhard

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard R. schrieb:
> Früher (so ca. 1970) hat man für Lichtorgeln drei Bereiche (Höhen,
> Mitte, Bässe) gewählt, denn R-G-B benötigt für jede Farbe auch nur 3
> Grundfarben.
>

Ich möchte damit einen 6x6x6 LED-Cube befeuern. Daher 6 Kanäle.

> Zur Verstärkung:
> Je nach Frequenzbereich bekommst Du unterschiedliche Eingangsamplituden
> und benötigst dementsprechend unterschiedliche Verstärkung je Kanal:
> - Bässe wenig
> - Mitten mehr
> - Höhen viel.

Also sollte der Aufbau so sein:
Eingangssignal -> OP -> Tiefpass/Bandpass/Hochpass -> OP -> ADC µC

>
> Die Idee mit aktiven Bandpässen (per Operationsverstärker) klingt recht
> brauchbar. Für die Höhen sollte allerdings das Bandbreite-
> Verstärkungsprodukt des eingesetzten Operationsverstärkers ausreichend
> hoch sein.

Welcher Wert ist das denn? Die Slewrate? Und welche Werte eignen sich 
da? Ist es für die Höhen wichtig, weil die Frequenzen da höher sind, 
also der OP "schneller" arbeiten muss?

Danke für die Antwort

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In erster Näherung ist das Verstärkungs-Bandbreite Produkt gleich der 
Frequenz, bei der die Leerlauf-Verstärkung des Opamp zu 1 wird.

Dicke Faustformel:
Bei 20 kHz sollte die Leerlauf-Verstärkung des Opamp mindestens 10 mal 
so hoch sein wie die Verstärkung des Höhen-Kanals.

Wichtig ist ebenfalls, daß die Aussteuerbarkeit des Opamp bei 20 kHz 
groß genug ist (s. Output Voltage Swing).

Bernhard

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, so richtig verstanden habe ich das noch nicht. Aber scheinbar ist 
der TL071/TL072/TL074 eine recht gute Wahl.

Was für Kondensatoren nimmt man eigentlich für die Filter? Bipolare 
(Elkos) oder unipolare (Keramikkondensator)?

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:
> Nochmal ich.
>
> Die Idee mit dem digitalen Filter habe ich verworfen. Dauert einfach zu
> lange (~ 500 Ticks pro Filteriteration * 6 Frequenzbänder). Da ist ein
> AVR mit 20MHz einfach zu langsam.


??
Der Elm-Chan schafft es eine komplette FFT in Echtzeit auf einem Mega8 
laufen zu lassen UND nebenbei noch ein GLCD anzusteuern

Guckst du
http://elm-chan.org/works/akilcd/report_e.html

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von ROHM gibt es den fertigen Filter für dein Vorhaben:

http://www.rohm.com/products/databook/audio/pdf/ba...

hans

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> ??
> Der Elm-Chan schafft es eine komplette FFT in Echtzeit auf einem Mega8
> laufen zu lassen UND nebenbei noch ein GLCD anzusteuern
>
> Guckst du
> http://elm-chan.org/works/akilcd/report_e.html

Ja in Assembler. Ich hab halt die C-Codes von WinFilter probiert, da ich 
mit Assembler auf Kriegsfuß stehe. Und wenn ich den Code schon "klaue", 
dann will ich ihn wenigstens so weit verstehen, dass ich selbst 
Anpassungen vornehmen kann.


Den Rohm-Baustein gibts leider bei den großen Versendern nicht. Außerdem 
hat er ein bastlerfeindliches SO18-Gehäuse :-(. Schade, den hätte ich 
gern genommen.


Kann mir bitte noch jemand auf meine vorherige Frage antworten:
> Was für Kondensatoren nimmt man eigentlich für die Filter? Bipolare
> (Elkos) oder unipolare (Keramikkondensator)?

Autor: mhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:
> Bipolare (Elkos) oder unipolare (Keramikkondensator)?

Folie (Wickel)

Autor: Wissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei 20 kHz sollte die Leerlauf-Verstärkung des Opamp mindestens 10 mal
>so hoch sein wie die Verstärkung des Höhen-Kanals.

Also bei einer solchen Anwendung wäre es Overkill, Frequenzen von 20 kHz 
auszuwerten. Ich denke, bis 10kHz wäre völlig ausreichend. Darüber ist 
amplitudentechnisch so wenig los, dass es für die Anwendung "Lichtorgel" 
keine Rolle spielt.

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:
> Karl heinz Buchegger schrieb:
>> ??
>> Der Elm-Chan schafft es eine komplette FFT in Echtzeit auf einem Mega8
>> laufen zu lassen UND nebenbei noch ein GLCD anzusteuern
>>
>> Guckst du
>> http://elm-chan.org/works/akilcd/report_e.html
>
> Ja in Assembler.

Hauptsächlich wahrscheinlich deshalb, weil er Fixpunkt Arithmetik 
betreibt. Das ist in Assembler genausowenig ein Beinbruch, wie es auch 
in C ist. Wenn du natürlich mit float um dich schmeißt, ..

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Hauptsächlich wahrscheinlich deshalb, weil er Fixpunkt Arithmetik
> betreibt. Das ist in Assembler genausowenig ein Beinbruch, wie es auch
> in C ist. Wenn du natürlich mit float um dich schmeißt, ..

Nein, mit 8bit Ganzzahlen:
#define NCoef 1
#define DCgain 16
    
__int8 ACoef[NCoef+1] = {
          92,
          92
};

__int8 BCoef[NCoef+1] = {
        128,
       -116
};

__int8 iir(__int8 NewSample) {


    static __int16 y[NCoef+1]; //output samples
    //Warning!!!!!! This variable should be signed (input sample width + Coefs width + 1 )-bit width to avoid saturation.

    static __int8 x[NCoef+1]; //input samples
    int n;

    //shift the old samples
    for(n=NCoef; n>0; n--) {
       x[n] = x[n-1];
       y[n] = y[n-1];
    }

    //Calculate the new output
    x[0] = NewSample;
    y[0] = ACoef[0] * x[0];
    for(n=1; n<=NCoef; n++)
        y[0] += ACoef[n] * x[n] - BCoef[n] * y[n];

    y[0] /= BCoef[0];
    
    return y[0] / DCgain;
}

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ganze bei 20MHz mit 20kHz Abtastrate, da hab ich nur 666 Takte pro 
Zyklus zur Verfügung.
Und in der Zeit 6 mal diesen Filter berechnen plus Visualisierung ist 
einfach zu viel.

Korrigiert mich, wenn ich da einen Denkfehler habe...

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
30 kHz Abtastrate meine ich...

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:

>     //shift the old samples
>     for(n=NCoef; n>0; n--) {
>        x[n] = x[n-1];
>        y[n] = y[n-1];
>     }

Das kriegst du schon mal weg, indem du einen umlaufenden Startindex 
benutzt. Dieselbe Technik, die man auch bei einem Ringbuffer benutzt.

>     //Calculate the new output
>     x[0] = NewSample;
>     y[0] = ACoef[0] * x[0];
>     for(n=1; n<=NCoef; n++)
>         y[0] += ACoef[n] * x[n] - BCoef[n] * y[n];

Da müsste man sich überlegen, ob man nicht den 1 Messwert, der 
rausfällt, aus y[0] rausrechnen und dafür den neuen Messwert in y[0] 
reinrechnen könnte. Dann spart man sich für die restlichen 499 Werte das 
sinnlose erneute Berechnen der Formel.

Edit:
Seh grade: nCoef ist ja 1. Das vereinfacht die Sache enorm.
Das kannst du doch händisch optimieren
(Oder willst du die Anzahl der Filterkoeffizienten noch hochtreiben?)

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> (Oder willst du die Anzahl der Filterkoeffizienten noch hochtreiben?)

^^ Ich hoffe, das ist nicht notwendig. Na gut, dann werde ich mal 
versuchen das zu optimieren. Aber ich denke, dass es trotzdem zu eng 
wird.
Ich muss ja noch zwischendurch den 6x6x6 Cube treiben. Obwohl dass bei 
100Hz Ausgabe eigentlich nicht so schlimm stören sollte.

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

Bewertung
0 lesenswert
nicht lesenswert
Wenn nCoeff 1 bleibt, dann bleibt übrig
__int8 iir(__int8 NewSample) {


    static __int16 y[NCoef+1]; //output samples
    //Warning!!!!!! This variable should be signed (input sample width + Coefs width + 1 )-bit width to avoid saturation.

    static __int8 x0;
    static __int8 x1;
    int n;

    x1 = x0;
    y[1] = y[0];

    //Calculate the new output
    x0 = NewSample;
    y[0]  = ACoef[0] * NewSample;
    y[0] += ACoef[1] * x1 - BCoef[1] * y[1];

    y[0] /= BCoef[0];
    
    return y[0] / DCgain;
}

Das Array y wird man sicherlich auch noch durch 2 getrennte Variablen 
los.

Was ist mit DCgain? Muss diese Division sein? Wozu verwendest du das 
Ergebnis der Funktion?

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Was ist mit DCgain? Muss diese Division sein? Wozu verwendest du das
> Ergebnis der Funktion?

Wie gesagt, dass ist generierter Code aus WinFilter. Da DCGain immer 
etwas aus 2^x ist, kann man es schnell shiften.

Ich hoffe, dass meine Interpretation des Wertes richtig ist: Er gibt mir 
die "Stärke" des Signals bei der Frequenz für die der Filter ausgelegt 
ist. Wie gesagt, ich möchte 1 Tiefpass, 4 Bandpässe und 1 Hochpass nach 
obiger Funktion auslegen. Der jeweilige Rückgabewert ist dann 
hoffentlich das "Spektrum" des Signals in 6 Frequenzbändern.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht in C mit Festkommaarithmethik. Ausserdem ist es nicht notwendig 
mit 32Khz abzutasten, weil für die Lichtorgel die wirklich hohen 
Frequenzen nicht interessieren. Sinnvoller ist es, die Eingangsfrequenz 
mit einem LowpassFilter auf z.B. 3Khz zu begrenzen, dann reicht eine 
Abtastfrequenz zwischen 10 und 20KHz locker aus.
http://www.hobby-roboter.de/forum/viewtopic.php?f=...

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:
> Karl heinz Buchegger schrieb:
>> Was ist mit DCgain? Muss diese Division sein? Wozu verwendest du das
>> Ergebnis der Funktion?
>
> Wie gesagt, dass ist generierter Code aus WinFilter. Da DCGain immer
> etwas aus 2^x ist, kann man es schnell shiften.

Schon. Die Frage bleibt trotzdem: Was machst du mit dem Wert. WEnn du 
den Wert sowieso nur mit einem Schwellwert vergleichst, kannst du die 
Division auch raus nehmen und stattdessen (mit dem Taschenrechner) den 
Schwellwert mal DCGain nehmen. Läuft im Endeffekt aufs gleiche raus, ist 
aber schneller. Eine Operation gar nicht machen müssen ist immer noch 
schneller als die schnellste Variante der Operation.

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
chris schrieb:
> Es geht in C mit Festkommaarithmethik.

In dem von mir geposteten Code sind keine Gleitkommawerte. Alles nur 
ganzzahlig...

Der Link von dir ist ja ganz interessant, aber eine Gleichung oder 
Koeffizienten für den Filter sind nicht dabei.

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Schon. Die Frage bleibt trotzdem: Was machst du mit dem Wert. WEnn du
> den Wert sowieso nur mit einem Schwellwert vergleichst, kannst du die
> Division auch raus nehmen und stattdessen (mit dem Taschenrechner) den
> Schwellwert mal DCGain nehmen. Läuft im Endeffekt aufs gleiche raus, ist
> aber schneller. Eine Operation gar nicht machen müssen ist immer noch
> schneller als die schnellste Variante der Operation

Stimmt. Ich vergleiche den Wert mit 6 Schwellwerten. Denke da lohnt sich 
dein Weg trotzdem.

Hab aber eben gesehen, dass nur bei dem von mir geposteten Code NCoef = 
1 ist. Das war ein Tiefpass. Bei Bandpässen liegt dass dann schonmal bei 
5 - 11. Je nach Ordnung des Filters. Ich weiß nicht, ob ich das so weit 
optimieren kann, ohne dass ich Zeitprobleme bekomme.

chris schrieb:
> Ausserdem ist es nicht notwendig
> mit 32Khz abzutasten, weil für die Lichtorgel die wirklich hohen
> Frequenzen nicht interessieren. Sinnvoller ist es, die Eingangsfrequenz
> mit einem LowpassFilter auf z.B. 3Khz zu begrenzen, dann reicht eine
> Abtastfrequenz zwischen 10 und 20KHz locker aus.

Das war eine meiner vorhergehenden Fragen: In welchen Frequenzbereichen 
macht das Sinn? Meine Idee war diese Aufteilung

Yoogi schrieb:
> Tiefpass: 130 Hz
> Bandpass: 130 Hz - 600 Hz
> Bandpass: 600 Hz - 2000 Hz
> Bandpass: 2000 Hz - 6000 Hz
> Bandpass: 6000 Hz - 10000 Hz
> Hochpass: 10000 Hz

Ich lass mich da aber auch gerne eines besseren belehren.

Autor: mhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:
>> Bandpass: 2000 Hz - 6000 Hz
>> Bandpass: 6000 Hz - 10000 Hz
>> Hochpass: 10000 Hz

Bandpass: 2000 Hz - 5000 Hz
Bandpass: 5000 Hz - 8000 Hz
Hochpass: >8000 Hz

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieder ich,

Ich habe schwere Probleme mein Audiosignal sauber auf meinen ADC zu 
bekommen. Wie bereits geschrieben, habe ich die Schaltung von
Operationsverstärker-Grundschaltungen für Audiosignale aufgebaut, 
diesmal mit NE5532.

Das Audiosignal ziehe ich aus meinem Line-Out meiner Soundkarte am PC.

Leider schwanken die meine ADC-Werte beträchtlich. Manchmal um 30 (bei 
5V Ref). Wenn ich das das Audiosignal abklemme, "läuft" der Wert öfter 
um den Betrag 200-300 (also z.B. von 100 auf 350). So richtig konnte ich 
es noch nicht reproduzieren.

Daher habe ich ein paar Fragen, weil ich nicht weiter weiß:

1) Kann ich mit meinem Aufbau erwarten, dass bei ausgeschalteter Musik 
ein gleichmäßiges ADC Signal am µC anliegt? Oder gibt es immer 
Störungen, Wellen oder wer weiß was, was das Signal stört?

2) Wenn ich mit einem Tongenerator ein gleichmäßiges Sinussignal fester 
Frequenz auf meine Soundkarte gebe, kann ich dann am ADC einen 
konstanten "Ausschlag" erwarten? Oder zumindest eine Schwingung um einen 
konstanten Betrag?

3) Wenn ich das Audiosignalkabel physikalisch abtrenne, welches Signal 
kann ich dann am ADC erwarten?

Danke für eure Hilfe. Es ist echt deprimierend, wenn man das nicht 
richtig messen kann.

Autor: LordZiu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat niemand bisher Erfahrungen mit sowas sammeln können?

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:

> Das Audiosignal ziehe ich aus meinem Line-Out meiner Soundkarte am PC.
>
> Leider schwanken die meine ADC-Werte beträchtlich. Manchmal um 30 (bei
> 5V Ref). Wenn ich das das Audiosignal abklemme, "läuft" der Wert öfter
> um den Betrag 200-300 (also z.B. von 100 auf 350). So richtig konnte ich
> es noch nicht reproduzieren.

Ehe du da ein AudioSignal drauf gibst, solltest du erst mal soweit 
kommen, dass dein ADC Wert bei konstant anliegender Eingangsspannung 
(die du zb mit einem Poti erzeugst) auch einen konstanten Output 
liefert.
Ansonsten ist alles weitere erst mal sinnlos.

> 1) Kann ich mit meinem Aufbau erwarten, dass bei ausgeschalteter Musik
> ein gleichmäßiges ADC Signal am µC anliegt? Oder gibt es immer
> Störungen, Wellen oder wer weiß was, was das Signal stört?

Kleine Störungen gibt es. Wenn dein ADC Wert um 2 oder 3 Einheiten 
schwankt, dann wirst du dich in diesem Bereich bewegen.

> 2) Wenn ich mit einem Tongenerator ein gleichmäßiges Sinussignal fester
> Frequenz auf meine Soundkarte gebe, kann ich dann am ADC einen
> konstanten "Ausschlag" erwarten?

Nein. In einer Welle ändert sich der Spannungswert ja laufend. Und klar 
schlägt sich das auch im ADC Wert nieder.

> Danke für eure Hilfe. Es ist echt deprimierend, wenn man das nicht
> richtig messen kann.

Bei allem nötigen Respekt. Aber das hat mit 'nicht messen können' nicht 
viel zu tun.

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Yoogi schrieb:
>
>> Das Audiosignal ziehe ich aus meinem Line-Out meiner Soundkarte am PC.
>>
>> Leider schwanken die meine ADC-Werte beträchtlich. Manchmal um 30 (bei
>> 5V Ref). Wenn ich das das Audiosignal abklemme, "läuft" der Wert öfter
>> um den Betrag 200-300 (also z.B. von 100 auf 350). So richtig konnte ich
>> es noch nicht reproduzieren.
>
> Ehe du da ein AudioSignal drauf gibst, solltest du erst mal soweit
> kommen, dass dein ADC Wert bei konstant anliegender Eingangsspannung
> (die du zb mit einem Poti erzeugst) auch einen konstanten Output
> liefert.
> Ansonsten ist alles weitere erst mal sinnlos.

Das funktioniert, hatte ich nur nicht erwähnt. Also der ADC ist korrekt 
initialisiert und funktioniert soweit auch, wenn ich eine konstante 
Gleichspannung draufgebe.

>> 1) Kann ich mit meinem Aufbau erwarten, dass bei ausgeschalteter Musik
>> ein gleichmäßiges ADC Signal am µC anliegt? Oder gibt es immer
>> Störungen, Wellen oder wer weiß was, was das Signal stört?
>
> Kleine Störungen gibt es. Wenn dein ADC Wert um 2 oder 3 Einheiten
> schwankt, dann wirst du dich in diesem Bereich bewegen.

Okay, das dachte ich mir nämlich auch.


>> Danke für eure Hilfe. Es ist echt deprimierend, wenn man das nicht
>> richtig messen kann.
>
> Bei allem nötigen Respekt. Aber das hat mit 'nicht messen können' nicht
> viel zu tun.

Doch schon. Wenn ich ein Oszi hätte, würde ich ein Gefühl für das Signal 
bekommen: Wieviel Volt kommen bei welcher Lautstärke aus der Soundkarte. 
Wie sieht das Signal hinter meinem OpAmp aus usw. Ich glaube das ist 
sehr wichtig, dass man weiß, in welchen Größenordnungen sich sowas 
abspielt.

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:

> Doch schon. Wenn ich ein Oszi hätte, würde ich ein Gefühl für das Signal
> bekommen: Wieviel Volt kommen bei welcher Lautstärke aus der Soundkarte.
> Wie sieht das Signal hinter meinem OpAmp aus usw. Ich glaube das ist
> sehr wichtig, dass man weiß, in welchen Größenordnungen sich sowas
> abspielt.

Stell dein Multimeter auf Wechselspannung und häng es drann. Ganz genau 
wird es nicht stimmen, ist ja schliesslich keine reine Sinusschwingung, 
aber größenordnungsmässig bist du dabei.

Autor: stepp64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vieleicht hilft dir ja meine Schaltung ein wenig weiter. Diese ist 
allerdings auch mit Hilfe verschiedener Forenuser entstanden. 
Funktioniert als LO eigentlich ganz gut. Allerdings habe ich da nie 
etwas dran gemessen (da kein Oszi vorhanden). Berechnet habe ich 
lediglich die Kondensatoren für die Filter. Beschrieben ist das alles 
auf meiner Webseite 
http://stepp64.dyndns.org/sven/elektronik/dmx877/index.php

Viel Spaß
Sven

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Stell dein Multimeter auf Wechselspannung und häng es drann. Ganz genau
> wird es nicht stimmen, ist ja schliesslich keine reine Sinusschwingung,
> aber größenordnungsmässig bist du dabei.

Super Idee, danke. Das ich da nicht selbst drauf gekommen bin ...

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stepp64 schrieb:
> vieleicht hilft dir ja meine Schaltung ein wenig weiter. Diese ist
> allerdings auch mit Hilfe verschiedener Forenuser entstanden.
> Funktioniert als LO eigentlich ganz gut. Allerdings habe ich da nie
> etwas dran gemessen (da kein Oszi vorhanden). Berechnet habe ich
> lediglich die Kondensatoren für die Filter. Beschrieben ist das alles
> auf meiner Webseite
> http://stepp64.dyndns.org/sven/elektronik/dmx877/index.php

Danke danke, so eine Schaltung suche ich seit Wochen. Kannst du mir noch 
sagen, ob die Auswahl der OpAmps wichtig ist? Kann ich das auch mit 
TL07x oder LM358 aufbauen?

Grüße

Autor: nicht_eingeloggt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
6-Kanal-Lichtorgel basierend auf Elm Chan's FFT-Routinen.
Beitrag "[C] AVR-Lichtorgel per FFT MEGA8 32 644"

Autor: stepp64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider kenne ich mich mit Op-Amps auch nicht so richtig aus. Aber 
irgendwie gab es bei diesen Typen etwas besonderes. Kann sein, dass 
diese keine negativen Spannungen am Ausgang liefern (was dem µC nicht 
gut bekommt). Da bin ich mir aber nicht mehr sicher.

Auf alle Fälle läuft das Gerät seit einigen Jahren auf Partys und dann 
auch mal 10 Stunden am Stück. Rein optisch sieht es auch ganz gut aus. 
Kannst ja mal probehalber einen Kanal so aufbauen und schauen ob es in 
deine Schaltung passt. So hab ich damals auch am Anfang rumprobiert. 
Meine "Messungen" liefen auf einen Kopfhörer hinaus, den ich an die 
Ausgänge gehalten hatte um die Filterwirkung zu testen :-)

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@stepp64

Danke, das werde ich mal ausprobieren. Die meisten Kondensatoren sind 
Keramikkondensatoren, sehe ich das richtig?

@nicht_eingeloggt

Kenne ich, nur leider finde ich nirgendwo eine Bezugsquelle für den 
verwendeten max293.

Autor: stepp64 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sind alles Kerkos. Ich hänge mal noch die Stückliste mit drann.

Schönen Abend noch
Sven

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

Bewertung
0 lesenswert
nicht lesenswert
Yoogi schrieb:

> Kenne ich, nur leider finde ich nirgendwo eine Bezugsquelle für den
> verwendeten max293.

Nur der Vollständigkeit halber. Welcher MAX293?
Dort kommt gar keiner vor.

Autor: Yoogi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Nur der Vollständigkeit halber. Welcher MAX293?
> Dort kommt gar keiner vor.

Ja, hast recht. Immer wenn ich das von der Elm Chan's FFT höre, denke 
ich an seinen Originalaufbau. Und der war mit MAX293.
Aber jetzt hab ich gesehen, dass bei der 6-Kanal-Lichtorgel ne andere 
Schaltung benutzt wird...

Danke für den Hinweis

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.