cours4.0/cours/SIN/02-signaux.md

140 lines
No EOL
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Les signaux
subject: Cours
kernelspec:
name: python3
display_name: Python 3
---
# Définition
:::{prf:definition} Signal
:nonumber: true
Phénomène ou grandeur physique variables dans le temps, donnant une information
sur létat du système qui les produit et que peut détecter un capteur.
[Dictionnaire de lAcadémie française, 9e édition](https://dictionnaire-academie.fr/article/A9S1603)
:::
En d'autres termes, un signal est une grandeur physique (tension, courant,
pression, etc.) variable qui transporte une information.
Les flux de la chaîne d'information sont des signaux. On retrouve généralement
en sortie du bloc _Acquérir_ un signal électrique.
# Les différents types de signaux
## Les signaux logiques
Un signal logique ne peut prendre que deux valeurs : un niveau **haut** ("High")
et un niveau **bas** ("Low").
````{figure}
:label: fig:sig-logique
```{code-cell} python
:tags: [remove-input]
import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np
rng = np.random.default_rng(25)
n = 16
t = np.arange(n+1)
s = rng.choice([0, 1], n)
fig, ax = plt.subplots()
ax.stairs(s, t, lw=3, baseline=None)
ax.set(
xlim=(0, n),
ylim=(-.5, 1.5),
xlabel="Temps (s)",
ylabel="Signal logique",
)
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
```
Exemple de signal logique
````
Le signal logique en @fig:sig-logique est par exemple à l'état haut entre 2 s et 3 s,
et à l'état bas entre 3 s et 6 s.
Lorsque le signal passe de l'état bas à l'état haut (comme à 2 s),
on parle de **front montant**.
Dans le cas contraire (comme à 3 s), on parle de **front descendant**.
## Les signaux analogiques
Un signal analogique est un signal qui peut prendre un ensemble continu de valeurs.
Un exemple de signal analogique est donné en @fig:sig-analogique.
````{figure}
:label: fig:sig-analogique
```{code-cell} python
:tags: [remove-input]
import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np
from scipy.interpolate import CubicSpline
from scipy.stats import qmc
rng = np.random.default_rng(25)
n = 20
t_max = 16
t_base = np.linspace(0, t_max, n)
lhs = (qmc.LatinHypercube(d=n-2, rng=rng).random(1)[0] - .5) * t_max/n
t = t_base + np.concatenate(([0], lhs, [0]))
t = t_base
s = 5 * rng.random(n)
t_interp = np.linspace(0, t_max, 1024)
s_interp = np.clip(CubicSpline(t, s)(t_interp), 0, 5)
fig, ax = plt.subplots()
ax.plot(t_interp, s_interp, lw=3)
ax.set(
xlim=(0, t_max),
ylim=(-.5, 5.5),
xlabel="Temps (s)",
ylabel="Signal analogique",
)
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
```
Exemple de signal analogique
````
## Les signaux numériques
Un signal numérique est un signal qui peut prendre un ensemble discret de valeur,
c'est-à-dire un ensemble précis de valeurs distinctes (généralement des nombres entiers).
Un exemple de signal analogique est donné en @fig:sig-numerique.
````{figure}
:label: fig:sig-numerique
```{code-cell} python
:tags: [remove-input]
import matplotlib.pyplot as plt
from matplotlib import ticker
import numpy as np
rng = np.random.default_rng(25)
n = 16
t = np.arange(n+1)
s = rng.integers(0, 16, n)
fig, ax = plt.subplots()
ax.stairs(s, t, lw=3, baseline=None)
ax.set(
xlim=(0, n),
ylim=(-.5, 16.5),
xlabel="Temps (s)",
ylabel="Signal numérique",
)
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
```
Exemple de signal numérique
````