Accueil » Multipower » Page 2

Multipower

Protocoles synchrones vs asynchrones

Introduction

Vous avez peut-être déjà entendu parler des protocoles de communication synchrones et asynchrones (tel que UART – Universal Asynchrone Receiver and Transmitter), mais savez vous de que signifient ces termes ? Si ce n’est pas le cas, ne vous inquiétez pas car nous allons en parler dans cet article.

En communication numérique – lorsque nous souhaitons envoyer des données entre un appareil et un autre – nous devons piloter des liens de communication de données soit à l’état Haut (1 – HIGH) soit à l’état Bas (0 – LOW). Ce sont les seules options disponibles. Supposons que nous voulions envoyer la donnée ‘Hello’ d’un appareil à un autre. Si nous utilisons le codage ASCII (pour lequel chaque lettre de l’alphabet est représenté par un nombre, car les ordinateurs travaillent en interne uniquement avec des nombres), ceci serait représenté par la séquence de nombres.

72 101 108 108 111

ou en binaire

01001000 01100101 01101100 01101100 01101111

Voir notre article sur les systèmes de numération pour plus d’information.

Si nous ne disposons que d’une seule ligne de données (comme c’est le cas pour la plupart des protocoles de communication) alors nous pouvons émettre un bit après l’autre, en pilotant la ligne de données entre les états haut et bas conformément à la valeur du bit à envoyer (les couleurs ont été ajoutées pour faciliter la lecture, sachant que les données binaires n’ont pas de couleurs !) avec le LSB transmit en premier (Bit le moins significatif – Least Significant Bit).

Hello en binaire (avec un codage ASCII) et le LSB en premier.

Le LSB d’un nombre binaire est le bit de plus petite valeur (le plus lointain sur la droite) et le MSB (Most Significant Bit) est le bit de plus grande valeur (le plus à gauche). Voir notre article sur la signification de Bit & Endian

Interpréter les données

Si les données transmises étaient toujours une séquence alternée de 1 et de 0, il serait assez facile de les interpréter car le motif est régulier et prévisible :

mais évidemment ce n’est pratiquement jamais le cas. Que se passerait il pour la séquence de 4 x 1 suivie de 4 x 0 (11110000) ?

Sans information supplémentaire le récepteur pourrait dire que le signal était 10, 1100, 111000 ou 11110000 (ou 1111100000, et ainsi de suite). Il nous faut absolument quelque chose en plus pour clarifier la communication.

Synchrone ou asynchrone

Cela se résout soit avec une ligne de communication supplémentaire pour indiquer le timing de chaque bit sur la ligne de données, ou en permettant au récepteur de connaître en interne la durée de chaque bit sur la ligne de données. La première possibilité, où une ligne de communication supplémentaire est utilisée pour indiquer les timings de chaque bit, est appelée communication synchrone. La ligne supplémentaire dans la communication synchrone est appelée la ligne d’horloge (parce que les horloges sont utilisées pour chronométrer les choses). La deuxième possibilité, où le récepteur connaît en interne la durée de chaque bit sur la ligne de données, est appelée communication asynchrone. Avec la communication asynchrone, le récepteur et l’émetteur ont besoin d’une horloge interne précise pour mesurer le temps. Le récepteur et l’émetteur doivent également évidemment être réglés pour utiliser la même vitesse/timing (taux de bauds) afin de communiquer avec succès.

La transmission synchrone par rapport à la transmission asynchrone se résume donc à savoir si l’horloge est externe (synchrone) ou interne (asynchrone). Quelques exemples de protocoles asynchrones comprennent UART, USB, CAN et Ethernet. Quelques exemples de protocoles synchrones comprennent SPI, I2C et DDR.

Avantages et inconvénients

Un avantage des protocoles synchrones est qu’ils ne nécessitent pas que le dispositif ait une horloge interne très précise (plus la communication est rapide, plus l’horloge interne devrait être précise). En conséquence, les protocoles de communication synchrones sont souvent utilisés dans de petits périphériques peu coûteux tels que des capteurs. Un autre avantage des protocoles synchrones est que les deux côtés de la communication n’ont pas besoin de connaître à l’avance quel sera le débit de données (timing). Certains protocoles synchrones ont même des débits de données variables et/ou peuvent utiliser la ligne d’horloge pour indiquer qu’ils sont toujours occupés en la maintenant dans le même état jusqu’à ce qu’ils soient prêts à recevoir de nouvelles données (c’est une fonctionnalité de l’I2C) ; les protocoles asynchrones nécessitent une ligne de communication supplémentaire pour implémenter cette fonctionnalité (comme la ligne CTS/RTS dans UART).

Un avantage des protocoles asynchrones est qu’ils nécessitent moins de lignes de communication et, de ce fait, ils génèrent moins de bruit électromagnétique (voir notre article sur les interférences EMI/EMC).

Comme il peut être difficile avec les protocoles asynchrones d’obtenir une synchronisation parfaite des horloges des deux côtés, généralement ils nécessiteront de temps en temps au moins une transition sur la ligne de données afin de réaligner leurs horloges internes. Cela peut faire partie de la trame du protocole (comme avec UART), ou cela peut être mis en œuvre en exigeant l’insertion d’un bit de bourrage (stuff bit) de polarité opposée après un certain nombre de bits consécutifs de la même polarité (le bit de bourrage est éliminé lors du décodage du protocole, comme avec le protocole CAN).

Bit de bourrage du CAN après 5 bits identiques

Résumé

C’est tout ce qu’il y a à comprendre dans les termes de communication synchrone ou asynchrone.

  • Synchrone = Horloge externe
  • Asynchrone = Horloge interne

Proteus inclut dans ses bibliothèques de nombreux composants modélisés utilisables en simulation, que ce soit pour les protocoles synchrones ou asynchrones. De plus, il existe également des instruments virtuels qui supportent ces protocoles de communication.

Copyright Labcenter Electronics Ltd. 2024

Traduction française

Copyright Multipower France 2024

Signification de bit & endian

Introduction

Cet article suppose que vous êtes familier avec les systèmes de numération (Décimal / Hexadécimal) – si ce n’est pas le cas, veuillez commencer par lire l’article sur ce sujet.

En informatique, la plus petite unité de nombre est généralement l’octet (Byte – 8 bits). Techniquement la plus petite unité est le bit (1 ou 0, Vrai ou Faux), mais en terme de représentation c’est l’octet que constitue le plus petit bloc de base. Des nombres plus grands sont construits en utilisant plusieurs octets et les protocoles de communication utilisent typiquement l’octet comme la plus petite unité pour transférer des données.

Signification des bits

Par exemple, si nous considérons le nombre binaire ‘10000001’, alors les bits aux deux extrémités de la séquence binaire ont des noms spéciaux – le bit à l’extrême droite s’appelle le LSB (Least Significant Bit – Bit de moindre poids) et le plus à l’extrême gauche s’appelle le MSB (Most Significant Bit – Bit de poids le plus élevé).

Le listing des bits dans un octet illustre le MSB et le LSB. Le bit le plus à droite a la valeur décimale 1 et le bit le plus à gauche a la valeur décimale 128 (donnant ainsi la valeur totale de 129 à cet octet) – le bit de gauche a la plus grande valeur (la plus élevée) et le bit de droite a la plus petite valeur (la moins élevée).

Avec les protocoles de transmission de données série, les données peuvent être transmises soit en commençant par le LSB, soit en commençant par le MSB. Les protocoles USB et UART transmettent le LSB en premier alors que les protocoles I2C et CAN transmettent le MSB en premier. Le SPI peut être configuré pour utiliser l’une ou l’autre option, mais généralement, c’est le MSB qui est utilisé.

Exemple de communication UART – LSB en premier

Exemple de communication I2C – MSB en premier

Endian

Lorsque plusieurs octets sont combinés en mémoire pour représenter des nombres plus grands (16 bits, 32 bits, 64 bits, etc.) il faut décider de la manière de disposer ces octets multiples en mémoire.

4 octets sont utilisés pour représenter un nombre de 32 bits

Little endian est de loin l’option la plus couramment utilisée. Dans ce cas, les positions de valeur des octets en mémoire restent les mêmes à mesure que le nombre d’octets utilisés pour représenter le nombre augmente.

Le terme endian provient du roman de 1726 ‘Les voyages de Gulliver’, dans lequel il y a un conflit entre des sectes de Lilliputiens selon qu’ils cassent la coquille d’un œuf à la coque par son extrémité la plus petite ou la plus grande.

 

Copyright Labcenter Electronics Ltd. 2024

Traduction française

Copyright Multipower France 2024

PWM : modulation par largeur d’impulsion

Introduction

La modulation par largeur d’impulsion (Pulse width modulation ou PWM) est un concept simple largement utilisé. Jetons un coup d’œil à une onde carrée.

Notez que le signal est totalement numérique car il transite entre les états On/High et Off/Low. C’est différent, par exemple, d’un signal sinusoïdal analogique pour lequel les variations sont douces tout au long de la forme d’onde.

Notez également que, pour une onde carrée, le signal est ON pendant la moitié du temps et il est OFF pendant l’autre moitié du temps.

La portion de la forme d’onde qui est à l’état ON est appelée rapport cyclique (Duty Cycle) – c’est la proportion du temps pendant laquelle le signal délivre de l’énergie. Pour un signal carré c’est 50% du temps, ainsi le rapport cyclique est de 50% ; c.a.d. que si la période est de 1s (fréquence de 1Hz), alors le signal est ON pendant 0,5s et OFF pendant 0,5s.

La partie positive de la forme d’onde (partie On) peut également être vue comme une impulsion d’énergie. En modifiant la largeur de l’impulsion (le rapport cyclique), nous pouvons modifier la proportion d’énergie délivrée par la forme d’onde.

C’est de là que provient le terme « Pulse Width Modulation » (modifier la largeur de l’impulsion).

Principales utilisations du PWM

La modulation par largeur d’impulsion (Pulse width modulation ou PWM) est un concept simple largement utilisé.

La modulation par largeur d’impulsion est une possibilité dont dispose un système numérique pour générer une sortie analogique (en faisant passer le signal PWM dans un circuit additionnel et/ou un système mécanique). Des exemples d’applications du PWM sont :

  1. Un signal PWM peut être utilisé pour générer une tension analogique en faisant passer le signal dans un filtre passe-bas.
  2. Un PWM peut être utilisé pour contrôler de manière proportionnelle un moteur à courant continu (DC).
Moteur DC

         3. Un PWM est utilisé pour fixer la position de certains types de servomoteurs.

Servomoteur
  1. Le PWM peut être utilisé pour contrôler la quantité de chaleur générée par un élément chauffant.
  2. Le PWM est utilisé dans les convertisseurs BUCK et BOOST pour convertir une tension d’entrée en une tension plus faible ou plus haute (voir l’article sur les convertisseurs BUCK et BOOST)
  3. Le PWM peut être utilisé pour contrôler la luminosité apparente d’une lampe ou d’une LED.
  4. et plus encore, beaucoup plus.
Dans certains cas, la sortie est une tension électrique ou un courant, dans d’autres cas c’est une quantité physique telle un force / position / chaleur / luminosité, mais dans tous les cas la sortie varie continument entre un maximum totalement ON et un minimum totalement OFF grâce au PWM.

Du PWM au signal analogique

Voyons comment convertir un signal PWM en un signal analogique. Pour cela nous avons besoin d’un filtre passe-bas (voir notre article sur les filtres)

Le signal numérique PWM 5V est converti en une sortie analogique (50% de 5V = 2,5V).

Tous ces exemples simples peuvent être simulés rapidement grâce au module Proteus de simulation avancée par graphes.

De valeurs plus petites de R (résistance) ou C (condensateur) répondront plus rapidement à des variations de l’entrée mais produiront plus de gigue (jitter) en sortie (et vice versa).

Une modification du rapport cyclique changera la tension de sortie. Par exemple, un « duty cycle » de 20% produira une tension de sortie de 1V (20% de 5V = 1V) :

Inversement un rapport cyclique de 80% générera une tension de sortie de 4V (80% de 5V = 4V) :

Le fait d’augmenter la fréquence du PWM diminuera le jitter en sortie.

En résumé, des valeurs relativement faibles de résistance et/ou condensateur peuvent être utilisées pour produire des réponses plus rapides par rapport aux variations de l’entrée; c’est généralement la règle pour un PWM. Plus la fréquence du PWM est élevée, plus la sortie sera lissée.

Lorsqu’on s’intéresse à la réactivité, souvenez-vous que si on veut l’augmenter alors les éléments de lissage (la résistance et le condensateur de notre filtre passe-bas plus haut) doivent être plus petits.

Accessoirement, le niveau de puissance de l’entrée (la tension d’entrée de la forme d’onde dans les exemples ci-dessus) doit être augmentée. Dans un système mécanique, l’élément de lissage du système peut être l’inertie du système (masse).

Il y a toujours des limites hautes et basses aux fréquences possibles pour le PWM – cela peut être la fréquence d’horloge du système qui génère le PWM ou le temps de réponse de(s) l’élément(s) qui commute(nt) la sortie – un relais peut commuter en quelques ms.

Comme indiqué dans l’article sur les filtres passifs, un filtre passe-bas constitué d’inductance et de résistance peut être aussi utilisé.

Des filtres résistance – condensateur sont généralement préférés pour ce type d’application.

PWM enfoui

La plupart des microcontrôleurs modernes possèdent des périphériques PWM internes capables de générer des sorties PWM dans une certaine gamme de fréquences et de résolutions. S’il faut générer des fréquences inférieures aux capacités du périphérique PWM interne, il est possible d’utiliser un timer en interruption et de régler manuellement l’état haut et bas de la broche.

Sur Arduino, la fonction analogWrite() génère directement une sortie PWM.

Reportez vous au navigateur de projets exemples 

Résumé

Le principe du PWM est très simple – convertir une entrée numérique en une sortie analogique. Les variables du système sont la force (tension), la fréquence, le rapport cyclique et l’inertie de l’élément de lissage. Le réglage fin (tuning) d’un système doit être adapté à chaque application.

 

Copyright Labcenter Electronics Ltd. 2024

Traduction française

Copyright Multipower France 2024

PCB Multicouches : Comprendre l’Empilement des Couches et son Impact sur la Fabrication

Découvrez ce qu’est un convertisseur boost qui permet d’obtenir une tension plus élevée et comment il fonctionne.

Découvrez ce qu’est un convertisseur buck qui permet d’obtenir une tension plus basse et comment il fonctionne. Un projet de simulation Proteus est disponible en fin d’article !!!

La mémoire flash

La mémoire FLASH est actuellement la technologie la plus populaire pour sauvegarder des données, grâce à son faible coût et sa petite taille. La plupart des microcontrôleurs utilisent de la FLASH comme mémoire du programme principal. Au besoin, les composants FLASH externes permettent d’ajouter facilement de la mémoire peu couteuse et les très populaires cartes SD implémentent également cette technologie; les ingénieurs en électronique ont donc l’habitude de mettre en oeuvre de type de mémoire.  Il est cependant important de comprendre toutes les subtilités des FLASH.

La FLASH est une mémoire non volatile. Elle n’est pas aussi rapide que de la RAM mais elle conserve son contenu lorsque l’alimentation disparait. Beaucoup de projets enfouis nécessitent de sauvegarder certaines valeurs dans une mémoire non volatile, tels que les réglages utilisateurs ou le journal de données. Il n’y a pas si longtemps, de nombreux microcontrôleurs disposaient d’une zone de mémoire EEPROM pour cela. Une EEPROM est simple à comprendre et il est facile de travailler avec – elle possède une certaine taille et chaque octet est accessible individuellement en lecture ou en écriture (comme une RAM, en plus lent). Une EEPROM accepte un plus grand nombre de cycles effacement-écriture qu’une FLASH, ce qui constituait la principale raison de les préférer pour une application. Avec l’évolution de la technologie qui a permis aux FLASH de disposer d’un plus grand nombre de cycles d’effacement-écriture, les EEPROM ont progressivement disparues.

A présent, intéressons-nous aux particularités des mémoires FLASH.

Effacement de secteur

Lorsqu’une mémoire FLASH est effacée, tous les bits internes sont mis à 1 (pas à 0). Si vous voyez beaucoup de 0xFF (le nombre hexadécimal équivalent au binaire 11111111) alors vous travaillez avec une FLASH qui vient d’être effacée. Alors qu’il est possible de commuter un bit ou un octet individuels de 1 à 0 dans une FLASH, la commutation de 0 à 1 ne peut se faire que globalement (bulk method) ! Les mémoires FLASH sont organisées en secteurs (eux-mêmes peuvent être regroupés en blocs) dont la taille est habituellement de l’ordre de quelques kilooctets; un secteur est la plus petite zone mémoire qu’il est possible d’effacer à un instant donné.

Comme exemple, supposons que 100 réglages sont sauvegardés en FLASH et que vous ne souhaitez mettre à jour que le réglage #3; pour ce faire vous devez effacer la totalité du secteur qui contient la donnée #3 puis la réécrire – en faisant cela vous effacerez tous les autres réglages avec la nécessité de les réécrire. Il existe plusieurs façons de contourner ce problème :

  • Une méthode est de lire toutes les valeurs dans une RAM, d’effacer le secteur puis de réécrire les données après mise à jour des valeurs. Si le nombre des données est important et en fonction de la quantité de la RAM disponible, cette méthode peut ne pas convenir.
  • Une autre méthode est de copier toutes le valeurs dans un autre secteur FLASH, d’effacer le secteur d’origine puis de réécrire les données après mise à jour des valeurs.
  • Une version similaire à la méthode ci-dessus est d’utiliser deux secteurs de FLASH et de passer d’un à l’autre à chaque mise à jour.

Comme indiqué, l’effacement d’un secteur de FLASH est généralement une opération lente. Effacer un secteur de 128koctets d’un STM32F407 prend de 1 à 4 secondes (selon la tension d’alimentation)! Le MCU ne peut pas exécuter d’instructions lors de l’effacement, il faut donc en tenir compte dans la conception du produit (une fonction alternative du microcontrôleur serait de copier les instructions du programme en RAM et de les exécuter depuis cette mémoire pendant que l’effacement de la FLASH s’effectue – les périphériques tels que le DMA fonctionnent aussi indépendamment).

Une bonne compréhension sur la façon dont les FLASH fonctionnent et des paramètres particuliers des mémoires choisies (taille des secteurs, temps d’effacement, etc) permet d’implémenter la bonne technique de gestion.

Pendant une simulation Proteus, il est possible de voir le contenu de la mémoire FLASH et de progresser en pas à pas, ce qui peut vous aider dans le développement et le débogage des projets qui utilise des FLASH.


Copyright Labcenter Electronics Ltd. 2024

Traduction française

Copyright Multipower France 2024

Retour en haut