- Principes de base de l'ampli-op
- Amplificateur de gain programmable fonctionnant
- Composants requis
- Diagramme schématique
- Code Arduino pour PGA
- Calculs pour l'amplificateur de gain programmable
- Test du circuit d'amplificateur à gain programmable
- Avantages et inconvénients de l'amplificateur à gain programmable
- Amélioration supplémentaire
Dans l'industrie de la mesure, un bloc fonctionnel très crucial est un amplificateur de gain programmable (PGA). Si vous êtes un passionné d'électronique ou un étudiant, vous avez probablement vu un multimètre ou un oscilloscope mesurant très précieusement de très petites tensions, car le circuit dispose d'un PGA intégré à côté d'un puissant ADC qui facilite le processus de mesure précis.
De nos jours, l'amplificateur PGA disponible dans le commerce propose un amplificateur opérationnel basé sur un amplificateur non inverseur avec un facteur de gain programmable par l'utilisateur. Ce type de dispositif a une impédance d'entrée très élevée, une large bande passante et une référence de tension d'entrée sélectionnable intégrée dans le circuit intégré. Mais toutes ces fonctionnalités ont un coût, et pour moi, cela ne vaut pas la peine de mettre cette puce coûteuse pour une application générique.
Donc, pour surmonter ces situations, j'ai proposé un arrangement composé d'un ampli-op, d'un MOSFET et d'un Arduino, grâce auquel j'ai pu modifier le gain de l'ampli-op par programmation. Donc, dans ce tutoriel, je vais vous montrer comment construire votre propre amplificateur de gain programmable avec un ampli-op LM358 et des MOSFETS, et je discuterai de certains avantages et inconvénients du circuit en plus des tests.
Principes de base de l'ampli-op
Pour comprendre le fonctionnement de ce circuit, il est très important de savoir comment fonctionne un amplificateur opérationnel. Apprenez-en plus sur l'ampli-op en suivant ce circuit de testeur d'ampli opérationnel.
Dans la figure ci-dessus, vous pouvez voir un amplificateur opérationnel. Le travail de base d'un amplificateur est d'amplifier un signal d'entrée, parallèlement à l'amplification, l'amplificateur opérationnel peut également effectuer diverses opérations telles que additionner, différencier, intégrer, etc. En savoir plus sur l'amplificateur de sommation et l'amplificateur différentiel ici.
Op-amp n'a que trois bornes. La borne avec le signe (+) est appelée entrée non inverseuse et la borne avec le signe (-) est appelée entrée inverseuse. Outre ces deux bornes, la troisième borne est la borne de sortie.
Un ampli-op ne suit que deux règles
- Aucun courant ne circule dans ou hors des entrées de l'amplificateur opérationnel.
- L'ampli opérationnel essaie de maintenir les entrées aux mêmes niveaux de tension.
Donc, avec ces deux règles clarifiées, nous pouvons analyser les circuits ci-dessous. Apprenez-en également plus sur l'amplificateur opérationnel en passant par divers circuits basés sur l'amplificateur opérationnel.
Amplificateur de gain programmable fonctionnant
La figure ci-dessus vous donne une idée de base sur la disposition des circuits de mon amplificateur PGA crud. Dans ce circuit, l' ampli-op est configuré comme un amplificateur non inverseur, et comme nous le savons tous avec une disposition de circuit non inverseur, nous pouvons changer le gain de l'ampli-op en changeant la résistance de rétroaction ou la résistance d'entrée, comme vous pouvez le voir dans la disposition des circuits ci-dessus, il me suffit de changer les MOSFET un par un pour changer le gain de l'ampli-op.
Dans la section de test, j'ai juste fait que j'ai commuté les MOSFET un à la fois et comparé les valeurs mesurées avec les valeurs pratiques, et vous pouvez observer les résultats dans la section «tester le circuit» ci-dessous.
Composants requis
- Arduino Nano - 1
- LM358 IC - 1
- Régulateur LM7805 - 1
- Transistor NPN générique BC548 - 2
- MOSFET générique à canal N BS170 - 2
- Résistance 200K - 1
- Résistance 50K - 2
- Résistance 24K - 2
- Résistance 6.8K - 1
- Résistance 1K - 4
- Résistance 4.7K - 1
- 220R, résistance 1% - 1
- Interrupteur tactile générique - 1
- LED ambre 3 mm - 2
- Planche à Pain Générique - 1
- Jumper Wires Generic - 10
- Alimentation ± 12V - 1
Diagramme schématique
Pour une démonstration de l'amplificateur à gain programmable, le circuit est construit sur une maquette sans soudure à l'aide du schéma; Pour réduire l'inductance parasite interne et la capacité de la maquette, tous les composants ont été placés le plus près possible.
Et si vous vous demandez pourquoi il y a un groupe de fils dans ma maquette? laissez-moi vous dire que c'est pour faire une bonne connexion à la terre car les connexions à la terre internes dans une maquette sont très mauvaises.
Ici, l'amplificateur opérationnel du circuit est configuré comme un amplificateur non inverseur et la tension d'entrée du régulateur de tension 7805 est de 4,99 V.
La valeur mesurée pour la résistance R6 est 6,75K et R7 est 220,8R ces deux résistances forment un diviseur de tension qui est utilisé pour générer la tension de test d'entrée pour l'amplificateur opérationnel. Les résistances R8 et R9 sont utilisées pour limiter le courant de base d'entrée des transistors T3 et T4. Les résistances R10 et R11 sont utilisées pour limiter la vitesse de commutation des MOSFET T1 & T2, sinon cela peut provoquer une oscillation dans le circuit.
Dans ce blog, je veux vous montrer la raison d'utiliser un MOSFET plutôt qu'un BJT, d'où la disposition du circuit.
Code Arduino pour PGA
Ici, Arduino Nano est utilisé pour contrôler la base du transistor et la grille des MOSFET, et un multimètre est utilisé pour afficher les niveaux de tension car l'ADC intégré de l'Arduino fait un très mauvais travail, quand il s'agit de mesurer les faibles niveaux de tension.
Le code Arduino complet pour ce projet est donné ci-dessous. Comme il s'agit d'un code Arduino très simple, nous n'avons pas besoin d'inclure de bibliothèques. Mais nous devons définir des constantes et des broches d'entrée comme indiqué dans le code.
La configuration void () est le bloc fonctionnel principal où les opérations de lecture et d'écriture pour toutes les entrées et sorties sont effectuées conformément aux exigences.
#define #define BS170_WITH_50K_PIN 9 BS170_WITH_24K_PIN 8 #define #define BC548_WITH_24K_PIN 7 BC548_WITH_50K_PIN 6 #define #define BUTTON_PIN 5 LED_PIN1 2 #define #define LED_PIN2 3 PRESSED_CONFIDENCE_LEVEL 5000 int button_is_pressed = 0; int debounce_counter = 0; void setup () {pinMode (BS170_WITH_50K_PIN, OUTPUT); pinMode (BS170_WITH_24K_PIN, SORTIE); pinMode (BC548_WITH_24K_PIN, SORTIE); pinMode (BC548_WITH_50K_PIN, SORTIE); pinMode (LED_PIN1, OUTPUT); pinMode (LED_PIN2, OUTPUT); pinMode (BUTTON_PIN, INPUT); } boucle vide () {bool val = digitalRead (BUTTON_PIN); // lire la valeur d'entrée if (val == LOW) {debounce_counter ++; if (debounce_counter> PRESSED_CONFIDENCE_LEVEL) {debounce_counter = 0; button_is_pressed ++; } if (button_is_pressed == 0) {digitalWrite (BS170_WITH_50K_PIN, HIGH); DigitalWrite (BS170_WITH_24K_PIN, LOW);digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, LOW); digitalWrite (LED_PIN2, LOW); } if (button_is_pressed == 2) {digitalWrite (BS170_WITH_24K_PIN, HIGH); DigitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, LOW); digitalWrite (LED_PIN2, HIGH); } if (button_is_pressed == 3) {digitalWrite (BC548_WITH_24K_PIN, HIGH); digitalWrite (BC548_WITH_50K_PIN, LOW); DigitalWrite (BS170_WITH_24K_PIN, LOW); DigitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, HIGH); digitalWrite (LED_PIN2, HIGH); } if (button_is_pressed == 1) {digitalWrite (BC548_WITH_50K_PIN, HIGH); DigitalWrite (BS170_WITH_50K_PIN, LOW); DigitalWrite (BS170_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (LED_PIN1, HIGH);digitalWrite (LED_PIN2, LOW); } if (button_is_pressed> = 4) {button_is_pressed = 0; }}}
Calculs pour l'amplificateur de gain programmable
Les valeurs mesurées pour le circuit amplificateur PGA sont indiquées ci-dessous.
Vin = 4,99 V R7 = 220,8 Ω R6 = 6,82 KΩ R5 = 199,5 K R4 = 50,45 K R3 = 23,99 K R2 = 23,98 K R1 = 50,5 K
Remarque! Les valeurs mesurées de la résistance sont affichées car avec les valeurs de résistance mesurées, nous pouvons comparer étroitement les valeurs théoriques et les valeurs pratiques.
Maintenant, le calcul du calculateur de diviseur de tension est indiqué ci-dessous,
La sortie du diviseur de tension est de 0,1564 V
Calcul du gain de l'amplificateur non inverseur pour les 4 résistances
Vout lorsque R1 est la résistance sélectionnée
Vout = (1+ (199,5 / 50,5)) * 0,1564 = 0,77425 V
Vout lorsque R2 est la résistance sélectionnée
Vout = (1+ (199,5 / 23,98)) * 0,1564 = 1,45755 V
Vout lorsque R3 est la résistance sélectionnée
Vout = (1+ (199,5 / 23,99)) * 0,1564 = 1,45701 V
Vout lorsque R4 est la résistance sélectionnée
Vout = (1+ (199,5 / 50,45)) * 0,1564 = 0,77486 V
J'ai fait tout cela pour comparer au plus près les valeurs théoriques et pratiques.
Une fois tous les calculs effectués, nous pouvons passer à la section des tests.
Test du circuit d'amplificateur à gain programmable
L'image ci-dessus vous montre la tension de sortie lorsque le MOSFET T1 est allumé, donc le courant circule à travers la résistance R1.
L'image ci-dessus vous montre la tension de sortie lorsque le transistor T4 est activé, par conséquent le courant passe à travers la résistance R4.
L'image ci-dessus vous montre la tension de sortie lorsque le MOSFET T2 est allumé, donc le courant circule à travers la résistance R2.
L'image ci-dessus vous montre la tension de sortie lorsque le transistor T3 est activé, donc le courant circule à travers la résistance R3.
Comme vous pouvez le voir sur le schéma, T1, T2 sont des MOSFET et T3, T4 sont des transistors. Ainsi, lorsque des MOSFET sont utilisés, l'erreur se situe dans la plage de 1 à 5 mV, mais lorsque les transistors sont utilisés comme interrupteurs, nous obtenons une erreur dans la plage de 10 à 50 mV.
Avec les résultats ci-dessus, il est clair que le MOSFET est la solution goto pour ce type d'application, et les erreurs théoriques et pratiques peuvent être causées par l'erreur de décalage de l'ampli opérationnel.
Remarque! Veuillez noter que j'ai ajouté deux LED juste pour le plaisir de tester et que vous ne pouvez pas les trouver dans le schéma réel, il montre un code binaire pour montrer quelle broche est active
Avantages et inconvénients de l'amplificateur à gain programmable
Comme ce circuit est bon marché, facile et simple, il peut être implémenté dans de nombreuses applications différentes.
Ici, le MOSFET est utilisé comme interrupteur pour faire passer tout le courant à travers la résistance à la terre, c'est pourquoi l'effet de la température n'est pas certain, et avec mes outils et mon équipement de test limités, je n'ai pas pu vous montrer les effets de la variation de température sur le circuit.
L'objectif de l'utilisation d'un BJT avec des MOSFET est parce que je veux vous montrer à quel point un BJT peut être médiocre pour ce type d'application.
Les valeurs des résistances de rétroaction et des résistances d'entrée doivent être dans la gamme KΩ, c'est-à-dire qu'avec des valeurs de résistance inférieures, plus de courant circulera dans le MOSFET, donc plus de tension chutera à travers le MOSFET, provoquant des résultats imprévisibles.
Amélioration supplémentaire
Le circuit peut être encore modifié pour améliorer ses performances, comme nous pouvons ajouter le filtre pour rejeter les bruits haute fréquence.
Comme l'amplificateur opérationnel LM358 jelly bean est utilisé dans ce test, les erreurs de décalage de l'amplificateur opérationnel jouent un rôle majeur au niveau de la tension de sortie. Il peut donc être encore amélioré en utilisant un amplificateur instrumental plutôt qu'un LM358.
Ce circuit est fait uniquement à des fins de démonstration. Si vous envisagez d'utiliser ce circuit dans une application pratique, vous devez utiliser un amplificateur opérationnel de type hacheur et une résistance de 0,1 ohms de haute précision pour obtenir une stabilité absolue.
J'espère que vous avez aimé cet article et en avez appris quelque chose de nouveau. Si vous avez le moindre doute, vous pouvez demander dans les commentaires ci-dessous ou utiliser nos forums pour une discussion détaillée.