Table des matières:

Contrôler les lumières avec vos yeux : 9 étapes (avec photos)
Contrôler les lumières avec vos yeux : 9 étapes (avec photos)

Vidéo: Contrôler les lumières avec vos yeux : 9 étapes (avec photos)

Vidéo: Contrôler les lumières avec vos yeux : 9 étapes (avec photos)
Vidéo: Comment fonctionne un œil ? - C'est pas sorcier 2024, Juillet
Anonim
Contrôler les lumières avec vos yeux
Contrôler les lumières avec vos yeux
Contrôler les lumières avec vos yeux
Contrôler les lumières avec vos yeux

Ce semestre à l'université, j'ai suivi un cours intitulé Instrumentation en biomédecine dans lequel j'ai appris les bases du traitement du signal pour les applications médicales. Pour le projet final de la classe, mon équipe a travaillé sur la technologie EOG (électrooculographie). Essentiellement, des électrodes attachées aux tempes de quelqu'un envoient une différence de tension (basée sur le dipôle cornéo-rétinien) à un circuit conçu pour filtrer et amplifier le signal. Le signal est envoyé à un ADC (convertisseur analogique-numérique - dans mon cas, l'ADC d'un Arduino Uno) et utilisé pour changer les couleurs d'un bijou néopixel.

Ce tutoriel est un moyen pour moi d'enregistrer ce que j'ai appris, et aussi de partager avec le lecteur régulier comment les signaux sont isolés du corps humain (alors soyez prévenu: c'est plein de détails supplémentaires !). Ce circuit peut en fait être utilisé, avec quelques modifications mineures, pour les impulsions électriques des cœurs moteurs en tant que forme d'onde ECG, et bien plus encore ! Bien qu'elle soit certainement loin d'être aussi avancée et perfectionnée que les machines que vous trouverez dans un hôpital, cette lampe à commande de position des yeux est idéale pour une première compréhension et un premier aperçu.

Remarque: je ne suis pas un expert en traitement du signal, donc s'il y a des erreurs ou si vous avez des suggestions d'améliorations, faites-le moi savoir ! J'ai encore beaucoup à apprendre donc les commentaires sont appréciés. De plus, de nombreux articles auxquels je fais référence dans les liens tout au long de ce didacticiel nécessitent un accès académique que j'ai la courtoisie de mon université; excuses d'avance pour ceux qui n'y auront pas accès.

Étape 1: Matériaux

  • protoboard
  • résistances (100, 1k, 10k, 33k, 1M + 0,5M)
  • condensateur (0.1uF)
  • ampli d'instrumentation (INA111 dans mon cas, mais il y en a un couple qui devrait fonctionner relativement bien)
  • ampli op (tout - j'avais un LM324N)
  • neopixel (tout fonctionne, mais j'ai utilisé un bijou)
  • 2 piles 9V
  • En-têtes de batterie 9V x2
  • électrodes à gel solide (la sélection des électrodes est discutée à l'étape 5)
  • potentiomètre
  • fil isolé
  • pinces à dénuder
  • fer à souder + soudure
  • pinces crocodiles (avec des fils attachés - en souder si nécessaire)
  • colle chaude (pour stabiliser les fils qui seraient pliés d'avant en arrière)
  • Arduino (à peu près tout fonctionne, mais j'ai utilisé un Arduino Uno)

FORTEMENT RECOMMANDÉ: oscilloscope, multimètre et générateur de fonctions. Sondez vos sorties plutôt que de vous fier uniquement aux valeurs de mes résistances !

Étape 2: Contexte physiologique et nécessité d'un circuit

Contexte physiologique et nécessité d'un circuit
Contexte physiologique et nécessité d'un circuit

Avis de non-responsabilité rapide: je ne suis en aucun cas un expert médical dans ce domaine, mais j'ai compilé et simplifié ce que j'ai appris en classe/de Google ci-dessous, avec des liens pour une lecture plus approfondie si vous le souhaitez. De plus, ce lien est de loin le meilleur aperçu du sujet que j'ai trouvé - comprend des techniques alternatives.

L'EOG (électro-oculographie) travaille sur le dipôle cornéo-rétinien. La cornée (devant de l'œil) est légèrement chargée positivement et la rétine (arrière de l'œil) est légèrement chargée négativement. Lorsque vous appliquez des électrodes sur les tempes et que vous mettez votre circuit à la terre sur votre front (aide à stabiliser vos lectures et à éliminer certaines interférences de 60 Hz), vous pouvez mesurer des différences de tension d'environ 1 à 10 mV pour les mouvements oculaires horizontaux (voir l'image ci-dessus). Pour les mouvements oculaires verticaux, placez plutôt les électrodes au-dessus et au-dessous de votre œil. Consultez cet article pour une bonne lecture sur la façon dont le corps interagit avec l'électricité - d'excellentes informations sur l'impédance de la peau, etc. Les EOG sont couramment utilisés pour diagnostiquer des maladies ophtalmologiques telles que la cataracte, les erreurs de réfraction ou la dégénérescence maculaire. Il existe également des applications en robotique contrôlée par les yeux dans lesquelles des tâches simples peuvent être effectuées d'un simple mouvement des yeux.

Pour lire ces signaux, c'est-à-dire calculer la différence de tension entre les électrodes, nous incorporons une puce importante appelée amplificateur d'instrumentation dans notre circuit. Cet ampli d'instrumentation se compose de suiveurs de tension, d'un ampli non inverseur et d'un ampli différentiel. Si vous ne savez pas grand-chose sur les amplis op, veuillez lire ceci pour un cours accéléré - essentiellement, ils prennent une tension d'entrée, la mettent à l'échelle et produisent la tension résultante à l'aide de ses rails d'alimentation. L'intégration de toutes les résistances entre chaque étage aide à résoudre les erreurs de tolérance: normalement, les résistances ont une tolérance de 5 à 10 % dans les valeurs, et le circuit régulier (pas entièrement intégré dans un ampli d'instrumentation) dépendrait fortement de la précision pour un bon CMMR (voir l'étape suivante). Les suiveurs de tension sont destinés à une impédance d'entrée élevée (discutée dans le paragraphe ci-dessus - majeur pour éviter de nuire au patient), l'ampli non inverseur est destiné à assurer un gain élevé du signal (plus sur l'amplification à l'étape suivante) et l'ampli différentiel prend la différence entre les entrées (soustrait les valeurs des électrodes). Ceux-ci sont conçus pour écraser autant que possible le bruit/interférence en mode commun (pour en savoir plus sur le traitement du signal, voir l'étape suivante) pour les signaux biomédicaux, qui regorgent d'artefacts étrangers.

Les électrodes sont confrontées à une certaine impédance cutanée car les tissus et la graisse de votre peau obstruent la mesure directe des tensions, ce qui nécessite une amplification et un filtrage du signal. Voici, ici, et voici quelques articles dans lesquels des chercheurs ont tenté de quantifier cette impédance. Cette quantité physiologique est généralement modélisée comme une résistance de 51 kOhm en parallèle avec un condensateur de 47 nF, bien qu'il existe de nombreuses variantes et combinaisons. La peau à différents endroits peut avoir des impédances différentes, surtout si l'on considère les différentes épaisseurs et quantités de muscle adjacent. L'impédance change également en fonction de la préparation de votre peau aux électrodes: un nettoyage en profondeur à l'eau et au savon est généralement suggéré pour assurer une excellente adhérence et consistance, et il existe même des gels spéciaux pour électrodes si vous désirez vraiment la perfection. Une note clé est que l'impédance change avec la fréquence (caractéristique des condensateurs), vous devez donc connaître la bande passante de votre signal afin de prédire l'impédance. Et oui, l'estimation de l'impédance EST importante pour la correspondance du bruit - voir l'étape suivante pour plus d'informations à ce sujet.

Étape 3: Traitement du signal: pourquoi et comment ?

Traitement du signal: pourquoi et comment ?
Traitement du signal: pourquoi et comment ?

Maintenant, pourquoi ne pouvez-vous pas simplement utiliser la différence de tension de 1 à 10 mV comme sortie immédiate pour contrôler les LED ? Eh bien, il existe de nombreuses raisons de filtrer et d'amplifier les signaux:

  • De nombreux CAN (convertisseurs analogiques-numériques - prenez votre entrée analogique et numérisez-les pour lire et stocker des données sur ordinateur) ne peuvent tout simplement pas détecter de si petits changements. Par exemple, l'ADC de l'Arduino Uno est spécifiquement un ADC 10 bits avec une sortie 5V, ce qui signifie qu'il mappe des tensions d'entrée 0-5V (les valeurs hors plage "rail", ce qui signifie que les valeurs inférieures seront lues comme 0V et les valeurs supérieures lues comme 5V) à des valeurs entières comprises entre 0 et 1023. 10mV est si petit dans cette plage de 5V, donc si vous pouvez amplifier votre signal sur toute la plage de 5V, les petits changements seront plus facilement détectables car ils seront reflétés par des changements quantitatifs plus importants (5mV passe à 10mV par opposition à 2V passe à 4V). Considérez-le comme une petite image sur votre ordinateur: les détails peuvent être parfaitement définis par vos pixels, mais vous ne pourrez pas différencier les formes à moins d'agrandir l'image.

    Notez qu'il est préférable d'avoir plus de bits pour votre CAN, car vous pouvez minimiser le bruit de quantification en transformant votre signal continu en valeurs numérisées discrètes. Pour calculer le nombre de bits dont vous avez besoin pour une rétention d'environ 96 % du SNR d'entrée, utilisez N = SNR (en dB)/6 en règle générale. Cependant, vous devez également garder votre portefeuille à l'esprit: si vous voulez plus de bits, vous devez être prêt à débourser plus d'argent

  • Le bruit et les interférences (bruit = artefacts aléatoires qui rendent vos signaux irréguliers au lieu d'être lisses vs interférences = non aléatoires, artefacts sinusoïdaux provenant de signaux adjacents provenant d'ondes radio, etc.) affectent tous les signaux mesurés dans la vie quotidienne.

    • La plus connue est l'interférence à 60 Hz (50 Hz si vous êtes en Europe et aucune en Russie car ils utilisent le courant continu par opposition au courant alternatif pour l'alimentation de sortie…), qui est appelée fréquence de service à partir des champs électromagnétiques alternatifs des prises de courant. Les lignes électriques transportent la haute tension CA des générateurs électriques aux zones résidentielles, où les transformateurs abaissent la tension à la norme ~ 120 V dans les prises de courant américaines. La tension alternative conduit à ce bain constant d'interférences de 60 Hz dans notre environnement, qui interfère avec tous les types de signaux et doit être filtré.
    • Les interférences à 60 Hz sont communément appelées interférences en mode commun car elles apparaissent dans vos deux entrées (+ et -) vers les amplis op. Maintenant, les amplis opérationnels ont quelque chose appelé le taux de réjection de mode commun (CMRR) pour réduire les artefacts de mode commun, mais (corrigez-moi si je me trompe !) C'est principalement bon pour les bruits de mode commun (aléatoire: bruit au lieu de non aléatoire: interférence). Pour se débarrasser de 60 Hz, des filtres coupe-bande peuvent être utilisés pour le supprimer sélectivement du spectre de fréquences, mais vous courez également le risque de supprimer les données réelles. Dans le meilleur des cas, vous pouvez utiliser un filtre passe-bas pour ne conserver qu'une plage de fréquences inférieure à 60 Hz, de sorte que tout ce qui a des fréquences plus élevées est filtré. C'est ce que j'ai fait pour l'EOG: la bande passante attendue de mon signal était de 0 à 10 Hz (en négligeant les mouvements oculaires rapides - je ne voulais pas y faire face dans notre version simplifiée) alors j'ai supprimé les fréquences supérieures à 10 Hz avec un filtre passe-bas.

      • 60 Hz peut corrompre nos signaux via un couplage capacitif et un couplage inductif. Le couplage capacitif (lire ici les condensateurs) se produit lorsque l'air agit comme un diélectrique pour que les signaux alternatifs soient conduits entre des circuits adjacents. Le couplage inductif vient de la loi de Faraday lorsque vous faites passer du courant dans un champ magnétique. Il existe de nombreuses astuces pour surmonter le couplage: vous pouvez utiliser un blindage mis à la terre comme une sorte de cage de Faraday, par exemple. La torsion/le tressage des fils, lorsque cela est possible, réduit la zone disponible pour que le couplage inductif interfère. Raccourcir les fils et réduire la taille globale de votre circuit a également le même effet pour la même raison. S'appuyer sur l'alimentation de la batterie pour les rails de l'ampli op plutôt que de le brancher sur une prise de courant est également utile car les batteries fournissent une source CC sans oscillation sinusoïdale. Lisez beaucoup plus ici!
      • Les filtres passe-bas éliminent également beaucoup de bruit, car le bruit aléatoire est représenté par les hautes fréquences. Beaucoup de bruits sont du bruit blanc, ce qui signifie que le bruit est présent pour toutes les fréquences, donc limiter autant que possible la bande passante de votre signal aide à limiter la quantité de ce bruit présente dans votre signal.

        Certains filtres passe-bas sont appelés filtres anti-aliasing car ils empêchent l'aliasing: lorsque les sinusoïdes sont sous-échantillonnées, elles peuvent être détectées à une fréquence différente de ce qu'elles sont réellement. Vous devez toujours vous rappeler de suivre le théorème d'échantillonnage de Nyquist (signaux d'échantillonnage à une fréquence 2x plus élevée: besoin d'une fréquence d'échantillonnage de > 2 Hz pour une onde sinusoïdale attendue de 1 Hz, etc.). Dans ce cas EOG, je n'avais pas à m'inquiéter de Nyquist car mon signal devait être principalement dans la plage de 10 Hz et mes échantillons Arduino ADC à 10 kHz - plus que suffisamment rapide pour tout capturer

    • Il existe également des petites astuces pour se débarrasser du bruit. La première consiste à utiliser une mise à la terre en étoile afin que toutes les parties de vos circuits aient exactement la même référence. Sinon, ce qu'une partie appelle "terre" peut différer d'une autre partie en raison d'une légère résistance dans les fils, ce qui crée des incohérences. Souder sur protoboard au lieu de coller avec des maquettes réduit également le bruit et crée des connexions sécurisées auxquelles vous pouvez faire confiance, par opposition à l'insertion press-fit.

Il existe de nombreuses autres façons de supprimer le bruit et les interférences (voir ici et ici), mais vous pouvez suivre un cours là-dessus ou Google pour plus d'informations: passons au circuit proprement dit !

Étape 4: Comment fonctionne le circuit

Comment fonctionne le circuit
Comment fonctionne le circuit

Ne vous laissez pas intimider par le schéma du circuit: voici une description approximative de la façon dont tout fonctionne: (reportez-vous également à l'étape précédente pour quelques explications)

  • À l'extrême gauche, nous avons les électrodes. L'une est fixée sur la tempe gauche, l'autre sur la tempe droite et la troisième électrode est reliée à la terre au front. Cette mise à la terre stabilise le signal afin qu'il y ait moins de dérive et élimine également une partie des interférences à 60 Hz.
  • Vient ensuite l'ampli d'instrumentation. Revenez en arrière de deux étapes pour une explication de ce qu'il fait pour générer la différence de tension. L'équation pour changer le gain de l'ampli se trouve à la page 7 de la fiche technique [G = 1+(50kOhm/Rg) où Rg est connecté sur les broches 1 et 8 de l'ampli]. Pour mon circuit, j'ai ajusté à un gain de 500 en utilisant Rg = 100Ohm.
  • Une fois que l'ampli d'instrumentation a produit la différence de tension amplifiée 500x, il existe un filtre passe-bas RC de premier ordre, qui se compose d'une résistance R_filter et d'un condensateur C_filter. Le filtre passe-bas empêche l'anti-aliasing (ce n'est pas un problème pour moi car par Nyquist, je dois échantillonner au moins 20 Hz pour une bande passante attendue de 10 Hz, et l'Arduino ADC échantillonne à 10 kHz - plus que suffisant) et coupe également le bruit à toutes les fréquences dont je n'ai pas besoin. Le système RC fonctionne car les condensateurs permettent aux hautes fréquences de passer facilement mais obstruent les fréquences plus basses (impédance Z = 1/(2*pi*f)), et la création d'un diviseur de tension avec la tension aux bornes du condensateur permet d'obtenir un filtre qui n'autorise que les fréquences plus basses. à [la coupure pour l'intensité 3dB est régie par la formule f_c = 1/(2*pi*RC)]. J'ai ajusté les valeurs R et C de mon filtre pour couper les signaux supérieurs à ~ 10 Hz car le signal biologique pour les EOG est attendu dans cette plage. À l'origine, j'ai coupé après 20 Hz, mais après expérimentation, 10 Hz a tout aussi bien fonctionné, alors j'ai opté pour la bande passante la plus petite (une bande passante plus petite est préférable pour supprimer tout ce qui est inutile, juste au cas où).
  • Avec ce signal filtré, j'ai mesuré la sortie avec un oscilloscope pour voir ma plage de valeurs en regardant à gauche et à droite (les deux extrêmes de ma plage). Cela m'a amené à environ 2 à 4 V (car le gain de l'ampli d'instrumentation était de 500x pour une plage d'environ 4 à 8 mV), lorsque ma cible est de 5 V (plage complète de l'Arduino ADC). Cette plage variait beaucoup (en fonction de la façon dont la personne avait bien lavé la peau au préalable, etc.), je ne voulais donc pas avoir autant de gain avec mon deuxième ampli non inverseur. J'ai fini par l'ajuster pour avoir un gain d'environ 1,3 seulement (ajustez R1 et R2 dans le circuit car gain de l'ampli = 1+R2/R1). Vous devrez définir votre propre sortie et ajuster à partir de là afin de ne pas dépasser 5V ! Ne vous contentez pas d'utiliser mes valeurs de résistance.
  • Ce signal peut maintenant être introduit dans la broche analogique Arduino pour la lecture MAIS l'Arduino ADC n'accepte pas les entrées négatives ! Vous devrez décaler votre signal vers le haut pour que la plage soit de 0 à 5 V au lieu de -2,5 V à 2,5 V. Une façon de résoudre ce problème est de relier la masse de votre circuit imprimé à la broche 3,3V de l'Arduino: cela décale votre signal de 3,3V (plus de 2,5V optimal mais cela fonctionne). Ma gamme était vraiment bancale alors j'ai conçu une tension de décalage variable: de cette façon, je pouvais faire tourner le potentiomètre pour centrer la gamme à 0-5V. Il s'agit essentiellement d'un diviseur de tension variable utilisant les rails d'alimentation +/- 9V afin que je puisse attacher la masse du circuit à n'importe quelle valeur de -9 à 9V et ainsi décaler mon signal vers le haut ou vers le bas de 9V.

Étape 5: Sélection des composants et des valeurs

Choisir des composants et des valeurs
Choisir des composants et des valeurs

Une fois le circuit expliqué, comment choisissons-nous lequel (électrode, ampli op) utiliser ?

  • En tant que capteur, les électrodes à gel solide ont une impédance d'entrée élevée et une impédance de sortie faible: cela signifie essentiellement que le courant peut facilement passer en aval vers le reste du circuit (faible impédance de sortie) mais aurait du mal à remonter en amont vers vos tempes. (impédance d'entrée élevée). Cela empêche l'utilisateur d'être blessé par des courants ou des tensions élevés dans le reste de votre circuit; en fait, de nombreux systèmes ont ce qu'on appelle une résistance de protection du patient pour une protection supplémentaire, juste au cas où.

    • Il existe de nombreux types d'électrodes différents. La plupart des gens suggèrent des électrodes à gel solide Ag/AgCl à utiliser dans les applications ECG/EOG/etc. Dans cet esprit, vous devez rechercher la résistance de la source de ces électrodes (revenez deux pas en arrière pour mes notes sur l'impédance de la peau) et la faire correspondre à la résistance au bruit (tension de bruit en V/sqrt (Hz) divisée par le courant de bruit en A/sqrt (Hz) -- voir les fiches techniques des amplis op) de vos amplis op -- c'est ainsi que vous choisissez le bon ampli d'instrumentation pour votre appareil. C'est ce qu'on appelle l'appariement du bruit, et des explications sur les raisons pour lesquelles l'appariement de la résistance de source Rs à la résistance au bruit Rn fonctionne peuvent être trouvées en ligne comme ici. Pour mon INA111 que j'ai choisi, le Rn peut être calculé en utilisant la tension de bruit et le courant de bruit de la fiche technique (capture d'écran ci-dessus).

      • Il existe BEAUCOUP d'articles évaluant les performances des électrodes, et aucune électrode n'est la meilleure pour tous les usages: essayez ici, par exemple. L'impédance change également pour différentes bandes passantes, comme indiqué dans les fiches techniques de l'amplificateur opérationnel (certaines fiches techniques auront des courbes ou des tableaux à différentes fréquences). Faites vos recherches, mais n'oubliez pas de garder votre portefeuille à l'esprit. C'est bien de savoir quelles électrodes/amplis op sont les meilleurs, mais cela ne sert à rien si vous ne pouvez pas vous le permettre. Vous aurez besoin d'au moins 50 électrodes pour les tests, pas seulement 3 pour une utilisation unique.

        • Pour une correspondance optimale du bruit, non seulement Rn ~= Rs: vous voulez également que la tension de bruit * le courant de bruit (Pn) soit aussi faible que possible. Ceci est considéré comme plus important que de faire Rn ~= Rs car vous pouvez ajuster Rs et Rn en utilisant des transformateurs si nécessaire.

          Mises en garde avec les transformateurs (corrigez-moi si je me trompe): ils peuvent être un peu encombrants et donc pas optimaux pour les appareils qui doivent être petits. Ils accumulent également de la chaleur, des dissipateurs thermiques ou une excellente ventilation sont donc nécessaires

        • Le bruit correspond uniquement à votre premier ampli initial; le deuxième ampli n'affecte pas autant, donc n'importe quel ampli op fera l'affaire.

Étape 6: Construire le circuit

Construire le circuit
Construire le circuit
Construire le circuit
Construire le circuit
Construire le circuit
Construire le circuit

Utilisez le schéma de frittage ci-dessus pour construire le circuit (la deuxième copie décrit à quoi chaque partie fait référence dans le schéma de circuit de l'étape précédente). Si vous avez besoin d'aide pour identifier les LED dans le schéma, utilisez ce calculateur de code couleur de résistance, mais le Rg de l'ampli d'instrumentation est de 100Ohm, le R_filter est de 1,5MOhm, le C_filter est de 0,1uF, R1 de l'ampli non inverseur est le 10kOhm, R2 est le 33kOhm, et la résistance du potentiomètre est le 1kOhm (le potentiomètre varie de 0 à 20kOhm). N'oubliez pas de modifier vos valeurs de résistance au besoin pour ajuster les gains !

Edit: il y a une erreur dans la partie au sol décalée. Supprimez le fil noir gauche. La résistance doit être connectée avec le fil rouge au rail d'alimentation comme indiqué mais aussi à la deuxième broche, pas la première, du potentiomètre. La première broche du potentiomètre doit être connectée à la broche 5V de l'Arduino. Le fil orange qui est la masse décalée doit être connecté à la deuxième broche, pas à la première.

J'ai beaucoup parlé du terrain décalé. Dans le diagramme, vous pouvez voir que la masse de l'Arduino est indiquée comme étant connectée à la masse de la maquette. C'est dans le scénario que vous n'avez pas besoin de changer de terrain. Si votre signal est hors de portée et que vous devez déplacer votre masse, essayez d'abord de connecter la masse Arduino à la broche 3,3 V de l'Arduino et visualisez votre signal. Sinon, essayez de connecter le fil orange du potentiomètre configuré (masse décalée) à la broche GND de l'Arduino.

NOTE DE SÉCURITÉ: ne gardez PAS les piles lors de la soudure, et NE PAS mettre ou souder les piles à l'envers. Votre circuit commencera à fumer, les condensateurs exploseront et la maquette pourrait également être endommagée. En règle générale, n'utilisez les piles que lorsque vous souhaitez utiliser le circuit; sinon, enlevez-les (ajouter un interrupteur à bascule pour déconnecter facilement les batteries serait également une bonne idée).

Notez que vous devez construire le circuit pièce par pièce (vérifiez chaque étape !) et sur une maquette avant de souder sur une protoboard. La première étape à vérifier est l'ampli d'instrumentation: fixez tous les rails (soudure dans les supports de batterie), Rg, etc. et utilisez un oscilloscope sur la broche de sortie. Pour commencer, utilisez un générateur de fonctions avec une onde sinusoïdale de 1 Hz avec une amplitude de 5 mV (ou le plus bas que votre générateur ira). C'est juste pour vérifier que l'ampli d'instrumentation fonctionne correctement et que votre Rg fournit votre gain cible.

Ensuite, vérifiez votre filtre passe-bas. Ajoutez cette partie du circuit et vérifiez votre forme d'onde: elle doit avoir exactement la même apparence mais moins de bruit (dentelée - voir les deux dernières images ci-dessus). Sondons votre sortie finale avec un oscilloscope avec vos électrodes au lieu d'un générateur de fonctions maintenant…

Étape 7: Tester le circuit avec un humain

Circuit de test avec un humain
Circuit de test avec un humain
Circuit de test avec un humain
Circuit de test avec un humain
Circuit de test avec un humain
Circuit de test avec un humain

Encore une fois, placez des électrodes sur vos tempes gauche et droite et attachez un fil de terre à une électrode sur votre front. Ce n'est qu'après cela que vous devez ajouter des piles - en cas de picotement, retirez IMMÉDIATEMENT et vérifiez les connexions !!! Vérifiez maintenant votre plage de valeurs lorsque vous regardez à gauche par rapport à droite et ajustez R1/R2 de l'ampli non inverseur, comme expliqué il y a deux étapes - rappelez-vous que la cible est une plage de 5 V ! Voir les images ci-dessus pour des notes sur ce qu'il faut surveiller.

Lorsque vous êtes satisfait de toutes les valeurs de résistance, soudez le tout à un protoboard. La soudure n'est pas strictement nécessaire, mais elle offre plus de stabilité par rapport aux simples joints à ajustement serré et élimine l'incertitude du circuit qui ne fonctionne pas simplement parce que vous ne les avez pas enfoncés assez fort dans une planche à pain.

Étape 8: Code Arduino

Tout le code joint au bas de cette étape !

Maintenant que vous avez une plage de 5 V, vous devez vous assurer qu'elle se situe entre 0 et 5 V au lieu de -1 V à 4 V, etc. Fixez la masse à la broche 3,3 V de l'Arduino ou connectez la tension de masse décalée (fil orange au-dessus) au rail de terre, puis connectez un fil du rail de terre à la broche GND de l'Arduino (c'est pour déplacer le signal vers le haut ou vers le bas afin que vous tombiez dans la plage 0-5V). Vous devrez jouer: n'oubliez pas d'étendre votre sortie en cas d'incertitude !

Maintenant, pour le calibrage: vous voulez que la lumière change de couleur pour différentes positions des yeux (regarder à l'extrême gauche ou pas aussi loin à gauche..). Pour cela, vous avez besoin de valeurs et de plages: exécutez EOG-calibration-numbers.ino sur l'Arduino avec tout connecté correctement (terminez les connexions à l'Arduino et au néopixel selon mon diagramme fritzing). Pas super nécessaire, mais exécutez également le code bioe.py que j'ai - cela produira un fichier texte sur votre bureau afin que vous puissiez enregistrer toutes les valeurs lorsque vous regardez à gauche ou à droite (le code python a été adapté à partir de cet exemple). Comment j'ai fait cela a été de regarder à gauche pendant 8 temps, puis à droite, puis en haut, puis en bas et répéter pour faire la moyenne plus tard (voir output_2.pdf pour un journal que j'ai conservé). Appuyez sur ctrl+C pour forcer à quitter lorsque vous êtes satisfait. En utilisant ces valeurs, vous pouvez ensuite ajuster les plages d'animations dans mon code BioE101_EOG-neopixel.ino. Pour moi, j'avais une animation arc-en-ciel lorsque je regardais droit devant, bleu pour l'extrême gauche, vert pour légèrement à gauche, violet pour légèrement à droite et rouge pour l'extrême droite.

Étape 9: Étapes futures

Voila; quelque chose que vous pouvez contrôler avec juste vos yeux. Il y a beaucoup à optimiser avant qu'il ne puisse se rendre à l'hôpital, mais c'est pour un autre jour: les concepts de base sont au moins plus faciles à comprendre maintenant. Une chose que j'aimerais revenir en arrière et changer est d'ajuster mon gain à 500 pour l'ampli d'instrumentation: avec le recul, c'était probablement trop car mon signal après était déjà de 2-4V et j'avais du mal à utiliser le non-inversant ampli pour régler parfaitement ma tessiture…

Il est difficile d'obtenir une cohérence car le signal change BEAUCOUP pour différentes conditions:

  • personne différente
  • conditions d'éclairage
  • préparation de la peau (gels, lavage, etc.)

mais même ainsi, je suis assez satisfait de ma preuve vidéo finale de performance (prise à 3 heures du matin car c'est à ce moment-là que tout commence à fonctionner comme par magie).

Je sais qu'une grande partie de ce tutoriel peut sembler déroutant (oui, la courbe d'apprentissage a été difficile pour moi aussi), alors n'hésitez pas à poser des questions ci-dessous et je ferai de mon mieux pour y répondre. Prendre plaisir!

Défi intouchable
Défi intouchable
Défi intouchable
Défi intouchable

Finaliste du Défi des Intouchables

Conseillé: