Granulometric sensor
Ce projet s'inscrit dans le cadre de l'UF "Du capteur au banc de test en open source hardware". Le cœur du projet bat sur la fréquence de la LOW TECH. Nous partirons de la fabrication d'un capteur granulométrique élaboré à partir d'une feuille de papier sur laquelle une couche de carbone sera déposée à l'aide d'un crayon à papier (panel de dureté entre HB et 9B) selon un motif prédeterminé. À ce corps d'épreuve, deux électrodes insérées aux extrémités du motif permettront la circulation d'un courant. Une déformation du capteur entraînera une variation du courant mesurable par un système d'acquisition de données. Les enjeux du projet sont donc multiples!
- Physique : sur les propriétés d'un capteur granulométrique
- Technique : sur la conception et le développement d'un système d'acquisition
- Exploratoire : par l'utilisation des outils et concepts de l'Open Source Hardware.
- Se construire une composante low-tech de l'ingénieur que nous serons : en s'interrogeant sur les attentes d'une société en mutation, en posant un regard critique sur la notion de progrès technique et sa finalité.
La finalité du projet est de pouvoir estimer les forces et faiblesses de ces capteurs low-tech. Pour cela nous allons devoir les tester, déterminer leurs caractéristiques et leur limites d'utilisations. Pour y parvenir, nous allons concevoir un banc de mesures qui nous permettra, dans un premier temps, d'étalonner les capteurs (leurs sensibilités varient en fonction de la dureté) puis, dans un deuxième temps, de les éprouver dans des conditions et durées d'utilisation controlées. Les jeux de données issues de ces tests vont devenir rapidement conséquents et il sera utile de prévoir les scripts et la visualisation en sortie du banc de test et étalonnage. La composante étalonnage du banc permet de détérminer la sensibilité un capteur de sensibilité inconnue. La composante test permet de soumettre le capteur à des séries de flexion/déflexion fonction d'un angle compris entre -85 et +85 degrés par rapport à la position d'équilibre. Dans la suite du projet le capteur désignera le corps d'épreuve et le banc de test permettant l'acquisition des données.
- Présentation du capteur granulométrique
- Acquisition des données
- Réalisation du PCB
- Banc de tests
- Measurement System Analysis
- Crédits
Le capteur sélectionné dans le cadre de ce projet est un dépôt de graphite sur un papier, effectué à l’aide d’un crayon plus ou moins gras. Nous utiliserons pour cela la résistivité du graphite, qui est suffisamment faible pour laisser circuler un courant mesurable. Néanmoins, avec cette résistivité de 8 µΩ.m (contre 0,017 µΩ.m pour le cuivre), il faudra utiliser un montage amplificateur dans notre banc de test.
Le dépôt de graphite effectué sur le papier sera alors représentatif de la flexion que ce dernier subit : les grains de graphite jouent le rôle de conducteur mais leur éloignement variera selon la flexion, et va donc influencer la résistance mesurée.
Figure 1: Première description schématique d'une mesure sur le capteur de graphite
Dans l’exemple ci dessus, on mesurera pour une même tension appliquée que:
L’intérêt de ce capteur se situe dans son aspect low-tech qui lui permet d’être facilement produit, mais pas uniquement : la vaste gamme de dureté des mines de crayon (H, F, HB, B) offre un large choix pour la résistivité du dépôt. En effet, la dureté d’une mine correspond à ses proportions de graphite et d’argile. Le graphite est, par exemple, plus présent dans un crayon dit « gras » de type B que dans un crayon de type H. Ainsi, nous disposons assez simplement d’un large panel de capteurs pour éventuellement les comparer à l’aide du banc de tests.
(#### Propriété d'un système granulaire)
Dans notre projet, nous allons utiliser la carte Arduino UNO possédant le microcontrôleur ATMega328.
Figure 2: Illustration de la carte Arduino UNO et Brochage de la carte Arduino
Elle dispose de 6 entrées analogiques et de 14 broches numériques d'entrées/sorties. Pour pouvoir l'utiliser, on a juste à la connecter directement à l'ordinateur via le câble USB.
La carte Arduino UNO possède les caractéristiques suivantes:
- Résolution: 10 à 12 bits (1024 à 4096 points)
- Pleine échelle (VRef): de 1.1 V à 5.0 V
- Impédance de source max: 1 kΩ à 10 kΩ
- Fréquence d'échantillonnage: 15 kHz maximale
L’objectif étant d’extraire l’information utile du capteur ayant un très faible courant (environ 100 nA), le montage électrique doit être adapté de manière à mesurer des courants faibles. Selon les caractéristiques techniques du microcontrôleur Arduino (cf Datasheet), on ne peut pas mesurer directement de très faibles courants en raison de l’impédance de source (environ égale à quelques kOhms). Il est donc nécessaire d’utiliser un circuit amplificateur transimpédance composé d’un amplificateur opérationnel AOP pour convertir un courant issu du capteur en une tension mesurable par le CAN (Convertisseur Analogique-Numérique) de l’Arduino UNO.
Figure 3: Montage de transimpédance (ou convertisseur courant-tension)
L’inconvénient d’un montage classique de transimpédance est qu’il nécessite une grande résistance pour amplifier le signal et que la tension d’alimentation du capteur doit être négative. On peut donc ajouter un autre étage inverseur à la suite du premier montage :
Figures 4 et 5: Ajout d'un étage inverseur sur le montage de transimpédance et Calcul du gain du second montage
Dans le montage ci-dessus, le gain du second étage étant négatif compte-tenu de son caractère inverseur (cf Figure 3
), la résistance R1 du premier étage n’a plus besoin d’avoir une grande valeur. De plus, l’alimentation du capteur est donc positive grâce au second montage inverseur du fait des produits des gains de deux étages.
Pour plus de simplicité, on a choisi un montage en prenant un seul AOP dans le montage.
Figure 6: Solution simplifiée pour le montage transimpédance
Figure 7: Calcul de la tension aux bornes de R1
En calculant la tension aux bornes de la résistance R1, on obtient une tension environ égale à 10 mV d'après la Figure 4
.
Il s’agit d’une valeur importante pour le choix de l’AOP notamment pour l'effet de l’offset du signal d’entrée. Le Gain de ce montage et la Tension de sortie ADC sont décrits dans les calculs ci-dessous :
Figure 8: Calculs du gain du montage et de la tension de sortie
Si on a un courant nul en entrée, on veut alors obtenir une tension ADC nulle en sortie, cela implique qu’il n’y ait pas de dérives en tension de la part de l’AOP. Les principales contraintes pour le choix de l’amplificateur opérationnel sont le faible courant d’entrée et un très faible offset de tension devant être négligeable devant 10mV (tension aux bornes de R1).
Selon les données de la Datasheet de l'AOP 1050C, on constate qu'il possède un faible offset de tension d'environ 5μV au maximum et un très faible drift pour l'offset de tension à environ 0.05μV/°C. Cela indique la bonne stabilité de l'amplificateur opérationnel. Par comparaison, les AOP utilisés traditionnellement en salle de TP possèdent un offset autour de 5mV, une valeur 1000 fois plus grande que celle du 1050C.
En comparant la tension d'entrée (autour de 10mV cf Figure 5
), on constate que l'offset de 5μV est très faible.
De plus, on peut remarquer que cet AOP possède un mode commun incluant la masse ce qui correspond à notre montage électrique.
Figure 9: Extrait de la datasheet dans la partie Electrical Characteristics
Enfin, on constate que le courant de polarisation en entrée (Input Bias Current) est au maximum égale à 30pA, cela convient car nous effectuons des mesures de courant autour de 100nA. Il faut que le courant Isense cf Figure 4
soit très faible devant 100nA et le reste du courant passe dans la résistance R1.
En respectant les différentes conditions énoncées précédemment, l'AOP 1050C est adapté pour notre circuit électronique.
Étant donné que ce montage est très sensible aux signaux parasites (50Hz, horloge du microcontrôleur Arduino, Bluetooth entre autres), on doit mettre en œuvre un filtrage passe-bas pour limiter les perturbations du signal. D’une part, il faut appliquer un filtre passif en entrée pour limiter les perturbations de type radiofréquences pouvant conduire à un excès de bruit dans l’ADC. Ensuite, on applique un filtre actif au niveau de l’amplificateur opérationnel pour augmenter l’efficacité de l’échantillonnage du signal. À la sortie de l’AOP, on utilise un dernier filtre passif pour retirer le bruit sur le traitement du signal et les phénomènes de repliement de spectre (aliasing).
En intégrant les différents filtres, le montage ressemble à ceci :
Figure 10: Schéma du montage électrique avec les différents filtres
On distingue 3 différents filtres où nous avons cherché pour chacun la fréquence de coupure et son rôle principal pour le filtrage :
Figure 11: Identification des différents filtres dans le montage
Tout d'abord, le filtre passe-bas passif, placé à l'entrée de l'AOP, est constitué de R1(100kΩ) et C1(100nF). Il possède une fréquence de coupure théorique environ égale à 16Hz cf Figure 7
. Il permet donc de filtrer les perturbations et les excès de bruit en courant sur la forme du signal d'entrée.
Figure 12: Calcul de la fréquence de coupure du filtre passif (R1 et C1)
Ensuite, le filtre passe-bas actif, placé entre l'entrée et la sortie de l'AOP, est constitué de R3(100kΩ) et C4(1μF) en parallèle. Ce dernier possède une fréquence de coupure théorique environ égale à 1.6Hz cf Figure 8
. Son rôle principal est de supprimer la composante parasite de 50Hz (du fait du couplage capacitif avec la tension 230V) qui perturbe significativement le signal cf Figure XX
.
Figure 13: Calcul de la fréquence de coupure du filtre actif (R3 et C4)
Enfin, le filtre passe-bas passif, placé à la sortie de l'AOP, est constitué de R6(100kΩ) et C2(100nF). Il possède une fréquence de coupure théorique environ égale à 1.6kHz cf Figure 9
. En sachant que la fréquence d'échantillonnage du micro-contrôleur est environ égale à 15,4kHz, il faut respecter la condition d'échantillonnage de Shannon à savoir:
Figures 14: Calcul de la fréquence de coupure du filtre passif (R6 et C2) et Vérification de la condition d'échantillonnage de Shannon
Selon les calculs, on respecte bien la condition d'échantillonnage de Shannon cf Figure ci-dessus
, le filtre permet de limiter les effets de repliement de spectre (rôle d'anti-aliasing) et de manière générale, le bruit lors du traitement du signal.
Voici un première proposition du schéma électrique
Figure 15: Premier schéma du montage électronique
Dans ce schéma, nous simulons le bruit en courant à l'entrée en mettant une capacité à côté du générateur de tension. On a ajouté une capacité C3 pour filtrer le bruit de la source d'alimentation.
On propose une optimisation du montage électronique en simulant le capteur de graphite
cf Figure ci-dessous
Figure 16: Schéma électrique optimisé
Nous avons simulé notre capteur de graphite (cf rectangle en haut à gauche de la figure précédente
).
Commentaires à ajouter
On vérifie les conditions optimales de fonctionnement du montage électronique en effectuant différentes simulations sur le logiciel LTSPice cf figures ci-dessous
.
Figure 17: Vérification du gain d'amplification du signal environ égal 100
Figure 18: Vérification du la tension de sortie du montage avec un courant d'entrée égal à 100nA
Pour l'illustration graphique du gain du montage général, on distingue qu'il y a bien 3 filtres dans le circuit électronique grâce aux différentes variations du terme de phase (courbe en traits en pointillés cf Figure ci-dessous
).
Figure 19: Identification graphique des 3 filtres
On vérifie graphiquement la fréquence de coupure de chaque filtre en effectuant une simulation fréquentielle (AC Sweep):
Pour le premier filtre à l'entrée de l'AOP (R1 et C1):
Figure 20: Illustration graphique de la fréquence de coupure du filtre (R1 et C1)
Pour le second filtre entre l'entrée et la sortie de l'AOP (R3 et C4) et le dernier filtre à la sortie (R6 et C2):
Figure 21: Illustration graphique des fréquences de coupure des deux filtres passe-bas
On vérifie l'incidence du courant d'entrée de l'amplificateur sur la tension de sortie par une simulation temporelle:
Figure 22: Illustration graphique de l'incidence du courant d'entrée sur la tension de sortie
On peut remarquer dans cette image qu'à partir d'une valeur de 500nA pour le courant d'entrée, on obtient une tension pouvant saturer le convertisseur analogique-numérique de l'Arduino.
On observe graphiquement l'atténuation globale du signal d'un bruit en courant de 50 Hz ainsi que celle associée à un bruit en courant à la fréquence de repliement de spectre autour de 7 kHz.
Figures 23 et 24: Illustration graphique de l'atténuation du signal d'un bruit en courant pour deux fréquences spécifiques et calculs des atténuations
Comme on peut le voir avec les calculs précédents, on constate qu'il y a une atténuation en bruit de courant environ égale à 40dB pour une fréquence autour de 50Hz et elle est environ égale à 100 dB pour un bruit en courant au voisinage de la fréquence de repliement de spectre. Cela montre bien que le signal peut être fortement perturbé et atténué si on laisse la composante fréquentielle à 50 Hz et si on ne respecte la condition d'échantillonnage.
Figure 25: Logigramme de notre code Arduino
Voici une présentation graphique de notre code Arduino.
L'application mobile associée au banc de test fonctionne avec un timer identique à celui du programme Arduino. L'utilisateur peut se connecter au module Bluetooth de son choix, puis vérifie que la connexion est bien établie avec un second bouton. Il peut ensuite lancer la mesure et afficher les résultats reçus sur un graphe en temps réel, afin de suivre l'évolution de la résistance du capteur. Le graphe reprend du début lorsque le balayage atteint le bout de l'écran, mais l'utilisateur peut le réinitialiser à sa guise avec un autre bouton. Enfin, la mesure peut être arrêtée en appuyant à nouveau sur le bouton qui l'a déclenché.
Figure 26: Aperçu visuel de notre application
Figures 27 et 28: Extraits des blocs pour la réalisation de l'application Android sur MIT App Inventor
Après avoir réalisé les simulations sur LTSpice, nous avons conçu un premier modèle de PCB avec l'aide du logiciel KiCAD.
Lors de cette étape, nous avons choisi un modèle basé sur l'Arduino UNO pour avoir les bonnes dimensions de la carte et les pins de connexion adéquats. Afin de réaliser précisément le PCB, nous avons dû concevoir certains composants électroniques nous-mêmes dans la partie Schématique (écran OLED, module Bluetooth, l'amplificateur LTC1050C, l'encodeur rotatoire et le potentiomètre digital)
cf Figures ci-dessous
**Figure 29: Schéma des pins de connexion de la carte Arduino UNO **
Figure 30: Schéma du circuit électronique
Figures 31: Schémas et empreintes de chacun de nos composants électroniques (Écran OLED, BLuetooth, Encodeur rotatoire, Potentiomètre digital)
Dans cette partie, nous plaçons virtuellement les différents composants sur le PCB et nous effectuons toutes les connexions entre les pins de composants et ceux de la carte Arduino. Nos différents professeurs réferents (Mr Jérémie Grisolia et Mme Catherine Crouzet) nous ont indiqués les consignes à respecter pour la réalisation du PCB:
- Largeur des pistes = 0.6 mm
- Largeur d'isolation des pistes = 0.9 mm
- Dimensions du trou pour l'écran OLED, le module Bluetooth et l'encodeur rotatoire = 2 mm * 2.5 mm
- Diamètre du via (trou entre la face avant et arrières du PCB) = 2 mm
- Taille du trou de perçage du via = 0.8 mm
- Taille du trou de perçage pour l'écran OLED, le module Bluetooth et l'encodeur rotatoire, l'AOP et le potentiomètre digital = 1 mm
- Dimensions du trou pour le support de l'AOP (pad n°1 rectangulaire et les autres pins sont ovales) = 2 mm * 2.5 mm
- Taille du trou de perçage pour les résistances et les capacités = 0.8 mm
Figure 32: Schémas des pistes sur le PCB
Figure 33: Schéma 3D des pistes sur le PCB
Avec l'aide de Mme Catherine Crouzet, nous avons réalisé le PCB selon le protocole suivant:
-
Insolation de la plaque de résine positive par photo-lithographie UV par contact avec un masque
cf Figure ci-dessous
imprimé sur un film transparent, provenant du logiciel KiCAD. Cette résine est choisie de telle manière à être sensible aux rayons UV. Une fois l'insolation réalisée, la partie de la résine insolée est dissoute dans une solution de développeur. Le reste de la résine, étant protégé par le masque, reste intact. On observe l'apparition des pistes du circuit sur le PCB. -
Passage dans un bain de péroxyde de fer pour enlever les résidus de la piste de cuivre sur le PCB
-
Nettoyage et Séchage de la plaque à l'eau naturelle
Figure 34: Masque imprimé du PCB sur un film transparent
Uns fois le PCB réalisé, nous avons percé tous les trous des pins associés à chaque composant électronique puis nous avons soudé les différents composants et les broches latérales entre le PCB et la carte Arduino.
Le but de ce banc de test est de déterminer la sensibilité du capteur, de voir l’évolution de cette dernière selon la répétition des flexions et de comparer ces données avec un capteur commercialisé "Flex-Sensor".
Ce banc de test est composé d’un servomoteur pour une bonne précision sur les angles, ainsi que d’un support où l’on vient encastrer le capteur. Une roue où l’on positionne le bout du capteur est alors entraînée par le servomoteur et génère la flexion. Il est fait de plaques de contreplaqué superposées, qui ont été découpées au FabLab et il permet de garder le capteur le plus intact possible, car celui-ci n’est maintenu qu’aux deux extrêmités et non pas sur le dépôt de graphite lui-même. L’utilisateur détermine au préalable le nombre de répétitions souhaité à l’aide de l’encodeur rotatoire placé sur le PCB. Il peut ensuite récupérer les données (angle, itération de la mesure, résistance lue) sur le moniteur série et les traiter dans un logiciel comme Rmarkdown, Python via l'interpréteur Spyder IDE ou Qtiplot. Le capteur qui servira de référence comparative sera le Flex Sensor fourni dans le kit Arduino, qui possède déjà une datasheet.
Nous avons élaboré un premier modèle en 2D ainsi qu'un modèle 3D de notre banc de tests:
Figure 35: Dessin 2D du banc de test
Figure 36: Dessin 3D du banc de test sur FreeCAD
Nous l'avons ensuite réalisé au FabLab avec l'aide d'une découpe laser: