Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Comment générer une forme d'onde de haute précision à l'aide d'un DAC et d'un PCB personnalisé

Dans cet article, nous' Je développerai un micrologiciel qui servira de base à la génération de signaux de haute précision et à grande vitesse.

J'ai récemment conçu un circuit imprimé de générateur de formes d'ondes arbitraires (AWG) qui est construit autour d'un microcontrôleur C8051F360 et d'un TxDAC d'Analog Devices.

Ces deux circuits intégrés communiquent via une interface parallèle qui me permet de générer des signaux analogiques à plus haute fréquence en recherchant la vitesse maximale à laquelle le microcontrôleur peut déplacer des données vers le DAC.

Dans cet article, je ne m'efforcerai pas d'expliquer les aspects de la conception du matériel, car j'ai longuement discuté du schéma et de la disposition dans une série d'articles techniques préparatoires. Trois de ces articles se concentrent sur une partie particulière du schéma (à savoir, le microcontrôleur, le DAC et les circuits de sortie du DAC), et le quatrième couvre la mise en page.

L'objectif

L'objectif de ce projet est de créer le cadre du micrologiciel qui nous permettra de déplacer facilement les données numériques du microcontrôleur vers le DAC, puis de convertir ces données en un signal analogique. Cette carte AWG a le potentiel pour certaines fonctionnalités intéressantes, mais l'étape la plus importante consiste à établir une interface fiable, extensible et de haute précision entre le MCU et le DAC. Nous allons vérifier cette interface en générant une forme d'onde en rampe et en effectuant une analyse de l'oscilloscope.

Les exigences

Calendrier de haute précision

De nombreuses applications de microcontrôleur ont peu ou pas besoin d'une synchronisation très précise. C'est pourquoi nous pouvons si souvent créer des appareils réussis dans lesquels la seule source d'horloge est l'oscillateur interne de basse précision du MCU. Mais l'AWG est différent. Nous voulons générer des signaux aussi cohérents que possible avec les formes d'onde mathématiques idéalisées qui servent de matériau source, ce qui signifie que nous avons besoin de fréquences de signaux prévisibles et d'un taux d'échantillonnage DAC cohérent.

Utilisation efficace du processeur

Bien que ce PCB particulier soit presque entièrement consacré à la génération de formes d'onde, nous devons nous assurer que ce framework firmware-plus-hardware peut être facilement incorporé dans d'autres applications. Par conséquent, nous voulons que notre firmware soit capable de générer des formes d'onde stables et de haute précision, mais sans rendre le processeur complètement indisponible pour d'autres tâches.

Vitesse maximale

Nous vivons dans un monde à haute fréquence, et cet AWG sera de peu d'utilité s'il atteint son maximum à 1 kHz. En toute honnêteté, il s'agit d'une conception simple et peu coûteuse, et nous ne pouvons pas nous attendre à ce qu'elle crée des formes d'onde DQPSK 915 MHz prêtes pour la transmission dans la bande ISM. Mais nous voulons obtenir autant de bande passante que possible de cet appareil, et c'est d'autant plus difficile lorsque nous nous souvenons que la fréquence d'échantillonnage est nettement supérieure à la fréquence réelle du signal. Nonobstant le théorème de Nyquist-Shannon, je veux au moins cinq échantillons par cycle, et dix est ma préférence. Ainsi, même si nous parvenons à pousser le taux d'échantillonnage jusqu'à 10 MHz, nos formes d'onde seront inférieures à 1 à 2 MHz.

La conception matérielle reflète déjà l'importance de l'optimisation de la vitesse :j'ai choisi un microcontrôleur qui fonctionne à des fréquences centrales allant jusqu'à 100 MHz, et j'ai implémenté un bus parallèle qui minimise la surcharge nécessaire pour déplacer les données de la mémoire du MCU vers les broches d'entrée du DAC.

Taux d'échantillonnage

La carte AWG dispose d'une source d'horloge hautes performances (un oscillateur MEMS avec une stabilité de fréquence globale de ± 50 ppm). Le firmware doit utiliser cette base de temps pour créer un signal d'horloge stable qui pilote les circuits de mise à jour du DAC. Lorsque je veux des signaux de synchronisation de haute qualité, je me tourne toujours vers le matériel, et dans ce cas, j'utilise le réseau de compteurs programmables (PCA) pour générer une horloge de 500 kHz à partir de l'oscillateur externe de 10 MHz.

J'ai utilisé le programme Silicon Labs Config2 pour ma configuration matérielle, car le C8051F360 n'est pas pris en charge par l'outil de configuration intégré à Simplicity Studio. Voici la configuration générale du module PCA :

Le PCA est activé et la base de temps est l'horloge système. À ce stade, la fréquence d'horloge du système est la même que la fréquence de l'oscillateur externe (10 MHz), mais nous utiliserons plus tard la boucle à verrouillage de phase du microcontrôleur pour obtenir une fréquence de base plus élevée. Le signal d'horloge du DAC est généré par le module PCA 0 configuré en mode « sortie fréquence » :

Jetons un coup d'œil à l'horloge de fréquence d'échantillonnage. Mon oscilloscope MDO3104 de Tektronix possède des capacités de mesure assez avancées qui nous aideront à évaluer sa qualité.

Comme le confirment les mesures affichées au bas de la capture de l'oscilloscope, la fréquence est exactement comme prévu (500 kHz), et nous avons également un rapport cyclique parfait de 50 % ; de plus, les statistiques "Min" et "Max" indiquent que la fréquence et le rapport cyclique sont stables dans le temps.

Un ajout particulièrement utile à cette fonctionnalité de mesure est l'écart type ("Std Dev"). L'écart type indique dans quelle mesure les valeurs ont tendance à s'écarter de la moyenne, et dans cette situation, c'est un moyen rapide et facile d'évaluer les imperfections de la fréquence et du rapport cyclique du signal d'horloge. Les deux écarts types sont très faibles :13,54 Hz correspond à 0,0027 % de la fréquence nominale et 2,117 x 10 –3 n'est que de 0,0042 % du cycle de service typique.

Nous pouvons aller plus loin dans cette analyse en regardant l'histogramme de l'un des fronts de l'horloge. Si nous réglons l'oscilloscope pour qu'il se déclenche sur le front descendant, puis zoomons sur le front montant, la position du front montant se déplacera en fonction de la gigue du signal. Nous pouvons ensuite ajouter un histogramme de forme d'onde horizontale pour suivre cette gigue et révéler sa distribution. Dans ce cas, cependant, il n'y a pas grand-chose à voir, car la gigue est si faible.

L'interruption externe

Nous avons maintenant une onde carrée qui contrôle les circuits de sortie du DAC; la tâche suivante consiste à synchroniser les mises à jour des données du MCU avec cette onde carrée. Nous le ferons en attachant une interruption externe à la broche PCA qui émet le signal d'horloge. Le DAC verrouille les données d'entrée sur le montant bord de l'horloge, nous voulons donc mettre à jour les signaux de données sur la chute bord. Cette technique de front opposé est le moyen fondamental de garantir que les données numériques sont mises à jour et stabilisées avant que le périphérique d'entrée ne reçoive le front d'horloge actif.

J'ai donc activé l'interruption externe 0 (notée /INT0), je l'ai attachée à la broche de sortie du signal d'horloge (P0.7) et l'ai rendue sensible au front descendant.

Vous êtes probablement habitué à utiliser une interruption externe pour surveiller une entrée signal, mais dans ce cas, il peut tout aussi bien synchroniser les événements du micrologiciel avec un signal généré par le microcontrôleur lui-même. Il s'agit en fait d'une stratégie particulièrement pratique lorsque vous traitez une tâche critique en termes de temps, car l'interruption externe 0 est l'interruption la plus prioritaire, et parce que son indicateur d'interruption en attente est automatiquement effacé par le matériel (ce qui élimine le temps qui serait nécessaire pour effacer le drapeau à l'aide d'une déclaration de firmware).

Les ISR

L'action principale a lieu dans la routine de service d'interruption /INT0. L'octet de données DAC suivant est récupéré de la mémoire (ou généré directement par le microcontrôleur) puis conduit sur P2 ; J'ai utilisé une instruction #define pour faire de « DAC_WORD » une alternative à « P2 » :

SI_INTERRUPT(INT0_ISR, INT0_IRQn)
{
DAC_WORD–;
}

La variable critique dans l'effort pour maximiser le taux de mise à jour du DAC est le temps requis pour exécuter les instructions dans l'ISR. (Dans cet exemple, nous n'avons qu'une seule instruction, mais ce ne sera pas toujours le cas.) L'ISR doit être appelé une fois pour chaque front actif de l'horloge DAC, et nous ne pouvons pas appeler l'ISR avant la fin de son exécution. Ainsi, lorsque nous essayons de pousser notre bande passante au maximum, nous devrons faire tout notre possible pour minimiser le temps d'exécution des ISR, puis nous réglerons la fréquence d'horloge de notre DAC en conséquence.

L'instruction unique illustrée ci-dessus (DAC_WORD–) crée une forme d'onde en rampe, car la valeur DAC diminue linéairement jusqu'à zéro, puis revient à 255 et recommence à diminuer. Voici la sortie du DAC :

Vous avez peut-être remarqué que les sections de rampe analogiques augmentent vers la tension maximale, tandis que les valeurs du DAC diminuent vers zéro. Cela se produit parce que l'amplificateur de sortie du DAC utilise une configuration inverseuse.

Regardons une dernière capture d'écran avant de terminer.

Lire plus d'informations….

Comment générer une forme d'onde de haute précision à l'aide d'un DAC et d'un PCB personnalisé


Processus de fabrication

  1. Capteur de température Python et Raspberry Pi
  2. Comment vérifier et étalonner un capteur d'humidité
  3. Comment générer une forme d'onde de haute précision à l'aide d'un DAC et d'un PCB personnalisé
  4. Voltmètre DIY utilisant Arduino et Smartphone
  5. Comment faire une boussole en utilisant Arduino et Processing IDE
  6. Comment choisir une entreprise de fabrication de prototypes de PCB
  7. En quoi la fabrication de PCB est-elle si précise ?
  8. Erreurs courantes de fabrication de PCB et comment les corriger
  9. Les cartes de circuits imprimés et leur fonctionnement ?