Table des matières:

Générateur de fonctions : 12 étapes (avec images)
Générateur de fonctions : 12 étapes (avec images)

Vidéo: Générateur de fonctions : 12 étapes (avec images)

Vidéo: Générateur de fonctions : 12 étapes (avec images)
Vidéo: Les fonctions - Image Antécédent 2024, Juillet
Anonim
Générateur de fonctions
Générateur de fonctions
Générateur de fonctions
Générateur de fonctions

Cette instructable décrit la conception du générateur de fonction basé sur le circuit intégré analogique de Maxims MAX038

Le générateur de fonctions est un outil très utile pour les maniaques de l'électronique. Il est nécessaire pour régler les circuits de résonance, tester les équipements audio et vidéo, concevoir des filtres analogiques et à de nombreuses autres fins.

Il existe aujourd'hui deux grands types de générateurs de fonctions; numérique, (basé sur DSP, DDS…) qui sont de plus en plus utilisés et analogiques, qui étaient à l'origine.

Les deux types ont leurs avantages et leurs inconvénients. Les générateurs numériques peuvent générer des signaux avec une fréquence très stable, mais ils ont des problèmes pour générer des signaux sinusoïdaux très purs (ce qui n'est pas un problème pour un analogique). De plus, les générateurs de fonctions principalement répartis basés sur l'approche DDS n'ont pas une plage de génération de fréquence aussi grande.

Depuis longtemps, je voulais concevoir un générateur de fonctions utile, qui pourrait en quelque sorte combiner certains des avantages des deux types de générateurs (analogiques et numériques). J'ai décidé de baser le design sur la puce Maxim MAX038*

* Remarque - cette puce n'est plus produite et vendue par Maxim. C'est obsolète. Il est encore possible de le trouver sur eBay, Aliexpress et autres sites de composants électroniques.

Il existe également d'autres puces génératrices de fonctions analogiques (XR2206 d'Exar, icl8038 d'Intersil), mais j'avais

un MAX038 disponible, et je l'ai utilisé. Les fonctions numériques du générateur de fonctions ont été réalisées par une puce Atmega328. Ses fonctions sont les suivantes:

  • contrôle la sélection de la plage de fréquences
  • contrôle le type de signal (sinusoïdal, rectangulaire, triangulaire, en dents de scie)
  • mesure l'amplitude du signal
  • mesure le décalage DC
  • mesure la fréquence du signal
  • mesure le THD du signal sinusoïdal dans la plage audio (ceci doit encore être mis en œuvre)
  • affiche toutes ces informations sur un écran LCD 16x2 caractères.

Étape 1: MAX038 Description

MAX038 Description
MAX038 Description

J'ai joint la fiche technique du MAX038. Vous pouvez voir les paramètres de puce les plus importants:

♦ Plage de fréquence de fonctionnement de 0,1 Hz à 20 MHz

♦ Formes d'onde triangulaire, en dents de scie, sinusoïdale, carrée et impulsionnelle

Réglages indépendants de la fréquence et du cycle de service

♦ 350 à 1 plage de balayage de fréquence

♦ Cycle de service variable de 15 % à 85 %

Tampon de sortie basse impédance: 0,1

♦ Faible dérive de température de 200 ppm/°C

Une autre exigence importante est la nécessité d'une double alimentation (±5V). L'amplitude de sortie est fixe (~ 2 VP-P avec 0 V DC offset).

Sur la page 8 de la fiche technique, on peut voir le schéma fonctionnel de la puce. À la page 11 peut être vu le circuit le plus simple, qui peut être utilisé pour générer un signal sinusoïdal. Ce circuit a servi de base à la conception du générateur de fonctions.

Étape 2: Le Circuit …

Le circuit …
Le circuit …

Sur la photo est présenté le circuit du générateur de fonctions que j'ai fait cette image avec la résolution la plus élevée possible pour garantir que chaque valeur.device puisse être lue correctement. Les schémas semblent assez complexes et pour être mieux compris, j'expliquerai ses principales parties séparément. Beaucoup de lecteurs pourraient me reprocher que le circuit soit trop redondant. C'est vrai. Au début, vous pouvez voir qu'il contient deux puces MAX038. La raison en est que le PCB prend en charge les deux types de boîtiers SO et DIP. La redondance peut également être observée dans certaines fonctions -

1) les LED indiquent la plage de fréquence active actuelle, mais elle est également affichée sur l'écran LCD;

2) Les LED sont également utilisées pour indiquer le type de signal, mais l'écran LCD affiche également cette information

La conception est faite de cette manière pour permettre plus de flexibilité à l'utilisateur - sous le désir, il ne pourrait pas utiliser l'écran LCD, ou peut simplement omettre la soudure des LED. Je les ai soudés pour pouvoir déboguer la fonctionnalité pendant les phases de conception.

On peut remarquer aussi que j'utilise beaucoup d'amplis op. Certains d'entre eux peuvent être omis sans problème - en particulier les tampons. A l'heure actuelle, les amplis op par eux-mêmes offrent une grande redondance - dans un seul paquet, vous pouvez trouver 2, 4 voire 8 amplificateurs séparés, et ce à un prix relativement bas. Pourquoi ne pas les utiliser ?

Les condensateurs de filtrage sont également redondants - chaque puce analogique utilisée a sa propre batterie de condensateurs (condensateurs tantale + céramique pour les deux alimentations). Certains d'entre eux peuvent également être omis.

Étape 3: Explication du circuit - Alimentation (1)

Explication du circuit - Alimentation (1)
Explication du circuit - Alimentation (1)

Comme je l'ai dit, ce générateur nécessite une double alimentation. La tension positive est créée par l'utilisation du régulateur de tension linéaire 7805. L'offre négative est générée par la puce 7905. Le point de prise du milieu du transformateur 2x6V est connecté à la masse commune de la carte. Les alimentations générées - à la fois positive et négative sont séparées de l'analogique et du numérique par des cales. Deux LED indiquent la présence de chaque alimentation.

Étape 4: Explication du circuit - Contrôle de la plage de fréquences (2)

Explication du circuit - Contrôle de la plage de fréquences (2)
Explication du circuit - Contrôle de la plage de fréquences (2)

Pour couvrir une large gamme de fréquences, une batterie de condensateurs multiples est utilisée. Les condensateurs ont des valeurs différentes et définissent des sous-gammes de fréquences différentes. Un seul de ces condensateurs est utilisé pendant le travail - sa plaque inférieure est mise à la terre par un commutateur à transistor MOS. La plaque inférieure des condensateurs à mettre à la terre est contrôlée par l'Atmega328 à l'aide de la puce de démultiplexage 74HC238. En tant que commutateurs MOS, j'ai utilisé des transistors BSS123. La principale exigence pour ce commutateur est d'avoir un faible Ron et la plus faible capacité de drain possible. Le contrôle numérique de la batterie de condensateurs peut être omis - le PCB contient des trous pour souder les fils du commutateur rotatif mécanique.

Étape 5: Explication du circuit - le réglage de la fréquence (3)

Explication du circuit - le réglage de la fréquence (3)
Explication du circuit - le réglage de la fréquence (3)

Sur l'image sont montrés les circuits de contrôle de fréquence et de cycle de service. Là, j'ai utilisé l'ampli op LM358 standard (double amplificateur dans un seul boîtier). J'ai également utilisé deux potentiomètres 10K.

La puce MAX038 génère une référence de tension interne de 2,5 V, qui est normalement utilisée comme référence pour tous les réglages.

Cette tension est appliquée à l'entrée inverseuse de IC8a et génère une référence de tension négative utilisée pour le DADJ (ajustement du cycle de service). Les deux tensions sont appliquées au potentiomètre du DADJ, dont la prise médiane est tamponnée et appliquée à la broche DADJ de la puce MAX038. Le cavalier JP5 peut être utilisé pour désactiver la fonction DADJ, lorsqu'il est connecté à la terre. Le contrôle de fréquence "Course" est préformé en changeant le courant descendu / sourcé dans la broche "IIN" MAX038. Ce courant est défini par la résistance R41 et la tension de sortie de l'amplificateur opérationnel tamponnant la prise médiane du potentiomètre de commande de fréquence de course. Tous ceux-ci peuvent être remplacés par un seul potentiomètre (en connexion réostat) entre les broches REF et IIN MAX038.

Étape 6: Explication du circuit - Contrôle d'amplitude, génération de signal SYNC… (4)

Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)
Explication du circuit - Contrôle d'amplitude, génération de signaux SYNC… (4)

Comme indiqué dans la fiche technique, le signal de sortie du MAX038 a une amplitude d'environ 1 V avec une tension continue égale au potentiel de terre.

Je voulais avoir la possibilité de contrôler l'amplitude du signal et pouvoir définir moi-même l'offset DC. Comme caractéristique supplémentaire, je voulais avoir un signal SYNC avec des niveaux CMOS en parallèle avec le signal de sortie. Par défaut, la puce MAX038 génère un tel signal, mais dans la fiche technique, j'ai lu que si cette fonctionnalité est activée (ce qui signifie - broche DV+ connectée à 5V), certains pics (bruit) peuvent être observés dans le signal analogique de sortie. Je voulais garder aussi propre que possible et pour cette raison, j'ai généré le signal SYNC en externe. Le PCB est fait de manière à ce que la broche DV+ puisse être facilement reliée à l'alimentation principale. La broche SYNC est acheminée vers le connecteur BNC - seule la résistance de 50 ohms doit être soudée. Dans ce cas, le circuit de génération de signal SYNC peut être omis. Ici, comme vous le voyez, j'utilise aussi des potentiomètres doubles, mais ils ne sont pas connectés en parallèle. La raison en est que je mesure l'amplitude relativement. La tension au point médian d'un potentiomètre est détectée par l'Atmega328 ADC et l'amplitude du signal est calculée en fonction de cette valeur. Bien sûr, cette méthode n'est pas très précise (elle repose sur l'appariement des deux sections de potentiomètre, ce qui ne se produit pas toujours), mais elle est suffisamment précise pour mes applications. Dans ce circuit, IC2A fonctionne comme tampon de tension. IC4A aussi. L'amplificateur opérationnel IC2B fonctionne comme un amplificateur de sommation - il crée le signal de sortie du générateur fonctionnel en tant que somme de la tension de décalage et du signal principal avec une amplitude ajustée. Le diviseur de tension R15. R17 génère un signal de tension approprié pour mesurer le décalage du signal principal CC. Il est détecté par l'ADC Atmega328. L'opamp IC4B fonctionne comme un comparateur - il contrôle l'inverseur de génération SYNC réalisé par les deux transistors MOS (BSS123 et BSS84). Le U6 (THS4281 - Texas Instruments) décale le signal de sortie généré par le MAX038 DC avec 2,5 V et l'amplifie 1,5 fois. Ainsi, le signal généré est détecté par l'AVR ADC et traité plus avant avec l'algorithme FFT. Dans cette partie, j'ai utilisé des opamps rail à rail de haute qualité avec une bande passante de 130 MHz (TI - LMH6619).

Pour être facile à comprendre comment fonctionne exactement la génération du signal SYNC, j'inclus quelques images de simulations LTSpice du circuit. Sur la troisième photo: le signal bleu est la tension d'offset (entrée de l'IC2B). Le vert est le signal de sortie avec une amplitude ajustée. Le rouge est le signal de sortie du générateur fonctionnel, La courbe cyan est le signal SYNC.

Étape 7: Conception de PCB

Conception de circuits imprimés
Conception de circuits imprimés

J'ai utilisé "Eagle" pour la conception du PCB. J'ai commandé les PCB chez "PCBway". Il leur a fallu seulement quatre jours pour produire les planches et une semaine pour les livrer. Leur qualité est élevée, et le prix est extrêmement bas. J'ai payé seulement 13 USD pour 10 PCB !

En plus de cela, je pouvais commander un PCB de couleur différente sans augmentation de prix. J'ai choisi des jaunes:-).

Je joins les fichiers gerber selon les règles de conception "PCBway".

Étape 8: Souder

Image
Image
Soudure
Soudure
Soudure
Soudure

J'ai d'abord soudé les circuits d'alimentation.

Après avoir testé le bloc d'alimentation, j'ai soudé la puce Atmega328 avec ses supports: cristal de quartz, condensateurs, capuchons filtrants et le connecteur ISP. Comme vous le voyez, j'ai un cavalier dans la ligne d'alimentation de la puce AVR. Je le déconnecte lorsque je programme la puce via le FAI. J'utilise le programmeur USBtiny à cette fin.

À l'étape suivante, j'ai soudé la puce de multiplexage 74HC238, les LED indiquant la plage de fréquences. J'ai chargé un petit programme Arduino dans la puce Atmega, qui testait le multiplexage. (voir la vidéo sous le lien ci-dessus)

Étape 9: Souder…

Soudure…
Soudure…
Soudure…
Soudure…
Soudure…
Soudure…

Comme étape suivante, j'ai soudé les amplis op fonctionnant en mode DC (LM358) et les potentiomètres de réglage de fréquence et DADJ et vérifié toutes leurs fonctions.

De plus, j'ai soudé les commutateurs BSS123, les condensateurs déterminant la fréquence et la puce MAX039. J'ai testé le générateur fonctionnel en sondant le signal à la sortie du signal de la puce native. (Vous pouvez voir mon ancien oscilloscope soviétique, produit en 1986, toujours fonctionnel en action:-))

Étape 10: Plus de soudure…

Plus de soudure…
Plus de soudure…
Plus de soudure…
Plus de soudure…
Plus de soudure…
Plus de soudure…

Après cela, j'ai soudé le support de l'écran LCD et l'ai testé avec le croquis "Hello world".

J'ai soudé les autres opamps, condensateurs, potentiomètres et les connecteurs BNC restants.

Étape 11: Logiciel

Image
Image
Logiciel
Logiciel

Pour la création du firmware Atmega328, j'ai utilisé l'IDE Arduino.

Pour la mesure de fréquence j'ai utilisé la librairie "FreqCounter". Le fichier de croquis et la bibliothèque utilisée sont disponibles en téléchargement. J'ai créé des symboles spéciaux pour représenter le mode actuellement utilisé (sinus, rectangulaire, triangle).

Sur l'image ci-dessus, on peut voir les informations affichées sur l'écran LCD:

  • Fréquence F=xxxxxxxx en Hz
  • Gamme de fréquence Rx
  • Amplitude en mV A=xxxx
  • Décalage en mV 0=xxxx
  • type de signal x

Le générateur de fonction a deux boutons poussoirs sur le devant sur le côté gauche - ils sont utilisés pour changer la gamme de fréquences (pas vers le haut - pas vers le bas). A droite d'eux se trouve l'interrupteur à glissière pour le contrôle du mode, après lui de gauche à droite suivre le potentiomètre pour le contrôle de la fréquence (course, fine, DADJ), de l'amplitude et de l'offset. Près du potentiomètre de réglage de l'offset est placé l'interrupteur utilisé pour commuter entre l'offset fixe à 2,5V DC et l'accordé.

J'ai trouvé une petite erreur dans le code "Generator.ino" du fichier ZIP - les symboles des formes d'onde sinusoïdale et triangulaire ont été échangés. Dans le fichier unique "Generator.ino" joint ici, l'erreur est corrigée.

Étape 12: À faire…

Image
Image

Comme dernière étape, j'ai l'intention de mettre en œuvre une fonctionnalité supplémentaire - la mesure du THD du signal sinusoïdal de fréquence audio en temps réel à l'aide de la FFT. Cela est nécessaire, car le cycle de service du signal sinusoïdal peut différer de 50 %, ce qui peut être causé par des discordances internes des puces et d'autres raisons et peut créer des distorsions harmoniques. Le rapport cyclique peut être ajusté par le potentiomètre, mais sans observer le signal sur l'oscilloscope ou l'analyseur de spectre, il est impossible de rogner finement sa forme. Le calcul du THD basé sur l'algorithme FFT pourrait résoudre le problème. Le résultat des calculs THD sera affiché sur l'écran LCD dans l'espace vide en haut à droite.

Sur la vidéo, on peut voir le spectre du signal sinusoïdal généré par le MAX038. L'analyseur de spectre est basé sur la carte Arduino UNO + le blindage TFT 2,4 . L'analyseur de spectre utilise la bibliothèque SpltRadex Arduino développée par Anatoly Kuzmenko pour effectuer la FFT en temps réel.

Je n'ai toujours pas décidé - d'utiliser cette bibliothèque ou d'utiliser la bibliothèque FHT créée par les Musiclabs.

J'ai l'intention d'utiliser les informations tirées des mesures du fréquencemètre pour calculer la fenêtre d'échantillonnage appropriée et de suspendre l'utilisation d'un fenêtrage supplémentaire pendant les calculs FFT. Je n'ai besoin que de trouver du temps libre pour que cela se produise. J'espère avoir des résultats bientôt….

Conseillé: