Git Product home page Git Product logo

2021_2022_pereur_cuculiere's Introduction

2022_CAPTEUR_Pereur_Cuculière


Sommaire


Etapes de conception

  • 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

Design et simulations du circuit analogique

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). Schéma_Ampli

On peut calculer la résistance du capteur selon la formule suivante :

image

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.

Simulation_V(R2)_R0_100k

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.


Conception du SHIELD sous KiCAD

  • 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.

image

Nous avons ensuite procédé au routage du PCB et l'implémentation des modèles 3D des différents modules:


Développement du programme Arduino

Description du programme

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.

Bibliothèques utilisés

  • 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

Amélioration possibles

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.


Application android

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.


Banc de tests

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.


Datasheet

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.

2021_2022_pereur_cuculiere's People

Contributors

r-cuculiere avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.