Bonjour à tous.

Vous pouvez désormais, si l'envie vous en dit, soutenir SoundPixelLab - Vous retrouverez les informations sur ce lien en dessous
Soutenir SoundPixelLab

Merci à vous !

Les sondes de calibration

Répondre
Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Voici la fonction Scilab qui donne le rapport de résistance du tungstène $W_R(T)$ en fonction de sa température en prenant pour référence 293 K et en tenant compte du rapport de résistivité $W(T) = \frac{\rho(T)}{\rho(293)}$ et du facteur de dilatation qui dépend de $T$.

Le calcul est coupé en deux selon que T <2000 K ou T> 2000 K. Pour la partie >2000 K, la résistivité du tungstène est linéaire en $T$ selon l'étude de Cezairliyan de 1971 et on peut utiliser la loi suivante :
$$
\rho(T) = -14.08 + 0.03515 \times T \quad (10^{-8}\,\Omega\cdot\text{m}).
$$
En dessous de 2000 K, la fonction interpole la résistivité à partir d'une table qui est raccordée à 2000 K sur la loi linéaire. Nota : si la température baisse fortement, la résistivité du tungstène n'est plus linéaire en $T$.

En pratique, c'est uniquement la plage > 2000 K qui nous intéresse pour les lampes QTH. Le rapport de résistivité vaut :
$$
W_R(T) = W(T) \times \beta(T) = \frac{\rho(T)}{\rho(293)} \times \beta(T)
$$
avec $\beta(T)$ l'influence de la dilatation thermique.

Code : Tout sélectionner

// =======================================================
//  RAPPORT DE RÉSISTANCE W(T) = ρ(T) / ρ(293K) x beta(T)
// =======================================================
function W = rapport_W_tungstene(T_K)
//
//  Pour un fil cylindrique de tungstène avec dilatation isotrope, Le rapport de
// RÉSISTANCE du tungstène se déduit du rapport de résistivité W(T) = ρ(T) / ρ(293K)
// par la formule :
//  W_R(T) = W(T) / (1 + α_L×(T-293)), où α_L=4.5×10⁻⁶ K⁻¹.
//  Cette correction de dilatation est <1.5% à 3200K.
//
//  Sources :
//  T ≥ 2000 K : Cezairliyan & McClure (1971, NBS), ±1 %
//  T < 2000 K : table de résistivité du tungstène (données NBS / CRC,
//               normalisées à ρ(293K) = 5.45×10⁻⁸ Ω.m de Cezairliyan)

    // Table basse température (T < 2000 K)
    // Source : NBS/CRC, normalisé sur ρ(293K)=5.45×10⁻⁸ Ω.m
    T_bas   = [ 293,  400,  500,  600,  700,  800,  900, 1000, ...
               1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000];
    rho_bas = [5.45, 7.73, 10.10, 12.57, 15.10, 17.70, 20.35, 23.02, ...
               25.73, 28.44, 31.15, 33.88, 36.62, 39.35, 42.08, 44.82, 47.58, 56.22];
    // NB : la valeur à 2000K est la valeur de raccordement Cezairliyan.

    n  = length(T_K);
    W  = zeros(n, 1);
    alpha_L = 4.5e-6;    // coeff. de dilatation linéaire du W (K⁻¹)

    for k = 1:n
        T  = max(min(T_K(k), 3600), 293);

        if T >= 2000 then
            // Formule linéaire Cezairliyan (NBS 1971), ±1 %
            // ρ(T) = -14.08 + 0.03515×T  (unités : 10⁻⁸ Ω.m)
            rho_T = -14.08 + 0.03515 * T;
        else
            // Interpolation linéaire dans la table basse température
            i1 = find(T_bas <= T, -1);
            if i1 >= length(T_bas) then i1 = length(T_bas)-1; end
            i2 = i1 + 1;
            f  = (T - T_bas(i1)) / (T_bas(i2) - T_bas(i1));
            rho_T = (1-f)*rho_bas(i1) + f*rho_bas(i2);
        end

        // Rapport de RÉSISTIVITÉ ρ(T)/ρ(293K)
        W_rho = rho_T / 5.45;

        // Correction de dilatation thermique pour le rapport de RÉSISTANCE
        // R(T)/R(T0) = [ρ(T)/ρ(T0)] / (1 + α_L×(T-293))
        W(k) = W_rho / (1 + alpha_L * (T - 293));
    end
endfunction
 

POSTREACT(ions) SUMMARY

Like (1)
Sensunda
Modifié en dernier par Emmanuel Piat le 19 févr. 2026, 14:28, modifié 4 fois.
Avatar du membre
Dagda
Fondateur
Messages : 1832
Enregistré le : 08 mars 2024, 17:16
Localisation : Est parisien (94)
Contact :

Re: Les sondes de calibration

Message par Dagda »

Quand je vois vos interventions Emmanuel, je me dis que j'ai bien fait de mettre le module math sur le forum :smile

D.
 

POSTREACT(ions) SUMMARY

https://www.youtube.com/@SoundPixelLab
La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toutes réflexions pour ne pas offenser les imbéciles.
Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Ouais c'est bien utile et facile pour moi car j'ai écris mon 1er rapport en LaTeX en 1992 (même codage pour les math) ... Tout ça pour dire que les codes de ce module de math ne datent pas d'hier ...

Je viens de faire pas mal de corrections sur mon avant dernier post pour coller au dernier (il y avait un flou artistique entre rapport de résistivité et rapport de résistance (la résistance dépend de la géométrie du matériaux et donc est affectée par sa dilatation thermique). Maintenant, c'est ok et conforme à la fonction Scilab).
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Cherchons maintenant à déterminer la correction $C(\lambda)$ qu'il faut appliquer au spectre brut mesuré pour corriger toute la chaine de mesure (lentille de collimation + fibre + spectro). Pour cela, il faut utiliser le banc de mesure avec sa lampe QTH (voir mise en oeuvre détaillée du banc plus tard ...).

1. Avec une lampe chaude stabilisée en température, il faut déterminer la température $T_{fil}$ du filament, mesurer sa température de couleur corrélée $T_{CCT}$ avec un colorimètre et mesurer son spectre brut $S_L$. Les valeurs de $T_{fil}$, $T_{CCT}$ et $S_L$ doivent être obtenues dans un temps aussi court que possible pour que la température du filament soit considérée comme constante. Le temps d'intégration du spectro aura été réglé pour que le signal maximal de $S_L$ atteigne environ 80 % de la plage maximale du spectro (c'est la zone de linéarité des CCD du spectro. Au-delà de 80% la réponse se tasse).

2. Avec le même temps d'intégration, il faut mesurer le spectre du noir $S_{noir}(\lambda)$ en couvrant entièrement la lentille de collimation. Aucune lumière ne doit pénétrer dans la fibre. Ce spectre est un bruit qui correspond au dark current émis par les cellules CCD.

3. On calcule ensuite le spectre non corrigé $\bar S_L(\lambda)$ normalisé à 560 nm :
$$\bar S_{L,n}(\lambda)=\frac{S_L(\lambda)-S_{noir}(\lambda)}{S_L(560)-S_{noir}(560)}.
$$
4. On détermine enfin le modèle $L_n(\lambda,T_{fil})$ de la lampe qui est également normalisé à 560 nm et qui a le même $T_{fil}$ et $T_{CCT}$ que la lampe. Il faut que le spectre non corrigé $\bar S_{L,n}(\lambda)$ multiplié par la correction $C(\lambda)$ soit égal au modèle $L_n(\lambda,T_{fil})$ :
$$
\bar S_{L,n}(\lambda) \times C(\lambda) = L_n(\lambda,T_{fil}).
$$
Le facteur de correction $C(\lambda)$ est donc :
$$
C(\lambda) = \frac{L_n(\lambda, T_{fil})}{\bar S_{L,n}(\lambda)}. \qquad (3)
$$
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 20 févr. 2026, 18:47, modifié 4 fois.
Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

La correction $C(\lambda)$ peut être utilisée pour corriger le spectre brut $S_{brut}(\lambda)$ de n'importe quelle nouvelle source d'irradiance normalisée à 560 nm. Le spectre normalisé et corrigé grâce le vecteur de correction $C(\lambda)$ est :
$$
S_n(\lambda)=\frac{S_{brut}(\lambda)-S'_{noir}(\lambda)}{S_{brut}(560)-S'_{noir}(560)} × C(\lambda). \qquad (4)
$$
La correction $C(\lambda)$ est donc un gain variable pour chaque $\lambda$. Si ce gain vaut 1, l'intensité spectrale n'est pas modifiée.

Pour diminuer le bruit induit par le spectro (ce bruit sera amplifié par $C(\lambda)$ à la longueur d'onde $\lambda$ si $C(\lambda) > 1$), on peut en plus lisser le spectre $S_n(\lambda)$ avec un filtre de Savitzky-Golay qui utilise une fenêtre mobile. Si on veut éviter d'avoir recours à un lissage spectral fenêtré qui va élargir les pics spectraux, on a aussi la possibilité de moyenner temporellement plusieurs spectres, ce qui diminue l'amplitude du bruit d'un ratio $\sqrt{n}$ si on moyenne $n$ spectres.

En dessous de 400 nm (proche UV), la précision de $S_n(\lambda)$ sera probablement médiocre du fait que la lampe QTH émet très peu d'énergie dans cette zone pendant la calibration et que la sensibilité des cellules CDD s'effondre dans le proche UV.
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 20 févr. 2026, 18:10, modifié 1 fois.
Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

On est amené à changer le temps d'intégration lors de la mesure d'un spectre pour :
  • rester en deça de 80% de la plage de mesure si l'intensité spectrale est trop forte (diminution du temps d'intégration),
  • augmenter la sensibilité du spectro si l'intensité spectrale est faible (augmentation du temps d'intégration).
Il faut donc que la correction $C(\lambda)$ ne soit pas influencée par le temps d'intégration. Si on double le temps d'exposition des cellules CCD, on collecte deux fois plus de photons, et le signal brut mesuré par le spectro double. Cependant, comme on travaille systématiquement sur des spectres normalisés à 1 à la longueur d'onde 560 nm, le temps d'intégration ne change absolument rien aux formules (3) et (4).

Attention : le spectre brut de noir $S_{noir}(\lambda)$ dépend linéairement du temps d'intégration. Si on fait la calibration avec un noir à 100 ms et qu'on mesure un échantillon à 1000 ms, on ne peut pas utiliser le noir de 100 ms dans (4) : il faut refaire un "dark" dès que le temps d'intégration change afin que la soustraction du dark se fasse bien. C'est la raison pour laquelle j'ai mis un $S'_{noir}(\lambda)$ dans la formule (4).

Nota : cette indépendance au temps d'intégration sera évidemment mise en défaut si on ne normalise pas $\bar S_{L,n}(\lambda)$ et $S_n(\lambda)$. En cas d'absence de normalisation, on aura :
$$
\bar S_{cal}(\lambda)=S_L(\lambda)-S_{noir}(\lambda),
$$
$$
C(\lambda) = \frac{L(\lambda, T_{fil})}{\bar S_{cal}(\lambda)},
$$
où $L(\lambda, T_{fil})$ n'est plus normalisé. Si on note $t_{cal}$ et $t_{mes}$ les temps d'intégration utilisés lors de la mesure de $S_L(\lambda)$ et $S_{brut}(\lambda)$, on peut définir un spectre corrigé par :
$$
S(\lambda)=(S_{brut}(\lambda)-S'_{noir}(\lambda)) \times \frac{t_{cal}}{t_{mes}} × C(\lambda).
$$
Si $t_{mes} = 2 \times t_{cal}$, le ratio $\frac{t_{cal}}{t_{mes}}$ vaut $\frac{1}{2}$, ce qui amène un facteur de normalisation temporel de l'amplitude spectrale (par rapport au temps d'intégration utilisé pour la mesure du banc qui a conduit à $C(\lambda)$). Si on divise maintenant les spectres bruts mesurés (exprimés en counts) par le temps d'intégration, on obtient cette fois-ci des spectres normalisés par rapport au temps d'intégration qui sont exprimés en "counts par seconde". On peut alors définir une nouvelle correction $C_{int}(\lambda)$ indépendante du temps d'intégration $t_{mes}$ en décomposant la relation précédente de la manière suivante :
$$
S(\lambda)=\underset{\text{spectre brut en counts/sec}}{\underbrace{\frac{(S_{brut}(\lambda)-S'_{noir}(\lambda))}{t_{mes}}}} \times C_{int}(\lambda)
$$
$$
C_{int}(\lambda) = t_{cal} × C(\lambda)=\frac{L(\lambda, T_{fil})}{
\underset{\text{spectre lampe en counts/sec}}{\underbrace{(S_L(\lambda)-S_{noir}(\lambda)) / t_{cal}}}}.
$$
A suivre.
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Dans mon post précédent, j'ai évoqué pour la première fois la notion de "count". En général, dans les softs qui gèrent les spectros, on peut toujours afficher l'intensité spectrale en valeur informatique entière (par exemple 0 à 65535 si le spectro est équipé d'un ADC 16 bits) mais aussi en counts. Idem si on fait l'exportation du spectre brut dans un fichier texte. Ces unités sont propres au spectro et ne nécessitent aucun raccordement au SI.

Un count est relatif à la valeur numérique délivrée par l'ADC pour un pixel donné de la barrette CCD. Il représente une charge électrique accumulée dans le puits de la cellule CCD, convertie en tension puis numérisée. La relation entre photons et counts comporte trois étapes successives, chacune avec un facteur d'échelle et une source de bruit aléatoire ou de perturbation déterministe.

Étape 1 : c'est la conversion photon → photoélectron. Un photon incident sur le pixel a une probabilité $\eta(\lambda)$ d'arracher un photoélectron par effet photoélectrique. C'est l'efficacité quantique du détecteur. Pour un capteur en techno Silicium, $\eta(\lambda)$ vaut environ 0.20 à 400 nm, 0.70–0.85 vers 600–700 nm, et rechute vers 0.10–0.20 à 900 nm. La plupart des photons incidents ne produisent donc pas de photoélectron — ils sont simplement absorbés sans effet utile ou bien réfléchis. Ces valeurs expliquent pourquoi le spectro sera beaucoup moins sensible aux 2 extrémités du visible (proche UV et proche IR). La réponse d'un spectro avec un détecteur CCD chute toujours au 2 bouts de sa bande passante en longueurs d'onde.

Étape 2 : c'est l'accumulation de charges. Les photoélectrons s'accumulent dans le puits capacitif de la cellule CCD pendant le temps d'intégration $t$. Le puits d'une cellule CCD a une capacité maximale (full well capacity) typiquement de 15 000 à 150 000 électrons selon le capteur CCD. Au-delà, il sature et déborde, c'est l'"ébouissement" de la cellule CCD (blooming).

Étape 3 : c'est la conversion électron → count. La lecture de la charge électrique capturée par le puit capacitif est faite par un circuit électronique qui amplifie et numérise la charge. Le gain $g$ de l'ADC est exprimé en électrons/counts. Un ADC 16 bits avec un puits de 65 536 électrons donnerait g = 1 électron/count. En pratique $g$ est souvent de l'ordre de 2 à 10 électrons/count. La valeur de $g$ (ou son inverse) est donnée dans les caractéristiques du spectro.

Si on appelle $N(\lambda)$ le nombre de counts associé à un pixel, on a au final :
$$
N(\lambda) = \frac{\eta(\lambda) \cdot \Phi_\text{ph}(\lambda) \cdot t}{g} + \frac{d(\lambda,T) \cdot t}{g} + \frac{r(\lambda)}{g} + \frac{\epsilon(\lambda,t)}{g}
$$
où :
  • $\Phi_\text{ph}$ est le flux de photons incidents sur le pixel (photons/s).
  • $d(\lambda,T)$ est le débit exprimé en électrons/s qui est engendré par le dark current. Ce débit dépend de la température et de la longueur d'onde. Pour stabiliser sa valeur, il est important que $T$ n'évolue pas. L'influence du dark current dans $N$ croit linéairement avec le temps d'intégration mais reste constante si le temps d'intégration $t$ ne change pas (à condition que la température n'évolue pas).
  • $r(\lambda)$ s'appelle le bruit de lecture. Il correspond à une charge parasite qui perturbe la lecture du puits et qui va générer un offset permanent dans $N$. Cet offset peut être différent pour chaque pixel et est indépendant de $t$, c'est donc une constante qui ne dépend que de $\lambda$. Le bruit de lecture est fixe en électrons, donc d'autant plus négligeable que $t$ est long. Si le bruit de lecture vaut $r$ électrons (typiquement 3 à 50 e⁻ selon le capteur), il contribue $r(\lambda)/g$ counts par pixel indépendamment de $t$. Pour un signal de 50 000 counts avec $g = 5$ e⁻/counts, le signal représente 250 000 e⁻, et un bruit de lecture de 10 e⁻ est totalement négligeable. Mais à faible signal, ce terme peut devenir significatif.
  • $\epsilon(\lambda,t)$ est aléatoire et correspond au bruit de photons (shot noise). Il tire son origine dans la nature particulaire des photons et peut être modélisé par un processus de poisson qui tend vers une loi gaussienne lorsqu'il implique un grand nombre de photons. Il s'exprime en nombre d'électrons après l'étape de conversion en photoélectrons. Sa nature aléatoire rend sa valeur variable et imprédictible, donc non compensable. Si on l'exprime en counts en le divisant par $g$, son écart-type vaut $\sqrt{\eta(\lambda) \cdot \Phi_{ph}(\lambda) \cdot t} / g$. Ce bruit augmente donc de manière non-linéaire avec le flux de photons incidents et le temps d'intégration $t$.
L'influence de $d(\lambda,T)$ et de $r(\lambda)$ dans $N(\lambda)$ est mesurable pour un temps d'intégration $t$ donné lorsque $\Phi_\text{ph}(\lambda) = 0$. L'absence de photons permet également du supprimer le terme $\epsilon(\lambda,t)$. C'est cette propriété qui est exploitée lorsqu'on fait une mesure du "dark" et c'est uniquement l'influence de ces deux termes qu'on compense lorsqu'on soustrait $S_{noir}(\lambda)$ pour chaque pixel.
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 20 févr. 2026, 22:55, modifié 1 fois.
Pio2001
130 dB
Messages : 584
Enregistré le : 18 mars 2024, 00:29

Re: Les sondes de calibration

Message par Pio2001 »

Emmanuel Piat a écrit : 20 févr. 2026, 15:19$$
S(\lambda)=\underset{\text{spectre brut en counts/sec}}{\underbrace{\frac{(S_{brut}(\lambda)-S'_{noir}(\lambda))}{t_{mes}}}} \times C_{int}(\lambda)
$$
Est-ce que \( S(\lambda) \) peut être négatif ? Il ne faudrait pas perdre des données dans les calculs intermédiaires en se limitant aux valeurs positives.
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Oui car il reste tjrs un peu de bruit dans $S'_{noir}(\lambda)$. Je n'ai pas évoqué toutes les sources de bruits ds ma description précédente. Donc lorsqu'on fait $\Phi_\text{ph}(\lambda) = 0$ pour la mesure du noir, il reste un peu de bruit sur le spectre mesuré. En pratique, on l'atténue en moyennant 5 à 10 spectres $S'_{noir}(\lambda)$ pour avoir la mesure du dark. On pourrait aussi essayer avec un filtre de Savitzky Golay. Comme il restera toujours un peu de bruit dans $S'_{noir}(\lambda)$, la soustraction $S_{brut}(\lambda)-S'_{noir}(\lambda)$ peut engendrer un (petit) terme négatif. Comme ça n'a pas de sens physique (un spectre est tjrs dérivé d'une puissance ou d'une énergie qui sont des grandeurs positives), on remplace ensuite tous les termes négatifs par zéro.

Nota : si on veut faire des stats sur les bruits, on garde les termes négatifs sinon on crée des biais de calcul. L'important, c'est de savoir ce qu'on veut faire avec le spectre. Si par exemple, on veut calculer des coordonnées X,Y,Z, ont peut virer les termes négatifs ... AMHA, tant que le bruit reste raisonnable, l'impact de tout ça est négligeable. C'est pourquoi il est important de visualiser le spectre et le bruit spectral. Si on voit que le bruit commence à dominer à certaines fréquences parce que le signal est faible, il faut commencer à se poser des questions sur ce qu'on calcule ensuite ...
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 20 févr. 2026, 23:36, modifié 1 fois.
Emmanuel Piat
34 dB
Messages : 96
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

En fait dans le bruit de lecture $r(\lambda)$ il y a une composante fixe constante (différente pour chaque pixel) et une composante aléatoire de nature gaussienne (identique pour tous les pixels). Je vais éditer mon post précédent pour le préciser.
 

POSTREACT(ions) SUMMARY

Répondre