Connaître et programmer les microcontrôleurs par la pratique
188 pages
Français

Connaître et programmer les microcontrôleurs par la pratique , livre ebook

-

Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus
188 pages
Français
Obtenez un accès à la bibliothèque pour le consulter en ligne
En savoir plus

Description

On rencontre ces vingt dernières années de plus en plus des systèmes àmicroprocesseurs qui ont envahi notre quotidien du domaine du grandpublic au démotique en passant par les domaines du bricolage. La miseen place de ces systèmes embarqués passe indispensablement par laconnaissance des microcontrôleurs notamment ARDUINO, STM32 etPIC. Dans les formations d’ingénieur ou technicien on initie souvent lesapprenants par la connaissance la programmation des microcontrôleurs8 bits afin de leur faciliter la connaissance des différents modules quepeut composer ce microcontrôleur 32 bits. Dans le cadre de cet ouvrage,nous présentons en détail les principaux modules des microcontrôleursde la famille PIC16F, notamment les entrée-sortie, numériques, leconvertisseur analogique numérique, les différents modules timer, lesprotocoles de communications notamment UART, SPI, I2C et lesdifférentes sources d’interruption (externe changement des états,débordements, timer...). Ces exemples et activités documentés etcorrigés sont associés à chacune des notions abordées dans cet ouvrage.

Sujets

Informations

Publié par
Date de parution 01 juillet 2021
Nombre de lectures 4
EAN13 9782376701439
Langue Français
Poids de l'ouvrage 1 Mo

Informations légales : prix de location à la page 0,05€. Cette information est donnée uniquement à titre indicatif conformément à la législation en vigueur.

Exrait









Connaître et programmer les
microcontrôleurs par la pratique

Cours et activités documentés et corrigés















































2
KHAMIS YOUSSOUF













Connaître et programmer les
microcontrôleurs par la pratique

Cours et activités documentés et corrigés













Editions Toumaï
L’éditeur de nouveaux talents
3




















4
Cet ouvrage publié aux Éditions Toumaï est protégé par les lois
et traités internationaux relatifs aux droits d’auteur. Son
impression sur papier est strictement réservée à l’acquéreur et
limitée à son usage personnel. Toute autre reproduction ou
copie, par quelque procédé que ce soit, constituerait une
contrefaçon et serait passible des sanctions prévues par les textes
susvisés et notamment le Code de la Propriété intellectuelle et
les conventions internationales en vigueur sur la protection des
droits d’auteur.


Éditions Toumaï
Avenue Taïwan
B.P: 5451 N’Djaména-Tchad
Tél:+235 63 05 65 02
e-mail: editionstoumai30@yahoo.com


ISBN : 978-2-37670-143-9








Cet ouvrage a fait l’objet d’une deuxième publiation aux Éditions Toumaï en Juillet 2021
5



















6
Avant-propos

Durant les années cinquante la réalisation d’un cahier de
charge dans le domaine de l’ingénierie faisait appel à
l’association des relais électromécaniques et des organes
pneumatiques afin d’assurer un fonctionnement donné. Des
soucis refont surface dans la mesure où quelques spécifications
du cahier de charge changent ce qui oblige les ingénieurs de
l’époque de refaire en partie ou dans certains cas complètement
le câblage. Cette notion est connue sous le nom de la logique
câblée ce qui veut dire qu’à chaque cahier de charge un câblage
est dédié. Or ceci présente des inconvénients notamment le
temps d’exécution du câblage qui engendre de coûts
supplémentaires et le manque de flexibilité afin de s’adapter
conformément à un de cahier donné. Au début de la décennie
soixante un autre composant essentiel logeant des centaines
voire de milliers de transistors à l’époque voit le jour avec la
possibilité de réaliser plusieurs opérations logiques. Ce
composant est le processeur en anglais Central Processor Unit
qui présente la capacité d’adaptation d’un cahier de charge
donné par du simple codage informatique c’est ce qu’on appelle
la logique programmée. Un processeur est l’organe principal des
ordinateurs, tablettes et téléphones que nous rencontrons dans
notre quotidien et qui a la capacité d’exécuter des milliards
d’instructions en une seconde. De façon simpliste un processeur
est composé d’une unité arithmétique logique UAL (en anglais
Aritmetic Logic Unit) qui est chargée d’effectuer les opérations
arithmétiques (addition, soustraction...) et logiques
(comparaison), des mémoires qui stockent les données et des
bus de données/d’adresses. À ces éléments s’associent des
périphériques d’entrées et de sorties qui permettent d’interagir
avec le monde extérieur.
De nos jours on rencontre dans le même boîtier un
processeur, des périphériques d’entrées/sorties, des fonctions
7
Timers/ADC, des interruptions afin de former ce qu’on appelle
microcontrôleur. Les grandes familles de microcontrôleurs sont
notamment celles de MICROCHIP scindés en deux groupes, qui
sont les PIC des plus standards par exemple les familles PIC10,
PIC12 ou PIC16-PIC18F aux plus sophistiqués telles que les
familles de PIC24 et PIC32MX. Le deuxième groupe de
microcontrôleurs de chez MICROCHIP est la famille AVR et
les plus célèbres d’entre eux sont les cartes ARDUINO utilisés
dans beaucoup d’application de types amateurs. On rencontre les
familles ST de chez STMicroelectronics qui est un constructeur
franco-italien avec des microcontrôleurs 8 bits et son célèbre
STM32 basé sur une architecture ARM que l’on trouve sur le
marché à des prix relativement faibles.
Dans le cadre de cet ouvrage nous allons nous intéresser
sur les premières familles des microcontrôleurs PIC et
particulièrement à la famille PIC16F nommée Mig-Range. Les
raisons de ce choix sont leur facilité de mise en œuvre en termes
de programmation car ils présentent des ressources minimales
mais nécessaires pour faciliter la compréhension aux débutants
et leur donner accès aux principales fonctions, ensuite leur
performance notamment la vitesse qui pourra attendre jusqu’à
20MHz avec une possibilité d’activer des horloges internes. Il
faut remarquer que la plupart des microcontrôleurs PIC16F
présentent de similitudes en ce qui concerne leurs ressources
internes tels que les modules Timer0, USART, ADC…bien
qu’ils puissent dans certains cas avoir des différences sur
certaines ressources et en particulier sur les registres associés à
ces derniers.
Cet ouvrage offre une large information sur l’architecture
interne des principaux modules des microcontrôleurs PIC16F, la
manière la plus détaillée possible pour activer les différents bits
des registres de ces modules afin de les programmer et rendre ce
programme portable, à chaque module un exemple d’application
pratique et des activités qui sont sous forme de mini-projets sont
proposés avec leurs corrigés documentés. Les microcontrôleurs
8
PIC16F étant nombreux donc nous avons fait le choix sur le
PIC16F690 pour la présentation des différents modules et
l’expérimentation pour tester les codes développés.
Cet ouvrage est subdivisé en cinq principaux chapitres
répartis comme suit :
Chapitre I consacré aux entrées et sortie ou Input Output.
Il est de coutume qu’un microcontrôleur doit agir avec le monde
qui l’entoure afin de jouer pleinement son rôle dans un système
embarqué dans le cas contraire il ne servira à rien. Par exemple
pour contrôler un chauffage d’une enceinte et arrêter ce dernier
lorsqu’une consigne est atteinte, le système embarqué destiné
pour cette application aura nécessairement besoin d’une prise de
température et d’un mécanisme de coupure de courant ce qui
impose de connaître les entrées et sortie.
Chapitre II quant à lui est réservé à la conversion
analogique numérique, notion indispensable pour faciliter
l’interfaçage entre un microcontrôleur et un capteur analogique.
Par exemple contrôler le débit d’eau dans une installation
quelconque à l’aide d’un capteur analogique, le microcontrôleur
utilisera impérativement son convertisseur analogique
numérique pour assurer cette acquisition.
Chapitre III montre l’importance et les applications des
Timers dans un microcontrôleur. Ce sont des modules très
important dont le nombre varie d’un microcontrôleur à un autre
et qui permettent de compter des processus ou des durées. Par
exemple lorsqu’un utilisateur souhaite qu’après une durée
donnée un évènement se déclenche, le système embarqué
associé à cette tâche fait appel à des ressources comme des
Timers.
Un quatrième chapitre dédié aux protocoles de
communications est décrit. Dans le monde industriel il existe
plusieurs protocoles qu’on utilise de l’UART au SPI/I2C en
passant par les bus CAN/I2C pour communiquer entre différents
organes d’une installation. Par exemple dans la domotique pour
contrôler ses volets, l’utilisateur aura besoin de connaître les
9
positions de ces derniers afin que son système embarqué envoie
un ordre pour le fermer à distance au travers d’un serveur Web
ou une application mobile par exemple. Ce qui fait appel à une
communication à distance d’où l’intérêt de connaître les
principaux protocoles de communications dans les PIC16F.
Le chapitre V dresse un bilan sur des notions très
importantes appelées interruptions qui sont des fonctionnalités
très particulières que présentent les microcontrôleurs afin de
réaliser un saut d’instruction pour en exécuter d’autres. Les
sources d’interruption peuvent être nombreuses et dépendantes
du module utilisé. Par exemple on conçoit un système embarqué
pour contrôler des lampes dans l’habitat et qu’une action
extérieure par exemple un détecteur de mouvement à une heure
donné engendre une alarme. D’où l’intérêt de présenter les
différentes sources d’interruption dans les microcontrôleurs
PIC16F.



















10
Chapitre I : Entrées et sortie

De nos jours l'utilisation des systèmes embarqués est
devenue de plus en plus importante dans nos quotidiens et c'est
en grande partie à cause des systèmes à microcontrôleur qui ont
envahi notre quotidien en passant par le téléphone portable que
nous utilisons, les jeux gaming et aussi des systèmes de contrôle
de température par exemple dans nos frigos. Classiquement un
système à microcontrôleur se base sur l'utilisation des 3
principaux éléments qui sont le réseau des capteurs, la partie
actionneurs et le chef d’orchestre qui est le microcontrôleur. À
l'issue de cette architecture on constate qu'il y a une partie en
entrée représentée par l'assemblage de ces capteurs, une
deuxième partie représentée par des sorties qui sont les
actionneurs et le troisième élément qui permet l’interconnexion
entre ces différents éléments représente par le microcontrôleur
en question comme nous le montrons sur la figure ci-dessous.



Figure 1 : Architecture de base de l’embarqué
Nous prenons 2 exemples afin d'illustrer la notion des
entrées et des sorties. Par exemple avec une calculatrice si nous
désirons faire une opération d'addition de 2 nombres, l'utilisateur
va utiliser le clavier de la calculatrice afin d’entrer ces nombres,
ensuite le système interne de la calculatrice va effectuer cette
opération et enfin afficher le résultat sur son écran d'affichage.
Donc dans cette configuration le clavier joue le rôle d’un
périphérique en entrée, l’écran d’affichage du type LCD quant à
lui fait office d’une sortie et l'organe de la calculatrice qui
11
permet d'assurer cette opération et donner l’ordre pour
l’affichage est le microcontrôleur.
Le deuxième exemple concerne le contrôle de la
température d'une enceinte par capteur de température
analogique quelconque et qu’on va imaginer fixer une consigne
à atteindre. Lorsque cette consigne est atteinte un système coupe
automatiquement le système de chauffage et à la place remettre
une ventilation par exemple.
À l'issue de ces 2 exemples nous constatons qu'il y a 3
différentes notions notamment des entrées de natures
analogiques et numériques et des sorties numériques. Dans notre
précédent exemple, le clavier peut être considéré comme une
entrée numérique, le capteur de température analogique quant à
lui peut être considéré comme une entrée analogique et le
système de chauffage et/ ou ventilation deviennent des sorties
numériques.

1. Entrées numériques
Comme il existe d'entrées numériques et des sorties
numériques on peut imaginer qu’une broche d'un
microcontrôleur quelconque peut être dirigée soit du
microcontrôleur vers le monde extérieur ou du monde extérieur
vers monde le microcontrôleur. La plupart des microcontrôleurs
disposent des registres nommés TRIS qui assurent la direction
d’une broche quelconque du microcontrôleur depuis ou vers le
microcontrôleur. La mise à 1 force la broche correspondante à
devenir comme entrée alors la mise à 0 la forcera à devenir
comme sortie :
TRISxy_bit= 0, équivaut à configurer la broche y du port x
comme sortie
TRISxz_bit= 1, équivaut à configurer la broche z du port x
comme entrée.
Comme nous l'avons précisé ci-haut nous avons 2 types
d'entrées, l’une numérique et l’autre analogique ça veut dire
qu'une entrée a une nature et un type (numérique et analogique).
12
Le registre TRIS se contente quant à lui de définir la direction
de cette entrée. Le type de cette entrée est défini par d'autres
types de registres par exemple pour certains microcontrôleurs
des registres ANSEL/ANSELH ou pour d'autres le registre
ADCON1 (par exemple le PIC16f876/877).
Configurer une broche comme entrée numérique du
PIC16F690 revient à mettre 0 logique dans le bit correspondant
du registre ANSEL en revanche pour d'autres PIC comme les
PIC16F876 ou le PIC16F877 qui ne disposent pas des registres
ANSEL/ANSELH, la configuration d'une broche en entrée
numérique revient à mettre une valeur correspondante à 6 ou 7
décimal aux 4 derniers bits du registre ADCON1.
PIC16F690 :
ANSEL=0b00000000 revient à configurer les RA0,
RA1, RA2, RA4 et RC0…RC3 comme entrées numériques.
PIC16F876 :
ADCON1=6 ou 7 configure les entrées RA0, RA1, RA2, RA3 et
RA5 comme entrées numériques.
La question que l'on pourra valablement se poser est que fait-on
avec une entrée numérique ? La réponse est simple une entrée
numérique peut être représentée plus facilement par un
boutonpoussoir, le clavier d’une calculatrice ou un capteur tout ou rien.
L’utilisation du bouton-poussoir repose sur la notion d'impulsion
ça veut dire que l’appuie sur le bouton-poussoir donne naissance
à une quelconque action et le relâchement en donne une autre.
Dans ce cas on peut le modéliser par un bouton-poussoir et une
résistance comme le montre la figure a. Certains
microcontrôleurs disposent des broches qui présentent des
résistances de tirage interne appelé résistance pull up ce qui
permettrait de se passer des résistances qu’on place en externe et
donc dans ce cas les entrées numériques peuvent être
représentées par le modèle de la figure b.
L'activation de ces résistances internes, se fait par la mise
à 0 du bit numéro 7 du registre OPTION_REG appelé RABPU
et ensuite une activation individuelle de la broche
13
correspondante au travers de son bit par exemple WPUA0 pour
RA0. Avec le compilateur MikroC on peut représenter avec ces
différentes notations :
OPTION_REG=0b0xxxxxx ou OPTION_REG.F7=0.
La modélisation électrique d’une entrée numérique peut
se faire à l’aide de ces deux schémas a et b ci-après.
Sur la figure a, l’appuie sur le bouton-poussoir, active
cette entrée, alors qu’au repos cette entrée est désactivée. Au
contraire sur la figure b, si le bouton-poussoir est au repos cette
entrée est activée et son appui désactive cette entrée.








Figure 2 : représentation bouton-poussoir
Exemple : Écrire un programme permettant d'allumer
une LED reliée à la broche RC0 du PIC16F690, lorsqu'un
bouton-poussoir connecté sur la branche RA0 est appuyé.
À travers ce cahier de charge nous avons 2 principaux éléments,
à savoir une entrée numérique représentée par le
boutonpoussoir connecté sur la broche RA0 et une sortie numérique
représentée par la LED connectée sur la branche RC0 (voir
partie dédiée aux sorties numériques). Le programme répondant
à ce cahier de charge est donné ci-dessous :

1: void main() //Fonction principale
2: {
3: TRISC0_bit=0;//Configuration RC0 comme sortie
4: PORTC=0;//Initialisation du PORTC
5: ANSEL.F0=0;//Configuration RA0 comme entrée
numérique
14
6: IRCF2_bit=1;IRCF1_bit=1;IRCF0_bit=1;//Configuration
Horloge interne à 8MHz
7: while(1)//Boucle infinie
8: {
9: if(RA0_bit)//Vérification de l'appui sur RA0
10: {
11: PORTC.F0=1; //Allumage de la LED reliée sur RC0
12: }
13: }
14: }

2. Entrées analogiques
Les entrées analogiques sont utilisées pour traiter des
signaux de type analogiques, par exemple des signaux provenant
des capteurs analogiques. Le microcontrôleur PIC16F690
dispose des 12 entrées des types analogiques. On peut constater
que ces entrées constituent les canaux du module convertisseur
analogique numérique du microcontrôleur. La configuration
d'une entrée analogique peut se faire à l'aide du registre TRIS
pour certains microcontrôleurs lorsque ce dernier reçoit le
nombre logique 1, par exemple le PIC16F876. En revanche pour
le PIC16F690 cette configuration se fait à l'aide des registres
ANSEL/ANSELH qui devaient recevoir la valeur 1.
Classiquement une entrée analogique peut être représentée par la
température en sortie du capteur LM35, le son provenant d'un
microphone ou encore la tension d'une broche d’un
potentiomètre.
PIC16F690 :
ANSEL=0b00000001 revient à configurer la broche RA0
comme entrée analogique. Alors que pour le PIC16F876 on
écrit : TRISA0_bit=1 pour faire la même configuration.
On peut conclure qu’à la suite de nos deux présentations
relatives aux entrées numériques et analogiques, les registres
ANSEL et ASNELH permettent de configurer ces entrées du
15
PIC16F690 lorsqu'ils reçoivent respectivement des valeurs 0 et
1.
Quelques exemples d’applications des entrées
analogiques sont donnés dans le chapitre II dédié à la conversion
analogique numérique.

3. Sorties numériques
Quand on parle d’une sortie numérique, c'est comme
parler de l'affichage LCD de la calculatrice que nous avons
donné en exemple. En général, la sortie représente la partie qui
concerne les actionneurs d’un système technique quelconque.
Donc les sorties numériques assurent la communication depuis
le microcontrôleur vers le monde extérieur. Classiquement on
peut utiliser une LED, un moteur électrique ou un relais afin de
représenter ces sorties numériques. La configuration d’une sortie
numérique se fait pour la plupart des microcontrôleurs PIC à
l'aide du registre TRIS qui devait avoir la valeur logique 0. En
revanche pour le microcontrôleur PIC16F690 cette
configuration se fait par le biais des registres ANSEL/ANSELH
qui doivent recevoir la valeur 0.
ANSEL=0b00000000 revient à configurer la broche RA0
comme sortie numérique pour le PIC16F690. Alors que pour le
PIC16F876 on écrit : TRISA0_bit=0 pour faire la même
configuration.
Il faut rappeler qu’une broche d'un microcontrôleur
configurée en sortie numérique délivre un courant maximal de
l'ordre de 25mA.
Par exemple lorsqu'on souhaite allumer une LED reliée à
la broche RC0 du PIC16F690, cette dernière ne peut pas être
directement câblée à cette broche au risque de la détruire. On
doit utiliser une résistance en série pour limiter le courant la
traversant comme le montre la figure ci-après. Pour assurer le
bon fonctionnement de cette LED, la valeur de la résistance
devrait être obtenue par la loi de maille. Par exemple pour une
16





LED de couleur rouge avec de valeurs caractéristiques V =1.6V F
et I =20mA, il faut une résistance de valeur 180Ω. D
_ = _ + �� _
Figure 3 : représentation électrique PIC avec une LED
La question que l'on pourra se poser est que dans la
plupart de cas, les actionneurs ont besoin de courant d'intensité
beaucoup plus grand que le courant de 25mA délivré par une
sortie numérique, que faut-il faire ? La réponse est simple, on
fait appel à un amplificateur de courant comme le transistor
bipolaire.
Prenons l'exemple d'une lampe alimentée sous une
tension de 9V et consommant un courant de 80mA, dans ce cas
le transistor du type 2N2222A peut assurer l'amplification de
courant en sortie du microcontrôleur afin d'alimenter
convenablement cette lampe avec le courant désiré. Le montage
ci-dessous de type polarisation par résistance de base d'un
transistor bipolaire pourra assurer ce fonctionnement, donc reste
à dimensionner convenablement la résistance de base du
transistor.
17



��











Figure 4 : commande d’une lampe avec PIC
D'après la Datasheet du constructeur, le 2N2222A
représente les caractéristiques suivantes :
β= 75 , I =800mA, V =0.9V, et V =0.3V. CMAX BE CEsat
Le calcul de la résistance peut être obtenu par
l’utilisation de la maille à travers celle d’entrée côté sortie
microcontrôleur et de sortie côté lampe :
_ = _�� + _ _
_�� = _ + _ _
Afin de mettre en pratique la notion de la programmation
de ces sorties numériques, nous prenons un exemple qui consiste
à écrire un programme sur PIC16F690 qui permettra d’allumer
une LED reliée sur sa broche RC0. Ensuite modifier ce
programme qui va clignoter 8 LED reliées sur le PORTC toutes
les 2 secondes au même moment. Pour cela nous devons
examiner le cahier de charge afin d’écrire convenablement ce
programme.
Dans la première partie du cahier de charge on parle
d'allumer une LED ce qui revient à lui appliquer une tension
supérieure à 0, du point de vue logique on doit lui appliquer un
ième‘1’ logique. Le 2 élément est que cette LED est connectée sur
une sortie RC0 doit être configurée comme sortie. Donc le
programme correspondant est celui donné ci-dessous :
1: void main(){ //Fonction principale
2: TRISC0_bit=0;//Configuration RC0 comme sortie
18

  • Accueil Accueil
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • BD BD
  • Documents Documents