🔬 Guide Pratique : L'Amplificateur à Transimpédance (TIA) pour Capteurs avec Arduino/ESP32
1. Qu'est-ce qu'un Amplificateur à Transimpédance (TIA) ?
Un amplificateur à transimpédance (ou convertisseur courant-tension) est un circuit qui convertit un courant d'entrée ($I_{in}$) en une tension de sortie ($V_{out}$) proportionnelle. Contrairement à un amplificateur de tension classique, son objectif est d'offrir une impédance d'entrée quasi nulle (grâce au concept de "masse virtuelle" de l'amplificateur opérationnel), ce qui est idéal pour capter le courant d'une source sans le perturber.
La formule fondamentale d'un TIA idéal est simple :
Où Rf est la résistance de rétroaction (feedback). Plus Rf est grande, plus le gain (la tension de sortie pour un petit courant) est élevé.
2. Pourquoi le Montage "Passif" Ne Suffit Pas
On pourrait penser qu'il suffit de placer une simple résistance (R) aux bornes d'une photodiode pour appliquer la loi d'Ohm ($V = I \times R$). C'est ce qu'on appelle un convertisseur passif. C'est une mauvaise idée en pratique.
Pour que cela fonctionne, la source de courant devrait avoir une impédance interne infinie et la charge une impédance nulle, ce qui est impossible. De plus, une grande résistance ralentit considérablement la réponse du circuit (à cause de la capacitance parasite de la photodiode), rendant le système inutilisable pour des mesures rapides.
La solution : Utiliser un amplificateur opérationnel (Amp-Op) en configuration active pour créer une "masse virtuelle", annulant les effets de la capacitance et linéarisant la réponse.
3. 🛠️ Projet DIY : Capteur de Lumière Précis avec ESP32/Arduino
Les microcontrôleurs ne lisent pas les tensions négatives. Pour utiliser un TIA avec un Arduino (0-5V) ou un ESP32 (0-3.3V), nous devons utiliser un montage monopolaire avec décalage (bias).
📦 Liste des Composants (BOM) :
- Microcontrôleur : ESP32 ou Arduino Uno/Nano
- Amplificateur Opérationnel : MCP6002 (Rail-to-Rail, idéal pour 3.3V/5V) ou LM358 (classique, mais moins précis près de 0V)
- Capteur : Photodiode (ex: BPW34) ou Phototransistor
- Résistances : 1x Rf (ex: 100kΩ à 1MΩ, selon la sensibilité voulue), 2x 10kΩ (pour le pont diviseur de biais)
- Condensateur (Optionnel mais recommandé) : 10pF à 100pF en parallèle avec Rf pour stabiliser le circuit et éviter les oscillations.
🔌 Guide de Câblage (Configuration Monopolaire) :
- Le Biais (Bias) : Créez un point de référence à VCC/2 (ex: 1.65V pour un ESP32) en reliant deux résistances de 10kΩ entre le 3.3V et la Masse. Reliez ce point à l'entrée non-inverseuse (+) de l'Amp-Op.
- Le Capteur : Reliez la cathode de la photodiode à l'entrée inverseuse (-) de l'Amp-Op, et l'anode au point de biais (VCC/2).
- La Rétroaction : Reliez la résistance Rf entre la sortie de l'Amp-Op et l'entrée inverseuse (-).
- La Lecture : Reliez la sortie de l'Amp-Op à une entrée analogique (ADC) de votre ESP32/Arduino (ex: GPIO 34 pour l'ESP32, qui est "input only" et idéale pour l'ADC).
💻 Code Arduino / ESP32 pour Lire le TIA :
/*
* Lecture d'un Amplificateur à Transimpédance (TIA)
* TechFix Hub - DIY Electronics & Sensors
* Ce code lit la tension de sortie, retire le biais (VCC/2)
* et calcule le courant approximatif de la photodiode.
*/
const int tiaPin = 34; // Broche ADC de l'ESP32 (GPIO 34, 35, 36 ou 39)
// const int tiaPin = A0; // Décommenter pour Arduino Uno
const float vcc = 3.3; // Mettre 5.0 pour Arduino Uno
const float biasVoltage = vcc / 2.0;
const float rf = 100000.0; // Résistance de rétroaction en Ohms (ex: 100kΩ)
void setup() {
Serial.begin(115200);
// Configuration de l'ADC pour plus de précision (ESP32 uniquement)
#ifdef ESP32
analogSetAttenuation(ADC_11db); // Plage 0 - 3.3V
analogSetWidth(ADC_WIDTH_BIT_12); // Résolution 12 bits (0-4095)
#endif
Serial.println("Initialisation du capteur TIA...");
}
void loop() {
// Lire la valeur brute de l'ADC
int rawValue = analogRead(tiaPin);
// Convertir en tension réelle
float voltageOut = (rawValue / 4095.0) * vcc; // Utilisez 1023.0 pour Arduino
// Calculer le courant de la photodiode (I = V / R)
// On soustrait le biais pour obtenir la variation due à la lumière
float deltaVoltage = voltageOut - biasVoltage;
// Le courant est en Ampères. On le convertit en microampères (µA) pour la lisibilité
// Note: Le signe dépend du sens de la photodiode (généralement négatif en configuration inverseur)
float current_uA = (deltaVoltage / rf) * 1000000.0;
Serial.print("ADC: ");
Serial.print(rawValue);
Serial.print(" | Tension: ");
Serial.print(voltageOut, 3);
Serial.print(" V | Courant estimé: ");
Serial.print(abs(current_uA), 2); // abs() pour afficher une valeur positive
Serial.println(" uA");
delay(500);
}
4. ⚠️ Conseils de Dépannage et Bonnes Pratiques
- Le circuit oscille ou est instable : C'est le problème n°1 des TIA. Ajoutez un petit condensateur céramique (10pF à 100pF) en parallèle avec la résistance de rétroaction Rf. Cela compense la capacitance d'entrée de la photodiode.
- Choix de l'Amp-Op : Évitez le LM741. Il est obsolète et ne fonctionne pas bien en monopolaire (il ne peut pas descendre près de 0V). Préférez le MCP6002, TLV2372 ou LM358 pour des projets DIY alimentés en 3.3V ou 5V.
- Bruit de mesure : Utilisez des pistes courtes sur votre plaque d'essai ou, mieux, un petit circuit imprimé (PCB). Les TIA sont très sensibles aux interférences électromagnétiques.
5. Conclusion
L'amplificateur à transimpédance est bien plus qu'un simple montage théorique : c'est la clé pour interfacer des capteurs à courant faible (photodiodes, détecteurs de radiation, capteurs électrochimiques) avec le monde numérique de l'Arduino et de l'ESP32. En maîtrisant le concept de masse virtuelle et en ajoutant un simple biais, vous pouvez créer des instruments de mesure de qualité professionnelle à moindre coût.
Prochaine étape : Consultez notre guide sur le filtrage des signaux de capteurs pour rendre vos lectures encore plus stables !