Vous êtes sur la page 1sur 57

REPUBLIQUE DEMOCRATIQUE DU CONGO

UNIVERSITE DE LUBUMBASHI
ECOLE SUPERIEURE DES INGENIEURS INDUSTRIELS
Département de Génie Electrique

Conception et
MICROCONTROLEURS
Réalisation d’un ET
APPLICATIONS
moteur
Lorem desit amet,
ipsum dolor
(BAC 3consectetur
GENIE ELECTRIQUE)
recherche et
adipiscing elit.

recommandation
Par Prof. Diambomba Hyacinthe-St Tungadio
Année Académique 2023-2024
Initiation à la
Programmation des
microcontroleurs
Programmation des microcontrôleurs

Dans un passé pas très lointain, l’électronique pour les amateurs (éclairés) se
résumait essentiellement aux circuits analogiques et éventuellement en
logique câblée (portes logiques, compteurs, registres à décalage…). L’usage des
microprocesseurs était plutôt réservé à un public averti d’ingénieurs sachant
les interfacer avec différents circuits périphériques (eprom, ram…) et
programmer en assembleur.

Au fil du temps on a vu apparaître de nouveaux circuits regroupant dans une


seule puce le microprocesseur et ses circuits périphériques : les
microcontrôleurs.
On en trouve maintenant partout : automobile, lave-vaisselle, rasoir, brosse à
dent électrique, drones, …
Programmation des microcontrôleurs
L’offre en microcontrôleurs s’est développée d’autant : plus de périphériques
intégrés, capacité de calcul accrue, plus de mémoire embarquée. Il y a
maintenant de nombreux fabricants de microcontrôleurs, possédant chacun
plusieurs gammes allant du circuit « généraliste », véritable couteau suisse
électronique, à la puce spécialisée dédiée par exemple, à la régulation de
vitesse d’un moteur de ventilateur.
La voie royale pour tirer le maximum des performances de ces circuits est
toujours la programmation en assembleur. On accède alors au moindre bit
enfoui dans n’importe quel registre du circuit. Cela nécessite néanmoins un
investissement en temps conséquent, l’assembleur n’étant pas un langage très
« naturel ». De plus, d’un constructeur à l’autre, voire d’un circuit à l’autre dans
la même gamme, il existe des différences qui obligent à réapprendre tout ou
partie du langage lorsque l’on change de microcontrôleur.
Programmation des microcontrôleurs

Heureusement, avec la montée en puissance des microcontrôleurs, on voit


apparaître actuellement des compilateurs en langage C (voire même C++) qui
permettent de gagner un temps considérable pour le développement et le
débogage des programmes.
Programmation des microcontrôleurs
Intérêt de la programmation en langage C

Tout d’abord, les inconvénients : Un compilateur C produit du code plus


volumineux et moins performant que ce que sait faire un bon programmeur en
assembleur. De plus, selon le compilateur employé, on n’accède plus
difficilement, voire pas du tout à certaines ressources de bas niveau. Et n’ayant
plus besoin de plonger les mains dans le cambouis, on risque également de
moins approfondir l’étude du microcontrôleur utilisé. Un dernier point : les
compilateurs C sont souvent payants.
En contrepartie, il y a de sacrés avantages : connaître la programmation en C
permet de créer des programmes sur de multiples plateformes, à commencer
par les PC.
Programmation des microcontrôleurs
Intérêt de la programmation en langage C

Autrement dit, les connaissances utilisées sont en grande partie réutilisables.


Le C est un langage de « haut niveau », comparé à l’assembleur, qui permet
d’écrire des programmes nettement plus intelligibles et donc plus faciles à
relire et corriger ou modifier. Le compilateur contrôle la cohérence du code au
moment de la compilation et signale bon nombre d’erreurs, qui seront autant
de bogues en moins à corriger. Le compilateur prend en charge la gestion d’un
certain nombre de mécanismes fastidieux : par exemple, pas besoin de
spécifier la page mémoire dans laquelle on veut écrire, le compilateur s’en
charge ! De plus, certains compilateurs permettent tout de même d’accéder à
des ressources de bas niveau, voir même d’insérer dans le code des portions
d’assembleur.
Programmation des microcontrôleurs
Choix d’un microcontrôleur

Pour apprendre, la meilleurs solution est de se faire la main sur du concret. On


va donc étudier un vrai microcontrôleur, sachant que ce qui aura été vu sera
assez facilement transposable à d’autres. Le microcontrôleur Atmega328 est un
8 bit de la famille AVR fabriqué par Atmel qui se prête particulièrement bien à
la programmation en C. Les gammes supérieures (16 ou 32 bits) supportent
sans problème la programmation en C, mais comme se sont des circuits plus
complexes (et plus chers), commençons par quelque chose de plus simple et
de plus didactique. L’Atmega328 :
• mémoire programme de taille suffisante (32K),
• EEPROM (1 K), SRAM interne (2 K),
• nombreux périphériques intégrés,
• fréquence de fonctionnement jusqu’à 20 MHz.
Programmation des microcontrôleurs
Choix d’un microcontrôleur

Boitier PDIP (Plastic Dual In-Line) Boitier MLF (Micro Lead Frame)
Programmation des microcontrôleurs
Choix d’un microcontrôleur

Boitier PDIP (Plastic Dual In-Line)


Programmation des microcontrôleurs
Choix d’un microcontrôleur

Boitier MLF 28 pin


(Micro Lead Frame)
Programmation des microcontrôleurs
Choix d’un microcontrôleur

Boitier TQFP 32 pin


(Thin Quad Flat
Package)
Programmation des microcontrôleurs
Choix du programmateur

Une fois le programme créé, il faudra le transférer dans la mémoire


programme de l’Atmega. Pour cela, il existe plusieurs solutions :
Vous pouvez construire votre propre programmateur. De nombreuses
variantes existent, il suffit de faire une recherche sur le net pour s’en rendre
compte. Ces programmateurs se raccordent sur un port série RS232, parallèle
ou USB. Vous pouvez aussi acheter un programmateur tout fait, en état de
marche. Il en existe pour port série, parallèle et, USB ! Sachant que les ports
série RS232 et parallèle tendent à disparaître au profit de l’USB, cette dernière
option, bien que souvent un peu plus onéreuse semble être un bon choix. Il
existe en outre des outils permettant à la fois de programmer le
microcontrôleur, mais aussi de le déboguer en temps réel et tout ça avec le
microcontrôleur en place dans son circuit d’application.
Programmation des microcontrôleurs

Structure de l’Atmega328
Programmation des microcontrôleurs
Structure de l’Atmega328

Avec :
 VCC : Alimentation ; GND : la masse
 Port B (PB[7:0]) XTAL1/XTAL2/TOSC1/TOSC2 :
Le port B est un port E/S bidirectionnel de 8 bits avec des résistances pull-up internes
(sélectionnées pour chaque bit). Les tampons de sortie du port B ont des
caractéristiques d'entraînement symétriques avec une capacité de source et
d'absorption élevée. En tant qu'entrées, Les broches du port B qui sont tirées vers le
bas de manière externe génèrent une source de courant si les résistances d'excursion
haute sont activées. Les broches du port B sont tri-statiques lorsqu'une condition de
réinitialisation devient active, même si l'horloge ne fonctionne pas. Selon les réglages
du fusible de sélection d'horloge, PB6 peut être utilisé comme entrée de
l'amplificateur inverseur de l'oscillateur et comme entrée de l'horloge interne.et
comme entrée du circuit de fonctionnement de l'horloge interne.
Programmation des microcontrôleurs
Structure de l’Atmega328

 Port C (PC[5:0]) :

Le port C est un port d'E/S bidirectionnel de 7 bits avec des résistances de pull-up
internes (sélectionnées pour chaque bit). Les tampons de sortie PC[5:0]ont des
caractéristiques d'entraînement symétriques avec une capacité de source et
d'absorption élevée. En tant qu'entrées, En tant qu'entrées, les broches du port C qui
sont tirées vers le bas de manière externe génèrent une source de courant si les
résistances d'excursion haute sont activées.
Programmation des microcontrôleurs
Structure de l’Atmega328

 PC6/RESET:

Si le fusible RSTDISBL est programmé, PC6 est utilisé comme broche E/S. Notez que
les caractéristiques électriques de PC6 diffèrent de celles des autres broches du port
C.Si le fusible RSTDISBL n'est pas programmé, PC6 est utilisé comme entrée de
réinitialisation. Un niveau bas sur cette broche pendant plus longtemps que la
longueur d'impulsion minimale génère un Reset, même si l'horloge n'est pas en
marche. Des impulsions plus courtes ne garantissent pas la génération d'un Reset.
Programmation des microcontrôleurs
Structure de l’Atmega328

 Port D (PD[7:0]):

Le port D est un port E/S bidirectionnel de 8 bits avec des résistances pull-up
internes (sélectionnées pour chaque bit). Les tampons de sortie du port Dont des
caractéristiques d'entraînement symétriques avec une capacité de source et de
chute élevée. En tant qu'entrées, les broches du port D qui sont tirées vers le bas de
manière externe génèrent une source de courant si les résistances d'excursion haute
sont activées.

 AREF :
AREF est la broche de référence analogique du convertisseur A/N.
Programmation des microcontrôleurs
Structure de l’Atmega328

 ADC[7:6] :

Dans les boîtiers TQFP et VFQFN, ADC[7:6] sert d'entrées analogiques au


convertisseur analogique-numérique. Ces broches sontCes broches sont alimentées
par l'alimentation analogique et servent de canaux ADC 10 bits.
Programmation des microcontrôleurs
Les Interruptions

Un certain nombre d’événements sont susceptible de générer des interruptions : fin


de conversion de signal analogique, écriture en mémoire EEPROM terminée,
débordement de Timer, USART, SSP, changement d’état d’une entrée de port….
Si votre programme comprend une routine de gestion de cette interruption, le
déroulement normal s’interrompt et la routine de gestion de l’interruption est
exécutée.
Le gros avantage de ce mécanisme, c’est que le microcontrôleur peut vaquer à ses
occupations sans être obligé de scruter en permanence si telle ou telle action a eu
lieu. Par exemple, si un clavier est raccordé au Microcontrôleur, pas besoin de
surveiller en permanence si une touche a été activée. Si c’est le cas, le changement
d’état sur le port générera une interruption. Le PIC sera ainsi mis au courant qu’un
changement a eu lieu et exécutera les actions adéquates.
Programmation des microcontrôleurs
Le mode SLEEP

Le mode Sleep est un mode de fonctionnement particulier du PIC dans lequel celui-ci
réduit sa consommation électrique au minimum. Il est presque entièrement
désactivé, son oscillateur est éteint. Le microntroleur est en mode « veille » !
Pour sortir de cette torpeur, il faut un des événements suivant :
 Reset du circuit, ou
 Réveil par le Watch-Dog Timer (ci celui-ci est activé, il continue de fonctionner en mode
SLEEP)
 Interruption générée par un module périphérique (Timer, convertisseur A/D, changement
d’état de port, ….)
Ce mode peut être particulièrement intéressant pour une application fonctionnant
sur pile ou batterie et qui ne requiert le fonctionnement du microprocesseur qu’à la
survenue d’événements particuliers. On prolonge ainsi considérablement
l’autonomie.
Programmation des microcontrôleurs
Conclusion

Ainsi s’achève notre survol de l’Atmega328. Vous savez maintenant ce qui se cache
dans la boîte, et avec quels outils nous allons le programmer. Notre prochain objectif
sera de le faire fonctionner. On pourra passer ensuite à l’étude un peu plus détaillée
des différents périphériques.
----
La carte de développement
Arduino
Carte de développement Arduino
Présentation

Arduino est une plateforme open-source de développement électronique


basée sur du matériel et un logiciel faciles à utiliser. Elle est principalement
utilisée par les amateurs, les étudiants et les professionnels pour créer des
projets interactifs et des prototypes électroniques.

Le cœur de la plateforme Arduino est un microcontrôleur programmable. Les


cartes Arduino sont dotées de divers microcontrôleurs fabriqués par différentes
sociétés. Les cartes Arduino sont généralement équipées d'entrées/sorties (E/S)
numériques et analogiques, qui peuvent être utilisées pour se connecter à
divers composants électroniques tels que des capteurs, des actionneurs, des
moteurs, des LED, etc.
Carte de développement Arduino
Présentation

Arduino est également accompagné d'un environnement de développement


intégré (EDI) qui facilite la programmation des cartes Arduino. L'EDI est basé sur
le langage de programmation Wiring, qui est une version simplifiée de C/C++.

Arduino est devenu extrêmement populaire en raison de sa simplicité


d'utilisation, de sa flexibilité et de sa vaste communauté de développeurs. Les
applications d'Arduino vont de simples projets de bricolage à des applications
plus complexes telles que le contrôle de robots, l'automatisation domestique, la
surveillance environnementale, etc.
Carte de développement Arduino
Historique

L’Arduino est un projet inventé en 2005 par une équipe italienne de l’Institut du
Design d’Interaction d’Ivrea désirant permettre à des étudiants en art et en
design de créer tout type de projets grâce à une petite carte électronique que
l’on programmerai facilement via un logiciel.
Carte de développement Arduino
Les différentes cartes

Il existe plusieurs cartes arduino qui sont regroupées en catégories :

 Lesdites « officielles », qui sont fabriquées en Italie par le fabricant officiel :


Smart Projects.
 Lesdits « compatibles », qui ne sont pas fabriqués par Smart Projects, mais
qui sont totalement compatibles avec les Arduino officielles.
 Les « autres », fabriquées par diverses entreprises et commercialisées sous
un nom différent (Freeduino, Seeduino, Femtoduino, …).
Carte de développement Arduino
Les modèles

Il existe plusieurs modèles des cartes arduino, les principales sont :


Arduino Uno : C'est l'une des cartes Arduino les plus populaires. Elle est équipée d'un
microcontrôleur ATmega328P et offre un bon équilibre entre performances et
fonctionnalités. Elle dispose de suffisamment d'E/S numériques et analogiques pour de
nombreux projets.
Carte de développement Arduino
Les modèles

Arduino Mega : Cette carte est similaire à l'Arduino Uno mais avec beaucoup
plus d'E/S. Elle est équipée d'un microcontrôleur ATmega2560, offrant une plus
grande capacité de traitement et une plus grande mémoire pour les projets
nécessitant de nombreuses connexions d'E/S.
Carte de développement Arduino
Les modèles

Arduino Nano : Cette carte est plus compacte que l'Arduino Uno, ce qui la rend
idéale pour les projets où l'espace est limité. Elle est basée sur le même
microcontrôleur ATmega328P que l'Uno, mais avec une taille réduite.
Carte de développement Arduino
Les modèles

Arduino Due : Cette carte est basée sur un microcontrôleur ARM Cortex-M3 plus
puissant, offrant des performances accrues par rapport aux cartes basées sur des
microcontrôleurs AVR. Elle est adaptée aux projets nécessitant une puissance de
calcul supérieure.
Carte de développement Arduino
Les modèles

Arduino Leonardo : Cette carte utilise un microcontrôleur ATmega32u4 avec une


fonctionnalité de communication USB intégrée, ce qui la rend idéale pour les
projets nécessitant une émulation de clavier ou de souris, ainsi que pour le
développement de périphériques USB.
Carte de développement Arduino
Les modèles

Arduino Pro Mini : Cette carte est similaire à l'Arduino Nano en termes de taille,
mais elle est conçue pour être utilisée dans des projets où l'espace est critique.
Elle est également basée sur le microcontrôleur ATmega328P.

Il existe de nombreuses autres variantes et dérivées d'Arduino, chacune


adaptée à des besoins spécifiques en termes de taille, de performances ou
de fonctionnalités.
Carte de développement Arduino
Arduino UNO

Pour ce cours, nous nous baserons sur le plus connu: l'Arduino Uno. Mais un
autre modèle ou un clone fera aussi bien l'affaire.
Carte de développement Arduino
Arduino UNO

Entrée et sortie
Chacune des 14 broches numériques de l'Arduino Uno peut être utilisée
comme entrée ou sortie, à l'aide des fonctions pinMode(), digitalWrite() et
digitalRead(). Ils fonctionnent à 5 volts. Chaque broche peut fournir ou recevoir
un maximum de 40 mA et possède une résistance de rappel interne
(déconnectée par défaut) de 20 à 50 kOhms.
De plus, certaines broches ont des fonctions spécialisées :

Série : broches 0 (RX) et 1 (TX). Utilisé pour recevoir (RX) et transmettre (TX)
des données série TTL. Ces broches sont connectées aux broches
correspondantes de la puce série ATmega8U2 USB-to-TTL.
Carte de développement Arduino
Arduino UNO

Interruptions externes : broches 2 et 3. Ces broches peuvent être configurées


pour déclencher une interruption sur une valeur faible, un front montant ou
descendant, ou un changement de valeur. Voir la fonction attachInterrupt()
pour plus de détails.
PWM : 3, 5, 6, 9, 10 et 11. Fournit une sortie PWM 8 bits avec la fonction
analogWrite().
SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ces broches prennent en charge la
communication SPI à l'aide de la bibliothèque SPI.
LED : 13. Il y a une LED intégrée connectée à la broche numérique 13. Lorsque
la broche est de valeur HAUTE, la LED est allumée, lorsque la broche est FAIBLE,
elle est éteinte.
Carte de développement Arduino
Arduino UNO

L'Uno dispose de 6 entrées analogiques, étiquetées A0 à A5, chacune


fournissant 10 bits de résolution (soit 1024 valeurs différentes). Par défaut, ils
mesurent de la terre à 5 volts, mais il est possible de modifier l'extrémité
supérieure de leur plage à l'aide de la broche AREF et de la fonction
analogReference(). De plus, certaines broches ont des fonctionnalités
spécialisées :
I2C : broche A4 ou SDA et broche A5 ou SCL. Prend en charge la communication
TWI à l'aide de la bibliothèque Wire.
Il y a quelques autres broches sur la carte:
AREF : Tension de référence pour les entrées analogiques. Utilisé avec
analogReference().
Carte de développement Arduino Arduino UNO

https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf
Arduino UNO
L’alimentation

Pour fonctionner, une carte Arduino a besoin d'une alimentation. Le


microcontrôleur fonctionnant sous 5V, la carte peut être alimentée en 5V par
le port USB ou bien par une alimentation externe qui est comprise entre 7V et
12V. Un régulateur se charge ensuite de réduire la tension à 5V pour le bon
fonctionnement de la carte.

Attention: les cartes Arduino Due ainsi que d'autres cartes récentes
fonctionnent avec un voltage de 3.3V au niveau des sorties! Le voltage de
l’alimentation est similaire à l’Arduino Uno. Dans ce cours, nous partons du
principe que le voltage des montages est en 5 Volts.
Arduino UNO
La platine d’expérimentation

Une platine d’expérimentation (appelée breadboard) permet de réaliser des


prototypes de montages électroniques sans soudure et donc de pouvoir
réutiliser les composants.
Arduino UNO
La platine d’expérimentation

Tous les connecteurs dans une rangée de 5 sont reliés entre eux. Donc si on
branche deux éléments dans un groupe de cinq connecteurs, ils seront reliés
entre eux. Il en est de même des alignements de connecteurs rouges (pour
l’alimentation) et bleus (pour la terre). Ainsi, les liens peuvent être
schématisés ainsi:
Arduino UNO
La platine d’expérimentation

Les composants doivent ainsi être placés à cheval sur des connecteurs qui
n'ont pas de liens électriques entre eux, comme sur le schéma ci-dessous :
Arduino UNO
L’IDE Arduino

Pour programmer sous


Arduino nous avons besoin
de son environnement de
développement intégré, le
logiciel Arduino IDE
fonctionne sur Mac,
Windows et Linux. C'est grâce
à ce logiciel que nous allons
créer, tester et envoyer les
programmes sur l'Arduino.
Arduino UNO
Téléchargement et installation de l’IDE Arduino

Dans ce cours, nous allons utilisé la version 2 de l’IDE Arduino disponible à


l’adresse : https://www.arduino.cc/en/software
Il est disponible pour
Windows, macOS et Linux.
Arduino UNO
L’interface de l’IDE
Arduino UNO
L’interface de l’IDE

 Verify / Upload (Vérifier/Télécharger) : compilez et téléchargez votre code


sur votre carte Arduino.
 Select Board & Port (Sélectionnez Carte et port) : les cartes Arduino
détectées s'affichent automatiquement ici, avec le numéro de port.
 Sketchbook (Carnet de croquis) : vous trouverez ici tous vos croquis
stockés localement sur votre ordinateur. De plus, vous pouvez vous
synchroniser avec Arduino Cloud et également obtenir vos croquis à partir
de l'environnement en ligne.
 Boards Manager (Gestionnaire des cartes) : parcourez les packages
Arduino et tiers qui peuvent être installés. Par exemple, l'utilisation d'une
carte MKR WiFi 1010 nécessite l’Arduino SAMD Boards paquet installé.
Arduino UNO
Projet 1 : le circuit électrique

Réalisez le circuit suivant :


Liste des composants :

 1 Led
 1 résistance de 220 à 470 Ω
 2 câbles
Arduino UNO
Code couleur des resistances
Arduino UNO
Code source projet 1 :
Arduino UNO
Déroulement du programme

Le programme se déroule de la
façon suivante :

1. Prise en compte des instructions


de la partie déclarative
2. Exécution de la partie
configuration ( fonction setup( ) )
3. Exécution de la boucle sans fin (
fonction loop ( ) ): le code
compris dans la boucle sans fin
est exécuté indéfiniment.
Arduino UNO
Le code minimal

Avec Arduino, nous devons utiliser un code minimal lorsqu'on crée un


programme. Ce code permet de diviser le programme en deux parties.
Arduino UNO
Analyse du code 1

 La ligne pinMode(13, OUTPUT); initialise la broche 13 du microcontrôleur


comme sortie, c'est-à-dire que des données seront envoyées depuis le
microcontrôleur vers cette broche (on va envoyer de l'électricité).
 La ligne Serial.begin(9600); initialise le port série qui permet à l'Arduino
d'envoyer et de recevoir des informations à l'ordinateur. C'est
recommandé, mais cela fonctionne aussi sans.
 Avec l'instruction digitalWrite(13, HIGH);, le microcontrôleur connecte la
broche D13 au +5V ce qui a pour effet d'allumer la LED (de l'électricité sort
de la broche D13).
 L'instruction delay(500); indique au microcontrôleur de ne rien faire
pendant 500 millisecondes, soit ½ seconde.
Arduino UNO
Analyse du code 1

 Avec l'instruction digitalWrite(13, LOW);, le microcontrôleur connecte la


broche D13 à la masse (Gnd) ce qui a pour effet d'éteindre la LED (on
coupe l'alimentation en électricité).
 L'instruction delay(500); indique au microcontrôleur à nouveau de ne rien
faire pendant 500ms soit ½ seconde. Le résultat est donc que la LED
s'allume pendant ½ seconde, puis s'éteint pendant une ½ seconde puis
s'allume pendant ½ seconde... elle clignote donc.

Profitons maintenant pour voir ce que signifie le terme Output. Il s’agit de


préciser si la broche est une entrée ou une sortie. En effet, le microcontrôleur
a la capacité d'utiliser certaines de ses broches en entrée (INPUT) ou en sortie
(OUTPUT).
Arduino UNO
Analyse du code 1

Il suffit simplement d’interchanger une ligne de code pour dire qu'il faut
utiliser une broche en entrée (récupération de données) ou en sortie (envoi
de données).

Cette ligne de code doit se trouver dans la fonction setup(). La fonction est
pinMode(), comme dans l'exemple ci-dessous:
Arduino UNO
Projet 3: faire clignoter quatre LEDs
Contacts :
KALELA NGOY SALMAN
+243 99 435 1324
ngoy.kalela@gmail.com

Vous aimerez peut-être aussi