Circuito de Entrada Analógica Isolada para Arduino
Componentes e Materiais
- Arduino UNO – 1 unidade
- LM331 (Conversor Tensão-Frequência) – 1 unidade
- LM7808 (Regulador 8V) – 1 unidade
- Optoacoplador 4N25 – 1 unidade
- Diodos 1N4001 – 4 unidades (ponte retificadora + proteção)
- Resistores de precisão 1% (100k, 10k, 12k, 6.8k, 3.3k, 330, 270, 47, 220 Ω)
- Potenciómetro multivoltas 5 kΩ (ajuste de ganho)
- Capacitores: 100nF, 10nF, 1µF, 4.7µF, 220µF (Mylar/eletrolíticos)
- Transformador pequeno (isolamento galvânico, ex: 12V+12V / 50mA)
- Jumpers / bornes para seleção tensão/corrente (4–20 mA)
Ferramentas
- Ferro de soldar, placa de ensaio ou PCB
Software
- Arduino IDE
- Biblioteca FreqCounter (Martin Nawrath) – download
Sobre o Projeto
Sinais de sensores industriais (0–5V, 4–20 mA) sofrem com ruído (EMI, surtos, loops de terra). A solução robusta: isolamento galvânico total entre sensor e Arduino, com alimentação isolada para o lado de campo.
Princípio de Funcionamento
- Lado de campo (isolado): Transformador alimenta LM7808 → 8V estáveis. Sinal de entrada (tensão 20mV–5V ou corrente 4–20mA via jumper W1 + resistor 250Ω) entra no LM331 configurado como conversor V/F (ganho ≈ 1 kHz/V ajustado por P1).
- Isolamento: Saída de frequência do LM331 (onda quadrada) aciona LED interno do 4N25. Fototransistor do 4N25 conduz no lado do Arduino.
- Lado Arduino: Coletor do 4N25 → pino D5 (T1/PD5) com pull-up 2.2kΩ a 5V. Arduino mede frequência com Timer1 (biblioteca FreqCounter).
Medição de Frequência vs Período
Duas abordagens:
- Período (
pulseIn()): Mede HIGH+LOW. Rápido, mas resolução baixa (µs) e sensível a ruído 50/60 Hz. - Frequência (FreqCounter + Timer1): Conta pulsos numa janela de tempo (gate). Escolhido gate = 1000 ms (múltiplo de 50/60 Hz → imunidade a ruído de rede). Resolução 5× superior ao Arduino sozinho.
Código Arduino
#include <FreqCounter.h>
void setup() {
Serial.begin(9600);
Serial.println("Entrada analógica optoisolada");
}
long int frq;
void loop() {
FreqCounter::f_comp = 0; // Compensação zero
FreqCounter::start(1000); // Gate 1000 ms
while (FreqCounter::f_ready == 0); // Aguarda fim
frq = FreqCounter::f_freq; // Lê frequência
Serial.println(frq); // Envia via serial
delay(100);
}
Calibração
-
li>Aplique tensão conhecida (ex: 1.000V) na entrada.
- Ajuste potenciómetro P1 até ler ~1000 Hz no monitor serial.
- Verifique linearidade em 0.5V, 2.5V, 5.0V.
- Para 4–20 mA: insira jumper W1 (resistor 250Ω), aplique 4 mA → ~400 Hz, 20 mA → ~2000 Hz.
Esquema Elétrico
Ver secção Schematics: entrada → divisor/ponte → LM331 → 4N25 → Arduino D5. Alimentação isolada via transformador + LM7808. Para entrada 10V, troque LM7808 por LM7815 e ajuste transformador.
Vantagens
- Isolamento galvânico total (até ~2.5 kV).
- Imunidade a ruído comum (common-mode) e diferenças de potencial de terra.
- Medição de frequência robusta (gate 1s = rejeita 50/60 Hz).
- Suporta tensão (mV a V) e corrente (4–20 mA) com jumper.
Processo de manufatura
- Alerta Inteligente de Sede para Plantas – Sensor DIY para Hidratação Ideal
- Construa um Osciloscópio Arduino de 20 kHz em LCD Nokia 5110 – Guia DIY Fácil
- Persianas Inteligentes: Controle Automático de Luz com Arduino e Energia Solar
- Relógio de Palavras em Italiano com Arduino Nano, NeoPixel, LCD e RTC
- Economize Pinos do Arduino: Conecte Teclado 4x3 com Apenas Três Conexões
- Medidor kWh Confiável com Sigfox e Arduino MKR Fox 1200
- Monitor de Temperatura com Bluetooth usando Arduino Nano
- Fechadura por Gestos Sem Toque: Acesso Seguro com APDS-9960 e Arduino
- Companion IC: Relógio, Ohmímetro, Capacímetro e Testador de Diodos com Arduino Nano
- Kit Adaptador USB-MIDI para Arduino Micro/Leonardo – Lista Completa de Peças