URL: https://linuxfr.org/news/les-ateliers-du-labx-1-l-oscilloscope-numerique Title: Les ateliers du labx : 1 - l’oscilloscope numérique Authors: jmax17 Davy Defaud, ZeroHeure, gusterhack, palm123, teoB, Yves Bourguignon, Turban, Benoît Sibaud, bubar🦥, BAud et esdeem Date: 2016年11月02日T19:17:56+01:00 License: CC By-SA Tags: oscilloscope, électronique, électricité et ordinosaure Score: 30 Cette dépêche propose de passer en revue un des ateliers du _hackerspace_ L@Bx concernant l’oscilloscope numérique : son bon usage & son utilité. Un oscilloscope est un appareil qui mesure une tension par rapport au temps. C’est l’outil indispensable de l’électronicien, il permet de visualiser l’allure d’un signal : * une commande de servomoteur ; * une trame UART ; * etc. Après quelques rappels de base en électricité, nous verrons dans cet article comment fonctionne un oscilloscope numérique et quelques cas d’utilisation de recherche d’erreurs dans une carte Arduino. ---- [L@Bx](http://labx.fr) ---- Les ateliers du L@Bx — 1 - l’oscilloscope numérique =================================================== Rappel de quelques bases sur la physique : tension, courant, loi d’Ohm et fréquence ---------------------------------------------------------------------------------- ## Qu’est‐ce qu’une tension ? La tension c’est une différence entre deux potentiels. C’est une valeur qui est imposée par les composants (voir leurs spécifications) : moins ça ne fonctionne pas, trop ça crame. ## Qu’est‐ce que le courant ? Le courant électrique est par analogie comme le débit d’eau. Il se mesure en Ampère (A) à l’aide d’un ampèremètre ou multimètre. Il correspond au nombre de charges électriques circulant dans la section d’un fil électrique par seconde ; ce qui correspondrait par analogie au nombre de voitures circulant pendant une seconde sur une section d’autoroute. Contrairement à la tension, nous ne pouvons pas contrôler le courant, le courant est imposé par le circuit, comme la charge d’un moteur ou la taille de la SDRAM dans notre μC. ## La loi d’Ohm ? Donc dans un montage, nous avons une valeur que nous contrôlons, la tension. Et une valeur imposée par le circuit, le courant. Si on réalise le rapport entre la tension et le courant, nous avons la charge R que l’on exprime en ohms. Et voici **La LOI** électrique qui fait tout : **la loi d’Ohm**, soit : **U = R ×ばつ I** ## Signal quoi ? (périodique) ![Signal pPériodique](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-314067.png) Un signal périodique est un signal composé d’un motif qui se répète sur un temps donné. ### Quelques exemples de signaux périodiques : ![Commande PWM](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-370221.png) Permet de commander la vitesse d’un moteur à courant continu en faisant varier la tension moyenne du moteur. ![Commande de servomoteur](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-servo.png) Commande de servomoteur, la largeur de l’impulsion détermine l’angle de la commande. ## Signal non périodique Nous avons aussi des signaux non périodiques comme : * les rebonds d’un capteur de fin de course : ![rebond fin de course](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-AppuiBouton3.png) * consommation de l’Arduino ; * trame de communication série ; * mesure analogique d’un capteur ; * etc. ## Oscilloscope numérique ![le rigol DZ1054](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-sGMfoZwVcHm6.jpg) ### Fonctionnement Un oscilloscope numérique dispose d’un convertisseur analogique‐numérique, qui convertit le signal analogique en valeur numérique. Cette valeur numérique est stockée dans une mémoire. L’ensemble des données stockées est l’image numérique du signal. Ensuite, il nous faut un moyen de visualiser cette mémoire, comme un écran ou une interface USB qui se connecte à un PC. ### Modes de Fonctionnement #### Mode continu L’oscilloscope enregistre en continu le signal ; quand la zone mémoire est pleine l’enregistrement recommence au début. Ce mode est parfait pour les signaux périodiques. #### Mode Stockage Dans ce mode l’oscilloscope enregistre le signal et s’arrête quand sa mémoire est pleine. Ce mode est parfait pour les signaux non périodiques. Utilisation de l’oscilloscope pour mesurer un signal ---------------------------------------------------- ### Le trigger Le _trigger_ (déclencheur) est un composant fondamental de tous les oscilloscopes. Il permet le déclenchement de l’acquisition du signal sur un événement : * vous choisissez la voie 1, 2, 3 ou 4 ; * vous choisissez le type d’événement front montant ou front descendant ; * vous réglez le seuil de déclenchement. #### Le PWM de l’arduino La fréquence du PWM est de 100 Hz, la tension max est de 5 V. Réglage du l’oscilloscope : * _base de temps_ de 2 ms par division, pour avoir deux périodes à l’écran ; * _sensibilité verticale_ d’1 V par division ; * _trigger_ détection du front montant, déclenchement à 1 V. #### Comment mesurer un courant Un oscilloscope mesure une tension, comment mesurer un courant simplement ? Il y a une relation entre le courant et la tension il s’agit de loi d’Ohms : `U = R ×ばつ I`. Dans votre montage, en ajoutant une résistance précise de faible valeur et en mesurant la tension aux bornes de la résistance, vous obtiendrez l’image du courant. #### fonction XY de l’oscilloscope On peut visualiser un signal par rapport au temps ou par rapport à un autre signal. Ce mode permet de tracer une caractéristique du courant, la tension d’un composant ou de tracer un déphasage de deux signaux. Rappel sur les bus de communication UART, I2C et SPI ---------------------------------------------------- ### UART L’[[UART]] est une méthode de communication point à point, utilisée par les MODEM 56k connectés sur la [prise DB-9](https://fr.wikipedia.org/wiki/D-sub) de nos [ordinosaure](https://fr.wikipedia.org/wiki/Histoire_des_ordinateurs). Mais cette méthode est encore très utilisée : * la communication entre Arduino et PC ; * le port de débogage de cartes Linux embarquées, comme la RPI ; * le port de débogage des box. L’UART a quatre paramètres : * le [_baud_](https://fr.wikipedia.org/wiki/Baud_%28mesure%29) _rate_, nombre de bits par seconde ; * le nombre de bits de stop (1, 1.5 ou 2) ; * la parité (0, 1 ou pas de parité) ; * le nombre de bits de données : 7 ou 8. Dans la très grande majorité des cas (personnellement, je n’ai pas trouvé d’autre cas) : * il y a 8 bits de données ; * pas de bit de parité ; * 1 bit de stop ; * le _baud rate_ varie entre 9 600 bauds et 115 200 bauds. Avec un oscilloscope, on peut déterminer cette vitesse. #### Temps de transmission d'un bit Mesurer le temps de transmission du plus petit bit, s’il mesure 104 μs le _baud rate_ est de 1/104 μs, soit 9600 bauds. #### Utilisation de l’oscilloscope pour écouter deux Arduino discuter Vous pouvez faire discuter deux Arduino ensemble avec leurs UART. ATTENTION, n’utilisez pas le moniteur série de l’IDE d’Arduino ! * Connecter le TX d'un Arduino sur le RX de l'autre * Connecter le RX sur le TX de l'autre * Connecter une sonde de l’oscilloscope sur le TX * Connecter une sonde de l’oscilloscope sur le RX * et ~~écouter~~ visualiser ... ### I2C Le bus [I2C](https://fr.wikipedia.org/wiki/I2C "Inter‐Integrated Circuit") est un bus de communication inventé par Philips. Le bus est composé de trois fils : un fil pour l’horloge (SCL), un fil pour les données (SDA) et un fil pour la masse (_ground_). Le fil qui transporte l’horloge est ce qui permet de fixer la vitesse de communication de votre bus I2C. Il est imposé par le maître ; oui, car l’I2C est un bus de communication de type maître‐esclave, avec la possibilité d’avoir plusieurs maîtres. Il est massivement utilisé même dans votre ordinateur. Il est extrêmement pratique pour faire de la mesure avec des capteurs car, avec seulement trois fils, nous pouvons avoir une centaine de capteurs. Les capteurs I2C ont obligatoirement un microcontrôleur qui se charge de convertir le signal analogique de la mesure en signal numérique transférable par bus I2C. Un capteur ne peut pas émettre d’alerte, il doit attendre une requête du maître. Ce bus est assez lent, il n’est pas adapté pour faire des gros transferts. #### Recherche d’erreurs Si votre Arduino n’arrive pas à lire votre capteur de pression ou si les valeurs sont aberrantes, vous pouvez, avec l’oscilloscope, visualiser la trame émise. La procédure est de : * connecter une sonde sur le fil SDA ; * connecter une sonde sur le fil SCL ; * mettre un _trigger_ front descendant sur le SDA ; * vérifier si la trame émise correspond à la trame programmée : ![Trame observée avec un oscilloscope](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-DS2000-s-serial-bus-trigger.jpg) ### SPI Le [[SPI]] est un bus maître‐esclave, composé de trois fils, plus un fil par esclave. L’adressage des esclaves est réalisé par un signal électrique. Pour chaque esclave, nous avons quatre fils : * SCLK — _Serial Clock_, horloge (généré par le maître) ; * MOSI — _Master Output_, _Slave Input_ (généré par le maître) ; * MISO — _Master Input_, _Slave Output_ (généré par l’esclave) ; * SS — _Slave Select_, actif à l’état bas (généré par le maître). Et pour le maître nous avons : * SCLK ; * MOSI ; * MISO ; * nombre d’esclaves ×ばつ SS. Le SPI permet des transferts plus rapides, on l’utilise pour connecter de la mémoire vive à des microcontrôleurs. Mais, pour chaque esclave, nous devons ajouter un fil supplémentaire et utiliser des [GPIO](https://fr.wikipedia.org/wiki/General_Purpose_Input/Output "General Purpose Input/Output — entrées‐sorties d’usage général") en plus. Il y a une petite technique pour optimiser le nombre de GPIO à utiliser, nous pouvons utiliser un [[démultiplexeur]] ou [décodeur d’adresses](http://fr.rs-online.com/webdocs/05fe/0900766b805fe01c.pdf) : * pour 2 GPIO, nous pouvons adresser 4 esclaves ; * pour 3 GPIO, nous pouvons adresser 8 esclaves ; * etc. #### Recherche d’erreurs Si votre Arduino n’arrive pas à lire votre capteur de pression ou si les valeurs sont aberrantes, vous pouvez, avec l’oscilloscope, visualiser la trame émise. Il faut : * connecter une sonde sur le fil MOSI ; * connecter une sonde sur le fil MISO ; * connecter une sonde sur le fil SCLK ; * connecter une sonde sur le fil SS ; * mettre un _trigger_ front descendant sur le SS correspondant à votre capteur ; * vérifier si la trame émise correspond à la trame programmée. ![SPI vu au scop](https://linuxfr.org/images/historique/images_perdues/les-ateliers-du-labx-1-l-oscilloscope-numerique-SPI.transfer.png) ## Pour conclure Un oscilloscope est un outil vraiment très utile, voire indispensable si l’on souhaite progresser en électronique et systèmes embarqués. Mais, c’est un investissement, de 50 € à... ouh là là !... Pour écouter des trames série vous pouvez utiliser le [bus pirate](http://dangerousprototypes.com/docs/Bus_Pirate), un très bon projet à matériel libre. Vous pouvez aussi vous fabriquer un oscilloscope avec votre carte son. Eh oui, la carte son est un convertisseur analogique numérique, mais vous ne pourrez pas visualiser des signaux qui ont une fréquence supérieure à 44 kHz.

AltStyle によって変換されたページ (->オリジナル) /