# Utilisation d'une carte Raspberry PI 3 sous Matlab/Simulink dans un contexte d'Automatique temps réel

Philippe Dorléans¹, Hervé Fleury², Éric Magarotto¹

philippe.dorleans@unicaen.fr

herve.fleury@fil-developpement.fr

eric.magarotto@unicaen.fr

¹ Université de Caen Normandie (UCN), UFR des Sciences, 6 Boulevard Maréchal Juin 14032 Caen Cedex.

² Fil Conseil & Développement S.A.S., 14 rue Eugénie 14000 Caen

**RESUME** Dans le cadre de l'enseignement de l'Automatique continue et échantillonnée à l'école d'ingénieurs ESIX Normandie département MeSN (Mécatronique et Systèmes Nomades) et à l'UFR des Sciences à Caen en cycles Licence (L3) et Master EEEA (Electronique, Energie Electrique, Automatique), nous présentons une solution à faible coût permettant de faire de l'acquisition de données et de la commande de procédés en temps réel en utilisant l'environnement logiciel Matlab/Simulink. Cette solution est basée sur l'utilisation d'une carte de type Raspberry Pi associée à une carte de conversion AN/NA. Le spectre des fonctionnalités de la carte Raspberry Pi est assez large. Nous proposons ici de l'utiliser pour répondre à différents aspects d'un problème d'Automatique en temps réel (identification et commande).

**Mots clés** : Raspberry PI, conversion AN/NA, Matlab/Simulink, temps réel, Automatique.

## 1 INTRODUCTION

L'intérêt d'utiliser des logiciels de calculs scientifiques et de simulation tels que Scilab ou Matlab/Simulink dans le processus de formation en Automatique n'est plus à démontrer. En effet, lors d'un enseignement présentiel de type cours magistral, il est possible d'améliorer fortement la compréhension des concepts théoriques par des démonstrations en exécutant des fonctions pré-écrites pour illustrer, par exemple, des critères de performances et de stabilité, des méthodes de synthèse de correcteurs, des outils d'analyses temporelle et fréquentielle, etc. Ainsi, pendant le cours, l'étudiant peut appréhender plus facilement les concepts fondamentaux à assimiler en s'affranchissant d'une éventuelle phase de calculs et porter son attention sur l'interprétation des résultats fournis (généralement graphiques). Ce mode de fonctionnement permet un enseignement plus attractif et interactif pour l'étudiant.

La validation par l'expérience des concepts théoriques sous forme de travaux pratiques ou de projets constitue une phase fondamentale dans l'apprentissage de l'Automatique continue ou échantillonnée mais elle ne doit pas se limiter à la simple simulation de systèmes. La simulation est indispensable mais pas suffisante. Il est nécessaire de compléter la formation par des expérimentations en temps réel conduites sur des systèmes physiques et si possible en utilisant le même environnement que celui de la simulation (ici, Simulink). Cette volonté d'expérimentation est souvent contrariée et parfois même empêchée par des moyens financiers limités. Bien souvent, les enseignants sont confrontés à la difficulté de trouver d'une part, une maquette pédagogique intéressante et d'autre part, une carte d'acquisition dite entrée/sortie fonctionnant sous Simulink (ou dans un autre environnement) à coût raisonnable. Cet article concerne uniquement ce deuxième point.

Mathworks inc. [1] propose principalement deux grandes familles de cartes d'acquisition compatibles avec l'environnement Matlab/Simulink. Des cartes enfichables sur un slot PCI Express mais dont le coût est généralement incompatible au regard des crédits disponibles pour équiper une salle de TP et des cartes plus accessibles financièrement fonctionnant sur le port USB mais inutilisables dans le cadre d'un asservissement en temps réel à cause principalement de problèmes de latence inhérente au protocole.

Nous proposons donc une solution à faible coût (environ 70 €) basée sur l'utilisation d'une carte Raspberry Pi 3 modèle B [2] associée à une carte de conversion AN/NA (Analogique Numérique / Numérique Analogique) 12 bits fabriquée par AB Electronics [3] et dont les échanges de données s'effectuent par le bus SPI, le tout fonctionnant dans l'environnement Matlab/Simulink. Cette combinaison permet d'associer un logiciel de calculs et de simulation largement utilisé dans les structures R&D publiques et privées et une carte de prototypage permettant d'envi-sager de multiples applications. Au final, cet ensemble fournit un outil à coût réduit, innovant et extensible pour des applications de type systèmes embarqués qui est le cœur de notre formation.

Cet équipement répond à nos principales contraintes techniques de TP à savoir :

- Utiliser le même environnement de simulation pour les expérimentations en temps réel.

- Avoir au moins 2 entrées et 2 sorties analogiques [-10V 10V] et quelques entrées - sorties logiques.

- Pouvoir fonctionner à une cadence minimale de 5 ms.

- Acquérir et visualiser des données en temps réel.
- Pouvoir modifier la valeur de la consigne ou des perturbations pendant l'asservissement du système physique.

- Avoir une précision de quelques mV sur l'inter-valle de tension [-10V +10V].

Cet article est constitué comme suit : les paragraphes 2 et 3 sont consacrés à la description du matériel et de l'environnement logiciel utilisé. Le paragraphe 4 concerne la configuration sous Simulink pour le fonctionnement en temps réel ainsi qu'une description des schémas développés pour l'acquisition et la génération de signaux analogiques. Le paragraphe 5 présente quelques applications et résultats expérimentaux dans le domaine de l'Automatique. Cet article se terminera par un bilan du travail effectué.

# 2 PARTIE MATERIELLE

## 2.1 La carte Raspberry Pi 3

La carte Raspberry Pi 3 modèle B [2] (figure 1) est un micro-ordinateur embarqué dont la taille est semblable à celle d'une carte de crédit et qui héberge le système d'exploitation Linux installé sur une carte micro SD. Un ensemble de commandes déjà programmées est donc disponible. La carte possède un certain nombre de ports USB, HDMI, vidéo, haut-parleur et un port Ethernet qui permet de la relier au PC. Elle possède également vingt-six broches numériques. Ces broches permettent entre autres de connecter divers périphériques en utilisant les bus I2C et/ou SPI. Le développement sur cette carte est traditionnellement réalisé en Python ou en C mais nous l'utilisons exclusivement dans l'environnement Simulink.

<figure><img src="image_1.png" /><figcaption>fig 1 : Carte Raspberry Pi 3 modèle B</figcaption></figure>

## 2.2 La carte de conversion AD/DA

La plateforme Raspberry, quel que soit le modèle, ne comporte pas de convertisseurs intégrés. Par conséquent, il est nécessaire de l'associer à une carte de convertisseurs. Notre choix s'est porté sur la carte « ADC-DAC Pi Zéro » de chez AB Electronics [3]. Bien que conçue pour la Raspberry Pi Zéro, elle est compatible avec tous les modèles Raspberry. Elle possède le même encombrement que le Raspberry Pi Zéro et elle est insérable sur le connecteur GPIO de la Raspberry comme le montre la figure 2.

Cette carte est constituée d'un Convertisseur Analogique-Numérique (CAN) Microchip MCP3202 [4] qui contient 2 entrées analogiques avec une résolution de 12 bits permettant l'acquisition de signaux et d'un Convertisseur Numérique-Analogique (CNA) 12 bits double canal Microchip MCP4822 [5] avec référence de tension interne. L'alimentation de la carte est assurée par l'hôte Raspberry Pi en utilisant le port GPIO.

<figure><img src="image_2.png" /><figcaption>fig 2 : Carte de conversion « ADC-DAC Pi Zéro »</figcaption></figure>

Les échanges de données entre la Raspberry et la carte AN/NA se font via le bus série SPI (figure 3). La transmission s'effectue sur deux fils unidirectionnels nommés MOSI (Master Output Slave Input) et MISO (Master Input Slave Output). Une horloge indépendante SCK est fixée par le maître pour synchroniser les échanges. Comme l'alimentation de la carte AN/NA est assurée par la Raspberry, les niveaux de tension en entrée et en sortie sont compris entre 0V et 3,3V.

<figure><img src="image_3.png" /><figcaption>fig 3 : Schéma de câblage</figcaption></figure>

## 2.3 La carte de conversion tension/tension

Nos procédés de TP fonctionnant dans une plage de tensions [-10V 10V], il a été nécessaire de mettre à l'échelle les grandeurs analogiques afin de les rendre compatibles avec nos procédés. Une carte de conversion classique tension-tension a été développée pour chaque voie.

## 2.4 Schéma et fonctionnement global du dispositif

Le schéma général du dispositif est donné figure suivante :
<figure><img src="image_4.png" /><figcaption>fig 4 : Schéma général</figcaption></figure>

La carte Raspberry assure la communication avec la carte AN/NA et le PC. Elle est chargée d'exécuter le code correspondant au schéma Simulink développé. Le PC, qui est connecté à la Raspberry via un câble Ethernet, se comporte comme un superviseur. Les divers procédés périphériques sont connectés sur la carte de conversion tension-tension. Il est possible ainsi d'acquérir les mesures provenant de capteurs (broches IN) et d'envoyer des signaux de commande en temps réel (broches AO) à une cadence définie.

## 3 PARTIE LOGICIELLE

L'utilisation de la carte Raspberry Pi sous Simulink nécessite l'installation de blocs conçus pour piloter l'interface Entrée/Sortie numérique, et pour lire et écrire des données sur cette carte. Il est donc indispensable de télécharger le package correspondant ce qui permet l'ajout des blocs spécifiques Raspberry à Simulink comme le montre la figure 5. Un tutoriel d'installation est disponible sur le site de Mathworks [6]. Ce package permet, grâce à ces blocs, la gestion des différentes fonctionnalités de la carte Raspberry Pi. Une fois le schéma Simulink créé, on peut le simuler et «下载er» le code généré sur la carte pour une exécution autonome. Nous utilisons ici uniquement les blocs gérant le bus série SPI pour communiquer avec la carte de conversion AN/NA.

<figure><img src="image_5.png" /><figcaption>fig 5 : Quelques blocs du support package Simulink® pour Raspberry Pi™</figcaption></figure>

Enfin, pour pouvoir générer le code à partir d'un schéma Simulink, il est nécessaire d'avoir les toolbox suivantes : « Matlab coder », « Simulink coder » et « Embedded co-der ».

# 4 CONFIGURATION DES BLOCS SIMULINK

## 4.1 Le mode externe

Pour fonctionner en temps réel sous Simulink, il est obligatoire de sélectionner le mode externe. Le principe de base de ce mode est de convertir automatiquement un schéma-bloc en code optimisé et compatible pour un processeur ARM puis il est « downloadé » et exécuté automatiquement en temps réel sur la carte Raspberry [7], [8].

Une communication TCPIP entre l'interface de Simulink et le programme distant sur la Raspberry est alors initiée à la fin du processus de compilation-linkage. Cette communication donne la possibilité de modifier les paramètres des blocs pendant l'exécution du programme sur la carte et d'afficher sur des oscilloscopes de Simulink les données acquises en temps réel.

## 4.2 Génération de signaux analogiques

Le schéma bloc présenté figure 6 permet le calcul et l'envoi d'une valeur numérique au convertisseur CNA MCP4822 [5] sélectionné en fonction du niveau de tension analogique souhaité. Conformément au schéma de la figure 3, le convertisseur est connecté sur CE1 (broche de sélection de l'esclave MCP4822) et le mode de fonctionnement choisi est 0. Cela signifie que les commandes et les données sont configurées au format 16 bits (4 bits de configuration de poids fort et 12 bits de données). Elles sont envoyées sur la broche MISO et synchronisées sur le front montant de l'horloge SCK. La broche CS doit être maintenue à l'état bas pendant la durée d'une commande d'écriture (figure 7).

<figure><img src="image_6.png" /></figure>

<figure><img src="image_7.png" /><figcaption>fig 6 : Conversion numérique – analogique</figcaption></figure>

<figure><img src="image_8.png" /><figcaption>fig 7 : Opération d'écriture en mode 0</figcaption></figure>
Le contenu de la fonction AO1 est donné en Annexe 1. Elle prend comme entrée la tension souhaitée (variable *u*) et la convertit en une valeur numérique 16 bits non signée pour le premier convertisseur au format indiqué figure 7. Les 4 premières lignes fournissent un nombre entier sur 16 bits avec les 4 bits de poids fort à 0. Ensuite, il faut configurer ces 4 bits de poids forts : le bit 15 permet de sélectionner le convertisseur (0 pour le CNA A et 1 pour le CNA B), et le bit 12, fixé à la valeur 1, active la conversion. Les bits 13 et 14 restent inchangés. La variable « *resultat* » contient ainsi les informations de configuration et la donnée à convertir.

## 4.3 Acquisition de signaux analogiques

Le schéma bloc correspondant à l'acquisition de signaux de tension est présenté figure 8. La constante a pour objectif d'initialiser les paramètres de lecture pour le premier convertisseur CAN MPC3202 [4]. Celui-ci est connecté sur la voie CE0 (broche de sélection de l'esclave CAN) (figure 3) et fonctionne en mode 0 (figure 9).

<figure><img src="image_9.png" /><figcaption>fig 8 : Conversion analogique – numérique</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>fig 9 : Opération de lecture en mode 0</figcaption></figure>

Le fonctionnement du MPC3202 est déterminé par un mot de commande de 16 bits, 4 bits de configuration de poids fort suivis de 12 bits de données que l'on peut fixer arbitrairement à 0. Le bit SGL / DIFF et le bit ODD / SIGN suivent le bit START (mis à 1) et permettent de sélectionner la configuration du canal d'entrée. Le SGL / DIFF est fixé à 1 pour définir le mode asymétrique et le bit ODD / SIGN sélectionne la voie utilisée. Le bit MSBF est mis à 1 pour lire le poids fort de la donnée en premier.

Le contenu de la fonction IN1 est donné en Annexe 2. Cette fonction a pour objectif de reconstituer la valeur de la tension lue sur l'intervalle [-10V 10V] à partir de la valeur numérique fournie par le convertisseur (variable *u*). La donnée numérique lue au format 32 bits non signé doit être décalée de 4 bits à droite pour reconstituer une valeur numérique comprise entre 0 et 4095. La variable « *volts* » indique la valeur de la tension acquise dans l'intervalle [-10V 10V].

# 5 EXEMPLES D'UTILISATION

Les travaux pratiques mis en place traitent bien évidemment de divers aspects de l'Automatique continue et échantillonnée à savoir l'identification, la synthèse de correcteurs à partir d'un cahier des charges et la validation de lois de commande sur des systèmes réels. Les deux exemples suivants présentent une identification expérimentale et un exemple d'asservissement en utilisant un correcteur mis sous forme RST sur un système électrique de type second ordre. Pour faciliter l'utilisation des schémas blocs sous Simulink, les fonctions Matlab AO1 et IN1 ont été associées aux blocs de gestion du protocole SPI pour définir un sous-système de génération de signaux et un autre pour l'acquisition (figure 10).

L'avantage d'avoir le même environnement pour la simulation que pour les expérimentations en temps réel est de pouvoir substituer facilement le bloc du modèle du système (fonction de transfert ou modèle d'état) au procédé réel par les blocs de gestion des entrées/sorties. En plus, l'ensemble des données expérimentales peuvent être aisément sauvegardées et analysées dans l'espace de travail de Matlab.

## 5.1 Identification de systèmes

La méthode de détermination d'un modèle dynamique est fixée en fonction du niveau d'études : modélisation ou identification expérimentale par des méthodes temporelles classiques de type modèle de Strejc ou Broïda (à l'ESIX 1A ou L3 EEEA) ou utilisation d'un modèle échantillonné de type "boîte noire" directement identifié à l'aide d'algorithmes d'adaptation paramétrique de type moindres carrés (à l'ESIX 3A ou Master EEA) [9], [10], [11].

La démarche présentée ici a pour but d'identifier expérimentalement un procédé par l'analyse de sa réponse indicielle en boucle ouverte (figure 10). L'étudiant recherche alors un modèle dont la forme est prédéfinie et détermine ses paramètres. Ces méthodes permettent d'identifier les modes dominants du système et par conséquent, elles donnent une représentation approximative du procédé à identifier.

<figure><img src="image_11.png" /><figcaption>fig 10 : Obtention de la réponse indicielle</figcaption></figure>
Une fois le modèle établi, il est nécessaire de le valider simplement en vérifiant sur le même graphique la similitude entre sa réponse indicielle et celle du système réel (schéma de la figure 11). Cette étape permet à l'étudiant de se confronter aux incertitudes de modèles vis-à-vis du comportement du système réel.

<figure><img src="image_12.png" /><figcaption>fig 11 : Schéma pour la validation</figcaption></figure>

La figure 12 présente la réponse indicielle du système et celle du modèle identifié et la figure 13 présente l'erreur entre ces 2 réponses.

<figure><img src="image_13.png" /><figcaption>fig 12 : Exemple de validation</figcaption></figure>

<figure><img src="image_14.png" /><figcaption>fig 13 : Erreur de modélisation</figcaption></figure>

## 5.2 Commande de systèmes

Il est demandé aux étudiants de synthétiser divers correcteurs et donc d'implémenter diverses lois de commande plus ou moins complexes dont les aspects théoriques sont vus en cours et en travaux dirigés telles que la commande de type PI, avance-retard, par placement de pôles (selon

deux approches, polynomiale et état), etc. [10], [13], [14]. La synthèse de lois de commande, à partir du modèle nominal identifié, est réalisée de manière à respecter toutes les spécifications d'un cahier des charges dont la complexité est croissante (par ajout ou reserrement de contraintes).

Les étudiants étudient l'applicabilité des différentes méthodes de commande et analysent leurs performances. L'analyse des performances du système en boucle fermée est réalisée à partir de quantificateurs temporels (évaluation du dépassement, du temps de réponse à 5%) et fréquentiels basés sur l'analyse des fonctions de sensibilités usuelles et vérifient ainsi l'adéquation avec le cahier des charges.

Dans le cas de l'approche polynomiale échantillonnée présentée ici, toutes les lois de commande sont exprimées sous forme RST classique [12], [13], [14] comme le montre la figure 14. Sur ce schéma apparaissent des signaux de perturbation et un signal de consigne. Le procédé étant substitué par son modèle, la loi de commande est testée en simulation et en fonction des résultats, on peut corriger des éventuelles erreurs de conception.

Il faut rappeler que des essais en simulation en poursuite et en régulation sont indispensables avant l'application sur le système réel. Ces essais permettent également de vérifier la compatibilité du niveau d'amplitude des commandes générées par le régulateur avec l'application sur le procédé.

<figure><img src="image_15.png" /><figcaption>fig 14 : Structure de type RST en simulation</figcaption></figure>

Le passage de la simulation à l'expérimentation en temps réel sur le système physique est très simple. Il suffit de substituer le modèle du procédé par les deux blocs de gestion des entrées/sorties comme le montre le schéma de la figure 15.

<figure><img src="image_16.png" /><figcaption>fig 15 : Expérimentation en temps réel</figcaption></figure>

La figures 16 et 17 présentent un exemple de résultats expérimentaux en poursuite et en régulation en temps réel. Après avoir positionné le procédé au voisinage d'un point de fonctionnement préalablement choisi (ici 1 V), un échelon de consigne de 1V a été appliqué à l'instant 20 s
puis deux échelons de perturbation respectivement de sortie à 40 s et de commande à 60 s de même amplitude.

### Remarques :

- L'affichage des signaux se fait en temps réel et non à la fin de l'acquisition.

- Les paramètres du régulateur peuvent être issus d'une discrétisation d'un régulateur continu (Bilinéaire, Tustin, ...) ou d'une synthèse numérique directement.

<figure><img src="image_17.png" /><figcaption>fig 16 : Visualisation de la sortie du système</figcaption></figure>

<figure><img src="image_18.png" /><figcaption>fig 17 : Visualisation de la commande générée</figcaption></figure>

## 6 RETOUR D'EXPERIENCES

L'utilisation de la carte Raspberry associée à la carte AN/NA sous Matlab/Simulink a répondu à nos contraintes et à nos objectifs de TP et offre à nos étudiants un environnement de travail intéressant pour traiter des problèmes d'Automatique sous ses différents aspects : modélisation, identification, synthèse de correcteurs et validation de lois de commande sur un système réel. A ce stade, il est intéressant de faire un bilan objectif.

### 6.1 Aspect Automatique

Les principales observations sur le plan utilisation en TP sont les suivantes :

- Interactivité :

Lors d'une expérimentation sur un système physique, tous les paramètres des blocs du schéma Simulink peuvent être modifiés. Ils sont pris en compte pendant l'exécution du programme dans la Raspberry ce qui permet à l'étudiant d'observer leur impact en temps réel sur la réponse du procédé (modification d'un gain par exemple ou de l'amplitude d'un échelon) sans arrêter le programme.

- Simplicité d'utilisation :

Simulink fournit un environnement graphique assez facile à appréhender et propose de nombreuses fonctionnalités grâce à un ensemble de bibliothèques. Le fait de pouvoir piloter notre carte d'acquisition sous cette environnement permet de bénéficier des performances graphiques de Simulink et permet à l'étudiant de passer très facilement de la phase de simulation à la phase d'expérimentation. L'étudiant peut aisément changer la structure du correcteur et comme Simulink est intégré à Matlab, il peut avoir accès à de nombreuses fonctions pour visualiser ou analyser les résultats expérimentaux.

- Période d'échantillonnage :

Il est possible de réaliser des manipulations en temps réel sans problème avec des périodes d'échantillonnage jusqu'à 5 ms environ en utilisant simultanément les 2 voies d'acquisition et les 2 sorties analogiques. La limitation de la période d'échantillonnage est bien évidemment liée à la complexité du schéma Simulink. Pour un schéma Simulink avec simplement une entrée et une sortie analogique, la cadence de fonctionnement peut descendre à 500 µs.

### 6.2 Aspect matériel

Un des intérêts du choix de la Raspberry est qu'il s'agit d'une plateforme matérielle très répandue disposant d'une communauté de développeurs importante et active. Ainsi, il est possible de se documenter assez facilement et d'obtenir de l'aide sur les spécificités de la mise en place d'applications particulières. Le « patch » temps réel de noyau Linux est disponible gratuitement sur le site de Mathworks [6].

Sur le plan structurel, la Raspberry offre une connectique intéressante avec plusieurs ports USB et la présence d'une barrette GPIO qui permet la connexion de multiples périphériques. La présence d'un module Wifi intégré donne en plus la possibilité de piloter un système à distance. A cela s'ajoutent des caractéristiques de faible consommation d'énergie, de dimension et de poids réduits ce qui en font un outil très intéressant dans le cadre de développement de systèmes embarqués.
Ce dernier aspect est important puisqu'il s'agit de la thé-
matique principale de notre formation. Elle constitue une
interdisciplinarité entre l'électronique, le traitement du si-
gnal, l'automatique et l'informatique industrielle au sens
large. Avec cet équipement, l'étudiant peut utiliser ses
connaissances acquises en informatique industrielle à des-
tination de l'Automatique (bus d'échange de données,
échantillonnages de données via l'utilisation et la confi-
guration de timers, conversion Analogiques / Numériques
et Numériques / Analogiques, implémentation de lois de
commande, génération de codes, etc.).

Dans la plage de fonctionnement [0 3,3V], on observe un
bruit de quantification au niveau des sorties analogiques
d'environ ± 3 mV. La mise à l'échelle de ces grandeurs
analogiques sur la plage [-10V +10V] conduit à une am-
plification d'un facteur 6 environ.

6.3 Limitation pédagogique

La simplicité du dispositif peut laisser penser à l'étudiant que l'implémentation et l'exécution de lois de commande sur un système en temps réel nécessite systématiquement l'emploi d'un logiciel de type Matlab/Simulink. C'est pourquoi, il est indispensable de proposer en parallèle une formation sur les microcontrôleurs et de donner la possibilité à l'étudiant de programmer sa loi de commande par une programmation traditionnelle en langage évolué de type Langage C par exemple qui est ensuite « downloadé » sur la cible après compilation.

6.4 Retour des étudiants

Quel que soit le niveau d'étude, chaque module d'Auto-
matique comporte 5 TP de 3h. 14 postes sont disponibles
dans la salle de TP et les étudiants ont le choix de travail-
ler en monôme ou en binôme. Les étudiants apprécient
surtout le fait que la simulation et l'expérimentation se dé-
roulent dans le même environnement logiciel d'où un gain
de temps important dans le déroulement des TP. Ils dé-
couvrent les contraintes de l'implantation pratique de lois
de commande et les limitations technologiques qu'ils ne
peuvent pas appréhender dans un environnement de simu-
lation. Ils découvrent également l'importance de la pro-
priété de robustesse d'un système de commande de ma-
nière à préserver la stabilité du système bouclé en pré-
sence d'erreurs de modélisation. Une difficulté rencontrée
par les étudiants est le câblage à réaliser entre le procédé
et le PC mais cette difficulté n'est pas liée à la solution
proposée.

7 CONCLUSION

Dans le but d'améliorer l'efficacité de l'enseignement en
Automatique continue ou échantillonnée, nous avons pré-
senté une solution à bas coût permettant de faire des tra-
vaux pratiques sur des systèmes physiques en temps réel.
Le dispositif est constitué d'une carte Raspberry Pi 3 mo-
dèle B, plateforme matérielle très répandue, associée à
une carte de conversion AN/NA fonctionnant dans l'envi-
ronnement Matlab/Simulink. Cette approche permet aux

étudiants de développer des applications de type systèmes
embarqués, le PC se comportant comme un superviseur.
Le dispositif est entièrement décrit et toutes les fonctions
Matlab permettant la gestion des convertisseurs sont pré-
sentées ainsi que des exemples de résultats expérimen-
taux.

Bibliographie

[1] https://fr.mathworks.com/.

[2] The Raspberry Pi Foundation: Raspberry Pi | An ARM GNU/Linux box for $25 https://www.raspberrypi.org/ 2019.

[3] https://www.abelectronics.co.uk/.

[4] http://www.microchip.com/downloads/en/devicedoc/21034d.pdf.

[5] https://www.microchip.com/wwwproducts/en/MCP4822.

[6] https://fr.mathworks.com/videos/getting-started-with-si-mulink-support-package-for-raspberry-pi-1558342725160.html.

[7] The MathWorks, Inc., Automatic Code Generation - Simulink Coder. http://www.mathworks.de/products/simulink-coder/ 2017.

[8] J. Walter, M. Fakih, K. Grüttner, “Hardware-Based Real-Time Simulation on the Raspberry Pi”, *Conference 2nd Workshop on High-performance and Real-time Embedded Systems (HiRES)*, 2014.

[9] C. Foulard, J.M. Flaus, M. Jacomino,“Automatique pour les classes préparatoires”, *Hermès*, 1997, ISBN 2-8660-1608-4.

[10] M. Zelazny, F. Giri, T. Bennani, “Systèmes asservis”, *Tome 1. Eyrolles*, 1993, ISBN 2-2120-9569-4

[11] L. Ljung, "System identification : theory for the user", Englewood Cliffs, NJ, Prenice Hall, Edition 2, 1998, ISBN 0-1365-6695-2.

[12] P. Borne, G. Dauphin-Tanguy, J.P. Richard, F. Rotella, I. Zambettakis, “Analyse et régulation des processus industriels”, *Editions technip, Hermes*, 1993, ISBN 2-7108-0642-8

[13] I.D. Landau, “Commande des systèmes, conception, identification et mise en oeuvre”, *Hermes, 2002*, ISBN 2-7462-0478-9

[14] H. Bourlès, “Systèmes linéaires”, *Hermès-sciences*, 2006, ISBN 2-7462-1300-1

Annexe 1 - Contenu de la fonction AO1

nbr = ceil (u * 4095 / Vref);
nbr = uint16 (nbr);
masque = uint16 (hex2dec('0FFF'));
resultat = bitand (nbr, masque);
masque = uint16 (hex2dec('1000'));
resultat = bitor (resultat, masque);
dec2hex (resultat);

Annexe 2 - Contenu de la fonction IN1

lecture = uint32(u)/8.0;
volts = lecture * Vref / 4095.0;
offset = Vref/2;
coef = 10/offset;
volts = double(volts);
volts = (volts - offset) * coef;