Mixed-Signal-PCB-Layout für PSoC


16

Ich entwickle eine Leiterplatte für eine analoge Sensoranwendung. Es verwendet den internen ADC auf einer PSoC3. Wie üblich ist die Anwendung sehr platzbeschränkt (11 mm x 21 mm), so dass ich beim PCB-Layout einige Kompromisse eingehen musste, die ich auf einer größeren PCB nicht gemacht hätte.

PSoC-Leiterplatte

Die Platine wird mit geregelten 6 V versorgt und enthält zwei lineare 5 V-Regler. Ein MCP1702 für die digitale Versorgung und ein MIC5205 für die analoge Versorgung. Die Platine erfasst fünf A1324- Hall-Effekt-Sensoren. Jedes Hall-Effekt-Ausgangssignal wird mit einem 100nF + 1k-RC-Filter gefiltert. Ein Sensor befindet sich auf der Platine (rechts unten). Die anderen 4 stecken Sie in den rechten 6-poligen Stecker.

Der Chip fungiert als SPI-Slave, aber zwischen SPI-Transaktionen werden immer ADC-Abtastungen vorgenommen , sodass der SPI die analogen Signale nicht stören sollte.

Leider sehe ich auf den analogen Signalen immer noch Rauschen (etwa 1,5 LSB bei 12 Bit), und ich frage mich, ob ich irgendetwas anders im Layout hätte machen können, um es zu verbessern.

PSoC-Layout

Bitte öffnen Sie das Bild in einem neuen Tab, um es in höherer Auflösung zu sehen.


Hinzugefügt:

Andere PCB-Designs, die ich mit dem MCP3208 durchgeführt habe , und die gleichen 5-V-Doppelversorgungen, die gleichen Sensoren und die gleichen RC-Filter haben bei 12 Bit kein merkliches Rauschen erzielt.

Der ADC auf der PSoC3 ist ein Delta-Sigma-Typ. Diese Version des PSoC ist auf 12 Bit begrenzt, aber eine andere Teilenummer verfügt über einen 16-Bit-ADC (obwohl mit einer niedrigeren Abtastrate).

Ich kümmere mich um das Rauschen und möchte es wirklich ein bisschen weiter in Richtung 12 ENOB treiben. Der Grund ist nicht die Genauigkeit, sondern die Geschwindigkeitsmessung. Gegenwärtig macht es dieser Geräuschpegel unmöglich, eine genaue Positions- und Geschwindigkeitssteuerung an einem Roboter durchzuführen.


Hinzugefügt:

Schema. Tut mir leid, es ist ein bisschen eng, aber Sie können die Werte gerade noch lesen.

PSoC Schema


1
Auch mit STOP NET-LABELS! Ihre Schaltung ist bei weitem nicht komplex genug, um sie zu benötigen, und wenn Sie die Verbindungen nicht wirklich anzeigen, ist es viel schwieriger, Verbindungen zu finden. Der Zweck des Schaltplans besteht wiederum darin, die beabsichtigte Funktion und Funktionalität der Schaltung sichtbar zu machen . Sie lassen den Computer dann die visuelle Darstellung in das tatsächliche physische Layout der Geräte übersetzen (was etwas ist, in dem Computer sehr gut sind).
Connor Wolf

1
@Rocketmagnet - Sie sind sicherlich hilfreich für die Person, die die Schaltung zeichnet . Sie sind für alle anderen absolut abscheulich .
Connor Wolf

1
Auch, wenn Sie Probleme haben mit zu müssen Strecke Drähte aufgrund platz Einschränkungen Sie dringend brauchen in die aussehen Pin-Swapping Funktionen in Altium. Grundsätzlich können Sie Pins angeben, die in der Komponentendefinition funktionell austauschbar sind (dh verschiedene E / A-Pins), und dann können Sie beim Routing der Leiterplatte die Leiterbahnen zu jedem der Pins führen, die funktionieren würden, anstatt nur zu dem einen Sie im Schaltplan angegeben. Anschließend können Sie das auf der Platine ausgewählte Routing mit dem Schaltplan synchronisieren.
Connor Wolf

1
@FakeName, während das Verbinden mit Beschriftungen die Verfolgung eines Stromkreises erschwert, kann das erneute Zeichnen jedes Symbols, um ein reines und sauberes Schema mit schönen geraden Linien zu erstellen, die Zeit für die schematische Eingabe vervierfachen. Ich würde gerne einen perfekten Schaltplan sehen, ich bin mir nicht sicher, ob es realistisch ist, einen zu fordern.
Das Photon

1
@Rocketmagnet, Ein sehr kleiner Leiterplattenbereich bedeutet nicht, dass Sie Ihren Schaltplan nicht auf D-Papier zeichnen können.
Das Photon

Antworten:


13

Bei einem ADC kommt es immer zu Rauschen, insbesondere bei SA-Typen (Successive Approximation) auf dem Mikrocontroller-Chip. Sigma-Delta ist besser für Gaußsches Rauschen geeignet, da es integriert wird. Erwarten Sie nicht 12 ENOB von einem 12-Bit-ADC.

Das Rauschen des Controllers ist ein Grund dafür, dass die meisten Mikrocontroller keine höhere Auflösung als 10 Bit bieten. Der AVR bietet die Möglichkeit, den Mikrocontroller während der ADC-Erfassung zu stoppen. Dies sollte bestätigen, dass zumindest ein Teil des Rauschens vom Controller stammt .

Aber die Frage ist: Interessiert es dich? 1,5 Bit Rauschen auf einem 12-Bit-ADC lassen immer noch mehr als 10 Bit oder besser als 0,1% übrig. Wie genau ist Ihr Hallsensor? Andere Komponenten in der Schaltung?

edit
Sie scheinen den internen Oszillator des PSoC zu verwenden, da ich im Schaltplan keinen Kristall sehe. Es sieht in Ordnung aus: Sie haben die richtige Entkopplung. Abgesehen von der internen Uhr scheint der einzige Hochgeschwindigkeitsteil in der Schaltung der SPI zu sein, aber Sie sagen, dass dies während der Messungen still sein wird. Der Rest der Platine ist DC oder wahrscheinlich relativ selten, wie die Hall-Effekt-Sensoren. Und es ist ein Damn Small ™, was auch hilft: Kürzere Spuren nehmen weniger Lärm auf. Klar, ich könnte nicht über den MCP1702 hinwegpicken, den ich um 90 ° im Uhrzeigersinn drehen würde, damit der Ausgangskondensator noch näher an den Pins platziert werden kann, aber das wird die Probleme nicht lösen.

Ich sehe nur eine Änderung im Layout, die Ihr S / N-Verhältnis verbessern könnte:

Bildbeschreibung hier eingeben

Im Datenblatt werden aufgeteilte analoge und digitale Masseebenen für "Optimale analoge Leistung" (Seite 10) vorgeschlagen.

Im Übrigen: Es ist wie gesagt ein kleines Board, das heißt kurze Spuren und Entkopplung innerhalb weniger mm. Ich würde mir also gerne noch einmal die Quelle des Rauschens ansehen. Hauptverdächtiger ist die Uhr der PSoC. Der PSoC kann mit einer sehr niedrigen Versorgungsspannung betrieben werden, was sein Rauschen verringern würde. Natürlich würde es viel helfen, wenn VDDA ebenfalls gesenkt werden muss, aber ich habe nirgendwo im Datenblatt gelesen, dass VDDA nicht höher als VDDD sein sollte.

Als nächstes der ADC. Auf Seite 55 des Datenblattes steht 66 dB SINAD, das sind 11 Bit, in der Nähe dessen, was Sie jetzt erhalten. Das A1324-Datenblatt gibt uns 7 mVpp Rauschen bei einer Ruhespannung von 2,5 V. Dies ist auch weit weniger als das 72-dB-Rauschabstand, das 12-Bit Ihnen geben könnte. Sie können dies mit zusätzlicher Filterung ein wenig verbessern.

Sie erwähnen die bessere Leistung des MCP3208, aber das ist ein ADC, der vom Mikrocontroller entfernt ist, und das könnte erklären, wie ein SA-ADC mit der gleichen Auflösung eine bessere Leistung als ein Sigma-Delta erzielen kann.

Die Optionen, die ich sehe, sind also: Verringern Sie die digitale Versorgungsspannung und trennen Sie analoge und digitale Masse.


Das ist eine sehr interessante Idee, um die digitale Versorgungsspannung der PSoC zu senken. VDDA kann sicherlich höher sein als VDDD.
Rocketmagnet

Glaubst du, ich sollte VSSA vom Wärmeleitpad trennen? Ich habe dies tatsächlich als ganz neue Frage gepostet .
Rocketmagnet

2

Dem stimme ich zu. 1,5 LSB Rauschen sind ziemlich vernünftig. http://www.cypress.com/?docID=39346 zeigt eine minimale SINAD von 66 dB im 12-Bit-Modus, was ENOB = 10.7 nahe legt.

Ich weiß, dass dies keine direkte Antwort auf Ihre Frage ist, aber ich interpretiere die Frage als "Wie behebe ich meine Probleme mit der Geschwindigkeitsregelung?" und nicht "Wie bekomme ich mehr als 10.5 ENOB?".

Wie unterscheiden Sie sich? Haben Sie genug freie Zeitmesser, um etwas zu tun, das glatter ist als ein zentraler Unterschied von zwei Punkten? Vielleicht etwas 5 Samples breites herausarbeiten, optimiert in Matlab?

Das klingt vielleicht ein bisschen komisch, aber das Velocity-Rauschen wird schlimmer, wenn Sie schneller sampeln

1LSBΔt

Seien Sie nicht beleidigend, sondern werfen Sie auch einen kurzen Blick darauf, ob in Ihrer Geschwindigkeitsregelung nichts Dummes vor sich geht, wie z. B. Probleme mit der Konvertierung zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlen, und stellen Sie sicher, dass Ihre Ganzzahlen breit genug sind, um Überlauffehler bei der Differenzierung zu vermeiden . Meine eigenen Steuerungsgleichungen werden oft so kompliziert, dass ich manchmal jede Operation explizit ausführe.

Schließlich, obwohl wahrscheinlich, verlieren Sie effektive Bits von der Oberseite, indem Sie nicht auf nahezu die volle Skala verstärken? In diesem Fall können Sie einen kleineren Vref-Wert verstärken oder bereitstellen.


Wir berechnen Position und Geschwindigkeit mit einem Alpha-Beta-Filter . Ich verstehe, dass das Velocity-Rauschen mit zunehmender Abtastrate zunimmt, wenn es naiv gemacht wird. Ich bin sicher, dass Velocity Noise nicht auf einen Vorzeichenfehler zurückzuführen ist. Und wir sind bereits fast in vollem Umfang, so dass ich keine Verstärkung mehr machen kann, ohne das Risiko einzugehen, die obere oder untere Grenze des Bereichs zu erreichen.
Rocketmagnet

Würden Sie sagen, dass ich das Layout nicht verbessern kann?
Rocketmagnet

Kann noch nichts sehen. Wie verstärken Sie die Hallsensoren? Haben Sie sich die Ausgabe der AB-Filter und Steuerungen als Realitätsprüfung angesehen? Lärm an Ihren Reglerausgängen beobachtet? Es könnte aufschlussreich sein, ein offizielles Lärmbudget für das gesamte System zu erstellen
Scott Seidman,

1
Aber! Der andere Vorteil des Differential-Modus ist, dass ich die Samplerate 4x erhöhen kann, damit ich ein Oversampling durchführen kann. Dies sollte den Lärm etwas verringern.
Rocketmagnet

1
Vielleicht eine Bypasskappe am Vref (nicht sicher, wie das geht, siehe Datenblatt). Abgesehen davon, denke ich, sind Sie dem idealen ENOB für den PSOC 3-ADC mit 12 Bit sehr nahe, wenn nicht sogar sehr nahe. Sie haben also so gut wie möglich gearbeitet!
Scott Seidman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.