0% ont trouvé ce document utile (0 vote)
53 vues4 pages

ExamenTP INFOG1

Transféré par

yahyaoui.rania2001
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
53 vues4 pages

ExamenTP INFOG1

Transféré par

yahyaoui.rania2001
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ministère de l’Enseignement Supérieur et de la Recherche

Scientifique

Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication

Classe : Examen TP Nombre de pages : 3


M1_Infotronique
Matière : Informatique embarquée Date : 07/12/2023 Durée : 1H

Nom: Enseignante: Rais Ghofran


Prénom:

Gestion température ambiante


Présentation

On souhaite afficher la température ambiante, sur un afficheur LCD, en utilisant un capteur


analogique «LM35 » et un convertisseur analogique numérique du microcontrôleur STM32F4.
Le capteur LM35 fournit à sa sortie une tension proportionnelle à la température
(10mV/°C), soit T (°C)= (V (mV))/10
Le microcontrôleur STM32F4 admet trois convertisseur analogique/numérique de 12- bit
permettant de convertir un signal analogique entre 0 - 3.3V en une valeur numérique.
En appliquant la règle de 3 on obtient :
T (°C) = (V_num*330)/4096

Le but de cette application est de développer une application sur Coocox CoIDE qui assure
l’acquisition une tension proportionnelle à la température à partir un capteur LM35, la conversion
de cette valeur à travers le convertisseur analogique numérique du microcontrôleur ADC2 et la
visualisation du résultat sur un afficheur LCD.
Le signal analogique sorti de l’LM35 sera branché sur l’entrée analogique AN6 (PA6) du
microcontrôleur.

1) Créer un nouveau projet avec un model Chip et choisir STM32F407VG.


2) Ajouter le Driver « ADC » dans votre projet.
3) Inclure le Driver « lcd » dans votre projet.
4) Afin de configurer le convertisseur analogique numérique ADC, créer les différentes fonctions
suivantes dans le fichier « adc.c ».
a. Créer une fonction «RCC_config » pour la configuration de l’horloge et le bus du multiplexage.
void RCC_Config (void)
{
RCC_AHBxPeriphClockCmd(RCC_AHBxPeriph_GPIOx, ENABLE);
RCC_APBxPeriphClockCmd(RCC_APBxPeriph_ADCx, ENABLE);
}
b. Créer une fonction « GPIO_config » pour la configuration des entrées/sorties.
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_x;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_x;
GPIO_Init(GPIOx, &GPIO_InitStructure);
}
c. Créer une fonction « ADC_config » pour la configuration de l’ADC2.
void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Resolution = ADC_Resolution_xb;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADCx, &ADC_InitStructure);
ADC_RegularChannelConfig(ADCx, ADC_Channel_x, 1, ADC_SampleTime_xCycles);
ADC_Cmd(ADCx, ENABLE);
}
5) Dans le programme principal « main.c », créer les fonctions suivantes.
a. Créer une fonction «Get_ADCValue» qui retourne la valeur de conversion.
int Get_ADCValue(void)
{
ADC_SoftwareStartConv(ADCx); //Démarrer la conversion
while(ADC_GetFlagStatus(ADCx, ADC_FLAG_EOC)==RESET);//Procéder la conversion
return ADC_GetConversionValue(ADCx);//retourner le résultat de la conversion
}
b. Créer une fonction «mesure_voltage» qui retourne la valeur de conversion.
void mesure_voltage(void)
{
float V_num;
char msg[100]
V_num = Get_ADCValue();
Temp = (V_num /4096)*330;
sprintf(msg, "Temperature=%1.3fV", Temp);
LCD_Goto(2, 1);
LCD_Puts(msg);
DelayMs(100);
}
6) Ajouter la configuration nécessaire de l’affichage LCD et compléter votre programme.
LCD_InitTypeDef LCD_InitStruct;
LCD_InitStruct.CharacterFont = LCD_CharacterFont_5xXDots;
LCD_InitStruct.DataLength = LCD_DataLength_XBit;
LCD_InitStruct.LineNumber = LCD_LineNumber_XLines;
LCD_Init(&LCD_InitStruct);
7) Compiler votre programme puis tester le sous ISIS suivant le schéma ci-dessous.

Vous aimerez peut-être aussi