Tiefpassfilter für 20-kHz-PWM-Signal

Ich möchte Sinn a 20 k H z PWM-Signal von einer elektronischen Platine. Ich möchte dieses Signal mit der Funktion "analogRead (A0)" auf meinem Arduino-Board lesen. Daher habe ich einen Tiefpassfilter 1. Ordnung hergestellt, der aus einem Widerstand, einem Kondensator und einem Operationsverstärkerpuffer besteht.

Zuerst produzierte ich a 20 k H z PWM-Signal vom D9-Pin meines Arduino. Das Tastverhältnis des PWM-Signals nimmt ab 0 % Und 100 % ständig. Der PWM-Generierungscode:

pwmWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
}   

Nach meinen Berechnungen z 20 k H z Tiefpassfilter, Widerstand sein sollte 82 k Ω und Kondensator ist 100 P F .

Aber ich habe verwendet 68 k Ω Widerstand, weil nicht haben 82 k Ω . In diesem Fall wird die Grenzfrequenz des Tiefpassfilters verwendet 23 k H z . Ich lese dieses Signal vom A0-Pin mit analogRead und ADC-Sampling. Der Lesecode lautet:

int c;
long a;
for(c=0;c <32;c++) {
    pwm_deger=analogRead(A0);
    a += pwm_deger;
}

int f = a / 32;
Serial.println("pwm_deger:");
Serial.println(f);
delay(200);

Ich habe die Ergebnisse unten hinzugefügt. Die Zahlen sind in 0-1023 skaliert (Arduinos ADC-Wert)

  • Abbildung 1 zeigt 20 k H z PWM-Signal, von dem ich das Signal mit Überblendung testen möchte 0 % Zu 100 % Einschaltdauer mit 200 M S .

  • Abbildung 2 zeigt das LPF-Signal ohne Puffer.

  • Abbildung 3 zeigt das LPF-Signal vom Ausgang des Operationsverstärkerpuffers.

Gibt es ein Problem in Zahlen? Warum zeigt Abbildung 2 0,7 von 1023 und schneidet nach dem ADC-Wert von 700 ab. Liegt es am Operationsverstärker?


Abbildung 1

Abbildung 1 - Testsignal


Figur 2:

Abbildung 2 – Ausgangssignal von LPF ohne Puffer-Operationsverstärker


Figur 3:

Abbildung 3 – LPF-Ausgang mit Puffer-Operationsverstärker

Sie müssen ein Schema des Filters und des Puffers posten und wie Sie alles mit dem Arduino verbunden haben. Beschriften Sie die Teile richtig (einschließlich der Teilenummer des Operationsverstärkers).
Sie geben an, dass es 3 Abbildungen gibt, aber nur 2 angezeigt werden UND der eigentliche RAW-Post zeigt 4 Bildlinks (1,2,4,5). Angenommen, die Frequenz beträgt 20 kHz, liegt der 3-dB-Punkt bei 20 kHz und somit wird die Amplitude um 0,707 reduziert
Hallo, ich kann keine weiteren Figuren oder Schemata hinzufügen, weil ich nicht genug Reputation habe. Es erlaubt mir max. 2 Verbindung.
Übrigens sind Beschreibungen bereits auf Figuren geschrieben. Wenn ich Ihnen etwas über den Schaltplan erzähle, gibt es einen einfachen RC-Filter (mit einem Widerstand und einem Kondensator) am D9-Pin von Arduino. Und der Ausgang dieses Filters geht an den nicht invertierenden Eingang des LMV324-Operationsverstärkers. Hier gibt es eine einfache Pufferschaltung und der Ausgang von LM324 geht an den analogen A0-Pin von Arduino. Opamp VCC ist 5V von Arduino.

Antworten (1)

Warum zeigt Abbildung 2 0,7 von 1023 und schneidet nach dem ADC-Wert von 700. Ist es für Operationsverstärker?

Sie müssen mit ziemlicher Sicherheit einen Rail-to-Rail (R2R)-Operationsverstärker verwenden, der in der Lage ist, eine anständige Leistung nahe der oberen Stromschiene zu erzeugen. Wenn Sie so etwas wie einen LM324 verwenden, ist die weiche Klemmung, die Sie oben in der Wellenform sehen, wahrscheinlich darauf zurückzuführen, dass es sich bei den hohen Teilen des Eingangssignals und auch bei den hohen Teilen des Ausgangssignals nicht um R2R handelt.

Danke für deine Antwort. Ja, ich habe LMV324 in meinem Projekt verwendet. Können Sie mir einen R2R-Operationsverstärker mit effektiven Kosten vorschlagen?
@AdemGül nicht wirklich. Versuchen Sie, jemanden wie TI oder ADI zu verwenden, aber TI wird wahrscheinlich am billigsten sein.