Vous êtes sur la page 1sur 14

INSFP de Médéa

Section : S4 Electrotechnique Apprentissage


Cours Microprocesseur/Microcontrôleur
(Arduino-Uno)

I - Microprocesseur
Le concept de microprocesseur a été créé par la Société Intel. Cette Société, créée en 1968, était
spécialisée dans la conception et la fabrication de puces mémoire.

Un microprocesseur est un circuit intégré complexe caractérisé par une très grande intégration il se
présente donc sous la forme d’un circuit intègre muni d’un nombre généralement important de broches.
Exemples :
• Intel 8085, 8086 et Zilog Z80 : 40 broches, DIP (Dual In-line Package) ;
• Motorola 68000 : 64 broches, DIP ;
• Motorola 6809 : 40 broches, DIP ;
• Intel 80386 : 196 broches, PGA (Pin Grid Array).

Les applications des systèmes à microprocesseurs sont multiples et variées :

 Ordinateur
 console de jeux
 calculatrice
 télévision
 téléphone portable
 distributeur automatique d’argent
 robotique
 lecteur carte à puce
 automobile
 instrumentation
 etc.…

Un microprocesseur a besoin de certains éléments pour fonctionner :

 de la mémoire morte dite ROM (principalement pour stocker le programme) ;


 de la mémoire vive dite RAM (principalement pour stocker les variables) ;
 des périphériques (principalement pour interagir avec le monde extérieur).
 une horloge pour le cadencer (principalement à quartz)

Ces différents blocs sont reliés par 3 Bus (voir figure1 et figure2) :

 le bus d'adresse qui permet au microprocesseur de sélectionner la case mémoire ou le périphérique


auquel il veut accéder pour lire ou écrire une information;
 le bus de données qui permet le transfert des informations entre les différents blocs ; ces informations
seront soit des instructions soit des données en provenance ou à destination de la mémoire ou des
périphériques ;
 le bus de contrôle qui indique si l'opération en cours est une lecture ou une écriture, si un
périphérique demande une interruption etc.

Cours Microcontrô leur(Arduino) Page 1


Figure-1- Schéma fonctionnel du up

 Horloge: sert à cadencer le programme.


 Reset : sert à réinitialiser l’exécution du programme.
 Signaux de commande :
 Bus d’adresses : sert à adresser les cases mémoires.
 Bus de données : utilisé pour transférer les données entre le up et les périphériques E/S.
 Bus de commande : sert à commander les périphériques.

Exemple  : microprocesseur 6809 

Figure-2- Circuit correspondant au microprocesseur 6809

Un système minimal à microprocesseur peut être représenté par le schéma fonctionnel suivant :

Figure-3- Système minimal à microprocesseur

Cours Microcontrô leur(Arduino) Page 2


I-1 Exemple d’un système à microprocesseur

Figure-4- Diagramme fonctionnel d’un système à up 6809

II- Microcontrôleurs 
Un microcontrôleur est un circuit intégré programmable réunissant tous les éléments d’une structure
à base de microprocesseur. Voici généralement ce que l’on trouve à l’intérieure d’un tel composant.

 Un microprocesseur (CPU).
 De la mémoire vive (RAM).
 De la mémoire morte (ROM, EEPROM).
 Des interfaces séries/parallèles pour connexion des entrées/sorties.
 Des convertisseurs Analogiques/ Numériques CAN.
 Des Timers pour générer des signaux avec une grande précision.
 Etc…

En conséquence la structure interne d’un microcontrôleur est illustrée par le schéma de la figure
suivante :

Cours Microcontrô leur(Arduino) Page 3


Figure-5- Architecture interne d’un microcontrôleur

Par conséquent, on peut utiliser un microcontrôleur pour des déférentes applications dans différents
domaines comme par exemple l’automatique, l’asservissement, le frigorifique, le domaine médical,
l’automobiles, Robotique, etc…

II-1 Les différents fabricants de microcontrôleurs


On distingue plusieurs fabricants, à savoir Atmel, Microchip, Motorola, etc…
Atmel : Atmega 328, Atmega16, etc…
Microchip : PIC16F84, PIC16F876, PIC16F877, etc…
Motorola : 68HC11, 68HC11, 68HC05,etc…

II-2 Le Microcontrôleur Arduino


Le microcontrôleur Arduino est une carte de développement conçue et réalisée par des jeunes
étudiants de nationalité italienne.
Arduino est construit à base de microcontrôleur Atmel, on peut distinguer plusieurs types de cartes
Arduino.
II-3 Les différentes cartes d’Arduino
Il existe une multitude de cartes Arduino différentes, toutes faites pour une plage d’utilisation
spécifique. Voici les catégories principales :

1. Arduino Uno : la carte "Uno" est la meilleure carte pour commencer. Elle possède 14 entrées
sorties digitales et 6 entrées analogiques, il est à base de microcontrôleur ATmega328.

Cours Microcontrô leur(Arduino) Page 4


Cette carte dispose :

 de 14 broches numériques d'entrées/sorties (dont 6 peuvent être utilisées en sorties PWM


(largeur d'impulsion modulée)),
 de 6 entrées analogiques (qui peuvent également être utilisées en broches entrées/sorties
numériques),
 d'un quartz 16Mhz,
 d'une connexion USB,
 d'un connecteur d'alimentation jack,
 d'un connecteur ICSP (programmation "in-circuit"),
 et d'un bouton de réinitialisation (reset).

2. Arduino Micro : cette carte est la plus petite de la marque. Elle est très utile pour faire des
projets qui nécessitent d’avoir un microcontrôleur de petite taille, et malgré celle-ci, cette
carte possède plus d’entrées/sorties que la carte Uno.

Cette carte dispose :

 de 14 broches numériques d'entrées/sorties (dont 6 peuvent être utilisées en sorties PWM


(largeur d'impulsion modulée)),
 de 8 entrées analogiques (qui peuvent également être utilisées en broches entrées/sorties
numériques),
 d'un quartz 16Mhz,

Cours Microcontrô leur(Arduino) Page 5


 d'une connexion mini-USB,
 d'un connecteur d'alimentation jack,
 d'un connecteur ICSP (programmation "in-circuit"),
 et d'un bouton de réinitialisation (reset).

3. Arduino Mini : la carte "Mini" à la même caractéristique que la carte "Uno", mais est proposé
dans un format plus petit. Elle est donc très utilisée dans des projets qui nécessitent un
encombrement minimal tout en gardant un nombre d'entrées/sorties raisonnable

4. Arduino Mega : La carte Arduino Mega est une carte à microcontrôleur ATmega2560. Elle
contient tout ce qui est nécessaire pour le fonctionnement du microcontrôleur; Pour pouvoir
l'utiliser et se lancer, il suffit simplement de la connecter à un ordinateur à l'aide d'un câble
USB (ou de l'alimenter avec un adaptateur secteur ou une pile, mais ceci n'est pas
indispensable, l'alimentation étant fournie par le port USB).

Cette carte dispose :

 de 54 (!) broches numériques d'entrées/sorties (dont 14 peuvent être utilisées en sorties


PWM (largeur d'impulsion modulée)),
 de 16 entrées analogiques (qui peuvent également être utilisées en broches entrées/sorties
numériques),
 d'un quartz 16Mhz,
 d'une connexion USB,
 d'un connecteur d'alimentation jack,
 d'un connecteur ICSP (programmation "in-circuit"),
 et d'un bouton de réinitialisation (RESET).

II-4 Etude théorique de la carte Arduino-Uno

La carte d’Arduino-Uno est une carte de développement à microcontrôleur Atmel (ATmega328 dont la
programmation peut être réalisée en langage C), elle contient également des composants
complémentaires qui facilitent la programmation et l'interfaçage avec d'autres circuits. Elle possède un
régulateur linéaire 5 V et un oscillateur à quartz 16 MHz (voir la figure-6-).

Cours Microcontrô leur(Arduino) Page 6


L'Arduino utilise la plupart des entrées/sorties du microcontrôleur pour l'interfaçage avec les autres
circuits. Il possède 14 entrées/sorties numériques, dont 6 (3, 5, 6, 9, 10,11) peuvent produire des signaux
PWM et 6 entrées analogiques (A0 à A5) comme le montre la figure suivante.

Figure-6- Constitution de l’Arduino-Uno

 A : ce sont les broches dites numériques (0 ou 1) ou « tout ou rien » ; elles offrent en sortie du 5 V ou 0
V et acceptent en entrée du 5 V ou 0 V sur le même principe.
 B : ce sont les broches dites analogiques, valeur entre 0 V et 5 V
 C : les différentes broches d'alimentation :
- sortie 5 V (+)
- sortie 3,3 V (+)
- les masses (−)
- entrée reliée à l'alimentation (7 V-12 V)

II-5 Programmation de la carte Arduino

La programmation de la carte Arduino se fait par des différents logiciels, à savoir le logiciel Arduino qui
est basé sur le langage C. Ce logiciel n’est qu’un environnement de développement intégré (IDE), en outre il est
téléchargeable gratuitement des différents sites internet et existe en plusieurs versions, Il nous permet :
 D’éditer le programme
 De compiler le programme
 De transférer le programme dans la carte Arduino via le port USB

La figure suivante montre l’interface du logiciel IDE :

Cours Microcontrô leur(Arduino) Page 7


Figure-7-

 Le cadre N°1 : ce sont les options de configuration du logiciel.

 Le cadre N°2 : il contient les boutons qui vont nous servir lorsque l’on va programmer l’Arduino.

 Le cadre N°3: ce bloc va contenir le programme que nous allons créer.

 Le cadre N°4 : celui-ci est important, car il va nous aider à corriger les fautes dans notre programme.

II-5-1 Les boutons de l’interface IDE :

Figure-8- Les différents boutons du logiciel Arduino

 Bouton 1  : permet de vérifier le programme.

 Bouton 2 : permet de charger (téléverser) le programme dans la carte Arduino .

 Bouton 3 : crée un nouveau fichier.

Cours Microcontrô leur(Arduino) Page 8


 Bouton 4 : ouvre un fichier.

 Bouton 5 : enregistre le fichier.

 Bouton 6 : ouvre le moniteur série.

!Fin de formule inattendueII-5-2 Structure d’un programme.

Un programme Arduino simple peut être structuré selon la figure suivante :

Commentaires

Définition des variables et


constantes

Configuration

Programme sans fin

Figure-9- Structure d’un programme

- Commentaires : Toujours écrire des commentaires sur le programme soit en multiligne, en écrivant
entre des /*….. */, soit sur une seule ligne en se séparant avec //….. .

- Définition des variables et constantes : Dans cette zone on devra déclarer toutes les variables et
les constantes qu’on utilisera dans notre programme.

- Configuration (Setup ()) : la fonction setup est une fonction qui s’exécute une seule fois à chaque
démarrage du programme. C’est dans cette fonction qu’on initialise les variables, qu’on définit la fonction de
chaque broche (entrée ou sortie), l’initialisation de l’état des sorties, des fonctions d’initialisation
personnalisées ou tout autre partie de code que l'on souhaite exécuter qu’une seule fois.

- Programme sans fin (Loop ()) : la fonction loop est la fonction principale de l’Arduino : une fois la
fonction setup exécutée, la fonction loop s’exécutera et se répètera à l’infini.

Cours Microcontrô leur(Arduino) Page 9


Exemple : clignoter une LED sur la broche 13 de l’Arduino-Uno à une période de 2s.

/*

Ce programme fait clignoter une LED qui se trouve branchée sur la Pin 13 de l’Arduino-uno, la Pin
13 est configurée en sortie.

*/

# define LED 13 ; // La constante LED prenne la valeur 13.

void setup () {

pinMode (LED, OUTPUT); // La Pin 13 est configurée en sortie.

void loop() {

digitalWrite(LED_BUILTIN, HIGH); //on allume la LED en envoyant HIGH sur la broche 13

delay(1000) ; // On fait un délais de 1000 ms

digitalWrite(LED_BUILTIN, LOW); // On éteint la LED en envoyant LOW sur la broche 13

delay(1000); // On fait un délais de 1000 ms

II-5-3 Fonction de gestion d'I/O numériques

1. pinMode(broche, mode) : cette fonction sert à définir une broche spécifique de l’Arduino (par le biais
de son numéro) comme étant une entrée ou une sortie.

2. digitalWrite(broche, valeur) : sert à définir l’état d’une sortie à un temps donné. Par exemple, si on a
défini qu’une LED est branchée sur le pin 4 ( pinMode(4, OUTPUT); ), on peut par la suite envoyer ou
non du courant dans cette broche, pour que la LED s’allume ou s’éteigne :

a. digitalWrite(4, HIGH) ; LED allumée.

b. digitalWrite(4, LOW) ; LED éteinte.

3. int digitalRead(broche) : sert à lire l’état d’une broche configurée en entrée. Si celle-ci est reliée à un
potentiel 5V, le résultat de la lecture sera 1, et si elle est reliée à un potentiel nul, le résultat sera 0.

Grâce à ces fonctions et à quelques composant électronique, on peut par exemple allumer des LEDs, faire
fonctionner des moteurs ou encore vérifier l’état d’un élément relié à un capteur en lisant son état.

Cours Microcontrô leur(Arduino) Page 10


II-5-4 Fonction de gestion d'I/O analogiques

4. Beaucoup d'Arduino possèdent des entrées analogiques, mais très peu (comme le Due) possèdent des
sorties analogiques.

5. anlogRead(broche) : la fonction analogRead permet de lire l’état d’une broche analogique. La


différence entre une broche analogique et une broche numérique, c’est que contrairement à une
broche numérique qui ne renvoi qu’un 1 ou un 0, la broche analogique envoie un nombre compris
entre 0 et 1023 le 0 étant 0V et 1023 étant 5V. On peut donc avoir un chiffre qui correspond à un
voltage, et donc savoir le potentiel d’une broche à un instant ‘T’. On peut également augmenter la
précision de l'Arduino pour avoir plus de précision. Les entrées analogiques sont très utilisées pour les
capteurs qui renvoient une multitude de valeurs différentes, comme les capteurs de température, par
exemple.

6. analogWrite(broche, valeur) : sert à envoyer une tension modulée en largeur d’impulsion ainsi
appelée PWM , qu'on peut modifier si besoin pour accroitre la précision.

II-5-5 Fonctions de temporisation

Etant donné que les Arduino possèdent une horloge, on peut effectuer des temporisations entre
différents bloc de code. Voici les fonctions qui permettent de manier le temps :

7. Delay() : La fonction Delay(ms) sert à effectuer une pause d’une certaine durée fixée par un entier
passé dans la fonction à son appel. Cet entier correspond au nombre de millisecondes pendant
lesquelles on veut stopper le programme. Cette fonction est une fonction bloquante, et donc pendant
qu’elle se déroule, toutes les autres actions sont ignorées.

8. DelayMicroseconds() : Identique à la fonction delay(), sauf que l’entier passé en paramètre est prit en
compte comme des microsecondes et non plus comme des millisecondes.

9. Unsigned long millis() : permet de retourner un nombre de millisecondes qui correspond au temps
depuis lequel le programme a été démarré. Cette fonction se remet à zéro après environ 50 jours, à la
suite d’un dépassement mémoire (overflow).

10. Unsigned long micro() : exactement la même fonction que millis(), sauf que micro() renvoi un entier
qui correspond à des microsecondes et non plus à des millisecondes.

11. Long random(max) : retourne un entier aléatoire compris entre 0 et le nombre passé en paramètre.

12. Long random(min, max) : retourne un entier aléatoire compris entre les deux nombres passés en
paramètres.

II-5-6 Fonction Scheduler

La fonction scheduler est l’une des plus importantes fonctions de l’Arduino, car celle-ci nous permet
d’effectuer des tâches asynchrones. En effet, de base, un Arduino ne peut pas gérer plusieurs tâches en même
temps. Par exemple, si vous utiliser la fonction delay() pour faire clignoter une LED, et que vous souhaitez lire
l’état d’une entrée de l’Arduino en même temps, cela nous sera impossible, car pendant que le délai s’écoule,
le programme est bloqué, et attend la fin de celui-ci. Comme on a pu le voir au début, le programme est
composé de seulement deux fonctions : « setup() » et « loop() ». On a évidemment la possibilité de créer
d’autres fonctions, mais celle-ci s’exécuterons de manière synchrone après leur appel. La fonction Scheduler
nous permet de créer plusieurs boucle infinie (identiques à la fonction loop() déjà existante ) et de les lancer
en même temps. Voici un exemple :

Cours Microcontrô leur(Arduino) Page 11


Etant donné que le microprocesseur de l'Arduino n'est pas conçu pour faire de l'asynchrone, la
fonction Scheduler lui permet d'en faire comme on l’a vu précédemment, mais de façon un peu détournée. En
effet, lorsque que la fonction Scheduler est utilisée, l’Arduino n’exécute pas vraiment les deux boucles en
mêmes temps ; la première boucle va exécuter une toute petite partie de son code, passer le relai à la
deuxième boucle qui va elle aussi exécuter une partie de code, puis repasser la main à la première boucle, et
ainsi de suite. En général, pour les petits projets, cela n’est pas du tout dérangeant. Néanmoins, pour ceux qui
souhaitent exécuter du code dans un temps précis, cette fonction est à proscrire, car le passage d’une boucle à
l’autre augmente le temps de calcul de l’Arduino.

De plus, il est impératif d'utiliser la fonction "yield()" à la fin de chaque boucle, car c'est elle qui permet la
gestion du passage de l'une à l'autre.

Moniteur série

Grâce au moniteur série (le petit icône loupe en haut à droite) vous avez la possibilité d’afficher des
informations provenant du code. Celui-ci est souvent utilisées pour le débogage, ou simplement pour logger
des informations renvoyées par l'Arduino, en direct. Dans le code qu’on écrit, on peut spécifier à l’Arduino que
nous souhaitons afficher certaines informations, ou variables. Voici un exemple :

Cours Microcontrô leur(Arduino) Page 12


Ce programme nous permet de voir l’état d’un bouton en direct. Quand on se trouve dans la fenêtre
du moniteur série et que le programme est lancé sur l’Arduino, on peut voir s’afficher les mots « Bouton
Appuyé » quand celui-ci est pressé.

La ligne « Serial.begin(9600) » qui se trouve dans le setup est obligatoire, et sert à initialiser la liaison
série de l’Arduino, en lui affectant une vitesse de transmission. Cette vitesse peut évidemment être changée,
mais il faudra donc aussi modifier cette valeur dans le moniteur série pour que la lecture des informations se
fasse à la même fréquence que leurs envois.

Cours Microcontrô leur(Arduino) Page 13


Cours Microcontrô leur(Arduino) Page 14

Vous aimerez peut-être aussi