Disposition PCB de signaux mixtes pour PSoC

16

Je développe un PCB pour une application de détection analogique. Il utilise l'ADC interne sur un PSoC3. Comme d'habitude, l'application est très limitée en espace (11 mm x 21 mm), j'ai donc dû faire des compromis dans la disposition du PCB, ce que je n'aurais pas fait sur un PCB plus grand.

PCB PSoC

La carte est alimentée par 6v régulé et contient deux régulateurs linéaires 5v. Un MCP1702 pour l'alimentation numérique et un MIC5205 pour l'alimentation analogique. La carte détecte cinq capteurs à effet Hall A1324 . Chaque signal de sortie à effet Hall est filtré par un filtre RC 100nF + 1k. Un capteur se trouve sur le PCB lui-même (en bas à droite). Les 4 autres se branchent sur le connecteur à 6 broches de droite.

La puce agit comme un esclave SPI, mais des échantillons ADC sont toujours prélevés entre les transactions SPI, de sorte que le SPI ne doit pas interférer avec les signaux analogiques.

Malheureusement, je vois toujours du bruit (environ 1,5 LSB à 12 bits) sur les signaux analogiques, et je me demande s'il y a quelque chose que j'aurais pu faire différemment dans la disposition pour l'améliorer.

Disposition PSoC

Veuillez ouvrir l'image dans un nouvel onglet pour la voir en plus haute résolution.


Ajoutée:

D'autres conceptions de PCB que j'ai faites en utilisant le MCP3208 , et les mêmes alimentations 5v doubles, les mêmes capteurs et les mêmes filtres RC n'ont produit aucun bruit perceptible à 12 bits.

L'ADC sur le PSoC3 est un type delta sigma. Cette version du PSoC est limitée à 12 bits, mais un autre numéro de pièce a un ADC 16 bits (bien qu'avec un taux d'échantillonnage inférieur).

Je me soucie du bruit et j'aimerais vraiment pousser un peu plus vers 12 ENOB. La raison n'est pas la précision, mais la mesure de la vitesse. Actuellement, ce niveau de bruit rend impossible un contrôle précis de la position et de la vitesse sur un robot.


Ajoutée:

Schématique. Désolé, c'est un peu à l'étroit, mais vous pouvez à peu près lire les valeurs.

Schéma PSoC

Rocketmagnet
la source
1
Arrêtez également d' utiliser les NET-LABELS! Votre circuit est loin d'être suffisamment complexe pour en avoir besoin, et en n'affichant pas réellement les connexions, il est beaucoup plus difficile de tracer les connexions. Encore une fois, le but du schéma est de rendre visuellement la fonction et la fonctionnalité prévues du circuit . Vous laissez ensuite l'ordinateur traduire la représentation visuelle à la disposition physique réelle des appareils (ce qui est très bon pour les ordinateurs).
Connor Wolf
1
@Rocketmagnet - Ils sont certainement utiles pour la personne qui dessine le circuit . Ils sont absolument abominables pour tout le monde .
Connor Wolf
1
De plus, si vous rencontrez des problèmes pour acheminer des fils en raison de contraintes d'espace, vous devez désespérément examiner les fonctions d' échange de broches dans Altium. Fondamentalement, vous pouvez spécifier des broches qui sont fonctionnellement interchangeables dans la définition du composant (IE diverses broches IO), puis lorsque vous routez le PCB, vous pouvez exécuter les traces vers l'une des broches qui fonctionneraient, plutôt que juste celle vous avez spécifié dans le schéma. Ensuite, vous pouvez synchroniser le routage que vous avez choisi dans le PCB avec le schéma.
Connor Wolf
1
@FakeName, tout en se connectant avec des étiquettes pourrait rendre plus difficile de suivre un circuit, redessiner chaque symbole pour créer un schéma pur et propre avec de belles lignes droites pourrait facilement quadrupler le temps de faire une entrée schématique. J'adorerais voir un schéma parfait, je ne suis pas sûr qu'il soit réaliste d'en exiger un.
The Photon
1
@Rocketmagnet, Avoir une très petite zone de circuit imprimé ne signifie pas que vous ne pouvez pas dessiner votre schéma sur du papier de taille D.
The Photon

Réponses:

13

Vous aurez toujours du bruit sur un ADC, en particulier les types SA (Successive Approximation) sur la puce du microcontrôleur. Le sigma-delta fonctionne mieux pour le bruit gaussien, car ils l'intègrent. Ne vous attendez pas à 12 ENOB d'un ADC 12 bits.

Le bruit du contrôleur est une raison pour laquelle la plupart des microcontrôleurs ne vous donnent pas une résolution supérieure à 10 bits, et l'AVR offre la possibilité d'arrêter le microcontrôleur pendant l'acquisition de l'ADC, ce qui devrait confirmer qu'au moins une partie du bruit provient du contrôleur .

Mais la question est: vous en souciez-vous? 1,5 bit de bruit sur un ADC 12 bits vous laisse toujours plus de 10 bits, ou mieux que 0,1%. Quelle est la précision de votre capteur Hall? D'autres composants dans le circuit?

edit
Vous semblez utiliser l'oscillateur interne de la PSoC, car je ne vois aucun cristal sur le schéma. Cela semble OK: vous avez le bon découplage. Hormis l'horloge interne, la seule partie à grande vitesse du circuit semble être le SPI, mais vous dites que ce sera silencieux pendant les mesures. Le reste de la carte est DC ou probablement relativement faible, comme les capteurs à effet Hall. Et c'est un Damn Small ™, qui aide également: des traces plus courtes captent moins de bruit. Bien sûr, je pourrais parler du MCP1702, que je ferais pivoter de 90 ° CCW afin que le condensateur de sortie puisse être placé encore plus près des broches, mais cela ne résoudra pas les problèmes.

Je ne vois qu'un seul changement dans la mise en page qui pourrait améliorer votre rapport S / B:

entrez la description de l'image ici

Dans la fiche technique, des plans de masse analogiques et numériques divisés sont suggérés pour "Performances analogiques optimales" (page 10).

Pour le reste: c'est une petite planche comme je l'ai dit, cela signifie des traces courtes et un découplage en quelques mm. J'aimerais donc revoir la source du bruit. Le principal suspect est l'horloge du PSoC. Le PSoC peut exécuter une tension d'alimentation très basse, ce qui réduirait son bruit. Bien sûr, cela aiderait beaucoup si VDDA devait également être abaissé, mais je n'ai lu nulle part dans la fiche technique que VDDA ne devrait pas être supérieur à VDDD.

Ensuite, l'ADC. À la page 55 de la fiche technique, il est écrit 66 dB SINAD, soit 11 bits, proche de ce que vous obtenez maintenant. La fiche technique A1324 nous donne un bruit de 7 mVpp sur une tension de repos de 2,5 V. C'est aussi bien moins que le rapport S / N de 72 dB que 12 bits pourrait vous donner. Vous pouvez améliorer cela un peu avec un filtrage supplémentaire.

Vous mentionnez les meilleures performances du MCP3208, mais c'est un ADC éloigné du microcontrôleur, et cela peut expliquer comment un ADC SA peut faire mieux qu'un sigma-delta avec la même résolution.

Ainsi, les options que je vois: baisser la tension d'alimentation numérique et diviser les terres analogiques et numériques.

Stevenvh
la source
C'est une idée très intéressante sur la réduction de la tension d'alimentation numérique du PSoC. VDDA peut certainement être supérieur à VDDD.
Rocketmagnet
Alors, pensez-vous que je devrais déconnecter VSSA du tampon thermique? J'ai en fait posté cela comme une toute nouvelle question .
Rocketmagnet
2

Je suis d'accord avec ce qui précède. 1,5LSB de bruit est assez raisonnable. http://www.cypress.com/?docID=39346 montre un SINAD minimum de 66 dB en mode 12 bits, suggérant ENOB = 10,7.

Je sais que ce n'est pas une réponse directe à votre question, mais je vais interpréter la question comme "comment puis-je résoudre mes problèmes avec le contrôle de la vitesse?" et non "Comment obtenir plus de 10,5 ENOB?".

Comment vous différenciez-vous? Avez-vous suffisamment de tics d'horloge de rechange pour faire quelque chose d'un poil plus lisse qu'une différence centrale à deux points? Peut-être élaborer quelque chose de 5 échantillons de large, optimisé dans Matlab?

En outre, cela peut sembler un peu drôle, mais le bruit de vélocité s'aggrave à mesure que vous échantillonnez plus rapidement

1LSBΔt
devient plus grand que delta t devient plus petit). Essayez d'échantillonner aussi vite que vous le souhaitez, pas aussi vite que possible.

Ne soyez pas insultant, mais jetez également un coup d'œil rapide pour vous assurer que rien de stupide ne se passe dans votre contrôle de vitesse, comme les problèmes de conversion entre les entiers signés et non signés, et assurez-vous que vos entiers sont suffisamment larges pour éviter les erreurs de débordement lorsque vous différenciez . Mes propres équations de contrôle deviennent souvent suffisamment compliquées pour que je transforme parfois explicitement chaque opération.

Enfin, mais peut-être le plus probablement, perdez-vous des bits efficaces par le haut en n'amplifiant pas à presque pleine échelle? Si c'est le cas, vous pouvez amplifier ou peut-être fournir une Vref plus petite.

Scott Seidman
la source
Nous calculons la position et la vitesse à l'aide d'un filtre alpha bêta . Je comprends que le bruit de vélocité augmente à mesure que le taux d'échantillonnage augmente s'il est fait naïvement. Je suis sûr que le bruit de vitesse n'est pas dû à une erreur de signe. Et nous sommes déjà presque à pleine échelle, il n'y a donc plus d'amplification que je puisse faire sans risquer de toucher le haut ou le bas de la gamme.
Rocketmagnet
Diriez-vous qu'il n'y a aucune amélioration à apporter à la mise en page?
Rocketmagnet
Je ne vois encore rien. Comment amplifiez-vous les capteurs du hall? Avez-vous réellement regardé la sortie des filtres AB et des eqns de contrôle comme une vérification de la réalité? Regardé le bruit sur vos sorties de régulateur? Il pourrait être éclairant de faire un budget de bruit formel pour l'ensemble du système
Scott Seidman
1
Mais! L'autre avantage du mode différentiel est qu'il me permet d'augmenter le taux d'échantillonnage 4x, donc je peux faire un suréchantillonnage. Cela devrait réduire un peu le bruit.
Rocketmagnet
1
Peut-être un bouchon de contournement sur Vref (je ne sais pas comment faire, c'est dans la fiche technique). En dehors de cela, je pense que vous êtes extrêmement proche, sinon à, de l'ENOB idéal pour le PSOC 3 ADC à 12 bits, alors vous avez fait à peu près aussi bien que possible!
Scott Seidman