3. LES FONDAMENTALES DU MCU
Les MCUs sont à nos jours aussi fréquents dans les domaines tels
que: les télécommunications (téléphones mobiles, modem,...),
industriel (Automates programmables, imprimantes 3D,…),
automobile (tableau de bord, contrôle des sièges,…), domotique
(micro-ondes, machines à café,…), militaire (sonde, robots,
lanceurs des fusées,...), etc
1. OÙ EN SOMMES-NOUSAVEC LES MCUs?
Ils ont atteint une fréquente utilisation en 2014 avec 18,6 milliards
d’unités vendues et une croissance de 12% l’année dernière (2015)
(20.832.000.000 d’unités vendues) selon IC Insights. Ces bêtes
programmables deviennent de plus en plus des autoroutes pour
atteindre nos villes (targets) en pleine révolution.
4. LES FONDAMENTALES DU MCU
Le microcontrôleur (µC ou MCU pour MicroController Unit en
anglais) est un circuit programmable capable d’exécuter un
programme et possédant des circuits d’interface intégrés (entrées-
sorties) avec le monde extérieur. En d’autre terme, le MCU est un
mini-ordinateur sans clavier ni écran mais capable d’interagir avec
le monde extérieur grâce à ses interfaces d’entrées-sorties
intégrées.
2. QUID MCU?
Apparu vers les années 1970 dont Intel fut le premier, ce dernier
peut avoir 6 à 200 pattes pour interagir avec le monde extérieur (y
compris celles d’alimentation) et généralement de 4-bits (pour sa
première apparition et en disparition), 8-bits (le plus répandu), 16-
bits et 32-bits (de plus en plus fréquents à nos jours).
5. LES FONDAMENTALES DU MCU
Un système à MCU est un système ayant en global un interfaçage
d’entrée (une unité d’acquisition), une unité de traitement et un
interfaçage de sortie (une unité de sortie).
3. STRUCTURE D’UN SYSTÈME A MCU
INTERFACAGE
D’ENTREE
UNITE
CENTRALE DE
TRAITEMENT
INTERFACAGE
DE SORTIE
UNITE DETRAITEMENT ELECTRONIQUE
MCU
Capteur/
Données
en sortie
Actionneur/
Données en
sortie
6. LES FONDAMENTALES DU MCU
3. STRUCTURE D’UN SYSTÈME A MCU
LES DONNÉES EN ENTRÉE:
Les données en entrée peuvent être d’origine diverses, elles peuvent
provenir de capteurs (température, humidité,…), d’un clavier (pour le
dialogue homme-machine), etc. Donc, toutes ces données sont
acquisitionées par l’interface d’entrée.
L’UNITE CENTRALE DETRAITEMENT:
L’unité centrale de traitement est destinée au traitement de
données/informations acquisitionées par l’unitée d’interfaçage d’entrée
afin de fournir les données/informations nécessaires à la sortie.
LES DONNEES EN SORTIE:
Les données en sortie représentent le résultat attendu du traitement
spécifié par le programme des données en entrée.
7. LES FONDAMENTALES DU MCU
3. STRUCTURE D’UN SYSTÈME A MCU
Hormis cette vision globale, un MCU contient en son sein les éléments ci-après:
Microprocesseur : Abrégé autre fois μP ou CPU pour Central Processing
Unit en anglais. Comme dans un ordinateur classique, il est le cerveau d’un
MCU.
Mémoires : contrairement à un ordinateur classique, le MCU comprend trois
(3) types de mémoires qui se différentie dans l’utilisation avec celles d’un
ordinateur classique.
• RAM (Random Access Memory) : contient le programme d’exécution
du MCU et elle est volatile c’est-à-dire les informations stockées se
perdent dès mise hors tension. Sa taille peut aller de 256 octets à 1Ko
mais, elle peut être élargie par une RAM externe de 32Ko.
• ROM (Read Only Memory) : Elle contient généralement le
programme de l’utilisateur et n’est accessible qu’en lecture seule.
• EPROM (Erasable Programmable Read Only Memory) : est une
mémoire ayant les mêmes propriétés qu’une ROM mais
programmable. C’est-à-dire le programme en son sein peut être
effacé par les rayons UV ainsi, elle peut être reprogrammée.
8. LES FONDAMENTALES DU MCU
3. STRUCTURE D’UN SYSTÈME A MCU
Timer/horloge : elle donne la référence temporelle au MCU pour exécuter
les instructions.
Chien de garde : Est une structure de contrôle du bon déroulement du
programme pouvant être interne ou externe du MCU.
Le reset à la mise sous tension : avant le lancement du programme, le MCU
a besoin d’un temps minimum qui est donné par la documentation du
constructeur et par conséquent, il faut produire un signal de durée
supérieure à la mise sous tension.
Surveillance de l’alimentation : lorsqu’une chute de tension dans
l’alimentation est détectée, cette structure produit un reset au MCU.
Les périphériques : sont les périphériques d’interfaçage d’entrées et sorties
du MCU, et de conversion du signal Analogique-Numérique ou l’inverse.
Entre autres : les ports d’entrées-sorties (parallèles et analogiques),, les ports
séries synchrones et asynchrones, la gestion Ethernet, les CAN, les CNA, la
gestion de bus USB, la gestion de bus CAN.
9. LES FONDAMENTALES DU MCU
4. APPLICATIONS
Ces bêtes programmables sont à nos jours présentes dans tous les systèmes
autonomes destinés à gérer des périphériques c’est-à-dire tout système
ayant le contrôle des périphériques. D’où, ses applications s’avèrent
énormes:
La technique médicale ;
Les systèmes de communication ;
Les technologies de sécurité ;
Mécatronique et automation industrielle ;
Moyens de transport ;
Électronique de consommation;
Etc.
10. LES FONDAMENTALES DU MCU
5. CRITERES DE CHOIX
Le choix d’un MCU est porté sur son nombre de pattes, la fréquence du CPU,
la taille du bus de données (8-bits, 16-bits ou 32-bits) et le prix.
6. AVANTAGES
Diminution de l’encombrement du matériel et du circuit imprimé;
Simplification du tracé du circuit imprimé p(lus besoin de tracer de bus;
Augmentation de la fiabilité du système
- nombre de composants réduits;
- connexions composants/supports et composant circuit imprimé.
Intégration en technologie MOS, CMOS, ou HCMOS:
- diminution de la consommation
Le microcontrôleur contribue à réduire les coûts à plusieurs niveaux:
- moins cher que les composants qu’il remplace ;
- Diminution des coûts de main d’oeuvre (conception et montage).
Environnement de programmation et de simulation évolués.
11. LES FONDAMENTALES DU MCU
7. INCONVENIENTS/DEFAUTS
le microcontrôleur est souvent surdimensionné devant les besoins de l’application;
Investissement dans les outils de développement;
Fabrication uniquement en grande série >1000.
12. ENVIRONNEMENT ARDUINO
1. QUID ARDUINO?
Arduino est un projet Open Source développé en 2005 par : Massimo
Banzi, David Cuertielles, Tom Igoe, Gianluca Martino, David Mellis, Nicolas
Zambetti. C’est un concept à la fois matériel et logiciel appelé « système
Arduino ».
Retenons qu’Arduino n’est pas un microcontrôleur en soi mais un
environnement à MCU et constitué de plusieurs cartes électroniques
programmables entre autre: entre autre : Uno, Mega, leonardo, Yun,
Duemilanove, Diecimila, Nano, Mini, LilyPAd et Serial. Toutes
programmées par un langage proche/semblable du C appelé langage
Arduino et faisant l’objet de nos travaux pratiques.
13. ENVIRONNEMENT ARDUINO
2. CARACTERISTIQUES ARDUINO UNO
Microcontrôleur : ATmega328
Tension de fonctionnement : 5V
Tension d'Input (recommandée) : 7-12V
Tension d'Input : (limites) : 6 -20V
Pins I/O digitales : 14 (dont 6 sont des PWM - modulation de largeur d'impulsions)
Pins InputAnalogiques : 6 (A0, A1, A2, A3, A4 et A5)
Courant DC par pin I/O : 40 mA
Courant DC pour la broche 3.3V : 50 mA
Mémoire Flash : 32 KB (ATmega328) dont 0.5 KB utilisé par le 'bootloader'
SRAM : 2 KB (ATmega328)
EEPROM : 1 KB (ATmega328)
Fréquence d'horloge: 16 MHz
La carte Arduino Uno a les caractéristiques ci-après:
15. ENVIRONNEMENT ARDUINO
3. QUE PILOTERA ARDUINO?
Tout dispositif technique (ou un appareil ou une machine d’un domaine
quelconque) peut être contrôlé d’une manière automatique ou par un
ordinateur, il suffit juste d’une interface compatible avec ce dispositif et
d’un programme/logiciel adapté.
De même, la carte Arduino peut commander/piloter une large gamme de
dispositifs, il suffit de la munir d’un programme adapté. En réalité, elle est
une des interfaces pour piloter ces dispositifs techniques.
Donc, la carte Arduino comme tout MCU peut commander un actionneur
ou un pré-actionneur pour commander une partie puissance (le cas des
Moteurs avec des relais).
16. ENVIRONNEMENT ARDUINO
3. QUE POURRA PILOTER LA CARTE ARDUINO?
C’est ainsi, elle peut piloter:
Un moteur;
Un afficheur ou plus (le cas de montre digitale ou chronomètre);
Une télévision;
Des lampes;
Une plaque chauffante;
Une alarme (le cas de détecteur d’intrusion, )
Une micro-onde;
Etc.
En conclusion, les applications de la carte Arduino ou du
MCU se différent selon l’imagination du programmeur
car, elles sont multiples.
17. ENVIRONNEMENT ARDUINO
3. PROBLEMATIQUE DE PILOTAGE?
Comment utiliser ladite carte avec ces diverses
applications d’autant plus qu’elle ne délivre qu’une
tension de +5v DC sur toutes ses bornes (le cas d’un
moteur à 12v DC par exemple), elle ne possède aucune
antenne pour envoyer les informations à distance (le cas
d’une alarme détecteur d’intrusion),…?
18. ENVIRONNEMENT ARDUINO
Les développeurs du projet Arduino ont prévu les solutions ci-après:
4. SOLUTIONS/ASTUCES
Les cartes d’extension pour remplir certaines fonction, entre autre:
• Shield Motor;
• Shield GSM;
• Etc.
Utilisation des montages électroniques;
Utilisation des circuits intégrés pour élargir les E/S afin de remplir certaines
fonctions.
De même, seule la carte ne suffit pour répondre à certaines attentes. C’est
ainsi, elle est raccordé à des composants tels que: Les composants actifs et
passifs (Résistances fixe et variables, diodes, condensateurs,…), Décodeur
BCD, etc.
19. PROGRAMMATION EN ARDUINO
Comme évoqué ci-haut, un MCU est une bête programmable. alors
comment le programmer et avec quel langage s’y prendre?
Un MCU est programmé grâce à un programmateur (ressemblant à un
socket) dont le programme (codé dans un langage approprié) est téléversé à
partir d’un PC moyennant un compilateur.
Un MCU peut être programmé dans un langage:
o Machine;
o Assembleur;
o Haut niveau (C, C++, Java,…).
Mais, la majorité des MCUs sont programmés en C. Ainsi,Arduino est proche
de C.
20. LE LANGAGE ARDUINO
Un langage de programmation est une grammaire formelle qui inclut
des symboles et des règles syntaxiques auxquels on associe des règles
sémantiques.
PROGRAMMATION EN ARDUINO
Il en est ainsi pour Arduino qui, malgré sa ressemblance avec le C a ses
propres règles, symboles et syntaxiques.
Donc, avec Arduino, il y a une phase de déclaration, d’initialisation,
appel de fonction, appel de librairies,…
21. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Commentaire
Un commentaire en langage de programmation est un bout de
mots destinés à documenter le programme et n’est pas exécuté par
le compilateur.
// Ceci est un commentaire simple
/* ceci est un long commentaire */
Son importance est pour un repérage facile lors de la
programmation d’un gros programme contenant beaucoup de
lignes tant faciles que complexes.
22. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Déclaration des variables
Une variable est un espace réservé dans la mémoire contenant une
information (valeur), qui est caractérisée par un nom et un type.
int nomVariable1 ;
float nomVariable2 ;
char nomVariable3 ;
long nomVariable4 ;
Déclarer une variable, c’est créer cet espace prêt à acquérir
l’information. Ainsi, nous avons : int (entier), float (flottant), char
(caractère), long int (entier long), byte et volatile.
Forme : <type> <nom_de_la_variable>
23. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Déclaration des constantes
Il est parfois nécessaire de déclarer des variables qui ne changeront
pas tout au long de l’exécution du programme, ces variables sont
appelées les constantes.
Const int nomVariable1 ;
Const float nomVariable2 ;
Const char nomVariable3 ;
Forme : <mot_clef> <type> <nom_de_la_variable>
24. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Déclaration des tableaux
Un tableau est une variable particulière contenant des lignes et des
colonnes. En d’autre terme un tableau est un ensemble fini
d'éléments de même type.
int tab[5] ;
int tab2[3][2] ;
int tab3[2] ;
Forme une dimension : <type> <nom_du_tableau> [<nombre_éléments>]
Forme 2D :<type> <nom_du_tableau> [<nombre_éléments1>][<nombre_éléments2>]
25. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Affectation
Affecter une variable/tableau, c’est lui attribuer de l’information
(valeur) pour une bonne manipulation. Ce processus est remarqué
par l’opérateur égal (=) et des accolades {} pour le tableau.
int nomVariable1 = 5;
float nomVariable2 = 2.3 ;
char nomVariable3 =’a’;
long nomVariable4 = 1000;
int tab [5] = {1, 2, 3, 4, 5, 6} ;
float tab2 [3] = {1.0, 2.0, 3.0} ;
char tab [] = {’a’, ’c’} ;
Forme : <type> <nom_de_la_variable> = <valeur>
26. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Opérateurs arithmétiques
L’addition (+), la soustraction (-), la division (/), la multiplication (*)
et le modulo (%) sont des opérateurs arithmétiques.
int nomVariable1 = 5;
int nomVariable2 = 2;
int somme ;
somme = nomVariable1 + nomVariable2
Opérateurs rationnels
Ces opérateurs comparent deux valeurs, nous avons :
< Strictement inférieur
> Strictement supérieur
!= Différent de
== égal (à ne pas confondre avec le signe d’affectation =)
<= inférieur ou égal
>= supérieur ou égal
27. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Autres opérations
Hormis les opérations arithmétiques citées ci-haut, le C offre un
raccourci d’ajout et de soustraction d’un nombre que celui existant
appelé l’incrémentation et la décrémentation. Elles sont
remarquées par les signes (++) pour la première (incrémentation) et
(--) pour la deuxième (décrémentation).
int nomVariable1 = 5;
int nomVariable2=nomVariable1++;
int nomVariable3=4 ;
int nomVariable4=nomVariable3-- ;
28. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Instructions de controle
Une instruction de contrôle permet de contrôler le fonctionnement
d'un programme. Parmi ces instructions, on distingue les
instructions de branchement et les boucles.
If (expression1)
Instruction1 ;
Else Instruction2 ;
a. Instruction de branchement
Les instructions de branchement permettent de
déterminer quelles instructions seront exécutées et
dans quel ordre.
If (expression1)
Instruction1;
Else if (expression2)
Instruction2;
Else Instruction3;
Branchement simple:
29. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
//illustration de la forme 1
int nomVariable1 = 5;
int nomVariable2=3
int nomVariable3 ;
if (nomVariable1=5);
nomVariable3=nomVariable1+nomVariable2;
else nomVariable3=nomVariable1-nomVariable2;
//illustration de la forme 2
int nomVariable4 = 4 ;
int nomVariable5 = 2;
int nomVariable6 ;
if (nomVariable4 = 4)
nomVariable6 = nomVariable4 + nomVariable5;
else if (nomVariable4 > 5)
nomVariable6 = nomVariable4 - nomVariable5;
else nomVariable6=nomVariable4 * nomVariable5;
30. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Branchement multiple:
switch (expression) {
case valeur1 : Instruction1;
break ;
Case valeur2 : Instruction2;
break ;
Case valeurN : InstructionN;
break ;
}
int nomVariable1 = 5;
int nomVariable2=3
int nomVariable3 ;
switch (nomVariable1){
case nomVariable1 = 5 :
nomVariable1 = nomVariable1 + nomVariable2 ;
break ;
case nomVariable1 = 2 :
nomVariable1 = nomVariable1- nomVariable2 ;
break ;
}
31. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
b. Les boucles
while (expression){
Instruction;
}
int nomVariable1 = 2 ;
int nomVariable2 = 3;
int nomVariable3 ;
while (nomVariable1 = 2){
nomVariable3 = nomVariable2++;
}
BoucleWHILE
32. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Do {
Instruction
}
while (expression)
int nomVariable1 = 2 ;
int nomVariable2 = 3;
int nomVariable3 ;
do {
nomVariable3 = nomVariable2++}
while (expression)
Boucle DO…WHILE
33. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
void nomProcedure () {
Instruction-bloc;
}
int nomFonction (int nomVariable)
{
Instruction-bloc;
Return <expression>;
}
Procédure et fonction
Une fonction est un bout de codes destiné à effectuer une
tache précise et renvoie généralement une valeur, résultat d’un
calcul.Tandis qu’une méthode ne renvoie pas un résultat.
Forme : déclaration :<type> <nom_de_la_fonction> (<paramètre(s)_de_la_fonction>)
34. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
pinMode(13,OUTPUT);pinMode(13,INPUT);
Initialisation des pins
Il est évident que le MCU est une bête donc, ne sait faire que ce que
l’on lui dit de faire c’est-à-dire lui préciser réellement ce que ses pins
seront soit à l’état d’acquisition (initialisé comme entrée) ou de
restitution (initialisé comme sorties)
o Initialisation des pins en entrée et en sortie
Pour initialiser une pin avec Arduino, il suffit d’appeler la fonction
prédéfinie pinMode() en lui donnant comme paramètre, le numéro
de port et l’état, soit en entrée (INPUT) ou soit en sortie (OUTPUT).
35. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Void setup(){
pinMode(13,OUTPUT);
}
Void setup(){
pinMode(13,INPUT);
}
o Où appeler cette fonction pour initialiser les pins?
Dans la programmation de la carte Arduino, il a été prévu deux
fonctions prédéfinies dont l’une est pour l’initialisation ou la
configuration (void setup()) et l’autre pour la boucle (void loop()).
D’où, comme il s’agit de l’initialisation, toutes ces commandes
seront faites dans void setup().
36. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
Void loop(){
digitalRead(13);
}
Void loop{
digitalWrite(13,HIGH);
}
LES FONCTIONS DigitalWrite() et DigitalRead()
Après la configuration, il sera question d’activer lesdites pins à l’état
haut qui correspond à fournir une tension de +5v (HIGH) ou bas qui
correspond à 0v (LOW) ou encore de lire l’état du capteur au cas où,
la pin a été initialisée en entrée.
DigitaWrite() sert à configurer l’état d’une pin digitale et reçoit deux
paramètres dont le numéro de la pin et son état (HIGH ou LOW).
DigitalRead() sert à lire l’état d’un capteur connectée sur une pin
digitale et recoit en paramètre le numéro de la pin, si possible avec
son état (HIGH ou LOW).
37. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LES FONCTIONS analogWrite() et analogRead()
Pour lire/afficher une valeur (ou l’état d’un capteur) analogique, il
est évident qu’il faut utiliser les pins analogiques (A1, A2, A3, AA4 et
A5) en utilisant les fonctions soit analogRead() pour la lire et
analogWrite() pour afficher. Ces fonctions reçoivent en paramètre
le numéro de la pin.
Elles peuvent être tout comme les deux précédentes (digitalWrite()
et digitalRead()) appelées partout dans le programme.
38. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LA LIAISON SERIE/PORT SERIE
Il est possible qu’un MCU puisse communiquer avec un autre
système à CPU tel qu’un PC, MCU,…
Ainsi, cette interface/liaison permet cette communication entre
systèmes à CPU reposant sur la norme RS232.
C’est-à-dire avec cette liaison, nous pouvons faire communiquer
deux MCUs, cartes Arduino, PCs et autres appareils/dispositifs
supportant cette norme.
La dite liaison est obtenue par un connecteur DB9 qui est presque
plus existant à nos jours mais cela est remédié par un câble USB le
cas de communication PC-Arduino.
39. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LA LIAISON SERIE/PORT SERIE
Communication Arduino Uno et PC
Pour utiliser cette liaison, il faut l’établir non seulement
physiquement c’est-à-dire par un câble mais aussi dans le
programme tout en définissant la vitesse de communication
exprimée en bauds (bds).
void setup(){
Serial.begin(vitesse);
}
Pour établir une communication série, il suffit d’ajouter la syntaxe
ci-dessous dans setup() :
La vitesse s’étend de 110 à
115200 bauds (bds).
void setup(){
Serial.begin(9600);
}
40. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LA LIAISON SERIE/PORT SERIE
Communication d’une carte Arduino avec une autre.
Pour relier une carte Arduino avec une autre, il suffit de relier les
deux broches Rx et Tx de l’une avec les Rx et Tx de l’autre. C’est-à-
dire relier Rx de l’une avec Tx de l’autre et Tx de l’une avec Rx de
l’autre.
Rx
Rx
Tx
Tx
Carte 1 Carte 2
41. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LA LIAISON SERIE/PORT SERIE
o Envoi de données
Relier deux systèmes implique le partage des données entre ces
derniers, pour ce cas précis (entre une carte Arduino et un PC) ce
partage se fait dans les deux sens.
Les données qu’enverront la carte Arduino seront prélevées par des
capteurs et envoyées dans un PC via une liaison série pour être
informé de quelques détails.
Pour envoyer des données via cette liaison, il suffit de taper la
commande ci-après:
void loop ()
{
Serial.print(valeur_a_envoyer);
Serial.println(valeur_a_envoyer);
}
La valeur à envoyer est celle
contenant une variable
récupérée par un capteur.
42. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LA LIAISON SERIE/PORT SERIE
o Réception de données
Il est évident que cette réception devra se faire soit du PC-Arduino
soit Arduino-PC pour ce cas, c’est la carte qui reçoit donc PC-
Arduino.
Les fonctions Serial.avalaible() et Serial.read()
Les deux fonctions de l’objet Serial ci-haut permettent de vérifier et
lire les données dans le buffer de réception d’une liaison série. L’une
vérifie la présence d’une donnée si non elle revoie -1.
void loop(){
int donnee = Serial.avalaible();
}
En réalité, ladite fonction
renvoie le nombre de caractères
dans le buffer de réception et au
cas où il y a l’absence, elle
renvoie -1.
En somme, la fonction vérifie seulement la présence des données.
43. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
LA LIAISON SERIE/PORT SERIE
o Réception de données
Dès que les données sont présentent dans le buffer de réception, il est
possible de les lire avec la fonction read() du même objet:
void loop(){
char donnee = Serial.read();
}
Le caractère lu est stocké dans une
variable afin si possible d’être utilisée
ultérieurement.
44. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
ENTREESANALOGIQUES
Ces entrées correspondent à la manipulation des données analogiques via les
pins analogiques (A0, A1, A2, A3, A4, A5)
Les données analogiques proviennent de capteurs tels que: un
potentiomètre, une LDR, un piézoélectrique, un capteur de température,
etc.
Un signal analogique est constitué d’une fréquence, période et amplitude; la
fréquence est le nombre de fois que ce signal change de l’alternance en une
seconde et est l’inverse de la période, et l’amplitude est le niveau maximal de
ce signal.
Une fois l’une de ces entrées est connectée à un capteur le dit signal sera
converti en numérique grâce à un convertisseur analogique-numérique (CAN
intégré dans la carte) afin d’être manipulé par le MCU.
45. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
ENTREESANALOGIQUES
L’acquisition est faite par la fonction analogRead() et reçoit en argument le
numéro de pin analogique.
La fonction retourne une valeur int comprise entre 0 et 1023, et devra être
converti en volt en la multipliant par 5 puis diviser par 1024.
Int valeur=0;
Int capteur=0;
float vExacte=0;
void loop(){
valeur = analogRead(capteur);
vExacte = (valeur*5)/1024;
}
46. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
ENTREESANALOGIQUES
Il est possible avec la fonction map() de raccourcir le processus pour
atteindre le même but. Elle prend en argument cinq (5) paramètres dont la
valeur à convertir (acquise par le capteur), le 0, 1023, o et 5000 (5000mV ce
puis diviser par 1000 pour avoir 5v).
Int valeur=0;
Int capteur=0;
float vExacte=0;
void loop(){
valeur = analogRead(capteur);
vExacte = map(valeur, 0, 1023, 0, 5000);
vExacte = vExacte/1000;
}
47. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
L’acronyme PWM pour Pulse Width Modulation en français Modulation à
Largeur d’Impulsion. Elle est en fait un signal numérique qui, à une fréquence
donnée, a un rapport cyclique qui change.
PWM/MLI
Le rapport cyclique avec un signal numérique désigne le fait que le niveau
logique 1 peut ou ne pas durer le même temps que le niveau logique 0. Il est
mesuré en pour cent (%). Plus le pourcentage est élevé, plus le niveau
logique 1 est présent dans la période et moins le niveau logique 0 l'est. Et
inversement.
48. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
D’où, la PWM est un signal de
fréquence fixe ayant un rapport
cyclique variant dans le temps.
Ainsi, la fréquence de la PWM avec la
carte Arduino est de 490Hz.
49. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
PWM/MLI
D’autant plus que la PWM est un signal numérique, sa génération est faite
par la fonction analogWrite() via les pins 3, 5, 6, 9, 10 et 11 dites pins PWM
marquées avec le symbole tilde (~).
La dite fonction reçoit deux (2) paramètres:
1. le numéro de la pin;
2. la valeur du rapport cyclique
(comprise entre 0 et 255).
- 0 représente un rapport cyclique de 0%;
- 127 représente 50%;
- 255 représente 100%;
- pour avoir un rapport cyclique quelconque, il suffit de diviser la valeur
par 255 multipliée par 100 (e.g. 169/255 = 0,6627*100 = 66,27%).
50. LE LANGAGE ARDUINO
PROGRAMMATION EN ARDUINO
ENTREESANALOGIQUES et la PWM/MLI
PWM/MLI
int capteur=0;
void setup(){
pinMode(capteur, OUTPUT);
}
void loop(){
analogWrite(capteur,169);
}
Cette commande/fonction analogWrite()
génère de la PWM avec un rapport cyclique de
66,2%.
Ainsi, avec la PWM il est possible de varier la vitesse d’un moteur à DC.
51. PROGRAMMATION EN ARDUINO
ANALOG : Analogique.
AREF : Abréviation pour Analog REFerence, référence analogique.
AVAILABLE : Disponible.
BEGIN : Début.
BIT : bit, unit d'information informatique pouvant prendre soit la valeur 0
soit la valeur 1.
BUFFER : Tampon, dans le sens de "zone tampon".
BYTE : Octet, soit un groupe de 8 bits.
bps : Abréviation pour Bits Per Second, Bits Par Seconde. Attention,
abréviation toujours en minuscules.
Les termes ci-dessous sont les plus employés dans ledit domaine de
l’életronique programmée:
LEXIQUE DESTERMES EN ANGLAIS
52. PROGRAMMATION EN ARDUINO
BREADBOARD: plaque d’expérimentation
CAPACITOR: condensateur
CHAR : Abréviation de CHARacter, caractère (typographique). Type de variable d'une
taille d'un octet. C'est un synonyme de "byte" utilisé pour déclarer des variables
stockant
un caractère ou des chaines de caractères.
DEFINE : Définit.
DIGITAL : Numérique.
DO : Faire.
FALSE : Faux.
FOR : Pour.
GND : Abréviation pour GrouND, la terre. C'est la masse, 0Volt.
HIGH : Haut.
ICSP : Abréviation pour In Circuit Serial Programming, programmation série sur circuit.
IF /THEN/ ELSE : Si / Alors / Sinon.
IN : Souvent l'abréviation pour INput, Entre. Est toujours en rapport avec le sens
extérieur vers carte Arduino.
LEXIQUE DESTERMES EN ANGLAIS
53. PROGRAMMATION EN ARDUINO
INCLUDE : Inclut.
INPUT : Entrée.
IS : Est (souvent dans le sens d'une question : Est ?).
INT : Abréviation pour INTeger, entier. Groupe de 16 bits, 2 octets groupés, considérés
comme représentant un nombre entier négatif ou positif.
LONG : Abréviation pour "entier long". Groupe de 32 bits, 4 octets groupés, considérés
comme représentant un nombre entier négatif ou positif.
LOOP : Boucle.
LOW : Bas.
OUT : Souvent l'abréviation pour OUTput, Sortie. Est toujours en rapport avec le sens
carte Arduino vers extérieur.
OUTPUT : Sortie.
PIN : Broche.
POWER : Puissance, alimentation.
PWM : Abréviation de (Pulse Width Modulation), soit Modulation en Largeur
d'Impulsion.
PWR : Abréviation pour PoWeR, puissance, alimentation.
READ: Lire.
LEXIQUE DESTERMES EN ANGLAIS
54. PROGRAMMATION EN ARDUINO
RESISTOR: résistance.
RELAY: relais.
RX : Abréviation pour Receive, réception.
SERIAL : Série.
SETUP : Initialisation.
SENSOR: capteur
TRUE : Vrai.
TX: AbréviationTransmit, transmission (mission).
WIRE: câble
WHILE : Tant que.
WORD : mot, soit dans le mot de langage ; soit dans le sens d'un groupe de 16 bits, 2
octets groups considérés comme représentant un nombre entier positif (>= 0).
WRITE: Écrire.
LEXIQUE DESTERMES EN ANGLAIS
55. BIBLIOGRAPHIE - WEBOGRAPHIE
WEBOGRAPHIE
1. http://www.electronique-mixte.fr/kits-de-developpement-processeurs-et-
microcontroleurs/kit-msp430-de-ti/.
2. http://www.wikipedia.org/wiki/Langage_de_programmation
1. Arduino pour bien commencer en électronique et en programmation,
Astalaseven, Eskimon et olyte, site du zero, 2012 inédit;
2. Les microcontrôleurs dans les systèmes embarqués, Elham Firouzi, Haute
école spécialisée bernoise, Janvier 2012 inédit;
3. Microprocesseurs & Microcontrôleurs, Sylvain MONTAGNY, Université de
Savoie,
4. Les microcontrôleurs, JérômeVICENTE, université de Marseille, 2005 inédit.
BIBLIOGRAPHIE