Vous êtes sur la page 1sur 23

Travaux pratiques: microcontoleur arduino

• Voir polycopié Orsay TP Arduino pour le hardware


• Voir polycopié premiers pas pour la programmation
• Toutes les fonctions de programmation:
• https://www.arduino.cc/reference/en/
• Des tutoriaux sur la programmation:
• https://www.arduino.cc/en/Tutorial/HomePage
• TP1 : mesure de température d’une thermistance
• Syntaxe arduino + labview.
• TP2 : régulation du flux moyen d’une diode
• Syntaxe aruino + labview
Arduino Uno
Cablage
Principe de fonctionnement
• 1) écrire le programme en langage Arduino (proche du C)
• 2) téléverser le programme dans la mémoire du microcontroleur sans
oublier la communication par port série du microcontroleur
• 3) utiliser labview ou scilab pour l’interrogation du port série et pour le
traitement des données.
Programme arduino d acquisition voie
analogique A0 et ecriture sur port série
• // communication par port série
• // acquisition de tension analogique A0

• void setup(){
• Serial.begin(9600);
• }

• void loop(){
• int inputA0=analogRead(A0);
• Serial.println(inputA0);
• delayMicroseconds(1000);
• }
Algorithme du programme Scilab de lecture
du port série et d’affichage numérique
Ouverture du port série; initialisation de la chaine de caractères; lancement du compteur
Tant que le compteurest inférieur a un seuil, répéter:
{ mesure du nombre d’octets sur le port série
Si ce nombre d octets est non nul alors lire ces octets du port série et les concaténer à la chaine de caractères
Lecture du compteur}
Fermer le port série
Soit
n=length(buf) lig=1; tamp=""; M=zeros(1,1); i=1;
Répéter du 1er au dernier caractère de la chaine de caractères:
{
Si le caractère numéro i code un chiffre compris entre 0 et 9
alors {concatener le caractère à la chaine tamp}
Si ((i>1 et le caractère n° i ne code pas un et si le caractère n° i-1 code un chiffre)ou i=n)
alors {traduire la chaine en nombre décimal et l’enregistrer dans la cas n° lig d’un tableau.
Incrémenter lig de 1 unité
Initialiser la chaine tamp a une chaine vide}
}
Supprimer les 1ere et dernière cases du tableau de valeurs puis le tracer.
csvWrite(num,'D:\OneDrive - LECNAM\COURS BRIAUDEAU\MECAVENIR FIP SNPI\Cours integration capteurs\data.csv',";",",");
Programme Scilab de lecture du port série et
d’affichage numérique
h=openserial(5,"9600,n,8,1"); buf=""; tic();t=toc();
while (t<=10)
[q1,flags]=serialstatus(h);
if (q1(1)~=0)
buf=buf+readserial(h,q1(1));
end;
t=toc();
end;
closeserial(h);
n=length(buf); lig=1; tamp=""; M=zeros(1,1);
for i=1:1:n
if (isdigit(part(buf,i)))
tamp=tamp+part(buf,i);
end;
if (((i>1)&(~isdigit(part(buf,i)))&(isdigit(part(buf,i-1))))|(i==n))
M(lig,1)=strtod(tamp); lig=lig+1; tamp="";
end;
end;
m=length(M(:,1)); temps=(0:1:m-3)'; M=M(2:m-1,1); plot(temps,M);
csvWrite(M,'D:\data.csv',";",",");
Programme labview de lecture du port série
et d’affichage déroulant
Acquisition affichage labview
TP mesure de température
• Matériel: carte arduino Uno + thermistance + capteur LM35 + cables + résistances
+ cable usb + ordinateur avec les logiciels labview et aduino installés
• 1) cabler la thermistance en série avec une résistance équivalente
• NB: une des deux bornes de la thermistance est a la masse de la carte arduino
• 2) mesurer la tension aux bornes de la thermistance (une des bornes avec une
entrée analogique du module arduino cablée
• 3) écrire un programme arduino de mesure de la tension analogique et d’écriture
du résultat sur le port série
• 4) écrire un programme (labview ou scilab) de lecture du port série répétée
• 5) acquérir des mesures aussi rapides que possible sur 1 min max (60 000
échantillons à 1 kHz). Calculer la valeur moyenne de la tension ainsi que son écart
type.
• 8) chauffer la thermistance en la pincant délicatement entre deux doigts puis
relacher brusquement. Analyser la décroissance exponentielle par labview pour
estimer le temps de réponse de la sonde
TP mesure de température
• 9) Montrer la relation entre la tension mesurée 𝑈𝑀 (𝑡)en fonction de
la tension d’alimentation, de la résistance 𝑅0 et de la thermistance
𝑅(𝑇)
• 10) étalonner la thermistance avec la sonde étalon LM35
• 11) évaluer l’incertitude de mesure de tension liée à la résolution de
tension du convertisseur analogique numérique de la carte Arduino
• 11) évaluer l’incertitude de mesure de température de la sonde
étalon de température TI-LM35
• 12) évaluer l’incertitude de mesure de température de la
thermistance CTN
• 13) déterminer le temps de réponse de la thermistance CTN
• 14) déterminer le temps de réponse de la sonde TI-LM35
Auto-échauffement
• L’effet joule dans la thermistance l’échauffe :
• Autour de 𝑇𝑒 = 25°𝐶 : 𝑅 𝑇𝑒 = 𝑅𝑒 et 𝑈𝑀 𝑇𝑒 = 𝑈𝑒
𝑈𝑒2
• 𝜙𝐽 = 𝑅𝑒 . 𝐼 2 =
𝑅𝑒
𝜙𝐽
• Δ𝑇 =

𝛽 1 1 3
• Pour une tension 𝑈0 d’alimentation : Δ𝑈0 = − . . . 𝑈 0
𝑇𝑒2 1+𝑅0 3 𝑅𝑒 .ℎ
𝑅𝑒
𝛽 1 1
• Pour une tension 𝑈1 d’alimentation : Δ𝑈1 = − 2. 𝑅 3. . 𝑈13
𝑇𝑒 1+ 0 𝑅𝑒 .ℎ
𝑅𝑒
𝛽 1 1
• Δ𝑈1 − Δ𝑈0 = − 2. 𝑅 3. . 𝑈13 − 𝑈03
𝑇𝑒 1+ 0 𝑅𝑒 .ℎ
𝑅𝑒
TP mesure de température
• 15) alimenter la thermistance avec 3,5V puis 5V. Etudier son auto-
échauffement. En déduire h le coefficient d’échange convectif avec
l’air.
Montage électrique du capteur de
température LM35DZ de Texas Instrument
Montage électrique du capteur de
température LM35
Montage électrique du capteur de
température LM35
Thermistance ctn
Thermistance
La courbe d’étalonnage de la thermistance est non linéaire:
1 1
𝛽 𝑇 −𝑇
𝑅 𝑇 ≅ 𝑅𝑒 .𝑒 𝑒

avec T et Te des températures exprimées en kelvin (𝑇𝑒 = 298,15𝐾 𝑜𝑢 25°𝐶).

Avec 𝑅 𝑇𝑒 ≅ 𝑅𝑒

𝜕𝑅 𝑇 𝛽 .𝑅𝑒
La sensibilité à 25°C s’écrit : =− . .≈ 200 Ω. 𝐾 −1
𝜕𝑇 𝑇𝑒 𝑇𝑒 𝑇𝑒

𝑅 𝑇
ln( 𝑅 )
𝑒
Son coefficient 𝛽 d’étalonnage s’écrit : 𝛽 = 1 1

𝑇 𝑇𝑒
Montage potentiométrique d’une thermistance
6 cables
1 résistance R0
1 thermistance R(T) R0
1 module arduino uno R(T)
1 plaque de test

𝑇𝑒 =25°C 𝑈𝑀 𝑇𝑒 = 𝑈𝑒

𝑑𝑈𝑀 (𝑇) 𝛽 𝑈𝑒2


= − 2.
𝑑𝑇 𝑇𝑒
𝑇𝑒 𝑈0

+GNDV Analog Input0 +5V


Mesure du temps de réponse de l’ensemble LED +
capteur photorésistif sans régulation (en boucle
ouverte)
• Principe : la mesure du temps de réponse d’un circuit passe-bas peut
être réalisé avec sa réponse à un échelon
Un système du 1er ordre peut être schématisé comme suit :

Système
Signal d’entrée e(t) Signal de sortie s(t)
du 1er ordre

Le signal de sortie est relié au signal d’entrée par la relation différentielle suivante :

𝑑𝑠(𝑡)
𝑒 𝑡 = 𝑠 𝑡 + 𝜏.
𝑑𝑡
Capteur du 1er ordre : réponse à un échelon
Un capteur du 1er ordre Signal d’entrée Capteur Signal de sortie
peut être schématisé comme suit : e(t) du 1er ordre s(t)

Le signal de sortie est relié au signal d’entrée 𝑑𝑠(𝑡)


par la relation différentielle suivante 𝑒 𝑡 = 𝑠 𝑡 + 𝜏.
𝑑𝑡
entièrement caractérisé par le temps de réponse  :
Soit e(t) un échelon d’équation : 𝑒 𝑡 = 0 𝑠𝑖 𝑡 < 0 𝑒𝑡 [𝑒 𝑡 = 𝑒0 𝑠𝑖 𝑡 ≥ 0]
Réponse à un échelon
La réponse du capteur 1,2

à cet échelon est : 1

0,8
𝑡
𝑡
s/e0

−𝜏 0,6
𝑠 𝑡 = 𝑠(𝑡 = +∞). (1 − 𝑒 ) 𝜏=−
0,4 𝑠 𝑡
𝑙𝑛 1 − 𝑒
𝑠 𝑡 = +∞ = 𝑠0 0,2
0
0
0 0,5 1 1,5 2 2,5 3 3,5 4
t/taux
Capteur du 1er ordre : réponse à un échelon
Réponse à un échelon
t/taux
0 0,5 1 1,5 2 2,5 3 3,5 4
Méthode graphique: 0

ln(1-s(t)/s(inf))=-t/tau
-0,5
-1
𝑠 𝑡 𝑡 -1,5
𝑙𝑛 1 − =−
𝑠 𝑡 = +∞ 𝜏 -2
-2,5
-3
-3,5
-4
-4,5

Problème : on n’a jamais accès à 𝑠 𝑡 = +∞ ! Comment s’affranchir de 𝑠 𝑡 = +∞ ?


Idée : par dérivation
𝑑𝑠(𝑡) 𝑠(𝑡=+∞) − 𝑡
𝑑𝑡
= 𝜏
𝑒 𝜏 𝑑2 𝑠(𝑡)
𝑑𝑠(𝑡) 𝑑𝑦 2 1
𝑦 = 𝑙𝑛 = 𝑑𝑡 = −
𝑑2 𝑠(𝑡) 𝑠(𝑡=+∞) − 𝑡 𝑑𝑡 𝑑𝑡 𝑑𝑠(𝑡) 𝜏
=- 𝑒 𝜏
𝑑𝑡 2 𝜏2 𝑑𝑡
Rappel sur l’échantillonnage
L’échantillonnage discrétise les variables 𝑡 de temps et s de tension :

𝑡 → 𝑡𝑖 = 𝑡𝑖−1 + 𝑇𝑒 s(t)
100%
𝑠(𝑡) → 𝑠𝑖
63%
𝑑𝑠(𝑡) 𝑠𝑖 − 𝑠𝑖−1
→ Si
𝑑𝑡 𝑇𝑒 Si-1 t
0%
𝑠𝑖 − 𝑠𝑖−1 𝑠𝑖−1 − 𝑠𝑖−2 ti-1 ti 
𝑑 2 𝑠(𝑡) 𝑇𝑒 − 𝑇𝑒 𝑠𝑖 − 2𝑠𝑖−1 + 𝑠𝑖−2
→ = Te
𝑑𝑡 2 𝑇𝑒 𝑇𝑒2

𝑇𝑒 𝑠𝑖 − 𝑠𝑖−2
Calcul de i=3 à i=n 𝜏𝑖 = − .
2 𝑠𝑖 − 2. 𝑠𝑖−1 + 𝑠𝑖−2
𝑛
1
Moyennage <𝜏 >= . ෍ 𝜏𝑖
𝑛−2
𝑖=3

Vous aimerez peut-être aussi