Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels
Composants nécessaires
- 1 × Arduino Uno
- 1 × Convertisseur tension-fréquence LM331 (Texas Instruments)
- 1 × Régulateur 7808 (8V) ou 7815 (15V pour entrée 10V)
- 1 × Optocoupleur 4N25
- 1 × Transformateur d'isolement (secondaire 9V AC, ex: bloc secteur 9V AC)
- Diodes 1N4001 (×4, redressement)
- Condensateurs : 100nF, 10nF, 1µF, 4.7µF, 220µF (Mylar/électrolytiques)
- Résistances de précision 1% : 100kΩ (×2), 10kΩ, 12kΩ, 6.8kΩ, 3.3kΩ, 330Ω, 270Ω, 220Ω, 47Ω
- 1 × Potentiomètre multi-tours 5kΩ (calibration)
Outils
- Fer à souder
- Arduino IDE
- Bibliothèque
FreqCounter(Martin Nawrath, KHM Lab3)
Pourquoi isoler une entrée analogique ?
Les signaux de capteurs industriels (0-5V, 4-20mA) sont sujets aux bruits : surtensions, foudre, boucles de masse, CEM. Une isolation galvanique complète (alimentation séparée + couplage optique) élimine ces problèmes. Le LM331 convertit la tension d'entrée en fréquence (≈ 1 kHz/V), l'optocoupleur 4N25 transmet la fréquence vers l'Arduino sans lien électrique, et l'Arduino mesure la fréquence avec une haute résolution et une immunité au 50/60 Hz.
Schéma de principe
- Alimentation isolée : Transformateur 9V AC → pont de diodes (4×1N4001) → condensateurs → 7808 → +8V/GND isolés.
- Entrée signal : Jumper W1 ouvert → entrée tension (20mV à 5V) via diviseur R2/R3. W1 fermé → entrée courant 4-20mA (R2//R3 ≈ 250Ω → 1-5V).
- Conversion V/F : LM331 configuré avec R/C pour ~1 kHz/V. Sortie collecteur ouvert → LED de l'optocoupleur 4N25 (via résistance 220Ω).
- Sortie vers Arduino : Collecteur du 4N25 → D5 (T1) avec résistance de pull-up 2.2kΩ vers +5V Arduino. Émetteur → GND Arduino.
Code Arduino (mesure de fréquence)
#include
void setup() {
Serial.begin(9600);
Serial.println("Entree analogique optoisolee");
}
long int frq;
void loop() {
FreqCounter::f_comp = 0;
FreqCounter::start(1000); // porte 1000ms = multiples de 50/60Hz
while (FreqCounter::f_ready == 0); // attente fin comptage
frq = FreqCounter::f_freq;
Serial.println(frq); // fréquence en Hz = tension en mV (si 1kHz/V)
delay(100);
}
Méthodes de mesure : période vs fréquence
- Mesure de période (pulseIn) : rapide (≈ période), mais résolution faible (µs) et sensible au bruit 50Hz.
- Mesure de fréquence (FreqCounter) : utilise Timer1 (comptage fronts montants sur D5) et Timer2 (porte temps 1ms). Porte de 1000ms = moyenne sur 50/60 cycles secteur → excellente immunité au bruit, résolution 1Hz (soit 1mV à 1kHz/V). Précision 5× supérieure à l'ADC 10 bits de l'Arduino.
Calibration
Ajustez le potentiomètre P5k pour obtenir 1000 Hz pour 1V d'entrée (facteur de conversion 1 kHz/V). Vérifiez la linéarité sur la plage 20mV - 5V.
Extension à 10V d'entrée
Remplacez le 7808 par un 7815, utilisez un transformateur 12V AC, et adaptez le diviseur d'entrée.
Référence
Article original (blog) : https://ardupiclab.blogspot.it/
Processus de fabrication
- Alerte Soif Plante Intelligente – Capteur DIY pour une Hydratation Optimale
- Construire un oscilloscope Arduino 20 kHz sur écran Nokia 5110 – Guide DIY facile
- Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
- Horloge à Mots Italienne avec Arduino Nano, NeoPixel, LCD et RTC
- Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques
- Compteur kWh Sigfox fiable avec Arduino MKR Fox 1200
- Moniteur de température Bluetooth avec Arduino Nano
- Serrure à gestes sans contact : Accès sécurisé avec APDS-9960 et Arduino
- Kit Compagnon Arduino Nano – Composants et Outils Essentiels pour l'Électronique DIY