Introduction aux radios logicielles avec GNU Radio/Hystérésis

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Le phénomène d'hystérésis est généralement introduit, en électronique, sur l'exemple de l'amplificateur opérationnel ; il existe des composants intégrés réalisant cette fonction. La méthode de mise en place d'un cycle d'hystérésis est très classique et mérite le détour avec GNU Radio.

Comparateur à hystérésis (ou trigger de Schmitt) à amplificateur opérationnel[modifier | modifier le wikicode]

Le montage du comparateur à hystérésis est présenté en illustration. Le signal d'entrée est affecté à l'entrée inverseuse, tandis que la rétroaction se fait sur la borne non-inverseuse, provoquant l'instabilité du montage dont la sortie oscillera sur les deux valeurs et .

Circuit du comparateur à hystérésis.

L'application du théorème de Millman[1] à la borne non-inverseuse permet d'écrire  ; on aboutit alors à l'entrée différentielle .

Le montage étant saturé, on en déduit la relation entrée-sortie : . La sortie est donc commandée par deux seuils, à savoir .

Le comparateur à hystérésis conserve ainsi l'état de sa sortie dans un intervalle de valeurs d'entrées ; si l'on choisit cet intervalle convenablement, les éventuels parasites sont ignorés. Le comparateur à hystérésis réalise une fonction mémoire.

Utilisation du bloc Threshold[modifier | modifier le wikicode]

Le bloc threshold (de la catégorie Level Controllers) est un bloc à hystérésis. Il sera au centre de notre exemple.

Documentation du bloc Threshold
link={{{link}}}

Implémente un comparateur à hystérésis paramétrable. La sortie vaut 1 lorsque l'entrée est au-dessus de la valeur supérieure et 0 lorsque l'entrée est en-dessous de la valeur inférieure.

  • Low : valeur de basculement inférieure.
  • High : valeur de basculement supérieure.
  • Initial State : état initial (1 ou 0).


Visualisation du cycle d'hystérésis dans GRC[modifier | modifier le wikicode]

Vérifions que le bloc Threshold remplisse bien sa mission : soumettons-le à une entrée sinusoïdale et visualisons le cycle d'hystérésis. Pour cela, le bloc Scope Sink doit avoir deux entrées (correspondant aux différents channels d'un oscilloscope). On paramètre ce nombre dans les propriétés du bloc (attribut Num Inputs). Dans les options de la fenêtre de visualisation, on se place en mode XY afin d'avoir la représentation du signal d'un canal en fonction de l'autre.

GRC - Cycle d'hystérésis.png GRC - Résultat cycle d'hystérésis.png

Application au dé-bruitage d'un signal[modifier | modifier le wikicode]

Nous allons utiliser le comparateur à hystérésis pour dé-bruiter un signal. Commençons par générer le signal à traiter. Nous prenons un bloc Signal Source, réglé sur la forme de carrés (Square). Pour le bruiter artificiellement, on rajoute une source de bruit à l'aide du bloc Noise Source (catégorie Waveform Generators) ; ce bruit est ensuite sommé (bloc Add) avec le signal.

Le signal bruité ainsi obtenu est dirigé vers un Scope Sink. D'autre part, on l'envoie vers un bloc Threshold. Deux chemins doivent donc se séparer en sortie du bloc Add. Cela ne pose pas de problèmes à GRC : il suffit de procéder comme d'habitude pour tracer les liens.

Enfin, on envoie le signal traité par le comparateur vers le Scope Sink, auquel on a attribué deux entrées.

Un throttle est ajouté en sortie de l'additionneur, seul endroit où le logigramme se réduit à un seul flux. Il est important de noter que si le throttle n'est appliqué qu'à un seul des flux, le rendu sera faussé par une « différence de vitesse » entre les deux.

GRC - Exemple débruitage.png GRC - Résultat exemple débruitage.png

Le rendu est éloquent : le signal final (ici sur le canal 2) est un signal rectangulaire propre. Nous avons fait afficher les valeurs du signal bruité en points en choisissant l'option Dot Med.

Notes[modifier | modifier le wikicode]

  1. Ou de la loi des nœuds, interprétée en termes de potentiels.