Polycopié de TP ETI 1A2S 2015-2016

publicité
LEnsE
Laboratoire d’Enseignement Expérimental
Électronique embarquée
1A 2S - EITI
F. BERNARD - J. VILLEMEJANE
Cycle Ingénieur - 1ère année - Palaiseau
Année universitaire 2015-2016
Version du 5 janvier 2016
ii
Électronique TP
Calendrier
v
Règles de fonctionnement
vii
Évaluation de votre travail
xi
Thème 4 - Transmission numérique par la lumière
1
1
Utiliser un microcontrôleur
3
2
Gestion du temps et IHM
19
3
Commande d’un bandeau lumineux
29
iii
iv
ÉLECTRONIQUE TP
Laboratoire d’Enseignement Expérimental
1A2S - EITI
LEnsE
Calendrier
Semaine
Date
Horaire
Groupe/1
8h30
8h30
8h30
TH4.1
TH4.2
Groupe/2
2
lun$11$janv
mar$12$janv
mer$13$janv
3
lun$18$janv
5
lun$25$janv
mar$26$janv
mer$27$janv
8h30
8h30
8h30
lun$1$févr
mar$2$févr
mer$3$févr
8h30
8h30
8h30
TH4.1
lun$8$févr
mar$9$févr
mer$10$févr
8h30
8h30
8h30
TH4.2
lun$15$févr
mar$16$févr
mer$17$févr
8h30
8h30
8h30
TH4.3$+ex
8
9
lun$22$févr
lun$29$févr
mar$1$mars
mer$2$mars
jeu$3$mars
8h30
8h30
8h30
TH4.4$+ex
10
8h30
13h30
Projet$1
Projet$2
6
7
lun$7$mars
mer$9$mars
TH4.1
TH4.2
TH4.2
TH4.3$+ex
TH4.1
TH4.4$+ex
TH4.2
TH4.3$+ex
TH4.3$+ex
TH4.4$+ex
TH4.4$+ex
Projet$1
Projet$2
Projet$3
8h30
13h30
Projet$3
8h30
13h30
Projet$1
Projet$2
Projet$1
Projet$2
Projet$3
8h30$(en$info)
jeu$10$mars
8h30
13h30
Projet$3
8h30$(en$info)
12
lun$14$mars
13
lun$21$mars
mer$23$mars
jeu$24$mars
8h30
8h30
mar$29$mars
mer$30$mars
jeu$31$mars
8h30
8h30
8h30
lun$4$avr
mar$5$avr
mer$6$avr
jeu$7$avr
8h30
8h30
8h30
8h30
Projet$4
8h30
8h30
8h30
Projet$5
16
lun$11$avr
mar$12$avr
mer$13$avr
17
lun$18$avr
18
lun$25$avr
8h30
13h30
8h30
13h30
8h30
13h30
8h30
13h30
Projet$6
Projet$7
14
15
lun$2$mai
mar$3$mai
19
mer$4$mai
ven$6$mai
20
lun$9$mai
21
lun$16$mai
22
jeu$26$mai
Groupe/5
Synthèses$Th3
8h30$(en$info)
11
Groupe/4
TH4.1
8h30$(en$info)
mar$8$mars
Groupe/3
TH4.3$+ex
TH4.4$+ex
Synthèses$Th3
Synthèses$Th3
Synthèses$Th3
Projet$4
Projet$4
Projet$4
Projet$4
Projet$5
Synthèses$Th3
Projet$5
Projet$5
Projet$5
Projet$6
Projet$7
Projet$6
Projet$7
Projet$6
Projet$7
Remise$des$dossiers$et$posters
Version du 5 janvier 2016, il sera mis à jour sur le site Libres Savoirs
v
vi
ÉLECTRONIQUE TP
LEnsE
1A2S - EITI
Laboratoire d’Enseignement Expérimental
Règles de fonctionnement
Toutes les informations sont affichées sur le panneau d’affichage du
LEnsE.
Consultez-le régulièrement !
Absences
La présence des étudiants à toutes les séances de travaux pratiques
prévues à l’emploi du temps est obligatoire et impérative. En cas de difficulté majeure, si un membre d’un binôme est toutefois absent,
l’autre doit venir à la séance et faire le TP. Et, en Optique, chacun
des membres du binôme rendra un compte-rendu individuel.
Absence excusée. Justificatif Le justificatif d’absence doit être déposé au secrétariat, les élèves concernés doivent aussi prévenir directement le responsable du LEnsE du motif de l’absence (à l’avance,
si l’absence est prévisible).
Absence excusée. Rattrapage L’élève doit impérativement prendre
contact avec les enseignants de TP pour étudier la possibilité de
rattrapage (suivant la disponibilité des enseignants, du matériel
et des salles). L’élève rattrape alors le TP et :
En optique, l’élève rédige un CR qui sera noté. S’il n’est pas possible de trouver une date de rattrapage suite à une impossibilité
du service des TP, le TP ne sera ni rattrapé ni noté (la moyenne
sera faite sur les notes restantes). Ce TP restera néanmoins au
programme de l’examen et l’étudiant pourra être interrogé dessus lors de l’examen de TP.
En ETI et ProTIS, la synthèse du thème concerné, rédigée par le
binôme, devra contenir des résultats des deux séances individuelles (la séance normale et celle de rattrapage).
Si l’élève refuse la date de rattrapage proposée, il sera considéré
comme absent non excusé.
Absence non excusée Toute absence non justifiée entraîne :
vii
viii
ÉLECTRONIQUE TP
En optique, un zéro pour la séance et l’impossibilité de travailler
sur ce TP avant la période de révision. En cas d’absences répétées, le responsable d’année interdira à l’étudiant de passer
l’examen en fin d’année.
En ETI et ProTIS, un zéro pour la note de synthèse concernée.
Retards
Aucun retard n’est acceptable et en cas de retard important (ou de
retards fréquents) d’un étudiant, celui-ci se verra refuser l’accès au laboratoire. Les conséquences en seront identiques à celles d’une absence non
excusée (voir plus haut).
Plagiats
Le plagiat est le fait de s’approprier un texte ou partie de texte, image,
photo, données... réalisé par quelqu’un d’autre sans préciser qu’il ne s’agit
pas de son travail personnel. On plagie quand on ne cite pas l’auteur des
sources que l’on utilise. Exemples de plagiat :
— Copier textuellement un passage d’un livre ou d’une page Web sans
le mettre entre guillemets et/ou sans en mentionner la source.
— Insérer dans un travail des images, des graphiques provenant de
sources externes (hors énoncé du TP) sans en indiquer la provenance.
— Utiliser le travail d’un autre élève et le présenter comme le sien (et
ce, même si cette personne a donné son accord !).
— Résumer l’idée originale d’un auteur en l’exprimant dans ses propres
mots, mais en omettant d’en indiquer la source.
— Traduire partiellement ou totalement un texte sans en mentionner
la provenance.
Tout binôme convaincu de plagiat dans un compte-rendu ou une synthèse de TP se verra attribuer la note de 0/20 à ce TP ou cette synthèse
et encourt les sanctions disciplinaires prévues au règlement intérieur.
Respect du matériel et des locaux
Le LEnsE met à votre disposition une très grande quantité de matériel scientifique.
Ces matériels sont très fragiles, sensibles à la poussière, aux traces de
doigts, aux rayures, etc. Merci d’en prendre le plus grand soin.
ÉLECTRONIQUE TP
ix
Il est donc formellement interdit d’apporter de la nourriture ou
des boissons dans l’ensemble du service (couloirs compris). Merci
de veiller aussi à laisser les locaux particulièrement propres (si vos chaussures sont sales, retirez-les et laissez-les à l’entrée !)
Pour toute demande d’accès en dehors des séances de TP, vous devez
impérativement (et à l’avance) vous adresser au responsable technique
du LEnsE, Thierry AVIGNON ou à Cédric L EJEUNE (bureau S1.18).
x
ÉLECTRONIQUE TP
LEnsE
1A2S - EITI
Laboratoire d’Enseignement Expérimental
Évaluation de votre travail
Au cours de chaque semestre, deux notes sanctionnent votre travail :
— Une note par binôme d’évaluation du travail de synthèse,
— Une note individuelle d’examen pratique.
Les notes de travaux pratiques d’EITI du premier semestre seront
prises en compte dans l’unité d’enseignement Traitement de l’information
S1 (8 ECTS) . Chaque note contribue à 15% à la note finale de l’unité
d’enseignement.
Pour le deuxième semestre, dans de l’unité d’enseignement Traitement de l’information S2 (7 ECTS), chaque note contribue à hauteur de
10% à la note finale
1. Cahier de manipulation
Il est indispensable que vous teniez à jour un "cahier de manipulation"
par binôme. Ce cahier est la mémoire de tous les circuits et les mesures
que vous avez réalisés. Il vous sera utile pour rédiger les synthèses et
pour les séances de TP suivantes, y compris au deuxième semestre ou
lors des examens.
Les enseignants s’assureront que vous disposez bien d’un tel cahier à
chaque séance, même si il n’est pas évalué, ce document reste un document interne au binôme.
Ce cahier devra prendre la forme d’un espace de travail partagé sur le
"nuage" de l’Institut d’Optique (https://cloud.institutoptique.fr).
Il est important que chaque membre du binôme puisse accéder
à l’ensemble des documents lors de chaque séance.
2. Synthèse
Nous attendons de vous dans la synthèse une véritable analyse des
résultats de mesures relevés ou observés en cours de séance. Tous vos
résultats ne pourront pas figurer dans cette synthèse, il y en aura probablement moins d’un tiers, nous ne voulons pas lire votre cahier de manipulation ... en taille de police réduite ! À vous de choisir les résultats qui
vous semblent les plus pertinents.
Objectifs et contraintes
xi
xii
ÉVALUATION DE VOTRE TRAVAIL
Pour rédiger une synthèse, il faut toujours partir des objectifs visés et
des contraintes imposées, contraintes sur le format, le contenu et aussi
sur la date de remise.
Les objectifs de ce travail de synthèse sont :
1. Améliorer votre compréhension des concepts et de vous approprier
les savoirs-faire (pouvoir dire : ça, je sais faire !)
2. Vous entraîner à la présentation scientifique, élément qui fait partie à part entière de toute formation scientifique
3. Permettre aux enseignants de suivre la progression dans les apprentissages et d’évaluer par une note le travail effectué et les
connaissances acquises.
Les contraintes sont fixées à :
— 4 pages maximum pour le thème Photodétection
— 4 pages maximum pour le thème Analyseur de Spectre,
— 8 pages maximum pour le thème Transmission numérique par la
lumière du deuxième semestre,
au format .pdf, remis après la dernière séance du thème.
Des conseils : ce sont les deux premiers objectifs qui doivent être gardés en tête lors de la rédaction, la note qui en découle n’est qu’une conséquence (heureuse !) de leur réussite ! Plus précisément :
1. il faut rédiger la synthèse en imaginant que l’on s’adresse
non pas à l’enseignant mais à une tierce personne (un élève
à l’autre bout du monde par exemple) qui souhaite faire les mêmes
types d’expériences mais avec un matériel différent.
2. il faut avoir l’ambition d’expliquer et non pas seulement de
décrire.
La contrainte de pages maximum donne une indication du niveau de
détails attendu pour les explications, forcément ici limité. La synthèse
est donc plus courte que l’ensemble des notes et relevés de mesure pris
en séance, le délai donne le temps de trier, organiser et commenter l’ensemble de ces données.
Contenu
Peut figurer dans une synthèse tout ce qui peut aider à la réalisation et à la compréhension des phénomènes étudiés : circuit, relevés de
mesure, courbes et surtout commentaires. Présenter des erreurs que vous
avez commises et la correction que vous avez apportée est aussi tout à fait
acceptable !
2. SYNTHÈSE
xiii
Ne doit pas figurer tout ce qui est inutile : une courbe ou une image
sans légende, le brochage d’un composant, la couleur de la table, etc.
Toute image ou courbe doit être accompagnée d’une légende (titre,
axes horizontal et vertical avec unités) et doit être citée dans le corps du
texte (s’il n’y a rien à en dire, ce n’est sans doute pas la peine de la faire
figurer !).
Structure du document
Le document doit impérativement comporter :
— vos noms, avec votre numéro de binôme,
— le titre,
— une ou deux phrases d’introduction,
— une conclusion.
et il doit être paginé (numéros de page/ nombre total de pages).
Mise en forme
La contrainte de format doit être suivie ! Suivre les contraintes n’est
pas forcément un frein à la créativité, au contraire, cela oblige parfois
à explorer d’autres façons de faire, moins évidentes mais plus enrichissantes !
Quelques conseils dans l’utilisation d’un traitement de texte (Microsoft Word, Libre Office Writer ou LateX ou . . .).
— La taille de la police doit être au mininum de 12 pts,
— les marges peuvent être réduites par rapport à celles définies par
défaut par le logiciel,
— l’organisation sous deux colonnes peut permettre d’avoir un texte
plus dense,
— utiliser le correcteur orthographique,
— placer des figures dans un tableau de 2 lignes, la 2ème ligne contenant le titre, peut faciliter la mise en page.
Exporter au format .pdf
Word : Menu Fichier / Enregistrer sous ... et choisir le format .pdf dans la fenêtre suivante.
Writer: Menu Fichier / Exporter au format pdf
Dépôt
Il est important de respecter les consignes suivantes :
— Certifiez l’originalité de votre travail en faisant figurer la mention :
Nous attestons que ce travail est original, que nous citons en référence toutes les sources utilisées et qu’il ne comporte pas de plagiat.
xiv
ÉVALUATION DE VOTRE TRAVAIL
— Vérifiez que vos noms et le numéro de votre binôme figurent
sur la première page de votre synthèse avant de la transformer en .pdf.
— Assurez-vous que le nombre maximum de pages est respecté.
— Renommez le fichier .pdf selon le format :
G5B12MonNomEtCeluiDeMonBinomeSyntheseAS.pdf pour le binôme 12 du groupe 5.
Les synthèses doivent être déposées sur le site Libres Savoirs aux dates
précisées dans le calendrier (page v).
Attention : un point de moins par jour de retard !
En résumé : checklist
— Les conditions expérimentales des résultats "affichés" sont elles définies ?
— Les mesures réalisées sont-elles analysées ?
— Les figures sont-elles analysées ? Si ce n’est pas le cas, sont-elle
utiles ?
— Les figures sont-elles numérotées ?
— Les figures ont-elles des titres ?
— Les axes des figures sont-ils renseignés ?
— Les noms des auteurs sont-ils écrits ?
— Les pages sont-elles numérotées ?
3. Examen individuel
Un examen pratique a lieu chaque semestre. Il dure une heure et teste
vos capacités expérimentales :
— maîtrise du matériel de laboratoire,
— protocoles et précautions pour des mesures simples,
— choix raisonné de composants.
Il n’est pas demandé de compte-rendu de manipulation. Vous avez accès aux synthèses et à votre cahier de manipulation.
Vous serez convoqués en demi-groupe selon le calendrier de la page v.
4. Points de pénalité
Des points de pénalité peuvent être attribués sur les notes de synthèses aux binômes n’ayant pas rangé leur poste de travail à l’issue des
séances de TP.
LEnsE
1A2S - EITI - Thème 4
Transmission numérique par la
lumière
travers ce thème, sur lequel vous travaillerez à 2 binômes pendant les
2 dernières séances, vous allez découvrir comment transmettre de l’information numérique entre un émetteur et un récepteur.
Vous allez être amené à développer un système permettant de contrôler la couleur d’un bandeau de LEDs tricolores à distance, à l’aide
de trois potentiomètres permettant de moduler la quantité de rouge, de
vert et de bleu. L’information transmise sera numérisée et transmise au
format binaire.
F IGURE 1 – Principe de la transmission réalisée au cours des 4 séances
Pour traiter les informations numériquement, vous serez amenés, au
cours des 2 premières séances, à découvrir un nouveau composant : le microcontrôleur. Ce dernier est très utilisé dans le monde industriel pour
piloter des systèmes de manière autonome et en temps réel. Vous allez
apprendre à utiliser ses ressources internes : unité de calcul, entrées/sorties numériques, entrées analogiques, sorties modulées, timers...
2
Objectifs
• Développer une application autour d’un microcontrôleur :
Utiliser les entrées/sorties numériques ;
Utiliser les entrées analogiques ;
Mettre en oeuvre les interruptions externes ;
Mettre en oeuvre les timers matériels ;
• Mettre en oeuvre une transmission numérique de l’information
Préparation
Les différents TP de ce thème possèdent des questions notées Px à
préparer avant chaque séance.
Rendu
Carte conceptuelle et synthèse (Mind Map) dont les sujets vous seront
divulgués lors de la quatrième séance.
Documentation annexe
DocDEM2 dsPICDEM 2 Development Board User’s Guide. Microchip.
A télécharger sur le site de Microchip.
DocMPLABX MPLABX IDE User’s Guide. Microchip. Disponible sur
Libres Savoirs.
DocXC8 XC8 User’s Guide. Microchip. Disponible sur Libres Savoirs.
Doc16F5013 PIC16F1503 Data Sheet. Microchip. Disponible sur
S:\TP EITI\Theme4.
TutoMPLABX Tutoriel du logiciel MPLABX. Disponible sur chaque
table et sur Libres Savoirs.
BrochesPIC Carte des broches du composant utilisées en TP. Disponible sur chaque table et sur Libres Savoirs.
LEnsE
1A2S - EITI
Thème 4 - Séance 1
Utiliser un microcontrôleur
À travers cette première séance, vous allez vous intéresser au composant qui sera au coeur de ce thème des travaux pratiques : le microcontrôleur.
Un microcontrôleur est un organe servant essentiellement au
contrôle en temps réel d’un système, grâce notamment à ses interactions avec l’environnement, via des broches de communication spécifiques.
Il exécute un programme en continu permettant de lire des entrées (numériques ou analogiques) et de commander certaines sorties.
Vous allez découvrir le composant (PIC16F1503 de la société
Microchip), l’interface de développement (MPLABX), le langage de programmation (langage C pour l’embarqué), la connexion avec le composant
(ICD3) et son interaction avec des composants électroniques (boutonspoussoirs, potentiomètre, LED...). La chaîne de développement est décrite
par le schéma de la figure 1.1.
F IGURE 1.1 – Les matériels et logiciels à votre disposition
3
4
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
Après cette séance, vous saurez...
• Utiliser la suite logicielle MPLABX,
• générer un programme pour un microcontrôleur de la famille des
PIC,
• configurer et utiliser les entrées/sorties numériques de ce microcontrôleur,
• mettre en oeuvre une interruption externe.
Préparation
Les questions P1 à P6 sont à préparer avant la séance de TP.
Sommaire
1
2
3
4
5
6
7
8
Microcontrôleur PIC16F1503 (Préparation)
Organisation et fichiers . . . . . . . . . . . .
Première application . . . . . . . . . . . . . .
Sorties numériques . . . . . . . . . . . . . . .
Gestion du temps . . . . . . . . . . . . . . . .
Entrées numériques . . . . . . . . . . . . . .
Interruptions externes . . . . . . . . . . . . .
Une question de mémoire... . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
5
5
8
11
12
14
16
1. Microcontrôleur PIC16F1503 (Préparation)
Au cours de ce thème, vous allez utiliser un microcontrôleur de type
PIC16F1503 conçu par Microchip. Ce microcontrôleur est un processeur 8 bits, c’est à dire qu’il traite et gère des données sur un octet.
Sur les microcontrôleurs de chez Microchip, les entrées/sorties peuvent
avoir plusieurs fonctionnalités : entrées/sorties numériques, entrées analogiques, sortie modulée, entrée de programmation... La figure ?? synthétise les différentes fonctions de chaque broche.
Afin de vous familiariser un peu avec ce microcontrôleur, consulter la
documentation technique pour répondre aux questions suivantes (pages
1 à 4).
P1 Quelle est la fréquence maximale d’oscillation de ce microcontrôleur ?
P2 Quels sont les espaces mémoires disponibles et quelles sont leurs
tailles ?
P3 Combien d’entrées/sorties différentes possède-t-il ? Combien d’entrées
analogiques ?
2. ORGANISATION ET FICHIERS
5
F IGURE 1.2 – Brochage du composant PIC16F1503.
P4 Quel est le courant maximal que peut délivrer le microcontrôleur
sur chacune de ses sorties ? Au total ? (vous pouvez vous aider de la page
284 de la documentation technique)
P5 Relever les valeurs des deux lignes suivantes (pour un mode de fonctionnement industriel) :
— Maximum current out of VSS pin,
— Maximum current in to VDD pin
P6 Que peut-on conclure de la différence entre ces deux valeurs ?
2. Organisation et fichiers
M
Créer un répertoire de travail pour les TP d’ETI du deuxième semestre dans votre espace personnel (U:\)
M
Copier le répertoire S:\TP EITI\Theme4\Ressources et collerle dans votre nouveau répertoire de travail.
M
Copier le répertoire S:\TP EITI\Theme4\Seance1 et coller-le
dans votre nouveau répertoire de travail.
3. Première application
3.1. Premier projet sous MPLABX
L’environnement de développement MPLABX intègre un éditeur de texte
et un compilateur en assembleur. Il lui a été associé un compilateur C
nommé XC8 (pour les microcontrôleurs 8 bits).
M
Créer un nouveau projet nommé 01_Decouverte.X dans le répertoire créé précédemment, en vous aidant de la partie II du Tutoriel
MPLABX.. Choisir un composant de type PIC16F1503 et le compilateur
XC8.
6
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
M
Copier le fichier source 01_main.c depuis le répertoire Seance1
vers le répertoire du projet (01_Decouverte.X).
M
Associer ce fichier à votre projet en faisant un clic-droit sur le
projet, puis en sélectionnant l’option Add Existing Item.... Choisir
ensuite le fichier que vous souhaitez ajouter à votre projet.
Remarque : Si le fichier n’apparaît pas dans le bon répertoire au niveau du projet, déplacer-le dans le bon répertoire : Header Files pour les
fichier portant l’extension .h et Source Files pour les fichier portant l’extension .c.
3.2. Fichier de configuration
M
Associer le fichier config.h contenu dans le répertoire Ressources
à votre projet.
M
Ouvrir ce fichier dans MPLABX.
Ce fichier config.h contient la configuration de certains paramètres
et modules du microcontrôleur. Il est précisé, par exemple, quelle source
d’horloge doit être utilisée (interne ou externe, avec ou sans PLL 1 ). Il sera
à associer à chaque nouveau projet que vous développerez par la suite.
3.3. Structure du programme principal
M
Ouvrir le fichier 01_main.c dans MPLABX.
Q1 Quelle est la structure de ce programme ? A quoi sert l’instruction
while(1) ? Combien de fois est exécutée l’instruction contenue dans cette
boucle ?
Q2 A quoi sert la fonction void initPIC(void) ? Combien de fois estelle executée ?
M
Compiler le projet.
3.4. Programmeur ICD3 et PIC16F1503
L’étape suivante est le téléversement du programme compilé vers le
composant à l’aide du programmeur. Mais avant cela, il est nécessaire de
relier le microcontrôleur au programmeur.
M
Réaliser une ligne d’alimentation continue à 5 V (VDD) et une autre
à 0 V (GND) sur votre platine d’essai.
1. Phase-locked loop ou Boucle à verrouillage de phase
3. PREMIÈRE APPLICATION
7
M
Alimenter le microcontrôleur en câblant les broches VDD et GND,
repérées sur la figure 1.3.
F IGURE 1.3 – Broches du microcontrôleur à connecter
M
Placer le connecteur sur votre platine d’essai.
M
Le relier ensuite au microcontrôleur en vous aidant du brochage
donné sur le schéma de la figure 1.4.
F IGURE 1.4 – Brochage du connecteur du programmeur
Attention ! Relier également l’alimentation à ce connecteur en vérifiant au préalable que vous avez appliqué une tension de 5 V sur VDD.
M
Relier le programmeur ICD3 au câble USB.
M
Téléverser à présent votre projet dans le microcontrôleur. Que se
passe-t-il ?
M
Visualiser à l’aide d’un oscilloscope la broche RA4 (correspondant
également à CLKOUT). Que pouvez-vous conclure sur l’exécution du programme ?
8
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
4. Sorties numériques
Afin de pouvoir interagir avec l’environnement extérieur, nous allons
nous intéresser à présent aux ports de communication du microcontrôleur.
4.1. Registres
Pour pouvoir configurer les différents modules présents dans les microcontrôleurs, il faut venir paramétrer des registres spécifiques. Les
registres sont des espaces mémoire de 8 bits pour les familles PIC16F.
Ils sont adressables indépendamment et accessibles via leurs noms.
Les registres disponibles sont listés dans la section 3.2 de la documentation technique du microcontrôleur. Une fiche descriptive de chacun
d’entre eux est également disponible dans la documentation technique
dans les chapitres associés au module qu’ils permettent de paramètrer.
Voici par exemple sur la figure 1.5 la description du registre d’état
de l’unité de calcul, nommé STATUS (page 18 de la documentation technique) :
F IGURE 1.5 – Extrait de la documentation du composant PIC8F5003. Paramètres
du registre Status.
4. SORTIES NUMÉRIQUES
9
4.2. Configuration des ports
Pour communiquer avec le monde extérieur, le microcontrôleur utilise
des registres particuliers qu’on appelle des ports qui sont reliés à des
broches physiques du composant (PORTx sur les microcontrôleurs de chez
Microchip, où x est une lettre - A, B, C,...). Vous trouverez une description des ports d’entrée/sortie dans la section 11 de la documentation
technique.
Chaque bit constituant ces ports est configurable individuellement en
entrée ou en sortie (voir figure 1.6), via des registres appelés TRISx (où x
représente la lettre du port que l’on veut configurer).
F IGURE 1.6 – Registres PORTx et TRISx associés à un port d’entrée/sortie.
Ces entrées-sorties vont imposer des signaux numériques (’0’ équivalent à VSS = 0 V ou ’1’ équivalent à VDD = 5 V, ici) vers le monde extérieur, ou inversement permettre de lire des ’0’ ou ’1’ produits par le monde
extérieur vers le microcontrôleur.
Certaines de ces broches sont également communes aux entrées du
convertisseur analogique-numériques intégré au microcontrôleur.
Nous l’étudierons lors de la prochaine séance. Par défaut, toutes les broches
du microcontrôleur sont considérées comme analogiques. Pour pouvoir
les utiliser en numérique, il est indispensable de configurer le registre
nommé ANSELx.
10
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
4.3. Utilisation des ports en sortie
Nous allons nous intéresser au port C (section 11.3 de la documentation technique) et à sa broche 1 en particulier, nommée RC1, sur laquelle
nous allons connecter une LED rouge.
On propose pour cela les deux montages de la figure 1.7 :
F IGURE 1.7 – Deux montages possibles sur une sortie numérique du microcontrôleur
Q3 Dans les deux montages précédents, indiquer le sens du courant
lorsque la LED est allumée. Quel est le niveau logique à appliquer sur
la sortie RC1 pour obtenir l’allumage de la LED dans chacun de ces deux
montages ?
Q4 A partir des questions de préparation P4 à P6 et de la question
précédente, que pouvez-vous conclure quant au montage à utiliser pour
connecter une LED sur la sortie d’un microcontrôleur ?
On utilisera une LED rouge classique, ayant une tension seuil de
l’ordre de 2 V et un courant direct maximal de 30 mA.
Q5 Calculer la résistance RLED qui permet de limiter convenablement
le courant tout en garantissant un flux lumineux correct.
M
Câbler le montage choisi.
Q6 Que se passe-t-il pour la LED ?
M
Visualiser la sortie RC1 à l’aide de l’oscilloscope.
M
Mesurer la fréquence de clignotement de la LED.
5. GESTION DU TEMPS
11
Le programme contenu dans le fichier 01_main.c est le suivant :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include " . . / Ressources / c o n f i g . h"
void initPIC ( void ) ;
void main ( void ) {
initPIC ( ) ;
while ( 1 ) {
PORTCbits . RC1 = ! PORTCbits . RC1 ;
}
return ;
}
void initPIC ( void ) {
ANSELC = 0x00 ;
TRISCbits . TRISC1 = 0 ;
return ;
}
Q7 A quoi servent les lignes 8, 14 et 15 de ce programme ? Pour répondre à ces questions, vous pourrez vous intéressez aux pages 101 à 103
de la documentation technique et à la section Utilisation des registres du
tutoriel de MPLABX.
Q8 Quel est le temps d’exécution de l’ensemble des instructions contenues dans la boucle infinie ?
M
Ajouter une seconde LED sur la broche RC5. Complèter le programme précédent pour que cette seconde LED clignote à la même fréquence que la première.
M
Visualiser à nouveau la sortie RC1 à l’aide de l’oscilloscope.
Q9 A quelle fréquence clignote cette fois-ci la LED branchée sur RC1 ?
Relever le temps d’exécution de l’ensemble des instructions contenues
dans la boucle infinie.
5. Gestion du temps
5.1. Oscillateur interne
Le microcontrôleur utilise un oscillateur interne pour pouvoir cadencer la vitesse d’exécution du programme.
12
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
Q10 Quelle est la fréquence par défaut utilisée par le microcontrôleur ?
Les valeurs de fréquences minimale et maximale de fonctionnement ?
(voir le registre OSCCON, page 51 de la documentation).
Pour le vérifier, il est possible de visualiser la sortie de cet oscillateur
interne sur la broche CLKOUT (ou RA4).
Visualiser la sortie CLKOUT à l’aide d’un oscilloscope.
M
Q11 Retrouvez-vous la fréquence annoncée précédemment ?
Ajouter la ligne suivante à la fonction void initPIC(void) :
M
1
OSCCONbits . IRCF = 0b1100 ;
M
Compiler le projet et téléverser le programme dans le microcontrôleur.
Q12 Quelle est la nouvelle fréquence de l’oscillateur interne ? Que pouvezvous conclure de la ligne précédente ?
Vous pourrez vous aider de la section Utilisation des registres du tutoriel de MPLABX.
M
Visualiser à nouveau la sortie RC1 du microcontrôleur. Quelle est
la nouvelle fréquence d’exécution de la boucle infinie ?
5.2. Délai
Il existe une fonction qui permet de ralentir l’exécution d’un code.
Cette fonction s’appelle : void __delay_ms(int ms).
M
Ajouter un appel à cette fonction void __delay_ms(int ms)
dans la boucle infinie du programme principal avec un temps d’une centaine de millisecondes. Compiler et téléverser le programme.
Q13 Que se passe-t-il à présent pour les LEDs ?
6. Entrées numériques
Chaque broche des ports de communication de ces microcontrôleurs
peut être, en mode numérique, indépendamment utilisée en sortie ou en
entrée. Pour cela, il faut modifier la valeur du bit correspondant dans le
registre TRISx et la mettre au niveau logique ’1’.
A l’aide d’un bouton poussoir, que vous allez devoir câbler à l’une des
broches du microcontrôleur (la broche RA2), nous allons controler l’exécution du programme et modifier la fréquence de clignotement des LEDs.
6.1. Câblage d’un bouton-poussoir
On propose pour cela le montage de la figure 1.8 :
6. ENTRÉES NUMÉRIQUES
13
F IGURE 1.8 – Câblage d’un bouton-poussoir sur une broche d’entrée du microcontrôleur
Q14 Quel est le niveau logique obtenu sur RA2 lorsque le bouton-poussoir
(noté BP) n’est pas enfoncé ? Quel est le niveau logique obtenu sur RA2
lorsque le bouton-poussoir est enfoncé ? Quel est le rôle de la résistance
RBP ?
M
Câbler ce montage en utilisant une résistance RBP = 10 kΩ.
6.2. Configuration en entrée numérique
M
Copier le projet précédent (01_Decouverte.X ) en faisant un clicdroit sur le projet, puis Copy et copier-le vers un nouveau projet nommé
02_EntreeNum.X, que vous stockerez dans le répertoire des TP d’ETI du
second semestre.
M
Renommer le fichier source 01_main.c en 02_main_ES.c.
M
Modifier la fonction void initPIC(void) pour configurer la broche
RA2 en entrée numérique.
M
Modifier le programme principal pour allumer la LED connectée
sur la sortie RC5 lors de l’appui sur le bouton-poussoir. Configurer également la fréquence d’oscillation à 2 MHz.
M
Compiler et téléverser votre programme. Tester son bon fonctionnement.
M
Ajouter un appel à la fonction void __delay_ms(int ms) dans
le programme principal avec un temps d’une seconde.
M
Vérifier le bon fonctionnement de votre programme.
14
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
Q15 Quel est le temps de réponse de votre système ? Est-il constant ?
6.3. Interaction avec le microcontrôleur
M
Copier le projet précédent (02_EntreeNum.X ) vers un nouveau
projet nommé 03_Interaction.X, que vous stockerez dans le répertoire
des TP d’ETI du second semestre.
M
Renommer
le
03_main_interaction.c.
fichier
source
02_main_ES.c
en
M
Modifier ce programme pour que lors de l’appui sur le boutonpoussoir (BP) la période de clignotement de la LED connectée sur la broche
RC1 passe de 2 s (BP non appuyé) à 100 ms (BP appuyé).
M
Compiler et tester votre programme.
M
Si vous êtes un peu en avance... Modifier ce programme pour qu’à
chaque appui sur le bouton-poussoir la période de clignotement de la LED
connectée sur la broche RC1 bascule d’une valeur de 100 ms à 2 s.
M
Compiler et tester votre programme.
Q16 Que se passe-t-il lors de l’appui sur le bouton-poussoir ? L’information est-elle prise en compte de la même manière selon la fréquence de
clignotement de la LED ?
6.4. Mémoire programme
M
Débrancher le connecteur ICD3. Le programme fonctionne-t-il encore ?
M
Éteindre l’alimentation puis la rallumer. Quel est le programme
qui est exécuté par le microcontrôleur ?
M
Rebrancher le connecteur ICD3 pour la suite du TP.
7. Interruptions externes
Le mode de fonctionnement précédent, où l’on vient scruter les entrées dans la boucle infinie (mode polling) dans le programme main n’est
pas efficace pour les programmes temps réel.
Afin de pouvoir interagir plus rapidement avec son environnement
et prendre en compte des évènements extérieurs, les microcontrôleurs
sont dotés d’une capacité à interrompre l’exécution du programme pour
se détourner vers une fonction particulière à exécuter lors de l’arrivée
d’un évènement extérieur. On appele cela une interruption.
Pour cela, le microcontrôleur possède plusieurs entrées particulières qui permettent d’interrompre le programme principal. Plusieurs
7. INTERRUPTIONS EXTERNES
15
autres modules du microcontrôleur (timers, ADC 2 ...) peuvent également
venir interrompre l’exécution du programme principal.
Nous allons nous intéresser dans cette partie à la broche notée INT
(broche RA2 sur le PIC16F1503) qui permet d’interrompre le microcontrôleur via un événement externe.
7.1. Structure du programme
M
Copier le projet précédent (03_Interaction.X) vers un nouveau
projet nommé 04_Interruption.X, que vous stockerez dans le répertoire des TP d’ETI du second semestre.
M
Copier le fichier source 04_main_int.c depuis le répertoire Seance1
vers le répertoire du projet (04_Interruption.X) et l’associer à votre
projet.
M
Compiler le projet et téléverser-le dans le microcontrôleur. Tester
le bon fonctionnement du programme en ouvrant le fichier 04_main_int.c
dans MPLABX et en l’analysant.
Q17 Que se passe-t-il lors de l’appui sur le bouton-poussoir ? Quel est
le temps de réponse de ce programme face à un évènement extérieur (ici
l’appui sur le bouton-poussoir relié sur la broche INT) ?
7.2. Initialisation des interruptions
Voici une partie de la fonction d’initialisation du composant (void
initPIC(void)) fournie dans le fichier 04_main_int.c :
1
2
3
OPTION_REGbits .INTEDG = 1 ;
INTCONbits . INTE = 1 ;
INTCONbits . GIE = 1 ;
Q18 En vous aidant de la documentation technique (sections 7.4 et 7.6),
déterminer à quoi servent ces 3 lignes.
7.3. Routine d’interruption
Dans le fichier 04_main_int.c, on trouve également une fonction
particulière, précédée de la mention interrupt, qu’on nomme routine
d’interruption. Cette fonction est appelée lorsqu’une interruption est
déclenchée.
2. Analog to Digital Converter ou convertisseur analogique-numérique
16
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
1
2
3
4
5
6
7
void i n t e r r u p t i s r ( void ) {
i f ( INTCONbits . INTF == 1 ) {
PORTCbits . RC5 = ! PORTCbits . RC5 ;
INTCONbits . INTF = 0 ;
}
}
Q19 En vous aidant de la documentation technique (sections 7.4 et 7.6),
déterminer à quoi servent les lignes 2 et 5.
M
Modifier ce programme pour qu’un appui sur le bouton-poussoir
modifie le temps d’allumage et d’extinction de la LED connectée sur la
sortie RC3 en passant de 300 ms à 700 ms (et inversement).
Q20 L’appui sur le bouton-poussoir est-il pris en compte instantanément ? Pourquoi le changement de fréquence de clignotement de la LED
n’intervient-elle pas instantanément ?
8. Une question de mémoire...
Nous allons voir quels sont les espaces mémoires nécessaires à l’exécution d’un programme. Pour cela, nous allons étudier le programme suivant :
1
2
3
4
5
6
M
#include <xc . h>
void main ( void ) {
int a ;
a = a +1;
}
/ ∗ a v a r i a b l e de type e n t i e r e ∗ /
Créer un nouveau projet intitulé 05_Memoire.X.
M
Ajouter un fichier source 05_main_mem.c, en vous aidant de la
section 2.2 du tutoriel MPLABX.
M
Associer ce fichier à votre projet en faisant un clic-droit sur le
projet, puis en sélectionnant l’option Add Existing Item.... Choisir
ensuite le fichier que vous souhaitez ajouter à votre projet.
M
Compiler le projet.
M
Via le menu Window/Dashboard, ouvrir le tableau de bord du
projet.
8. UNE QUESTION DE MÉMOIRE...
17
Q21 Quels sont les espaces mémoires utilisés par ce programme sur le
microcontrôleur ? Que contiennent-ils ?
M
Ajouter la déclaration et l’initialisation d’une seconde variable de
type int.
Q22 Comment sont modifiés les espaces mémoires ? Quelle place occupe
une variable de type int ?
M
Stocker dans l’une de ces deux variables la somme des deux variables précédentes.
Q23 Comment sont modifiés les espaces mémoires ?
M
Stocker dans l’une de ces deux variables le produit des deux variables précédentes.
Q24 Comment sont modifiés les espaces mémoires ?
M
Ajouter la déclaration et l’initialisation (non nulle) d’une variable
de type double.
Q25 Comment sont modifiés les espaces mémoires ?
M
Ajouter la bibliothèque <math.h> et ajouter une ligne permettant de calculer la valeur du sinus en 1 et de stocker le résultat dans la
variable précédente.
Q26 Comment sont modifiés les espaces mémoires ?
Q27 Que pouvez-vous conclure quant à l’utilisation de ce microcontrôleur ?
18
SÉANCE 1. UTILISER UN MICROCONTRÔLEUR
LEnsE
1A2S - EITI
Thème 4 - Séance 2
Gestion du temps et IHM
Après avoir découvert le microcontrôleur et ses fonctionnalités de base,
vous allez, durant cette séance apprendre à gérer le temps de manière
plus avancée, à mettre en place une interface homme-machine simple
composée d’un écran LCD et de quelques boutons-poussoirs et à utiliser
les entrées analogiques.
L’ensemble des programmes utilisés lors de cette séance sont dans le
répertoire S:\TP EITI\Theme4\Seance2.
Après cette séance, vous saurez...
•
•
•
•
Mettre en oeuvre une interface homme-machine simple,
configurer et utiliser les entrées analogiques,
récupérer une tension analogique en entrée et la convertir,
mettre en oeuvre les timers matériels.
Sommaire
1
2
3
4
Timer matériel . . . .
Timer logiciel . . . . .
Écran LCD . . . . . .
Entrées analogiques
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
23
25
27
Carte d’étude
Durant cette séance, vous allez utiliser une carte de développement
conçue par le LEnsE, afin de simplifier le câblage, autour d’un PIC16F1503.
Le schéma de la carte est donnée dans le document intitulé Tutoriel
MPLABX, section 8.
19
20
SÉANCE 2. GESTION DU TEMPS ET IHM
Les composants associés à ce microcontrôleur sont reliés comme suit :
1
LED1 → RC5/PWM1, LED2 → RC3/PWM2, LED3 → RC1/PWM4
BP1 → RA2, BP2 → RA5
2
3
POT1 → RA4/AN3 , POT2 → RC1/AN5
SCK → RC0, SDO → RC2, RS_LCD → RA0, CS_LCD → RC4
F IGURE 2.1 – Brochage du PIC16F1503 sur la carte d’étude de l’IOGS
L’alimentation se fait par un bloc d’alimentation réglable, réglée à
7, 5 V. Un régulateur de tension permet ensuite d’obtenir VDD = 5 V.
Le connecteur P1 permet de relier la carte au programmeur ICD3.
P1 À partir du schéma donné dans le tutoriel, quel est le niveau logique
à appliquer sur les sorties RC3 et RC5 pour pouvoir allumer les LEDs
associées ? Quel est alors le courant qui traverse la LED ?
P2 À partir de ce même schéma, quel est le niveau logique au repos des
boutons-poussoirs connectés aux broches RA2 et RA5 ?
Attention ! Associer le fichier de configuration config2.h, depuis le
répertoire Ressources, à vos projets utilisant la carte d’étude.
1. Timer matériel
Dans les systèmes embarqués, les diverses tâches qu’accomplit le microcontrôleur doivent souvent respecter une chronologie précise : instant de démarrage, périodes de fonctionnement... La temporisation "classique" (utilisation de la fonction __delay_ms par exemple) monopolise
le processeur, ne permettant pas alors d’autres traitements (comme vous
avez pu le voir lors du précédent TP). L’utilisation de timers matériels
1. Jumper J1 du côté de l’alimentation
2. Jumper J2 connecté
3. Jumper J1 du côté de la sortie LCD
1. TIMER MATÉRIEL
21
est alors préconisée. Ces fonctions spéciales des microcontrôleurs permettent de générer des interruptions à des instants précis.
1.1. Principe du timer TMR0
Les microcontrôleurs de la famille des PIC intègrent souvent plusieurs
timers matériels. Nous allons nous intéresser ici au timer nommée TMR0,
dont on donne le schéma de principe en figure 2.2.
Le timer TMR0 est un compteur 8 bits qui s’incrémente à chaque
front montant de l’horloge d’entrée et produit un débordement lorsqu’il
repasse de sa valeur maximale (ici 255) à 0. Il génére alors une interruption détectable sur TMR0IF du registre INTCON.
F IGURE 2.2 – Schéma du timer matériel TMR0
L’horloge d’entrée de ce compteur est également paramétrable : on
peut ainsi choisir l’oscillateur interne ou une entrée extérieure. On peut
également utiliser un pré-diviseur pour réduire la fréquence en entrée
du compteur TMR0.
La relation qui existe entre la fréquence des interruptions sur le timer
TMR0 et la fréquence d’oscillation (dans le cas du choix de l’oscillateur
interne) est la suivante :
fTMR0 =
1
FOSC
· 8
4
2 · PREDIV
où FOSC est la fréquence choisie pour l’oscillateur interne (voir registre
OSCCON) et PREDIV la valeur choisie pour le prédiviseur.
1.2. Configuration
Le timer TMR0 est paramétrable à l’aide du registre OPTION_REG (page
146 de la documentation technique). Les interruptions générés par le timer TMR0 sont configurables via le registre INTCON (page 66 de le documentation technique).
P3 D’après la documentation technique, quelles sont les valeurs minimale et maximale de prédivision disponible pour le timer TMR0 ?
22
SÉANCE 2. GESTION DU TEMPS ET IHM
P4 Pour une fréquence d’oscillation de 2 MHz, quelles sont alors les fréquences atteignables ? Calculer également les périodes associées.
P5 Quelles sont les valeurs à donner aux différents bits du registre
OPTION_REG pour obtenir le fonctionnement suivant :
utilisation de l’horloge interne (2 MHz),
prédiviseur de 4.
P6 Quelle sera alors la fréquence (et la période) obtenue pour les interruptions du timer TMR0 ?
M
Copier le projet 02_Interruption.X en faisant un clic-droit sur
le projet, puis Copy et copier-le vers un nouveau projet nommé 06_TMR.X,
que vous stockerez dans le répertoire des TP d’ETI du second semestre.
M
Renommer le fichier source principal en 06_main_tmr.c.
M
Compléter la fonction void initPIC(void) pour paramètrer le
timer TMR0 de la manière décrite précédemment.
M
Compléter la fonction void initPIC(void) pour que le microcontrôleur puisse être interrompu par le débordement du timer TMR0.
1.3. Routine d’interruption
Une fois le timer TMR0 configuré et les interruptions validées, il faut
à présent s’intéresser à la routine d’interruption qui va exécuter une
action particulière.
M
Modifier la fonction void interrupt isr(void) afin qu’elle traite
également les interruptions déclenchées par le timer TMR0.
On souhaite faire clignoter la LED connectée sur la broche RC3 à la
fréquence du timer TMR0 ainsi configuré.
M
Modifier le programme précédent pour réaliser cette fonction.
M
Compiler et tester votre programme en visualisant à l’oscilloscope
la sortie RC3.
Q1 Quelle est la fréquence de clignotement de la LED ? Est-ce compatible avec la configuration du microcontrôleur ?
Q2 Comment peut-on modifier cette fréquence ? Proposer deux méthodes.
On souhaite à présent avoir une fréquence de clignotement de la LED
d’environ 2 Hz.
Q3 Quelles sont les valeurs de prédiviseur et de fréquence d’oscillation
à choisir pour obtenir cette fréquence en sortie du timer TMR0 ?
2. TIMER LOGICIEL
23
M
Modifier votre programme pour paramètrer le timer TMR0 de cette
façon. Compiler et tester votre programme.
Q4 Est-ce possible grâce à ce principe de timer matériel de commander
plusieurs sorties à des fréquences différentes ? Expliquer.
2. Timer logiciel
Les timers matériels, vus dans la section précédente, ne sont jamais
en nombre suffisant pour faire face à toutes les situations. Il faut alors
faire appel à des timers logiciels.
2.1. Principe de l’astable
On propose le programme suivant :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define
TMR_LOG_1
100
char timer1 = 0 ;
void main ( void ) {
initPIC ( ) ;
while ( 1 ) {
i f ( timer1 == 0 ) {
timer1 = TMR_LOG_1;
PORTCbits . RC5 = ! PORTCbits . RC5 ;
}
}
return ;
}
void i n t e r r u p t i s r ( void ) {
i f ( INTCONbits . T0IF == 1 ) {
i f ( timer1 != 0 )
timer1 −−;
INTCONbits . T0IF = 0 ;
}
}
On suppose que la fonction void initPIC(void) configure le port
RC5 en sortie et le timer TMR0 de telle manière qu’il génère une interruption toutes les millisecondes.
Q5 Expliquer le fonctionnement de ce programme. En particulier, à quelle
fréquence clignote la sortie RC5 ? Quel est l’intérêt d’avoir déclaré la variable timer1 de type char ?
M
Copier le projet 06_TMR.X vers un nouveau projet nommé
07_TMR_LOG.X, que vous stockerez dans le répertoire des TP d’ETI du
second semestre.
M
Renommer le fichier source principal en 07_main_tmr_log.c.
24
SÉANCE 2. GESTION DU TEMPS ET IHM
M
Modifier la fonction d’initialisation pour que le timer TMR0 génère
une interruption toutes les millisecondes.
M
Modifier le programme principal tel que proposé précédemment.
2.2. Clignotement de plusieurs LEDs
Avec ce principe de timer logiciel, il est possible de créer autant de
variables que l’on souhaite (dans la limite de la quantité de RAM disponible sur le composant) et de les associer à des actions spécifiques.
La seule contrainte, c’est que tous ces timers doivent avoir une même
base de temps.
M
Modifier le programme précédent pour faire clignoter deux LEDs
(sur RC3 et RC5), l’une avec une période de 158 ms et l’autre avec une
période de 672 ms.
2.3. Fonctionnement en monostable
Un monostable est un système qui lorsqu’il est destabilisé (via un
appui sur un bouton-poussoir par exemple) réalise une action pendant
un temps donné (via un timer logiciel par exemple) et revient ensuite à
son état stable.
M
Copier le projet 07_TMR_LOG.X vers un nouveau projet nommé
08_MONOSTABLE.X, que vous stockerez dans le répertoire des TP d’ETI
du second semestre.
M
Renommer le fichier source principal en 08_main_monostable.c.
M
Modifier le programme principal pour allumer la LED branchée
sur la broche RC3 pendant 3 s lors de l’appui sur le bouton-poussoir connecté
sur la broche RA2.
Il est préférable d’utiliser les interruptions pour la gestion des évènements extérieurs (ici le bouton-poussoir).
3. ÉCRAN LCD
25
3. Écran LCD
Afin de pouvoir informer l’utilisateur du déroulement du programme
et interagir avec lui, on peut utiliser un affichage à LED (comme réalisé
lors de la séance précédente). Mais pour pouvoir simplifier le dialogue,
nous allons nous intéresser ici à la mise en place d’un affichage sur écran
LCD.
L’écran LCD est un écran de type DOGM 163 de Electronic
Assembly. Il possède 3 lignes de 16 caractères chacune. Le codage utilisé est de l’ASCII, codé sur 8 bits. Les données peuvent être envoyées en
parallèle ou en série. C’est dans ce second cas que nous allons l’utiliser, à
l’aide d’un protocole de transfert industriel nommé SPI.
M
Relier l’écran LCD à la carte d’étude comme indiqué dans le document intitulé Tutoriel MPLABX (sections 8 et 9).
M
Créer un nouveau projet nommé 09_LCD.X dans le répertoire des
TP d’EITI du second semestre. Choisir un composant de type PIC16F1503
et le compilateur XC8.
M
Copier le fichier source 09_main_LCD.c depuis le répertoire Seance2
vers le répertoire du projet (09_LCD.X) et l’associer à votre projet.
3.1. Utilisation de la bibliothèque fournie
Une bibliothèque de fonctions, nommée lcd.h et lcd.c, est donnée
dans le répertoire de Ressources.
Elle contient, en particulier, les fonctions suivantes :
void initLCD_DOG(void) pour initialiser le module LCD (liaison
SPI et module d’affichage) ;
clearLCD(void) pour effacer l’ensemble de l’écran LCD ;
setPosition(char ligne, char colonne) pour positionner le curseur sur l’écran LCD ;
void writeLCD(char c) poru afficher un caractère à la position du
curseur sur l’écran LCD ;
void writeStrLCD(char c[], char ligne, char colonne) pour
afficher une chaine de caractère à une position particulière de l’écran
LCD.
M
Associer les fichiers lcd.h et lcd.c (du répertoire Ressources)
à votre projet.
M
Compiler et téléverser le programme dans le microcontrôleur.
26
SÉANCE 2. GESTION DU TEMPS ET IHM
3.2. Affichage d’un texte fixe
Pour l’instant, le programme testé précédemment ne fait qu’initialiser
le module LCD. On peut d’ailleurs voir qu’un curseur clignote sur l’écran.
On souhaite à présent pouvoir afficher un texte fixe sur l’écran LCD.
Q6 Quelle est la taille maximale de la chaîne de caractères qui pourra
être affichée ? Quelle fonction allez-vous utiliser ? À quel endroit du code
fourni (09_main_LCD.c) allez-vous placer l’appel à cette fonction pour
que le texte ne soit affiché qu’une fois ?
M
Modifier le programme précédent pour afficher le texte de votre
choix sur l’écran LCD à l’aide de la fonction writeStrLCD(char c[],
char ligne, char colonne).
3.3. Affichage d’une variable
La fonction utilisée précédemment (writeStrLCD(char c[], char
ligne, char colonne)) ne permet pas à elle seule d’afficher des chaines
de caractères qui peuvent évoluer au cours du temps, en particulier pour
l’affichage des valeurs de variables.
Pour pouvoir modifier le contenu d’une chaîne de caractère, il va falloir utiliser les fonctions "classiques" de la bibliothèque string.h (déjà
vu en langage C). La fonction int sprintf(char *str, const char
*format, ...), qui permet de formater une chaîne de caractères et de
la stocker dans une autre chaîne de caractères, la bibliothèque stdio.h,
pourra également être utile.
M
Ajouter la déclaration et l’initialisation d’une variable de type int
au programme précédent.
M
Ajouter la déclaration d’une chaîne de 16 caractères.
M
À l’aide de la fonction int sprintf(...), afficher la valeur de
cette variable de type int sur l’écran LCD.
3.4. Compteur
À l’aide des deux boutons-poussoirs, on souhaite à présent pouvoir incrémenter ou décrémenter cette variable pour ensuite afficher sa valeur
sur l’écran LCD.
M
Modifier votre programme pour remplir ce cahier des charges.
Q7 Que se passe-t-il lorsque vous passer en dessous de 0 ? Quelle est la
valeur maximale que peut atteindre ce compteur ?
4. ENTRÉES ANALOGIQUES
27
M
Modifier votre programme pour que le comptage soit borné entre
0 et une valeur maximale, que vous fixerez à l’aide d’une constante dans
votre code.
Il est préférable d’utiliser les interruptions pour la gestion des évènements extérieurs (ici les boutons-poussoirs qui sont reliés sur des entrées
de type IOC - Interrupt-On-Change).
4. Entrées analogiques
Le PIC16F1503 dispose d’un convertisseur analogique-numérique
(CAN ou ADC - Analogic-to-Digital Converter) de 10 bits. Il est possible
de sélectionner une des 8 entrées analogiques, notées ANx (de AN0 à
AN7), pour être convertie par le CAN.
Sur la carte d’étude, seules les entrées AN3 4 et AN5 5 sont reliées à des
potentiomètres, dont la sortie peut évoluer entre 0 et 5 V.
On propose la fonction d’initialisation suivante pour le convertisseur
analogique-numérique.
1
2
3
4
5
6
7
8
9
10
11
12
void initCAN ( void ) {
TRISAbits . TRISA4 = 1 ;
ANSELAbits .ANSA4 = 1 ;
ADCON1bits .ADCS = 0b111 ;
ADCON1bits .ADFM = 0 ;
ADCON1bits .ADPREF = 0b00 ;
ADCON0bits .CHS = 0b00011 ;
ADCON0bits .ADON = 1 ;
return ;
}
Q8 À partir de la documentation technique du microcontrôleur (section
15 et registres 15-1 à 15-7), expliquer la configuration utilisée pour le
convertisseur.
M
Copier le projet 09_LCD.X vers un nouveau projet nommé 10_CAN.X,
que vous stockerez dans le répertoire des TP d’ETI du second semestre.
M
Copier le fichier source 10_main_CAN.c depuis le répertoire Seance2
vers le répertoire du projet (10_CAN.X) et l’associer à votre projet.
4. Jumper J2 connecté - void Tutoriel MPLABX
5. Jumper J1 du côté de la sortie LCD
28
SÉANCE 2. GESTION DU TEMPS ET IHM
4.1. Conversion analogique numérique
M
À partir du paragraphe 15.2.6 de la documentation technique et
des différents registres associés au CAN (section 15 de la documentation
technique), écrire une fonction qui lance une conversion sur la voie AN3
du CAN et retourne la valeur convertie.
M
Tester votre fonction en affichant la valeur retournée sur l’écran
LCD.
Q9 Quelle est la valeur maximale atteignable ?
4.2. Affichage d’une tension
On souhaite à présent transformer la valeur brute de la conversion
vers une tension et l’afficher sur l’écran LCD. On rappelle que le CAN
utilise une plage de 0 à 5 V sur 10 bits.
Sur ces microcontrôleurs, il n’est pas possible de convertir une variable réelle (float ou double) vers une chaîne de caractère. On ne peut
passer que par des variables entières. Il faudra donc séparer la partie
entière de la partie décimale.
M
Modifier le programme précédent pour afficher la tension sur la
voie AN3 sur l’écran LCD, en spécifiant sur l’écran que ce sont des Volts.
On souhaite à présent pouvoir convertir 2 entrées analogiques et afficher les deux tensions associés sur l’écran LCD.
M
Modifier le programme précédent pour remplir ce nouveau cahier
des charges.
LEnsE
1A2S - EITI
Thème 4 - Séances 3-4
Commande d’un bandeau lumineux
Durant les deux dernières séances de ce thème, vous allez devoir
concevoir la commande à distance d’un bandeau lumineux. Pour cela,
vous allez d’abord apprendre à utiliser les sorties modulées en largeur d’impulsions (PWM - Pulsed Width Modulation) des microcontrôleurs. Vous verrez dans un second temps le fonctionnement de ces
bandeaux lumineux et leur commande en puissance. Enfin, vous allez
devoir mettre en place le protocole de communication entre un émetteur et un récepteur.
F IGURE 3.1 – Bandeau de LED RGB - ledsgo.fr - RGB_PN_250_NW
L’ensemble des programmes utilisés lors de cette séance sont dans le
répertoire S:\TP EITI\Theme4\Seance3.
Après ces séances, vous saurez...
• Utiliser les sorties modulées (PWM) du microcontrôleur,
• commander un système extérieur nécessitant un courant élevé, par
l’utilisation de transistors MOSFET.
29
30
SÉANCE 3. COMMANDE D’UN BANDEAU LUMINEUX
Sommaire
1
2
3
Sorties modulées . . . . . . . . . . . . . . . . . . . . . 30
Commande d’un bandeau lumineux . . . . . . . . . 32
Émetteur et récepteur . . . . . . . . . . . . . . . . . . 34
1. Sorties modulées
La fonction PWM (Pulsed Width Modulation ou modulation de largeur
d’impulsion) est souvent mise en oeuvre pour le réglage proportionnel
d’organes présentant une certaine inertie (moteurs par exemple) ou associés à des récepteurs à temps de réponse important (vision humaine par
exemple).
F IGURE 3.2 – Principe de la sortie modulée sur les micrcontroleurs PIC
1.1. Principe de fonctionnement
La fonction PWM des PIC16F1503 est la combinaison de 2 périphériques :
— le timer TMR2 (commandé par l’horloge interne) ;
— un comparateur.
Un signal rectangulaire de période fixée par le registre PR2 est
produit avec un rapport cyclique pouvant être réglé grâce aux registres
PWMxDCH et PWMxDCL.
F IGURE 3.3 – Principe de la sortie modulée sur les microcontrôleurs PIC
1. SORTIES MODULÉES
31
Le timer va servir à générer un signal de modulation de forme triangulaire (compteur binaire) qui fixe la fréquence (ou période) du signal
de sortie.
Le comparateur va en permanence comparer ce signal de modulation à un valeur de référence permettant de fixer le rapport cyclique
du signal de sortie.
1.2. Période et rapport cyclique
P1 À partir de la page 5 de la documentation technique du composant,
donner le nombre et le nom des sorties PWM de ce composant.
Le module PWM est décrit dans la section 22 de la documentation
technique.
La période de sortie du module PWM est donnée par la formule suivante :
PPWMx = (PR2 + 1) ·
4
· PREDIVTMR2
FOSC
P2 Cette période peut-elle être différente pour chacune des sorties PWMx
du composant ?
P3 Avec une fréquence d’oscillation FOSC de 2 MHz, quelle doit être la
valeur de prédivision à configurer sur le timer TMR2 ainsi que la valeur
du registre PR2 pour obtenir une fréquence de sortie du PWM de 1 kHz ?
Le rapport cyclique est donné par la relation suivante :
DCPWMx =
PWMxDCH:PWMxDCL
4 · (PR2 + 1)
P4 Quelle est la valeur maximale que peut prendre l’ensemble
PWMxDCH:PWMxDCL pour avoir un rapport cyclique compris entre 0 et 1 ?
Quelle doit être la valeur de PWMxDCH:PWMxDCL pour avoir un rapport
cyclique de 0,5 ?
Pour modifier le rapport cyclique du module PWM1, on propose la
fonction suivante, qui prend en paramètre une valeur comprise entre 0
et 100 :
1
2
3
4
5
void changeDC1 ( char val ) {
int temp = ( val ∗ (PR2 + 1 ) ) / 100;
PWM1DCL = ( temp & 3 ) << 6 ;
PWM1DCH = temp >> 2 ;
}
32
SÉANCE 3. COMMANDE D’UN BANDEAU LUMINEUX
P5 Quelle est la valeur maximale que peut prendre la variable temp ?
Que permettent de faire les lignes 3 et 4 ?
1.3. Mise en oeuvre
M
Copier le projet 10_CAN.X vers un nouveau projet nommé 11_PWM.X,
que vous stockerez dans le répertoire des TP d’ETI du second semestre.
M
Renommer le fichier source principal en 11_main_pwm.c.
On souhaite, dans un premier temps, configurer la sortie PWM1 du composant selon les paramètres suivants :
— Période de sortie d’environ 1 kHz (pour une fréquence d’oscillation
de 2 MHz, que vous penserez à paramétrer) ;
— Rapport cyclique de 50% ;
— Sortie active à l’état bas.
M
À partir du paragraphe 22.1.9, écrire une fonction
void initPWM(void) qui permet d’initialiser la sortie du module PWM1
selon les réglages précédents.
M
Recopier la fonction void changeDC1(char val) dans votre fichier source principal.
M
tion.
Modifier le programme principal pour qu’il fasse appel à cette fonc-
M
Compiler et tester votre programme.
1.4. Intéraction
On souhaite, à présent, pouvoir modifier le rapport cyclique du module
PWM1 à l’aide d’un potentiomètre.
M
tion.
Modifier le programme principal pour qu’il remplisse cette fonc-
2. Commande d’un bandeau lumineux
Vous allez à présent utiliser le principe de modulation vu précédemment pour commander des bandeaux de LEDs trichromes.
2.1. Principe
Les bandeaux de LED que vous allez utiliser sont constitués de LEDs
trichromes dont on peut séparément contrôler le rouge, le vert et le bleu.
Ces bandeaux doivent être alimentés sous une tension de 12 V et consomment,
à pleine puissance, 7 W/m.
2. COMMANDE D’UN BANDEAU LUMINEUX
33
Q1 Quel est le courant total nécessaire pour alimenter un bandeau de
20 cm à pleine puissance ?
Le schéma de la figure 3.4 montre le câblage interne des bandeaux
(pour une seule LED). Les résistances de limitation du courant sont déjà
intégrées au bandeau.
F IGURE 3.4 – Bandeau de LED RGB - Principe
Q2 Quel niveau de tension faut-il appliquer sur l’une des entrées R,V ou
B pour que la LED associée s’allume ? s’éteigne ? Est-ce compatible avec
les niveaux de sortie du microcontrôleur ?
Q3 En appliquant le principe de modulation par PWM, quelle est le
fréquence minimale à appliquer sur chacune des LEDs pour ne pas voir
le clignotement de celles-ci ?
2.2. Commande PWM et transistor
Le microcontrôleur n’est pas capable de fournir plus de 25 mA par sortie (documentation technique - page 265). De plus, il ne peut délivrer que
des signaux numériques de 0 V ou 5 V.
Un transistor est donc nécessaire pour :
• adapter le niveau de tension entre la sortie du microcontrôleur
et la commande du bandeau de LEDs ;
• amplifier le courant de sortie du microcontrôleur pour pouvoir
commander le bandeau de LEDs.
Il existe plusieurs types de transistors : bipolaires ou à effet de champ.
On propose d’utiliser un transistor de type BS170 de Fairchild
Semiconductor.
Q4 De quel type est ce transistor ? Quel est le courant maximal admissible entre le drain et la source de ce transistor ? Quelle est la tension
maximale admissible entre le drain et la source ?
34
SÉANCE 3. COMMANDE D’UN BANDEAU LUMINEUX
On propose le montage suivant pour pouvoir commander le bandeau
de LEDs. Ce montage est à répliquer trois fois, pour chacune des trois
couleurs.
F IGURE 3.5 – Commande à l’aide d’un transistor BS170
Q5 Quel est le niveau logique à appliquer sur la sortie du microcontrôleur pour allumer la LED ? Pour l’éteindre ?
M
Réaliser ce montage, avec une résistance RGS = 10 kΩ, pour l’une
des couleurs et tester avec le programme réalisé précédemment.
3. Émetteur et récepteur
Dans la suite de ce thème, vous allez être amené à développer un système permettant de commander à distance la couleur du bandeau
de LEDs. Pour cela, vous pourrez vous baser sur des systèmes que vous
avez déjà étudié lors des précédents thèmes (en particulier la transmission d’information via une LED et une photodiode).
Dans la suite de ce document, nous vous proposons quelques pistes
de réflexion pour construire ce système. Il vous est demandé travailler
à deux binômes sur cette réalisation. Les sections suivantes sont donc à
vous répartir entre vous pour arriver à finaliser votre système dans
les temps !
3.1. Mise en place du matériel
Ici sont listés les éléments à réaliser pour l’émetteur et le récepteur.
3. ÉMETTEUR ET RÉCEPTEUR
35
Côté Émetteur
Câbler un écran LCD (pour le débugage).
Câbler 3 potentiomètres sur des entrées analogiques et afficher les
valeurs converties sur l’écran LCD (les potentiomètres serviront à
contrôler les trois couleurs indépendamment).
Câbler une LED émettrice (à choisir par vos soins entre visible ou
IR).
Côté Récepteur
Câbler un écran LCD (pour le débugage).
Câbler 3 sorties PWM pour pouvoir commander les 3 bandeaux,
avec des transistors de type BS170.
Câbler un système de photodétection adapté à l’émetteur.
3.2. Mise en place du protocole
Avant de tester la liaison "sans fil", il faut déterminer la manière dont
devront discuter ensemble l’émetteur et le récepteur : quels types d’information doit-on transmettre, dans quel ordre, à quelle vitesse... Tous ces
paramètres sont inclus dans ce que l’on appelle un protocole de communication.
Les données peuvent transiter de différentes manière entre un émetteur et un récepteur : en série (bit par bit) ou en parallèle (toute l’information en une seule fois).
Il existe également deux façons de gérer le transfert de l’information
(en particulier sur une ligne de transmission série) :
synchrone : l’envoi (et la réception) des données est cadencé par
un signal d’horloge qui est transmis de l’émetteur au récepteur. Ce
type de liaison nécessite souvent 3 fils (voir le protocole SPI par
exemple) ;
asynchrone : l’envoi des données est fait à une vitesse particulière
(connue de l’émetteur et du récepteur) sur un seul fil.
Pour cette application, afin de limiter le nombre de canaux de transmission à réaliser, il est suggéré de réaliser une liaison série asynchrone. Toutefois, sa mise en place est plus compliquée qu’une ligne synchrone.
Dans tous les cas, il est préférable de tester la mise en place du protocole en plaçant des fils entre l’émetteur et le récepteur. Une fois le protocole mis en place, les tests avec le système de transmission par la lumière
pourra être testé.
Téléchargement