Rapport Autonomie FAYE VIVET
Rapport Autonomie FAYE VIVET
Rapport Autonomie FAYE VIVET
Semestre 9
FAYE Michel
VIVET Jayson
Introduction :
1
Ce module d’autonomie des systèmes communicants a été abordé dans le semestre 9 et
nous a permis d’en savoir un peu sur les sources d’énergie autonomes et l’optimisation de
l’énergie consommée par les circuits. Les objectifs de ce mini-projet sont :
- L’étude de l’architecture d’un noeud;
- La réalisation électronique et la programmation du micro-contrôleur
- La modélisation et la mesure de la consommation du dispositif;
- L’optimisation de la consommation du micro-contrôleur et du capteur;
- L’optimisation de la consommation méthode de transmission;
- Le protocole de transmission
Q1 :
2
En consultant la datasheet, nous repérons principalement les composants suivants
Q2 :
On peut retenir le synoptique de base ci-dessous. Dans ce dernier on considère les blocs
les plus importants du capteur communicant, à l’image du régulateur de tension, du micro-
contrôleur et du transceiver.
Q3 :
4:
Dans un premier temps, on crée un projet avec MPLAB et en suivant les étapes décrites sur
le polycopié de TP, on fait la configuration du micro-contrôleur.
Ensuite, on insère un programme permettant de faire clignoter la LED. Ce programme est
fourni sur le polycopié. On a ainsi réussi à vérifier que la carte est bien fonctionnelle.
L'étape suivante a été de mesurer la consommation de la lampe.
Q4.3 :
3
On recueille à l’aide de l’oscilloscope les valeurs de tensions lorsque la LED est allumée et
lorsqu’elle est éteinte. Connaissant la valeur de la résistance aux bornes de laquelle la
tension a été mesurée, nous déduisons le courant. Ainsi, nous pouvons calculer le courant
moyen en utilisant une intégrale et en déduire la puissance moyenne.
Le mode sommeil permet de réaliser une économie d’énergie dans le cas où le micro-
contrôleur ne réalise aucune action. L'instruction permettant d’utiliser ce mode sommeil est :
asm(“sleep”). Le réveil pourra se faire par l’utilisation du watchdog timer. Ce compteur est
activé par un oscillateur RC interne. Lorsque le compteur dépasse sa capacité, un reset est
généré si le micro est en fonctionnement normal.
Pour fixer la période de réveil, il est nécessaire de positionner les bits du registre OPTION
en utilisant les instructions fournies dans le sujet de TP.
On autorise aussi l’utilisation du WatchDog timer dans les registres de configuration avec
l’instruction asm(“CLRWDT”).
Le programme utilisé pour cette partie est donné ci-dessous.
/*
* File: main.c
* Author: E198145A
*
4
* Created on 1 février 2023, 08:54
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial
Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data
EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write
protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code
protection off)
Q5 :
On procède comme précédemment pour mesurer la consommation du micro-contrôleur.
5
Voff = 1.8mV, Von = 22.8mV
Ioff = 0.18mA, Ion = 2.28mA
En intégrant sur le temps, on a :
Imoy = (0.18 + 2.28)/2 = 1.23 mA rapport cyclique de 0.5
La puissance moyenne est alors de Pmoy = U*Imoy = 5 * 1.23 = 6.15mW < 14.5mW
On voit qu’on économise plus de 8mW de puissance, ce qui est quand même très grand vu
les ordres de grandeur utilisés. On peut alors conclure que pour un système communicant, il
est essentiel de mettre ce dernier en mode sommeil lorsqu’il ne fait aucune tâche afin
d’utiliser le moins d’énergie possible et d’avoir une bonne longévité en termes d’énergie.
Q6 : Capteur de température
En regardant la datasheet du capteur de température utilisé, on voit qu’il fonctionne de la
manière suivante. La tension de sortie du LM35 est à 0V à 0° et augmente de 10 mV pour
chaque degrés au-dessus de 0°.
6
Q6 et Q7 :
Ci-dessous nous voyons le code demandé pour ces deux questions.
Nous voyons dans le main que nous initialisons le capteur en appelant la fonction
initAdc sur le channel 0. Cette fonction change les bits du microcontrôleur pour lire la sortie
du capteur et ensuite elle commence la lecture d’une température. La ligne suivante appel
AdcRead qui assigne la valeur lu dans la mémoire du microcontrôleur. Suite à cela nous
n’avons plus besoin de changer ces bits sur le microcontrôleur ainsi pour effectuer les
mesures suivantes nous n’avons plus besoin de initADC et nous appelons la fonction
adcStartConv pour commencer une prise de valeur. Enfin, pour prendre la moyenne de ces
valeurs nous créons un boucle for qui effectue une somme de chaque valeur mesuré qui
sera divisé à la fin par le nombre de mesures.
/*
* File: main.c
* Author: E198145A
*
* Created on 1 février 2023, 08:54
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
7
// PIC16LF876A Configuration Bit Settings
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial
Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data
EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write
protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code
protection off)
void adcStartConv()
{
ADCON0bits.GO_nDONE = 1;
}
int adcRead()
{
//Attend la fin de conversion
while (ADCON0bits.GO_nDONE) {}
8
asm("CLRWDT");
TRISBbits.TRISB0=0;
PORTBbits.RB0=1;
int chan=0;
initAdc(chan);
int temp1=adcRead();
float temp= temp1/1023.0*5.0;
temp=temp*100.0;
float Tempav=temp;
for (int i=0;i<9;i++){
adcStartConv();
temp1=adcRead();
temp=temp1/1023.0*500.0;
Tempav=+temp;
}
Tempav=Tempav/10;
/*while(1)
{
LED = 0;
asm("sleep");
LED = 1;
asm("sleep");
}*/
Q8 :
Après avoir fait la prise de valeur des tensions, similairement aux question précédentes,
nous observons que la tension aux bornes de la résistance est constante et que donc le
courant la traversant l’est aussi:
24.6
I= =2.46 mA
10
9
Conclusion
Ce mini-projet nous a permis de mieux comprendre le cours sur l’autonomie des
systèmes communicants. Il nous a aussi permis entre autres de revoir les bases du langage
C. Nous avons vu comment le mode sommeil peutaider à économiser de l’énergie pour que
l’appareil dure le plus longtemps possible.
10