• 40 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 12/12/2019

Concevez une chaîne complète interfaçant un capteur numérique avec un microcontrôleur

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Identifiez les circuits d’initialisation (RESET)

 Qu’il s’agisse d’un microcontrôleur de la famille RL78 (fabricant Renesas), STM32 (fabricant ST), d’un PIC24F (fabricant Microchip), voire de fonctions logiques séquentielles (compteur synchrone, bascule RS…), il est nécessaire de procéder à une initialisation, afin d’assurer un fonctionnement déterministe après une mise sous tension (Power ON), en initialisant l’ensemble des registres à une valeur connue, le plus souvent égale à zéro. On parle aussi bien de RAZ (Remise A Zéro), ou de RESET (RST) ou Master Clear (MCLR). Le besoin est de créer un état transitoire, pour automatiquement réaliser la fonction Reset puis la quitter, pour « libérer » le fonctionnement du composant.

En pratique, on prendra soin d’identifier (voir figure ci-dessous, à gauche) si le RESET est actif sur un niveau logique 1, ou bien sur un niveau logique 0, ce que la barre au-dessus de l’acronyme précisera (voir figure ci-dessous, à droite).

Figure 1a : Reset actif sur un « 1 » logique. Figure 1b : Reset actif sur un « 0 »logique.
    Reset actif sur un « 1 » logique (gauche) - Reset actif sur un « 0 » logique (droite)
  • Fonction Reset automatique actif sur 1 logique

On modélise l’évolution de la tension aux bornes de la résistance dans le « circuit CR », en réponse à un échelon de tension Valim=5V avec charge initiale nulle.

                                  VR(t)=Valimetτ 

Au démarrage, VR(t)[Valim;VIH] ce qui confirme l’état logique 1. Le RESET sera conservé pendant la durée définie par l’instant où VR(t) quittera la zone du 1 logique, soit VR(t)=VIH=3.5V.

En supposant τ=1ms , soit un couple R=100kΩet C=10nF , la durée du RESET s’écrit :  

                               TReset=τln(ValimVIH)=103ln(53.5)=356μs  

Temps de Reset « circuit CR »
Temps de Reset « circuit CR »
  • Fonction Reset automatique actif sur 0 logique

Dans le cas du « circuit RC » (figure ci-dessus), l’évolution de la tension aux bornes du condensateur, depuis une charge initiale nulle, en réponse à un échelon de tension Valim=5V , s’écrit :

                       VC(t)=Valim(1etτ) 

 Aussi, lorsque VC(t)=VIL=1.5V , le RESET barre n’est plus actif.

Figure 2b : Temps de Reset « circuit RC »
Temps de Reset « circuit RC »

 Avec τ=1ms , soit un couple R=100kΩet C=10nF , la durée du RESET s’écrit :  

                      TReset=τln(ValimValimVIL)=103ln(551.5)=356μs 

On démontre bien sur le graphe (figure ci-dessus) que le temps de RESET noté  TRESET est bien actif sur un 0 logique pendant une durée de 356µs.

En pratique est-ce aussi simple ?

En réalité, le Power ON est une phase critique pendant laquelle des perturbations sur la tension d’alimentation Valim peuvent engendrer un fonctionnement erratique (figure ci-après).

Figure 3 : Représentation du Power On d’une alimentation perturbée.
Représentation du Power On d’une alimentation perturbée

La tension VAlim subissant un transitoire (lié aussi aux capacités de découplage de la carte) avec un temps d’établissement non nul, contrairement à la réponse à un échelon, la tension qui conditionne le RESET est donc elle aussi perturbée.

Au final, selon la durée de ce transitoire (ici 130µs) dans la simulation (voir les 2 figures ci-dessous), dès lors que le transitoire est nettement inférieur à la constante de temps du circuit RC, la durée de RESET est quasi inchangée.

Figure 4a : Temps de Reset « circuit CR» avec un Power On perturbé.
Temps de RESET « circuit CR» avec un Power On perturbé

Figure 4b : Temps de Reset « circuit RC » avec un Power On perturbé.
Temps de RESET « circuit RC » avec un Power On perturbé
  • Et si l’on souhaitait réaliser un RESET manuel ?

Dans ce cas, il faut rajouter un bouton poussoir (noté Inter) en parallèle du condensateur, ce qui imposera directement le niveau actif du RESET. Les figures ci-dessous montrent que les résistances jouent également le rôle respectif de résistances de Pull-down et Pull-up.

 Figure 5a : Reset manuel actif sur un 1 logique. Figure 5b : Reset manuel actif sur un 0 logique.

RESET manuel actif sur un « 1 » logique (gauche) - RESET manuel actif sur un « 0 » logique (droite).

Sur chacun des montages, on notera la présence d’une diode qui a pour fonction de :

  • protéger la broche RESET contre la présence d’une tension négative consécutive à la décharge du condensateur lorsque l’alimentation est coupée (figure de gauche),

  • décharger rapidement le condensateur après extinction de l’alimentation (figure de droite).

Le couple (R,C) ou (C,R) peut aussi être substitué par des circuits intégrés spécifiques assurant la fonction de réinitialisation et/ou de supervision (ADM823, MCP130, STM809...). En plus de réaliser la fonction avec des temps de RESET préprogrammés ou programmables, ils assurent la surveillance d’un ou plusieurs niveau de tension. Ils sont utilisés en supervision dans des applications embarquées critiques lorsque les alimentions sont perturbées ou bruitées.

Expérimentez les montages pour translater des niveaux

Le concepteur, hélas, ne peut pas se contenter d’un seul niveau de tension pour l’ensemble des composants d’une carte électronique, notamment pour minimiser la consommation électrique où l'on essaye toujours de définir une tension d’alimentation juste supérieure à la tension minimale.

À titre d’illustration, le concepteur va être confronté à des impératifs pour :

  • interfacer des technologies «ancienne génération» souvent alimentées en +5V avec des composants de nouvelle génération Low power utilisant du +3.3V,

  • interfacer un  VCORE(0.9V ou 1.8V) avec une liaison Ethernet (1.2V),

  • assurer une compatibilité avec des appareillages (caméra, système d’acquisition, etc.) équipés d’entrée/sortie de synchronisation par déclenchement externe (Trigger 5V, 3.3V ou 1.8V).

 On peut répondre à ce besoin en insérant un translateur de niveau — Voltage Level Translator ou Level Shifter Circuit — entre des GPIO, des bus de communication ou bien encore les alimentations.

Solutions possibles pour translater des niveaux de tension
Solutions possibles pour translater des niveaux de tension.

Pour assurer cette adaptation de niveau de tension, le concepteur a principalement trois solutions (disponibles en architectures discrètes ou intégrées) pour choisir la technologie de translateur :

  • Liaison directe : les changements de niveau de tension s’opèrent au moyen de deux alimentations distinctes (+3.3V  <> +5V), avec une masse commune aux devices. C’est l’électronique interne qui assure l’aiguillage des changements de niveau de tension.

  • Liaison isolée : le système nécessite toujours deux alimentions, mais en plus il permet de séparer les masses ( GND1/GND2 ). La connexion entre les devices est réalisée par une isolation galvanique.

  • Liaison isolée capable de fournir de l’énergie : le système présente en plus l’avantage de fournir une alimentation isolée en intégrant un convertisseur continu à découpage — DC/DC .

Intéressons-nous à la mise en œuvre de la famille des translateurs de niveaux à couplage direct. Sur la figure ci-dessous, nous distinguons deux sous-types de liaisons possibles : uni et bidirectionnelles.

Figure 2 : Deux types de liaisons possibles, uni et bidirectionnelle.
Deux types de liaisons possibles, uni et bidirectionnelles

Liaison unidirectionnelle : Liaison unidirectionnelle à transistor

Cette liaison exploite le régime de fonctionnement (bloqué/saturé) d’un transistor MOSFET-N ou bipolaire (NPN) pour assurer le changement de niveau. Le principe est présenté sur la figure ci-après, il est issu de l’étage de sortie Open Drain.

Figure 3 : Translateur de niveau logique (+3.3V vers +5V) à transistor MOSFET canal N.
Translateur de niveau logique (+3.3V vers +5V) à transistor MOSFET canal N

Dans cette application, le niveau de tension [0V, +3.3V] est bien translaté en [0V, +5V] , mais on remarque que l’état logique de commande est inversé.

On pourra ajouter un second étage inverseur (software ou hardware) pour conserver l’état logique initial.

Liaison bidirectionnelle contrôlée ou automatique

  • Liaison bidirectionnelle automatique « passive » (exemple du SPI ou SD CARD) :

Ce type de liaison est certainement le plus simple et le moins coûteux à mettre en œuvre, puisqu’il utilise seulement une paire de résistances (figure ci-dessous) agencées en pont diviseur de tension.

Translateur de niveau bidirectionnel à pont diviseur de tension.
Translateur de niveau bidirectionnel à pont diviseur de tension

Lors du transfert des données :

  1. Du composant alimenté en +5V vers le composant en 3.3V, le rapport des résistances R1 (33 kΩ) et R2 (68 kΩ) permet la transformation du +5V en +3.3V.

  2. Dans le cas d’une communication inverse, la seule contrainte à vérifier est de s’assurer que le 3.3V est bien interprété comme un 1 logique pour le composant alimenté en 5V en vérifiant le VIH de ce dernier.

  • Liaison bidirectionnelle contrôlée : 

Cette solution exploite la logique à 3 états : 0, 1 et Z, pour état haute impédance qui permet d’isoler le signal sur la ligne de transmission. Le principe s’appuie sur l’utilisation de portes logiques montées en antiparallèle et dont la direction de communication (A vers B ou B vers A) est conditionnée par une entrée dédiée (DIR). La figure ci-dessous présente le principe mis en œuvre dans le composant SN74AXCH1T45 de chez Texas Instrument.

Figure 5 : Translateur de niveau bidirectionnel contrôlé réf. SN74AXCH1T45
Translateur de niveau bidirectionnel contrôlé réf. SN74AXCH1T45
  • Liaison bidirectionnelle automatique « active » :

Cette liaison (figure ci-dessous) est très utile pour translater les niveaux de tension d’un bus I2C. Analysons la mise en œuvre de la ligne SDA (Serial Data) avec des devices alimentés en +3.3V et +5V.

Figure 6 : Translateur de niveau bidirectionnel à MOSFET canal N.
Translateur de niveau bidirectionnel à MOSFET canal N

Discernons 4 cas de fonctionnement, en considérant l’état de conduction des transistors MOSFETs :

Nous démontrons que l’état de conduction de M1 est bien commandé automatiquement en fonction des 2 devices.

On appliquera cette solution sur la ligne SCL du bus I2C.

Réalisez le montage associant un capteur numérique à un microcontrôleur

Pour illustrer la connexion entre un microcontrôleur et ses esclaves, découvrons une partie de la schématique de l’objet connecté. Sur la figure ci-après, on peut voir que l’architecture principale (Main architecture) est organisée en blocs fonctionnels. On discutera des avantages de cette structure hiérarchique dans la partie 5.

Pour assurer l’interconnexion entre le micro et les capteurs, l’analyse de la figure montre l’utilisation d’un bus I2C (surligné en couleur bleue).

Architecture de la carte électronique : SOC BLE et son le bus I2C
Architecture de la carte électronique : SOC BLE et son bus I2C

La lecture du schéma électronique montre que le cœur du système repose sur un SoC BLE (System on Chip Bluetooth Low Energy), de référence nRF52832-QFAA-R7 et fabriqué par la société Nordic Semiconductor. Pour la mise en œuvre matérielle du SoC BLE, le concepteur se réfère au datasheet pour dimensionner les éléments passifs (résistances, condensateurs, inductances, quartz…).

Intéressons-nous aux blocs [Acc-IMU] et [Color-Mic-Alti] et découvrons les capteurs présents sur le bus I2C :

  • une centrale inertielle (IMU) 9 axes de mesure (gyroscope, accéléromètre, et magnétomètre) de référence MPU-9250,

  • un baromètre qui embarque un capteur de pression absolue de référence LPS22HBTR,

  • un capteur de couleur de référence BH1745NUC-E2.

Sur les schématiques suivantes, on retrouve les lignes SDA et SCL (pour échanger les données et assurer la synchronisation des échanges), les résistances de tirage (Pull-up resistor), ainsi que la distribution des alimentations.

Schématique du capteur IMU (Inertial Measurement Unit) : MPU-9250

IMU connectée à son bus I2C : sélection de l'adresse
IMU connectée à son bus I2C : sélection de l'adresse "codée en dur" par le fabricant

Traduction : l'adresse (longueur de 7 bits) de l'esclave MPU-9250 est b110100X. Le bit LSB de l'adresse 7 bits est déterminé par le niveau logique présent sur la broche AD0. Cela permet à deux MPU-9250 d'être connectés au même bus I2C. Dans cette configuration, l’adresse de l’un des périphériques doit être b1101000 (broche AD0 : au niveau logique bas) et l’adresse du second périphérique doit être b1101001 (broche AD0 : au niveau logique haut).

Schématique du capteur de pression absolue LPS22HBTR

Baromètre connecté au bus I2C
Baromètre connecté à son bus I2C : sélection de l'adresse "codée en dur" par le fabricant

Traduction : l'adresse de l'esclave (SAD) associée au LPS22HB est b101110. La broche SDO/SA0 peut
être utilisée pour modifier le bit LSB de l'adresse du périphérique. Si SA0 est connecté à l'alimentation, le bit LSb est égal à 1 (adresse 1011101b), sinon si le pad SDO/SA0 est connecté au GND, la valeur du bit LSb est 0 (adresse 1011100b). Cette solution permet de connecter et d'adresser deux LPS22HB différents sur les mêmes lignes I²C.

Schématique du capteur de couleur : BH1745NUC-E2 

Capteur de couleur connecté à son bus I2C
Capteur de couleur connecté à son bus I2C : sélection de l'adresse "codée en dur" par le fabricant

Traduction (dernière ligne) : il est possible de sélectionner 2 types d'adresses d'esclave sur le bus I2C (ADDR = L : 0111000 , ADDR = H : 0111001).

Traiter une information pour construire un diagnostic suppose des calculs nourris par la collecte de données numériques.

Lorsqu’on utilise un capteur analogique, c’est le procédé de conversion analogique numérique qui fabrique la donnée binaire. Précision en amplitude et en temporel conditionnent le débit numérique et donc potentiellement la capacité de stockage en mémoire.

Lorsqu’on utilise un capteur numérique, il faut construire les signaux électriques de commande et paramétrer par des registres le fonctionnement le capteur. Sur de faibles distances entre capteur et microcontrôleur les protocoles I2C et SPI sont les standards actuels. Naturellement la qualité des signaux d’alimentation assurent l’intégrité des échanges de données.

Exemple de certificat de réussite
Exemple de certificat de réussite