Table des matières:
Vidéo: Détecteur à induction d'impulsions basé sur Arduino - LC-Trap : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
En cherchant d'autres idées pour un simple détecteur de métaux Ardino Pulse Induction avec une seule tension d'alimentation, je suis tombé sur la page d'accueil de Teemo:
www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit
Il a créé un simple détecteur à induction d'impulsions utilisant le principe LC-Trap. Des circuits similaires ont été publiés ici sur Instructable par TechKiwiGadgets. Sauf que le circuit Teemo utilise les comparateurs internes d'un microcontrôleur PIC, nécessitant ainsi moins de composants externes
J'ai donc été mis au défi d'utiliser l'Arduino au lieu d'un contrôleur PIC pour ce schéma et de regarder jusqu'où je peux aller.
Étape 1: Schéma
Le schéma de l'Arduino est un peu plus compliqué car l'Arduino ne permet pas de router un signal analogique interne vers l'entrée du comparateur. Cela ajoute deux composants pour un simple deviderr de tension. Cela conduit à une conception avec 12 composants externes (en laissant de côté le haut-parleur et l'écran LCD 16x2), contre 9 pour la conception Flip Coil.
Le principe de fonctionnement du schéma est très bien expliqué sur le site de Teemo. Fondamentalement, la bobine est alimentée puis éteinte. Après la mise hors tension, la bobine et le condenseur en parallèle créeront une oscillation amortie. La fréquence et la décroissance de l'oscillation sont influencées par le métal à proximité de la bobine. Pour plus de détails sur le circuit voir la page de Teemo ou de TechKiwi ici sur Instructables.
Comme dans le détecteur Flip Coil Pulse Induction, j'utilise le comparateur interne et la possibilité de déclencher une interruption pour acquérir le signal de la bobine.
Dans ce cas, j'obtiendrai plusieurs interruptions car la tension oscille autour de la tension de référence définie sur le comparateur. A la fin de l'oscillation, la tension au niveau de la bobine se stabilisera autour de 5V, mais pas exactement. J'ai choisi un diviseur de tension avec 200 Ohm et 10k Ohm pour obtenir une tension d'environ 4,9 volts
Pour réduire la complexité des schémas, j'ai utilisé D4 et D5 pour fournir GND (pour la résistance 10k) et 5V (pour la résistance 220 Ohm). Les broches sont fixées au démarrage du détecteur.
Dans cette version, j'ai ajouté une connexion de haut-parleur à l'aide de l'approche multi-tons à volume contrôlé, comme décrit dans Comment programmer un détecteur de métaux basé sur Arduino. Cela permet de différencier les propriétés de la cible ainsi que d'avoir une idée de la force du signal. Le haut-parleur peut être connecté à l'en-tête supplémentaire à 5 broches. Les 3 broches restantes de l'en-tête seront utilisées pour les boutons-poussoirs (à mettre en œuvre).
Étape 2: Programmation
Maintenant que le circuit est conçu et que le prototype est construit, il est temps de trouver une approche appropriée pour détecter le métal.
1. Compter les impulsions
Compter les impulsions de l'oscillation jusqu'à ce qu'elle se désintègre complètement est une idée.
S'il y a du métal près de la bobine, la quantité d'oscillation diminue. Dans ce cas, la tension de référence du comparateur doit être réglée à un niveau tel que la dernière impulsion est à peine encore mesurée. Ainsi, si quelque chose est détecté, cette impulsion disparaît immédiatement. C'était un peu problématique.
Chaque vague de l'oscillation crée deux interruptions. Un en descendant et un en remontant. Pour régler la tension de référence exactement à la crête d'une onde d'oscillation, le temps entre la descente et la montée doit être aussi court que possible (voir photo). Malheureusement, ici, la surcharge de l'environnement Arduino crée des problèmes.
Chaque déclencheur de l'interruption appelle ce code:
ISR(ANALOG_COMP_vect){
Toggle1=Toggle0 // sauvegarde la dernière valeur Toggle0=TCNT1; // obtient une nouvelle valeur }
Ce code prend un certain temps (si je me souviens bien, environ 78 cycles d'instructions sont d'environ 5 microsecondes à 16MHz). Par conséquent, la distance minimale détectable entre deux impulsions est exactement le temps que prend ce code. Si le temps entre deux déclencheurs se raccourcit (voir l'image), il ne sera pas détecté, car le code est entièrement exécuté avant de détecter une deuxième interruption.
Cela entraîne une perte de sensibilité. En même temps, j'ai remarqué que l'amortissement des oscillations est très sensible à toutes les influences extérieures, rendant ainsi cette approche au total un peu difficile.
2. Mesurer la fréquence
Une autre façon de détecter le métal consiste à mesurer la fréquence de l'oscillation. Cela présente un gros avantage par rapport à la mesure de l'amortissement de l'oscillation car le changement de fréquence permet de discriminer le métal. S'il y a un matériau ferreux près de la bobine, la fréquence ralentira, s'il y a du métal précieux près de la bobine, la fréquence augmentera.
La façon la plus simple de mesurer la fréquence est de mesurer la quantité d'impulsions après que les bobines commencent à osciller. La période de temps entre le début et la dernière impulsion divisée par la quantité totale d'impulsions mesurées est la fréquence. Malheureusement, les dernières oscillations sont assez asymétriques. Comme la présence de métal influence également la décroissance de l'oscillation, les dernières oscillations sont encore plus dissymétriques, les lectures sont difficiles à interpréter. Dans l'image, cela est montré avec le croisement 1 à 1' et 2 à 2'.
Une meilleure façon est donc d'utiliser des impulsions antérieures pour mesurer la fréquence. En testant, il est intéressant de noter que j'ai découvert que certaines impulsions sont plus sensibles que d'autres. Quelque part à 2/3 des oscillations est un bon point pour acquérir les données.
Traitement des données
Le code initial basé sur la boucle() appelant une fonction pulse() pour faire le minutage de la bobine. Même si les résultats n'étaient pas mauvais, j'ai eu envie d'améliorer le timing. Pour ce faire, j'ai créé un code entièrement basé sur une minuterie, menant à l'instruction distincte Comment programmer un détecteur de métaux basé sur Arduino. Cette instructable explique en détail le timing, la sortie LCD de traitement des données, etc.
1. L'écran LCD
La première approche consistait à mesurer 10 impulsions, puis à afficher les valeurs sur l'écran LCD. Comme j'ai découvert que le transfert de données I2C était beaucoup trop lent, j'ai changé de code pour mettre à jour un seul caractère par impulsion.
2. Approche de la valeur minimale
Pour améliorer davantage la stabilité des lectures, j'ai écrit une routine de sortie série pour avoir une meilleure idée des données mesurées. Là, il est devenu évident que même si la plupart des lectures étaient quelque peu stables, certaines ne l'étaient pas ! Certaines lectures de la « même » impulsion d'oscillation étaient si éloignées que cela ruinerait toute approche pour analyser un changement de fréquence.
Pour compenser cela, j'ai créé une "frontière" à l'intérieur de laquelle les valeurs étaient dignes de confiance. C'est à dire. lorsque les valeurs étaient à plus de 35 cycles de timer1 de la valeur attendue, ces valeurs ont été ignorées (expliquées en détail dans l'Instructable "Comment programmer un détecteur de métaux basé sur Arduino")
Cette approche s'est avérée très stable.
3. La tension
La conception originale de Teemo est alimentée en dessous de 5 volts. Comme mes hypothèses étaient "plus de volts = plus de puissance = plus de sensibilité", j'ai alimenté l'unité au début avec 12V. Cela a entraîné un échauffement du MOSFET. Cet échauffement a alors entraîné une dérive générale des valeurs mesurées, conduisant à de fréquents rééquilibrages du détecteur. En diminuant la tension à 5 V, la génération de chaleur du MOSFET a pu être minimisée à un niveau où presque aucune dérive des lectures n'a été observée. Cela a rendu le circuit encore plus simple, car le régulateur de tension intégré de l'Arduino n'était plus nécessaire.
Pour un MOSFET j'ai choisi dans un premier temps l'IRL540. Ce MOSFET est compatible avec le niveau logique, mais a une tension nominale maximale de 100 V. J'espérais de meilleures performances en passant à un IRL640 avec des valeurs nominales de 200V. Malheureusement, les résultats étaient les mêmes. Ainsi, un IRL540 ou un IRL640 fera l'affaire.
Étape 3: Résultats finaux
L'avantage du détecteur est qu'il fait la distinction entre les matériaux précieux et ferreux. L'inconvénient est que la sensibilité avec ce schéma simple n'est pas très bonne. Pour comparer les performances j'ai utilisé les mêmes références que pour le détecteur Flip-Coil. Probablement bon pour certains repérage, mais très probablement décevant pour une recherche réelle.
Ici, la conception d'origine avec le contrôleur PIC pourrait être plus sensible car il fonctionne sur 32 MHz au lieu des 16 MHz du contrôleur, offrant ainsi une résolution plus élevée pour détecter les changements de fréquence.
Les résultats ont été obtenus en utilisant la bobine avec 48 tours à 100 mm.
Comme toujours, ouvert aux commentaires
Conseillé:
Capteur/détecteur de lumière basé sur LDR : 3 étapes
Capteur/détecteur de lumière basé sur LDR : les capteurs et détecteurs de lumière sont extrêmement utiles pour les microcontrôleurs et les systèmes embarqués et une surveillance de l'intensité doit également être effectuée. L'un des capteurs les plus simples et les moins chers est le LDR. Les résistances LDR ou Light Dependent peuvent être facilement utilisées avec
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Détecteur d'arythmie basé sur la fréquence utilisant Arduino : 7 étapes
Détecteur d'arythmie basé sur la fréquence utilisant Arduino : Les arythmies cardiaques affectent environ quatre millions d'Américains chaque année (Texas Heart Institute, par. 2). Alors que chaque cœur connaît des permutations de rythme et de fréquence, les arythmies cardiaques chroniques peuvent être mortelles pour leurs victimes. De nombreuses arythmies cardiaques
Détecteur de métaux à induction à impulsions basé sur Arduino DIY : 5 étapes
Détecteur de métaux à induction par impulsions basé sur Arduino DIY : il s'agit d'un détecteur de métaux relativement simple avec d'excellentes performances
Détecteur à induction d'impulsions basé sur Arduino - Bobine à bascule : 5 étapes (avec photos)
Détecteur à induction d'impulsions basé sur Arduino - Bobine à bascule : l'idéeAyant construit des détecteurs de métaux dans le passé avec des résultats variables, je voulais explorer les capacités de l'Arduino dans cette direction. Il existe de bons exemples de fabrication de détecteurs de métaux avec l'Arduino, certains ici comme instructable