Rapport de Projert de Fin D'etude
Rapport de Projert de Fin D'etude
Rapport de Projert de Fin D'etude
Réalisé par :
- LIDARI AIMAD
- MAAKOUL OTHMANE
- OUAANABI ABDERRAHMAN
Encadré par :
Mr .ZIREG
Sommaire…………………………………………………………..2
Introduction générale……………………………………………...4
I : bus I2C …………………………………………………………5
1) Généralité sur le bus I2C …………………………………………..……5
2) Les constitutions de la trame du bus ………………………………… 6
a) Start condition………………………………………………………6
b) Transmission d'un bit…………………………………………..……6
c) Stop condition……………………………………………………… 7
d) L’acquittement………………………………………………..…… 7
e) L'adresse et le bit R/W ………………………………………………7
II : analyse du projet…………………………………………….....8
1) Cahier de charge ………………………………………………………….8
2) Analyse fonctionnel ……………………………………………………….8
3) Schéma fonctionnel…………………………………………..…………..10
III : acquisitions et configurations………………………………10
1. PIC16f877 en mode I2C ……………………………………….. ………..10
2. Organisation et configuration …………………………………………….19
a) Maître du bus I2C (master) ………………………………………..19
a.1 - organigramme …………………………………….....…..19
a.2 - configuration des registres du PIC ………………...........20
- organigramme………………………………………….……23
- configuration des registres du PIC…………………………24
- Etude du capteur…………………………………………….29
- organigramme ………………………………………………31
- configuration des registres du PIC ………………………...31
3- Programmation ……………..…………………………………………35
IV: Réalisation…………………………………………………….35
1- Circuit imprimé……………………………………………………………….35
2- Réalisation………………………………………………………………….…35
V : Conclusion…………………………………………………….40
VII : Annexes……………………………………………………..41
Introduction générale :
Dans le cadre de notre formation Brevet de Technicien Supérieur (BTS) , les étudiants de 2éme année
systèmes électroniques doivent réaliser un projet de fin d’étude.
Suite à notre programme d’étude, le bus I2C est un cour du microcontrôleur en électronique, consiste à
réaliser une communication entre les circuits électroniques (les Pics, les circuits programmables
FPGIA….),et nous on a le choix de faire comme projet une maquette didactique I2C qui a le but de faire des
Travaux Pratiques de ce cour pour les étudiants de notre spécialité.
Notre projet consiste à mesurer la fréquence, température et la luminosité à l’aide des capteurs liés aux
pics esclaves communiquent avec un pic maître qui affiche les valeurs des grandeurs dans un afficheur
LCD.
Le bus I2C est un bus de type série a été développé pour les communications de très courtes distances
(de l’ordre du mètre) et pour un débit maximum de 100kbits/sec. Une extension a par la suite été apportée,
appelée Fast I2C, permettant d’atteindre un débit de 400kbits/sec.
pour réaliser le bus I2C il suffit de pondre deux registres à décalage l’un en émission et l’autre en
réception de même fréquence d’horloge.
Ou peut se fait à l’aide des circuits programmable PLD, FPGA. De programme intelligent VHDL.
I. bus I2C
Le bus I2C, dont le sigle signifie Inter Integrated Circuit ce qui donne IIC et par contraction I2C. Le
protocole est initialement proposé par Philips mais adopté de nos jours par des très nombreux
fabricants. C'est un bus de communication de type série.
Le bus I2C utilise deux lignes de signal permet à un certain nombre d'appareils d'échanger des
informations sous forme série avec un débit pouvant atteindre 100 Kbps ou 400 Kbps pour les versions
les plus récentes
C'est un bus série bifilaire utilisant une ligne de données appelée SDA (Serial Data) et une ligne
d'horloge appelée SCL (Serial Clock).
Les données peuvent être échangées dans les deux sens sans restriction .
Le bus est multi-maître.
Le bus peut travailler à une vitesse maximum de 100 Kbps (ou 400 Kbps) le protocole permet de
ralentir automatiquement l'équipement le plus rapide pour s'adapter à la vitesse de l'élément le plus
lent lors d’un transfert
Un acquittement est généré pour chaque octet de donnée transférée
Chaque abonné dispose d'une adresse codée sur 7 bits. On peut donc connecter simultanément 128
abonnés d'adresses différentes sur le même bus, sous réserve de ne pas le surcharger électriquement.
Les niveaux électriques permettent l'utilisation de circuits en technologies CMOS, NMOS ou
TTL.
C’est toujours le maître qui génère l’horloge quel que soit le sens du transfert des données. Chaque
ligne peut avoir deux états :
Figure2 : Positionnement du bus I2C par rapport `a Figure 3 : communication entre des circuits par bus I2C
d’autres bus et réseaux
Start condition
Au début d’une séquence d’échange, le maitre génère un start condition(S) avant de commencer
l’échange de données. Au repos les lignes SCK et SDA sont à l’état haut(relâchées, pour générer un
start le maître place d’abord la ligne SDA à 0 en suite il place SCK à 0.
Stop condition :
A la fin d'une séquence d'échange, le master génère un stop condition (P) après lequel le bus est de
nouveau libre. Pour cela, à partir de la situation SDA=0, SCK=0, le master commence par placer
SCK à 1 et place ensuite SDA à 1.
L’acquittement :
L’acquittement est l'accusé de réception. Il est placé par le circuit qui reçoit sur la ligne SDA juste
après la réception du 8ème bit. C'est l'émetteur qui le lit de la même façon qu'on lit un bit ordinaire.
SDA=0 acquittement positif (ACK), SDA=1 acquittement négatif (NOACK),
Le standard I2C supporte maintenant l'adressage sur 10 bits. Comme avec 7 bits on peut adresser
jusqu'à 128 composants, cela nous suffira largement. :
2) Analyse fonctionnel
a) Bête à cornes
Maquette
didactique du
Bus I2C
b) Diagramme pieuvre
Les travaux
pratiques
Étudiants
Sécurité
FP1
FC1
Maquette de bus
I2C
FC2 FC3
Energie
L’environnement
électrique
c) Diagramme SADT
Energie Commande
électriqu
e
La réalisation des Travaux pratiques du bus TP I2C réalisé
TP I2C
I2C
3) Schéma fonctionnelle :
SSPBUF
SSPCON
SCK/RC3
SSPCON2
SDA/RC4 SSPSTAT
SSPSR SSPADD
Pour transmettre un octet, il suffit de le copier dans le registre SSPBUF, et le module MSSP
s’occupe du reste. Au moment de l’écriture dans SSPBUF, le bit BF passe à 1 et la transmission
commence. A la fin de la transmission, le bit SSPSTAT.BF repasse à 0 et le drapeau d’interruption
PIR1.SSPIF passe à 1.
Le bit BF apparaît donc comme un bit très important, c’est lui qui nous permet de savoir si le
registre SSPBUF est libre ou non Si on tante d'écrire dans SSPBUF alors que BF=1, le bit
SSPCON.WCOL passe à 1 pour indiquer une collision et l'écriture n'a pas lieu.
A la fin de la réception d'un octet, celui-ci est transféré dans SSPBUF, l’indicateur SSPSTAT.BF
et le drapeau d’interruption PIR1.SSPIF passent à 1. BF repasse automatiquement à 0 au moment de la
lecture de SSPBUF alors que SSPIF soit être remis à 0 par soft.
Si le PIC termine la réception d'un octet avant que l'octet précédent qui se trouve dans SSPBUF
n'ait été lu, on a une erreur qui sera signalé par le drapeau SSPOV. Le transfert n'a pas lieu, l’octet
arrivé est perdu.
Le registre SSPSTAT
SMP : Slew rate control set bit (1 pour 100 KHz et 1MHz, 0 pour 400 KHz)
CKE : Input levels set bit (0 = bus I²C, 1 = bus SMBUS)
D_A : Data / Address bit (0 = address, 1 = data)
P : stoP bit
S : Start bit
R_W : Read/Write bit information (0 = write, 1 = read)
UA : Update address
BF : Buffer Full / data transmit in progress
Le bit SMP : Il détermine si le filtre doit être ou non mis en service. Il vous suffit de savoir que si
vous travaillez avec une fréquence de 100 KHz ou de 1 MHz, vous devez mettre ce bit à « 1 » (hors-
service). Par contre, pour une vitesse de400 KHz, vous le laisserez à « 0 » (en service).
Le bit CKE : prend également une signification différente. Si vous mettez ce bit à « 1 », vous
travaillerez avec des niveaux d’entrée compatibles avec le bus SMBUS. Par contre, en le laissant à «
0 », vous travaillerez avec des signaux compatibles I²C .
Le bit D_A : vous indique si le dernier octet reçu ou transmis était un octet de donnée (1) ou un
octet d’adresse (0). Ceci vous permet de savoir où vous en êtes dans le transfert d’informations.
Le bit P : est également un indicateur. Il vous informe si le dernier événement détecté était un stop-
condition (P = 1). Il s’efface automatiquement dès qu’un autre événement est reçu. Il s’efface
également lors d’un reset, ou si vous mettez le module MSSP hors-service.
Le bit S : est un indicateur qui procède exactement de la même façon, mais pour un start condition.
Le bit R_W : a deux fonctions distinctes selon qu’on travaille en I²C maître ou en I²C esclave :
En I²C esclave, il vous indique l’état du bit R/W (bit 0 du premier octet qui suit le start-
condition). Si R/W vaut « 0 », une écriture est donc en cours, s’il vaut « 1 », il s’agit d’une
lecture. Ce bit est valide entre la détection de la correspondance d’adresse (Si c’est votre PIC
qui est sélectionnée par le maître) et la fin de la trame en cours, donc jusqu’au prochain
stop-condition , répète start-condition , ou bit NOACK (acquittement négative).
En I²C maître, il vous informe si un transfert est en cours (1) ou non (0).
Le bit UA : est un indicateur utilisé uniquement en esclave sur adresses 10 bits. Il vous prévient
quand vous devez mettre votre adresse à jour en mode I²C.
Dans le cas de mode d’adresse 10 bits nécessite 2 octets, le positionnement automatique de ce bit
UA vous signale que le premier octet d’adresse a été traité, et qu’il est temps pour vous de placer
votre second octet d’adresse dans le registre concerné (et inversement).
le bit BF : est un indicateur qui indique si le registre SSPBUF est plein (1) ou vide (0). Evidemment,
positionné, en réception, il signifie que l’octet a été reçu, alors qu’en émission il signale que la
transmission de l’octet n’est pas encore terminée.
Le registre SSPCON :
Bit WCOL : est un indicateur qui signale quand une collision d’écriture (WCOL = 1). Il y a 2 cas
possibles :
- En mode master, cette collision arrive si vous tentez d’écrire dans le registre SSPBUF et le
bus utilise par d’autre circuit (bus pas libre, start-condition pas encore envoyée…). Cette
collision a pour conséquence que la donnée n’est pas écrite dans le registre SSPBUF (bloqué
en écriture).
- En mode slave, ce bit sera positionné si vous tentez d’écrire dans le registre SSPBUF alors
que le mot précédent est toujours en cours de transmission. Vous devrez remettre ce flag à «
0 » par logiciel.
Bit SSPOV : est un indicateur vous informe d’une erreur de type « overflow ». C’est-à-dire que vous
venez de recevoir un octet, alors que vous n’avez pas encore lu le registre SSPBUF qui contient
toujours l’octet précédemment reçu. Le registre SSPBUF ne sera pas écrasé par la nouvelle donnée,
qui sera donc perdue. Vous devez remettre ce flag à « 0 » par logiciel. Ce bit n’a donc de
signification qu’en réception.
Bit SSPEN : permet de mettre tout simplement le module I 2C en service. Les pins SCL et SDA
passent sous le contrôle du module MSSP. Les pins SCL et SDA devront cependant être configurées
en entrée via TRISC
Bit SSPMx : sont les bits qui déterminent de quelle façon va fonctionner le module I²C.
1 0 0 1 réservé
1 0 1 0 réservé
1 1 0 0 réservé
1 1 0 1 réservé
Bit GCEN : est le seul bit qui concerne le mode esclave. Si vous validez ce bit, le PIC répondra non
seulement à l’adresse que vous avez placée dans SSPADD, mais également à l’adresse Réservée
d’appel général (0x00).
Bit ACKSTAT : vous donne l’état du bit d’acquittement envoyé par l’esclave lorsque vous écrivez
des données. Si ACKSTAT vaut « 0 », c’est que l’esclave vous a envoyé un « ACK » (acquittement
favorable, s’il vaut « 1 », c’est qu’il n’y a pas eu d’acquittement (NOACK).
Bit ACKDT : est la valeur de l’acquittement à envoyer à l’esclave lorsque vous procédez à une
lecture. Ce bit sera envoyé lorsque vous positionnerez le bit ACKEN. De nouveau, une valeur« 0 »
signifie que vous envoyez un « ACK », une valeur « 1 » sera placée pour un NOACK.
Bite ACKEN : lance la génération de l’acquittement. La valeur de ce bit (ACK ou NOACK) est
déterminée par la valeur que vous avez placée dans ACKDT. Ces 2 bits sont donc liés.
Bit RCEN : Lance la réception d’un octet en provenance de l’esclave. Pour lancer une écriture, on
place la valeur à écrire dans SSPBUF, pour lancer une lecture, on met RCEN à « 1 ».
Bit PEN : Lance la génération automatique du stop-condition
Bit RSEN : Lance la génération du répète de start-condition
Bite SEN : Lance la génération du start-condition.
Le registre SSPADD
Son nom signifie Synchronous Serial Port ADDress register. Il a deux fonctions
complètement distinctes, selon que l’on travaille en I²C maître ou en I²C esclave.
Mode esclave.
En mode I2C slave, ce registre doit contenir l'adresse du slave. Le bit 0 est réservé, il
doit être toujours placé à zéro, l'adresse doit être écrite à partir du bit 1. En cas
d'adresse 7 bits, cela ne pose pas de problème. En cas d'adresse 10 bits, l'adresse est
écrite en 2 temps, On commence par écrire 1 1 1 1 0 A9 A8 0 dans SSPADD, en
attend l'indicateur UA, ensuite on écrit A7 A6 A5 A4 A3 A2 A1 A0
Mode maitre
Dans notre projet s’intéresse a étudié des PIC, au mode maitre en reception et les esclaves en mode émission
a) Master en réception
organigramme
Début
Envoyer START
Teste Acquittement
Adresse
Envoyer R-START Ok?
Envoyer NOACK
Stop condition
Fin
On positionne le bit SSPCON2.SEN sur le master, celui-ci envoie le START bit sur la ligne SDA
puis r.à.z automatiquement le bit SEN et positionne le drapeau d'interruption PIR1.SSPIF,
On copie l’adresse avec R/W=0 dans SSPBUF, les bits SSPSTAT.BF et SSPSTAT.R_W passent à 1,
la transmission démarre, après le 8ème coup d'horloge, SSPSTAT.BF repasse à zéro, après le 9ème
R_W repasse à 0,
Tester L'acquittement sur l'adresse est renvoyé par le slave pendant le 9ème coup d'horloge sur la
ligne SDA : si l’adresse identique a se lui de slave le bit ACKSTAT de registre SSPCON2 passe a
« 0 », si non SSPCON2. ACKSTAT=1 c.-à-d. acquittement non favorable donc en envoi le répète
de START condition (R_Start ) On positionne le bit SSPCON2.RSEN .
Le module I2C master voyant le RCEN=1 essaye de commencer une réception par l'envoi d'une
rafale de 8 coups d'horloge. A la fin de la réception, le module I2C master ramène le bit
SSPCON2.RCEN à 0, transfert l’octet reçu dans SSPBUF, l’indicateur BF passe à 1 ainsi que le
drapeau d’interruption PIR1.SSPIF. Ensuite Il force l'horloge à 0 (pause) pour donner le temps au
programme d'envoyer l’Acquittement au esclave (ACK ou NOACK) .
A la fin de réception de l’octet le maitre envoi une acquittement au esclave pour demande ou refuse
l’octet suivant : pour demander l’octet (ACK) en plaçe SSPCON2.ACKDT et en validant le bit
SSPCON2.ACKEN=1 , pour refuser (NOACK) l’octet en plaçant SSPCON2.ACKDT et en validant
le bit SSPCON2.ACKEN=1 puis en envoi la STOP condition.
Figure 6 : structure du trame du bus et les etats des bit du registre de contrôle (pic 16f877)
b) L’esclave en émission
organigramme :
Debut
Fin
Remarquons que l’esclave en transmission ne fait que préparer la donnée à transmettre dans son buffer
SSPBUF. C'est le master qui décide du début de l'échange puisque c'est lui qui gère l'horloge. Toutefois, le
slave peut bloquer un échange en bloquant l'horloge à 0.
Dans ce cas on s’intéresse a l’état de l’interruption SSPIF de registre PIR1, ce dernier passe a « 1 » quand
l’adresse envoi par le maitre est ce lui de l’esclave
2) Organisation et configuration
a 1. Organigramme
Notre pic communique avec trois esclaves par les adresse suivant
Début
Afficher la valeur
du température
Envoyer l’adresse 0x5A
Recevoir la donnée
Recevoir la donnée
Afficher la valeur
du luminosité
Envoyer l’adresse 0x38
Recevoir la donnée
La configuration de PIC en mode Maître il faut configurer trois registres SSPSTAT, SSPCON
et SSPADD avec la vitesse 100khz et fréquence d’oscillation Fsc=20MHz
𝐅𝐨𝐬𝐜
F=
𝟒.(𝐒𝐒𝐏𝐀𝐃𝐃 + 𝟏)
Les fréquences possibles sont : 100 kHz, 400 kHz et 1 MHz donc avec Fosc=20MHz
𝐅𝐨𝐬𝐜
SSPADD = - 1 (HZ)
𝟒 .𝐅
A .N : donc SSPADD=(49)10 = b’00110001’ = 0x31
SSPADD=0x31
SSPSTAT =0x80
SSPCON=0x38
- A 0°C, soit 273,15 °K, la LM335 délivre 2,7315 V et 100°C, soit 373,15 °K, la LM335 délivre
3,7315 V Sa pente est de 10 mV/°K.
- Dans la plage -20 °C à +125 °C, nous aurions une tension , aller de 2,5315 V à 3,9815 V
Début
Traitement de la valeur N :
𝜽 =0.488281.N – 273,15
Oui
Une autre donnée ?
fin
0 1 0 1 1 0 1 0
SSPADD=0x5A
SSPSTAT =0x80
SSPCON=0x36
𝟏
On a : T = N T0 avec T0= 𝐅
𝟎
N
D’où F0 = T pour lire N comme une valeur mesure .il faut Prendre T :
T=1s N en Hz
T=1ms N en KHz
T=1us N en MHz
Démarrer le compteur
Arrêter le compteur
Traiter la donnée N
Oui
Une autre donnée ?
Fin
0 1 1 0 1 0 0 0
SSPADD=0x48
SSPSTAT =0x80
SSPCON=0x36
Mode compteur
Dans ce mode, TMR1 est incrémenté à chaque front montant de l'horloge externe T1CKI (RC0) ou
l'horloge dédiée générée par l’oscillateur T1OSC à condition de positionner le bit T1OSCEN à 1 et de
brancher un quartz entre les broche RC0 et RC1.
En mode compteur, RC0 et RC1 sont automatiquement configurées en entrée, on n’a pas
besoin de configurer les bits TRISC,0 et TRISC,1
Vcc
LDR
Pic
R
b) L’équation de la luminosité
Etude pratique :
O n a fait cette étude pout trouver la relation entre la résistance de la LDR et la luminosité,
l’aide d’un fluxmètre et nous avons obtenu le résultat suivant :
Résistance(KΩ) 4,55 4,4 4,2 4 3,8 3,5 3,3 3 2,5 2,2 1,9 1,6 1,4 1,25 0,84 0,5
Luminosité(Lux) 159 160 170 190 200 220 250 270 300 350 400 500 700 800 1000 2000
Pour trouver l’équation de récurrence on a trouver une équation entre la luminosité et la tension.
on a rempli le tableau suivant :
tension
(V) 0,9 0,92 0,96 1 1,04 1,11 1,16 1,25 1,42 1,56 1,72 1,92 2,08 2,22 2,71 3,33
lux 159 160 170 190 200 220 250 270 300 350 400 500 700 800 1000 2000
A partir de 1000 LUX la courbe devient une fonction linéaire donc on a pu extraire la relation
entre la tension et la luminosité
𝟐𝟎𝟎𝟎−𝟏𝟎𝟎𝟎
Lux= ×𝑼
𝟐,𝟐𝟓−𝟏,𝟏𝟐
Lux = 884,955*U
𝐕𝐫𝐞𝐟 + − 𝐕𝐫𝐞𝐟 −
Le CAN : on a quantum q= 𝟐𝟏𝟎
avec Vref + = 5V et Vref -- =0V
𝟓
Or q= 𝟏𝟎𝟐𝟒 alors Vout = N . q avec N : la valeur numerique
𝟖𝟖𝟒, 𝟗𝟓𝟓
𝐋𝐔𝐗 = ×𝐍
𝟏𝟎𝟐𝟒
𝑳𝒖𝒙 = 𝟎, 𝟖𝟔𝟒𝟐 × 𝑵
Traitement de la valeur N
𝑳𝒖𝒙 = 𝟎,𝟖𝟔𝟒𝟐 × 𝑵
Oui
Une autre donnée ?
fin
5- Algorithme de fonctionnement
2.1- algorithme de maitre
IV: Réalisation
1- Circuit imprimé
LE TYPON :
Les pistes doivent être larges et les pastilles assez grandes en fonction des composants qu'elles
recevront :
Terrage de la carte
MATERIEL NECESSAIRE :
Alcool à brûler
Etain liquide
Acétone
Vernis protecteur
Insoleuse
Divers bacs
Gants de protection
2- PREPARATION :
3 L'INSOLATION :
Les plaques photosensibles sont revêtues d'un papier protecteur opaque qui protège la face
photosensible de l'ultra-violet pendant son stockage,
4- LA REVELATION
3- LE PERCAGE :
6-TEST
7-soudage
Conclusion
ANNEXES
Annexe de programmation