P32 Récupération d'énergie pour balise BLE : Différence entre versions
(→Semaine 2 (05/10/2015)) |
|||
(133 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | <include nopre noesc src="/home/pedago/pimasc/include/video-RecuperationEnergie-iframe.html" /> | ||
+ | __TOC__ | ||
+ | <br style="clear: both;"/> | ||
== Objectif == | == Objectif == | ||
Ligne 18 : | Ligne 21 : | ||
On cherche à minimiser l'énergie consommée par l'ensemble du système. | On cherche à minimiser l'énergie consommée par l'ensemble du système. | ||
− | [[Fichier:P32Ensemble.PNG| | + | [[Fichier:P32Ensemble.PNG|250px|thumb|left|'''Architecture''']] |
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Ligne 150 : | Ligne 174 : | ||
|+ | |+ | ||
|- | |- | ||
− | ! scope=col | | + | ! scope=col | '''Contrôleur''' |
! scope=col | Consommation Active | ! scope=col | Consommation Active | ||
! scope=col | Consommation Inactive | ! scope=col | Consommation Inactive | ||
Ligne 156 : | Ligne 180 : | ||
|- | |- | ||
| width="33%" | | | width="33%" | | ||
− | <center>Arduino Pro Mini 328 | + | <center>Arduino Pro Mini 328 </center> |
| width="34%" | | | width="34%" | | ||
<center> 7mA (1 capteur)</center> | <center> 7mA (1 capteur)</center> | ||
Ligne 162 : | Ligne 186 : | ||
<center>4.5µA</center> | <center>4.5µA</center> | ||
| width="33%" | | | width="33%" | | ||
− | <center> | + | <center>Disponible</center> |
|- | |- | ||
| width="33%" | | | width="33%" | | ||
Ligne 172 : | Ligne 196 : | ||
| width="33%" | | | width="33%" | | ||
<center>$5</center> | <center>$5</center> | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>Raspberry</center> | ||
+ | | width="34%" | | ||
+ | <center> 200mA </center> | ||
+ | | width="33%" | | ||
+ | <center>200mA</center> | ||
+ | | width="33%" | | ||
+ | <center>Disponible</center> | ||
+ | |} | ||
+ | |||
+ | {| class="wikitable centre" width="80%" | ||
+ | |+ | ||
+ | |- | ||
+ | ! scope=col | '''Module BLE''' | ||
+ | ! scope=col | Consommation | ||
+ | ! scope=col | Options d'alimentation | ||
+ | ! scope=col | Prix | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>BLE Mini</center> | ||
+ | | width="34%" | | ||
+ | <center> 15 mA </center> | ||
+ | | width="33%" | | ||
+ | <center>3.4V à 11V VIN / 5V USB / Coin Cell Battery (2025 or 2032) / 3.7V Li-ion Battery</center> | ||
+ | | width="33%" | | ||
+ | <center>$17</center> | ||
+ | |} | ||
+ | |||
+ | * <s> Le système Mini Arduino/ BLE Mini me semble être un bon compromis entre facilité d’intégration, consommation d'énergie et miniaturisation du système.</s> <span style="color: red;"> (Choix à discuter à la réunion du Merdredi 07/10) | ||
+ | * <span style="color: green;"> Choix du module RFduino | ||
+ | |||
+ | {| class="wikitable centre" width="80%" | ||
+ | |+ | ||
+ | |- | ||
+ | ! scope=col | '''Capteurs''' | ||
+ | ! scope=col | Modèle | ||
+ | ! scope=col | Alimentation min/max | ||
+ | ! scope=col | Prix | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>Température</center> | ||
+ | | width="34%" | | ||
+ | <center> TMP36GT9Z </center> | ||
+ | | width="33%" | | ||
+ | <center>2.7V/5.5V</center> | ||
+ | | width="33%" | | ||
+ | <center>1,46 €</center> | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>Accéléromètre</center> | ||
+ | | width="34%" | | ||
+ | <center> ADXL345BCCZ </center> | ||
+ | | width="33%" | | ||
+ | <center>2V/3.6V</center> | ||
+ | | width="33%" | | ||
+ | <center>5,54 €</center> | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>Gyroscope+Accéléromètre</center> | ||
+ | | width="34%" | | ||
+ | <center> MPU-6050</center> | ||
+ | | width="33%" | | ||
+ | <center>2.5V/3.6V</center> | ||
+ | | width="33%" | | ||
+ | <center>15,73 €</center> | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>Pression atmosphérique / Altitude</center> | ||
+ | | width="34%" | | ||
+ | <center> MPL3115A2 </center> | ||
+ | | width="33%" | | ||
+ | <center>1.95V/3.6V</center> | ||
+ | | width="33%" | | ||
+ | <center>2,65 €</center> | ||
|} | |} | ||
+ | |||
+ | * Pour minimiser les pertes on cherche a travailler avec une tension d'alimentation la plus faible possible. Je propose de travailler avec une tension d'alimentation de 3,3V <span style="color: green;">(Validé à discuter à la réunion du Merdredi 07/10) | ||
+ | |||
+ | * Le système de récupération d'énergie fonctionnant sur la base d'un mouvement, j'ai choisi l'ensemble des capteur ci dessus qui me semble être adapté à l'intégration dans un système en mouvement. <span style="color: green;">(Validé à discuter à la réunion du Merdredi 07/10) | ||
+ | |||
+ | * Récupération des modules RFduino, prise en main | ||
===Semaine 3 (12/10/2015)=== | ===Semaine 3 (12/10/2015)=== | ||
+ | |||
+ | * Installation des librairies | ||
+ | |||
+ | * Visualisation d'exemples | ||
+ | |||
+ | * Tests d'implantation du code source du projet P14: Aimant intelligent de la session IMA4: 2014/2015 | ||
+ | |||
+ | * Optimisation du code pour la réduction de la consommation d'énergie | ||
+ | |||
+ | * Recherches sur d'autres composants dans l'optique d'une consommation toujours plus faible | ||
+ | |||
+ | {| class="wikitable centre" width="80%" | ||
+ | |+ | ||
+ | |- | ||
+ | ! scope=col | '''Capteurs''' | ||
+ | ! scope=col | Modèle | ||
+ | ! scope=col | Alimentation min/max | ||
+ | ! scope=col | Prix | ||
+ | ! scope=col | Consommation (typ/max) | ||
+ | |- | ||
+ | | width="33%" | | ||
+ | <center>Température</center> | ||
+ | | width="34%" | | ||
+ | <center> STLM20W87F </center> | ||
+ | | width="33%" | | ||
+ | <center>2.4V/5.5V</center> | ||
+ | | width="33%" | | ||
+ | <center> 0,775 € </center> | ||
+ | | width="33%" | | ||
+ | <center> 4.8 μA/8.0 μA </center> | ||
+ | |} | ||
+ | |||
+ | '''Calcul théorique de la consommation énergétique du module BLE + RFD22301''' | ||
+ | |||
+ | Mode "endormi" : ARM CPU Running Current + Output standard drive current = 4 + 0.5 = 4.5mA | ||
+ | |||
+ | Mode "acquisition": ARM CPU Running Current + Output high drive current = 5 + 4 = 9mA | ||
+ | |||
+ | Mode "transmission" : ARM CPU Running Current + Transmit Current + Output standard drive current = 4 + 0.5 + 12 = 16.5mA | ||
+ | |||
+ | http://www.rfduino.com/wp-content/uploads/2014/03/RFD22301.Data_.Sheet_.11.24.13_11.38PM.pdf | ||
+ | |||
+ | |||
+ | '''Code possible du mode "endormi"''' | ||
+ | |||
+ | pinMode(5, INPUT); | ||
+ | RFduino_pinWake(5, HIGH); | ||
+ | |||
+ | |||
+ | RFduino_ULPDelay(INFINITE); | ||
+ | if (RFduino_pinWoke(5)) | ||
+ | { | ||
+ | state = ! state; | ||
+ | RFduinoGZLL.sendToHost(state); | ||
+ | } | ||
+ | |||
+ | http://forum.rfduino.com/index.php?topic=385.0 | ||
+ | |||
===Semaine 4 (19/10/2015)=== | ===Semaine 4 (19/10/2015)=== | ||
+ | |||
+ | * Réunion du 21/10 | ||
+ | |||
+ | * Réalisation de tests | ||
+ | |||
+ | * Ajustement du nombre de capteurs : dans un premier temps on utilisera le capteur de température puis l'accéléromètre | ||
+ | |||
+ | * Discussion sur le bac de test et méthodes de test : résistance de visualisation, chronométrage du temps de transmission, vitesse du processeur | ||
+ | |||
+ | * Réalisation des premiers relevés | ||
+ | |||
===Semaine 5 (26/10/2015)=== | ===Semaine 5 (26/10/2015)=== | ||
+ | |||
+ | * Recherche bibliographique sur les modes d'endormissement du module RFduino | ||
+ | |||
+ | * Essais de codes utilisant un mode d'endormissement plus profond | ||
+ | |||
+ | * Réalisation de graphique de l'énergie utilisée par le module lors de la transmission d'un message par le module BLE. | ||
+ | |||
+ | * Recherches sur des méthodes de programmation pour la diminution de la vitesse processeur | ||
+ | |||
+ | |||
+ | [[Fichier:P32Montage.jpg|250px|thumb|left|'''Montage de test''']] | ||
+ | [[Fichier:P32resultats.jpg|250px|thumb|center|'''Visualisation du courant consommé lors d'envoi toutes les 10ms''']] | ||
+ | |||
+ | * On visualise à l'oscilloscope des pic d'envoi et des pic d'avertissement de la balise BLE, on peut ainsi déduire la puissance nécessaire de chaque action | ||
+ | |||
===Semaine 6 (02/11/2015)=== | ===Semaine 6 (02/11/2015)=== | ||
+ | |||
+ | * Test de diminution de la vitesse processeur | ||
+ | |||
+ | * Réalisation de graphique démontrant l'impact de la réduction de la vitesse processeur sur l'énergie consommée et déduction d'une vitesse optimale pour notre application | ||
+ | |||
+ | * Réunion du 4/11 | ||
+ | |||
+ | Définition d'objectifs : Création d'un fichier excel permettant de caractériser les coûts en énergies de chaque étapes de fonctionnement du système. | ||
+ | |||
+ | * Création d'un environnement de test "normé" ( Pour éviter les variations de mesures on réalise un banc et on applique les mêmes conditions de test pour chaque essai) | ||
+ | |||
+ | * Recherche bibliographique sur la norme BLE : recherche du temps maximum entre deux "avertissements" de la balise BLE | ||
+ | |||
===Semaine 7 (09/11/2015)=== | ===Semaine 7 (09/11/2015)=== | ||
+ | * Explication du principe de communication BLE pour l'exploitation des résultats | ||
+ | |||
+ | [[Fichier:Freq.PNG]] | ||
+ | |||
+ | Nous nous intéressons dans notre projet à "l'observateur". Cet objet peut avoir trois états : stand-by, advertising et en communication. | ||
+ | |||
+ | [[Fichier:Brod2.png]] | ||
+ | |||
+ | Dans le mode "Advertising" le système peut : | ||
+ | |||
+ | - Avertir le système récepteur de la proximité d'un capteur | ||
+ | |||
+ | - Avertir de la présence à un appareil souhaitant ce connecter | ||
+ | |||
+ | - Ce reconnecter de façon asynchrone | ||
+ | |||
===Semaine 8 (16/11/2015)=== | ===Semaine 8 (16/11/2015)=== | ||
+ | |||
+ | Analyse en détail d'une trame BLE | ||
+ | |||
+ | [[Fichier:Com.PNG]] | ||
+ | |||
+ | On constate que pendant la durée de la trame il y a un échange entre les deux objets appairé. On s’intéresse ici uniquement aux actions "Slave Tx". Le but étant d'identifier la durée et le courant consommé par ces actions pour obtenir des valeurs en joules. | ||
+ | |||
+ | [[Fichier:SchemaCom.PNG]] | ||
+ | |||
+ | On constate donc deux phases : | ||
+ | |||
+ | - Advertising event | ||
+ | |||
+ | - Connexion event | ||
+ | |||
+ | Nous allons essayer de retrouver et quantifié l'énergie consommé dans ces deux phases. | ||
+ | |||
===Semaine 9 (23/11/2015)=== | ===Semaine 9 (23/11/2015)=== | ||
+ | |||
+ | Lors de cette semaine nous avons effectué des tests en respectant une procédure de test précise. En effet les valeurs des courants que nous relevons sont très petites aussi chaque variation du montage est susceptible de perturber les valeurs. | ||
+ | |||
+ | |||
+ | [[Fichier:P32Conne.jpg|250px|thumb|left|'''Phase connexion''']] | ||
+ | |||
+ | |||
+ | [[Fichier:Avertissement.jpg|250px|thumb|center|'''Phase Advertising''']] | ||
+ | |||
===Semaine 10 (30/11/2015)=== | ===Semaine 10 (30/11/2015)=== | ||
+ | |||
+ | - On cherche a diminuer légèrement la consommation par des modifications logiciel : | ||
+ | |||
+ | Réduction de la puissance de la radio BLE : Diminution de la portée | ||
+ | |||
+ | Augmentation de la fréquence d'advertising : tant que la fréquence d'advetising est inférieure a cette de relevé des capteurs on s'assure que la donnée envoyée est toujours mise à jour. | ||
+ | |||
+ | [[Fichier:Pwl20-envoi.jpg|250px|thumb|left|'''Avec modification logiciel''']] | ||
+ | |||
+ | |||
+ | [[Fichier:Sans-pwlvl.jpg|250px|thumb|center|'''Sans modification logiciel''']] | ||
+ | |||
+ | |||
+ | - On concentre nos résultats dans un tableau récapitulatif en vue du dimensionnement de la batterie du système | ||
+ | |||
+ | [[Fichier:P32tbresul.PNG]] | ||
+ | |||
===Semaine 11 (07/12/2015)=== | ===Semaine 11 (07/12/2015)=== | ||
+ | |||
+ | Tests d'intégration de plusieurs capteur et observations des modification de la consommation des ADC et de la durée/consommation de la transmission. | ||
+ | |||
+ | Réunion de vérification des tests. | ||
+ | |||
+ | Mise en évidence de la dualité consommation d'énergie - Temps de réponse du système | ||
+ | |||
+ | En effet chaque "Advertisement" consomme une quantité d'énergie nous pouvons gérer l'espacement entre ceux-ci mais plus ce temps serra élevé plus il faudra de temps pour ce connecter à ce périphérique. | ||
+ | |||
+ | * Rédaction d'un rapport de test | ||
+ | |||
+ | * Rédaction du rapport de pré soutenance | ||
+ | |||
===Semaine 12 (14/12/2015)=== | ===Semaine 12 (14/12/2015)=== | ||
+ | |||
+ | * Recherches de solutions pour l'amélioration du modèle | ||
+ | * Recherches Matlab pour effectuer une analyse statistique d’avènements aléatoires sur la liaison | ||
+ | |||
===Semaine 13 (04/01/2016)=== | ===Semaine 13 (04/01/2016)=== | ||
+ | |||
+ | *Amélioration du modèle | ||
+ | |||
+ | L’amélioration du modèle est réalisée en tenant compte des facteurs influant sur la qualité de la transmission. | ||
+ | |||
+ | * Utilisation d'un picoscope : appareil permettant l’acquisition sur ordinateur de plusieurs formes d'ondes. | ||
+ | Ainsi grâce à un pico scope utilisé à l’IRCICA j’ai pu relever de nombreux échantillons nécessaires à une étude statistique des surcoûts en énergie. | ||
+ | |||
+ | [[Fichier:Montagemulti.jpg|250px|thumb|left|'''Montage multi récepteur''']] | ||
+ | |||
===Semaine 14 (11/01/2016)=== | ===Semaine 14 (11/01/2016)=== | ||
+ | |||
+ | * Compilation des résultats | ||
+ | |||
+ | * Exploitation Matlab | ||
+ | |||
+ | [[Fichier:Emistbrecap.PNG]] | ||
+ | |||
===Semaine 15 (18/01/2016)=== | ===Semaine 15 (18/01/2016)=== | ||
+ | |||
+ | Principe de fonctionnement du récupérateur d’énergie | ||
+ | |||
+ | Le récupérateur d’énergie fonctionne grâce à un patch piezo. Ce patch est capable de produire un courant à partir de la vélocité d’une impulsion suivant la formule : | ||
+ | |||
+ | [[Fichier:Equapiezo.PNG]] | ||
+ | |||
+ | [[Fichier:Modelepizo.PNG|250px|thumb|left|'''Modèle simplifié du patch piezo''']] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Pour récupérer de l’énergie il est couplé au système suivant : | ||
+ | |||
+ | [[Fichier:montagepiezo.PNG]] | ||
+ | |||
+ | La puissance du système est définie par : | ||
+ | |||
+ | P=V*im | ||
+ | |||
+ | L’énergie s’exprime alors : | ||
+ | |||
+ | [[Fichier:Equaenergie.PNG]] | ||
+ | |||
+ | L’énergie produite par le système est donc dépendante de la tension d’alimentation V de la constante électromécanique N et du choc produit sur le patch piezo. | ||
+ | Une impulsion sur le capteur piezo est de la forme : | ||
+ | |||
+ | |||
+ | La dérivée par rapport au temps de cette impulsion est donc de la forme : | ||
+ | |||
+ | Il est donc important de « fenêtrer » la tension pour ne récupérer que la partie positive. | ||
+ | Ce fenêtrage ainsi que la fréquence de commutation du hacheur sont assurés par un microcontrôleur. | ||
+ | |||
+ | Dans la suite de notre étude nous ne tiendrons pas compte de la consommation de celui-ci. | ||
+ | |||
===Semaine 16 (25/01/2016)=== | ===Semaine 16 (25/01/2016)=== | ||
+ | |||
+ | * Réflexions sur le prototypage | ||
+ | |||
+ | * Présentation du récupérateur | ||
+ | |||
+ | * Mise en place du banc de test | ||
+ | |||
+ | * Premiers relevés | ||
+ | |||
+ | [[Fichier:Montagepiezo.jpg|250px|thumb|left|'''Montage piezo''']] | ||
+ | [[Fichier:Patchpiezo.jpg|250px|thumb|center|'''Patch piezo''']] | ||
+ | |||
===Semaine 17 (01/02/2016)=== | ===Semaine 17 (01/02/2016)=== | ||
+ | |||
+ | Test de la quantité d’énergie récupérée par un patch piezo | ||
+ | |||
+ | Méthodologie : | ||
+ | |||
+ | Channel rouge : Tension aux bornes du patch piezo. Ici on observe une fenêtre de tension de 4,5ms imposée par le microcontrôleur. | ||
+ | |||
+ | Channel vert : Tension aux bornes de la capacité C1 de 220nF | ||
+ | [[Fichier:Diffpot.png|250px|thumb|center|'''Tension patch piezo / Tension C1''']] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | On constate qu’un choc sur le patch piezo produit une énergie suivant la formule, E = V * N * Δw | ||
+ | N étant une constante électromécanique, on va faire varier V pour évaluer le gain en énergie. Cependant Δw est généré par un choc d’un stylo sur le patch il n’est donc pas uniforme. | ||
+ | Nous utilisons donc une méthode statistique qui consiste à retirer deux extrémums et faire la moyenne de 10 mesures. | ||
+ | |||
+ | Nous obtenons la courbe suivante : | ||
+ | |||
+ | |||
+ | On constate que la courbe n’est pas linéaire comme l’aurait laissé supposer la formule. En effet jusqu’à 30V elle est linéaire croissante suivant l’équation : | ||
+ | |||
+ | Puis après 50V elle devient quadratique décroissante suivant la formule : | ||
+ | |||
+ | En effet la formule E = V * N * Δw néglige les pertes. Celles-ci deviennent plus importantes à chaque augmentation de la tension d’alimentation. | ||
+ | |||
+ | On obtient donc un point de fonctionnement optimal à 50V pour notre système. Ce qui impose que notre système soit équipé d’une source de tension en conséquence. | ||
+ | |||
===Semaine 18 (08/02/2016)=== | ===Semaine 18 (08/02/2016)=== | ||
+ | |||
+ | *Réalisation de nombreux tests pour confirmation de la caractéristique | ||
+ | |||
+ | [[Fichier:P32Courbe.png]] | ||
+ | |||
+ | *Recherches de solution pour la réalisation d'un convertisseur buck pour passer de la tension récupérée ( ~ 50V ) au récupérateur d'énergie puis au module BLE ( 3.3 V ) | ||
+ | |||
+ | *Solution 1 : http://www.ti.com/lit/ds/symlink/tps54060.pdf | ||
+ | |||
+ | *Solution 2: http://fr.farnell.com/stmicroelectronics/l78l33acz/regulateur-3-3v/dp/1467768 | ||
+ | |||
===Semaine 19 (15/02/2016)=== | ===Semaine 19 (15/02/2016)=== | ||
+ | |||
+ | *Rédaction du rapport | ||
+ | |||
===Semaine 20 (22/02/2016)=== | ===Semaine 20 (22/02/2016)=== | ||
+ | *rédaction du rapport | ||
== Annexes == | == Annexes == | ||
− | Consommation du STM32L4 Series http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1580?sc=stm32l4 | + | Consommation du STM32L4 Series : http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1580?sc=stm32l4 |
+ | |||
+ | Réduction de la consommation de l'Arduino : http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/ | ||
+ | |||
+ | Consommation Raspberry : https://www.raspberrypi.org/help/faqs/ | ||
+ | |||
+ | Module BLE : http://redbearlab.com/blemini/ | ||
+ | |||
+ | Accéléromètre : http://fr.farnell.com/analog-devices/adxl345bccz/accelerometre-3-axes-14lga/dp/1853935 | ||
+ | |||
+ | Capteur température : http://fr.farnell.com/analog-devices/tmp36gt9z/capteur-temp-to-92-3/dp/1438760?ost=TMP36GT9Z | ||
+ | ou http://fr.farnell.com/stmicroelectronics/stlm20w87f/capteur-de-temperature-analog/dp/1391131 | ||
+ | |||
+ | Accéléromètre + Gyroscope : http://fr.farnell.com/invensense/mpu-6050/gyroscope-accelero-6-axes-i2c/dp/1864742 | ||
+ | |||
+ | Altimètre : http://fr.farnell.com/freescale-semiconductor/mpl3115a2/pressure-sensor-20-110kpa-8lga/dp/2009084?ost=MPL3115A2&categoryId=700000004367 | ||
+ | |||
+ | Explications norme BLE : chapters.comsoc.org/vancouver/BTLER3.pdf | ||
+ | |||
+ | http://www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | Fichiers MATLAB | ||
+ | |||
+ | [[Fichier:Recuperation.zip]] | ||
+ | |||
+ | [[Fichier:Recuperation3.zip]] | ||
+ | |||
+ | == Rapport de Mi-projet == | ||
+ | |||
+ | |||
+ | [[Fichier:CR_Miprojet_Sultana.pdf ]] | ||
+ | |||
+ | |||
+ | == Rapport projet == | ||
− | + | [[Fichier:Rapport_P32_Sultana.pdf]] |
Version actuelle datée du 24 mars 2016 à 15:03
Sommaire
- 1 Objectif
- 2 Etude préalable
- 3 Organisation générale
- 4 Planning prévisionnel
- 5 Suivi de l'avancement du Projet
- 5.1 Semaine 1 (28/09/2015)
- 5.2 Semaine 2 (05/10/2015)
- 5.3 Semaine 3 (12/10/2015)
- 5.4 Semaine 4 (19/10/2015)
- 5.5 Semaine 5 (26/10/2015)
- 5.6 Semaine 6 (02/11/2015)
- 5.7 Semaine 7 (09/11/2015)
- 5.8 Semaine 8 (16/11/2015)
- 5.9 Semaine 9 (23/11/2015)
- 5.10 Semaine 10 (30/11/2015)
- 5.11 Semaine 11 (07/12/2015)
- 5.12 Semaine 12 (14/12/2015)
- 5.13 Semaine 13 (04/01/2016)
- 5.14 Semaine 14 (11/01/2016)
- 5.15 Semaine 15 (18/01/2016)
- 5.16 Semaine 16 (25/01/2016)
- 5.17 Semaine 17 (01/02/2016)
- 5.18 Semaine 18 (08/02/2016)
- 5.19 Semaine 19 (15/02/2016)
- 5.20 Semaine 20 (22/02/2016)
- 6 Annexes
- 7 Rapport de Mi-projet
- 8 Rapport projet
Objectif
Mon projet consiste à réaliser un système électronique autonome, composé de différents capteurs et capable de recueillir et de transmettre les données mémorisées vers un système centralisé.
Etude préalable
L’énergie est le point de difficulté dans la réalisation de ce projet. Chaque élément devra être choisi non seulement pour ses performances mais également pour sa faible consommation.
Organisation générale
Le système est organisé autour d’une source d’énergie, d’un contrôleur, de capteurs, de mémoire et d’un protocole de communication.
On cherche à minimiser l'énergie consommée par l'ensemble du système.
Chaine de l’énergie
L’énergie pour ce module autonome est constituée de quatre phases importantes :
La récupération de l'énergie dans l'environnement
Il existe de nombreux moyens pour récupérer de l'énergie dans l'environnement. L'objectif est de trouver les sources les plus adaptées à l'environnement de l'application recherchée.
On peut citer:
- La récupération de l'énergie par différence de température
- Les panneaux photovoltaïques
- La récupération de l'énergie des ondes radio
- La Piézoélectricité
Dans ce projet nous utiliserons la piézoélectricité, le module de récupération ayant déjà fait partie d'une étude de IRCICA précédent le projet.
Le stockage de l’énergie
Le choix du système de stockage de l'énergie constitue une partie importante de la réalisation du système. La problématique de cette partie sera de déterminer quel type de stockage nous utiliserons : batterie, super-capacité ou un hybride et de les dimensionner. Il faudra tenir compte des problèmes de décharge partielle influent sur la durée de vie du stockage.
Le management/mise en forme de l’énergie
L'objectif de cette partie est d'étudier la nécessité de la mise en place d'une régulation tout en préservant des contraintes de consommation très faibles.
L'utilisation de l'énergie mise en forme
On cherche à minimiser l'énergie consommée par l'ensemble du système.
Contrôleur
Le microprocesseur : il existe différents types de microprocesseurs. L'objectif est de choisir un support capable de consommer un minimum d'énergie tout en conservant une taille minimale. Nous avons déjà utilisé dans d'autres projets des micro-contrôleurs de type Arduino et Raspberry pie. Ceux-ci ont pour avantage d’être prêts à l'emploi et faciles de prise en main. On peut s’orienter également vers un contrôleur ultra low power comme le STM32L4.
Consommation | Facilité de développement | Miniaturisation | |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Capteurs
On peut imaginer différents types de capteurs :
- Accéléromètre
- Gyroscope
- Pression atmosphérique et altitude
- Température
- GPS
Mémoire
Le système doit être autonome et donc conserver un minimum de mesures pour les cas où la connexion est impossible. La mémoire doit être dimensionnée en fonction du nombre de capteurs, l’intervalle d’acquisition et le temps maximum avant connexion au système centralisé.
Protocole de communication
Un protocole de communication : dans un premier temps, nous nous concentrons sur le protocole BLE (Bluetooth Low Energie). Ce protocole étant standardisé, il nous permettra de recueillir de la documentation et réaliser des tests de consommation rapides.
Planning prévisionnel
Suivi de l'avancement du Projet
Semaine 1 (28/09/2015)
- Rencontre avec Monsieur Boe et Monsieur Giraud
- Présentation du projet
- Recherche documentaire
- Etablissement du cahier des charges
Semaine 2 (05/10/2015)
Recherche documentaire sur la consommation estimée des différents éléments.
Contrôleur | Consommation Active | Consommation Inactive | Prix |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Module BLE | Consommation | Options d'alimentation | Prix |
---|---|---|---|
|
|
|
|
-
Le système Mini Arduino/ BLE Mini me semble être un bon compromis entre facilité d’intégration, consommation d'énergie et miniaturisation du système.(Choix à discuter à la réunion du Merdredi 07/10) - Choix du module RFduino
Capteurs | Modèle | Alimentation min/max | Prix |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Pour minimiser les pertes on cherche a travailler avec une tension d'alimentation la plus faible possible. Je propose de travailler avec une tension d'alimentation de 3,3V (Validé à discuter à la réunion du Merdredi 07/10)
- Le système de récupération d'énergie fonctionnant sur la base d'un mouvement, j'ai choisi l'ensemble des capteur ci dessus qui me semble être adapté à l'intégration dans un système en mouvement. (Validé à discuter à la réunion du Merdredi 07/10)
- Récupération des modules RFduino, prise en main
Semaine 3 (12/10/2015)
- Installation des librairies
- Visualisation d'exemples
- Tests d'implantation du code source du projet P14: Aimant intelligent de la session IMA4: 2014/2015
- Optimisation du code pour la réduction de la consommation d'énergie
- Recherches sur d'autres composants dans l'optique d'une consommation toujours plus faible
Capteurs | Modèle | Alimentation min/max | Prix | Consommation (typ/max) |
---|---|---|---|---|
|
|
|
|
|
Calcul théorique de la consommation énergétique du module BLE + RFD22301
Mode "endormi" : ARM CPU Running Current + Output standard drive current = 4 + 0.5 = 4.5mA
Mode "acquisition": ARM CPU Running Current + Output high drive current = 5 + 4 = 9mA
Mode "transmission" : ARM CPU Running Current + Transmit Current + Output standard drive current = 4 + 0.5 + 12 = 16.5mA
http://www.rfduino.com/wp-content/uploads/2014/03/RFD22301.Data_.Sheet_.11.24.13_11.38PM.pdf
Code possible du mode "endormi"
pinMode(5, INPUT); RFduino_pinWake(5, HIGH); RFduino_ULPDelay(INFINITE); if (RFduino_pinWoke(5)) { state = ! state; RFduinoGZLL.sendToHost(state); }
http://forum.rfduino.com/index.php?topic=385.0
Semaine 4 (19/10/2015)
- Réunion du 21/10
- Réalisation de tests
- Ajustement du nombre de capteurs : dans un premier temps on utilisera le capteur de température puis l'accéléromètre
- Discussion sur le bac de test et méthodes de test : résistance de visualisation, chronométrage du temps de transmission, vitesse du processeur
- Réalisation des premiers relevés
Semaine 5 (26/10/2015)
- Recherche bibliographique sur les modes d'endormissement du module RFduino
- Essais de codes utilisant un mode d'endormissement plus profond
- Réalisation de graphique de l'énergie utilisée par le module lors de la transmission d'un message par le module BLE.
- Recherches sur des méthodes de programmation pour la diminution de la vitesse processeur
- On visualise à l'oscilloscope des pic d'envoi et des pic d'avertissement de la balise BLE, on peut ainsi déduire la puissance nécessaire de chaque action
Semaine 6 (02/11/2015)
- Test de diminution de la vitesse processeur
- Réalisation de graphique démontrant l'impact de la réduction de la vitesse processeur sur l'énergie consommée et déduction d'une vitesse optimale pour notre application
- Réunion du 4/11
Définition d'objectifs : Création d'un fichier excel permettant de caractériser les coûts en énergies de chaque étapes de fonctionnement du système.
- Création d'un environnement de test "normé" ( Pour éviter les variations de mesures on réalise un banc et on applique les mêmes conditions de test pour chaque essai)
- Recherche bibliographique sur la norme BLE : recherche du temps maximum entre deux "avertissements" de la balise BLE
Semaine 7 (09/11/2015)
- Explication du principe de communication BLE pour l'exploitation des résultats
Nous nous intéressons dans notre projet à "l'observateur". Cet objet peut avoir trois états : stand-by, advertising et en communication.
Dans le mode "Advertising" le système peut :
- Avertir le système récepteur de la proximité d'un capteur
- Avertir de la présence à un appareil souhaitant ce connecter
- Ce reconnecter de façon asynchrone
Semaine 8 (16/11/2015)
Analyse en détail d'une trame BLE
On constate que pendant la durée de la trame il y a un échange entre les deux objets appairé. On s’intéresse ici uniquement aux actions "Slave Tx". Le but étant d'identifier la durée et le courant consommé par ces actions pour obtenir des valeurs en joules.
On constate donc deux phases :
- Advertising event
- Connexion event
Nous allons essayer de retrouver et quantifié l'énergie consommé dans ces deux phases.
Semaine 9 (23/11/2015)
Lors de cette semaine nous avons effectué des tests en respectant une procédure de test précise. En effet les valeurs des courants que nous relevons sont très petites aussi chaque variation du montage est susceptible de perturber les valeurs.
Semaine 10 (30/11/2015)
- On cherche a diminuer légèrement la consommation par des modifications logiciel :
Réduction de la puissance de la radio BLE : Diminution de la portée
Augmentation de la fréquence d'advertising : tant que la fréquence d'advetising est inférieure a cette de relevé des capteurs on s'assure que la donnée envoyée est toujours mise à jour.
- On concentre nos résultats dans un tableau récapitulatif en vue du dimensionnement de la batterie du système
Semaine 11 (07/12/2015)
Tests d'intégration de plusieurs capteur et observations des modification de la consommation des ADC et de la durée/consommation de la transmission.
Réunion de vérification des tests.
Mise en évidence de la dualité consommation d'énergie - Temps de réponse du système
En effet chaque "Advertisement" consomme une quantité d'énergie nous pouvons gérer l'espacement entre ceux-ci mais plus ce temps serra élevé plus il faudra de temps pour ce connecter à ce périphérique.
- Rédaction d'un rapport de test
- Rédaction du rapport de pré soutenance
Semaine 12 (14/12/2015)
- Recherches de solutions pour l'amélioration du modèle
- Recherches Matlab pour effectuer une analyse statistique d’avènements aléatoires sur la liaison
Semaine 13 (04/01/2016)
- Amélioration du modèle
L’amélioration du modèle est réalisée en tenant compte des facteurs influant sur la qualité de la transmission.
- Utilisation d'un picoscope : appareil permettant l’acquisition sur ordinateur de plusieurs formes d'ondes.
Ainsi grâce à un pico scope utilisé à l’IRCICA j’ai pu relever de nombreux échantillons nécessaires à une étude statistique des surcoûts en énergie.
Semaine 14 (11/01/2016)
- Compilation des résultats
- Exploitation Matlab
Semaine 15 (18/01/2016)
Principe de fonctionnement du récupérateur d’énergie
Le récupérateur d’énergie fonctionne grâce à un patch piezo. Ce patch est capable de produire un courant à partir de la vélocité d’une impulsion suivant la formule :
Pour récupérer de l’énergie il est couplé au système suivant :
La puissance du système est définie par :
P=V*im
L’énergie s’exprime alors :
L’énergie produite par le système est donc dépendante de la tension d’alimentation V de la constante électromécanique N et du choc produit sur le patch piezo. Une impulsion sur le capteur piezo est de la forme :
La dérivée par rapport au temps de cette impulsion est donc de la forme :
Il est donc important de « fenêtrer » la tension pour ne récupérer que la partie positive. Ce fenêtrage ainsi que la fréquence de commutation du hacheur sont assurés par un microcontrôleur.
Dans la suite de notre étude nous ne tiendrons pas compte de la consommation de celui-ci.
Semaine 16 (25/01/2016)
- Réflexions sur le prototypage
- Présentation du récupérateur
- Mise en place du banc de test
- Premiers relevés
Semaine 17 (01/02/2016)
Test de la quantité d’énergie récupérée par un patch piezo
Méthodologie :
Channel rouge : Tension aux bornes du patch piezo. Ici on observe une fenêtre de tension de 4,5ms imposée par le microcontrôleur.
Channel vert : Tension aux bornes de la capacité C1 de 220nF
On constate qu’un choc sur le patch piezo produit une énergie suivant la formule, E = V * N * Δw
N étant une constante électromécanique, on va faire varier V pour évaluer le gain en énergie. Cependant Δw est généré par un choc d’un stylo sur le patch il n’est donc pas uniforme.
Nous utilisons donc une méthode statistique qui consiste à retirer deux extrémums et faire la moyenne de 10 mesures.
Nous obtenons la courbe suivante :
On constate que la courbe n’est pas linéaire comme l’aurait laissé supposer la formule. En effet jusqu’à 30V elle est linéaire croissante suivant l’équation :
Puis après 50V elle devient quadratique décroissante suivant la formule :
En effet la formule E = V * N * Δw néglige les pertes. Celles-ci deviennent plus importantes à chaque augmentation de la tension d’alimentation.
On obtient donc un point de fonctionnement optimal à 50V pour notre système. Ce qui impose que notre système soit équipé d’une source de tension en conséquence.
Semaine 18 (08/02/2016)
- Réalisation de nombreux tests pour confirmation de la caractéristique
- Recherches de solution pour la réalisation d'un convertisseur buck pour passer de la tension récupérée ( ~ 50V ) au récupérateur d'énergie puis au module BLE ( 3.3 V )
- Solution 1 : http://www.ti.com/lit/ds/symlink/tps54060.pdf
Semaine 19 (15/02/2016)
- Rédaction du rapport
Semaine 20 (22/02/2016)
- rédaction du rapport
Annexes
Consommation du STM32L4 Series : http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1580?sc=stm32l4
Réduction de la consommation de l'Arduino : http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/
Consommation Raspberry : https://www.raspberrypi.org/help/faqs/
Module BLE : http://redbearlab.com/blemini/
Accéléromètre : http://fr.farnell.com/analog-devices/adxl345bccz/accelerometre-3-axes-14lga/dp/1853935
Capteur température : http://fr.farnell.com/analog-devices/tmp36gt9z/capteur-temp-to-92-3/dp/1438760?ost=TMP36GT9Z ou http://fr.farnell.com/stmicroelectronics/stlm20w87f/capteur-de-temperature-analog/dp/1391131
Accéléromètre + Gyroscope : http://fr.farnell.com/invensense/mpu-6050/gyroscope-accelero-6-axes-i2c/dp/1864742
Explications norme BLE : chapters.comsoc.org/vancouver/BTLER3.pdf
http://www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/
Fichiers MATLAB
Rapport de Mi-projet
Fichier:CR Miprojet Sultana.pdf