0% ont trouvé ce document utile (0 vote)
94 vues6 pages

EX Embarqué

Le document présente un examen d'électronique embarquée pour des étudiants en génie électrique, comprenant deux exercices principaux. Le premier exercice concerne le générateur d'onde carrée LTC6903 et son interface avec une carte Arduino, tandis que le second exercice traite de la conception d'un thermomètre numérique utilisant divers composants électroniques. Les étudiants doivent effectuer des calculs, compléter des programmes et répondre à des questions sur le fonctionnement des circuits et des protocoles de communication.

Transféré par

GHALIA
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)
94 vues6 pages

EX Embarqué

Le document présente un examen d'électronique embarquée pour des étudiants en génie électrique, comprenant deux exercices principaux. Le premier exercice concerne le générateur d'onde carrée LTC6903 et son interface avec une carte Arduino, tandis que le second exercice traite de la conception d'un thermomètre numérique utilisant divers composants électroniques. Les étudiants doivent effectuer des calculs, compléter des programmes et répondre à des questions sur le fonctionnement des circuits et des protocoles de communication.

Transféré par

GHALIA
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

Institut Supérieur des Etudes Technologiques Année universitaire : 2022/2023

Département de Génie Electrique Semestre : 2


Licence appliquée en Automatismes et
Informatique Industrielle Date : 6 Juin 2023

Durée : 1h 30 mn
Examen
Matière : Electronique Embarquée Classe : AII2
Documents : Non autorisés Enseignants : A. HMIDENE & L. TOUIL Nb. Pages : 6

Exercice N° 1 (6 points : 1 – 1 – 0,5 – 3,5)


Le LTC6903 est un générateur d’onde carrée fournissant une fréquence de précision de 1kHz à 68MHz,
réglée via un port série SPI. La figure 1 illustre la connexion de l’LTC6903 avec la carte Arduino.
Arduino Uno ̅̅̅̅̅̅
𝑺𝑬𝑵 (Serial Port Enable) : Active la
VDD transaction série lorsqu’elle est portée à
l’état bas.
OE
MISO 𝑶𝑬 (Output Enable) : Valide les sorties 𝐶𝐿𝐾
CLK SDI MOSI et ̅̅̅̅̅̅
𝐶𝐿𝐾 .
SCK SCK 𝑪𝑳𝑲 : Sotie d’onde carrée principale.
CLK SEN SS ̅̅̅̅̅̅ : Sorties d’onde carrée auxiliaire
𝑪𝑳𝑲
(𝐶𝐿𝐾 + 180°).
LTC6903
Figure 1
Le LTC6903 est doté d'une boucle de rétroaction propriétaire qui linéarise la relation entre le réglage
de la commande numérique et la fréquence, ce qui donne l’équation de réglage de fréquence suivante :
2078
𝑓 = 2𝑂𝐶𝑇 ∙ 𝑓 𝑒𝑛 𝐻𝑧
𝐷𝐴𝐶
2−
1024
Où 𝐷𝐴𝐶 est une valeurs entière codée sur 10bits (0 à 1023) et 𝑂𝐶𝑇 est une valeur entière codée sur
4bits (0 à 15).
Pour une fréquence donnée, les équations suivantes permettent de déterminer les valeurs de 𝑂𝐶𝑇 et
𝐷𝐴𝐶 (se limiter à la partie entière):
𝑓
𝑂𝐶𝑇 = 3.322 ∙ log ( ) (1)
1039
2078 ∙ 2(10+𝑂𝐶𝑇)
𝐷𝐴𝐶 = 2048 − (2)
𝑓
Transfert des données au circuit LTC6903
Un transfert de données au registre du port série est composé de16 bits étiquetés de D15 à D0. Lorsque
la ligne ̅̅̅̅̅̅
𝑆𝐸𝑁 est à l’état BAS, les données série présentées sur l'entrée SDI sont cadencées sur les fronts
montants de SCK, comme indiqué dans le chronogramme suivant :

1
Description du registre du port série :
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
OCT3 OCT2 OCT1 OCT0 DAC9 DAC8 DAC7 DAC6 DAC5 DAC4 DAC3 DAC2 DAC1 DAC0 CNF1 CNF0

𝑂𝐶𝑇[3 : 0] et 𝐷𝐴𝐶[9 : 0] : Valeurs numériques obtenues à partir des équations (1) et (2).
𝐶𝑁𝐹[1: 0] : Configuration des sorties 𝐶𝐿𝐾 et ̅̅̅̅̅̅
𝐶𝐿𝐾 selon le tableau suivant :

On veut générer sur la sortie 𝐶𝐿𝐾 un signal carré de fréquence 100kHz.


1. Calculer les valeurs de 𝑂𝐶𝑇 et 𝐷𝐴𝐶.
2. Donner alors la valeur à envoyer au registre du port série (Présenter la valeur en binaire et en
Hexadécimale).
3. Quel est le mode de fonctionnement du module SPI ?
4. Compléter le programme proposé (Ecrire sur vos copies les instructions à compléter uniquement).

#include <SPI.h>
int spi_ss = 10;
void setup()
{
pinMode(spi_ss, OUTPUT);
digitalWrite(spi_ss, HIGH);

// Exercice N°1 – Question 4


…………………………………………………………………………………………
[Link](………………………………………………);
[Link](SPI_CLOCK_DIV2);
[Link](……………………………………………………);
digitalWrite(spi_ss, …………………………………………);
…………………………………………………………………………………………
…………………………………………………………………………………………
digitalWrite(spi_ss, …………………………………………);
}
void loop()
{
}

2
Exercice N°2 (14 points)
On désire réaliser un thermomètre numérique à base d’une carte Arduino Uno. Le système comporte
un capteur de température TC1047A, un amplificateur à gain programmable MCP6S21, un
convertisseur analogique numérique LTC2451 et une carte Arduino Uno. La valeur numérique est
envoyée à un PC via une liaison série RS232. (Figure 2).
5V
0,2V
?
MCP6S21 Arduino Uno
2,2k
VRef
VRef+
Vout SDA SDA TXD
TC1047A VI VO VIN
SCL SCL RXD
V Ref-
SDI SCK CS SS SCK MOSI
LTC2451

Figure 2

Le TC1047A est un capteur de température linéaire à sortie tension, conçu pour fonctionner sur une
plage de −40°𝐶 à 125°𝐶, avec une pente de 10 𝑚𝑉/°𝐶. Le TC1047A fournit une tension de 0,1𝑉 à
−40°𝐶.
La sortie du TC1047A est connectée à l’entrée du circuit MCP6S21. Ce circuit est un amplificateur
analogique à gain programmable. La tension de sortie 𝑉𝑂 de l’amplificateur est régit par l’équation
suivante :
𝑉𝑂 = 𝐺 ∙ 𝑉𝐼 − (𝐺 − 1)𝑉𝑟𝑒𝑓
Avec :
𝑉𝐼 : Tension d’entrée,
𝑉𝑟𝑒𝑓 : Tension de référence (0 ≤ 𝑉𝑟𝑒𝑓 ≤ 𝑉𝐷𝐷 = 5𝑉),
𝐺 : Gain programmable via le port série SPI. Il peut être fixé à l’une des valeurs suivantes : 1, 2, 4, 5,
8, 10, 16 ou 32.
La séquence de programmation du gain via le port SPI est donnée par le chronogramme suivant :

Figure 3

On admet que dans l’octet instruction, M2 = 0, M1 = 1 et M0 = 0,


Les bits G2, G1 et G0 de l’octet data fixent le gain de l’amplificateur selon le tableau suivant :

3
G2 G1 G0 Valeur du Gain (G)
0 0 0 1
0 0 1 2
0 1 0 4
0 1 1 5
1 0 0 8
1 0 1 10
1 1 0 16
1 1 1 32

1. Exprimer la tension de sortie du capteur 𝑉𝑜𝑢𝑡 en fonction de la température 𝜃 (𝑉𝑜𝑢𝑡 en 𝑉𝑜𝑙𝑡 et 𝜃 en


°𝐶).
2. Rappeler la valeur de tension minimale fournie par le capteur et calculer sa valeur maximale.
3. La tension délivrée par le capteur est amplifiée par le MCP6S31. En prenant un gain 𝐺 = 2 et une
tension de référence 𝑉𝑟𝑒𝑓 = 0,2𝑉. Calculer les valeurs de tension minimale et maximale à la sortie
du MCP6S21.
4. En se référant au chronogramme de la figure 3.
a. Déterminer le mode de fonctionnement SPI.
b. Déterminer les valeurs de l’octet instruction et de l’octet data.
5. Compléter le programme proposé à la page 5 (Ecrire sur vos copies les instructions à compléter
uniquement).

Le LTC2451 est un convertisseur analogique-numérique 16 bits, à sortie série compatible I2C. Ce


circuit dispose de deux broches de références externes 𝑉𝑟𝑒𝑓+ et 𝑉𝑟𝑒𝑓− . Dans le schéma de la figure 2 la
broche 𝑉𝑟𝑒𝑓− est connectée à la masse.
6. Déterminer la valeur de la tension de référence 𝑉𝑟𝑒𝑓+ afin de tirer le maximum de précision.
7. Calculer alors le pas de quantification 𝑞.
Soit 𝐷 le résultat de conversion analogique numérique de l’LTC2451.
8. Exprimer 𝐷 en fonction de 𝑉𝑂 (𝑉𝑂 : sortie de l’amplificateur MCP6S21).
9. Déterminer alors l’expression la température 𝜃 en fonction de 𝐷.
La carte Arduino lit le résultat de conversion analogique numérique de façon périodique via le bus I2C.
La Figure 4 illustre la trame de lecture.

Adresse (7 bits) R/W


S 0010100 1 A Octet haut A Octet bas A P

Du maître vers l esclave A : ACK A : NACK


De l esclave vers le maître S : START P : STOP

Figure 4

10. Compléter le programme proposé à la page 5 (Ecrire sur vos copies les instructions à compléter
uniquement).
4
#include <SPI.h>
#include <Wire.h>
int LTC2451Adr = 0x14;
int spi_ss = 10;
float Theta;

void setup()
{
pinMode(spi_ss, OUTPUT);
digitalWrite(spi_ss, HIGH);
[Link](9600);
[Link]() ;
[Link]();
[Link](MSBFIRST);
[Link](SPI_CLOCK_DIV4);

// Exercice N°2 – Question 5


[Link](…………………………………………………);
digitalWrite(spi_ss, ………………………………………………);
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
digitalWrite(spi_ss, …………………………………………….);
}

// Exercice N°2 – Question 10

float Read_LTC2451(int Adr)


{ byte dataH, dataL;
unsigned int D; // Valeur numérique sur 16 bits
float temp; // valeur de la température
………………………………………………………………………………………………………………
if([Link]() > 0)
{
………………………………………………………………………………
………………………………………………………………………………
}
D = …………………………………………………………………………
temp = ………………………………*(float)D - …………………………;
return(temp);
}
void loop()
{
Theta = Read_LTC2451(LTC2451Adr);
[Link]("Temperature : ");
[Link](Theta);
delay(1000);
}

5
ANNEXE
I2C
[Link]() : configure le module I2C en mode maître
[Link](Adresse) : Génère la condition de start et transmet l’adresse de l’esclave en mode écriture
[Link](Valeur) : Ecriture dans le buffer
[Link]( ) : Envoie du contenu du buffer et termine la session de transmission
[Link](Adresse,Nombre) : permet au maître de demander des données à un esclave.
nombre = [Link]() : permet de connaître le nombre d’octets disponibles à lecture après l’appel de la
fonction « [Link] ».
donnee = [Link]() : permet au maître de lire un octet transmis par l’esclave après une fonction
«[Link] ».

SPI
Mode SPI Conditions Front d’envoi Front de lecture
0 CPOL=0, CPHA=0 descendant montant
1 CPOL=0, CPHA=1 montant descendant
2 CPOL=1, CPHA=0 montant descendant
3 CPOL=1, CPHA=1 descendant montant

[Link](dataOrder) : définie le sens de transfert, c-à-d, le bit à transférer en premier MSB ou LSB. Ce
paramètre peut être : MSBFIRST ou LSBFIRST.
[Link](speedMaximun) : l’horloge de bus SPI est dérivée de la fréquence système. La fréquence du
système peut être divisée par : 2, 4, 8, 16, 32, 64 ou 128. Le paramètres speedMaximun peut être :
SPI_CLOCK_DIV2, SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16, SPI_CLOCK_DIV32,
SPI_CLOCK_DIV64 ou SPI_CLOCK_DIV128.
[Link](dataMode) : définie le mode SPI. Ce paramètre peut être : SPI_MODE0, SPI_MODE1,
SPI_MODE2, ou SPI_MODE3.
[Link]() : Initialise le bus SPI :
- SCK, MOSI et SS en sortie,
- SCK et MOSI au niveau bas,
- SS au niveau haut.
[Link]() : Désactive le bus SPI (en laissant les modes de broche inchangés).
receiveVal = [Link](val) : Le transfert SPI est basé sur un envoi et une réception simultanée : la donnée
reçue est renvoyée dans receiveVal.

Vous aimerez peut-être aussi