MCU - Was passiert, wenn ich einen PWM-Ausgangspin direkt neben eine Reihe von ADC-Eingangspins stecke?

Ich denke derzeit über eine MCU-gesteuerte Schaltung nach, die eine Vielzahl von Dingen ausführen kann, einschließlich des Ansteuerns einiger BLDC-Motoren und einiger analoger Erfassungen (von Positionssensoren, Temperaturen und dergleichen).

Die Designer des Chips, den ich verwenden möchte (ein STM32F4, FWIW), haben es für angemessen erachtet, die folgenden zwei Pins direkt nebeneinander zu platzieren:

  1. Der einzig mögliche Ausgangspin für einen Timer, den ich als PWM-Ausgang für einen der Motortreiber verwenden möchte.
  2. ALLE ADC-Eingänge.

Noch ein paar Kleinigkeiten:

  • Der PWM-Pin kann mit sehr niedrigen/hohen Arbeitszyklen (<1 % bis > 99 %) bei 20 kHz laufen
  • Analoge Signale von Interesse reichen von ~2Hz bis ~200kHz, je nach Sensortyp.

Jetzt werde ich fortfahren und postulieren, dass es eine schlechte Praxis ist, einen PWM-Pin direkt neben einem ADC-Eingang zu platzieren, aber ich frage mich:

  • hat das schon mal jemand mit erfolg probiert?
  • Was sind einige potenzielle Abhilfemaßnahmen, die es ermöglichen würden, dass dies funktioniert?

Bearbeiten:

So sieht der MCU-Teil aus. Ich habe den störenden Timer-Pin hervorgehoben:

Geben Sie hier die Bildbeschreibung ein

Kannst du deine Schaltung veröffentlichen? oder es ist TS? Ich kann sagen, dass Ihre benachbarten PWM-Pins einige EMI / RFI zu allen nahe gelegenen Eingangspins induzieren . Wie Sie gestalten und gestalten, bleibt Ihnen überlassen. Welche Maßnahmen haben Sie ergriffen, um Emissionen und entsprechenden Empfang zu vermeiden?
Es gibt noch nicht viel Schaltung – ST veröffentlicht ein Dienstprogramm namens STM32CubeMX, mit dem Sie eine MCU entwerfen können, bevor Sie sich auf ein Design festlegen, das ich derzeit verwende, um die Alternativen zu erkunden. Falls Sie Details wünschen, schaue ich mir die F4-Serie in TQFP100/144-Paketen an. Der TIM8 CH1N-Ausgang ist auf zwei Pins abgebildet, deren alternative Funktionen ADCs sind, und befindet sich genau in der Mitte des Abschnitts des Chips, in dem sich alle ADC-Pins befinden. Ich weiß nicht, was die Designer dazu veranlasst hat (ich kann nur annehmen, dass es einen guten Grund gab, den ich nicht sehen kann), und ich überlege, auf einen größeren Chip umzusteigen, um das Problem zu vermeiden.
Eine Sache, die ich in Betracht gezogen habe, ist, die benachbarten Pins zu erden und die PWM-Spur durch eine Durchkontaktierung so nah wie möglich am Pin zu führen und die Spur auf die andere Seite einer Masseebene zu verschieben. Auf diese Weise ist nur ein kurzer Abschnitt ungeschirmt und die angrenzenden Pins werden nicht verwendet. Diese Lösung ist nicht ideal: Es würde erfordern, dass ich 2 der 24 verfügbaren ADC-Pins aufgeben muss, die für diese Anwendung bereits Mangelware sind. Aber ich weiß nicht, wie effektiv diese Lösung wäre, und das Design ist im Moment eher zeitkritisch als kostenkritisch.
Bitte veröffentlichen Sie alles, was Sie haben und was auch immer Sie verwenden möchten, und stellen Sie Fragen dazu.
Das Hervorrufen von Rauschen in ADC-Eingängen ist das, was Sie brauchen, damit Oversampling funktioniert. Wenn Sie das nicht tun, vermeiden Sie den Lärm.
Das Wichtigste ist, sicherzustellen, dass der pwm-Rückstrom direkt unter der Spur verläuft (und natürlich sollte es kein Klingeln geben, also entweder kurz machen oder beenden). Dann wird es den ADC nicht beeinflussen.
@GregoryKornblum, ich bin mir nicht sicher, ob das stimmt. Der Rückstrompfad eines Hochfrequenzsignals ist eine wichtige Überlegung, aber das wirkt sich nicht auf die Kopplung in einen nahe gelegenen Leiter aus. Übersprechen wird immer noch auftreten.
Also. Normalerweise verwende ich die Layout-Regel des Mindestabstands, die das magnetische Übersprechen reduziert. Die kapazitive Kopplung scheint hier kein Problem zu sein. Aber ja, Sie haben Recht, magnetische Kopplung sollte vermieden werden.

Antworten (3)

Sie haben tatsächlich ein legitimes Nebensprechproblem identifiziert. Genau genommen ist die Kopplungsgröße des Übersprechens keine Funktion der Frequenz des Signals. Es hängt davon ab, wie schnell das Signal von hoch zu niedrig oder von niedrig zu hoch wechselt. Selbst ein 1-Hz-PWM-Signal würde während der ansteigenden und abfallenden Flanken auf eine nahe gelegene Leitung überkoppeln. Offensichtlich geschieht dies bei Ihrem 20-kHz-Signal 40.000 Mal pro Sekunde, was sicherlich ein Problem darstellen kann. Als akademischer Punkt von Interesse wird ein schönes glattes Sinuswellensignal nicht so viel Übersprechen induzieren wie eine Rechteckwelle mit der gleichen Frequenz.

Neben der Anstiegs- und Abfallzeit der Rechteckflanken ist das Übersprechen auch eine Funktion des Abstands zwischen den Signalspuren, der Länge, die die beiden Spuren gemeinsam zurücklegen, und ihres Abstands über ihrer Referenzebene.

Da sich der PWM-Pin und der ADC-Pin physisch nebeneinander befinden, befinden sich ihre Spuren für eine gewisse Spurlänge in unmittelbarer Nähe, und Sie können nichts dagegen tun. Offensichtlich hilft jede Methode, die beiden Spuren so schnell wie möglich voneinander zu entfernen. Sie können den Kopplungseffekt auch verringern, indem Sie darauf achten, dass die Referenzebene sehr nahe liegt. Auf einer Leiterplatte bedeutet dies, dass eine 4-Lagen-Platine (oder mehr) verwendet werden muss, damit eine Masseebene nicht weiter als eine Prepreg-Dicke entfernt platziert werden kann (normalerweise nur wenige Milli-Inch). Auf einer 2-lagigen Platine ist die Masseebene die gegenüberliegende Seite der Platine, die normalerweise 63 mils entfernt ist und sehr schlecht für Übersprechen ist.

Es gibt einen sehr guten kostenlosen Online-Rechner namens Saturn PCB Design Toolkit , mit dem Sie die Größenordnung des Übersprechens schätzen können. Anhand Ihres Layouts können Sie sich ein Bild davon machen, wie stark das Übersprechen wird. Sie können die Übergangszeit nicht kennen, ohne die Treiberstärke des Ausgangstreibers und die genaue Impedanz der mit dem PWM-Pin verbundenen Spur zu kennen, aber Sie können ungefähr 10 ns als konservative Annäherung verwenden.

Wenn für Ihre ADC-Messwerte eine sehr hohe Genauigkeit erforderlich ist und Ihre berechnete Nebensprechgröße zu hoch ist, ist es vielleicht das Beste, eine andere MCU zu wählen. Es gibt tonnenweise mehr vom selben Hersteller, daher sollte es trivial sein, einen mit einem PWM- und einem ADC-Pin getrennt voneinander zu finden. Wenn es einen Grund gibt, dass Sie diese spezielle MCU verwenden müssen, müssen Sie bestimmen, mit wie viel Übersprechen Sie leben können, und darauf abstimmen.

Akzeptiert für die gründlichste Behandlung des Themas. Danke, dass du dir die Zeit genommen hast, @Dan Laks!

Ich bin überrascht, dass hier niemand etwas über den Impedanzpegel auf den ADC-Leitungen erwähnt hat! Offensichtlich ist es einfacher, eine hochohmige Leitung zu einem Eingang zu stören, als eine niederohmige Leitung zu stören. Wenn Ihre Sensoren hochohmige Ausgänge haben, würde ich empfehlen, ihre Ausgangsspannung lokal (in der Nähe des Sensors) zu puffern. Wenn Ihre Sensoren über Ausgänge mit niedriger Ausgangsimpedanz verfügen, ist eine Pufferung möglicherweise nicht erforderlich.

Sie könnten auch in Betracht ziehen, die Signale des Sensors ohnehin in kurzer Entfernung von der MCU zu puffern und sicherzustellen, dass die Signale "sauber" bleiben. Leiten Sie sie dann zu den ADC-Eingängen.

Je nachdem, wie gut das Layout-Tool ist (ein Layout vorausgesetzt), könnte auch ein Schutzring um den ADC-Eingang von Vorteil sein.
@PeterSmith, kannst du ein Beispiel dafür geben? Die einzige Möglichkeit, die mir derzeit einfällt, um einen Schutzring zu implementieren, besteht darin, die benachbarten Pins zu erden und dann GND darüber zu gießen. Die Kombination mit einer Durchkontaktierung sehr nahe am PWM-Pin, um das Signal auf die andere Seite der Platine (und die andere Seite einer Masseebene) zu leiten, vervollständigt das Design. Aber ich möchte dies nach Möglichkeit vermeiden, da es sich bei beiden um ADC-Pins handelt, die bei meinem Design so wie es ist knapp sind.
Ich werde morgen früh etwas zusammenstellen
Minimieren Sie die Länge der eng parallelen Leiterbahn, indem Sie entweder den PWM oder den ADC zurück unter das STM führen und sofort auf die andere Seite der Platine durchstecken. Ich würde die PWM nehmen, da sie am lautesten ist und sich nicht um Rauschen kümmern könnte, das vom Chip selbst kommt.

Sie sollten die GPIO-Geschwindigkeit auf den niedrigsten Wert einstellen, um eine längere Anstiegs- und Abfallzeit zu haben. Dies sollte bei Übersprechproblemen helfen. Dieses Übersprechen ist induktiv, wenn Ihre PWM-Leitung keine Leitung mit niedriger Impedanz ist, sollten Sie keine Probleme haben.

Während dies im Allgemeinen ein interessanter Ansatz ist, ist in meinem speziellen Fall das Flanken-Timing wichtig, da der Motortreiber möglicherweise durch dieses PWM-Signal durchschießt. Ich möchte alles vermeiden, was potenzielle Timing-Probleme dieser Art verursacht (und hier eine Notiz für diejenigen hinterlassen, die nach mir kommen).
Ok, dann sollten Sie die Anstiegs- und Abfallzeit länger halten. Aufgrund der niedrigen Frequenz (20 KHz) sollten Sie ein wirklich geringes Über- oder Unterschwingen haben.