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.
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.
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.
Réponses:
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:
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.
la source
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
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.
la source