Fonctionne avec les capteurs de courant à effet Hall: ACS758

Bonjour à tous!

Peut-être que cela vaut la peine de vous présenter un peu - je suis un ingénieur de circuits régulier qui s'intéresse également à la programmation et à d'autres domaines de l'électronique: DSP, FPGA, communications radio et quelques autres. Récemment, j'ai plongé tête baissée dans les récepteurs SDR. Au début, je voulais consacrer mon premier article (j'espère que ce n'est pas le dernier) à un sujet plus sérieux, mais pour beaucoup, il ne deviendra qu'un sujet de lecture et n'apportera aucun avantage. Par conséquent, le sujet a été choisi hautement spécialisé et exclusivement appliqué. Je veux également noter que, probablement, tous les articles et questions qu'ils contiennent seront considérés davantage du côté du concepteur de circuits, et non du programmeur ou de quelqu'un d'autre. Eh bien, allons-y!

Il n'y a pas si longtemps, j'ai commandé la conception du "Système de surveillance de l'alimentation électrique d'un immeuble résidentiel", le client est engagé dans la construction de maisons de banlieue, donc certains d'entre vous ont peut-être déjà vu mon appareil. Cet appareil a mesuré les courants de consommation à chaque phase d'entrée et tension, envoyant simultanément des données via le canal radio au système Smart Home déjà installé + il a pu couper le démarreur à l'entrée de la maison. Mais la conversation d'aujourd'hui ne portera pas sur lui, mais sur son petit mais très important composant - le capteur de courant. Et comme vous l'avez déjà compris dans le titre de l'article, il s'agira de capteurs de courant «sans contact» d'Allegro - ACS758-100 .
________________________________________________________________________________________________________________________

La fiche technique, dont je parlerai du capteur, se trouve ici . Comme vous pouvez le deviner, le nombre «100» à la fin du marquage est le courant maximum que le capteur peut mesurer. Franchement - j'ai des doutes à ce sujet, il me semble que les conclusions ne résisteront tout simplement pas à 200A pendant longtemps, bien qu'elles soient tout à fait appropriées pour mesurer le courant d'appel. Dans mon appareil, un capteur 100A sans problème passe au moins 35A à travers lui en permanence + il y a des pics de consommation jusqu'à 60A.

image
Figure 1 - Aspect du capteur ACS758-100 (50/200)

Avant de passer à la partie principale de l'article, je vous suggère de vous familiariser avec deux sources. Si vous avez des connaissances de base en électronique, elles seront redondantes et n'hésitez pas à ignorer ce paragraphe. Je conseille aux autres de passer en revue pour le développement général et la compréhension:

1) L'effet Hall. Phénomène et principe de fonctionnement
2) Capteurs de courant modernes
________________________________________________________________________________________________________________________

Eh bien, commençons par le plus important, à savoir le marquage. J'achète des composants dans 90% des cas sur www.digikey.com. Les composants arrivent en Russie dans 5-6 jours, il y a probablement tout sur le site, et aussi une recherche paramétrique et une documentation très pratiques. Ainsi, une liste complète des capteurs de la famille peut être trouvée sur demande " ACS758 ". Mes capteurs y ont été achetés - ACS758LCB-100B .

À l'intérieur de la fiche technique, tout est peint selon le marquage, mais je ferai toujours attention au point clé " 100V ":

1) 100 est la limite de mesure en ampères, c'est-à-dire que mon capteur peut mesurer jusqu'à 100A;
2) " B " - cette lettre mérite une attention particulière, il peut également y avoir la lettre " U " à sa place. Capteur avec lettre Bcapable de mesurer le courant alternatif, et en conséquence directe. Un capteur avec la lettre U ne peut mesurer que le courant continu.

Également au début de la fiche technique, il existe une excellente plaque sur ce sujet:
image
Figure 2 - Types de capteurs de courant de la famille ACS758

De plus, l'une des raisons les plus importantes d'utiliser un tel capteur était l'isolation galvanique . Les bornes d'alimentation 4 et 5 ne sont pas connectées électriquement aux bornes 1,2,3. Dans ce capteur, la communication se fait uniquement sous la forme d'un champ induit.

Un autre paramètre important est apparu dans ce tableau - la dépendance de la tension de sortie sur le courant. La beauté de ce type de capteur est qu'il a une sortie en tension, pas un courant, comme les transformateurs de courant classiques, ce qui est très pratique. Par exemple, la sortie du capteur peut être connectée directement à l'entrée ADC du microcontrôleur et prendre des mesures.

Mon capteur cette valeur est de 20 mV / A . Cela signifie que lorsque le courant 1A traverse les bornes 4-5 du capteur, la tension à sa sortie augmente de 20 mV . Je pense que la logique est claire.

Le moment suivant, quelle sera la tension de sortie? Étant donné que la nourriture est «humaine», c'est-à-dire unipolaire, alors lors de la mesure de la CA, il devrait y avoir un «point de référence». Dans ce capteur, ce point de référence est 1/2 alimentation (Vcc). Une telle solution se produit souvent et elle est pratique. Lorsque le courant circule dans une direction, la sortie sera " 1/2 Vcc + I * 0,02 V ", dans l'autre demi-cycle, lorsque le courant circule dans la direction opposée, la tension de sortie sera " 1/2 Vcc - I * 0,02 V ". À la sortie, nous obtenons une onde sinusoïdale, où "zéro" est 1 / 2Vcc . Si nous mesurons le courant continu, la sortie sera " 1/2 Vcc + I * 0,02V ", puis lors du traitement des données sur l'ADC, nous soustrayons simplement la composante constante 1/2 Vccet nous travaillons avec de vraies données, c'est-à-dire avec le reste de I * 0,02V .

Il est maintenant temps de tester dans la pratique ce que j'ai décrit ci-dessus, ou plutôt, soustrait dans la fiche technique. Pour travailler avec le capteur et tester ses capacités, j'ai construit ce «mini-support»:

image
Figure 3 - Site de test du capteur de courant

Tout d'abord, j'ai décidé de mettre le capteur sous tension et de mesurer sa sortie pour m'assurer qu'il est «zéro» il a pris 1/2 Vcc . Le schéma de connexion peut être pris dans la fiche technique, mais, juste pour faire connaissance, je n'ai pas perdu de temps et sculpté le condensateur de filtre pour l'alimentation + le filtre passe-bas RC sur la broche Vout. Dans un vrai appareil, nulle part sans eux! J'ai finalement obtenu l'image suivante:

image
Figure 4 - Le résultat de la mesure de "zéro"

lorsque l'alimentation est appliquée5V de mon écharpe STM32VL-Discovery, j'ai vu ces résultats - 2,38V . La première question qui s'est posée: " Pourquoi 2,38, et non 2,5 décrit dans la fiche technique? " La question a disparu presque instantanément - j'ai mesuré le bus d'alimentation pour le débogage, et il était de 4,76-4,77 V. Mais le fait est que la puissance vient de l'USB, il y a déjà 5V, après l'USB il y a un stabilisateur linéaire LM7805, et ce n'est clairement pas LDO avec une baisse de 40 mV. Ici, c'est environ 250 mV. Eh bien, d'accord, ce n'est pas critique, la principale chose à savoir est que «zéro» est 2,38 V. C'est cette constante que je vais soustraire lors du traitement des données de l'ADC.

Et maintenant, nous prendrons la première mesure, jusqu'à présent uniquement à l'aide d'un oscilloscope. Je vais mesurer le courant de court-circuit de mon alimentation réglable, il est de 3,06 A. Ceci et l'ampèremètre intégré montrent et fluka ont donné le même résultat. Eh bien, connectez les sorties d'alimentation aux jambes 4 et 5 du capteur (sur la photo I vituha suffrages exprimés) et voir ce qui se passe:

image
Figure 5 - Mesure de courant PSU court - circuit

Comme on le voit, la tension Vout a augmenté de 2.38V à 2.44V . Si vous regardez la dépendance ci-dessus, nous devrions obtenir 2,38 V + 3,06 A * 0,02 V / A , ce qui correspond à une valeur de 2,44 V. Le résultat répond aux attentes, à un courant de 3A nous avons obtenu une augmentation à "zéro" égale à 60 mV . Conclusion - le capteur fonctionne, vous pouvez déjà travailler avec lui avec l'aide de MK.

Vous devez maintenant connecter le capteur de courant à l'une des broches ADC du microcontrôleur STM32F100RBT6. Le caillou lui-même est très médiocre, la fréquence du système n'est que de 24 MHz, mais cette écharpe a beaucoup survécu et a fait ses preuves. Je le possède déjà, probablement, depuis environ 5 ans, car il a été reçu gratuitement alors au moment où ST les a distribués à droite et à gauche.

Tout d'abord, par habitude, je voulais mettre un ampli-op avec un coefficient après le capteur. gagner "1", mais, en regardant le schéma structurel, j'ai réalisé qu'il était déjà à l'intérieur. La seule chose à considérer est qu'au courant maximal, la puissance de sortie sera égale à l'alimentation du capteur Vcc, soit environ 5V, et la STM peut mesurer de 0 à 3,3V, il est donc nécessaire dans ce cas de mettre un diviseur de tension résistif, par exemple, 1: 1,5 ou 1: 2. Mon courant est rare, j'ai donc négligé ce moment jusqu'à présent. Mon appareil de test ressemble à ceci:

image
Figure 6 - Mettre notre «ampèremètre»

De plus, pour visualiser les résultats, j'ai vissé l'écran chinois sur le contrôleur ILI9341, l'avantage était à portée de main, mais mes mains ne l'ont pas atteint du tout. Pour lui écrire une bibliothèque complète, il a tué quelques heures et une tasse de café, car la fiche technique était étonnamment informative, ce qui est rare pour l'artisanat des fils de Jackie Chan.

Vous devez maintenant écrire une fonction pour mesurer Vout à l'aide de l'ADC du microcontrôleur. Je ne dirai pas en détail, selon STM32 il y a déjà une mer d'informations et de leçons. Regardez donc:

uint16_t get_adc_value()
    {
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
    return ADC_GetConversionValue(ADC1);
    }

Ensuite, afin d'obtenir les résultats de la mesure de l'ADC dans le code exécutable du corps principal ou de l'interruption, vous devez écrire ce qui suit:

 data_adc = get_adc_value();

Après avoir déclaré la variable data_adc:

 extern uint16_t data_adc;

En conséquence, nous obtenons la variable data_adc, qui prend une valeur de 0 à 4095, car L'ADC du STM32 est de 12 bits. Ensuite, nous devons transformer le résultat «en perroquets» en une forme plus familière pour nous, c'est-à-dire en ampères. Par conséquent, vous devez d'abord calculer le prix de la division. Après le stabilisateur sur le bus 3,3V, mon oscilloscope montrait 3,17V, je ne comprenais pas à quoi il était connecté. Par conséquent, en divisant 3,17 V par 4095, nous obtenons la valeur 0,000774V - c'est le prix de la division. Autrement dit, en obtenant le résultat de l'ADC, par exemple, 2711, je le multiplie simplement par 0,000774V et j'obtiens 2,09V.

Dans notre tâche, la tension n'est qu'un «médiateur», nous devons encore la convertir en ampères. Pour ce faire, nous devons soustraire 2,38B du résultat et diviser le reste par 0,02 [B / A]. Le résultat est cette formule:

float I_out = ((((float)data_adc * presc)-2.38)/0.02);

Eh bien, il est temps de remplir le firmware dans le microcontrôleur et de voir les résultats:

image
Figure 7 - Résultats de mesure des données du capteur et de leur traitement J'ai

mesuré ma propre consommation du circuit comme on le voit 230 mA. Après avoir mesuré la même chose avec le douve vérifié, il s'est avéré que la consommation est de 201 mA. Eh bien - la précision avec une décimale est déjà très cool. Je vais vous expliquer pourquoi ... La plage du courant mesuré est de 0..100A, c'est-à-dire que la précision jusqu'à 1A est de 1% et la précision jusqu'aux dixièmes d'ampère est déjà de 0,1%! Et veuillez noter que ceci est sans aucune solution de circuit. J'étais même trop paresseux pour accrocher le filtre Condors à la nourriture.

Maintenant, vous devez mesurer le courant de court-circuit (court-circuit) de ma source d'alimentation. Je tourne la poignée au maximum et j'obtiens l'image suivante: Figure 8 - Mesures de courant de court-

image
circuit

Eh bien, en fait, les lectures sur la source elle-même avec son propre ampèremètre:

image
Figure 9 - Valeur sur l'échelle BP

En fait, elle montrait 3.09A, mais pendant que je photographiais, le vitukha était chauffé et sa résistance augmentait, et le courant, en conséquence, baissait, mais cela ne s'est pas produit. si effrayant.

En conclusion, je ne sais même pas quoi dire. J'espère que mon article aidera en quelque sorte les radio-amateurs novices à leur manière. Peut-être que quelqu'un aimera ma forme de présentation du matériel, alors je pourrai continuer à écrire périodiquement sur le travail avec divers composants. Vous pouvez exprimer vos souhaits sur le sujet dans les commentaires, je vais essayer de prendre en compte.

Et bien sûr, j'attache le code source du programme , vous voyez qui a besoin d'une bibliothèque pour travailler avec l'écran ou l'ADC. Le projet lui-même dans Keil 5.

Source: https://habr.com/ru/post/fr397641/


All Articles