/2023-2024_4GP_DELCAMPO_VALENCIA

Projet d'un capteur en graphite de type low-tech en graphite, par Izan VALENCIA et Ignacio DEL CAMPO

Primary LanguageC++MIT LicenseMIT

Projet Capteur

Introduction

Dans le contexte de la formation de quatrième année de Génie Physique de l'INSA Toulouse et son Unité de Formation "du capteur au banc de test" I4GPMH21, nous sommes menés à réaliser un projet de conception d'un capteur de graphite de crayon à papier de type low-tech. Le projet est composé d'une partie software où nous avons pu réaliser un banc de test pour évaluer la résistance de notre capteur sous différentes contraintes et types de graphite (crayons 2B, HB, 2H,...) grâce à un microcontrôleur Arduino et son IDE ainsi qu'une APK pour Smartphone Android capable de piloter le capteur grâce à la communication Bluetooth. Le projet nous permet aussi d'élaborer un Shield Arduino, qui met en commun une série de composants électroniques. Cette partie Hardware est basée sur la conception d'une PCB, dans un premier temps grâce au logiciel KICAD, puis tirée suivant des procédés de microélectronique (bain sous perchlorure de fer, perçage, soudage). Une datasheet du capteur est à rédiger. Le projet doit être de même documenté sous la plateforme Github.

Nous allons donc, dans ce README, développer les différentes étapes de conception du projet.

Sommaire


Livrables

Les livrables pour ce projet sont :

  • Code Arduino permettant la mesure de R du capteur et pilotage des composants (BT, Potentiomètre, OLED)
  • PCB du Shield Arduino
  • APK Android pour le pilotage du système via smartphone
  • Datasheet du capteur de graphite
  • Banc de test pour étude du capteur sous différents types de grpahite ( 2B, HB, etc...)

Matériel

  • 1 carte Arduino UNO
  • 1 écran OLED-01
  • 1 AOP LTC1050
  • 1 Potentiomètre digital MCP-41050
  • 1 Module Bluetooth HC-05
  • 1 Encodeur Rotatoire KY-040
  • 1 Servomoteur
  • 1 FlexSensor Commercial Spectra Symbol
  • Résistances (X2 100kOhm, X1 1kOhm)
  • Condensateurs (X2 100nF, X1 1uF)
  • Crayons (HB, 2B,...)
  • Modèle papier pour capteur

PCB Shield

Le PCB Shield nous permet d'intégrer tous les composants à l'Arduino de manière ordonnée et compacte. Nous avons conçu ce PCB Shield avec le logiciel KiCad version 8.0. Ce PCB Shield est conçu pour s'accrocher sur un microcontrôleur Arduino Uno. Un écran OLED, un potentiomètre digital, un encodeur rotatoire, un module Bluetooth, un capteur de graphite et une résistance variable, ainsi que les composants électroniques nécessaires à son fonctionnement, sont présents sur ce PCB Shield. Tous les empreintes et le projet global peuvent être trouvés ici.

Symboles et empreintes des composants

Pour chaque composant nous avons réalisé son Symbole et empreinte pour le PCB. Voici un aperçu global:

Schématique

  • Bluetooth:

BT

  • Capteur de Graphite:

Cap

  • FlexSensor:

Flex

  • Potentiomètre MCP1:

Pot

  • Encodeur Rotatoire:

Rot

  • OLED:

OLED

Empreintes

  • Bluetooth:

BT

  • Capteur de Graphite:

Cap

  • FlexSensor:

Flex

  • Potentiomètre MCP1:

Pot

  • Encodeur Rotatoire:

Rot

  • OLED:

OLED

Schématique

Kicad permet de réaliser un schématique électrique de la PCB avec plusieurs sous parties:

  • Vue Générale:

Sch

  • Partie Amplificateur:

AmpliSch

  • Partie Composants:

ComposantsSch

  • Partie Arduino:

ArduinoSch

Placement et routage sur PCB

Nous avons réalisé le placement des composants suivant la suivante disposition:

PCB

Il a été nécessaire de placer 2 vias (en rouge) pour relier correctement tous les composants.

Modèle 3D

Nous avons de même réalisé un modèle 3D du PCB pour visualiser l'encombrement des composants sur la plaque:

PCB

Élaboration du PCB

Lors de la préparation de la plaque, nous avons imprimé un calque utilisé avec une plaque en cuivre. La plaque a été marque avec le calque et soumise à un bain de perchlorure de fer pour tirer les pistes de cuivre du PCB.

Calque

Nous avons ensuite percé des trous et soudé les composants sur la plaque donnant enfin le Shield final:

Shield

Code Arduino de Mesure

Le Code Arduino Global est composé plusieurs fonctions pilotant les composants ainsi qu'un système de menu d'affichage sur l'OLED. Ces menus sont :

  • Mesure : L'OLED affiche les valeurs de résistance du capteur de graphène et du FlexSensor.
  • Pilotage Potentiomètre : L'utilisateur est capable de changer la valeur de la résistance du potentiomètre grâce à l'encodeur rotatoire de 155Ohms à 49...Ohms.
  • Pilotage Bluetooth : Le Shield passe en mode Bluetooth et donc devient pilotable avec un smartphone Android avec l'APK.

L'utilisateur est capable de se déplacer à travers des menu avec l'encodeur rotatoire et son bouton poussoir comme le montre cette vidéo.

Le code principal est disponible dans ce repository ici.

APK pour Android

Pour compléter le fonctionnement du Shield nous avons développé une APK grâce au logiciel MIT App Inventor. L'application est composée de plusieurs menus permettant de piloter le Shield. Il possède, comme le code Arduino, trois menus:

  • Menu Principal : Menu permettant de connecter Smartphone aux Shield par Bluetooth et d'accéder aux autres menus.

    MenuPrincipal

  • Menu Potentiomètre : L'utilisateur est capable de changer la valeur de la résistance du potentiomètre grâce aux boutons ++ et -- de 155Ohms à 49...Ohms.

    MenuPot

  • Menu affichage : Affichage des valeurs de résistance du capteur de graphène dans un graphique et une case.

    MenuR

L'icône de notre application est:

Icon

Banc de test

Pour réaliser les tests de sensibilité des capteurs, nous avons conçu un banc de test. Ce banc doit contenir tous les composants électroniques nécessaires aux mesures et doit permettre de réaliser ces mesures. Le schéma de notre banc de test est:

Schema

Ici, le servomoteur est utilisé pour flexionner les capteurs en même temps et avec la même contrainte afin de réaliser des mesures simultanées avec le capteur low-tech et le capteur commercial. Il est aussi possible de réaliser des mesures individuelles pour chaque capteur.

Voici le banc de test réalisé pour ce projet:

VueNOM

VueLatMot

VueCapt

VueLatINSA

BancEquip

Ce banc de test consiste en une boîte en bois qui contient la carte Arduino UNO et la breadbord. Cette boîte dispose aussi de plateformes et trous dans la surface nécessaires pour le placement des éléments d'affichage et de mesure de ce projet. Le banc dispose également de trous de ventilation.

Cependant, par manque de temps, l'implémentation de ce banc de test pour les expériences n'a pas été possible. Nous avons donc utilisé le suivant banc de test préfabriqué:

BancOG

L'application de la force pour ce banc est manuelle.

Influence du type de crayon à papier

Le type de crayon à papier utilisé, dû aux différentes concentrations en graphite utilisés, fait varier le comportement de ce capteur. La sensibilité de celui-ci ΔR/R variera selon le type de crayon. Les sensibilités des capteurs selon le type de crayon utilisé peuvent être trouvés ci-dessous.

  • En Compression:

Comp

  • En Fléxion:

Flex

Ainsi, le type de crayon qui aura une sensibilité plus grande sera le 4B en flexion. En compression ce sera le 2H. Cependant l’utilisation du capteur en compression n’est pas recommandée à cause des faibles sensibilités observées.

Comparaison de GraphSense avec le capteur commercial

Nous avons de même réalisé une comparaison de performances entre notre capteur de graphite et le capteur commercial Flex-Sensor. Celui-ci peut uniquement être utilisé en flexion (pour éviter sa destruction). Nous avons obtenu la suivante courbe de sensibilité dR/R de tous les capteurs de graphite (différents crayons) et le capteur commercial:

FlexComp

Nous remarquons que le capteur commercial a une assez bonne performance en la comparant aux différents types de crayons, montrant une sensibilité supérieure. Cependant, nous observons que le capteur utilisant le crayon 2H à une sensibilité supérieure au Flex-Sensor surtout dans le domaine de flexion supérieur à des rayons de courbure de 1,75cm..

Tous les résultats de l'étude peuvent être trouvés sur le suivant fichier Excel.

Datasheet

La datasheet du capteur peut être consultée ici.

Problèmes et améliorations

Lors de la réalisation de ce projet nous avons recontrés de nombreux problèmes qui ont la plupart été résolus. Il reste par contre quelque problèmes et améliorations à apporter:

  • Le capteur Flex-Sensor ne fonctionne pas bien de manière consistante. Il faudrait intégrer la résistance du pont diviseur utilisée avec ce capteur à la carte PCB pour éviter des problèmes lors du montage et démontage de petit circuit dans une breadboard.
  • Le graphique permettant de voir la variation de résistance dans l'application ne s'affiche pas correctement et doit être amélioré.
  • Par manque de temps, l'intégration du banc de test n'a pas été achevée, reste à intégrer le servomoteur dans le programme Arduino par exemple.
  • Il serait intéressant d'ajouter une sauvegarde des données acquises automatiquement grâce au code Arduino dans un fichier texte pour des traitements postérieurs.

Remerciements et contacts

Nous voulons remercier M. Grisolia, Mme. Crouzet, M. Biganzoli ainsi que M. Drigo pour toute leur aide fournie tout au long de ce projet.

Contact: