2) Instrumentation : le langage de programmation Arduino

Mesure et Instrumentation TP n°8 Bilan Arduino [1]
1) Mesure : CAN et capteur
1.1) Caractéristiques d’un CAN :
Un convertisseur analogique / numérique (CAN) est un circuit hybride qui
transforme une grandeur analogique d'entrée E (souvent une tension) en
une valeur numérique N exprimée sur n bits.
Vref+ et Vref- représentent les tensions de références du convertisseur.
Elles permettent de fixer les amplitudes maximales et minimales de la
grandeur d'entrée à convertir.
RESOLUTION : Elle est donnée par la valeur du quantum « q ». La
résolution est la plus petite variation en entrée correspond à un
changement de code en sortie.
PRECISION : C'est l'écart entre la valeur réelle d'entrée et la valeur
discrétisée.
1.2) Caractéristiques d’un Capteur :
Un capteur est un organe de prélèvement d'information qui élabore à partir d'une grandeur physique, une
autre grandeur physique de nature différente (très souvent électrique). Cette grandeur représentative de la
grandeur prélevée est utilisable à des fins de mesure ou de commande.
*
Etendue de mesure : Valeurs extrêmes pouvant être mesurée par le capteur. (Ex : 0°C 100 °C)
Résolution : Plus petite variation de grandeur mesurable par le capteur.
Sensibilité : Variation du signal de sortie par rapport à la variation du signal d'entrée.
Ex : Le capteur de température LM35 a une sensibilité de 10mV / °C.
Précision : Aptitude du capteur à donner une mesure proche de la valeur vraie.
Rapidité : Temps de réaction du capteur. La rapidité est liée à la bande passante.
Exemple de CAN 4 bits :
Mesure et Instrumentation TP n°8 Bilan Arduino [2]
Exercice d’application :
Dans le laboratoire nous disposons de PT100 (capteur de température) et de son
conditionneur afin d’obtenir une tension de sortie adaptée au microcontrôleur.
- grandeur de mesure Température
- gamme de mesure T = 0 à 100 °C
- sortie courant : 4 - 20 mA ; résistance de charge <1000 si VPS = 28 V.
A l’aide d’une résistance de charge RL = 250 Ω, nous transformons la sortie courant en
sortie tension (cf schéma)
1. Déterminer la gamme de sortie tension. Est-elle adaptée à un microcontrôleur ?
2. Exprimer T(Vs)
3. Calculer la sensibilité de l’ensemble PT100+conditionneur. Cet ensemble vous semble-t-il plus
performant qu’un LM35 ?
L’Arduino dispose d’un CAN 10 bits avec une tension de référence de 5 V ou 1,1 V (référence de tension
interne)
4. Quelle est la référence de tension la mieux adaptée à notre PT100 + Conditionneur. Calculer le
quantum q de l’Arduino.
5. A une température T on associe une tension numérisée codée par le nombre entier A.
Que vaut A pour T = 0°C, puis pour T = 100 °C ?
6. Exprimer T(A)
7. Quelle est la résolution de l’ensemble PT100+Conditionneur+Arduino ?
Nous pouvons aussi utiliser une carte SysamSP5 (avec Latis Pro) :
8. Quel est le calibre d’entrée le mieux adapté à notre PT100 + Conditionneur. Calculer alors le
quantum q.
9. Quelle est la résolution de l’ensemble PT100 + Conditionneur + SP5 ?
10. Quelle est la précision de l’ensemble PT100 + Conditionneur + SP5 ?
Mesure et Instrumentation TP n°8 Bilan Arduino [3]
2) Instrumentation : le langage de programmation Arduino
Le langage Arduino est ba sur les langages C/C++.
Avec Arduino, nous devons utiliser un code minimal lorsque l'on crée un programme. Ce code
permet de diviser le programme que nous allons cer en deux grosses parties.
void setup() //fonction d'initialisation de la carte
{ //contenu de l'initialisation
}
void loop() //fonction principale, elle se pète (s’exécute) à l'infini
{ //contenu de votre programme
}
La fonction setup() est appelée au démarrage du programme. Cette fonction est utilisée pour initialiser
les variables, le sens des broches, les librairies utilisées. La fonction setup n'est exécutée qu'une seule
fois, après chaque mise sous tension ou reset (réinitialisation) de la carte Arduino.
Après avoir créé une fonction setup(), qui initialise et fixe les valeurs de démarrage du programme, la
fonction loop () (boucle en anglais) fait exactement ce que son nom suggère et s'exécute en boucle sans
fin, permettant à votre programme de s'exécuter et de pondre. Utiliser cette fonction pour contrôler
activement la carte Arduino.
2.1 La syntaxe de base
Chaque instruction se termine par un « ; » ;
Les accolades « {« et « } » sont les "conteneurs" du code du programme. Elles sont propres
aux fonctions, aux conditions et aux boucles. Les instructions du programme sont écrites à
l'intérieur de ces accolades ;
Les commentaires sont des lignes de texte incluses dans le programme et qui ont pour but de
vous informer vous-même ou les autres de la façon dont le programme fonctionne. Ces lignes
ajoutées sont ignoes par le compilateur. Les commentaires sont précédés des caractères « // »
ou bien encads par « /* » et « */ » ;
Il est formellement interdit de mettre des accents en programmation, sauf dans les commentaires.
Un nombre en binaire doit être précédé de la lettre « B » ;
Un nombre écrit en hexadécimal doit être précédé par les caractères « 0x ».
2.2 Les constantes
Constante Description
HIGH niveau haut logique
LOW niveau bas logique
INPUT entrée
OUTPUT sortie
TRUE vrai
FALSE faux
Mesure et Instrumentation TP n°8 Bilan Arduino [4]
2.3 Les variables
Une variable est un nom que vous donnez à un emplacement en mémoire RAM dans lequel vous
stockerez des données. Une variable estfinie par son nom et son type.
Les variables acceptées par Arduino sont :
Type Tailleenmémoire Typededonnées signe Valeursmin/max
boolean
1 octet(8 bits)
Valeur binaire 0 ou 1
Non signée
0 / 1
int
2 octets(16 bits)
Valeur entière
signée
-32 768 / +32767
long
4 octets(32 bits)
Valeur entière
signée
-2 147 483 648/ +2147483 647
byte
1 octet(8 bits)
Valeur entière
Non signée
0 / +255
unsignedint
2 octets(16 bits)
Valeur entière
Non signée
0 / +65535
word
2 octets(16 bits)
Valeur entière
Non signée
0 / +65535
unsignedlong
4 octets(32 bits)
Valeur entière
Non signée
0/+4294 967 295
float
4 octets(32 bits)
Valeur à virgule
signée
-3.4028235E+38 / +3.4028235E+38
double
4 octets(32 bits)
Valeur à virgule
signée
-3.4028235E+38 / +3.4028235E+38
char
1 octet(8 bits)
Valeur entière Code ASCII
signée
-128 / +127
2.4 Les opérations simples
Les orateurs mathématiques sont:
=
+
addition
-
soustraction
*
multiplication
/
division
%
modulo
Les orateurs de comparaison sont:
==
Egal à
!=
différend de
<
Inférieur à
>
Supérieur à
<=
Inférieur ou égal à
>=
Supérieur ou égal à
Les orateurs booléens
&&
ET booléen
||
OU booléen
!
NON booléen
Mesure et Instrumentation TP n°8 Bilan Arduino [5]
2.5 Les instructions conditionnelles
algorithme
Programmation en langage Arduino
Exemple
Si condition
alors action
fin si
if ( … )
{
;
}
if (x==2)
{
y=x;
}
Si condition
alors action 1
sinon action 2
fin si
if ( … )
{
;
}
else
{
;
}
if (x==2)
{ y=x;
}
else
{ y=x+1;
}
Les accolades peuvent être omises après une instruction if. Dans ce cas, la suite de la ligne (qui se
termine par un point-virgule) devient la seule instruction de la condition. Tous les exemples
suivants sont corrects :
if (x > 120) digitalWrite (LEDpin, HIGH);
if (x > 120)
digitalWrite (LEDpin, HIGH);
if (x > 120){digitalWrite (LEDpin, HIGH); } // toutes ces formes sont correctes
algorithme
Programmation en langage Arduino
Exemple
switch (var) { //début de la structure
case 1 : ... //cas 1
break; //l'instruction break est en option
case 2 : ... //cas 2
break; //l'instruction break est en option
default: //cas par défaut (non-obligatoire)
}
switch (entree){
case 1: a=10;break;
case 2: a=15;break;
case 3: a=20;break;
default: a=0;
}
2.6 Les boucles
algorithme
Programmation en langage Arduino
tant que condition
faire
action
fin tant que
while( … )
{ … ;
}
while (x<10)
{ x++;
}
répéter
action
tant que condition
do
{ … ;
}
while (…) ;
do
{ x++;
}
while (x<10);
Pour indice de Vi à Vf par pas
de x
faire
action
fin pour
for( indice = …; indice <Vi; indice = indice +x)
{ … ;
}
for(i=0;i<10;i++)
{ x=x+2 ;
}
Gestion du temps :
Réalise une pause dans l'exécution du programme pour la durée (en millisecondes ou microsecondes)
indiquée en paramètre.
delay (ms);
delayMicroseconds (us)
1 / 7 100%

2) Instrumentation : le langage de programmation Arduino

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !