✓ Contacts
✓ Contexte
✓ Livrables
✓ Matériel requis
1- Simulation sous LTSpice
2- Design du PCB sous KiCAD
3- Code sous Arduino IDE
4- Application Android
5- Réalisation du shield
6- Banc de test et principaux résultats
7- Datasheet du capteur
✓ Conclusions et analyse critique du projet
Cyril ARDISSON : [email protected]
Kévin BARGE : [email protected]
Dans le cadre de l'UF de 4ème Année spécialité Génie Physique "Du capteur au banc de test" (I4GPMH21), nous avons réalisé l'évaluation d'une technologie low-tech : un capteur en graphite, composé de papier, recouvert d'une couche de graphite qu'on peut simplement trouver dans les crayons à papier ! En se déformant, le nombre de particules de graphite reliées varie, ce qui entraîne une modification de sa résistance. De cela, on peut donc induire la déformation. Sur le même principe qu'une jauge de contrainte (ici low-tech !). Ce travail se base sur les travaux de chercheurs de l'Université de Northwestern (Etats-Unis), publiés en 2014 dans l'article "Pencil Drawn Strain Gauges and Chemiresistors on Paper" (Cheng-Wei Lin, Zhibo Zhao, Jaemyung Kim & Jiaxing Huang).
Afin de réaliser ce projet, plusieurs étapes ont été réalisées : simulation électronique, design de PCB et fabrication, programmation d'un Arduino Uno et d'une IHM, mise en place d'un banc de test et écriture d'une datasheet.
Ici, nous faisons le tour de tout ce qui a été fait dans le cadre de ce projet.
Plusieurs livrables sont attendus :
✓ Le shield PCB connecté à une carte Arduino Uno, composé : du capteur en graphite, d'un montage amplificateur transimpédance et d'un module Bluetooth. D'autres composants peuvent aussi être implémentés (*) : écran OLED, encodeur rotatoire, potentiomètre digital, flex sensor et connexions pour un servo-moteur ;
✓ Le code Arduino permettant d'effectuer les mesures du capteur et de contrôler les composants implémentés ;
✓ L'APK Android permettant d'interfacer le shield et le code Arduino correspondant : l'IHM en résumé ;
✓ Le / Les code(s) Arduino permettant d'effectuer les tests du capteur ;
✓ La datasheet du capteur reprenant toutes ses caractéristiques ainsi que ses tests.
(*) Pour notre projet, nous avons décidés d'implémenter sur notre shield : l'écran OLED, l'encodeur rotatoire, le potentiomètre digital et le flex sensor.
Afin de réaliser notre dispositif, nous avons eu besoin de :
Pour le montage amplificateur transimpédance :
✓ Résistances : une de
✓ Un potentiomètre digital (si substitution d'une résistance de
✓ Capacités : trois de
✓ Un amplificateur opérationnel : ici, choix du LTC1050 ;
Pour le reste du dispositif :
✓ Un module Bluetooth : ici, choix du HC05 ;
✓ Un écran OLED de dimension 128*64 ;
✓ Un encodeur rotatoire ;
✓ Un flex sensor.
Notre capteur en graphite a une résistance de l'ordre du
Description du montage amplificateur transimpédance
Notre montage est composé de 4 zones importantes, une pour l'amplification et trois qui correspondent à des filtres :
✓ Un premier filtre en entrée de l'amplificateur (
✓ Un second filtre couplé à l'amplificateur (
✓ et un troisième filtre en sorti de l'amplificateur (
Sur LTSpice, nous avons testé ce montage en deux temps.
Simulations réalisées avec LTSpice
Sur LTSpice, nous avons testé ce montage en deux temps.
D'abord, nous avons effectué une première simulation pour vérifier si l'amplification était bien effective. Comme on peut le constater ci-dessous, le signal est bien amplifié à
Enfin, nous avons effectué une seconde simulation, afin d'observer la réponse à un courant alternatif et ainsi de vérifier que le signal est bien filtré. Comme on peut aussi le constater ci-dessous, le signal paraît filtré, successivement par les 3 filtres.
Ici, nous sommes repartis du montage décrit ci-dessus, avec quelques modifications et ajouts de composants. Nous avons utilisé le logiciel KiCad 7.0 :
✓ Comme mentionné auparavant, nous avons remplacé
✓ Ajout d'un module Bluetooth afin d'assurer la communication entre le PCB et l'APK Android ;
✓ Ajout d'un écran OLED afin d'afficher 3 menus différents ;
✓ Ajout d'un encodeur rotatoire afin de passer de menu en menu ;
✓ Et enfin, ajout d'un flex sensor, en vu des tests finaux.
Pour se faire, nous avons débuté par la création de notre propre bibliothèque de symboles correspondant à nos composants. Puis, nous avons procédé à la création de la schématique électrique de l'ensemble du montage. L'image ci-dessous correspond à cette schématique.
Puis, nous avons créé les empreintes de nos composants, en respectant certaines dimensions, en vu de l'impression du PCB (diamètre des trous, forme des empreintes, etc.). Nous sommes ensuite passés à la disposition des composants sur le PCB : une étape fastidieuse avec des compromis afin d'obtenir le placement le plus efficace (en considérant les connexions entre composants, en évitant d'avoir recours aux vias, etc.)... L'image ci-dessous correspond au résultat final de notre PCB, et sa vue en 3D correspondante :
Les fichiers KiCad sont disponibles dans le dossier KiCad.
Le code de contrôle, qui permet d'effectuer les mesures du capteur et de contrôler les composants implémentés, a été développé sous Arduino IDE 2.3.2.
Pour communiquer en Bluetooth, nous avons utilisé la bibliothèque SoftwareSerial.h et pour contrôler l'écran OLED, la bibliothèque Adafruit_SSD1306.h.
Notamment, en plus de la communication Bluetooth entre notre PCB et l'application Bluetooth, notre code permet de contrôler deux menus à afficher sur l'écran OLED :
✓ Un menu pour afficher la résistance du capteur en direct ;
✓ Et un menu pour afficher la résistance du flex sensor en direct.
Les mesures se font toutes les 100 ms.
Le code complet est disponible ici.
Nous avons créé une application en guise d'interface, avec MIT App Inventor.
Cette application se veut simple et permet :
✓ De se connecter au module Bluetooth du PCB afin de communiquer avec ce dernier ;
✓ D'afficher sur un graphe la résistance du capteur en fonction du temps (où on peut démarrer / arrêter l'acquisition + effacer le graphe) ;
✓ Et d'afficher la résistance "en direct".
Néanmoins, on rencontre tout de même quelques problèmes de connexion entre l'app qu'on installe sur un smartphone Android et le module Bluetooth. Bien souvent, aucune donnée n'est récupérée.
L'application est disponible ici.
Fin mars, nous avons pu passer à la réalisation physique de notre PCB. Voici les étapes de fabrication réalisées, avec l'aide de Cathy Crouzet (merci !) :
Étape 0 (importante !) : vérification du PCB sous KiCad, notamment test DRC
Étape 1 : édition du masque de gravure sous KiCad
Étape 2 : insolation UV d'une plaquette d'époxy (recouverte d'une couche de cuivre et de résine photosensible)
Étape 3 : immersion de la plaquette dans un révélateur afin d'éliminer la résine non-insolée
Étape 4 : immersion de la plaquette dans du perchlorure de fer pour graver les pistes
Étape 5 : nettoyage de la plaquette avec de l'acétone pour retirer la résine restante
Étape 6 : perçage des trous et placement des composants sur le PCB
L'image ci-dessous illustre le rendu final de notre PCB :
Afin de tester nos capteurs, nous avons utilisés le banc de test suivant, composé de 7 demi-cercles, avec des diamètres de 2 à 5 cm (0,5 cm d'écart entre chaque).
Ce banc de test nous permet d'obtenir la variation de résistance
Nous avons réalisé les tests en compression et en tension.
Nous avons effectués les tests avec des capteurs recouverts de deux types de graphite différents : d'un crayon HB et d'un crayon 2B. (*)
Voici les caractéristiques en compression :
Et les caractéristiques en tension :
On peut donc remarquer que la résistance diminue lorsqu'on augmente la compression, alors que la résistance augmente lorsqu'on augmente la tension. Ceci semble cohérent : en compression, la distance entre les atomes diminue et donc la résistance dimunue en conséquence. L'inverse est vrai en tension.
De plus, on voit qu'avec un crayon plus gras (2B étant plus gras que HB - plus de carbone !), la variation relative de résistance est moins importante.
Enfin, pour comparer, nous avons aussi réalisé le test en tension (car cela ne fonctionne pas en compression !) avec le flex sensor :
On remarque donc que, en comparaison de nos capteurs, le flex sensor semble plus sensible, ce qui semble faire sens. Pour des déformations importantes, il semble aussi être plus apte à les tolérer, "plus solide".
(*) Nous voulions aussi tester notre capteur en graphite issu d'un crayon B, mais les tests n'étaient pas concluants. En effet, cette méthode de test donne des résultats assez aléatoirement. L'usage d'un servomoteur avec une inclinaison pas à pas sur les demi-cercles pourrait peut-être donner des résultats plus stables. Dans la même optique, une méthode de contrôle de la quantité de graphique déposée sur les capteurs serait la bienvenue, étant assez aléatoire. Tout cela conduit donc à avoir, en l'état, des conditions de test assez peu reconductibles.
La datasheet de notre capteur est disponible ici.
Ce projet a été très enrichissant, nous donnant une réelle perspective du travail de l'ingénieur, en le conduisant de bout en bout, des simulations à la datasheet. On a pu avoir avoir une bonne perspective d'une variété de compétences (simulation électronique, développement informatique, design d'un montage électronique, fabrication physique de ce dernier, etc.). En ce sens, c'est donc assez professionnalisant, et gratifiant d'avoir un produit final.
En ce qui concerne le capteur produit, il est fonctionnel et les tests nous permettent de dégager des tendances cohérentes avec la physique. Néanmoins, comme souligné plus haut, les conditions de tests sont rudimentaires et peu reproductibles, ce qui conduit à tout de même obtenir des résultats assez aléatoires. Il faut donc prendre du recul.
Maintenant, il est clair que dans un objectif pédagogique, ce projet est idéal !
En espérant que notre société GazouTech va prospérer grâce à ce dernier !