Ich steuere einen 4-poligen PWM-PC-Lüfter von einem PIC16F684 mit der Lüfterdrehzahl, die von einem ADC-Messwert eines Näherungssensors gesteuert wird. Das funktioniert alles in Ordnung.
Ich hatte ursprünglich nicht vor, den Tachometerausgang des Lüfters zu verwenden, aber da er verfügbar ist, habe ich ihn mit meinem Oszilloskop überwacht, um festzustellen, ob meine Zuordnung zwischen Nähe und Lüftergeschwindigkeit funktioniert.
Was mir aufgefallen ist, ist, dass wenn die PWM den Lüfter mit 100% laufen lässt, das Tachosignal (ein über einen 10K-Widerstand gezogener offener Abfluss) schön und sauber ist:
Wenn ich jedoch mit weniger als 100% laufe, ist es laut:
Zoomen Sie auf dieses Geräusch:
Ich vermute, es wird durch das PWM-Signal beeinflusst, aber ich möchte verstehen, warum und wie, damit ich es in Zukunft nötigenfalls bereinigen kann. Wirklich interessiert mich, was Sie tun sollten, wenn Sie Geräusche wie diese sehen, wie Sie die Ursache finden und wie Sie sie "beheben". Das Oszilloskop löst in Ordnung aus. Ich frage mich, ob ich es nur dem externen Interrupt-Pin am PIC (RA2) zuführe, der ein Schmitt-Trigger-Eingang mit CMOS-Pegeln ist. Dann sehe ich das Rauschen und ich nicht könnte zB ein sauberes Signal von einem anderen Pin wiedergeben, um eine LED oder etwas auszublenden.
Kann jemand allgemein erklären, wie man verrauschte Signale erkennt und korrigiert? Oder wenn das zu weit geht, vielleicht nur dieses spezielle Problem? Auch wenn irgendetwas mit meiner Schaltung nicht stimmt, wäre es schön, es auch zu wissen. In der folgenden Abbildung ist das Signal, das ich anzeige, der TACH-Eingang links von der Schaltung:
UPDATE
Nach hilfreichen Vorschlägen von @MichaelKaras und @techydude habe ich Q2 als Ursache für Probleme ausgeschlossen, indem ich es vollständig aus dem Stromkreis genommen und den Lüfter direkt geerdet habe. Keine nennenswerten Auswirkungen auf das Geräusch.
Also habe ich dann den externen Interrupt auf RA2 codiert, um ein "gereinigtes" Signal von einem Ersatz-Pin (in diesem Fall RA1) auszugeben, was sehr hilfreich war, aber aufgrund falscher Interrupts immer noch flackerte. (Also habe ich den Interrupt so eingestellt, dass die ansteigende Flanke eingefangen und dann bei Auslösung auf die abfallende Flanke umgeschaltet wird und umgekehrt, und RA1 entsprechend eingestellt / zurückgesetzt).
Nach dem Hinzufügen eines 100-nF-Kondensators über R3 (als Teil des @ techydude-Vorschlags) erhalte ich jetzt eine viel stabilere Ausgabe. Der folgende Screenshot zeigt das TACH-Signal nach der Reinigung über den von Schmitt ausgelösten RA2-Eingang und den erneuten Ausgang an RA1:
Antworten:
Über Ihren Schaltplan:
Alles scheint in Ordnung zu sein, Sie können den R2 auf 10k oder sogar 100k erhöhen, die Kapazität des MOST ist so gering, dass der FAN eine viel größere Trägheit aufweist als die Ausschaltverzögerung im MOST, wahrscheinlich sogar mit 1M. Auf diese Weise ist die Position Ihres 100R irrelevant und während Sie unterwegs sind, verschwenden Sie keine mAs. Wenn Sie de uC nie im Reset-Modus halten, ist dies technisch gesehen überhaupt nicht erforderlich, da Ihr uC ihn aktiv hoch oder niedrig zieht.
Beim PWM-Signal konnte festgestellt werden, ob das Datenblatt eine externe Spannung von bis zu 12 V zulässt, obwohl ich bezweifle, dass dies in beiden Fällen einen großen Unterschied ausmachen wird.
Über den Lärm:
EDIT: Ich habe deine Handlung für kHz falsch verstanden, was dumm ist, wenn du daran denkst, wo es Hz ist. Ein Teil meiner Geschichte wird sich ein wenig ändern (wie das Gerede über die Notwendigkeit von MHz für die digitale Arbeit), aber die allgemeine Idee bleibt.
Ich werde den gesamten Beitrag unverändert lassen, aber für ein 100-Hz-Signal mit 30-kHz-Rauschen anstelle von 100-kHz-Rauschen mit> 5-MHz-Rauschen (hat auch nicht wirklich Sinn gemacht, oder?) Könnten Sie die Widerstände erhöhen, die mit Kondensatoren interagieren Erhöhen Sie die Kondensatoren um den Faktor 10 und um den Faktor 50 bis 100. Dadurch erhalten Sie in allen Beispielen eine um den Faktor 1000 niedrigere Filterfrequenz. Es ist aber auch in Ordnung, die Kondensatoren nur um den Faktor 10 bis 20 zu erhöhen, um schärfere Flanken oder eine schnellere Reaktion auf Ihr interessierendes Signal zu erzielen, da 30 kHz sehr weit von 100 Hz entfernt sind.
Betrachten Sie diesen Beitrag also als für hohe Frequenzen geschrieben und verkleinern Sie die Ideen, damit sie auch viel einfacher zu implementieren sind! (Vor allem die digitale Ablehnung in 3.)
Ende der Bearbeitung
Da Sie einen so schönen Anwendungsfall für die Erarbeitung von Methoden zur Rauschunterdrückung darstellen, werde ich versuchen, eine für Ihre Situation zutreffende zu erstellen.
Für jeden, der liest, sei dir bewusst:
Hier geht es nur um Rauschen bei einem digitalen Signal
In einem digitalen Signal können Sie davon ausgehen, dass es nur zwei Spannungen gibt, an denen Sie interessiert sind: "Ein" und "Aus". Alles dazwischen ist sinnlos und gehört zu Lärm oder falsch. In einem analogen Signal müssen Sie über jeden Spannungspegel Bescheid wissen und mit Lasten von Cs, Ls usw. tatsächlich filtern.
Ein Problem in Ihrem Signal besteht darin, dass die negativen Rauschspitzen auf dem hohen Pegel und die positiven Rauschspitzen auf dem niedrigen Pegel sehr nahe beieinander liegen, sodass ein einfacher Standard-Trigger selbst bei einstellbarem Pegel nicht absolut garantieren kann, dass Sie nie etwas bekommen verwirrt.
Deine Optionen:
1. Ändern Sie die Vorspannung:
Das Positive hat sehr geringe negative Spitzen, weil Ihr Klimmzug nicht vom Rauschen profitieren kann. Das Einfachste, was Sie versuchen können, ist, diesen Widerstand zu verringern. Es besteht die Gefahr, dass dadurch auch die Spitzen für das Ausschaltsignal erhöht werden, sodass dies möglicherweise nicht immer funktioniert. Es ist jedoch sehr wahrscheinlich, dass Sie zwischen den Spitzen einen gewissen Spielraum haben, um eine einfache Hysterese einzustellen.
2. Ändern Sie die Spannungspegel
Wenn der Lüfter es zulässt, können Sie den Tacho problemlos auf eine höhere Spannung einstellen und einen Zwischenzustand hinzufügen:
simulieren Sie diese Schaltung - Schaltplan erstellt mit CircuitLab
Jetzt ist möglicherweise gerade genug Platz zwischen den hohen und niedrigen Spitzen vorhanden, um sicherzustellen, dass der MOST immer eingeschaltet ist, auch wenn negative Spitzen vorhanden sind, und immer ausgeschaltet, selbst wenn positive Spitzen vorhanden sind. Möglicherweise sind einige Dioden, Zenerdioden oder Widerstände erforderlich, um den Sollwert in der neuen Situation zu erreichen. Wenn die Spitzen des negativen Signals jedoch unverändert bleiben, sollten sie den MOSFET nicht auslösen, solange Sie dies nicht tun Ersetzen Sie ihn durch einen mit einer Gate-Schwelle unter 2V.
3. Fügen Sie "langsame" Hysterese hinzu:
Dies ist ein Trick, der häufig verwendet wird, wenn Sie wissen, dass ein stacheliges Rauschsignal mindestens eine Größenordnung größer ist als das Signal, an dem Sie interessiert sind. Er verzögert das Signal ein wenig, sodass er nicht in Situationen verwendet werden kann, in denen der genaue Moment vorliegt einer Ein / Aus-Änderung ist wichtig.
Für ein Signal, bei dem Sie nur die Form oder Frequenz kennen möchten, ist dies eine sehr robuste Methode. Grundsätzlich beginnt es zu triggern, wenn eine Spannung die Schwelle überschreitet, schließt diese Aktion jedoch nur ab, wenn sie dort bleibt. Es gibt viele Möglichkeiten, eine zu erstellen.
Sie können dies in der Steuerung tun (was am einfachsten in der Komponentenzählung ist): Sie können an einer Flanke triggern und dann einige weitere Werte mit einer ausreichenden Geschwindigkeit abtasten, um das Hoch zwischen den Rauschspitzen zu erkennen, aber nicht zu verwechseln, wenn eine ganze Periode des Tiefs verpasst wird. Dann treffen Sie eine vordefinierte Beurteilung, die auf der Kenntnis Ihres Signals und Ihres Rauschens basiert. Wenn Sie beispielsweise mit 10 MHz abtasten könnten, könnten Sie 50 Abtastwerte erfassen und sicher sein, dass eine 100-kHz-Höchstfrequenz nicht ignoriert wird, wenn Sie die Mehrheitsregel einhalten. Dh: Mindestens 25 müssen niedrig sein, damit es tatsächlich niedrig ist. Deine Spikes sind nur sehr dünn und meistens ist es das Originalsignal, damit könnte das funktionieren, aber die Anzahl der Mehrheiten kann angepasst werden. Dies funktioniert auch mit 1MHz und 6 oder 7 Samples, aber es wird weniger von der tatsächlichen Mehrheit sein, so dass es dort wieder einige Risiken geben kann.
Sie können dies auch extern tun: Es ist jedoch bereits VIEL komplizierter als das Hinzufügen eines einfachen Filters, insbesondere wenn Sie sich das Ergebnis mit einem uC ansehen, dessen Eingabe bereits eine gewisse Hysterese aufweist. Aber es macht Spaß darüber nachzudenken, also lasst uns:
simulieren Sie diese Schaltung
U1 ist jeder geeignete Operationsverstärker oder Comperator. Comperatoren sind bessere Switcher, oft mit besserem Swing, aber für Sub-MHz reicht ein OpAmp mit anständigem Rail / Rail-Swing leicht aus.
Während diese Art von Hysterese mit mindestens einem Widerstand weniger aufgebaut werden kann, ist dieser leichter zu erklären und als solcher leichter zu modifizieren.
Stellen Sie es sich zunächst ohne den Kondensator vor:
Stellen Sie zunächst fest, dass der Widerstandsteiler durch den Ausgang von U1 beeinflusst wird, und ziehen Sie ihn durch den scheinbaren Widerstand von 20 kOhm etwas tiefer oder höher. Angenommen, am positiven Eingang von U1 ist eine Spannung von 1,1 V abgerundet, wenn der Ausgang 0 ist, und 3,9 V aufgerundet, wenn der Ausgang 5 V ist.
Wenn der Start-Tachoeingang für den stationären Betrieb hoch ist, ist der Ausgang von U1 niedrig, da der Tachoeingang invertiert ist. Der negative Eingang wird also wieder aufgrund des zusätzlichen Pull-up-Widerstands ungefähr 2,3 V betragen. Da der positive Eingang nur 1,1 V beträgt, muss der Eingang auf unter 2,2 V abfallen, damit der negative Eingang eine niedrigere Spannung sieht und der Ausgang umkippt.
Wenn der Ausgang umkippt, wird der negative Eingang 3,6 V sehen (da zu diesem Zeitpunkt das Eingangssignal 2,2 V beträgt, beträgt der Ausgang von U1 5 V, so dass ihre Mitte, die von den 10k-Widerständen gebildet wird, ungefähr 3,6 V beträgt), aber der positive Der Eingang hat sich von 1,1 V auf 3,9 V gedreht, so dass das Negative immer noch unter dem positiven Eingang liegt und der Ausgang 5 V bleibt.
Wenn das Signal jetzt schnell "abbricht" und zurückspringt, wird der Ausgang von U1 schnell wieder zurückspringen, aber dann musste die Spitze bereits unter 2,2 V fallen, das ist also besser als nichts.
Wenn das Signal weiter auf 0 abfällt, wird die stabile Situation nur stärker, der negative Eingang wird auf 2,5 V abfallen (da angenommen wird, dass der Tacho des Lüfters stark genug ist, um herunterzuziehen) und der positive Wert wird bei etwa 3,9 liegen V.
Jetzt muss das Signal über 2,7 V ansteigen, damit der Ausgang in die andere Richtung kippt. Sehr wahrscheinlich werden 95% Ihrer Spikes bereits ignoriert.
Kondensator hinzufügen:
Mit dem Kondensator muss das eingehende Signal genügend Energie für genügend Zeit zum Laden oder Entladen des Kondensators liefern. In der Tat ist das schon ein RC-Filter. Spitzen, die schnell eintauchen und sich dann erholen, können den Kondensator nicht entladen.
Der Wert von C hängt natürlich vom Quellensignal und vom Rauschsignal ab. Ich habe 510pF für ein 100kHz-Quellensignal geparkt und höchstens 1us Spike-Dauer, aber ich habe nicht wirklich viel gerechnet. Es ist nur ein RC-Zeit-basiertes Bauchgefühl, dass dies in der Nähe dessen sein könnte, was funktionieren wird.
4. Filtern Sie das Rauschen heraus
Dies ist ein bisschen wie das Filtern eines analogen Signals. Sie können ein einfaches RC-Netzwerk verwenden, wie im vorherigen Abschnitt beschrieben:
simulieren Sie diese Schaltung
Da die Rauschspitzen kleiner oder gleich 1 us sind, können sie die Spannung des Kondensators nicht wesentlich verändern, da seine RC-Zeit 5 us beträgt. Dies bedeutet, dass die Energie in den Spitzen auf einen Durchschnitt abgeflacht wird. Da Sie hohe Spitzen und niedrige Einbrüche auf den Spitzen sehen, ist es sogar möglich, dass die Mittelwerte sehr nahe an 0 V und 5 V liegen, aber das kann nur mit besseren Bildern oder nur mit einem Experiment gesagt werden. Da Sie es einem uC-Pin zuführen, wird die RC-Zeit wahrscheinlich ausreichen, um es als hoch oder niedrig anzusehen. Dies führt zu einer geringen Verzerrung, da der Pull-up-Widerstand langsamer lädt als entlädt. Einige Änderungen der Werte können zu einem Ergebnis führen, das vernachlässigbar ist.
Wenn das nicht ausreicht, können Sie weitere Komponenten hinzufügen, aber Sie übertreiben es sehr schnell, wenn Ihr dominantes Rauschen mindestens zehnmal "schneller" als Ihr Signal ist.
Sie könnten eine 4,7-uH-Induktivität in Reihe mit dem Widerstand schalten, um weitere hochfrequente Flanken auszugleichen, möglicherweise sogar 10 uH.
Um ehrlich zu sein, besteht der einzige Grund, mit Ls in einem Signal Ihrer Art zu experimentieren, darin, ein Gleichgewicht zu finden, in dem R groß ist, C klein ist und L nur zum Glätten beiträgt einige Flanken, so dass R2 / R1 klein genug ist, um den Unterschied in der Anstiegs- und Abfallzeit zu ignorieren. wie ein R1 von 33 k, C von 150 pF und ein L in Reihe mit R1 von 56 uH. Oder vielleicht eine Ferritperle anstelle des Induktors, hängt ein bisschen von der Schärfe Ihrer Spikes ab.
Aber ich würde sagen, ich habe es schon überlegt.
quelle
Solche Geräusche von einem Lüfter-Tacho sind weit verbreitet, da die Schaltung (die normalerweise einen Hall-Effekt-Sensor enthält) im Lüfter, die den Tacho-Ausgang erzeugt, selbst an Ihrer PWM-Frequenz ein- und ausgeschaltet wird (wenn Ihr PWM-Ausgang einen anderen Wert hat) als 100% -On), nicht nur die Versorgung des Motors selbst. Sicher, sie haben eine gewisse Kapazität, um die Versorgung dieser Schaltkreise zu glätten, aber wenn Sie beispielsweise eine 12-V-Lüfterspannungsversorgung vorsehen, reicht diese Kapazität aus, um zwischen den minimalen PWM-Ausschaltperioden mehrere Volt aufrechtzuerhalten. Effektsensor & Tachoausgang hochziehen (wenn der Lüfter seinen eigenen Tachoausgang hochzieht), um ein wiederherstellbares Ausgangssignal bereitzustellen. Ja, Fans sind unordentlich, wenn Sie ihre Versorgung PWM. Einige Lüfter bieten einen PWM-Geschwindigkeitseingang, der von ihrer +12 V-Versorgung getrennt ist.
Ihre PWM scheint ungefähr 27 kHz zu sein. Das Gute an dieser speziellen Situation ist, dass Ihre Tachoausgabe bei 100% Leistung ungefähr 800 Hz beträgt, was <1/30 der Frequenz Ihrer PWM entspricht. Filtern Sie diese Tachoausgabe, um den größten Teil des PWM-Rauschens zu beseitigen einfach und lohnenswert. Es ist spät hier, also habe ich CBF die Berechnungen durchgearbeitet, aber weil es Open-Drain und Ihre Pull-Up-Versorgungsspannung (im Lüfter) ist, die von PWM, einer Kappe zwischen Tacho und +12 V-Schiene (nicht der PWM), belästigt wird Ausgang von Ihrem Lüfterantriebsschaltkreis) ist wahrscheinlich eine bessere Option als eine Kappe am Tacho gegen Masse. Probieren Sie beides und sehen Sie. Beginnen Sie mit einer 100n Keramikkappe mit geeigneter Spannung und sehen Sie, wie sie aussieht.
Mit einem Schmigger-Eingang auf dem PIC können Sie möglicherweise sogar davonkommen, ohne diesen Tacho-Ausgang zu filtern, bevor Sie ihn in Ihren PIC einfügen. Sie verfügen jedoch über das Freq-Differential, das es Ihnen leicht ermöglicht, einen weiten Weg zur Reinigung dieses Ausgangs zu gehen oben.
Ein mögliches Problem bei der Verarbeitung des Tachosignals vom Lüfter: Wenn der Lüfter intern mit 10k auf +12 hochzieht (manche tun es, manche nicht) und Sie auch das Tachosignal zu Ihrem Lüfter hochziehen + 5V-Schiene, dann ziehen Sie es tatsächlich nach unten! Abhängig von der Versorgungsspannung des Lüfters, der Stärke des Pull-ups usw. gibt es verschiedene Schaltungskonfigurationen. Versuchen Sie, diese mit Ihrem Multimeter zu messen und lassen Sie es uns wissen.
quelle
Eine mögliche Ursache für das Rauschen im TACH-Signal kann sein, dass der IRF150-FET eine nicht ausreichend niedrige EIN-Impedanz aufweist. Dies könnte daran liegen, dass der FET RdsON ziemlich hoch ist oder der FET bei der bereitgestellten Gate-Ansteuerspannung nicht vollständig eingeschaltet ist.
Wenn der FAN-Strom mit dem PWM-Signal ein- und ausgeschaltet wird, fällt der FET-Widerstand ab. Dies führt dazu, dass die "GND" -Referenz des Lüfters nach oben und unten stößt und sich in das Rauschen des TACH-Signals niederschlägt.
Sie können dies überprüfen, um festzustellen, ob der von mir beschriebene Effekt der Fall ist, indem Sie das GND-Kabel des Oszilloskops an den FET-Drain anschließen und dann das TACH-Signal betrachten. Das Signal würde viel sauberer aussehen.
Die Lösung wäre, einen FET mit viel niedrigerem RdsON auszuwählen, wenn dieser mit einem von Ihrem System bereitgestellten Gate-Treiber geliefert wird.
Eine andere mögliche Idee besteht darin, einen P-FET zu verwenden, um die +12 V-Leitung des Lüfters anstelle der GND-Leitung zu schalten.
Beachten Sie, dass die von Ihnen verwendete Gate-Widerstands-Anordnung dazu führt, dass Sie einen Teil Ihres potenziellen Gate-Treibers verlieren. Bewegen Sie den 1K-Widerstand auf die andere Seite des 100 Ohm.
quelle
Das klingt nach einem Job für einen Tiefpassfilter. Sie müssen das Nutzsignal mit f 1 um 1 kHz halten und das störende Signal mit f 2 um 25 kHz entfernen . Die Grenzfrequenz kann als geometrisches Mittel von f gewählt werden 1 und f 2 gewählt werden (suboptimal, aber einfach):
f c = sqrt (1 × 25) = 5 kHz.
Unter der Annahme, dass ein einfaches RC-Filter ausreicht und Sie bereits den Widerstand in der TACH-Schaltung haben (R 3 = 10 kOhm), sollte der entsprechende Kondensatorwert berechnet werden, um dem 5-kHz- Zeitaufwand zu entsprechen :
C = 1 / (2 · pi · fc · R) = 1 / (6,28 · 5000 · 10000) = 3,2 · 10 & supmin; & sup9; F.
Sie müssen also lediglich einen 3nF-Kondensator zwischen der TACH-Leitung und der Masse anlöten. Das Hochfrequenzrauschen wird um den Faktor 20 oder mehr gedämpft, was für Ihre Anwendung ausreichend sein sollte.
quelle