P25 SmartMeter : Différence entre versions

De Wiki d'activités IMA
(Semaine 14: Paramètres de communication)
 
(46 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<br style="clear: both;"/>
 +
<include nopre noesc src="/home/pedago/pimasc/include/video-SmartMeter2014-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;"/>
 +
== Rapport du 24/02/2015 ==
 +
[[Fichier:RapportEderleFossaert.pdf]]
  
 
== Rapport du 18/12/2014  ==
 
== Rapport du 18/12/2014  ==
Ligne 492 : Ligne 498 :
 
Si tous se passe bien le registre COMMAND doit passer à 0x000000. Sinon, les erreurs sont sur les bits à 1.
 
Si tous se passe bien le registre COMMAND doit passer à 0x000000. Sinon, les erreurs sont sur les bits à 1.
  
=====<font color=#3A9D23>Semaine 14: Paramètres de communication  </font>=====
+
=====<font color=#3A9D23>Semaine 14: Paramètres de communication: </font>=====
 
----
 
----
 +
  
 
Dans cette partie, on étudie le paramétrage du circuit Maxim à effectuer afin que celui-ci interprète correctement les mesures.
 
Dans cette partie, on étudie le paramétrage du circuit Maxim à effectuer afin que celui-ci interprète correctement les mesures.
Ligne 519 : Ligne 526 :
 
Les valeurs nécessitant un calcul (Vrms, Puissance, cos(Fi), etc..) sont lisibles lorsque l’indicateur DRDY du registre STATUS (0x1A) est HIGH, soit environ tous les 0.1 secondes.Les valeurs instantanées (courant, tension instantanée, ..) sont-elles modifiées toute les 250 ns.
 
Les valeurs nécessitant un calcul (Vrms, Puissance, cos(Fi), etc..) sont lisibles lorsque l’indicateur DRDY du registre STATUS (0x1A) est HIGH, soit environ tous les 0.1 secondes.Les valeurs instantanées (courant, tension instantanée, ..) sont-elles modifiées toute les 250 ns.
  
=====<font color=#3A9D23>Semaine 15:  </font>=====
+
**'''<font color=#8f8f8f>Problèmes rencontrés avec l'I2C et le protocole SPI</font> '''
En cours de redaction
+
----
 +
 
 +
Il apparaît dans la datasheet que le protocole SPI ne permet d'obtenir la valeur de la puissance instantanée, ceux du à une plage d'adressage registre via le protocole SPI trop faible. L'I2C posant les mêmes problèmes, il est nécessaire de passer par la dernière solution, à savoir l'utilisation du protocole UART permettant d'accéder à l'ensemble des registres.
 +
 
 +
**'''<font color=#8f8f8f>Constitution des trames en UART</font> '''
 +
----
 +
Le protocole UART permet de crée un réseau comportant jusqu’à 255 unités. Cependant, comme seul un composant Maxim 78M6610 est présent sur la carte, il n’est pas nécessaire de tenir compte de l’ensemble des travaux de configuration pour l’UART.
 +
Aussi, nous choisissons la communication UART pour communiquer entre le Panstamp et le circuit intégré (78M6610). Nous choisissons également d’opérer suivant le fonctionnement suivant (fonctionnement par défaut du Maxim) :
 +
 
 +
* 38 400 Bauds
 +
* 8 Bits
 +
* Pas de Parité
 +
* Pas de « flow control »
 +
 
 +
 
 +
De plus, ayant choisi de travailler par défaut en SPI lors du choix de composant, il est nécessaire de modifier le design de la carte en conséquence. Heureusement, il n'est pas nécessaire de retirer une carte électronique mais il "suffit" de couper certaines lignes électriques (au cutter)et d'en créer d'autres. Après modification, la carte prête modifiée pour l'UART est alors la suivante:
 +
 
 +
[[Fichier:CarteSansPanstamp.jpg | 800px|center]]
 +
 
 +
**'''<font color=#8f8f8f>modification de la carte pour communication UART</font> '''
 +
----
 +
 
 +
Comme dit précédemment, l'utilisation de la communication UART entraine des modification du schématique, notamment au niveau de la partie communication. En conséquence, le nouveau schématique est le suivant:
 +
 
 +
/* Mettre le schématic */
 +
 
 +
=====<font color=#3A9D23>Semaine 15: Retranscription des bibliothéques C++ en C </font>=====
 +
----
 +
 
 +
Afin de pouvoir créer un programme beaucoup plus complexe et intélligent. Nous avons retranscrit les fichier sources C++ de la librarie panstamp en langage C. Ceci représente 23 fichiers dont 9 fichers .c et 14 fichier .h.
 +
En terme de chiffres la retranscription de la librarie représente environ 3000 ligne de code à retranscrire ou à verifier. Pour cette réalisation l'utilisation du manuel de la librarie avr-libc a était un élément essentiel.
 +
 
 +
Nous pouvons voir ci-dessous le liens correspondant au code source. Le dossier est composé de 3 sous  dossier : 
 +
 
 +
--> Un sous dossier "source" comportant tous les fichiers source et un makefile afin de compiler automatiquement les fichiers en librairie.
 +
 
 +
--> Un sous dossier "emeteur" comportant un programme de test en emission/reception et un makefile pour la compilation
 +
 
 +
--> Un sous dossier "recepteur" comportant un programme de test en reception/emission et un makefile pour la compilation.
 +
 
 +
[[Fichier:FichersSource.zip]]
 +
 
 +
**'''<font color=#8f8f8f>Explication de la communication en HalfDuplex</font> '''
 +
----
 +
 
 +
Le programme de test correspond à une communication HalfDuplex entre les deux panstamps. Chaque panstamp peut emettre et recevoir en RF. Le panstamp n°1 envoi une trame et affiche la trame sur son port série. Le panstamp n°2 attend la reception d'une trame, quand celle-ci est réceptionné le panstamp n°2 affiche la trame receptionné puis envoi et affiche une trame de confirmation ( « ok ») au panstamp n°1. Le panstamp n'1 affiche la trame receptionné puis il transmet une autre trame...etc
 +
Ce programme de test permet de vérifier la transmission et la récéption pour les deux panstamps.
 +
 
 +
 
 +
[[Fichier:Halfduplex.png|700px|center| terminal communication panstamps]]
 +
 
 +
=====<font color=#3A9D23>Semaine 16: Utilisation d'un UART logiciel </font>=====
 +
----
 +
 
 +
Ne pouvant utiliser le port serie matériel du atmega328p, nous avons décidé de créer un port série logiciel pour communiquer avec le maxim 78M6610+LMU. Nous avons donc crée une bibliothéque pour lire et recevoir des données via les broches PC4 et PC5 du panstamp. Pour testé notre bibliothèque, nous avons branché les broches Tx et Rx d'un autre adaptateur USB FTDI sur les broches PC4 et PC5 correspondant. Nous avons fini par visualiser les données sur un deuxiéme terminal.
 +
Pour testé notre bibliothèque une seconde fois , nous avons branché les broche PC4 et PC5 (softwareSerial) sur les broches RX et TX d'un autre panstamp (pour simuler le maxim78M6610) puis nous avons visualiser les donnée reçu/transmis.
 +
 
 +
[[Fichier:SourceSoftUart.zip]]
 +
 
 +
[[Fichier:Schematic2.PNG]]
 +
 
 +
Carte en fonctionnement alimentée en 3.3V via une alimentation continue (piles)
 +
 
 +
[[Fichier:Carte.jpg| 800px|center]]
 +
 
 +
=====<font color=#3A9D23>Semaine 17: Programme de calibration automatique: </font>=====
 +
----
 +
etat: programme en cours de debogage
 +
 
 +
<ul>
 +
  <li> Ecriture/Lecture dans les registres du Maxim </li>
 +
  <li> Trame pour calibration registre réalisée.</li>
 +
  <li> Etude du calcul à éffectuer par le Panstamp afin de calculer la valeurs réel des données voulues.</li>
 +
  <li> Réalisation d'un programme permettant l'enregistrement des registres dans un fichier ou Excel.</li>
 +
  <li> Rdv avec Mr. Benabou le jeudi 12 afin que l'on puisse accéder à la salle de test.</li>
 +
</ul>
 +
 
 +
 
 +
=====<font color=#3A9D23>Semaine 18: Test du programme de calibration </font>=====
 +
 
 +
<ul>
 +
  <li> Transfert des valeurs usine des registres dans l'Excel via le programme réalisé la semaine précédente </li>
 +
  <li> Ecriture/Lecture dans les registres du Maxim </li>
 +
  <li> Protocol de calibration Maxim réalisé et validé pour la partie tension (courant à confirmer lors du branchement sous haute tension).</li>
 +
  <li> Programmation des calculs effectués par le Panstamp afin d'obtenir les valeurs réel de tensions, intensité, puissance, etc..</li>
 +
  <li> Réalisation du programme final permettant la communication entre le Maxim présent sur la carte de mesure et le Panstamp présent sur un élément déporté (base).</li>
 +
  <li> Création du programme de calibration automatique </li>
 +
  <li> Mise sous tension de la carte (Problème détecté).</li>
 +
  <li> Nouvelle mise sous tension après correction de la carte </li>
 +
 
 +
</ul>
 +
 
 +
 
 +
=====<font color=#3A9D23>Semaine 19: Résolution des derniers problèmes(1), préparation aux rendus </font>=====
 +
----
 +
<ul>
 +
  <li> Calibration tension réalisée et validée </li>
 +
  <li> Assemblage de l'ensemble des codes pour réaliser une communication complètes </li>
 +
  <li> Correction du problème du claquage du fusible de l'alimentation sous haute tension</li>
 +
  <li> Premier tests de communication UART + RF</li>
 +
 +
</ul>
 +
 
 +
=====<font color=#3A9D23>Semaine 20: Résolution des derniers problèmes(2), préparation aux rendus </font>=====
 +
 
 +
<ul>
 +
  <li> Calibration du courant réalisée et validée </li>
 +
  <li> Assemblage de l'ensemble des codes afin de réaliser une communication complètes </li>
 +
  <li> Préparation du rapport</li>
 +
  <li> Tests (de nouveau) de communication UART + RF</li>
 +
  <li> Préparation Vidéo & Soutenance</li>
 +
 +
</ul>
 +
 
 +
=====<font color=#3A9D23>Semaine 21: Source + programme calibration + programme panstamp utilisateur + programme panstamp maxim </font>=====
 +
Source version finale:
 +
 
 +
[[Fichier:versionfinale.zip]]

Version actuelle datée du 11 avril 2015 à 10:24



Vidéo HD

Sommaire


Rapport du 24/02/2015

Fichier:RapportEderleFossaert.pdf

Rapport du 18/12/2014

Fichier:RapportFossaertEderle.pdf

Généralité

Sujet du projet : Réalisation d'un SmartMeter

Fait par : Thomas Ederlé & Sylvain Fossaert

Encadrants : Xavier Redon, Alexandre Boé

Industriel : Guillaume Renault

Contexte

La consommation d'énergie est un poste de dépense qui prend de l'importance et pèse de plus en plus sur les factures d’électricité des particuliers. Aujourd'hui , mesurer en continu ses consommations énergétiques est devenu indispensable.Créer un outil de mesure permettrai au particulier de visualiser l'impact de ses gestes, d'établir des prévisionnels financiers et d'adopter un comportement éco-responsable dans le but d'obtenir un bâtiment à basse consommation d'énergie.

    • But général

Réaliser un module électrique se branchant sur prise afin d'y relever et transmettre via liaison radio, la puissance consommée par l'appareil connecté


Schemaresolution2.jpg

Énoncé et cahier des charges

Tout d'abord, le but du projet est de mesurer la tension instantanée, le courant instantané et la consommation instantanée d'un appareil connecté sur une prise secteur afin d'en extraire la puissance active de consommation. La seconde partie est de transmettre ces mesures en RF via un module panstamp. Pour atteindre ces objectifs, une carte électronique devra être réaliser et s’interfacer entre la prise secteur et l'appareil dont on souhaite mesurer la consommation. De plus, la carte électronique devra être conçu pour être alimentée par la prise secteur mais la consommation de cette carte doit être négligeable. La plage de consommation mesurable sera de 1W à 8KW avec un pas au plus proche de 0.1W ceci permettra à l'utilisateur de mesurer la consommation des appareils en veilles.

  • I)-Points d'attention

       * Les mesures devront tenir compte du cos Phi   
       * La plage de consommation mesurable sera [1W - 8kW] avec un pas au plus proche de 0,1W   
       * S'agissant d'un circuit de mesure de consommation, sa consommation propre (hors module panstamp) doit être négligeable


    • II)-Objectif 1 : Alimentation & choix des composants de mesure

Le premier objectif sera atteint par la réalisation d'une carte électronique s'interfaçant entre la prise secteur et l'appareil dont on souhaite mesurer la consommation et comprenant les étages suivants :

       * La carte sera alimentée par la prise secteur         
       * L'appareil dont on souhaite mesurer la consommation sera alimenté par la carte
       * La communication sans fil s'effectuera via un module nommé "Panstamp" contenant une solution RF intégré. 
     
       * Prise de mesures par échantillonnage (pour garantir la fiabilité)


    • III)-Objectif 2 : Transmission des mesures via le module panstamp

Concevoir une trame contenant les mesures instantanées et une autre contenant la consommation cumulée sur une minute transmettre ces trames via le module panstamp


Module Panstamp
 Les panStamps sont des modules programmables à partir de l’environnement Arduino. Chaque module contient un 
 microcontrôleur Atmega328p et une interface RF CC1101.Les modules panStamp sont programmés comme n'importe quelle 
 autre plateforme Arduino, avec la différence que panStamp peut faire de la communication sans fil à basse  puissance.
 
 Consommation de courant: 1 à 5 uA sous mode dormant. 
                          2.5 mA pendant les transmissions.
                                           Site du constructeur


Module Xbee
  Cette technologie a pour but la communication de courte distance telle que le propose déjà la technologie Bluetooth, tout en étant 
  moins chère et plus simple. Cette solution n'a pas été retenue pour réaliser notre système car la consommation de courant de 
  ce module est beaucoup plus élevé que le module panstamp.
   
  Consommation de courant:  <10 µA sous mode dormant.
                            50 mA en réception.
                            35 mA pendant les transmissions.


    • III)-Objectif 3 : Concevoir une trame destinée au module panstamp, permettant à réception d'allumer ou d'éteindre l'appareil connecté


Par défaut, l'appareil sera alimenté

Planning du projet

Déroulement du projet

Semaine 1 : Prise en connaissance du cahier des charges + premières réflexions

Cette première semaine fut l'occasion de rencontrer notre tuteur industriel (Guillaume Renault), comprendre ses attentes, et définir le cahier des charges. Ainsi, une première réflexion et recherche fut effectuée durant cette semaine. Il ressort de celle-ci les possibilités étant à notre disposition mais aussi de nombreuses interrogations.

    • Quel type d'alimentation est le plus à même d'être intégré dans la carte?
    • Quels capteurs de courant et tension choisir?
        • Capteur de courant et de tension séparés?
        • Une autre solution possible?

Nous décidons pour répondre à nos interrogation de prendre rendez-vous avec Mr. Boé.

Semaine 2 : Recherche sur les alimentations à découpage (burst, flyback) ou linéaire. Recherche sur les capteurs de courant et tension, recherche des solutions pour trouver le déphasage.

    • Alimentation première solution envisagée:

AlimentationPrincipe.jpg

Le principe de notre alimentation est d’obtenir une tension 3.3V continue à partir d’une alimentation 220V alternatif fourni par une prise monophasée murale. Pour rappelle la tension continue 3.3V permettra d’alimenter notre panstamp et les différents composants permettant d’effectuer les mesures nécessaire. Pour réaliser ce dispositif nous avions adopté la solution de la figure ci-dessus, comprenant:

              * Un transformateur permettant d’abaisser la tension alternative 220V en 3.3V.
              * Un étage redresseur monophasée à quatre diodes appelé pont de Graëtz 
              * Un étage de lissage de la tension et du courant par:
                                                                * Condensateur en parallèle 
                                                                * Inductance en série.
    • Alimentation deuxième solution envisagée: flyback

Flyback.PNG

Le montage 'Flyback' est le montage le plus utilisé dans le monde de l'industrie électronique de faible puissance (P <100 W). En effet, celui-ci comporte un bon taux de transfert de l'énergie (80-95%), et de part sa fabrication, il comporte une isolation galvanique permettant de protéger les biens et les personnes présent en avale (au secondaire). De plus, le 'hachage' du courant effectué par le transistor du primaire permet une miniaturisation des éléments selfiques et capacitifs. Ainsi, de part son faible cout de fabrication, son faible encombrement et son bon rendement, c'est une alimentation 'Flyback' est idéale pour une utilisation dans les systèmes embarqués de faible puissance. Pour de plus amples informations sur le montage, veuillez-vous reporter au rapport présent en fin de page.


    • Alimentation troisième solution : composant convertisseur AC/DC

Alimentationbloc.JPG

Le principe de cette solution est d'obtenir les différents étages permettant de passé d'une tension alternative 230V à une tension continue 3.3V , le tous intégré dans un seul composant. Pour notre système, cette solution est de loin la plus facile à mettre en œuvre. De plus, les dimensions et le coût sont inférieurs par rapport aux solutions précédentes.

    • Mesure courant: solution envisagée

Capteur de courant

Pour la mesure du courant la première solution envisagée a été d’utiliser un capteur de courant basé sur un circuit à effet Hall.Le capteur permettait de mesurer un courant de -31A à +31A alternatif. Ce capteur possédant une sortie analogique qui est proportionnelle au courant mesuré (2.5V pour 0 A puis 45mV/A), la solution envisagée été de relier cette sortie analogique sur une entrée analogique du panstamp puis de convertir la valeur par le biais de son convertisseur analogique/numérique. La consommation en courant de ce capteur est de 4mA.

[| Pour plus d'informations ]

[| 2iéme capteur étudié]


    • Mesure tension: solution envisagée


Mesuretension.JPG




Bien évidemment, on ne branche pas directement le 220V alternatif sur l’entrée analogique du panstamp (à moins d’avoir besoin d’un grille pain). La solution étudiée pour mesurer la tension se base principalement sur l’utilisation d’un simple transformateur AC/AC qui servira à ramener la tension 220V AC aux alentours de 9 Volts AC. Par la suite, un montage à pont diviseur (R1-R2) ramènera la tension de mesure dans les bornes 1V AC (de +1V à -1V).Finalement, le second pont diviseur (R3-R4) monté entre GND et « +VCC arduino » permettra de déplacer le seuil de mesure inférieur de +2.5Volts. En effet, les entrées analogiques de l’Atmeg328p ne sont pas capables de mesurer des tensions négatives. Il faut donc veillez à ce que le -1V alternatif issus du premier pont diviseur retourne dans des valeurs positives.



    • Mesure du déphasage: solution envisagée

Puissanceactive.PNG

La puissance active est la puissance réelle consommé par la charge. Ainsi, numériquement il suffit d’échantillonner la tension u(t) et i(t) en fonction du temps de manière à prendre en charge le cosinus phi dans les mesures de consommation. Dans cette solution le panstamp échantillonne et intègre la tension et le courant. Dans cette solution envisagé , nous devons respecter le théorème de Shannon. Ainsi, il faut au minimum que la fréquence d'échantillonnage ( fe ) soit supérieur à deux fois la fréquence du signal (F) : fe>2F Plus fe est important, plus l’erreur sur la puissance mesurée est faible.Il faut donc un dispositif capable d’échantillonner à 100 Hz. Cependant, afin de réduire l’erreur de mesure, il est de convention de prendre fe=20*f soit fe=2000 Hz.


    • Entretien avec Mr. Boé => Se concentrer sur la recherche des capteurs répondant au cahier des charges en premier lieu (et non sur l'alimentation). Présentation des blocs d'alimentation compact à découpage pour circuit imprimé. Découverte des circuits intégrés type "Energy meter".
Semaine 3 : Microchip MCP3905 & MCP3911

    • Etude des circuits intégrés Microchip MCP3905 & MCP3911 et des "references design" recherche d'un bloc d'alimentation dont le courant maximum est moindre que celui des alimentations trouvés préalablement.
Semaine 4 :maxim 78M6610+LMU

    • Etude du circuit intégré maxim 78M6610+LMU et son " reference design" car les microchip MCP3905 et MCP3911 ne convenaient pas à notre application.
Semaine 5: maxim 78M6610+LMU & référence design

Etude approfondi du référence design du 78M6610+LMU permettant de définir les composants nécessaires pour réaliser notre carte. Etude de la largeur de piste

Le 78M6610+LMU est un circuit numérique spécialisé dans la mesure d’énergie. Il comporte un convertisseur Analogique-Numérique 24 bits multiplexé sur 4 voies. Son microcontrôleur intégré permet à la fois différentes mesures de puissance tel que la puissance active, la puissance réactive, la puissance apparente, le facteur de puissance. Le circuit intégré est capable de mesurer les valeurs instantanées de la tension, du courant et des puissances mais aussi de calculer l’énergie consommée. Le composant comporte une liaison série SPI, I²C ou UART. Nous pouvons donc communiquer en série entre le circuit intégré et notre microcontrôleur atmega328p.

De plus, le composant Maxim « 78M6610+LMU » permet d’obtenir un échantillonnage fe=4000Hz par voies.

maxim
Semaine 6: Création du schematic sous EAGLE

Après avoir étudié le composant maxim 78M6610+LMU et son référence design, nous avons commencé à créer le schématic de notre circuit imprimé sur le logiciel EAGLE. Pour la réalisation de celui-ci nous nous sommes en grande partie inspiré du schématic du référence design et nous avons ajouté les éléments nécessaires pour une alimentation secteur 230V , l'intégration du panstamp permettant d'envoyer les informations, des leds supplémentaire pour facilité le débogage lors de la calibration et des composants supplémentaire pour la sécurité de l'utilisateur.

Les explications du schéma sont insérées dans le rapport.

SchematicEagle.png

Fichier:SchemaHD.pdf

Semaine 7: Création du PCB sous EAGLE en traversant (solution non adoptée)

Lors de cette semaine nous avions réalisé le PCB de notre système avec des composants traversant et notamment effectué notre liste de commande en traversant. Malheureusement après visualisation des PCB il nous a était imposé de recommencer celui-ci en CMS car hormis la taille l'utilisation de la technologie traversante comporte de nombreux inconvénients pour le bon fonctionnement de l'application ( rupture de masse trop fréquente etc....)


PCB TOP en traversant
BOTTOM traversant



Semaine 8: Création du PCB sous EAGLE en CMS

Lors de cette semaine nous avons recommencé le PCB en CMS et recommencé la liste des composants à commander en CMS. Cela a permit d'optimiser le placement des composants et d'avoir une délimitation de plan de masse beaucoup plus propre entre les composants sous 230V et les composants en basse tension. De nombreuse améliorations ont étaient apportés au design lors cette nouvelle version. Nous pouvons visualiser ci-dessus la dernière version du PCB. Quelques améliorations mineures sont encore en cours de développement.

PCB TOP en CMS
PCB TOP en CMS


Semaine 9: Version finale du PCB

Cette semaine a permis de valider et modifier certaines parties du design de la carte

PCB TOP en CMS
PCB TOP en CMS
Semaine 10: Remise des typons & étude panstamp

  • Exporter la carte dans des formats différents permettant de tirer de façon chimique ou avec une graveuse (fichiers GERBER,PDF).
  • Commencer à étudier la programmation des panstamp et les protocoles qui y sont associés.
Semaine 11: Programmation des panstamps

Afin de programmer nos panstamps , nous avons câblé une communication série à l’aide d’un adaptateur USB FTDI. Nous pouvons notamment utiliser un panstick pour réaliser ce processus. Les connections à réaliser sont visible sur l’image ci-dessous.

cablage pour programmer le panstamp

Pour émettre ou recevoir une communication RF nous devons d’abord équiper notre panstamp d’une antenne ou d’un connecteur SMA ( type de connecteur coaxial dont l’impédance caractéristique est de 50 Ohms). Pour notre application nous avons choisi d’utiliser la solution par antenne car celle-ci est moins couteuse. L’antenne peut être réalisée à l’aide d’un simple fil, la longueur de notre fil permettra de définir notre fréquence porteuse donc notre longueur d’onde. Les fréquences indiquées sur le site de panstamp sont les suivantes :

Frequence = 868 MHz
Quarter Wavelength: 82.2 mm 
Half Wavelength: 164.3 mm 
Frequency = 915 MHz:
Quarter Wavelength: 77.9 mm 
Half Wavelength: 155.9 mm

Nous avons choisi d’utiliser la fréquence de 868 Mhz car par défaut le panstamp émet à cette fréquence. Ceci nous évitera de paramétrer la fréquence porteuse dans nos programmes.


    • Le programme MODEM:

Dans un premier temps, afin de nous familiariser avec le développement de communication RF sur panstamp, nous avons commencé à étudier le programme « modem » fourni dans la bibliothèque panstamp. Le programme joue le rôle de passerelle entre le réseau de communication RF utilisé par les panstamps et le port série de l’ordinateur ou le panstamp est connecté. Le programme possède 2 modes de fonctionnement qui sont :

--> Le mode data (permet d’écouter le réseau RF et de convertir en ASCII les paquets entrant et de les afficher sur un terminal)

--> Le mode commande (permet de configurer cette « passerelle » par le biais de commandes AT sans prendre en compte la réception/transmission des paquets).


    • Étude des bibliothèques:

Pour développer nos propres communications RF, nous avons étudié attentivement les différentes bibliothèques fournies sur le site de panstamp (bibliothèque arduino, bibliothèque panstamp, bibliothèque swap). Nous avons pu différencier les rôles de chacune.

-->La partie arduino comme nous avons vue lors de nos précédents projet, permet de contrôler les I/O (analogique et digital), les ADC, les PWM etc…

-->La partie panstamp permet de contrôler les communications RF (transmission/réception), la synchronisation, la gestion de l’alimentation (mode veille/mode transmission)… On notera que la partie panstamp permet de réaliser des communications RF simples mais elle ne possède pas de protocole de communication

-->La partie swap possède toutes les fonctions nécessaires pour réaliser un protocole de communication simple et efficace. Nous pouvons visualiser ci-dessous les paquets pour une communication RF simple utilisant uniquement les fonctions de la bibliothèque panstamp et les paquets utilisant le protocole de communication swap.

cablage pour programmer le panstamp

Le protocole SWAP possède deux formats de paquets:

-->Le format standard permettant d’adresser 255 panstamps dans notre réseau

-->Le format étendu permettant d’adresser 65 535 panstamps dans notre réseau. Dans notre cas, nous utiliserons le format standard sachant qu’un particulier ne disposera pas de 255 prises électriques dans sa maison.


Le format standard que nous utiliserons se comporte de la manière suivante :

--> 4 octets destinés à l’identifiant de notre réseau (Network ID) : Pour notre application cela peut être intéressant d’utiliser plusieurs sous réseaux par exemple un réseau pour le salon, un réseau pour la cuisine etc … L’utilisateur pourrait donc déterminer la pièce qui consomme le plus d’électricité dans sa maison.

--> 1 octet destiné à la longueur des données (data len)

--> 1 octet destiné à l’adressage du destinataire ( dest addr ) : Dans notre cas l’adresse sera entre 1 et 255. L’adresse de broadcast sera 0.

-->1 octet destiné à l’adressage de l’émetteur (src addr)

-->4 bits destinés à la sécurité des données transmise/émise (secu): Permettra de crypter les données

-->1 octet destiné à protéger l’utilisateur contre des attaques par le biais de requêtes répétés (nonce)

-->1 octet destiné à renseigner le type de trame (function), la trame peut être de type : query, status ou command.

  • La trame query permet de faire une requête. Son but est de demander à un destinataire la valeur de ses registres de données. (Nous verrons plus tard comment sont organisés les registres de données utilisés dans le protocole swap. Remarque une trame de type query ne comportera pas de data).
  • La trame de type status permet d’envoyer la valeur des registres de données. La réponse à une trame de type query sera une trame de type status.
  • La trame de type command est utilisée pour contrôler les registres de données. On pourrait par exemple utiliser ce type de trame pour contrôler la valeur d’une PWM à distance, un interrupteur etc… Donc ce type de paquet pourra être utile dans notre application pour allumer ou éteindre notre carte à distance.

-->1 octet destiné à renseigner l’adresse du registre du panstamp destinataire (reg addr) ou l’on veut appliquer une trame de type status, query, et command.

-->1 octet destiné à renseigner l’ID du registre (reg id), l’ID est utilisé par le protocole de communication swap pour gérer ses registres de données. (Nous verrons par la suite en quoi cela consiste plus précisément).

-->1 à 55 octets destinés aux données (data)

-->1 octet destiné au CRC (le CRC est calculé automatiquement)


    • Développement d'un programme de communication RF (sans le protocole SWAP):



Afin de prendre en main la communication entre deux panstamps. Nous avons tout d'abord développé un programme sans l'utilisation du protocole SWAP. Le fonctionnement du programme est le suivant:

Le panstamp N°1 transmet un paquet au panstamp N°2. Lors de la transmission du paquet, le panstamp N°1 fait clignoté une LED verte et affiche le paquet transmit sur le port serie. Le panstamp N°2 écoute le réseau RF , il posséde une led rouge qu'il va allumer jusqu'à la reception d'un paquet. Quand le panstamp N°2 reçoit un paquet, il éteint la LED rouge et affiche sur le port série le paquet reçut. Nous pouvons visualiser le fonctionnement de notre programme sur la video ci-dessus.

    • Programme source du transmetteur:

programme du transmetteur
programme du transmetteur
    • Programme source du récepteur:

programme du récepteur
programme du récepteur
Semaine 12: préparation soutenance, bilan & gestion des tâches à venir

    • Bilan du 18/12/2014:

Ce projet de fin d’étude est pour nous un réel défi qui nous tiens à coeur de relever en le menant à terme avant février autrement dit en réalisant sa mise en fonctionnement et ce, dans les délais qui nous sont impartis. Ce projet ambitieux qui nous a été confié nous permet d’accroître considérablement les connaissances acquises jusqu’alors dans le cursus universitaire et ce, principalement dans le domaine des systèmes embarqués tout en prenant en considération les contraintes liées au cahier des charges et des normes de sécurité inhérentes à Polytech’Lille. De plus, sur le plan humain ce fut pour nous, une expérience très enrichissante car, nous avons dû partager et comprendre nos idées mais aussi prendre en compte les contraintes et impératifs définies afin de réaliser ce système. Autrement dit, ce projet d’étude est un travail d’équipe. De plus, nous pensons avoir amélioré notre autonomie et méthodologie de par les recherches et démarches personnelles effectuées tout au long de ce projet. En conclusion, ce début de projet nous a permis de réaliser une véritable étude de faisabilité à travers une réflexion autour des choix des composants, une étude technique mais aussi une étude de circuit

    • Gestion du projet: les tâches à venir (Diagramme de Gantt)

DiagrammeDeGanttSmartMeter.JPG

-> Vert: tâches à réaliser par Sylvain

-> Bleu: tâches à réaliser par Thomas

-> Violet: tâches à réaliser par Thomas & Sylvain

Nous pouvons visualiser ci-dessus, le diagramme de Gantt des tâches à venir. Nous avons organisé ce planning de manière à finir notre projet le 3 février, donc environ 3 semaines avant la date de la soutenance finale. Ce planning nous laisse une marge de manœuvre si nous rencontrons des imprévus


Semaine 13:La calibration du MAX 78M6610

    • Etude de la datasheet du MAX 78M6610+LMU pour la calibration

Afin d’obtenir une mesure cohérente de la puissance consommée par la source en aval, il est nécessaire d’étalonner le Maxim 78M6610+LMU via des registres de commande. Le Maxim 78M6610+LMU contient une routine interne permettant de simplifier la configuration de celui-ci. Nous allons donc passer par cette routine afin de simplifier les erreurs et le temps consacrés à cette démarche. Cependant, il semble qu’il soit nécessaire de passer par une prés phase de configuration de certains registres. Ainsi, cette partie va être découpée en deux. Etudions dans un premier temps la valeur des registres avant calibration, puis, les registres nécessaires pendant la configuration.

calibration

Aussi, avant de commencer cette partie, il serait intéressant de récupérer la valeur de l’ensemble des registres usine car une modification de certains registres peut compromettre le fonctionnement du 78M6610.

  • La premiere étape consiste à faire un « read » des registres via SPI ou UART pour tout récupérer dans un fichier LOG
  • La seconde étape consiste en la configuration des voix A0 (tension) et A2, A3 pour le courant. Ainsi

la tension est multiplexé sous le nom S0 et le courant sous le nom S1.

-->La configuration de référence de tension (voir page 44 de la datasheet):

CONFIG[23 :22] = 00

-->Pré-amplification

CONFIG[21 :20] = 00

-->Configuration de l’entrée de tension S0 (voir page 20) :

Comme nous n’avons qu’une tension directe et non inversée, nous devons multiplier S0 par 1. CONFIG[19 :8] (0x25) vaut donc :

calibrationtab1

-->Configuration de l’entrée de courant S1 (voir page 23) :

Comme nous n’avons qu’une tension directe et non inversée, nous devons multiplier S0 par 1. CONFIG[7 : 0] (0x25) vaut donc :

calibrationtab2

Configuration des échelles de mesure : Lien : http://www.maximintegrated.com/en/app-notes/index.mvp/id/5757


-->Configuration de VFSCALE (0x83):

Au maximum, on a 250 mVpk au borne de S0 (soit la pleine échelle). Ainsi, au maximum, d’après le point diviseur éffectué V(line) = 2667.66 x V(S0). On en conclue donc que : FSV = 0.250 x 2667.66 = 666.92 V Ainsi, pour respecter les thermes, la tension réseau serra de 666.92V. On en conclue : VFSCALE = 10#667 = 0x00029B

-->Configuration de IFSCALE (0x84) :

En prenant le même raisonnement que pour VFSCALE. On en déduit : FSI = V(S1) / Rshunt = 0.250 / 0.04 = 62.5 Apk Donc : IFSCALE = 10#63 = 0x00003F

-->Calibration interval :

Sauvegarde des informations dans la flash : Utilisation du registre COMMAND (0x00) pour sauvegarder les informations non volatile en flash.  COMMAND = 0xACC200

    • Configuration des registres pour la calibration

La calibration doit se faire en présence d’une tension AC et une charge stable dans le temps. De plus, la tension, le courant et la température doivent être connus afin de remplir les registres VTARGET (0x26), ITARGET (0x3C), T_TARGET (0x6A) de leurs valeurs.

VTARGET = Vrefrms / VFSCALE
ITARGET = Irefrms / IFSCALE
T_TARGET

Exemple :

Vrefrms = 230 V
Irefrms = 20 A 
Température ambiante = 25°C

Donc :

VTARGET = 230 / 667 = 0.3448 = 0x2C2268
ITARGET = 20 / 62.5 = 0.32 = 0x28F5C2 
T_TARGET = 20
    • Sauvegarde des informations dans la flash :

Utilisation du registre COMMAND (0x00) pour sauvegarder les informations non volatile en flash. COMMAND = 0xACC200

    • Lancement de la calibration:

Une fois l’ensemble des registres enregistré, on peut lancer la routine de calibration. Celle-ci se fait par la commande suivante : COMMAND (0x00) = 0xCA2E00 (voir page 44)

Si tous se passe bien le registre COMMAND doit passer à 0x000000. Sinon, les erreurs sont sur les bits à 1.

Semaine 14: Paramètres de communication:


Dans cette partie, on étudie le paramétrage du circuit Maxim à effectuer afin que celui-ci interprète correctement les mesures.

Réalisation d’une liaison SPI : Mettre la Pin IFC0 du 78M6610 à LOW Comme le Maxim opère comme un esclave SPI, la Pin SSB doit être égal à LOW.

Configuration de la liaison SPI en mode lecture :

Pin SCK à HIGH
Pin SDI : Datas du Panstamp
Pin SDO : Datas renvoyées du 78M6610

Exemple : Pour lire la tension instantanée en voix A (Reg voix A : 0x33).

1.Mettre SSB = LOW
2.Mettre SCK = HIGH
3.Envoyé la trame suivante sur SDI : 0x01 0x33
4.Réception sur SDO : 0xData[23 :16] 0xData[15 :8] 0xData[7 :0]

PS : Pas d’importance pour la Pin IDC1 pour la configuration du SPI.

Quand lire les valeurs des registres (Tension, Courant, Puissance, etc..)?

Les valeurs nécessitant un calcul (Vrms, Puissance, cos(Fi), etc..) sont lisibles lorsque l’indicateur DRDY du registre STATUS (0x1A) est HIGH, soit environ tous les 0.1 secondes.Les valeurs instantanées (courant, tension instantanée, ..) sont-elles modifiées toute les 250 ns.

    • Problèmes rencontrés avec l'I2C et le protocole SPI

Il apparaît dans la datasheet que le protocole SPI ne permet d'obtenir la valeur de la puissance instantanée, ceux du à une plage d'adressage registre via le protocole SPI trop faible. L'I2C posant les mêmes problèmes, il est nécessaire de passer par la dernière solution, à savoir l'utilisation du protocole UART permettant d'accéder à l'ensemble des registres.

    • Constitution des trames en UART

Le protocole UART permet de crée un réseau comportant jusqu’à 255 unités. Cependant, comme seul un composant Maxim 78M6610 est présent sur la carte, il n’est pas nécessaire de tenir compte de l’ensemble des travaux de configuration pour l’UART. Aussi, nous choisissons la communication UART pour communiquer entre le Panstamp et le circuit intégré (78M6610). Nous choisissons également d’opérer suivant le fonctionnement suivant (fonctionnement par défaut du Maxim) :

  • 38 400 Bauds
  • 8 Bits
  • Pas de Parité
  • Pas de « flow control »


De plus, ayant choisi de travailler par défaut en SPI lors du choix de composant, il est nécessaire de modifier le design de la carte en conséquence. Heureusement, il n'est pas nécessaire de retirer une carte électronique mais il "suffit" de couper certaines lignes électriques (au cutter)et d'en créer d'autres. Après modification, la carte prête modifiée pour l'UART est alors la suivante:

CarteSansPanstamp.jpg
    • modification de la carte pour communication UART

Comme dit précédemment, l'utilisation de la communication UART entraine des modification du schématique, notamment au niveau de la partie communication. En conséquence, le nouveau schématique est le suivant:

/* Mettre le schématic */

Semaine 15: Retranscription des bibliothéques C++ en C

Afin de pouvoir créer un programme beaucoup plus complexe et intélligent. Nous avons retranscrit les fichier sources C++ de la librarie panstamp en langage C. Ceci représente 23 fichiers dont 9 fichers .c et 14 fichier .h. En terme de chiffres la retranscription de la librarie représente environ 3000 ligne de code à retranscrire ou à verifier. Pour cette réalisation l'utilisation du manuel de la librarie avr-libc a était un élément essentiel.

Nous pouvons voir ci-dessous le liens correspondant au code source. Le dossier est composé de 3 sous dossier :

--> Un sous dossier "source" comportant tous les fichiers source et un makefile afin de compiler automatiquement les fichiers en librairie.

--> Un sous dossier "emeteur" comportant un programme de test en emission/reception et un makefile pour la compilation

--> Un sous dossier "recepteur" comportant un programme de test en reception/emission et un makefile pour la compilation.

Fichier:FichersSource.zip

    • Explication de la communication en HalfDuplex

Le programme de test correspond à une communication HalfDuplex entre les deux panstamps. Chaque panstamp peut emettre et recevoir en RF. Le panstamp n°1 envoi une trame et affiche la trame sur son port série. Le panstamp n°2 attend la reception d'une trame, quand celle-ci est réceptionné le panstamp n°2 affiche la trame receptionné puis envoi et affiche une trame de confirmation ( « ok ») au panstamp n°1. Le panstamp n'1 affiche la trame receptionné puis il transmet une autre trame...etc Ce programme de test permet de vérifier la transmission et la récéption pour les deux panstamps.


terminal communication panstamps
Semaine 16: Utilisation d'un UART logiciel

Ne pouvant utiliser le port serie matériel du atmega328p, nous avons décidé de créer un port série logiciel pour communiquer avec le maxim 78M6610+LMU. Nous avons donc crée une bibliothéque pour lire et recevoir des données via les broches PC4 et PC5 du panstamp. Pour testé notre bibliothèque, nous avons branché les broches Tx et Rx d'un autre adaptateur USB FTDI sur les broches PC4 et PC5 correspondant. Nous avons fini par visualiser les données sur un deuxiéme terminal. Pour testé notre bibliothèque une seconde fois , nous avons branché les broche PC4 et PC5 (softwareSerial) sur les broches RX et TX d'un autre panstamp (pour simuler le maxim78M6610) puis nous avons visualiser les donnée reçu/transmis.

Fichier:SourceSoftUart.zip

Schematic2.PNG

Carte en fonctionnement alimentée en 3.3V via une alimentation continue (piles)

Carte.jpg
Semaine 17: Programme de calibration automatique:

etat: programme en cours de debogage

  • Ecriture/Lecture dans les registres du Maxim
  • Trame pour calibration registre réalisée.
  • Etude du calcul à éffectuer par le Panstamp afin de calculer la valeurs réel des données voulues.
  • Réalisation d'un programme permettant l'enregistrement des registres dans un fichier ou Excel.
  • Rdv avec Mr. Benabou le jeudi 12 afin que l'on puisse accéder à la salle de test.


Semaine 18: Test du programme de calibration
  • Transfert des valeurs usine des registres dans l'Excel via le programme réalisé la semaine précédente
  • Ecriture/Lecture dans les registres du Maxim
  • Protocol de calibration Maxim réalisé et validé pour la partie tension (courant à confirmer lors du branchement sous haute tension).
  • Programmation des calculs effectués par le Panstamp afin d'obtenir les valeurs réel de tensions, intensité, puissance, etc..
  • Réalisation du programme final permettant la communication entre le Maxim présent sur la carte de mesure et le Panstamp présent sur un élément déporté (base).
  • Création du programme de calibration automatique
  • Mise sous tension de la carte (Problème détecté).
  • Nouvelle mise sous tension après correction de la carte


Semaine 19: Résolution des derniers problèmes(1), préparation aux rendus

  • Calibration tension réalisée et validée
  • Assemblage de l'ensemble des codes pour réaliser une communication complètes
  • Correction du problème du claquage du fusible de l'alimentation sous haute tension
  • Premier tests de communication UART + RF
Semaine 20: Résolution des derniers problèmes(2), préparation aux rendus
  • Calibration du courant réalisée et validée
  • Assemblage de l'ensemble des codes afin de réaliser une communication complètes
  • Préparation du rapport
  • Tests (de nouveau) de communication UART + RF
  • Préparation Vidéo & Soutenance
Semaine 21: Source + programme calibration + programme panstamp utilisateur + programme panstamp maxim

Source version finale:

Fichier:Versionfinale.zip