- 1 Etapes de conception
- 2 Design et simulations du circuit analogique
- 3 Conception du SHIELD sous KiCAD
- 4 Développement du programme Arduino
- 5 Banc de tests
- 6 Datasheet
- Design et simulations du circuit d'amplification sous LtSpice
- Implémentation du circuit sous KiCAD et design du PCB
- Fabrication du PCB et soudure des composants
- Programmation du code arduino
- Création de l'application android
- Conception d'un banc de test
- Test et caractérisation du capteur
Le capteur que nous souhaitons utiliser pour ce projet est alimenté en 5V pour une résistance variant d’environ 20M à 100M ohm très grande devant l’impédance de l’arduino. Une mesure directe d’un courant de l’ordre de 100 nA n’est pas possible avec l’arduino. Il nous faut donc amplifier le signal. Pour cela nous avons utilisé le montage électrique ci-dessous. C’est un amplificateur transimpédance à 2 étages.
Ce montage gère à la fois l’amplification et le filtrage du signal pour limiter l’amplification du bruit. Le montage possède 3 filtres en tension et un filtre en courant (voir schéma ci-dessous).
On peut calculer la résistance du capteur selon la formule suivante :
Filtre | Fréquence de coupure |
---|---|
1 | 16 Hz |
2 | 2,1 Hz |
3 | 1,6 kHz |
Ci-dessous, nous pouvons voir la réponse de Vadc en fonction du temps pour une tension de capteur variant de 0 à 1V. A gauche le signal sans l'influence du 50hz et à droite avec l'influence du 50hz
Le gain du circuit est : A0 = 1+R3/R2
On peut donc faire varier le gain du circuit en changeant la valeur de R2. Pour cela nous avons remplacé R2 de notre circuit par un potentiomètre digital pilotable grâce à l’Arduino. Nous avons donc étudié l'influence de R2 sur le signal. Pour cela, nous avons fait varier la résistance R2 de 100 ohm à 2 kohm avec un pas de 100 ohm. Sur le graphique ci-dessous, nous pouvons voir les différentes courbes de Vadc en fonction du temps. La courbe supérieure étant pour R2 = 100 ohm et inférieure pour R2 = 2 kohm.
On observe une variation non-linaire de la réponse en fonction de R2. Notre plage d'utilisation se situe vers 1kohm. Autour de cette valeur, il y peu de calibres possible ce qui réduit la finesse de la calibration et rend les mesures plus difficiles.
Création des symboles de l'encodeur rotatoire, du module bluetooth, de l'OLED et du potentiomètre digital. Tous les symboles sont répertoriés dans le dossier KiCad.
Réalisation du schéma électrique comportant l'amplificateur transimpédance, l'OLED, le module bluetooth, le potentiomètre digital et l'encodeur rotatoire.
Nous avons ensuite procédé au routage du PCB et l'implémentation des modèles 3D des différents modules:
Le programme de l'arduino uno, écrit en C++, permets de lire la tension à la sortie du capteur et calcul la valeur de la résistance. Il a été réalisé en utilisant le environnement de développement Arduino (Arduino IDE).
Ce programme contient plusieurs parties :
- OLED : Création d'un menu contenant l'affichage de la résistance, l'autocalibration, les crédit du projet et une calibration pour obtenir le minium et maximum de la résistance
- Encodeur rotatoire : gestion du menu grâce à des interruptions
- SPI (potentiomètre digital) : gestion de la résistance variable R2 et autocalibration
- Bluetooth : traitement et envoi des données à l'application
Le code est disponible ici.
- SoftwareSerial.h pour la définition des ports utilisés pour le module bluetooth et le potentiomètre digital
- Adafruit_GFX.h et Adafruit_SSD1306.h pour l'OLED I2C
- Wire.h qui s'occupe de la communication en I2C avec l'OLED
- SPI.h pour la communication avec les module SPI, ici le potentiomètre digital
Une optimisation du code pour permettre une exécution plus rapide. Pour cela, il serait possible de diminiuer le nombre de variables utilisées pour la gestions des >menus ainsi qu'un changement sur la gestion du changement de menus.
Le code du potentiomètre digital pourrait également être améliorer pour une meilleure réactivité. Actuellement il nécessite un certain délai pour calibrer les >valeurs.
L'application doit être optimisé car elle ne fonctionne actuellement pas sur tous les téléphones.
L'application android a été crée à l'aide de l'outil MIT APP INVENTOR. Il est possible de la télécharger via le .apk du dossier application.
Le but de cette application est de récupérer les données du capteur via le module bluetooth présent sur le SHIELD et de les afficher sur un téléphone. Cette application fonctionne grâce au programme arduino qui va venir envoyer à interval régulier la valeur de Vadc. Vous pouvez voir ci-dessous une capture d'écran de l'application.
Les différents capteurs ont été testé en tension et en compression pour des rayons de courbures variant de 5,5 cm à 1,5 cm. Le banc de test est constitué d'un morceau de carton dans lequel des fentes ont été découpé et d'un support en plastique souple pour rigidifier le capteur.
Le protocole de test est disponible en suivant ce lien.
La datasheet contient les caractéristiques principales du capteur ainsi que le circuit d'amplification transimpédance utilisé pour les mesures. On la retrouve dans le dossier Datasheets du github.