Tutorial

Tutorial de simulation intéractive

Introduction

L'objet de ce tutorial est de vous montrer, à travers la création d'un schéma simple, comment conduire une simulation interactive avec Proteus VSM et VSM Studio IDE. Nous verrons donc l'usage pratique du simulateur et de VSM Studio. Ce tutorial ne s'occupe pas de la partie saisie de schéma; Si vous n'êtes pas familier avec le module ISIS, prenez le temps de parcourir le tutorial qui lui est consacré.

Le circuit que nous utiliserons pour la simulation est celui du Microchip F1 montré ci-dessous.

Nous allons commencer par voir les bases de la simulation intéractive dans VSM Studio IDE, puis nous verrons plusieurs cas de débogage et les outils de mesure à votre disposition dans Proteus VSM.

Conditions requises :

Pour travailler avec ce tutorial, vous avez besoin d'installer sur votre ordinateur :

  • Une version Proteus V.8 ou supérieure. Il est possible de travailler avec la version de démonstration si vous n'avez pas encore acheté le logiciel.

  • Un compilateur Hi-Tech PIC16 en Version 9.8 ou plus. Le téléchargement et l'installation du compilateur peuvent se faire à partir du logiciel Proteus, dans VSM Studio IDE. Dans le chapitre suivant, nous vous expliquons cette procédure

Création du projet

La première chose à faire est de créer notre Projet Proteus V8. Nous allons utiliser ici un schéma pré-dessiné, ce qui simplifie de beaucoup la procédure.

A partir de la page d'accueil de Proteus, lancez l'assistant de nouveau projet et sélectionnez l'option "Carte de développement". Puis, changez la famille de microcontrôleur en PIC16 et choississez dans "Carte de développement F1", dans la liste déroulante en bas. Cliquez sur le bouton TERMINER pour importer le projet.

Après avoir importé le projet, vous obtiendrez deux onglets ouverts : le module ISIS avec le schéma de la carte F1 Evaluation Platform et VSM Studio IDE qui contient le code source standard Microchip pour contrôler le matériel.

La première chose à faire est de compiler le code source pour produire le programme que nous pourrons tester dans la simulation.

Configuration du compilateur

Le code source Microchip a été écrit en utilisant le compilateur Hi-Tech PIC16; par conséquent, nous avons besoin de cet outil pour compiler notre programme. Allez sur l'onglet VSM Studio et lancez la boite de dialogue de configuration des compilateurs depuis le menu 'Système'.

Les différents compilateurs supportés sont listés dans cette boite de dialogue avec les indications sur leur installations et leur configuration effectives ou non. Pressez le bouton TOUT VERIFIER en bas de la boite de dialogue afin de scanner votre ordinateur pour vérifier la présence des compilateurs sur votre poste et - s'il les trouve - les configurer pour pouvoir travailler directement dessus à partir de Proteus.

Les compilateurs Open source peuvent être téléchargés et installés directement à partir des serveurs Labcenter. Les liens sont fournis sur les pages de téléchargement des sites Internet des propriétaires de ces compilateurs. Le compilateur Hi-Tech dont nous avons besoin se télécharge à partir du site Internet de Microchip. Téléchargez-le s'il n'est pas déjà installé sur votre machine.

1) Cliquez sur le bouton TELECHARGER à côté du compilateur.

2) Téléchargez et installez le compilateur.

3) Cliquez à nouveau sur le bouton VERIFIER TOUT pour configurer le compilateur et pouvoir travailler avec dans Proteus.

Vous noterez qu'après avoir lancé la commande, le compilateur Hi-Tech apparaît désormais comme installé dans la boite de dialogue. La fenêtre de sortie en bas de l'onglet VSM Studio (code source) donne les résultats du contrôle du compilateur.

A présent, le compilateur, le code source et le schéma sont en place. Dans le menu 'Construire' du module VSM Studio, utilisez la commande "Construire projet" pour compiler votre programme.

Le résultat de la compilation apparaît dans la fenêtre du bas. On obtient ici un message de compilation réussie.

La prochaine étape consiste à lancer la simulation et tester notre code compilé sur un matériel virtuel.

VSM Studio configure automatiquement les options communes aux compilateurs pour permettre de construire correctement vos programmes pour la simulation dans Proteus. Si vous avez besoin d'ajuster les paramètres, vous pouvez le faire via l'option "Configurer le projet" dans le menu 'Construire'.

Lancer une simulation

Dans Proteus, lancer une simulation est un jeu d'enfant; il suffit de presser le bouton PLAY sur le panneau de contrôle des animations situé en bas de l'écran Proteus.

On peut voir sur le schéma (module ISIS) que le panneau LCD affiche le temps par défaut.

Le code de démonstration de Microchip pour la carte d'évaluation F1 posséde 3 modes : un pour le temps, un pour la température et un dernier qui donne une lecture de la tension (ADC) à partir du POT. Vous pouvez intéragir avec la simulation et passer d'un mode à l'autre en pressant le bouton de contrôle sur le schéma.

Quand vous êtes en mode température, vous pouvez ajuster la température sur le capteur de température MCP9800 en cliquant sur les boutons '+' et '-'. La température est alors transmise au bus I2C du processeur PIC, puis formatée et affichée sur le LCD.

En mode tension, vous pouvez ajuster la valeur du POT. La tension lue est convertie par le processeur puis affichée sur l'écran LCD.

Le microcontrôleur PIC a un LCD 10-bit, par conséquent notre valeur d'affichage va de 0 à 1023 pour une tension de 0 à 3.3 V.

Une fois que vous avez terminé, pressez le bouton STOP du panneau de contrôle des animation pour arrêter la simulation.

A noter

Beaucoup de choses se produisent quand vous lancez une simulation dans Proteus et qui ne sont pas forcément immédiatement apparentes.

En premier lieu, le microcontrôleur sur le schéma execute le fichier de compilation du programme de la même façon qu'un PIC physique pourrait executer ce programme. Le travail avec VSM Studio automatise simplement le déroulement du programme en envoyant le fichier de sortie vers le schéma si la compilation a réussi.

Vous devez noter que la plupart des liens sur le schéma débouchent sur un terminal nommé. Pour ceux qui ne sont pas familiers des terminaux, il est utile d'expliquer comment cela fonctionne. Sur le schéma, deux terminaux qui possédent le même nom sont considérés comme connectés (par un fil virtuel). Par exemple, les terminaux RC3 et RC4 placés à côté du capteur de température correspondent aux terminaux RC3 et RC4 connectés aux broches I2C du processeur PIC.

Nous utilisons les terminaux pour éviter les fils 'spaghetti' qui encombrent le schéma, qui peut être subdivisé en blocs logiques, facilement identifiables. La chose importante à comprendre est que tous les signaux voyagent sur des fils visibles. Cela signifie que vous pouvez attacher un capteur de tension ou un instrument de mesure à tout endroit où se trouve un fil. ISIS envoie le signal entre les deux terminaux comme s'il n'y avait qu'une seule connexion. Pour en savoir plus sur ce type de connexion, vous pouvez consulter l'aide ISIS.

Enfin, la barre de status, en bas de l'interface Proteus, donne le temps de simulation écoulé. En relation avec la puissance de votre ordinateur, de la rapidité de l'horloge du processeur et de la complexité du schéma, il est possible qu'une simulation ne s'exécute pas en temps réel, par contre l'exécution se fera toujours de façon synchrone et le temps d'exécution s'affichera dans la barre de status.

Ecrire un programme

A présent, ajoutons quelques fontionnalités au programme. Nous savons qu'une pression sur le bouton permet de commuter entre l'affichage du temps, de la température et de la tension; nous pouvons donc facilement ajouter un autre mode d'opération ici. Commençons par aller sur l'onglet VSM Studio IDE et ouvrir le fichier main.c (double cliquer sur l'item 'main.c' dans l'arboresence à gauche).

En haut du fichier, vous pouvez voir plusieurs prototypes de fonctions et une énumération des modes d'opération. Nous voulons ajouter un nouveau prototype de fonction pour notre mode test et une valeur correspondante sur la ligne 'typedef enum' comme ci-dessous :

Ensuite, nous devons trouver le bouton qui nous permet d'ajouter un nouveau mode d'opération. Pour cela, le mieux est de chercher un mode déjà existant en cliquant droit sur la fenêtre d'édition de VSM Studio, puis de sélectionner 'Cherche' dans le menu déroulant; ensuite, dans la fenêtre sui s'ouvre, entrez MODE_POT dans le champs 'Quoi chercher'.

Cette action permet d'arriver directement sur la partie du programme que nous cherchions. Il nous faut à présent ajouter notre nouveau mode, comme montré ci-dessous :

Notez que vous devez changer le mode d'affichage (display_mode) sur la ligne au-dessus de celle que nous venons d'ajouter.

Juste au-dessous, se trouve une autre partie du programme à laquelle nous devons également apporter des modifications. Là encore, il faut ajouter la ligne correspondan tau nouveau mode et nommer cette fonction :

La dernière étape consiste à écrire la fonction qui réalise l'action correspondante. Nous allons ajouter cette fonction à la fin du programme.

Vous pouvez expérimenter et ajouter ce que vous souhaitez ici; nous allons faire une action assez simple, c'est-à-dire écrire une valeur sur l'afficheur et ajouter un petit compteur binaire sur la LED.

Maintenant que nous avons utilisé PORTE pour notre bout de programme concernant la LED, nous devons encore configurer les broches. Nous allons écrire une ligne ANSELE dans la section de configuration périphérique en haut de la fonction principale.

Il ne nous reste plus qu'à construire le projet et lancer ISIS, comme vu précédemment. Si vous avez fait une erreur (ce qui est le cas ici), vous verrez apparaître une erreur de compilation dans la fenêtre de sortie. Cliquez sur cette erreur pour naviguer jusqu'à la ligne de code qui pose problème. Dans notre cas, nous avons oublié un point-virgule à la fin de la ligne.

certaines erreurs - comme les erreurs de liens - ne sont pas navigables. Dans ces cas-là, nous avons besoin de changer les options incluses dans la commande des paramètres de projet.

Quand nous lançons la simulation, nous pouvons désormais utiliser le bouton S1pour répéter les modes d'opération jusqu'à ce que le notre soit trouvé (temps->température->test). Nous verrons sur l'écran s'afficher le nombre 1111 demandé dans le programme.

Pour arrêter la simulation, pressez le bouton ARRETER en bas de la fenêtre d'édition, dans le panneau de contrôle des animations.

Bien que peu intéressant, cet exemple montre bien comme écrire rapidement et simuler du code sur un matériel virtuel.

Fenêtres actives (popups)

A ce stade nous avons écris notre code dans l'onglet VSM Studio avant de le simuler dans l'onglet de saisie de schéma.

Pendant le débogage, vous êtes généralement intéressés par le suivi pas à pas du code et de ne voir qu'une petite partie de la carte pour les vérifications. Le système de fenêtre active dans Proteus est conçu pour cela; il permet de placer des portions prédéfinies du schéma dans VSM Studio au cours de la simulation.

Dans notre cas, le capteur de température est un bon exemple de ce que nous voudrions voir pour intéragir avec pendant le débogage. Pour l'ajouter comme fenêtre active, vous devez :

1) Allez sur l'onglet ISIS et sélectionnez l'icône 'Fenêtre active'.

2) Commençons par le haut du schéma, côté gauche en traçant un rectangle de sélection autour du composant U2.

3) Vous pouvez voir une ligne bleue en pointillés tout autour de notre sélection.

Si vous avez fait une erreur, vous pouvez cliquez droit sur le rectangle de sélection et le supprimer. De la même façon, si ce rectangle de sélection est mal positionné, vous pouvez le réajuster en cliquant droit dessus et en le faisant glisser jusqu'à la bonne position.

Vous pouvez également sélectionner le bouton de mode de sélection, le POT et l'écran d'affichage afin qu'ils soient des des fenêtres actives de la même façon.

Une fois que vous avez spécifié les fenêtres actives, nous allons faire notre débogage dans VSM Studio. Quand vous pressez le bouton PLAY pour démarrer la simulation, nous sommes renvoyés sur l'onglet VSM Studio et les fenêtres actives apparaissent à droite de l'écran principal de VSM Studio.

Les fenêtres actives sont ingénieuses, pas seulement parce qu'elles permettent de mettre des parties du schéma dans l'environnement de débogage, mais aussi parce que vous pouvez intéragir avec. Par exemple, si vous cliquez sur le bouton S1 qui permet de passer d'un mode à l'autre, vous verrez l'affichage changer sur l'écran LCD. De même, si vous modifiez la température sur le capteur, l'écran LCD reflétera également ce changement.

En allant sur l'onglet du schéma (ISIS), vous verrez exactement la même chose que dans les fenêtres actives. Quand vous stoppez la simulation, les fenêtres actives disparaissent de l'onglet VSM Studio qui reprend sa présentation initiale, ce qui vous permet de modifier le code source afin de lancer une nouvelle compilation.

Vous pouvez simplement créer et modifier des fenêtres actives sur le schéma quand la simulation est arrêtée. Vous pouvez également redimensionner les fenêtres actives dans VSM Studio lors de la simulation.

A présent que la configuration des fenêtres actives est faite, nous pouvons voir comment déboguer quand la simulation a échoué dès le premier lancement.

Débogage classique

Les possibilités de débogage de Proteus VSM sont un des principaux atouts. Nous avons vu précédemment comment écrire et tester le code pendant une simulation globale. Nous allons voir à présent comment simuler notre code en pas à pas.

Commencez la simulation en appuyant sur le bouton PAUSE dans le panneau de contrôle des animations.

Cette action vous fera commuter sur le module VSM Studio; les fenêtres actives apparaissent sur le côté droit de le fenêtre et 'No source line' apparaît dans le panneau principal. Une liste des variables de programme apparait également en bas de l'écran.

A ce stade, la simulation a démarré et un point de départ stable a été trouvé mais aucune instruction n'a pour l'instant été exécutée ni de temps de simulation écoulé.

On ne voit pas de code source car il n'y a pas de ligne de code à la valeur du compteur de programme actuel.

Vous pouvez sélectionner n'importe lequel des fichiers de code source disponibles dans le menu déroulant en haut du panneau principal mais nous allons démarrer ici avec le fichier nommé main.c qui contient le programme de la boucle de contrôle principale.

Prenons un exemple simple : nous allons positionner un point d'arrêt dans la boucle principale lorsqu'un bouton est relaché. La façon la plus simple d'insérer un point d'arrêt est de double cliquer sur la ligne de code sur laquelle nous souhaitons créer ce point d'arrêt. L'indicateur de point d'arrêt apparaît à gauche de la ligne concernée; il s'agit d'un point rouge. Si vous positionnez un point d'arrêt par erreur, vous pouvez le supprimer ou l'arrêter en double cliquant à nouveau sur la ligne concernée (ou en cliquant droit et en sélectionnant l'option voulue dans le menu déroulant).

Si nous lançons la simulation (en appuyant sur le bouton PLAY), celle-ci sera executée en mode automatique jusqu'à ce que nous relachions le bouton commutateur (S1); la simulation se me en pause. Vous pouvez faire cela facilement en cliquant sur le bouton qui est sur la fenêtre active.

Après avoir atteint le point d'arrêt, nous pouvons suivre pas à pas notre code (et le système) via la commande habituelle qui se trouve en haut à droit de la fenêtre source ou dans le menu DEBOGAGE de VSM Studio. Vous pouvez également utilisez les touches raccourcis F10 et F11 pour les fonctions 'pas à pas princiapal' et 'pas à pas détaillé'.

Si vous avez besoin d'examiner le déroulement du débogage dans le détail, vous pouvez aussi suivre le code pas à pas au niveau assembleur. Cliquez droit sur l'onglet 'Source' et sélectionnez 'Disassembly' dans le menu déroulant, puis utilisez la même commande qu'auparavant.

Cliquez droit et sélectionnez l'option 'Désassembler' à nouveau pour revenir au code source.

Vous noterez que pendant le débogage, la fenêtre active de la sortie de l'afficheur n'est pas correcte. Ceci est normal car l'afficheur est multiplexé.

Si vous voulez exécuter jusqu'au relachement du bouton suivant, pressez simplement le bouton PLAY sur le panneau de contrôle des animations, puis cliquez sur le bouton dans la fenêtre active pour déclencher à nouveau le point d'arrêt.

Cliquez droit et sélectionnez tous les points d'arrêt quand vous avez terminé, puis pressez le bouton STOP sur le panneau de contrôle des animations pour mettre fin à la session de débogage.

A noter

Quand vous rencontrez un point d'arrêt ou un débogage classique dans Proteus, il est important de comprendre que vous avez alors l'intégralité du système sous contrôle pendant un laps de temps. Cela signifie, par exemple, que les condensateurs ne se déchargeront pas ou que les moteurs ne perdront pas leur état quand le système est en pause. Quand vous exécutez une ligne de commande qui contient plusieurs instructions, l'effet de ces instructions est propagé à travers le système, puis le système se met à nouveau en pause. Le temps qui s'écoule est affiché dans la barre de status.

Plusieurs fenêtres de débogage additionnelles sont disponibles, mais nous n'en parlerons pas en détail dans ce tutorial. Vous pouvez lancer les différentes fenêtres de débogage depuis la fenêtre de débogage de VSM Studio; elles apparaîtront en dessous de la fenêtre principale. Les données seront affichées dans les fenêtres quand la simulation est mise en pause. La fenêtre de visualisation des variables fait l'objet du chapitre suivant.

La fenêtre de visionnage

La fenêtre de visionnage (watch) est l'une des fenêtre de débogage qui fournit des données en temps réel au cours de la simulation; c'est également un autre moyen de repérer des points d'arrêt. Pour commencer, nous allons utiliser la fenêtre de visionnage pour contrôler les conversions ADC à partir du POT.

Commencez la simulation en appuyant sur le bouton PLAY, puis lancez la fenêtre de visionnage en allant dans le menu DEBOGAGE de VSM Studio. Celle-ci apparaît en-dessous de la fenêtre principale du code source.

Ensuite, cliquez droit sur la fenêtre de visionnage et sélectionnez 'Ajouter Items (par noms)' dans le menu déroulant. Nous voulons ajouter les registres ADC nommé ADRESH et ADRESL; pour cela, double cliquez dessus dans la liste proposée. Quittez la boite de dialogue. Les deux items sélectionnés apparaissent désormais dans la fenêtre de visionnage.

Nous avons maintenant besoin d'utiliser des fenêtres actives (ou de commuter vers l'onglet ISIS) pour passer en mode de lecture du POT. Cliquez sur le bouton de contrôle trois fois pour faire tourner les modes, puis utiliser les deux petits boutons situés à gauche du composant R4 pour faire varier la valeur du POT.

Vous pouvez modifier le format d'affichage des items pour être en mode binaire si vous trouvez que ce mode facilite la compréhension des résultats. Pour cela, cliquez droit sur chaque item dans la fenêtre de visionnage et changez le mode d'affichage en 'Binaire'.

Pour l'ADC 10-bits, nous voulons une valeur maximum de 1023 ou 0x03FF et nous voulons voir cette valeur quand le POT est à son maximum.

Supposons à présent que nous allions au point médian en décroissant. Nous savons que la valeur de ce point médian est aux alentours des 0x1FF;par conséquent, nous pouvons définir des conditions sur les items de la fenêtre de visionnage pour créer un point d'arrêt. Pour cela, cliquez droit sur un des items et sélectionnez 'Watchpoint condition' dans le menu déroulant. Dans notre exemple, nous voulons arrêter la simulation quand ADRESH est égal à 0x01 et ADRESL inférieur ou égal à 0xFF. Cette condition sera atteinte lorsque nous passons du maximum au point milieu.

Notez que vous devez configurer séparement ADRESH et ADRESL. La fenêtre de visionnage doit ressembler à celle-ci-dessous une fois la configurations des items terminée.

Une fois que les les conditions de visionnage sont configurées, tout ce que nous avons à faire est d'ajuster le POT jusqu'au moment où l'on rencontre le point d'arrêt, lorsque les conditions sont réunies. Comme précédemment, vous pouvez lancer l'opération à partir de la fenêtre active du POT dans VSM Studio ou en commutant vers l'onglet ISIS (schéma). Une fois déclenché, vous pourrez voir que la valeur pour l'item visualisé dans la fenêtre de visionnage est 0x1FF et - si nécessaire - vous pourrez démarrer la simulation en pas à pas à partir de ce point.

Les conditions de visionnage sont particulièrement utiles pour des opérations comme le débogage du code du timer quand vous voulez piéger une condition de dépassement (overflow).

Vous pouvez désactiver les expressions de point d'affichage par un clic droit sur l'item affiché, en sélectionnant l'option 'watchpoint condition', puis en sélectionnant l'option 'turn off watchpoint' dans la boite de dialogue qui s'est ouverte.

Regardons à présent les points d'arrêt matériels. Avant cela, veillez à désactiver à les 'watchpoint conditions' ou à complétement supprimer les items de visionnage, puis appuyez sur le bouton STOP du panneau de contrôle des animations pour arrêter la simulation.

Objets 'points d'arrêt'

Nous avons vu comment créer une rupture dans la simulation en utilisant les conditions du logiciel (points d'affichage et point d'arrêt). Il est également possible d'utiliser des objets 'point d'arrêt' matériel afin de contrôler le code quand une condition matérielle suvient. Par exemple, si nous voulons saisir le démarrage de l'activité en cours sur le I2C, nous pouvons mettre un objet 'point d'arrêt' sur la ligne I2C, comme ci-dessous.

Allez sur l'onget du schéma, puis sélectionnez l'icône 'sonde de tension' dans le menu à gauche de la fenêtre principale. Cliquez ensuite sur la fenêtre d'édition pour commencez le placement, déplacez la souris sur la ligne SDA, puis cliquez gauche pour déposer la sonde sur le fil.

Maintenant, cliquez droit sur la sonde et sélectionnez 'Editer propriétés' dans le menu déroulant.

Sélectionnez le point d'arrêt numérique, entrez 0 dans le champs de la valeur trigger.

Cliquez sur OK, puis pressez le bouton PLAY afin de lancer la simulation. Vous pouvez voir que la simulation s'interrompt preque immédiatement et, dans la fenêtre du code source de VSM Studio, nous voyons que nous avons seulement executé une commande pour mettre SDA à l'état bas.

Ce point d'arrêt prend place à l'intérieur de la routine 'Initialisation'. Si nous voulons l'éviter et l'activer seulement lorsque nous entrons en mode I2C, nous devons fixer et armer le point d'arrêt après un certain temps. Stoppez la simulation, allez sur l'onglet du schéma et cliquez sur la sonde RC4, puis marquez 1 dans le champs 'armer au temps'.

Cette fois, en lançant la simulation, le point d'arrêt ne sera déclenché que lorsque nous presserons le bouton de sélection de mode S1 sur le schéma pour se mettre en mode 'température' (quand la température est transmise sur le bus I2C).

Vous vous retrouverez à l'intérieur d'une des routines I2C dans le code source. Vous pouvez suivre le chemin du code à partir de ce point en utilisant le pas à pas et le débogage décrits dans les chapitres précédents. Arrêtez à nouveau la simulation quand vous avez terminé.

Mesures intéractives

Il est naturel de vouloir examiner les signaux et les formes d'onde; Proteus vous permet de le faire de deux façons. Comme exemple, nous allons prendre examiner le traffic de l'I2C à partir du capteur de température MCP9800. Nous pouvons faire cet examen de façon intéractive ou en utilisant les méthodes plus traditionnelles des graphes.

La première chose à faire est de nettoyer un peu le schéma et de supprimer les items de débogage que nous avons utilisés précédemment.Vous pouvez donc supprimer la sonde de courant par un clic droit dessus, puis en sélectionnant 'Supprimer objet' dans le menu déroulant. De la même façon, nous pouvons faire un clic droit sur le bord des fenêtres actives et les supprimer.

Quand une fenêtre active est définie sur le schéma, Proteus commute immédiatement vers VSM Studio dès que la simulation démarre. Comme nous voulons désormais analyser les signaux, il nous faut supprimer les fenêtres actives pour que la simulation démarre en restant sur l'onglet du schéma.

Il nous faut maintenant placer et connecter le debogueur I2C. Sélectionnez le mode Instruments qui fournit une liste d'outils de mesure intéractifs. Dans notre cas, nous allons choisir l'analyseur de protocole I2C.

Cliquez sur l'analyseur I2C dans la liste de composant, puis placez-le sur le schéma. Nous allons le placer sous le capteur de température afin de faciliter la connexion du composant sur le schéma.

Ils nous faut connecter les broches. Notez que le curseur devient vert lors de la création d'un fil de connexion. Positionnez le curseur sur le point de départ (une des broches du débogueur I2C) - le curseur devient vert - puis cliquez gauche pour commencer le placement, déplacez la souris jusqu'au point de destination (ici le fil SDA), puis cliquez gauche encore une fois pour terminer le placement. Faites de même pour connecter le fil SCL au bus I2C.

Une fois que nous avons connecté l'analyseur I2C, nous pouvons démarrer la simulation. Dans l'onglet VSM Studio, nous pouvons voir apparaître une nouvelle fenêtre pour le débogueur I2C dans laquelle semble se trouver un traffic d'initialisation/identification. Pour voir une transmission normale, nous devons appuyer sur le bouton du schéma pour passer du mode température au mode affichage.

Comme le code scrute en permanence, vous pouvez mettre en pause la simulation à partir du panneau de contrôle des animations afin de prendre un peu de temps pour analyser le traffic.

Si tous les onglets Proteus sont contenus dans une seule fenêtre principale l'onglet VSM studio sera mis en premier plan lorsque la simulation est en pause, car nous supposons que vous serez intéressés par le code source. Cependant, l'analyseur restera en premier plan. Si vous souhaitez voir simultanément le schéma et le code source vous devrez utiliser une fenêtre active ou déplacer l'onglet VSM en tant que fenêtre séparée.

La syntaxe utilisée par l'analyseur de protocole est standard et devrait vous être familère. Vous pouvez étendre chaque séquence via le '+' situé à gauche de chaque ligne. Le périphérique MCP9800 est à l'adresse standard de 0x90; par conséquent, nous pouvoir voir la totalité de la séquence qui commence par (S) suivi d'un demande de lecture (0x91 - bit 0 positionné), puis des données 0x1B et ainsi de suite. Comme attendu, la donnée reçue (0x1B) est 27 en décimal qui correspond à la température actuellement affichée.

Vous pouvez expérimenter le débogueur I2C en relançant la simulation, en changeant la température sur le composant MCP9800 du schéma, puis en mettant à nouveau la simulation en pause pour contrôler les résultats obtenus sur le débogueur I2C.

Il faut noter qu'en utilisant cette méthode d'analyse, nous sollicitons beaucoup le logiciel et ses performances sont moins bonnes car des données sont constamment en train de s'afficher sur l'écran. Cependant, dans la plupart des cas, vous pouvez utiliser cet instrument pour le test ou le débogage; la vitesse de la simulation est assez secondaire ici par rapport à la résolution d'un problème. De même que nous l'avons fait pour toutes les fenêtres de débogage, nous pouvons fermer le débogueur quand il n'est pas utilisé et le ré-ouvrir à partir du menu DEBOGAGE dans VSM Studio ou ISIS.

Pour plus d'information:

Pour plus d'information sur l'analyseur de protocole, veuillez consulter le manuel VSM. Noter notamment que vous pouvez utiliser l'analyseur comme un composant I2C maître (ou un esclave) aussi bien que comme une simple écran.

Pour plus d'information sur le placement d'objets ou la connectivité sur le schéma, veuillez vous référer au tutorial du module ISIS.

Mesures basées sur les graphes

Nous pouvons jeter un oeil au traffic de l'I2C en utilisant une autre méthode : le simulation basée sur les graphes. Il y a plusieurs différences notables qui affectent la façon de mettre en place cette simulation, à savoir :

  • Vous ne pouvez pas communiquer avec le circuit durant la simulation par graphes.

  • Une simulation par graphes fonctionne pendant un laps de temps déterminé.

  • Les résultats ne sont visibles que lorsque ce laps de temps est atteint et que la simulation est arrêtée.

A présent, regardons comment nous pouvons analyser le traffic I2C avec un graphe numérique. Tout d'abord, supprimez le débogueur I2C du schéma dans le chapitre précédent; pour cela, cliquez droit sur le composant et sélectionnez 'supprimer' dans le menu déroulant.

Faites de la place pour le graphe en dessinant un rectangle de sélection autour de l'afficheur avec le bouton droit de la souris pour qu'il soit en surbrillance. Ensuite, maintenez le bouton gauche enfoncé pour le déplacez vers la droite du schéma.

Sélectionnez maintenant l'icône graphe, puis choisissez le graphe digital dans la liste des graphes proposés. Cliquez gauche avec la souris sur la partie gauche en haut du circuit, là où nous souhaitons disposer le graphe, dessinez un rectangle et relachez le bouton gauche de la souris pour terminer le placement.

Notez qu'il n'est pas nécessaire que le graphe soit de grande dimension sur le schéma. Nous l'aggrandirons par la suite, lorsque nous aurons besoin d'analyser les résultats.

Après avoir ajouter le graphe, nous avons maintenant besoin de lui dire quels fils de connexions nous souhaitons dessiner. Pour cela, nous allons attacher des sondes sur ces fils, puis spécifier que ces sondes sont reliées au graphe. Sélectionnez l'icône sonde de tension, puis placez une sonde sur chacun des deux fils de l'I2C (RC3 et RC4), comme nous l'avons vu dans le chapitre sur les points d'arrêt.

Si vous avez besoin de faire de la place pour mettre les sondes, cliquez droit sur le terminal à la fin du fil et sélectionnez 'Déplacer fil' dans le menu déroulant, puis déplacez-le vers la gauche.

Vous pouvez utiliser la molette de la souris ou les touches F6/F7 de votre clavier pour zoomer et dézoomer sur'lendroit où vous êtes positionné avec le curseur. La touche F8 permet de revenir à l'affichage par défaut du schéma.

Par défaut, les sondes de tension prennent le nom du terminal sur lequel elles sont placées. Il est conseillé de les renommer pour être plus en adéquation avec le contexte de notre simulation. Pour les renommer, cliquez sur une sonde, éditer ses propriétés, puis changez son nom. Nous nommerons les deux sondes respectivement SCL et SDA.

Les sondes sont à présent placées sur les fils et notre graphe digital est également sur le schéma; nous avons besoin d'ajouter les sondes au graphe. Il y a différentes façons de faire cela, le plus simple étant de déplacer les sondes sur le graphe. Pour se faire, cliquez droit sur une sonde, sélectionnez 'Glisser objet', puis déplacez la souris vers le graphe. Enfin, cliquez gauche pour terminer le placement. Faites pareil avec la deuxième sonde.

Par défaut, la simulation par graphe va de 0 à 1s. Dans notre cas, il est préférable de lancer la simulation d'une seconde à deux secondes afin de sauter l'initialisation du traffic. Pour modifier ce paramètre, allez dans l'édition des propriétés du graphe (clic droit sur le graphe) et changez le temps du début de la simulation et celui de fin.

Cliquez gauche sur une zone vide du schéma pour désélectionner les objets sélectionnés.

Nous sommes désormais prêts à lancer la simulation, mais il nous reste un problème à régler avant. Comme mentionné précédemment, nous ne pouvons pas communiquer avec le circuit pendant la simulation; cependant, nous avons besoin de modifier le mode pour sonder le capteur de température et déclencher le traffic I2C. Tant que nous ne pouvons pas appuyer sur le bouton, nous devons injecter un signal équivalebt vers le PIC afin que le logiciel commute en mode température. Nous pouvons le faire avec des générateurs. Sélectionnez l'icone générateur, puis choisissez le générateur PULSE dans la liste proposée. Placez le générateur à droite du bouton, à côté du terminal RD2 - avant cela, vous devrez déplacer le terminal afin de faire de la place sur le fil pour le générateur.

Maintenant, éditez les propriétés du générateur. Sélectionnez l'option 'Single pulse' dans le champ Type numérique et changez la Polarité pulse en 'Impulsion négative' afin que le signal pulse corresponde à un bouton appuyé. Comme nous lançons la simulation de 1s à 2s, modifiez le temps de début à 1.25s et la largeur de pulse à 50ms.

Nous pouvons lancer la simulation. Utilisez la commande 'Simuler graphe' dans le menu GRAPHE. Vous devez obtenir un résultat comme ci-dessous :

Du fait que le traffic n'a pas été lancé avant les 1.25s (comme spécifié par le pulse), nous ne pouvons pas voir grand chose sur le graphe. Cliquez droit sur le graphe et sélectionnez l'option 'Maximiser la fenêtre' dans le menu déroulant. Le graphe s'ouvre dans un nouvel onglet.

Quand nous sommes sur l'onglet du graphe, nous constatons que les menus et les icônes sont différents de ceux du module ISIS, notamment la barre d'outils au-dessus de la fenêtre principale.

Les commandes Zoom se trouvent sur cette barre d'outils. La commande la plus utile est 'Zoom zone'. Cliquez sur cette icône, puis faites un rectangle de sélection autour d'une petite zone du graphe. En répétant l'opération, vous sera capable de zommer sur une seule séquence I2C.

Vous pouvez également utiliser le bouton SHIFT et dessiner un rectangle de sélection avec la souris pour zoomer sur une zone du graphe.

Les utilisateurs familiers du procoles I2C peuvent comparer les données brutes sur le graphe avec le séquencement que nous avons vu plus tôt sur l'analyseur de protocole.

Nous pouvons prendre des mesures sur le graphe des façons suivantes :

  • Cliquez gauche sur le graphe pour placer un curseur vert sur le graphe.

  • Restez appuyer avec le bouton gauche de la souris sur le curseur pour le positionner sur le graphe à la position souhaitée.

  • En maintenant la touche CTRL appuyée et en cliquant gauche sur le graphe, vous placerez un curseur rouge.

  • Restez appuyer en même temps sur le bouton gauche de la souris et sur la touche CTRL pour positionner le curseur rouge à la position souhaitée.

  • Les données de chaque curseur et le delta entre eux sont visibles sur le petit écran en bas de la fenêtre du graphe

Pour plus d'information

Toutes les techniques de placement et d'édition sont expluiquées en détail dans le turorial ISIS.

Les graphes sont détaillés dans le tutorial sur la simulation avancée par graphes.

Les messages de diagnostiques

Le message de diagnostique est un autre outil de Proteus, souvent négligé. C'est une interface qui vous permet de demander au système un rapport sous forme de texte de l'activité d'un ou de plusieurs périphériques. Nous allons jeter un coup d'oeil à cet outil en demandant un message de diagnostique pour le panneau LCD.

Allez sur l'onglet du schéma (ISIS), puis lancer la commande 'Configurer les diagnostiques' à partir du menu DEGOGAGE.

Cliquez sur le '+' devant le panneau LCD (VIM-332-DP), et cochez la case 'Suivi total' dans le champ 'Niveau Information de Suivi'.

Maintenant, faites de même avec le PIC16, sélectionnez le module LCD et modifier le champ 'Niveau Information de Suivi' en cochant la case 'Suivi total'.

Commencez une simulation intéractive à partir du panneau de contrôle des animations, plus cliquez sur le point d'interrogation vert pour voir les messages de diagnostiques. Cette action vous fera commuter vers VSM Studio. La fenêtre de la Simulation Log s'ouvre en dessous de la fenêtre principale.

Si vous mettez la simulation sur pause, notez que vous pouvez cliquer sur les messages LCD contenant les valeurs PC pour localiser les instructions dans votre code source qui a causé la condition.

La navigation dans le code source est possible lorsque la simulation est stoppée momentanément.

Pour finir, en arrêtant la simulation, vous fermez la fenêtre des messages de diagnostiques. Seuls les niveaux d'information de suivi ne reviennent pas automatiquement sur l'option 'Warning seuls'.

Les messages de diagnostiques sont particulièrement utiles dans les situations problématiques où vous avez besoin de comprendre où se situent les bugs. Ils permettent ainsi d'obtenir un meilleur résultat (essayez avec les périphériquesPIC MSSP et MCP9800 en mode température par exemple) et ne s'activent que lorsqu'on en a le besoin. Vous pouvez également choisir de n'ouvrir la session que pendant une période limitée si vous savez à quel moment précis de la simulation vous en aurez besoin.


Tutorial

Simulation avancée par graphes

Introduction

L'objectif de ce tutorial est de vous montrer, en utilisant un circuit amplificateur simple, comment effectuer une simulation analogique avec PROTEUS VSM.

Il vous apprendra, pas à pas, à :

  • Placer des graphes, sondes et générateurs.

  • Lancer une simulation.

  • Utiliser les graphes pour afficher les résultats et effectuer des mesures.

  • Découvrir les types d'analyses disponibles.

Le tutorial ne traite pas de l'apprentissage d’ISIS - placement de composants, interconnexions, sélection des objets, etc. Si ISIS vous est encore inconnu, nous vous recommandons donc fortement de vous familiariser avec avant d'attaquer ce tutorial.

Vous pourriez être tenté de tester tout de suite une simulation à partir d'un de vos circuits sans prendre le temps d'aborder ce tutorial. Vous parviendrez sans doute à des résultats, mais vous perdrez du temps et passerez à côté de choses utiles qui vous permettront de gagner du temps par la suite. De plus vous pourriez être déçu, voir frustré à la longue, en pensant que ce logiciel ne répond pas à vos attentes. C'est pourquoi nous pensons qu'il vous sera très profitable de passer par ce tutorial, même si vous avez le sentiment de pouvoir brûler cette étape.

Démarrage

Le circuit sur lequel nous travaillerons est un amplificateur audio articulé autour d'un AOP (ampli opérationnel) 741 dont vous trouverez le schéma ci-dessous. Comme vous le constaterez, le 741 est utilisé dans une configuration inhabituelle, car alimenté à partir d'une seule source de tension de 5 Volts. Les résistances de contre-réaction R3 et R4 fixent le gain à 10 environ. Les composants de polarisation en entrée, R1, R2 et C1, définissent une fausse référence de masse sur l'entrée non-inverseur qui est découplée du signal d'entrée

Comme c'est habituellement le cas avec ce genre de montage, nous effectuerons une analyse transitoire (Transient Analysis). Ce type d'analyse est très pratique car elle fournit de multiples renseignements. Une fois cette analyse décrite, d'autres formes d'analyses pourront être présentées.

Vous pouvez dessiner vous même le circuit mais nous vous recommandons de charger le fichier en suivant le chemin Menu Fichier -> Ouvrir projet -> Tutoriaux -> Tutorial simulation analogique (Part 1) à partir de la page d'accueil de Proteus. Le module ISIS doit être ouvert.

Generateurs

Pour tester le circuit, il est nécessaire de lui injecter un signal adéquat en entrée. Nous utiliserons une source de tension impulsionnelle comme signal de test. Un objet générateur devra donc être ajouté au schéma; c'est lui qui fournira notre signal.

Pour placer un générateur, cliquez sur l'icône "Générateurs": le sélecteur d'objets affiche alors la liste des générateurs disponibles. Pour notre simulation, nous avons besoin d'un générateur de type ‘Pulse’. Validez ce générateur, positionnez la souris dans la fenêtre d'édition à droite du terminal IN et cliquez gauche sur le fil pour placer le générateur.

L'objet Générateur se manipule comme les autres objets d'ISIS. Les mêmes procédures de prévisualisation et d'orientation avant placement, d'édition, de déplacement, de réorientation ou d'effacement après placement, s'appliquent (voir également Générateurs et sondes).

De même qu'un générateur peut être placé directement sur une liaison existante, le générateur peut être positionné ailleurs dans la feuille, puis relié comme tout autre objet, tel une résistance ou un condensateur. Si vous déplacez un générateur qui était sur une liaison, ISIS comprendra que vous voulez le "détacher" et déconnectera automatiquement le lien.

Vous noterez qu'une référence est automatiquement affectée au générateur au moment de son placement - ici, il prend le nom du composant le plus proche – le terminal IN. Lorsqu'un générateur est relié à un objet (ou placé directement sur un lien existant), le nom qui lui est affecté est celui du lien auquel il est connecté. Si le lien n'est pas nommé, le nom sera celui de la broche du composant le plus proche.

Pour terminer, il faut configurer certaines propriétés de contrôle du générateur qui définissent son comportement. Afin d'éditer lle générateur, cliquez droit dessus et sélection l'option Editer propriétés dans le menu déroulant. Sélectionnez , il faut le le champ ‘High Voltage’ et entrez la valeur 10mV et la valeur 0.5s dans le champ ‘Largeur de l'impulsion’.

Cliquez sur OK pour accepter les modifications.

Pour notre circuit, un seul générateur est nécessaire, mais il n'existe pas de limite quant au nombre de générateurs pouvant être placés.

Sondes

Il reste, à présent, à positionner des sondes aux points de mesures. Nous sommes manifestement intéressés par la sortie et aussi par la forme du signal au point de polarisation en entrée. Nous placerons donc deux sondes, une en chacun de ces points. Si besoin est, d'autres sondes pourront être ajoutées en d'autres points critiques et la simulation répétée à nouveau.

Pour placer une sonde, cliquez gauche sur l'icône ‘Sonde de tension’ (vérifiez que vous n'avez pas validé une sonde de courant). Les sondes peuvent être placées directement sur les connexions, ou n'importe où et connectées par la suite, comme pour les générateurs. Placez le curseur souris dans la fenêtre d'édition, à gauche de la broche 3 de U1, et cliquez gauche pour placer la sonde sur la liaison qui relie la patte 3 à R1 et R2. Notez que la sonde prend le nom du composant le plus proche, avec le nom de la broche entre parenthèses. Assurez-vous d'avoir bien placé la sonde sur la liaison avant de cliquer, car si vous vous trouvez sur une broche de composant, le raccordement de la sonde ne sera pas accepté. Maintenant, placez la seconde sonde en cliquant gauche juste à gauche de la sortie OUT, sur la liaison qui relie OUT à la sortie de U1, entre le point de jonction et le terminal.

Une sonde, comme un générateur, se manipule comme les autres objets dans ISIS. Les mêmes procédures de prévisualisation et d'orientation avant placement, d'édition, de déplacement, de réorientation ou d'effacement après placement s'appliquent. Les sondes peuvent être éditées afin de changer leur nom. Les noms affectés par défaut sont imposés dans le cas présent, mais vous pouvez les éditer en sélectionnant la sonde.

Maintenant que le circuit est prêt pour la simulation, nous devons placer un graphe pour visualiser les résultats de la simulation sous forme de courbes.

Graphes

Les graphes jouent un rôle important dans la simulation: ils ne se bornent pas à l'affichage des résultats, mais définissent le type de simulation effectué. En plaçant un ou plusieurs graphes, et en précisant le type de données à afficher (données numériques, tension, impédance, etc.), ISIS comprend quel(s) type(s) de simulation(s) doit être effectué(s) et quelle section du circuit doit être incluse dans la simulation. Pour notre analyse transitoire, nous avons besoin d'un graphe de type analogique. Nous le désignons sous le vocable analogique plutôt que 'transitoire' afin de bien le distinguer du type de graphe numérique (digital), qui est lui utilisé pour afficher les résultats d'une analyse d'un circuit numérique, forme particulière de l'analyse transitoire. Lorsqu'on désire afficher à la fois un graphe analogique et numérique sur un axe temporel identique, il faut utiliser un graphe unique appelé mixte (Mixed graph).

Pour placer un graphe, validez l'icône ‘Mode Graphes’ et choisissez un graphe analogique dans le sélecteur d'objets, puis positionnez le curseur de la souris dans la fenêtre d'édition; appuyez sur le bouton gauche de la souris et, tout en le maintenant appuyé, étirez un rectangle de taille appropriée; puis relâchez le bouton de la souris pour fixer le graphe.

Les graphes se comportent comme les autres objets d’ISIS. Cependant, ils recèlent quelques subtiles différences. Ce tutorial présente les caractéristiques principales. Vous pouvez sélectionner un graphe de la façon habituelle en cliquant gauche sur ce dernier pour, toujours à l'aide du bouton gauche de la souris, le déplacer ou modifier ses dimensions. Pour modifier les dimensions d'un graphe (au préalable sélectionné), placez le curseur sur une des poignées situées sur le pourtour du graphe et maintenez le bouton gauche de la souris appuyé lors moment du déplacement du curseur. Pour déplacer un graphe (au préalable sélectionné), placer le curseur sur le graphe mais pas sur une poignée et maintenez le bouton gauche de la souris appuyé lors du déplacement du curseur.

Nous devons maintenant placer dans le graphe les informations relatives au générateur et aux sondes. Tous les générateurs possèdent leur propre sonde (intégrée en quelque sorte) ; il est donc inutile d'en ajouter une dans le circuit pour voir la forme du signal qu'il génère. Il existe trois méthodes pour placer ou ajouter les sondes et générateurs dans un graphe.

La première méthode consiste à sélectionner une sonde/générateur et à le faire glisser dans le graphe avant de la relacher, comme si vous étiez en train de repositionner un objet; répétez l'opération pour chaque sonde/générateur. ISIS detecte ce que vous êtes entrain de faire : placer une sonde/générateur sur le graphe, remettre une sonde/générateur à sa position de départ, ajouter une courbe sur le graphe avec les même référence que celle de la sonde/générateur. Dans un graphe analogique, les courbes peuvent être associées à l'axe vertical Y de gauche ou à l'axe vertical Y de droite. Les sondes ou générateurs sont placés sur l'axe le plus proche de la position de curseur au moment où vous relâchez le bouton gauche. Quel que soit l'endroit où vous avez placé la sonde ou le générateur, la nouvelle courbe sera toujours ajoutée au-dessous des courbes existantes.

Les deux méthodes qui suivent utilisent la commande ‘Ajouter courbe’ du menu GRAPHES. Cette commande ajoute toujours des sondes au graphe courant (lorsque plusieurs graphes sont définis, l'ajout concerne le graphe validé en bas du menu GRAPHES).

Si la commande Ajouter courbe est appelée alors qu'aucune sonde ou générateur n'est sélectionné, une boite de dialogue apparaît pour vous permettre de choisir une sonde dans la liste des sondes du schéma. Dans le cas d'un schéma réparti sur plusieurs feuilles, les sondes de toutes les feuilles seront affichées dans cette liste.

Si une ou plusieurs sondes ou générateurs sont sélectionnés, le choix ‘Ajouter courbe’ affiche une boite de dialogue d'ajout rapide qui vous demande de confirmer l'ajout des éléments sélectionnés. Si vous répondez OUI, les éléments seront ajoutés au graphe, par ordre alphabétique. Si vous répondez NON, la boite de dialogue décrite dans le paragraphe précédent apparaîtra.

Nous utiliserons la méthode d'ajout rapide pour configurer notre graphe. Sélectionnez individuellement les sondes et le générateur ou, plus rapide, tracez un cadre qui englobe tout le circuit, avec le bouton gauche de la souris - la fonctionnalité d'ajout rapide ignorera tout objet sélectionné qui n’est pas une sonde et un générateur. Sélectionnez l'option ‘Ajouter courbe’ du menu GRAPHES et répondez OUI à la question d'ajout rapide des sondes sélectionnées. Les noms des courbes apparaitront dans le graphe (parce qu'il n'y a qu'un seul graphe dans le cas présent, celui-ci devient le graphe courant. S'il y avait eu plusieurs graphes présents, c'est le dernier sélectionné qui deviendrait le graphe courant). Pour l'instant, seuls les noms sont présents dans le graphe et aucune courbe n'est tracée. Si rien n'apparaît sur le graphe c'est qu'il est probablement trop petit pour qu'ISIS puisse y dessiner quelque chose. Dans ce cas il suffit de modifier ses dimensions comme indiqué plus haut (en le sélectionnant et en utilisant les poignées).

De cette façon, nos courbes (placées par ordre alphabétique) apparaissent dans un ordre qui nous convient. Nous pouvons cependant modifier cet ordre. Pour ce faire, assurez-vous que le graphe ne soit pas sélectionné (il ne doit pas être en surbrillance), et sélectionnez (clic gauche) le nom de la courbe que vous voulez déplacer ou éditer. Le nom doit être en surbrillance pour indiquer qu'il est bien sélectionné. Vous pouvez alors déplacer ce nom à l'aide du bouton gauche de la souris que vous maintiendrez appuyé pendant le déplacement (même chose que lorsque vous déplacez une référence de composant), vers le haut ou vers le bas. Si vous cliquez simplement sur le nom sélectionné (c'est à dire si vous relâchez aussitôt le bouton gauche de la souris), vous appellerez la boîte de dialogue spécifique à l'édition de la courbe. Pour supprimer une courbe, cliquez droit sur un nom et choisissez l’option ‘Supprimer courbe’ du menu contextuel. Pour invalider la sélection de toutes les courbes, cliquez gauche, en dehors de tout nom sélectionné, tout en restant dans le graphe.

Il reste une dernière chose à faire avant de lancer la simulation: paramétrer la durée de la simulation. ISIS simulera le circuit sur une durée égale au champ ‘Temps fin’ de X du graphe, dont la valeur par défaut est de 1 seconde. Dans notre cas, nous voulons un signal carré de fréquence élevée à l'entrée de notre montage: disons 10KHz. La période totale de ce signal sera donc de 100ms. Sélectionnez le graphe (clic gauche), puis cliquez gauche à nouveau pour appeler sa boîte de dialogue. Cette boite de dialogue dispose de plusieurs champs pour modifier le titre du graphe, le temps de début, le temps de fin, les labels de l'axe gauche et de l'axe droit (non visualisés pour un graphe numérique), et également les propriétés globales de la simulation. Le seul champ que nous modifierons ici est le paramètre ‘Temps fin’, qui vaut 1.00 à l'origine (une seconde) et que nous abaisserons à 100u (vous pouvez taper directement 100u - ISIS convertira en 100E-6), puis cliquez sur 0K.

Le circuit est prêt pour la simulation, mais pour éviter toute divergence avec les explications qui suivent, nous vous conseillons de charger notre version du schéma (Open Sample -> Tutorials -> Analogue Simulation Tutorial (Part 2)).

Simulation

La simulation du circuit se fait par la commande ‘Simuler graphe’ du menu GRAPHES (raccourci clavier: barre espace, lorsque la souris est placée dans le graphe). La commande lance la simulation et provoque le rafraîchissement du graphe en cours (celui qui est validé en bas du menu déroulant ‘Graphes’) avec affichage des résultats de la simulation.

Faîtes-le maintenant. La barre de status d’ISIS est remplacée par une barre d'état indiquant l'état d'avancement du processus de simulation. Quand la simulation est terminée, le graphe est dessiné avec les nouvelles données. En fait, le simulateur ignore le temps de départ. La simulation démarre toujours au temps zéro et continue jusqu'au temps de fin, ou jusqu'à ce que le simulateur trouve un état stable. Vous pouvez interrompre une simulation en cours en pressant la touche ECHAP du clavier.

Un journal de simulation, relatif à la dernière simulation effectuée, est mis à jour. Vous pouvez consulter ce journal par le biais de la commande ‘Voir fichier log’ du menu GRAPHES (raccourci clavier: CTRL+V). Le journal d'une simulation analogique ne vous apportera pas grand chose, à moins que n'y soient rapportés des messages d'erreur ou d'avertissement, auquel cas vous saurez ce qui n'a pas fonctionné correctement. Dans certains cas, le journal de simulation produit des informations utiles, qui seraient difficilement interprétables directement depuis le graphe.

La première simulation est terminée. A la seule vue des courbes du graphe il est difficile de d'analyser les résultats. Pour contrôler si le circuit donne des résultats cohérents, nous devons faire des mesures...

Faire des mesures

Un graphe placé sur un schéma est, au départ, sous forme réduite. Pour faire des mesures précises vous devez agrandir le graphe. Pour ce faire, cliquez droit dans le graphe et choisissez la commande ‘Maximiser’ du menu contextuel.

Le graphe s'ouvre dans un nouvel onglet; les menus et icônes sont modifiés afin d'inclure les fonctionnalités qui s'appliquent aux graphes.

Côté gauche de l'écran, sont indiqués les noms des courbes affichées. Les courbes sont situées directement à droite de ces noms. Tout en bas de l'écran, il y a une barre d’outils sur la gauche, et à droite, une barre d'état donnant des renseignements sur le curseur (nous verrons plus loin en quoi consiste un curseur et quel est son rôle). Sur ce nouveau graphe nous n'avons effectué aucune mesure, il n'y a aucun curseur visible, et la barre d'état n'affiche pour l'instant qu'un titre.

Les courbes se distinguent par leur couleur, identique au nom. Les noms des courbes IN, OUT, U1(POS IP) sont regroupés en haut de la fenêtre. Pour visualiser plus en détail les courbes nous allons séparer la courbe IN des deux autres. Cela peut être obtenu en faisant glisser le nom de la courbe sur la droite de l'écran (avec le bouton gauche de la souris maintenu appuyé). L'axe Y de droite, aura une échelle qui lui est propre, différente de celle de l'axe Y de gauche. L'amplitude de la courbe IN semble être maintenant plus importante; en fait, ISIS a automatiquement adapté l'échelle de l'axe Y de droite (un peu à la manière des appareils de mesure à changement de gamme automatique). Pour simplifier la lecture du graphe, nous devrions ne plus afficher la courbe IN (il s'agit d'un signal dont nous connaissons les caractéristiques). Cliquez droite sur IN et choisissez la commande ‘Supprimer courbe’ du menu contextuel.

Nous allons mesurer deux grandeurs :

  • Le gain en tension du circuit.

  • Le temps de descente de la sortie.

Ces mesures font appel à des curseurs.

Chaque graphe possède deux curseurs: un curseur de référence et un autre primaire. Le curseur REFERENCE est affiché en rouge, le curseur PRIMAIRE en vert. Un curseur est toujours 'verrouillé' sur une courbe, il se présente sous la forme d'un X qui chevauche la forme de l'onde et la suit quand on le déplace. Si l'on se sert des flèches de déplacement du clavier pour déplacer un curseur, il suit les divisions de l'axe X.

Commençons par placer le curseur REFERENCE. Les procédures sont identiques pour les deux curseurs. Maintenez la touche CTRL appuyée et cliquez dans le graphe sur une courbe (pas sur son nom): cela a pour effet de placer le curseur REFERENCE (trait vertical rouge), avec un X qui chevauche la courbe sur laquelle vous avez cliqué. Si vous n'aviez pas maintenu appuyée la touche CTRL, c'est le curseur PRIMAIRE que vous auriez placé (trait vertical de couleur verte). Pour déplacer un curseur il faut répéter l'action précédente, mais en maintenant le bouton gauche de la souris pendant le déplacement: CTRL + bouton gauche pour le curseur REFERENCE ou bouton gauche seul pour le curseur PRIMAIRE. Déplacez le curseur rouge REFERENCE et positionnez-le à 70u ou 80u sur l'axe X (pensez à la touche CTRL). Le titre qui apparaissait sur la barre de status en bas a disparu pour laisser place à des informations liées au(x) curseur (s): temps (TIME) et niveau de tension (VOLTAGE) à droite de ces données, avec le nom de la (ou des) courbe(s) en question. Nous voulons analyser la courbe U1(POS IP).

Vous pouvez déplacer un curseur sur l'axe X, avec les flèches de direction gauche et droite du clavier, mais vous pouvez aussi déplacer le curseur d'une courbe à l'autre en utilisant les flèches de direction haut et bas du clavier. Les touches DEBUT et FIN du clavier amènent directement le(s) curseur(s) respectivement aux extrémités gauche ou droite de l'axe X. En maintenant la touche CTRL appuyée, essayez de déplacer le curseur REFERENCE le long de l'axe X, en utilisant les flèches de direction gauche et droite du clavier. Vous verrez que le curseur se déplace bien division par division sur l'axe horizontal.

Maintenant, placez le curseur PRIMAIRE sur la courbe OUT entre 20u et 30u. La procédure est la même que pour le curseur REFERENCE, exception faite qu'il ne faut pas appuyer sur CTRL. Les données TEMPS et TENSION sont maintenant ajoutées à la barre de statut (en vert puisqu'il s'agit du curseur PRIMAIRE).

Les différences de temps et de tension entre les deux curseurs sont également affichées. La différence de tension devrait être d'environ 100mV. L'impulsion d'entrée ayant une amplitude de 10mV, l'ampli a bien un gain en tension de 10. Notez que cette valeur est positive parce que le curseur PRIMAIRE est au-dessus du curseur REFERENCE (en résultats relatifs, la valeur est 'Primaire - Référence').

Nous pouvons également mesurer le temps de descente en positionnant les curseurs sur le front descendant de l'impulsion. Pour ce faire, déplacez les deux curseurs à droite de l'impulsion de la courbe OUT (utilisez la souris ou les flèches de direction - touche CTRL pour le curseur REFERENCE). Le curseur PRIMAIRE doit se situer juste à droite de la réponse à l'impulsion. Le curseur REFERENCE doit être placé au point de départ de la chute de la courbe. Vous devriez obtenir un temps de descente légèrement inférieur à 10ms.

Utiliser les sondes de courant

Nos mesures étant terminées, nous pouvons revenir à notre circuit.

Nous utiliserons une sonde de courant pour examiner le courant qui circule dans le chemin de contre-réaction (mesure de courant dans R4).

Les sondes de courant sont utilisées d'une manière similaire aux sondes de tension, mais avec une différence capitale. Une sonde de courant doit être placée dans une direction bien précise. Les sondes de courant travaillent en effet en coupant une liaison et en s'y insérant, elles doivent donc savoir quel chemin prendre. Cela est spécifié simplement par la façon dont elles sont placées. Avec l'orientation par défaut (inclinaison à droite), une sonde de courant mesure, dans un lien horizontal, le flux de courant de gauche à droite. Pour mesurer un courant circulant dans un lien vertical, il faut faire subir à la sonde une rotation de 90° ou 270°. Une sonde mal disposée va générer une erreur qui sera reportée lors d'une simulation. En cas de doute sur son placement, observez la sonde: la flèche doit pointer dans la direction du flux du courant.

Choisissez une sonde de courant en cliquant sur l'icône Sonde de courant. Cliquez gauche sur l'icône ‘Orientation’ afin que la flèche de la sonde, visible dans la fenêtre de prévisualisation, pointe vers le bas. Placez alors la sonde sur la jonction verticale entre le côté droit de R4 et la broche 6 de U1.

Ajoutez la sonde sur le côté droit du graphe en la sélectionnant et en la glissant dans le graphe. Le côté droit du graphe est un bon choix pour les sondes de courant parce qu'elles demandent une échelle dont l'ordre de grandeur est souvent très différent de celui des sondes de tension.

Pour le moment, aucune courbe n'est dessinée pour la sonde de courant. Appuyez sur la barre espace pour démarrer la simulation. La courbe apparaît.

Bien que le graphe soit de taille réduite, on se rend compte que la forme du courant circulant dans la boucle de contre-réaction suit de près la forme du signal de sortie, ce à quoi nous pouvions nous attendre de la part d'un AOP. Le courant évolue entre 10mA et 0mA. Si vous le voulez, vous pouvez agrandir le graphe pour mieux apprécier les résultats.

Analyse fréquentielle

En plus de l'analyse transitoire, il existe plusieurs autres analyses possibles pour la simulation d'un circuit analogique. Toutes font appel à des graphes, des sondes et des générateurs, avec quelques des variations autour de ce thème. L'analyse que nous allons maintenant considérer sera une analyse fréquentielle. Dans une analyse fréquentielle, l'axe X devient l'axe des fréquences (échelle logarithmique) et les courbes d'amplitude et de phase sont affichées sur les axes Y de gauche et de droite respectivement.

Pour effectuer une analyse fréquentielle, un graphe fréquence est requis. Cliquez gauche sur l'icône 'Mode graphes' pour lister les graphes disponibles dans le sélecteur d'objets, et cliquez sur le type FREQUENCY. Placez maintenant un graphe sur le schéma. Il n'est pas nécessaire de supprimer le graphe TRANSITOIRE existant (pour supprimer un graphe, cliquer droit deux fois sur lui).

Nous devons ajouter les deux sondes de tension OUT et UI (POS IP). Dans un graphe FREQUENCY, les deux axes Y (gauche et droit) ont un rôle spécial. L'axe Y de gauche est utilisé pour afficher la courbe d'amplitude du signal, l'axe Y de droite étant réservé à l'affichage de la courbe de phase. Afin de visualiser les deux courbes, nous devons ajouter les sondes des deux côtés du graphe. Sélectionnez la sonde OUT et déplacez-la sur le côté gauche du graphe puis répétez l'opération, mais sur le côté droit du graphe. Chaque courbe aura une couleur différente, mais portera le même nom. Maintenant, sélectionnez et déplacez la sonde Ul (POS IP) sur le côté gauche du graphe. A ce stade, nous disposons de trois courbes sur le graphe.

Les valeurs d'amplitude et de phase doivent toutes deux être référencées. Pour ce faire, dans ISIS, il faut spécifier un générateur de référence (REFERENCE GENERATOR). Un générateur de référence possède toujours un niveau de sortie de 0dB (1 volt) à 0°. Tout générateur existant pourra être utilisé comme générateur de référence. Tous les autres générateurs présents dans un circuit seront ignorés pendant l'analyse fréquentielle. Pour que notre générateur IN soit notre générateur de référence du circuit, il faut le sélectionner et le glisser dans le graphe, comme s'il s'agissait d'une sonde. Sachant que vous incorporez un générateur, ISIS le considérera comme le générateur de référence et affichera un message dans la partie inférieure de l'écran pour confirmer l'action. Vérifiez que vous avez bien fait ce qu'il fallait où la simulation ne fonctionnera pas correctement.

Dans notre cas il n'est pas obligatoire d'éditer les propriétés du graphe, puisque la plage des fréquences par défaut convient. Cependant, si nécessaire, pointez le graphe et appuyez sur la combinaison clavier CTRL+E. La boîte de dialogue d'édition du graphe fréquentiel s'ouvre. Il n'est pas nécessaire de nommer les axes et il y a une case à cocher qui conditionne la façon dont se fera l'affichage de l'amplitude (Echelle Y en dBs). Si cette case n'est pas cochée, l'échelle d'amplitude sera linéaire. Si elle est cochée, l'échelle d'amplitude sera logarithmique. Il est en général plus intéressant de laisser cette case cochée (affichage en dB).

Maintenant lancez la simulation en cliquant droit sur le graphe et en sélectionnant l'option 'Simulation' dans le menu déroulant. Quand la simulation est terminée, agrandissez le graphe en l'ouvrant dans un nouvel onglet comme précédemment.

Occupons-nous d'abord de la courbe d'amplitude de la sortie OUT. Nous voyons que le gain dans la bande passante est de 20db (comme prévu) et que la plage des fréquences va de 50Hz à 20KHz. Les curseurs fonctionnent de la même façon que précédemment; vous pouvez les utiliser pour vérifier précisément ces données.

La courbe de phase de la sortie OUT laisse apparaître la distorsion en bout de bande, la phase chutant à 90° à la fréquence où le gain est unitaire (à droite du graphe). L'effet du filtrage passe-haut de l'étage de polarisation peut être facilement examiné via la courbe d'amplitude de U1 (POS IP). Notez que l'échelle de l'axe X est logarithmique et que, pour lire les valeurs depuis l'axe, il est conseillé d'utiliser les curseurs.

Analyse par balayage de variable

Dans ISIS, il est possible de voir comment le circuit est affecté quand on change certains paramètres (changement d'une valeur de résistance par exemple). Il existe deux types d'analyse qui vous permettent cela: le balayage (sweep) de valeur en régime continu (DC SWEEP) et le balayage de valeur en régime alternatif (AC SWEEP). Un graphe DC SWEEP affiche une série de valeur de points de fonctionnement, tandis qu'un graphe AC SWEEP affiche une série de valeurs de points pour une analyse fréquentielle, à la façon d'un graphe FREQUENCY, avec amplitude et phase.

Comme ces deux formes d'analyses sont similaires, nous considérerons seulement le type DC SWEEP. Les résistances de polarisation d'entrée R1 et R2 sont influencées par le faible courant consommé par U1. Pour apprécier la façon dont R1 et R2 conditionnent le point de polarisation, on utilise une analyse DC SWEEP.

Pour commencer, placez un graphe DC SWEEP à un endroit vierge du schéma. Puis sélectionnez la sonde U1 (POS IP) et glissez-la sur la gauche du graphe. Nous avons besoin de définir la fourchette des valeurs que pourront prendre les résistances R1 et R2. Nous le faisons à l'aide de la boite d'édition du graphe de balayage DC (pointez le graphe et appuyez sur CTRL + E). La boîte de dialogue contient des champs qui permettent de spécifier le nom des variables utilisées pour le balayage (Sweep Variable), les valeurs de début, de fin et le nombre de pas. Nous voulons que les résistances R1 et R2 prennent des valeurs comprises entre 100K et 5M. Entrez dans le champ DEBUT la valeur 100K et dans le champ FIN la valeur 5M. Cliquez sur OK pour accepter les changements.

Il est évident que les résistances R1 et R2 doivent être modifiées sur le schéma car, pour autoriser une analyse de ce type, on ne peut pas leur donner une valeur fixe. Cliquez gauche deux fois sur R1 pour l'éditer et remplacez le champ 'Valeur' qui contient 470k par X, et cliquez sur OK. Opérez de la même façon pour que le champ 'Valeur' de R2 contienne aussi la valeur X.

A présent vous pouvez simuler le graphe en le pointant et en pressant la barre espace. En agrandissant le graphe vous pouvez voir que le niveau du point de polarisation diminue quand les valeurs de R1 et R2 augmentent. Pour des valeurs de 5M le défaut est net.

Bien sûr, le changement des valeurs de R1 et R2 affecte aussi la réponse en fréquence de l'ensemble du circuit. Nous pourrions faire une analyse AC SWEEP à 50Hz pour voir les effets de ces changements aux basses fréquences et trouver un compromis.

Analyse du bruit

Le dernier type d'analyse que nous présentons est l'analyse du bruit. Dans ce type d'analyse le simulateur détermine le niveau de bruit thermique apporté par chaque composant. Tous ces niveaux de bruit sont additionnés en chaque point 'sondé' du circuit. Les résultats sont inscrits pour une largeur de bande donnée.

A noter quelques points particuliers dans une analyse de bruit :

  • Le temps de simulation est directement proportionnel au nombre de sondes de tension (et de générateurs) placés dans le circuit, chacune étant prise en compte dans l'analyse.

  • Les sondes de courant n'ont pas de signification dans une analyse de bruit et sont donc ignorées.

  • Une grande quantité d'informations intéressantes est ajoutée au journal de simulation (SIMULATION LOG).

  • PROSPICE calcule le bruit d'entrée ET de sortie. Pour le premier, une référence d'entrée doit être définie. Ceci est possible en plaçant un générateur sur le graphe comme pour l'analyse fréquentielle. Le bruit d'entrée montre alors le bruit équivalent sur l'entrée pour chaque sortie sondée.

Pour lancer une analyse de bruit de notre circuit nous devons déjà redonner à R1 et à R2 leur valeur originale de 470k. Faites-le maintenant. Ensuite choisissez un graphe de type NOISE et placez-le dans un endroit vierge du schéma. Nous ne nous intéresserons qu'à la mesure du niveau de bruit à la sortie OUT; sélectionnez la sonde de tension OUT et glissez-la sur le graphe. Là aussi, les valeurs données par défaut pour la simulation nous conviennent, mais vous pouvez toujours, par curiosité, consulter la boîte de dialogue d'édition du graphe de bruit. Si vous consultez cette boîte, vous remarquerez que la case à cocher permettant de visualiser les résultats en dB est cochée. Si vous utilisez cette option, assurez-vous que le niveau 0dB correspond à 1V r.m.s. Cliquez sur ANNULER pour fermer cette boîte de dialogue.

Lancez la simulation. Une fois la simulation terminée et le graphe maximisé, vous vous rendrez compte que les valeurs qui résultent de ce type d'analyse sont extrêmement faibles (de l'ordre du pV dans notre cas). Alors, comment dépister la source de bruit dans notre montage? La réponse se trouve dans le journal de simulation. Regardez maintenant le journal de simulation par la combinaison clavier CTRL+V.

Utilisez la flèche de l'ascenseur de la fenêtre vers le bas jusqu'à ce que vous trouviez la ligne qui débute par:

Total Noise Contributions at ...

Le bloc de texte qui suit liste tous les éléments qui contribuent au bruit total. La plupart de ces éléments sont, en fait, internes à l'amplificateur opérationnel et sont préfixés U1_- si vous cochez l'option 'Inclure contribution spectrale' de la boite de dialogue du graphe, vous obtiendrez encore plus de données de simulation, qui montrent la contribution de chaque composant pour chaque point de fréquence.