Un simple voltmètre AC modulaire sur PIC16F676. Ampère-voltmètre intégré simple sur PIC16F676 Voltmètre réseau à faire soi-même sur un microcontrôleur

L'été dernier, à la demande d'un ami, j'ai développé un circuit pour un voltmètre et un ampèremètre numériques. Selon la demande, cet appareil de mesure doit être économique. Par conséquent, un affichage à cristaux liquides sur une seule ligne a été choisi comme indicateur pour afficher les informations. De manière générale, cet ampère-voltmètre était destiné à surveiller la décharge d'une batterie de voiture. Et la batterie du moteur d’une petite pompe à eau était faible. La pompe pompait l'eau à travers le filtre et la renvoyait à nouveau sur les galets dans un petit étang de la maison de campagne.

En général, je n'ai pas approfondi les détails de cette bizarrerie. Il y a peu, ce voltmètre m'est revenu entre les mains pour finaliser le programme. Tout fonctionne comme prévu, mais il y a encore une demande pour installer une LED pour indiquer le fonctionnement du microcontrôleur. Le fait est qu'un jour, en raison d'un défaut du circuit imprimé, l'alimentation du microcontrôleur a été perdue, il a naturellement cessé de fonctionner, et comme l'écran LCD possède son propre contrôleur, les données précédemment chargées, la tension sur la batterie et le courant consommé par la pompe, sont restés sur l'écran indicateur. Auparavant, je n'avais pas pensé à un incident aussi désagréable, je vais maintenant devoir en tenir compte dans le programme des appareils et de leurs circuits. Sinon, vous admirerez les beaux chiffres sur l'écran d'affichage, mais en réalité tout a déjà brûlé depuis longtemps. En général, la batterie était complètement déchargée, ce qui, comme il l'a dit, était alors très mauvais pour un ami.
Le schéma de l'appareil avec un indicateur LED est présenté sur la figure.

Le circuit est basé sur un microcontrôleur PIC16F676 et un indicateur LCD. Étant donné que tout cela fonctionne exclusivement pendant la saison chaude, l'indicateur et le contrôleur peuvent être achetés au moins cher. L'amplificateur opérationnel choisi était également approprié - LM358N, bon marché et ayant une plage de température de fonctionnement de 0 à +70.
Pour convertir les valeurs analogiques (numériser) de tension et de courant, une tension d'alimentation stabilisée du microcontrôleur de +5V est sélectionnée. Cela signifie qu'avec une numérisation sur dix bits d'un signal analogique, chaque bit correspondra à - 5V = 5000 mV = 5000/1024 = 4,8828125 mV. Cette valeur est multipliée par 2 dans le programme, et nous obtenons 9,765625 mV par bit de code binaire. Et pour l'affichage correct des informations sur l'écran LCD, nous avons besoin qu'un chiffre soit égal à 10 mV ou 0,01 V. Par conséquent, des circuits de mise à l'échelle sont fournis dans le circuit. Pour la tension, il s'agit d'un diviseur réglable composé des résistances R5 et R7. Pour corriger les lectures actuelles, un amplificateur de mise à l'échelle est utilisé, assemblé sur l'un des amplificateurs opérationnels du microcircuit DA1 - DA1.2. Le coefficient de transmission de cet amplificateur est ajusté à l'aide d'une résistance R3 de 33k. Il est préférable que les deux résistances d'accord soient multitours. Ainsi, lors de l'utilisation d'une tension d'exactement +5 V pour la numérisation, la connexion directe des signaux aux entrées du microcontrôleur est interdite. L'ampli opérationnel restant, connecté entre R5 et R7 et l'entrée RA1 de la puce DD1, est un répéteur. Sert à réduire l'impact du bruit et des interférences impulsionnelles sur la numérisation, grâce à un retour 100 % négatif et indépendant de la fréquence. Pour réduire le bruit et les interférences lors de la conversion de la valeur actuelle, un filtre en forme de U composé de C1, C2 et R4 est utilisé. Dans la plupart des cas, C2 n’a pas besoin d’être installé.

En tant que capteur de courant, la résistance R2, un shunt d'usine domestique de 20A est utilisé - 75ShSU3-20-0,5. Avec un courant circulant à travers le shunt de 20 A, une tension de 0,075 V chutera à travers celui-ci (selon la fiche technique du shunt). Cela signifie que pour qu'il y ait deux volts à l'entrée du contrôleur, le gain de l'amplificateur doit être d'environ 2 V/0,075 = 26. Approximativement, cela est dû au fait que notre résolution de numérisation n'est pas de 0,01 V, mais de 0,09765625 V. Bien sûr, c'est possible appliquer des shunts faits maison en ajustant le gain de l'amplificateur DA1.2. Le gain de cet amplificateur est égal au rapport des valeurs des résistances R1 et R3, Kus = R3/R1.
Ainsi, sur la base de ce qui précède, le voltmètre a une limite supérieure de 50 volts et l'ampèremètre a une limite supérieure de 20 ampères, bien qu'avec un shunt évalué à 50 ampères, il mesurera 50 A. Ainsi, il peut être installé avec succès sur d’autres appareils.
Parlons maintenant de la modification, qui comprend l'ajout d'un indicateur LED. De petites modifications ont été apportées au programme et maintenant, pendant que le contrôleur fonctionne, la LED clignote à une fréquence d'environ 2 Hz. Le temps de lueur des LED a été choisi pour être de 25 ms pour économiser de l'argent. Il aurait été possible d'afficher un curseur clignotant sur l'écran, mais ils ont dit qu'avec une LED, ce serait plus clair et efficace. On dirait que c'est ça. Bonne chance. K.V.Yu.


.

Une des options pour un appareil fini mis en œuvre par Alexey. Malheureusement, je ne connais pas le nom de famille. Merci à lui pour son travail et ses photos.


Cet appareil est implémenté sur PIC16F676 à l'aide d'un CAN dix bits intégré. Le voltmètre peut mesurer des tensions jusqu'à 30 V CC et peut être utilisé dans des alimentations de table ou dans divers tableaux de bord.
Trois indicateurs à sept segments avec une anode commune sont utilisés pour afficher la tension. Les informations sont affichées sur les indicateurs de manière dynamique (multiplexage), le taux de rafraîchissement est d'environ 50 Hz.

Circuit du voltmètre :

Tension de sortie du diviseur
Par défaut, sur un microcontrôleur PIC, la tension de référence ADC est réglée sur VCC (+5 V dans ce cas).
Il est nécessaire de réaliser un diviseur de tension qui réduira la tension de 30V à 5V. Il est facile de calculer Vin/6 ==> 30/6 = 5, le facteur de division est de 6. De plus, le diviseur doit avoir une résistance élevée afin d'influencer le moins possible la tension mesurée.

Calcul
ADC - 10 bits signifie que le nombre maximum d'échantillons est de 1023.
La valeur de tension maximale est de 5 V, nous obtenons alors 5/1023 = 0,0048878 V/Count. Dans ce cas, si le nombre de points ADC est de 188, alors la tension d'entrée est de 188 * 0,0048878 = 0,918 volts

En utilisant un diviseur de tension, la tension maximale est de 30 V, donc 30/1023 = 0,02932 V/Count.
Et si le nombre de points ADC est de 188, alors la tension d'entrée est de 188 * 0,02932 = 5,5 V.

Le condensateur de 0,1 uF rend l'ADC plus stable, car les ADC à dix bits sont assez sensibles.
La diode Zener 5,1 V est conçue pour protéger l'ADC contre le dépassement de la tension autorisée.

Circuit imprimé:

Photo de l'appareil fini :

Précision et calibrage
La précision globale du circuit est assez élevée, elle dépend entièrement des valeurs de résistance des résistances de 47 kOhm et 10 kOhm. Par conséquent, plus les composants sont sélectionnés avec précision, plus les lectures seront précises.
Le voltmètre est calibré à l'aide d'une résistance ajustable de 10 kOhm ; réglez la résistance à environ 7,5 kOhm et surveillez les lectures avec un autre appareil.
Vous pouvez également utiliser n'importe quelle source stabilisée de 5 ou 12 volts pour le réglage ; dans ce cas, faites tourner la résistance de trim jusqu'à obtenir la valeur correcte sur l'écran.

Projet dans Proteus :

Voltampèremètre sur PIC16F676

Ce projet est un ampère-voltmètre DC (ou voltamètre si vous préférez). Gamme - jusqu'à 99,9 V et 9,9 A (ou 99,9 A, selon le firmware).


Sa particularité est qu'il est construit sur le microcontrôleur très répandu PIC16F676. Cependant, malgré cela, il a la capacité d'afficher simultanément la tension et le courant mesurés sur des indicateurs à sept segments à quatre (ou trois caractères), tous deux avec une anode commune. et une cathode commune (définir une résistance). Lors de l'utilisation d'un indicateur à quatre caractères, le dernier segment affiche le symbole « U » pour la tension et « A » pour le courant. L'ampère-voltmètre peut également fonctionner avec un seul indicateur, et avec le bouton «B», vous pouvez sélectionner ce qui y sera affiché - tension ou courant. Si les deux indicateurs sont installés, vous pouvez utiliser ce bouton pour échanger leurs affectations. Le bouton "H" permet de corriger les lectures de l'ampèremètre et d'égaliser la linéarité de ces lectures, si nécessaire.

jusqu'en février 2014 : Le développement peut désormais être consulté sur :

Le schéma du voltammètre est présenté ci-dessous. Comme déjà mentionné, il est construit sur le microcontrôleur très répandu PIC16F676, sur lequel sont notamment assemblés de simples voltmètres et ampèremètres.


Cliquez sur le schéma pour l'agrandir
En raison du nombre limité de broches pour ce MK, le registre 74HC595 a été utilisé. Ce microcircuit n'a pas d'analogue avec le même brochage, mais il n'est pas rare et est souvent utilisé dans des circuits similaires pour connecter des indicateurs au MK. Pour protéger les sorties MK des surcharges et augmenter la luminosité des indicateurs, des commutateurs à transistor sont utilisés. Lors de l'utilisation d'indicateurs avec une cathode commune, il est nécessaire d'utiliser des transistors de structure différente, reliant leurs collecteurs non pas au +5V, mais à la masse, tandis que la résistance de la broche 11 du microcontrôleur doit être déplacée dans une position différente. Vous devrez peut-être sélectionner des résistances à la sortie du registre et dans les bases des transistors pour qu'elles correspondent à vos indicateurs et transistors.

Comme mentionné précédemment, le bouton « B » permet d'intervertir la fonction des indicateurs s'il y en a deux. S'il n'y a qu'un seul indicateur, alors avec ce bouton, vous pouvez alterner entre l'affichage de la tension et du courant. Lorsque vous appuyez sur le bouton « H », les indicateurs commencent à clignoter. Pendant qu'ils clignotent, vous pouvez utiliser les boutons « B » et « H » pour ajuster les lectures de l'ampèremètre. Après correction, le clignotement s'arrêtera et le facteur de correction sera enregistré dans la mémoire non volatile. Le mode d'affichage défini par le bouton "B" est également stocké dans une mémoire non volatile.

Après la mise sous tension, les voyants ne s'allument pas immédiatement, mais avec un retard de plusieurs secondes. La fréquence des changements de lecture est d'environ 9 Hz.

Une des options de carte de circuit imprimé pour quatre indicateurs avec une anode commune. Les corrections nécessaires sont encerclées sur la figure : il faut retirer le cavalier allant à la masse et ajouter un petit cavalier.


Fichiers pour le projet.


Nous continuons à comprendre les options de mise en œuvre d'un voltmètre - ampèremètre basé sur un microprocesseur.
N'oubliez pas les archives avec les fichiers, nous en aurons besoin aujourd'hui.

Si vous souhaitez installer de gros indicateurs, vous devrez résoudre le problème de la limitation de la consommation de courant via les ports MK. Dans ce cas, il est nécessaire d'installer des transistors tampons sur chaque chiffre de l'indicateur.

Indicateurs de grande taille


Ainsi, le circuit discuté précédemment prendra la forme montrée sur la Fig. 2. Trois transistors VT1-VT3 de l'étage tampon ont été ajoutés pour chaque chiffre de l'indicateur. L'étage tampon installé inverse le signal de sortie du MK. Par conséquent, la tension d'entrée basée sur VT2 est inverse par rapport au collecteur du transistor spécifié et est donc adaptée pour fournir une sortie formant virgule à la sortie. Cela permet de supprimer le transistor VT1, qui se trouvait auparavant dans le circuit de la Fig. 1, en remplaçant cette dernière par la résistance de découplage R12. N'oubliez pas que les valeurs des résistances dans les circuits de base des transistors VT1-VT3 ont également changé.
Si vous souhaitez installer des indicateurs aux dimensions non conventionnelles, vous devrez installer des résistances à faible résistance (1 - 10 Ohms) dans le circuit collecteur des transistors indiqués pour limiter les surtensions lorsqu'ils sont allumés.

La logique de fonctionnement du MK pour cette option ne nécessite qu'une légère modification du programme en termes d'inversion du signal de sortie pour contrôler les bits, à savoir les ports RA0, RA1, RA5.
Considérons seulement ce qui va changer, à savoir le sous-programme déjà connu sous le nom de code « Fonction de génération d'indication dynamique » dans Inscription n°2(voir dossier « tr_OE_30V » dans l'archive ou la première partie de l'article) :

16. Indicateur void ()( 17. while (show_digit< 3) { 18. portc = 0b111111; // 1 ->C 19. if (show_digit == 2)( delay_ms(1); ) 20. porta = 0b100111; 21. show_digit = show_digit + 1 ; 22. switch (show_digit) ( 23. cas 1 : ( 24. if (digit1 == 0) ( ) else ( 25. Cod_to_PORT(DIGIT1); 26. PORTA &= (~(1<<0)); //0 ->A0 27. ) pause ;) 28. cas 2 : ( 29. Cod_to_PORT(DIGIT2); 30. PORTA &= (~(1<<1)); //0 ->A1 31. break;) 32. cas 3 : ( 33. Cod_to_PORT(DIGIT3); 34. PORTA &= (~(1<<5)); //0 ->A5 35. break;) ) 36. Delay_ms(6); 37. si (RA2_bit==0) (PORTA |= (1<<2);// 1 ->A2 38. Delay_ms(1);) 39. if ((show_digit >= 3)!= 0) break; 40. ) show_digit = 0 ;)


Comparez les deux options. L'inversion du signal sur le port RA (ligne 20 du Listing n°2) est facile à lire, puisqu'elle est écrite sous forme binaire. Il suffit de combiner les sorties du MK et du nombre binaire. Aux lignes 19 et 37 apparaissent des conditions un peu étranges qui n’existaient pas au début. Dans le premier cas : « retarder le signal zéro logique au port RA1 pendant l’indication du deuxième chiffre ». Dans la seconde : « s’il y a un zéro logique sur le port RA2, inversion ». Lorsque vous compilez la version finale du programme, vous pouvez les supprimer, mais pour la simulation dans PROTEUS, ils sont nécessaires. Sans eux, la virgule et le segment « G » ne s'afficheront pas normalement.
Pourquoi? - demandez-vous, parce que la première option a très bien fonctionné.

En conclusion, souvenez-vous des paroles du forgeron du film « Formule d'amour » : « ...si une personne l'a construit, un autre peut toujours le démonter ! »
Bonne chance!

Vote des lecteurs

L'article a été approuvé par 27 lecteurs.

Pour participer au vote, inscrivez-vous et connectez-vous au site avec votre nom d'utilisateur et votre mot de passe.

L'appareil présenté ici sera utile si vous disposez d'une alimentation avec une tension de sortie de 0-10 V. Ce sont les limites de mesure qui sont « intégrées » dans le circuit représenté sur la figure. Il est basé sur un microcontrôleur Atmega8 (U1) dans un boîtier DIP standard. Cela peut sembler encombrant, mais il a été choisi en raison de sa grande popularité et aussi parce que les programmeurs pour ce microcontrôleur sont très courants. Atmega8 est utilisé par la plupart des radioamateurs et sur Internet vous pouvez trouver de nombreux circuits avec ce microcontrôleur. Par conséquent, si vous n’aimez pas ce voltmètre, Atmega8 ne restera pas inactif.

Voltmètre numérique sur Atmega8. Le schéma est basique.

La mesure du voltmètre sera affichée sur un indicateur numérique à sept segments à trois chiffres (DISP1). Je vais vous donner quelques informations à ce sujet.

Indicateur LED numérique à 7 segments est un indicateur composé de sept LED installées en forme de chiffre 8. En allumant ou éteignant les LED (segments) correspondantes, vous pouvez afficher des chiffres de zéro à neuf, ainsi que quelques lettres. En règle générale, plusieurs indicateurs numériques sont utilisés pour créer des nombres à plusieurs chiffres - pour cela, les indicateurs sont équipés d'un segment de virgule (point) - dp. En conséquence, un indicateur comporte 8 segments, bien qu'ils soient appelés 7 segments en fonction du nombre de segments numériques.

Chaque segment indicateur est une LED distincte, qui peut être allumée (allumée) ou éteinte (non allumée) en fonction de la polarité de la tension qui leur est fournie. Les indicateurs sont disponibles avec une cathode commune et une anode commune. Nous parlons de la connexion commune de toutes les LED (segments). De plus, les indicateurs peuvent contenir plusieurs chiffres, auquel cas chaque chiffre est appelé chiffre ou signe. Par exemple, un indicateur à sept segments à trois chiffres (trois chiffres) contient trois chiffres. C'est exactement le genre d'indicateur dont vous aurez besoin pour cet appareil.


La conception utilise un indicateur lumineux rouge GNT-2831BD-11 avec une anode commune. Les résistances R1-R8 déterminent le courant dans l'indicateur et donc sa luminosité. Leur résistance ne doit pas dépasser le courant de sortie maximum (40 mA), même lorsque les 8 LED sont allumées en même temps. Le circuit utilise un CAN (convertisseur analogique-numérique) asymétrique 10 bits situé dans l'AVR. La plage de valeurs de sortie est de 0 à 999. Lorsque la limite de ces valeurs est atteinte, le symbole "---" apparaîtra.

A l'entrée du voltmètre (in), un diviseur de tension est installé à partir des résistances R9, R10 et R11, fournissant une plage de mesure allant jusqu'à 10 V avec une erreur de 0,01 V. À la broche 23 du microcontrôleur U1, le diviseur génère un tension qui ne doit pas dépasser 2,5 V. Le voltmètre à résistance d'entrée est proche de 1 mOhm. Pour calibrer le voltmètre, appliquez une tension connue avec précision à son entrée et, en déplaçant la résistance d'ajustement R11, obtenez les mêmes lectures sur l'indicateur.

Le taux de mise à jour du voltmètre est d'environ 4 Hz. Le circuit est alimenté par une source stabilisée de 5 V. La consommation de courant de l'appareil est d'environ 25 mA (l'essentiel de la consommation est dans l'indicateur). Placez les composants C1 et C2 aussi près que possible du microcontrôleur.

Les bits correctement définis sont illustrés dans la figure ci-dessous.


Si vous avez besoin de limites de mesure jusqu'à 100 V, modifiez la valeur de R10 à 9,1 mOhm et de R11 à 2,2 mOhm. Vous obtiendrez alors la plage de mesure souhaitée avec une erreur de 0,1 V et une résistance d'entrée d'environ 10 mOhm. Dans ce cas, vous devrez modifier l'emplacement du point indicateur pour qu'il s'affiche derrière deux symboles, et non derrière le premier, comme sur le schéma. Pour ce faire, laissez libre la broche 28 de la puce U1 et connectez au fil commun la broche 27. Désormais, à la place des caractères sous la forme 0,00, 00,0 sera affiché.

Chargement...Chargement...