IMA5 2019/2020 P04

De Wiki de Projets IMA
Révision datée du 25 septembre 2019 à 15:29 par Nhavard (discussion | contributions) (Semaine 1 : mercredi 18 septembre)


Présentation générale

  • Nom du projet :
  • Membre du projet : HAVARD Nicolas
  • Superviseurs du projet :
  • Résumé :






Description









Objectifs




Préparation du projet

Cahier des charges



Choix techniques : matériel et logiciel

Matériel à disposition :
Description Marque Nombre Commentaire Photo


Matériel nécessaire au projet
Description Marque Nombre Prix Référence Documentation
[https:// ] [https://]
[https:// ] [https://]



Liste des tâches à effectuer






Calendrier prévisionnel

Fichier:.png



Réalisation du Projet

Feuille d'heures

Tâche Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Heures S11 Heures S12 Heures S13 Total
Rédaction du wiki
Commande de matériel
Documentation
Rédaction de schémas
Total

Introduction


Cahier des charges


Archives




.



Carnet de route

Semaine 0 : mercredi 11 septembre

Entretien avec le tuteur de ce projet, M. CHEVALIER. A l’issu de cette réunion, les attentes ont pu être confirmées. Le projet consiste à remplacer les circuits analogiques déjà présents en E001, salle des TP d’électrotechnique. Afin de remplacer ces afficheurs, il est donc important que la solution permette de visualiser la tension réglée par l’étudiant sur les trois générateurs de la paillasse.

Le problème de la solution utilisée ces dernières années est le manque d'isolation entre les circuits de puissance et de mesures : la lecture de la valeur de la tension se fait directement sur le circuit de puissance et le montage n’est donc pas protégé lors des appels de courants, entrainant la destruction de la carte électronique.

1920 P4 carteDetruite.jpg

Le montage proposé à la fin de ce projet devra donc être isolé galvaniquement de la partie puissance afin d’éviter tout problème qui réduirait drastiquement la durée de vie de la solution. Pour palier à l'attente de la réalisation de notre solution électronique, le tuteur a proposé à l'étudiant d'utiliser une carte Arduino fournie en début de ce projet pour utiliser les afficheurs.


Les valeurs des tensions des différents générateurs devront être envoyées sur l'ordinateur central de la salle afin de permettre au professeur une surveillance de l'ensemble des générateurs de la salle. Ces données pourront être envoyées en utilisant les ports ethernet présents sur chacune des paillasses. Aucune technologie n'a été imposée pour la création de la page web.


Afin de faire suivre l’évolution du projet, un mail sera envoyé à M. CHEVALIER chaque mercredi soir pour indiquer l’évolution du projet et ce qui a été fait dans la semaine.


Semaine 1 : mercredi 18 septembre

A la suite de la réunion du mercredi 11 septembre, je me suis donc penché sur les différentes manières d'isoler galvaniquement un système. L'isolation galvanique étant réalisée lorsque deux parties d'un circuit électrique ne sont reliées par aucune liaison électrique, je n'ai repéré que trois façons différentes de permettre une telle isolation :

  • les transformateurs qui permettent de convertir un courant alternatif de tension X à un courant alternatif de tension Y grâce à l'utilisation de deux bobines pouvant avoir un nombre de spires différent et aux propriétés de l'électromagnétisme.
  • les relais qui permettent à un circuit de commande de piloter le circuit de puissance grâce à une bobine permettant d'ouvrir ou de fermer le circuit lorsqu'une tension suffisante est appliquée à ses bornes.
  • les optocoupleurs qui servent à émettre de l'information grâce à un émetteur et un récepteur de lumière infrarouge

Dans notre cas, les relais ne peuvent nous servir ici car nous souhaitons récupérer une image de la tension aux bornes du générateur et non piloter un circuit à l'aide d'une commande. Nous choisissons donc d'utiliser un transformateur pour isoler galvaniquement le circuit de mesure du générateur de tension alternative de la manière suivante :

1920 P4 circuit v1.0 AC.jpg

De cette manière, le signal sera isolé du générateur en sortie du transformateur qui pourra abaisser une première fois la tension. L'utilisation d'un pont de Graetz permettra de redresser le signal qui sera ensuite filtré avec une capacité adaptée pour obtenir un signal continu. Enfin, un pont diviseur de tension abaissera la tension à un maximum de 5 VDC pour récupérer une image de la tension en sortie du générateur lisible par l'atmega328 de l'Arduino. Différents canaux pourront automatiquement être pilotés par l'Arduino afin d'assurer une valeur plus précise pour les tensions plus faibles en pilotant l'ouverture et la fermeture de ponts diviseurs de tension d'impédance variées.

Concernant les générateurs de tension continue, nous utilisons le même principe que pour le générateur de tension alternative. Cependant, il est nécessaire de convertir le signal en signal alternatif pour l'utilisation du transformateur permettant l'isolation galvanique. Ainsi, nous pouvons voir l'apparition d'un étage supplémentaire sur le schéma suivant :

1920 P4 circuit v1.0 DC.jpg



______________


Entretien avec M. CHEVALIER le mercredi 18 septembre pour discuter des avancées et du planning du projet. Le circuit proposé a été accepté. Une précision a été faite concernant le choix de convertisseurs DC-DC isolés : il existe, en plus des convertisseurs destinés à changer la tension en sortie, des convertisseurs conçus dans le but d'isoler galvaniquement un circuit d'un autre. Ces convertisseurs, appelés des amplificateur d'isolation (isolation amplifier) reposent sur différentes technologies comme les transformateurs ou les optocoupleurs afin d'isoler l'entrée de la sortie en assurant un gain unitaire.

Pour l'écran de surveillance des tensions, une illustration de base a été validée par le tuteur et elle reprendra donc l'affichage des trois afficheurs 7 segments pour les 6 paillasses présentent sur la salle. Dans le cas où le projet serait terminé plus tôt que prévu, il a été proposé au tuteur la possibilité d'afficher un historique des tensions après avoir cliqué sur un des 18 afficheurs : cette vue permettrait de montrer une courbe d'évolution des tensions afin d'étudier le comportement du générateur à la suite d'un problème technique.

Semaine 2 : mercredi 25 septembre

Lors de cette semaine, nous nous sommes penchés sur les amplificateurs d'isolation dont nous avait parlé M. CHEVALIER. Plusieurs de ces modules semblent intéressants tels le [ISO124 de TI], le [ISO224 de TI, le [[https://www.ti.com/lit/ds/symlink/amc1301-q1.pdf AMC1301QDWVQ1 de TI] ou encore le [HCPL-7800 d'Avago].

Mais la solution retenue est celle se basant sur le [ACPL-C87B d'Avago] qui dispose d'un montage dans sa documentation technique dédié exclusivement à la mesure d'une tension. Cet amplificateur d'isolation se repose sur un amplificateur opérationnel en montage différentiel nécessitant d'amener la tension à mesurer sur un intervalle définie par sa tension de référence. De cette manière, le pont diviseur de tension se retrouve finalement avant l'étage d'isolation. Il est alors nécessaire d'utiliser un autre amplificateur opérationnel comme le [OPA237 de TI] ou le [LM358 de ON Semiconductor] avant d'utiliser le convertisseur analogique-numérique de l'atmega328.


Pour l'envoi des données, nous allons nous baser sur la carte [Arduino Ethernet REV 3] proposé par Arduino. Cette carte se base sur le microcontrôleur atmega328 cadencé à 16 MHz et disposant donc de 14 I/O numériques et de 6 I/O analogiques. La particularité de cette carte Arduino est de disposer d'un port RJ45 et d'une [puce W5100] permettant à la carte de dialoguer sur un réseau ethernet avec d'autres périphériques tels que notre PC.

Cette carte sera alimentée par l'alimentation 12 VDC présente sur chacune des paillasses, et sera protégée grâce à un fusible adapté. La programmation sera réalisée grâce à un FTDI relié aux pins de communication série de l'atmega328.

Semaine 3 : mercredi 2 octobre



Commande de matériel

Création d'une carte Arduino

Récupération de la tension

Affichage de la tension

Afin d'afficher la tension des trois générateurs, il est nécessaire d'utiliser 3 afficheurs 7 segments de 3 ou 4 digits. En utilisant 3 digits seulement, il faudrait donc gérer 21 à 24 LED à gérer par afficheur en fonction de l'utilisation ou non de virgules. L'utilisation de drivers de LEDs TLC5947 sied à la gestion d'un maximum de 24 LEDs par module, et ces derniers peuvent être utilisés en série pour gérer davantage de LEDs. Nous pouvons donc utiliser un TLC5947 par affichage. Dans le cas où nous utiliserions ce module, il serait nécessaire d'ajouter une résistance d'environ 2k5 Ohm par module afin d'obtenir les 20mA nécessaires pour les afficheurs.

Dans le cas où nous utilisons, comme actuellement, 4 digits par afficheur, il pourra être intéressant d'utiliser des MM5451 pouvant piloter jusqu'à 35 LEDs par module. Ces modules nécessitent un potentiomètre de 100 kOhm (typiquement) pour ajuster la luminosité des LEDs sur le pin 19.

3 * TLC 5947 + 3 * 2k5 resistors :


3 * MM5451 + 3 potentiomètre 100 kOhm :

https://forum.arduino.cc/index.php?topic=66090.0

9 (ou 12) * Afficheur 7 segments :

https://fr.rs-online.com/web/p/afficheurs-led/1246750/ (RS)

Envoi des données au serveur

Afin d'envoyer les données sur le serveur, il faudra connecter la carte électronique sur les prises RJ45 se trouvant sur chacune des paillasses. Pour cela, la réalisation d'un circuit reprenant les shields Ethernet pour Arduino sera nécessaire. En se basant sur le [schematic du shield Ethernet fourni par le site www.arduino.cc], les composants nécessaires sont les suivants :

  • Atmega328-20MU
  • W5100





Convertisseur Numérique vers Analogique (ou Digital to Analog Converters) :

#define JOYSTICK_X A6 // X -> droite / gauche
#define JOYSTICK_Y A7 // Y -> vitesse / direction
#define JOYSTICK_THRESHOLD 20
#define MAX_SPEED 2147              // 
int calX, calY, vitesse, direction ;
float coefG, coefD ;
#define MOTEUR_STOP 0
#define MOTEUR_AVANCE 1
#define MOTEUR_RECULE 2 

void setup()
{
  //joystick_INIT_() ;
  calX = analogRead(JOYSTICK_X);
  calY = analogRead(JOYSTICK_Y);
}

void loop()
{
  joystick_getData(calX, calY, &coefG, &coefD, &vitesse, &direction);
  
  






Conclusion





Ressources utilisées

Sites web


Documents Rendus

• Rapport : Fichier:.pdf

• Diaporama de soutenance : Fichier:.pdf

• Archive ZIP contenant ce qui a été réalisé durant le projet : Fichier:.zip X])