rapport stage

48
Département MC - Service A2E Rapport de stage de fin d'études Numérisation Industrielle LOMBART Thierry Master Electronique, Système et Télécommunication Université de Nice Sophia-Antipolis 2014-2016

Upload: thierry-lombart

Post on 12-Jan-2017

168 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Rapport Stage

Département MC - Service A2E

Rapport de stage de fin d'études

Numérisation Industrielle

LOMBART Thierry

Master Electronique, Système et Télécommunication

Université de Nice Sophia-Antipolis

2014-2016

Page 2: Rapport Stage

2/48

Département MC - Service A2E

Sommaire

Présentation d'ArcelorMittal 3

-Le site de Fos-Sur-Mer 3

-Service d'accueil 3

Présentation du projet 5 -Présentation des cartes étudiées 5

-Informations complémentaire sur le train à bande 5

-Fonctionnements des cartes 6

-Réalisation de la nouvelle carte 10

-Les PIC: Tests et résultats 11

-Microcontrôleur SAM4S 13

-Cortex-M4 15

-Carte Xplained Pro 17

-Programmation 18 -Buffer 20

-Configuration d'ADC 20

-Fonction Zero Crossing detector 20

-Utilisation des Timer 21

-Fonction déphasage 23

-Interruption 25

-Carte d'adaptation 26 -Adaptation en aval du microcontrôleur 26

-Adaptation en amont du microcontrôleur 28

-Travail restant à faire 30

Industrialisation futur 31 -Aspect consommation 32

-Aspect sécurité 35

Conclusion 39

Abréviations 40

Bibliographie 42

Annexe 43

Page 3: Rapport Stage

3/48

Département MC - Service A2E

Présentation d'ArcelorMittal

ArcelorMittal est un groupe sidérurgique mondial, il est le plus important producteur d'acier au

monde, il produit acier, aciers plats, aciers longs, acier inoxydable, câbles et tôle forte, servant à

la construction (stade de Geoffroy Guichard à Saint-Étienne), emballage alimentaire destiné à la

réalisation des cannettes et des conserves, automobile (caisse en blanc, carrosserie,

essuie-glaces...) et différents appareils électroménagers. Avec 98,088 millions de tonnes

produites en 2014. Le groupe est présent dans 60 pays et regroupe 230 000 salariés dans le

monde.

Le site de Fos-sur-Mer :

L’usine de Fos-sur-Mer a été créée en 1971. L’usine est bâtie sur une surface de 1600 hectares (4

km par 4 km) dont seuls 600 sont occupés par les installations industrielles

Le site emploie 2500 salariés et 1500 sous-traitants, ce qui en fait le deuxième employeur

industriel du département. L'usine a une capacité de production annuelle de plus de 4 millions de

tonnes d'acier, dont 120 nuances sont réalisables suivant les additions chimiques, les traitements

thermiques, les procédés industriels et les modes opératoires choisis pour parvenir au produit fini,

destinées aux marchés de l'automobile, de la construction et des aciers pour tubes (pipelines,

gazoducs).

Présentation du service d'accueil A2E :

Le service A2E, automatisme électronique et électrotechnique composé de 21 personnes dont (12

techniciens et 7 cadres), il fait partie du département Maintenance Centrale.

Le service a pour but l'amélioration de la fiabilité des installations : éradication des pannes,

élaboration des plans de maintenance (400 équipements), définition des standards d’installation,

de maintenance et d’intervention ainsi que l'internalisation de projets de rénovation

d’automatismes et d’électronique de puissance.

Page 4: Rapport Stage

4/48

Département MC - Service A2E

Page 5: Rapport Stage

5/48

Département MC - Service A2E

Présentation du projet

L'objectif de mon stage est de concevoir une carte numérique interface plus robuste et fiable dans

le temps que les cartes analogiques présentent tout en conservant les paramètres.

Présentation des cartes étudiées

-Informations complémentaire sur le train à bande

Le train à bande permet la transformation des brames d’acier de plusieurs centimètres d’épaisseur

et atteignant un poids maximum de 38T en bobines de tôles de quelques millimètres d’épaisseur.

Pour obtenir ce résultat, trois fours réchauffent les brames à 1200°C puis celles-ci passent entre

une série de cylindres où elles sont laminées jusqu’à l’obtention de l’épaisseur désirée (1.2 à 16

millimètres). Elles sont ensuite enroulées en bobine. La vitesse maximale de laminage est de 97

Km/h. Chaque année 4 millions de tonnes d’acier sont laminées. L’ensemble de l’installation

occupe 71000 m² dans un bâtiment de 900 m de long.

Caractéristiques : - Capacité : 5 millions de tonnes par an.

-Largeur des bobines : 650 < 2150 mm

-Poids maxi brame : 38 T

-Epaisseur : 1.2 > 16 mm

Figure 1 : Schématisation du train à bande

Une succession de cages dégrossisseuses et finisseuses permet d’atteindre l’épaisseur souhaitée

en appliquant un effort de compression sur la brame.

Page 6: Rapport Stage

6/48

Département MC - Service A2E

Les cartes que j’ai étudiés, TPGE (Gate Pulse Generator Circuit) et TBAA (Buffer Amplifier

Circuit) (Photo annexe 7) se situent au niveau de la zone du finisseur, constituant les cages des

finisseuses. Elles génèrent des impulsions pour qui conduisent des thyristors, qui servent à

commander 2 moteurs à courant continu en série d’une puissance de 5k Watt (annexe 8).

L’annexe 1 représente le synoptique de la commande d’une cage de finisseuse, où la partie

encadrée en rouge représente la carte TPGE et en vert la TBAA.

-Fonctionnements des cartes

La première des deux cartes est donc la carte TPGE qui comme son nom l'indique a pour but la

génération d'impulsions. Elle produit un set complet d'impulsions tous les 360°, ces impulsions,

identiques et nommées d'une à six sont appliquées à leurs thyristors respectifs précédant les

moteurs du finissage. Une grande précision est donc de rigueur car une impulsion décalée

simplement d'une centaine de microsecondes peut avoir de lourdes répercussions sur le bon

fonctionnement de la carte et de la zone du finissage lui-même.

Cette séquence est obtenue à partir de signaux sinusoïdaux d'un transformateur hexaphasé et

d'une tension continue de commande.

Figure 2 : Schéma électrique d'un bloc TPGE

La carte est composée de 3 blocs identiques chacun générant deux trames d'impulsions, composé

de deux impulsions comme représenté sur la figure 3. Il y'aura donc 6 trames d'impulsions en

sorties de la carte TPGE.

Page 7: Rapport Stage

7/48

Département MC - Service A2E

Chaque bloc consiste en un intégrateur et un inverseur, deux détecteurs de zéro et deux

amplificateurs d'impulsions

Tensions d'entrées d'un bloc:

-Référence de phase, un signal sinusoïdal triphasé (220 V, 50 Hz) appliqué aux trois

blocs réduit à une amplitude de 29 V

-Tension limite, qui est aussi un signal sinusoïdal qui est utilisé pour fournir une ligne de

courant alternatif isolé du neutre, s'incrémentant de 60°, elles aussi ont une fréquence de 50 Hz

pour une amplitude de 21 V.

Une trame d'impulsion est composée de 2 impulsions, la première impulsion est générée

lors du "Zero Crossing Detector, ZCD" de la tension limite, ainsi qu'une impulsion dite de

"rappel" espacée de 3.3ms ce qui correspond à un déphasage de 60°, cette impulsion de rappel est

générée de la même manière mais avec la tension limite n+1 donc déphasée elle-même de 60° par

rapport à la tension limite n. Cette impulsion de rappel est une condition pour l’allumage des

moteurs, car pour qu’un thyristor s’amorce il faut un ordre de gâchette et que le courant

traversant le thyristor reste supérieur à un seuil pendant un certain temps. Lorsque l’on veut

démarrer le moteur comme le courant est nul lorsque l’impulsion sera présente sur la gâchette du

thyristor celui-ci ne pourra pas conduire puisqu’il n’y aura pas de circulation de courant.

Pour pouvoir démarrer il faut donc un thyristor opposé qui s’amorce également, c’est

pourquoi l’impulsion d’amorçage d’un thyristor est généré par l’impulsion qui lui est destiné ou

l’impulsion du thyristor d’après.

Figure 3 : Trames d’impulsion 1 et 2

Ces trois circuits partagent la même tension de commande Uc, tension continue oscillant entre

-15V et +15V et entrainant un déphasage sur les impulsions en sortie jusqu'à une demi-période

soit 10 ms voir, une suppression totale des impulsions pour une tension Uc inférieur à -7.5V. Le

schéma de l'annexe 2 montre ce déphasage. Cette tension de commande est l’image de l’angle de

retard à l’amorçage.

Page 8: Rapport Stage

8/48

Département MC - Service A2E

Figure 4 : Circuit de commande de gâchette des thyristors

En sortie de la carte, l'impulsion est d'une amplitude de 13 V pour une largeur de 200us, le but de

la carte suivante TBAA, est la mise en forme des impulsions. En effet en sortie les impulsions

seront directement envoyées vers les thyristors. Leurs amplitudes vont donc être réduites à 5 V, et

une "extension" va être ajoutée aux impulsions qui est dédiée au thyristor présent sur la figure 6.

La carte TBAA est donc une carte amplificatrice d'impulsion destinée à remettre en forme et

amplifier les 6 trames provenant de la carte TPGE. Elle est donc elle aussi composée de 6 étages

indépendants traitants chacun une trame différente qui sert à commander un des six thyristors.

Figure 5 : Schéma électrique d'un block TBAA

Chaque étage est composé d'un monostable multivibrateur et de deux transistors. Cette carte est

composée de trois fonction : d'un "Pulse Stretcher", "Pulse Amplifier" et d'un "Pulse Summer".

Pulse Stretcher : Le monostable multivibrateur accepte les impulsions de la carte TPGE et rajoute

à l'impulsion un léger surplus. Cette extension est de l’ordre de 20 us.

Page 9: Rapport Stage

9/48

Département MC - Service A2E

Cette extension est présente pour diminuer la variation de potentielle anode-cathode afin qu’elle

ne soit pas trop importante et ainsi éviter que le thyristor s’amorce de manière accidentelle.

Figure 6 : Extension des impulsions de l'ordre de 20us

Pulse Amplifier: Une technologie TTL est utilisée avec un ensemble de 3 transistors qui vont

diminués l'amplitude des trames pour retrouver une impulsion comprise entre 5 V et 0 V.

Le Pulse Summer comme son nom l'indique va additionner les impulsions pour obtenir une

septième trame, le "train d'impulsion" figure 7 qui est destiné à piloter une autre carte "Lockout".

Figure 7 : Train d'impulsion

La carte possède d'autres fonctions comme la suppression totale des 6 trames ainsi que du train

d'impulsion, qui est commandé par la carte TFMA (The Fault Monitor), cette suppression est

réalisée quand la carte TFMA envoie un 1 logique sur la base d’un transistor.

Page 10: Rapport Stage

10/48

Département MC - Service A2E

Réalisation de la nouvelle carte

J'ai commencé par reproduire et simuler la carte TPGE, génératrice d'impulsions avec le logiciel

ISIS de Proteus permettant de comprendre plus facilement son fonctionnement. Le but principal

étant d'arriver à reproduire/quantifier le déphasage des impulsions par rapport à la tension de

commande annexe 2. Cela passe par le calcul de la fonction de transfert du circuit.

Le problème que j'ai rencontré avec cette simulation est sa précision, en effet le déphasage obtenu

comparé aux vraies cartes n'était pas correct et donc rendait obsolète cette méthode. Cette

reproduction hasardeuse était due à la tension de seuil des différentes diodes 1N4148. Bien que

ces diodes présentes dans la librairie du logiciel il m'a été impossible de modifier la valeur de la

tension de seuil, ou alors de créer un nouveau composant.

Avec l'avancement de le Technologie et particulièrement l’essor considérable qu’a connu la

microélectronique et notamment les techniques d’intégration, on permit l'amélioration des

microcontrôleurs, permettant de faire des calculs toujours plus puissants et rapides, le tout avec

un composant pas plus gros qu'une pièce d'un euro, cela ouvre la voie à la numérisation des

anciennes structures. Offrant par exemple une diminution de la taille d'une carte, une

augmentation de sa robustesse, de sa fiabilité, supprimant quasiment toutes pannes possibles par

rapport à un système analogique, réduisant ainsi l'argent alloué à ce type de structure. C'est la

solution visant à sécuriser et améliorer le rendement d'une usine. Certaines entreprises comme

Arcelor-Mittal possèdent encore énormément de systèmes analogiques anciens, par exemple les

cartes sur lesquels j'ai travaillé date d'avant 1990 et on donc bien besoin d'un coup de neuf.

Pour cela les microcontrôleurs sont l'une des solutions, un microcontrôleur (ou MCU pour

microcontroller unit) peuvent être résumé comme étant un petit ordinateur avec un seul circuit

intégré contenant un processeur, une mémoire et des périphériques d'entrées et de sorties

programmables. Une mémoire programmable sous forme de RAM, Flash ou ROM est souvent

incluse sur la puce. Les microcontrôleurs sont conçus pour les applications embarquées,

contrairement aux microprocesseurs qui sont des CPU (Central Processing Unit) utilisés dans les

ordinateurs personnels ou d'autres applications à usage général.

Les microcontrôleurs sont utilisés dans les produits et appareils à contrôle automatique, tels que

les systèmes de contrôle de moteur d'automobile, des appareils médicaux implantables,

télécommandes, machines de bureau, les appareils électroménagers, les outils électriques, les

jouets et autres systèmes embarqués.

En réduisant la taille et le coût par rapport à une fabrication séparée qui utilise un des dispositifs à

microprocesseur, une mémoire et des entrées/sorties distinctes, les microcontrôleurs permettent

de commander numériquement encore plus d'appareils et de procédés.

Page 11: Rapport Stage

11/48

Département MC - Service A2E

La numérisation des deux cartes se fera par l'utilisation d'un microcontrôleur, reste maintenant à

définir les besoins pour sa sélection. Les premiers essais ont été faits à partir des

microcontrôleurs PIC (Programmable Intelligent Computer), pour finalement travailler sur la

carte de développement Xplained Pro, avec comme microcontrôleur un SAM4S de chez Atmel.

PIC: Tests et résultats

Le logiciel ISIS étant néanmoins puissant, il est un des rares logiciels à proposer la possibilité de

simuler certains microcontrôleurs de première gamme, en l'occurrence des PIC du fabricant

Microchip. J'ai utilisé des PIC de la famille 8-bits, particulièrement des PIC16F (F pour

l'utilisation d'une mémoire Flash) tel le 16F887, pour commencer la programmation. Le 16F887

est donc un microcontrôleur 8 bits, avec 40 broches comprenant 36 entrées/sorties dont 14

peuvent être utilisées comme canaux pour l'ADC et opère dans une échelle de tension de 2 à

5.5V. Avec une vitesse d'opération maximal de 20 MHz et d'une taille de mémoire de 14KB,

rajouter à cela un faible coût et un kit de debugger pickit2.

J'ai utilisé le compilateur MikroC Pro pour PIC, car facilement accessible et pensé spécialement

pour la programmation des PIC. La programmation se faisait en langage C, le compilateur

générant un fichier .hex qui était directement implanté dans le microcontrôleur simulé avec ISIS.

La facilité de prise en main, sa flexibilité au niveau de la programmation ainsi que son

implantation rapide au sein du logiciel de simulation, m'a permis de programmer le

microcontrôleur pour faire l'acquisition et le traitement des signaux analogiques grâce au module

ADC sur 10 bits. Je me suis aidé de différents cours et exemples trouvés sur internet et

particulièrement ce de BIGONOFF fortement utile pour débuter.

Comme présent sur les premiers signaux figure 8, la génération d'une trame se faisait

correctement tout en respectant les largeurs d'impulsions et la durée d'attente de l'impulsion de

rappel de 3.3ms. On peut néanmoins s'apercevoir que l'impulsion à un retard non négligeable sur

le passage en "zéro" de l'impulsion.

Page 12: Rapport Stage

12/48

Département MC - Service A2E

Figure 8 : Simulation de trame sous ISIS

De plus avec l'ajout des autres acquisitions et générations d'impulsions on peut s'apercevoir que

certaines impulsions se déformaient figure 9, dues à un temps de monté important ou alors ni plus

ni moins à non-génération des impulsions.

Figure 9 : Absences/déformations d'impulsions

Cela mais en évidence un point important de ce type de microcontrôleur, de la famille des

midde-range qui est leur fréquence maximum à laquelle ils peuvent travailler. En effet cette

famille peut être cadencée jusqu'à 20 MHz, ce qui certes, avec ce code pas optimisé, est une

fréquence insuffisante pour l'utilisation souhaitée.

Il a donc fallu voir plus "grand" avec des microcontrôleurs pouvant tourner plus rapidement. Un

choix possible était les dsPIC30/dsPIC33F/dsPIC33E toujours de chez Microchip. Les dsPIC

(digital signal PICs) sont adaptés aux applications de traitement du signal, permettant par

exemple de faire du contrôle vectoriel de moteur, des filtres de type IIR/FIR, la possibilité

d'accéder à des blocksets pour MATLAB Simulink permettant de générer du code pour tous les

périphériques des dsPIC30 et dsPIC33

Page 13: Rapport Stage

13/48

Département MC - Service A2E

Choix de la carte test Pour le choix du microcontrôleur qui devait être assez rapide pour faire l'acquisition des 6

tensions sinusoïdes, de la tension de commande et générer les impulsions par la suite. J'ai fait mes

recherches à partir des deux gros constructeurs de microcontrôleur que sont Microchip et Atmel.

La carte de développement associé au MCU doit être aussi prise en compte, par rapport à sa

taille, sa facilité d’intégration au projet, son prix, etc...

Le choix de la carte de développement c'est finalement porté sur la Xplained Pro avec comme

type de microcontrôleur un SAM4S (Smart Atmel Microcontroller), doté d'une architecture

Harvard ARMv7E-M, et d'un cœur Cortex-M4. Le SAM4S a été développé à partir de 2011 et

fait partie de la série des SAM4 comprenant d'autres microcontrôleurs comme le SAM4E (2013)

basé sur un cœur Cortex-M4F, premier MCU d'Atmel intégrant un Floating-Point Unit (FPU) qui

est une part du système spécialement désigné pour réaliser des opérations comportant des

nombres flottant, ou le SAM4C (2014) possédant un double cœur.

La raison première de ce choix et tout simplement le prix, en effet nous avons pu par

l'intermédiaire d'une connaissance au sein de l'entreprise obtenir la carte gratuitement avec un

délai de livraison très rapide.

Microcontrôleur SAM4S

Les microcontrôleurs de la série SAM4 sont donc composés d'un processeur Cortex-M4. Il y a

près d'une quinzaine de dériver du SAM4S. Le MCU que j'utilise est l'ATSAM4SD32C qui est le

plus "complet" des microcontrôleurs de la série des SAM4S (La première lettre après le S

correspond à la mémoire, D pour dual-bank Flash, A pour une simple Flash, suivit du nombre de

bits et du nombre de broches : A pour 48, B pour 64 et C pour 100 broches).

Malgré ces différences, la structure reste quasiment similaire pour les MCU, voir en annexe 3 le

bloc diagramme correspondant au SAM4SD32.

Les avantages du microcontrôleur du SAM4S sont

-La rapidité de traitement des données avec une fréquence maximum de 120 MHz ce qui

nous permettra d'assurer un temps de montée élevé pour les impulsions.

- Un ADC (Analog Digital Converter) 12 bits (4095 niveaux) travaillant à une vitesse

d'acquisition 1 000 000 échantillons / secondes (1 MSPS) avec 16 entrées

- Six générateurs d'impulsions automatiques (durée configurable de 100 ns à plusieurs ms)

grâce aux différents Timers Counter et leurs registres.

- L'ADC et les générateurs d'impulsions peuvent fonctionner de manière autonome,

c'est-à-dire sans aucune intervention du CPU, ce qui permet au CPU de traiter les données venant

de l'ADC.

Page 14: Rapport Stage

14/48

Département MC - Service A2E

- Une taille de 2 MB de mémoire flash et 160 KB pour la SRAM et d'un cache intégré de

2MB. Sa consommation est faible, de l'ordre de 200uA/MHz pendant son fonctionnement même

si la consommation n'est pas un point critique de ce projet.

-100 broches dont 79 pouvant être utilisées comme entrées/sorties, le microcontrôleur

s'alimentant en 5V par USB ou par une tension externe entre 1.6V et 3.6 V. C'est d'ailleurs un

défaut, car les tensions de sorties ne pourront pas être supérieur à une tension de 3.3V, il faudra

donc les amplifier pour retomber sur du 5V.

Périphériques SAM4S Quelques périphériques standards du SAM4S que j'ai dû utiliser tels que les Timer, ADC,

expliqué dans les chapitres suivants, ainsi que :

-DMA controller

Direct memory access (DMA) qui est utilisé pour les transmissions de données ente les

périphériques et la mémoire, ainsi que de la mémoire à la mémoire à une vitesse élevée. Les

données peuvent être rapidement déplacées par le DMA sans l'action du CPU ce qui permet aux

ressources du CPU de rester libre pour d'autres opérations.

-DAC unit

Le module DAC (Digital to Analog Converter) est sur 12 bits, il dispose de deux sorties

analogiques, pouvant être conduit comme deux canaux indépendants qu'ils peuvent être utilisés

conjointement avec le DMA contrôleur.

-Watchdog unit

Le watchdog est utilisé pour empêcher le système d'être enfermé par exemple si le programme

tombe dans une deadlock. Il dispose d'un compteur 12 bits et peut générer un reset général ou

uniquement pour le processeur. De plus, il peut être stoppé quand le processeur est en mode

debugge ou repos.

-PIO Controller

Le PIO (parallel Input/Output). Chaque I/O peut être dédié comme une I/O générale ou peut être

assignée à une fonction de l'un des périphériques embarqués. Ceci assure une optimisation

efficace des broches du produit.

-PMC

Le PMC (Power Management Controller) optimise la consommation en contrôlant tout le

système et utilisant les horloges périphériques. Le PMC activé/désactive l'horloge des entrées

d'un grand nombre de périphériques et du processeur CM4

Page 15: Rapport Stage

15/48

Département MC - Service A2E

Cortex-M4 processeur Le processeur Cortex-M4 est un processeur de haute performance sur 32 bits conçu pour le

marché des microcontrôleurs. Il offre de très bonnes performances de traitement combiné avec

une manipulation rapide des interruptions, un système de débogage renforcé à l’aide de

« breakpoint », une faible consommation d’énergie avec des modes veilles intégrés, une

plateforme de sécurité robuste intégrant une unité de protection de mémoire (MPU).

Figure 10 : Block diagramme d’un Cortex-M4

Cœur du Cortex-M4 Le CM4Coeur est fondé sur une architecture d'Harvard figure 11 (séparant physiquement la

mémoire de données et la mémoire programme). L'accès à chacune des deux mémoires s'effectue

via deux bus distincts. L'avantage d'utiliser deux bus distincts, est que l'architecture dite

d'Harvard permet le transfert en simultané des données et des instructions à exécuter. Par

conséquent le CPU aura accès en même temps aux instructions et aux données associées. Cette

structure peut être plus rapide à technologie identique que celle de von Neumann figure 11 par

exemple qui utilise une structure de stockage unique pour conserver à la fois les instructions et

les données demandées ou produites par le calcul. Cependant cet avantage fait que la structure

Harvard est plus complexe.

Page 16: Rapport Stage

16/48

Département MC - Service A2E

Figure 11 : Architecture von Neumann et Harvard

Le cœur pipeline a trois étapes : l'instruction Fetch, l'instruction Décode et l'instruction Exécute.

Le processeur va chercher l'instruction de destination de branchement lors de l'étape de décodage

lui-même. Plus tard durant l'étape d'exécution, le branchement est résolu et traite l'instruction qui

sera la prochaine à être exécuté. Si le branchement n'est pas fait, l'instruction suivante est déjà

disponible. Si le branchement est fait alors l'instruction de branchement est mise disponible au

même moment ou la décision est prise, limitant le temps de repos à un cycle [1].

Le CM4 Coeur contient un décodeur pour les instructions Thumb et Thumb-2 (extension

permettant d'améliorer la densité du code et réduisant la mémoire nécessaire au programme), un

ALU (Arithmetic logic unit) avec support pour des multiplications et divisions, un contrôle

logique et des interfaces pour les autres composants du processeur. Le Cortex-M4 possède un

registre banque et une interface pour la mémoire, 13 registres généraux, deux stacks pointeurs, un

programme compteur et des registres spéciaux incluant un registre statut programmable.

Le processeur Cortex-M4 est un système de mémoire mappée avec une carte à mémoire simple,

fixe jusqu'à 4 gigabits d'espaces destinés à l'adressage de la mémoire, avec certaines adresses

dédiées : au code (code space), SRAM (espace mémoire), aux mémoires/appareils externes et aux

périphériques internes/externes. Il y a aussi une région particulière à fournir pour le fournisseur

d'adressage spécifique.

De plus le processeur Cortex-M4 supports des opérations de 32 bits en un seul cycle et supporte

aussi des opérations signées et non signées avec les instructions SDIV (Signed divide) et UDIV

(unsigned divide) qui prennent de 2 à 12 cycles, dépendant de la taille des opérandes.

Page 17: Rapport Stage

17/48

Département MC - Service A2E

Carte Xplained Pro La carte Xplained Pro figure 12 est une plateforme de développement permettant

d'accéder facilement aux fonctions du SAM4SD32C. Elle possède un debugger directement

implanté ce qui nous permet de la programmer avec un simple câble micro-USB via le logiciel

Segger, J-Link. Des cartes d'extensions existent offrant la possibilité d'ajouter d’autres

fonctionnalités à la carte comme un écran LCD.

Figure 12 : Carte Xplained Pro pour SAM4SD32C

Page 18: Rapport Stage

18/48

Département MC - Service A2E

PROGRAMMATION

La quasi-totalité du sujet se fera par le biais de la programmation vu que le MCU SAM4S peut le

permettre.

Pour programmer j'ai utilisé le logiciel IAR Embedded Workbench for ARM de chez IAR

SYSTEMS.

Le programme sera composé de plusieurs partie .c :

-le main : dont la boucle testera le buffer de l'adc avant d'appeler la fonction ZCD.

-tc_function : qui va identifier les sorties utilisés par le microcontrôleur via les

Timer, l'initialisation du mode correspondant au Timer, ici le mode Waveform.

-l'adc_function : identifiant les broches d'entrées, les paramètres d'initialisations

de l'ADC lui-même.

Ajout des librairies figure 13 nécessaires au fonctionnement du programme comme les drivers

ASF (Atmel Software Framework) qui couvrent une large gamme de microcontrôleur

(megaAVR, AVRXMEGA, AVR UC3 et la série des SAM).

Figure 13 : Librairies nécessaires

Page 19: Rapport Stage

19/48

Département MC - Service A2E

Voici l'organigramme simpliste du programme à réaliser figure 14.

Figure 14 : Organigramme

La première partie est d'acquérir les six signaux analogiques et la tension de commande Uc. Pour

cela j'utilise l'ADC qui retourne des valeurs numériques comprises entre 0 et 4095 qui vont être

stockées dans des registres. Les valeurs contenues dans les registres vont ensuite être comparé à

différents seuils, c'est la fonction ZCD qui a pour but de trouver le passage en zéro sur le sens

descendant de la sinusoïde. L'information sur le sens du signal est importante pour ne pas

confondre la détection du "zero crossing" (durant la phase descendante du signal) et le moment

où la courbe repasse par le zéro mais en dans le sens ascendant.

Page 20: Rapport Stage

20/48

Département MC - Service A2E

Configuration du Buffer Avant de commencer à faire les conversions de nos signaux, il faut s’assurer que le buffer du

DMA ne soit pas plein

Figure 15 : Routine du buffer

Configuration de l'ADC L'acquisition des signaux analogiques se fera par l'utilisation de l'ADC, pour cela j'ai dû

configurer l'ADC_MR (Mode Register) qui regroupe les paramètres qui définissent l'ADC, je me

suis aidé de la Datasheet du microcontrôleur fourni par Atmel. Quelques paramètres comme le

Prescal qui permet de configurer la fréquence de l'horloge de l"adc, où 1 < fADCCKL< 22

(MHz).

fADCCKL = ( (fPeripheral clock)/(Prescal +1)*2)).

Avec fPeripheral clock =40MHz, il faut que Prescal prenne la valeur 0 pour avoir fADC =20MHz

qui est la fréquence typique.

Chaque canal possède leur propre "Statup time" qui doit être le plus faible possible, dans mon cas

le startup time sera égal à 64 périodes de fADCCKL, ce qui nous donne un startup time de 3.2us.

Fonction "Zero Crossing Detector"

J'ai commencé par déterminer le sens de la sinusoïde pour que si l'ADC est hors de la zone du

"zero crossing" on puisse extraire le sens de la pente :

Si l'ADC est à une valeur très basse, 200 : alors la prochaine zone du "zéro" sera abordée de

manière ascendante.

Si l'ADC est à une valeur très haute, 3500 : alors la prochaine zone du "zéro" sera abordée de

manière descendante.

Page 21: Rapport Stage

21/48

Département MC - Service A2E

Figure 16 : Théorie ZCD

Si l'ADC est dans de la zone du "zéro" (si ADC >= seuil de détection 1970) et que l'on se trouve

sur la pente descendante, on exécute l'impulsion sur la sorties n et sur la sortie (n-1) afin de

générer notre impulsion de rappel, Cas particulier : si x = 1 alors l'impulsion de rappel sera

exécuté sur la sortie 6.

Figure 17 : Code ZCD

De manière idéale, la zone de détection est centré au milieu de la sinusoïde, la zone correspond à

la valeur 2048, en tenant compte de la variation de la courbe sinusoïdale dans cette zone (sin(0)),

le passage se trouve entre 48.82% et 51.18% de l'échelle de l'ADC. Les seuils de l'ADC sont les

valeurs 2000 (début de l'impulsion) et 2096 (fin de l'impulsion).

L’utilisation des Timer On va donc utiliser les Timer Counter d'une taille de 16 bits, ceux-ci vont s'incrémenter lors de la

détection du "zéro", les six sorties associés au Timer Counter (TC) peuvent générer différents

types d'impulsions. Le TIOAx (Timer Counter Chanel x Input/Output Line A) est configuré

comme une sortie, il comprend six canaux qui recevront une trame chacun. Le TIOB n'étant pas

utilisé.

Page 22: Rapport Stage

22/48

Département MC - Service A2E

Il faut alors configurer les registres de comparaisons TC_RA, TC_RB et TC_RC, où Ra est

utilisée pour contrôler les sorties TIOA, RB contrôle les sorties TIOB et RC contrôle les deux

sorties. Lorsqu'un Timer Counter atteint le seuil RA, la sortie bascule à l'état haut et inversement

lorsqu'il atteint le seuil RC, la sortie est mise à l'état bas.

Figure 18 : Fonction Waveform, Fonctionnement Timer

Il va falloir configurer ces registres pour obtenir une impulsion de 200us, pour cela RA sera

initialisé à 2 et RC à 1002. Pour cela il faut prendre en compte la fréquence de l'horloge, ici j'ai

choisi comme fréquence "TIMER_CLOCK2" qui correspond à diviser par 8 la fréquence du

MCK, Master Clock Register qui est configuré à 40MHz. Avec cette fréquence de MCK, 1 cycle

de comptage (ADCCLK période) est égal à 200ns. Le choix de la fréquence "TIMER_CLOCK2"

est dû au retard de la tension continue Uc et est expliqué après.

Figure 19 : Fonction associée au Timer

Page 23: Rapport Stage

23/48

Département MC - Service A2E

Cette fonction figure 21, fait le lien entre un des canaux du Timer Counter à l'une des sorties, ici

le Timer Counter 0, TIOA0 sera associé à la sortie PA0 du microcontrôleur, cette association

configurée par le constructeur et donnée dans la datasheet.

Figure 20 : Multiplexing on PIO Controller A (PIOA)

Figure 21 : Code Multiplexing on PIO Controller A (PIOA)

Fonction déphasage

Une partie fondamentale du projet est le déphasage des impulsions par rapport à la tension de

commande Uc. Le procédé est le même que pour les sinusoïdes précédentes où l'ADC va

effectuer la conversion en valeur numérique qui va induire un retard ou non.

Figure 22 : Seuils de basculement de tension Uc

Page 24: Rapport Stage

24/48

Département MC - Service A2E

Pour induire ce retard, il faut jouer sur les valeurs des registres RA et RC qui correspondent aux

valeurs de basculement des sorties. Nous avons vue qu'un cycle de comptage du Timer Counter

est égal à 200 ns du au choix du "TIMER_CLOCK2". Ici les impulsions doivent au maximum

atteindre un retard de 10 ms avant d'être supprimées, ce qui signifie que le TC doit atteindre une

valeur de 50 000 cycles pour ce retard. Rappelons que les Timer Counter sont sur 16 bits soit une

valeur de 65536, cela n'aurait pas été possible d'atteindre ce retard avec une fréquence plus

élevée, avec le mode "TIMER_CLOCK1" où le temps d'un cycle est de 50ns (65 536 x 50 ns =

3.27 ms), d'où le choix du mode "TIMER_CLOCK2 avec certes une précision moindre, mais qui

reste plus correcte avec un temps de cycle, soit une précision de 200ns soit de l'ordre 1/1000

d'une impulsion.

La fonction déphasage est appelée uniquement quand la valeur de la tension de commande est

inférieure à 3072.

La fonction comprend une variable nommée "Delay" qui est ajouté aux valeurs contenues dans

les registres RA et RC.

-Si la ValeurNum est supérieurs à 1024 alors la valeur du "Delay" va être égale :

Delay = ((-3072 +ValeurNum) / (-0.04096))

-si ValeurNum= 2048 => Delay =25000 cycles, multipliant cette valeur le temps de cycle

de 200ns, on obtiendra alors la valeur du retard de 5ms.

3071 correspond à la valeur (max+1) que peut prendre ValeurNum

0.004096 correspond au pas, ValeurNum pouvant prendre 2048 valeurs (dans cette fonction)

entre 3072 et 1024, le pas étant égal au Nombre de ValeurNum/ Nombre de cycle (2048 / 50000).

-Si la valeur est maintenant inférieure ou égal à 1023, les impulsions doivent être

supprimées, les valeurs contenues dans les registres RA et RC vont être forcés à 0 ne générant pas

la moindre impulsion jusqu'à un changement sur la tension Uc.

Page 25: Rapport Stage

25/48

Département MC - Service A2E

Interruption

Une interruption doit être implantée afin de permettre la suppression des trames en sorties

lorsqu’un niveau logique haut sera envoyé sur la broche IRQ du microcontrôleur qui est dédié à

cette effet.

Ci-dessous la fonction de configuration des paramètres permettant l’interruption, en plaçant la

sortie souhaitée à l’état bas lorsqu’un état haut est détecté.

Figure 23 : Interruption d’une sortie

Page 26: Rapport Stage

26/48

Département MC - Service A2E

Hardware

Adaptation en aval du microcontrôleur:

Il faut en premier lieu réduire les amplitudes des sinusoïdes pour qu'elles soient compatibles avec

le microcontrôleur. Les sinusoïdes seront comprises entre 3.3V et 0V. Pour cela j'ai utilisé un

amplificateur opérationnel, le TL074 qui est un amplificateur couramment utilisé, car robuste et il

a un faible coût d'achat. Le circuit comprend un montage suiveur permettant une adaptation

d'impédance, d’un montage inverseur avec un gain idéal de 0.156 Vs = (R2/R1)*Ve avec R2 =

1540 ohm et R1=10K ohm, ce qui nous donne une sinusoïde de +/- 3.3V.

Mais comme les tensions d’entrées du microcontrôleur ne doivent pas excéder les 3.3V et que j’ai

effectué mes tests sur le banc de test des cartes TPGE et TBAA, et que les sinusoïdes sont

générées par un transformateur que peut envoyer des tensions supérieurs au 21V, la résistance R2

sera plus petite afin de protéger le microcontrôleur d’une évaluation soudaine de la tension.

A cela il faut rajouter une composante continue de 3.3V pour retrouver le signal souhaité,

composante continue générée à partir d'une tension 15 V qui alimente les anciennes cartes TPGE

et TBAA ainsi que leur banc de test, cette tension d'alimentation est gardé afin de rester

compatible avec le banc de test.

Un régulateur 7805 figure 24 est utilisé pour obtenir une tension de 5V suivit d'un diviseur de

tension avec R1=3k9 ohm et R2=2k ohm, Vs = (R1/ (R1+R2))*Ve. La composante continue de

3.3V et la sinusoïde sont ensuite additionné l'une vis-à-vis de l'autre.

Figure 24 : Schéma électrique LM7805

Ce circuit est utilisé car le microcontrôleur nécessite un signal très pur et stable pour opérer

proprement. De plus si la tension de sortie chute, le LM7805 va injecter plus de courant, forçant

ainsi la tension de sortie à revenir à 5V. Donc, le LM7805 contrôle la tension de sortie et la garde

à 5V, car le microcontrôleur requière un signal très propre, des condensateurs entre les broches

Vdd et Vss sont placées pour filtrer les distorsions causées par le circuit lui-même. Ce 5V servira

aussi à alimenter la carte de développement.

Page 27: Rapport Stage

27/48

Département MC - Service A2E

Le même circuit est réalisé pour l'adaptation de la tension de commande UC comprise entre +/-

15V pour son adaptation en 0/3.3V.

Ce montage est répété six fois pour les six sinusoïdes. L'amplificateur inverseur est préféré à un

amplificateur non-inverseur car plus stable. C'est la raison pour laquelle la génération

d'impulsions se fait sur le sens descendant de la courbe et non ascendant.

Les sinusoïdes d'entrées de la carte électronique et celle en sortie qui iront directement au

microcontrôleur, sont déphasées de 180° les unes par rapport aux autres. Pour respecter la

génération des impulsions, au passage du "zéro" dans le sens ascendant des premières sinusoïdes,

il faudra alors générer l'impulsion non plus sur le sens ascendant mais sur le sens descendant. La

figure 25 montre la simulation de cette adaptation.

Figure 25 : Simulation de l’adaptation des tensions de références

Page 28: Rapport Stage

28/48

Département MC - Service A2E

Adaptation en amont du microcontrôleur

Comme mentionné plus haut, le microcontrôleur SAM4S fournit une tension de sortie de 3.3V. Il

faut alors amplifier les impulsions pour une amplitude de 5V, pour cela j'utilise un Level Shifter,

le 74LVC245A Low-Voltage CMOS figure 26. Ce circuit intégré possède 20 broches et permet

donc de passer d'une amplitude d'1.5V au niveau TTL et vice versa suivant la configuration de

deux pins, OE (Output Enable Input) et T/R (Transmit/Receive Input), 16 broches (A0-A7,

B0-B7) sont utilisées comme entrées/sorties pour la mise à niveau de 8 signaux au maximum. Ce

circuit a un temps de réaction très rapide, n'influant pas le temps de monté des impulsions comme

on peut le voir en annexe 4.

Figure 26 : Schéma des Pinout (Top View) et câblage électrique

La connectible entre le banc de test (où se feront les premiers tests) et la carte électronique

d'adaptation se fait par le biais de connecteurs fiches bananes directement soudés à la carte. Ce

choix est du à leur robustesse et leur facilité d'intégration.

Les broches de sorties où sont envoyés les trames après l'adaptation en niveau TTL par le Level

Shifter sont connectées à des points test permettant la vérification des impulsions. Le schéma de

la carte électronique avec un bloc d’adaptation est présent en annexe 5.

Page 29: Rapport Stage

29/48

Département MC - Service A2E

Figure 27 : Différentes connectibles utilisées

Comme présent sur la figure 28, les impulsions sont bien générées au passage du "zéro" de la

sinusoïde en entrée de la carte électronique, une seule impulsion est générée car je n’avais qu’un

seul GBF à ma disposition.

Figure 28 : Tension de référence et impulsions

Page 30: Rapport Stage

30/48

Département MC - Service A2E

Travail restant à faire Comme précisé plus haut, la pulse n'est pas totalement "carré" mais possède une extension

comme montré sur la figure 6. Pour obtenir ce résultat il faut configurer le DAC du

microcontrôleur combiné avec l'action d'un Timer Counter. Lorsque l'ADC détecte le zéro

crossing, il déclenche un TC qui ne génère aucune impulsion sur sa sortie dédiée, ce sera le DAC

"associé" qui générera le premier palier de l'impulsion, le 5V. Lorsque le TC atteint son premier

"seuil numérique", il déclenche une interruption qui change le niveau du DAC pour sortir une

tension d'un volt, on crée donc le deuxième palier de l'impulsion. Enfin lorsque le TC atteint son

deuxième seuil, chaque TC pouvant avoir 2 seuils, l'interruption du timer est déclenchée une

seconde fois et permet de mettre le signal de l'impulsion au niveau bas.

L'un des problèmes que pose l'utilisation du DAC est qu'un microcontrôleur "généraliste" à

rarement plus de 2 sorties DAC. Le SAM4S ne possède lui aussi que deux sorties DAC, il

faudrait donc utiliser 3 microcontrôleurs pour pouvoir générer nos six trames. Pour lier les

impulsions (dû à l'impulsion de rappel délivrée du coup par un autre microcontrôleur), il faut

chaîner les 3 microcontrôleurs entre eux. Chaque microcontrôleur utilisant une sortie digitale

directement connectée à une entrée digitale du microcontrôleur voisin. La carte de

développement Xplained Pro deviendrait alors obsolète et il faudra développer une carte

spécifique aux 3 microcontrôleurs. L’annexe 6 montre le schéma électrique du SAM4S, avec les

régulateurs de tensions et la partie dédiée à l’USB.

Page 31: Rapport Stage

31/48

Département MC - Service A2E

Industrialisation futur L'industrie avec l'émergence constante des nouvelles technologies, a beaucoup évolué.

L'utilisation des technologies d'automatisations et de contrôle on eut un grand impact sur

l'industrie sur les dix dernières années. Les cartes de types analogiques sont de plus en plus

vouées à disparaître au profil des microcontrôleurs et autres types de numérisations. Mais qu'en

sera-t-il dans 5, 10 ou 15 ans avec par exemple l'arrivée prochaine de l'Internet des Objets (IdO)

dans des grandes entreprises de types automobiles ou de distributions comme ArcelorMittal

possédant des milliers d'automates et autres systèmes électroniques. Pour ces entreprises une

connexion de tous ou d'une grandes parties de leurs appareils serait un vrai plus, engendrerait une

meilleur prévention et suivit du matériels, réduisant ainsi le coût des nombreuses pannes.

L'Internet des Objets (IdO) ou Internet of Things (IoT) représente l'extension d'internet des

choses et à des lieux du monde physique. C'est un "réseau de réseaux qui permet, via des

systèmes d'identification électronique normalisés et sans fil, d'identifier et de communiquer

numériquement avec des objets physiques afin de pouvoir mesurer et échanger des données entre

les mondes physiques et virtuels".

L'IoT considéré comme le Web 3.0 va peu à peu envahir nos objets du quotidien, appareils

ménagers et médicaux, capteur de température, voitures connectées, les smartwatches etc... Mais

aussi dans le domaine de la santé ou du transport. Avec près de 50 milliards d'objets connectés

d'ici 5 ans, représentant près de 1.3 milliard de microcontrôleurs pour l'IoT pour 2020 [4], c'est un

marché extrêmement lucratif qui touche un grand marché, allant des dispositifs portés sur soi

(wearables), les maisons intelligentes et le monde de l'industrie. Le marché des systèmes

embarqués, quand à lui devrait atteindre la somme 258.7 milliards de dollars en 2023 grâce en

parti au développement massif des IoT. C'est en effet une estimation publiée par le site Gobal

Market Insights en fin août 2016 montrant l'entendu du marché [2]. Dans le même temps

Microchip Technology (actuel troisième vendeur de MCU) annoncé ses résultats trimestriels pour

la période de fin juin, où la compagnie affiche un nouveau revenu record de l'ordre de 799.4

millions de dollars, tout en ayant fait l'acquisition d'Atmel pour la somme de 3.56 milliards de

dollars un peu plutôt cette année [3].

Mais malgré ce marché en pleine effervescence des problèmes comme la consommation

d'énergie déjà bien présent dans le domaine de l'embarqué et aussi la sécurité des informations

transmises car la connexion d'une multitude équipements à un réseau peut être une faille au

niveau sécuritaire et avoir de grave répercussion, nous verrons comment des microcontrôleurs

spécialisés proposes des solutions à ces problèmes.

Page 32: Rapport Stage

32/48

Département MC - Service A2E

Consommation des microcontrôleurs

L'autonomie d'un système reste l'un des facteurs critiques pour les systèmes embarqués, comme

le sont régulièrement les objets connectés.

C'est d'ailleurs le but d'Atmel avec sa nouvelle gamme de microcontrôleurs SAM L21, mettant

l'accent sur sa faible consommation énergétique. Certaines de ces puces pourraient fonctionner

jusqu'a 10 ans avec la seule charge d'une batterie, de quoi alimenter justement le marché en plein

essor de l'Internet des Objets.

En effet, les microcontrôleurs 32 bits Ultra low power SAM L21 ne consomme que 35uA/MHz

[7] en activité alors que les MCU faible consommation sont plus souvent situés dans une

fourchette de consommation comprise entre 100 et 200 uA/MHz. La série SAM4S atteint les 200

uA/MHz en mode dynamique avec une fréquence de fonctionnement basse ; 30 mA à 120 MHz

et 1uA à 1.8V en mode de secours avec l'horloge en temps réel (RTC) en fonctionnement.

Pour ce faire, les MCU d'Atmel utilisent un cœur ARM Cortex M0+ cadencé à 42 MHz. En

veille, les MCU SAM L21 se contentent d'une consommation inférieure à 200 nA. Cette gamme

de SAM L21 s'appuie sur un système avancé de gestion des domaines d'alimentation comme le

power management.

Le Cortex-M0 propose des performances moins élevé, avec des tailles de mémoires moindres,

mais entièrement tournée vers la frugalité énergétique, pensée pour l'Internet des Objets. Il est

certes moins puissant mais il est largement capable de faire tourner des systèmes d'exploitation de

type RTOS (Real Time OS) très répandus dans l'IOT. Ils peuvent être utilisés dans des détecteurs

de fumée, alarmes, et d'autres systèmes dotés de capteurs.

De plus la plateforme proposée par Atmel est suffisamment économe en électricité pour pouvoir

s'alimenter soi-même en utilisant des techniques de récolte d’énergie (Energy Harvesting)

pouvant exploiter les variations de température, les vibrations ou les rayonnement UV.

Figure 29 : Anatomie d'un réseau de capteur sans fil incorporant des techniques de récoltes d'énergies [8]

Page 33: Rapport Stage

33/48

Département MC - Service A2E

Les techniques de récoltes d'énergies sont de plus en plus implantés par des grosses compagnies

de production de MCU, tels que Texas Instruments, STMicroelectronics, Silicon Labs, NXP

Semiconductors et Microchip Technology. Ces microcontrôleurs incluent une très faible

consommation de puissance à l'état actif, un courant de veille extrêmement faible et la capacité de

changer rapidement entre ces deux modes, temps de réveil (Wake-up time) car durant cette

période le CPU n'effectue pas de tâches et consomme quand même de l'énergie.

Puissance totale consommé = Puissance mode actif + Puissance mode veille + Puissance due au

réveil, figure 30.

Puissance mode actif (ou Puissance dynamique) = C * V² * f, où C est la capacitance du circuit,

V la tension appliqué et f et la vitesse de transition.

Figure 30 : Low Power Design [9]

L'ARM Cortex-M Energy Mode 2 (EM2) et l’instruction Wait-for-Event (WFE) sont

particulièrement utiles pour réduire la consommation des microcontrôleurs sur lesquels ils sont

implantés. Comme son nom l'indique cette instruction permet au CPU d'attendre pour un

évènement particulier, au lieu de scruter en continu. L’EM2 qui possède un mode "deep-sleep"

active le microcontrôleur pour fournir un haut degré d'autonomie de fonctionnement tout en

conservant une faible consommation énergétique. Les hautes fréquences d'oscillations du cœur

sont mises hors tension, mais les périphériques de faible énergie continue de fonctionner à une

fréquence de 32Khz ainsi que le RTC. Sous ces conditions le CPU ne tourne pas, de sorte que le

MCU procède à des opérations avancées en mode veille. La consommation en EM2 est de l'ordre

de 0.9 uA.

Fonctions ARM Cortex-M La partie qui va suivre montre différents exemples d'économie d'énergie rapporté à l'acquisition

d'échantillons/seconde que peut faire un microcontrôleur par l'intermédiaire de son module ADC

utilisé pour faire l'acquisition de données analogiques, ce qui est l'une des fonctions principales

de mon projet.

Page 34: Rapport Stage

34/48

Département MC - Service A2E

L'une des approches conventionnelles pour l'acquisition des données est d'activer le mode

Capture de L'ADC avec un Timer et transférer les données vers le bus DMA. Prenons comme

exemple le microcontrôleur "EFM32WG230F256-QFN64" de chez Silicon Labs qui propose une

consommation de courant de 165uA pour une vitesse d'acquisition d'1 K échantillons/seconde et

de 350uA pour 32K d'échantillons/seconde. Cette méthodes permet une bonne utilisation de

l'interaction périphérique, elle n'utilise pas de microcontrôleur spécial ni d'instruction. Les

résultats sont représentés en rouge sur la figure 31.

La seconde option (en vert sur la figure 31) est donc l'utilisation du mode EM2 afin de garder le

MCU en mode repos jusqu'à ce qu'une interruption le réveil. L'interruption peut être activée par

de nombreux évènements, incluant un timer spécial qui opère pendant que le cœur est en mode

EM2. Cette fonctionnalité active le microcontrôleur pour revenir à pleine vitesse en tout juste

2us. Le MCU tire un courant de repos de 0.9uA. Cela a pour but d'optimiser le temps passer en

mode "Ultra-low-power" et réduit le courant requis pour une vitesse d'acquisition d'1 K

échantillons/seconde à 60uA, ce qui est mieux que la première méthode. Cette technique est

adaptée pour les applications commandées par interruptions, mais en fonction de circonstances

particulières, il existe d'autres possibilités de réduire la consommation d'énergie.

Pour la troisième méthode (en bleu sur la figure 31) le mode EM2 est aussi utilisé, mais cette fois

au lieu d'attendre une interruption, on utilise un jeu d'instruction possédant l'instruction WFE.

Cette instruction active le MCU pour répondre à un évènement externe ou interne comme ceux

générés par une interruption. Au lieu de faire la transition de la boucle principale dans une

interruption, cependant, le MCU est réveillé par le EM2 et exécute simplement l'instruction

suivante, laquelle élimine la latence du a l'interruption. Cette approche n'est pas adaptée pour

toutes les applications, cependant elle peut être utilisée pour faire chuter la consommation à 20

uA pour 1K échantillons/s de données réceptionnées.

Figure 31 : Consommation de courant vs échantillonnage en fréquence [10]

Page 35: Rapport Stage

35/48

Département MC - Service A2E

On peut voir un croissement des courbes quand la première option produit de meilleurs résultats

que les deux autres méthodes respectivement proches de 4 K d'échantillons/s pour l'option 2 et de

20 K d'échantillons/s pour la troisième. De plus ces 3 applications sont utilisables avec la

récupération d'énergie et le taux d'acquisition des données reste très faible.

Aspect sécurité

L'un des aspects tout aussi important que la consommation et la sécurité, en effet avec le

développement de l'Internet des objets, des problèmes sur la manière de protéger le volume

énorme de données transmises et stockées par les appareils connectés. Les microcontrôleurs qui

prennent en charge des algorithmes standards de cryptage, de décryptage et d'authentification

permettent d'atténuer les problèmes liés à la sécurité des données. Il devient également important

de protéger les dispositifs IoT contre des instructions pouvant révéler d'importantes informations

de sécurité, que ce soit dans le domaine privé comme le contenu de notre réfrigérateur, connaître

nos déplacements vis à vis de la multitude d'objets connectés que nous portant au quotidien, mais

aussi dans le domaine de l'industrie avec la sécurisation de code d'accès ou de projet en

développement. Des microcontrôleurs prenant en charge la protection du code, la détection

d'intrusion et d'autres fonctionnalités de sécurité avancées permettent de protéger les dispositifs

contre ces types d'attaques.

Les chapitres suivant vont traiter de différentes fonctionnalités de sécurité clefs des

microcontrôleurs à envisager pour des conceptions axées sur l'IoT.

Si l'on souhaite protéger ses données IoT, il existe plusieurs algorithmes et protocoles de sécurité

standard qui permettent de sécuriser de manières efficaces les données pendant leur transmission

et leur stockage. Certains microcontrôleurs récents intègrent ces fonctions communes sur puce.

Les fonctions les plus fréquentes sont liées au cryptage des données des messages, au décryptage

des données à l’aide d’une clef connue du seul destinataire, et à l'authentification des données du

message afin de vérifier qu’elles ne sont pas falsifiées. Ces fonctions standard forment la base de

toutes les techniques de sécurité réussies.

Fonctions de cryptage standard

Les microcontrôleurs modernes commencent à inclure des accélérateurs matériels, sous forme de

périphériques spécialisés, pour simplifier et accélérer le traitement des données sensibles pour le

stockage ou la transmission. Par exemple la gamme des PIC32MZ présente un moteur de

cryptage matériel qui accélère les fonctions de cryptage fréquentes. Le schéma fonctionnel du

moteur de cryptage est représenté sur la figure 32.

Ce microcontrôleur possède un générateur de nombre aléatoires (obtenu en utilisant de multiples

oscillateurs en anneaux et le bruit thermique du au circuit intégré [6]) pour un

chiffrement/déchiffrement optimum des données via le système moderne et renforcé AES

(Advanced Encryption Standard), plus anciens comme le DES et TDES (Triple Data Encryption

Page 36: Rapport Stage

36/48

Département MC - Service A2E

Standard) ainsi que leur authentification par des algorithmes tels que MD5 (Message Digest 5) et

SHA (Secure Hash Algorithm). Ils sont gérés par la machine à états finis de cryptage à l'aide du

stockage de paquets en lecture et écriture et de données locales. Un contrôleur DMA et deux

mémoires FIFO (First In First Out) fournissent un stockage local supplémentaire pour faciliter le

traitement des données indépendant pour le processeur ce qui permet d'améliorer les

performances générales du système et libère le processeur pour gérer des fonctions de plus haut

niveau.

Figure 32 : Fonctions de cryptographie standard du MCU PIC32MZ [5]

A droite sont indiquées les performances des différents moteurs de cryptages et peuvent servir à

adapter les exigences de bande passante pour une application spécifique. Le PIC32MZ atteint

plus de 700 Mbps, même pour les algorithmes les plus complexes, ce qui en fait une solution

idéale pour des dispositifs devant envoyer des ensembles de données volumineux en temps réel

ou des dispositifs qui stockent des données.

Périphériques de sécurité

Dans certaines applications IoT, il peut s'avérer plus efficace d'utiliser un dispositif périphérique

pour gérer des fonctions de cryptages et stocker des clefs de sécurité. Cette caractéristique est

particulièrement utile si le meilleur microcontrôleur de l'application ne présente aucune fonction

de cryptage intégrée.

Par exemple l'ATSHA-204A-SSHDA-B d'Atmel fournit une authentification et une validation

sécurisée pour les opérations au niveau de l'hôte et du client. Il implante un algorithme de

hachage SHA-256 pour les normes MAC et HMAC. Un numéro de série de 72 bits unique

garanti permet de suivre les unités, tandis qu'une mémoire EEPROM de 4.5 Ko peut servir de

stockage pour les clefs et les données. Plusieurs options d'I/O permettent au dispositif de

communiquer avec un MCU à l'aide d'une interface à un fil compatible UART ou une interface

d'1 MHz compatible I²C. En mode un fil, il est possible d'alimenter le dispositif au moyen du

signal de données afin de simplifier l'utilisation dans des consommables à faible coût.

Les cartes de développement ATSHA204 ou ATAES132 équipée de connecteurs pour les

périphériques se connecte facilement à une carte d'évaluation de microcontrôleur standard afin de

créer une interface de développement efficace pouvant par exemple lutter contre la contrefaçon

Page 37: Rapport Stage

37/48

Département MC - Service A2E

pour valider l'authenticité d'un client amovible, stockage de petits volumes de données de

manière sécurisée sur puce pour la configuration, l'étalonnage et l'utilisation de données ou

encore pour la vérification et la validation des mots de passe utilisateurs.

Figure 33 : Plateformes de développement pour dispositifs d'authentification par cryptage ATSHA204

d'Atmel.

Sécurisation du microcontrôleur à l'aide d'une mémoire FRAM

Une autre méthode de sécurisation est l'utilisation d'une mémoire FRAM (Ferroelectric Random

Access Memory). Cette technologie offre un accès beaucoup plus rapide en lecture et écriture à la

mémoire volatile que les technologies Flash car possible de stocker toutes les données

opérationnelles sur une mémoire FRAM non volatile sans altérer les performances, les données

sensibles devant être sauvegardées entre les cycles d'alimentation peuvent être gérées plus

facilement et de manière plus sûre. Seuls les programmes autorisés peuvent accéder à des

segments de mémoire spécifiés, ce qui permet de protéger les données sensibles contre le piratage

et les intrusions externes. Les microcontrôleurs MSP430FR5969 de chez Texas Instrument

fournissent également un moteur d'accélération AES qui permet d'accélérer davantage le

traitement des données sécurisées.

Architecture et protection contre les intrusions fiables

Les appareils IoT corporels risquent d'être des cibles pour les intrusions matérielles puisqu'il est

plus facile d'y accéder qu’aux équipements réseaux traditionnels. Les fabricants de

microcontrôleurs ont commencé à ajouter des fonctionnalités matérielles pour faciliter la

détection et le signalement d'évènements d'intrusions pouvant indiquer un piratage.

La gamme de MCU Kinetis de Freescale (le MK21DX128 par exemple) présente un module de

détection d'intrusion dédié, il fournit un stockage de clefs sécurisé avec détection d'attaque

physique et d'intrusions internes et externes comprenant 32 octets de stockages sécurisé, jusqu'à 8

broches d'intrusion externes pouvant générer des interruptions sur un événement d'intrusion, un

registre chronologique d'intrusions qui enregistre le moment où un événement d'intrusion est

détecté.

Page 38: Rapport Stage

38/48

Département MC - Service A2E

Figure 34 : Schéma fonctionnel du microcontrôleur Kinetis avec l'ajout d'un bloc dédié à la sécurité

Page 39: Rapport Stage

39/48

Département MC - Service A2E

Conclusion

Les différents exemples montrent que les microcontrôleurs peuvent être spécialisés dans

différents domaines pour répondre aux problèmes que l'on peut rencontrer de manières fréquentes

au sein d'une installation. Que ce soit au niveau de la consommation, avec la puce développé par

Atmel pouvant s'alimenter avec une seule charge pendant près de 10 ans est un grand pas en

avant pour l'autonomie d'un système, couplé à cela des techniques de récupérations d'énergies

comme l'utilisation de panneaux solaires, des vibrations dû à d'autres installations proches ou un

changements de température, ou encore les améliorations du Cortex-M Cœur via les modes

EM(1,2,3,4) permettent la aussi de réduire la consommation. Tous ces détails peuvent permettre à

un système de quasiment s'auto-alimenter et donc d'augmenter sa fiabilité, coût sur le long terme.

Avec l'arrivé pressenti de l'IoT, numérisant encore plus d'appareils, la demande va être encore

plus forte. De plus avec le problème de sécurisation que peut entrainer la connexion des

systèmes, là encore les microcontrôleurs peuvent s'adapter et par l'ajout de simples composants

peuvent renforcer le niveau de sécurité d'une installation. Rendant ainsi les microcontrôleurs

utiles dans de nombreux domaines.

Pour conclure sur le stage en lui-même, il m'a permis d'évoluer au sein d'un grand groupe qu'est

ArcelorMittal, pendant 6 mois, me faisant connaître le quotidien d'un employé, le déroulement de

la fabrication de l'acier, ainsi que les infrastructures associés. Il m'a permis de travailler de façon

autonome sur un projet, répondant à un cahier des charges strictes, de connaître de nouveaux

équipements, microcontrôleurs PIC, Atmel, les différents softwares associés à leurs

programmations. De développer mes connaissances en termes de programmation au niveau des

microcontrôleurs. D'établir des schémas/cartes électriques pour l'adaptation aux exigences du

microcontrôleur.

J’ai aussi énormément appris en côtoyant de nombreuses personnes, de différentes professions et

de différents niveaux, aussi bien au niveau technique qu’humain. J’ai travaillé avec des

électriciens, des informaticiens et des techniciens de production de différents niveaux. Ceux

travaillant sur le terrain ont pu apporter leur connaissance du matériel qui peut parfois manquer.

De plus, le stage s’est bien déroulé grâce à la bonne ambiance dans le service et cela m’as permis

d’avoir une nouvelle approche du monde du travail, univers dans lequel il faudra évoluer dès à

présent.

Page 40: Rapport Stage

40/48

Département MC - Service A2E

Abréviations

ADC Analog to digital Converter

ALU Arithmetic logic unit

ARM Advanced RISC Machines

ASF Atmel Software Framework

CMOS Complementary metal oxide semi-conductor

CM4 Cortex-M4

CPU Central processing unit

DAC Digital to Analog Converter

DMA Direct memory access

dsPIC Digital signal PICs

EEPROM Electrically Erasable Programmable Read Only Memory

EM2 Energy Mode 2

FIFO First In First Out

FPU Floating-Point Unit

FRAM Ferroelectric Random Access Memory

HMAC Keyed-Hash Message Authentification Code

IDC Insulation-displacement connector

I²C Inter-Integrated Circuit

I/O Input/output

JTAG Join Test Action Group

MCU Microcontroller unit

MCK Master Clock Register

MPU Memory Protection Unit

PIC Programmable Intelligent Computer

PIO Parallel Input/output

PMC Power Management Controller

ROM Read-Only Memory

RTC Real Time Clock

RTOS Real Time Operating System

SAM Smart Atmel Microcontroller

SDIV Signed Division

SRAM Static Random access memory

TBAA Buffer Amplifier Circuit

TC Timer Counter

TFMA The Fault Monitor

TIOAx Timer Counter Chanel x Input/Output Line A

TPGE Gate Pulse Generator Circuit

Page 41: Rapport Stage

41/48

Département MC - Service A2E

TTL Transistor Transistor Logic

UART Universal Asynchronous Receiver Transmitter

UDIV Unsigned Division

USB Universal serial bus

WFE Wait for Event

ZCD Zero Crossing Detector

Page 42: Rapport Stage

42/48

Département MC - Service A2E

Bibliographie

[1] An introduction to the ARM Cortex-M4 Processor, ARM, Mars 2011.

[2] Embedded System Market Size by application (Automotive, Industrial, Consummer

Electronics, Telecommunication, Healtcare, Military & Aerospace), By Product (Software,

Hardware) Industry Outlook Report, Regional Analysis, Application Development Potential,

Price Trends, Competitive Market Share & Forecast, 2016-2023, publié sur Gobal Market

Insights le 30 août 2016.

[3] Microchip reports record revenue in recent quarter, publié sur Bizjournals le 8 août 2016.

[4] IoT Market to Boost Scale of Multicore MCU Shipments by Staggering 1.3 Bilion Units by

2020 publié par ABI Research le 1 décembre 2015.

[5] Datasheet PIC32MZ Embedded Connectivity (EC) Family, Microchip.

[6] Datasheet Section 49. Crypto Engine and Random Number Generator (RNG), Microchip.

[7] Atmel invente une puce ARM dont l’autonomie se compte en décennies, publié par Aruco le 2

Avril 2015.

[8] Energy Harvesting Enables Ultra-Low Power Applications, publié par Ecnmag le 12

décembre 2011.

[9] Low Power Design Basics, How to Choose the Optimal Low Power MCU for Your Embedded

System, Silicon Laboratories Inc.

[10] Low Power MCUs for Energy-Harvesting Applications, Digi-Key Electronics, publié le 18

Mars 2015.

Page 43: Rapport Stage

43/48

Département MC - Service A2E

ANNEXE

1 - Module SILCO

Page 44: Rapport Stage

44/48

Département MC - Service A2E

2 - Déphasage des impulsions en fonctions de Vin

Page 45: Rapport Stage

45/48

Département MC - Service A2E

3 - Bloc diagramme correspondant au SAM4SD32/SD16/SA16 100-pin

Page 46: Rapport Stage

46/48

Département MC - Service A2E

4 - Entrée/sortie du Level Shifter

5 - Schéma électrique d'un circuit d'adaptation + Level Shifter et carte Xplained

Pro

Page 47: Rapport Stage

47/48

Département MC - Service A2E

6 - Schéma électrique du SAM4S-100 broches

7 - Photo d'une carte TPGE et TBAA

Page 48: Rapport Stage

48/48

Département MC - Service A2E

8 - Photo d’un moteur au finissage

Type 2 Moteurs à courant continu en série

Induits communs, excitations indépendantes

Modèle GE MCF

Vitesse de base 200 RPM

Vitesse maxi 460 RPM

I nominal induit 7350 A*2

Tension nominale d’induit 700 V

Di/dt Max 20 In/s

Flux maxi courant d’excitation 114 A

Flux mini courant d’excitation 35 A

Surcharge 1.25 In 2 heures

Surcharge 2 In 5 s

Induit (E+F) R=1,42 L=40,5 H

Inducteur R=1,73 Ohm L=6,5 H