Ich entwickle eine Leiterplatte für eine analoge Sensoranwendung. Es verwendet den internen ADC auf einem 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 bei einer größeren PCB nicht gemacht hätte.
Die Platine wird mit geregelten 6V versorgt und enthält zwei 5V-Linearregler. Ein MCP1702 für die digitale Versorgung und ein MIC5205 für die analoge Versorgung. Das Board erfasst fünf A1324 Hall-Effekt-Sensoren. Jedes Hall-Effekt-Ausgangssignal wird durch einen 100nF + 1k RC-Filter gefiltert. Ein Sensor befindet sich auf der Platine selbst (unten rechts). Die anderen 4 stecken Sie in den rechten 6-poligen Stecker.
Der Chip fungiert als SPI-Slave, aber ADC-Samples werden immer zwischen SPI-Transaktionen genommen, sodass der SPI die analogen Signale nicht stören sollte.
Leider sehe ich immer noch ein gewisses Rauschen (etwa 1,5 LSB bei 12 Bit) in den analogen Signalen, und ich frage mich, ob ich im Layout etwas hätte anders machen können, um es zu verbessern.
Bitte öffnen Sie das Bild in einem neuen Tab, um es in höherer Auflösung anzuzeigen.
Hinzugefügt:
Andere PCB-Designs, die ich mit dem MCP3208 erstellt habe , und die gleichen dualen 5-V-Versorgungen, die gleichen Sensoren und die gleichen RC-Filter haben bei 12 Bit kein merkliches Rauschen erzielt.
Der ADC auf dem PSoC3 ist ein Delta-Sigma-Typ. Diese Version des PSoC ist auf 12 Bit begrenzt, aber eine andere Teilenummer hat einen 16-Bit-ADC (allerdings mit einer niedrigeren Abtastrate).
Ich mache mir Sorgen um das Rauschen und würde es wirklich gerne 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. Leider ist es etwas eng, aber man kann gerade noch die Werte ablesen.
Sie werden immer etwas Rauschen auf einem ADC haben, insbesondere SA-Typen (Successive Approximation) auf dem Mikrocontroller-Die. Sigma-Delta funktionieren besser für Gaußsches Rauschen, da sie es integrieren. Erwarten Sie nicht 12 ENOB von einem 12-Bit-ADC.
Das Rauschen des Controllers ist ein Grund, warum die meisten Mikrocontroller keine höhere Auflösung als 10 Bit liefern, und der AVR bietet die Möglichkeit, den Mikrocontroller während der ADC-Erfassung zu stoppen, was bestätigen sollte, dass zumindest ein Teil des Rauschens vom Controller kommt .
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 dein Hallsensor? Andere Komponenten in der Schaltung?
Bearbeiten
Sie scheinen den internen Oszillator des PSoC zu verwenden, da ich auf dem Schaltplan keinen Kristall sehe. Es sieht OK 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 dieser während der Messungen schweigen wird. Der Rest der Platine ist Gleichstrom oder wahrscheinlich relativ niederfrequent wie die Hall-Effekt-Sensoren. Und es ist ein Damn Small™, was auch hilft: Kürzere Spuren nehmen weniger Rauschen auf. Sicherlich könnte ich beim MCP1702 pingelig sein, den ich um 90 ° gegen den 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:
Im Datenblatt werden geteilte analoge und digitale Masseebenen für „Optimale analoge Leistung“ (Seite 10) vorgeschlagen.
Ansonsten: kleine Platine wie gesagt, das bedeutet kurze Leiterbahnen und Entkopplung innerhalb weniger mm. Deshalb würde ich gerne noch einmal nach der Quelle des Rauschens suchen. Hauptverdächtiger ist die Uhr des PSoC. Der PSoC kann mit einer sehr niedrigen Versorgungsspannung betrieben werden, was sein Rauschen reduzieren würde. Natürlich würde es viel helfen, wenn VDDA auch gesenkt werden müsste, 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 Datenblatts steht 66 dB SINAD, das sind 11 Bit, nahe an dem, was Sie jetzt bekommen. Das A1324-Datenblatt gibt uns 7 mVpp Rauschen bei einer Ruhespannung von 2,5 V. Das ist auch weit weniger als das 72-dB-S/N-Verhältnis, das Ihnen 12-Bit bieten könnte. Sie können dies durch zusätzliche Filterung ein wenig verbessern.
Sie erwähnen die bessere Leistung des MCP3208, aber das ist ein ADC vom Mikrocontroller entfernt, und das erklärt möglicherweise, warum ein SA-ADC bei gleicher Auflösung besser abschneiden kann als ein Sigma-Delta.
Also, die Optionen, die ich sehe: Senken Sie die digitale Versorgungsspannung und teilen Sie analoge und digitale Masse auf.
Ich stimme dem oben genannten zu. 1,5 LSB Rauschen ist ziemlich vernünftig. http://www.cypress.com/?docID=39346 zeigt einen minimalen SINAD von 66 dB im 12-Bit-Modus, was auf ENOB = 10,7 hindeutet.
Ich weiß, dass dies keine direkte Antwort auf Ihre Frage ist, aber ich werde die Frage interpretieren als "Wie behebe ich meine Probleme mit der Geschwindigkeitsregelung?" und nicht "Wie bekomme ich mehr als 10,5 ENOB?".
Wie differenzieren Sie? Haben Sie genug freie Takte, um etwas Glättenderes zu machen als eine Differenz von zwei Punkten in der Mitte? Vielleicht etwas 5 Samples breit ausarbeiten, optimiert in Matlab?
Auch dies mag etwas komisch klingen, aber das Geschwindigkeitsrauschen wird schlimmer, wenn Sie schneller sampeln
Um nicht beleidigend zu sein, aber werfen Sie auch einen kurzen Blick, um sicherzustellen, dass in Ihrer Geschwindigkeitssteuerung nichts Dummes vor sich geht, wie z . Meine eigenen Steuergleichungen werden oft so kompliziert, dass ich manchmal jede Operation explizit umsetze.
Zu guter Letzt, obwohl vielleicht am wahrscheinlichsten, verlieren Sie effektive Bits von der Spitze, indem Sie nicht auf nahezu volle Skala verstärken? Wenn dies der Fall ist, können Sie Vref verstärken oder möglicherweise kleiner bereitstellen.
Scott Seidmann
Raketenmagnet
stevenvh
Raketenmagnet
Connor Wolf
Connor Wolf
Connor Wolf
Raketenmagnet
Raketenmagnet
Raketenmagnet
Connor Wolf
Connor Wolf
Connor Wolf
goto
in schematischer Form. Sie machen Ihre Arbeit ein bisschen einfacher, aber sie machen jeden anderen, der an Ihrem Schaltplan arbeiten oder lesen muss, viel schwerer.Connor Wolf
ctrl
+Drag? Es verschiebt Bauteile unter Beibehaltung der Verbindungen (nur Schaltplan-Editor). Es funktioniert nicht immer, aber es ist sehr nützlich.Das Photon
Das Photon
Connor Wolf
Connor Wolf
Connor Wolf
goto
. Es kann Ihnen Zeit sparen , aber wenn Sie mit anderen Leuten zusammenarbeiten (und ich arbeite selbst sehr eng mit einem anderen Ingenieur zusammen), sind sie ein absoluter Zeitfresser, da Sie jedes Mal, wenn Sie etwas diskutieren, manuell vorgehen müssen über den gesamten Schaltplan, um herauszufinden, wohin es geht.Raketenmagnet
Das Photon
Connor Wolf
Connor Wolf
Connor Wolf