Voltar

Eletrônica analógica no navegador: sete circuitos que você pode executar e medir

A fonte de 5 V no Velxio: dois geradores de sinal como transformador com derivação central, dois diodos 1N4007, um capacitor de reservatório e um regulador 7805, com o osciloscópio mostrando a entrada de 12 V CA e a tensão retificada

A maioria dos tutoriais de Arduino vai direto para o código. Mas as peças ao redor do microcontrolador são analógicas: o resistor que mantém um LED vivo, o divisor que transforma um sensor em tensão, o transistor que aciona um motor, o regulador que produz 5 V a partir de um adaptador de parede. Quando uma dessas peças está errada, nenhuma quantidade de código conserta.

O Velxio simula essa metade também. Ele executa o ngspice, o simulador de circuitos SPICE de código aberto, compilado para WebAssembly, então resistores, capacitores, diodos, transistores, amp-ops e reguladores se comportam como suas contrapartes reais no seu navegador. Você pode medi-los com um voltímetro, um amperímetro e um osciloscópio, e alterar qualquer valor enquanto o circuito roda.

Este artigo percorre sete projetos. Os cinco primeiros não têm microcontrolador nenhum, apenas componentes. Os dois últimos misturam circuitos analógicos com um Arduino e um ESP32. Todo projeto está na galeria de exemplos, e todo número abaixo foi lido do simulador e conferido com a fórmula que o explica.

Antes de começar: os três instrumentos

Uma coisa a saber: para circuitos com fontes CA, o Velxio resolve uma janela curta de tempo a partir do momento em que a energia é ligada (alguns ciclos do sinal) e mostra o traço do osciloscópio dessa janela. Ele repete a resolução conforme você muda as coisas, então a imagem fica atualizada, mas não é uma gravação contínua.

1. Um LED e um resistor: a lei de Ohm

Uma bateria de 9 V, um amperímetro marcando 15,18 mA, um resistor de 470 ohms com um voltímetro em paralelo marcando 7,136 V, e um LED vermelho aceso

O primeiro circuito que todo iniciante monta, e o que mais costuma ser montado errado: um LED conectado direto a uma bateria queima, porque nada limita sua corrente. O resistor em série faz esse trabalho.

Os medidores contam a história toda:

Essa é a fórmula para escolher o resistor: R = (Valimentação − VLED) / I. Para 15 mA a partir de uma bateria de 9 V: (9 − 1,8) / 0,015 = 480 Ω, então 470 Ω é o valor comercial mais próximo.

Experimente: clique com o botão direito no resistor e mude para 1 kΩ. A corrente cai para 7,2 mA e o LED escurece, enquanto a tensão sobre ele quase não muda (1,81 V). Um LED mantém sua tensão quase constante e deixa o resistor definir a corrente.

Abra o circuito do LED e da lei de Ohm no Velxio

2. Uma fonte de 5 V: retificador, capacitor e regulador

A clássica fonte linear, a que existe dentro de todo adaptador de parede antigo, em quatro estágios:

  1. Transformador. Ele converte a CA da rede em uma tensão CA mais baixa e segura. Aqui é um secundário 12-0-12 V com derivação central, desenhado como dois geradores de sinal em oposição de fase (12 V de pico cada, 50 Hz).
  2. Retificador. Dois diodos 1N4007, um para cada metade do secundário. Cada um conduz em seu próprio semiciclo, então a saída recebe um pulso positivo a cada 10 ms: retificação de onda completa.
  3. Capacitor de reservatório. O capacitor de 220 µF se carrega em cada pico e alimenta a carga no intervalo. A tensão que ele mantém não é plana: ela cai entre os picos. Essa queda é o ripple.
  4. Regulador. O 7805 pega essa tensão oscilante e mantém sua saída em exatamente 5 V, desde que sua entrada fique pelo menos cerca de 2 V acima da saída.

A imagem do osciloscópio no topo deste artigo mostra os 12 V CA do transformador e a tensão retificada sobre o capacitor. O capacitor oscila entre 10,1 V e 11,8 V, cerca de 1,7 V de ripple com uma carga de 50 mA, e o voltímetro na saída marca 5,000 V estáveis.

A estimativa rápida para o ripple é ΔV ≈ I / (2·f·C): 0,05 A / (2 × 50 Hz × 220 µF) = 2,3 V. Essa fórmula assume que o capacitor alimenta a carga durante todo o semiciclo; na realidade os diodos o recarregam um pouco antes disso, então os 1,7 V medidos são menores.

Experimente: clique com o botão direito no capacitor e mude para 47 µF. O ripple cresce para 6 V, os vales caem para 5,9 V, abaixo do que o 7805 precisa, e sua saída mergulha para 3,9 V a cada ciclo. É por isso que as fontes usam capacitores grandes.

Abra a fonte de 5 V no Velxio

3. Um abajur noturno com LDR e dois transistores

Abajur noturno no escuro: o módulo sensor de luz, os transistores Q1 e Q2 e um LED amarelo aceso

Um abajur noturno automático, sem microcontrolador e sem código. Um resistor dependente de luz (LDR) mede a luz, e dois transistores acendem o LED quando escurece.

O módulo sensor de luz é um divisor de tensão: o LDR em cima e um resistor de 10 kΩ embaixo. Na luz do dia a resistência do LDR é baixa e a saída do módulo (AO) é alta; no escuro ela sobe para centenas de kΩ e AO cai em direção a 0 V.

Por que dois transistores? Porque um só faria o contrário: acenderia o LED quando estivesse claro. O primeiro estágio inverte o sinal.

Na simulação, a 20 lux (um ambiente com pouca luz) AO fica em 0,50 V, Q1 está desligado e o LED conduz 13 mA. A 30 lux AO fica em 0,67 V, Q1 liga e o LED apaga. Clique com o botão direito no sensor de luz e altere Illumination (lux) nessa faixa para alternar:

O mesmo circuito na luz do dia: o LED amarelo está apagado

Abra o abajur noturno no Velxio

4. Um amplificador a transistor: o estágio emissor-comum

Amplificador emissor-comum com o osciloscópio: o sinal da base (verde) é pequeno, o sinal do coletor (vermelho) é maior e invertido

É assim que um sinal pequeno se torna um sinal grande: o amplificador emissor-comum, o bloco de construção de todo amplificador de áudio discreto. Uma senoide de 1 kHz com 0,4 V de pico a pico entra por um capacitor de acoplamento e sai do coletor cerca de quatro vezes e meia maior, e invertida. (A fonte de 9 V é o símbolo de fonte de bancada no canto superior esquerdo; o gerador de sinal está abaixo dele.)

Duas coisas fazem isso funcionar.

Polarização. Um transistor só amplifica quando está parcialmente ligado. O divisor de 47 kΩ / 10 kΩ fixa a base em 1,54 V. O emissor fica uma queda de diodo abaixo, 0,89 V, então 0,89 mA fluem pelo resistor de emissor de 1 kΩ. A mesma corrente pelo resistor de coletor de 4,7 kΩ provoca uma queda de 4,2 V, deixando o coletor em 4,83 V, perto do meio da alimentação, com espaço para oscilar nos dois sentidos.

Ganho. Uma variação na base aparece quase inalterada no emissor, então ela muda a corrente em ΔV / Re. Essa variação de corrente flui por Rc e move o coletor em ΔV × Rc / Re, na direção oposta. Assim, o ganho é −Rc/Re = −4,7. O simulador mede 4,54: o transistor adiciona uma pequena resistência interna de emissor de cerca de 26 mV / Ie ≈ 29 Ω, e 4700 / 1029 = 4,57.

No osciloscópio, a base (verde) varia 0,4 V em torno de 1,5 V e o coletor (vermelho) varia 1,8 V em torno de 4,8 V, com seus picos onde a base tem seus vales.

Experimente: clique com o botão direito no gerador de sinal e aumente sua amplitude para 1 V. O coletor precisaria oscilar 9 V, mais do que a alimentação permite, então o topo da onda se achata contra 9 V e a base contra a saturação: ceifamento, o som de um amplificador sobrecarregado.

Abra o amplificador emissor-comum no Velxio

5. Um termostato com comparador de amp-op

Termostato acima do seu ponto de ajuste: a saída do LM358 está alta e o LED vermelho, representando uma ventoinha, está aceso

Um termostato que liga uma ventoinha quando esquenta, usando um único amp-op LM358 e nenhum código.

O sensor. A resistência do termistor NTC cai conforme ele esquenta (10 kΩ a 25 °C, cerca de 7,4 kΩ a 32 °C). O módulo o coloca sob um resistor fixo de 10 kΩ, então sua saída cai com a temperatura: 2,50 V a 25 °C, 2,12 V a 32 °C.

O ponto de ajuste. O potenciômetro é um segundo divisor. Seu cursor fica em 2,336 V, a tensão que o termistor fornece a 28 °C. O voltímetro mostra isso.

O comparador. Um amp-op sem realimentação tem tanto ganho que sua saída dispara para um dos trilhos dependendo de qual entrada é maior. O ponto de ajuste vai para a entrada + e o termistor para a entrada −: abaixo de 28 °C a tensão do termistor é maior e a saída fica em 0 V; acima de 28 °C ela é menor e a saída salta para cerca de 3,7 V, acendendo o LED. A 27 °C o LED está apagado, a 29 °C está aceso.

Por que 3,7 V e não 5 V? O LM358 não consegue levar sua saída até a alimentação positiva; ele para cerca de 1,3 V antes. O projeto 6 esbarra no mesmo limite.

Um termostato real adiciona histerese, para não ficar ligando e desligando enquanto a temperatura oscila no limiar. O projeto 7 faz isso em código.

Experimente: clique com o botão direito no termistor e mude sua temperatura, ou clique com o botão direito no potenciômetro e mude sua posição (0 a 1023) para mover o ponto de ajuste.

Abra o termostato com amp-op no Velxio

6. Arduino: transformando PWM em uma tensão analógica real

Um Arduino Uno com o pino 9 alimentando um filtro RC e um seguidor de tensão LM358 de volta para A0, e o monitor serial comparando as tensões esperada e medida

Um Arduino Uno não tem DAC: analogWrite() não gera uma tensão, ele gera PWM, uma onda quadrada de 490 Hz cujo ciclo de trabalho define a média. Um LED ou um motor não se importam, mas muitos circuitos precisam de uma tensão real e estável. Um filtro analógico produz uma.

PWM 0    expected 0.00 V  measured 0.02 V
PWM 64   expected 1.25 V  measured 1.26 V
PWM 128  expected 2.51 V  measured 2.51 V
PWM 192  expected 3.76 V  measured 3.77 V
PWM 255  expected 5.00 V  measured 4.03 V

Até 192 o DAC é preciso dentro de 10 mV. Em 255 ele para em 4,03 V: o filtro chega a 5 V, mas o LM358, alimentado com 5 V, não consegue levar sua saída tão alto. A solução é um amp-op rail-to-rail como o MCP6002, ou usar apenas a faixa que o LM358 consegue alcançar.

Abra o DAC PWM com Arduino no Velxio

7. ESP32: um termômetro que aciona uma ventoinha

Um ESP32 lendo um termistor NTC no GPIO34 e acionando uma ventoinha (um LED verde) através de um MOSFET 2N7000, com o monitor serial imprimindo 35.0 C fan ON

O termostato de novo, desta vez com um microcontrolador decidindo, para que ele possa fazer coisas que um comparador não faz: mostrar a temperatura em graus e adicionar histerese.

Lendo a temperatura. A saída do módulo NTC vai para o GPIO34, um pino somente de entrada no primeiro ADC do ESP32. O sketch faz a média de 16 leituras, calcula a resistência do termistor a partir do divisor (R = 10 kΩ × V / (3,3 V − V)) e a converte em graus com a equação Beta do datasheet do termistor: 1/T = 1/T₀ + ln(R/R₀)/β, com R₀ = 10 kΩ em T₀ = 25 °C e β = 3950. O monitor serial imprime 25,0 °C quando o termistor está ajustado para 25 °C, e 35,0 °C a 35 °C.

Acionando a carga. Um pino GPIO pode fornecer alguns miliampères, não as centenas que uma ventoinha precisa. O GPIO25 aciona o gate de um MOSFET 2N7000, através de um resistor de 100 Ω, e o MOSFET conecta a ventoinha (um LED verde aqui) ao terra. A 35 °C o dreno fica em 0,06 V: o MOSFET está totalmente ligado.

Histerese. A ventoinha liga a 30 °C e desliga somente abaixo de 28 °C. Sem essa diferença de 2 °C, uma temperatura oscilando no limiar ligaria e desligaria a ventoinha a cada segundo.

Para uma ventoinha real, use um MOSFET de nível lógico dimensionado para a corrente da ventoinha (o 2N7000 serve apenas para cargas pequenas) e um diodo em paralelo com a ventoinha para absorver o pico de tensão do motor quando ele desliga.

Abra o termômetro e ventoinha com ESP32 no Velxio

O que corrigimos ao construir estes projetos

Escrever este artigo significou medir cada circuito, e as medições revelaram problemas no simulador, todos corrigidos antes da publicação:

Se você montar um circuito analógico no Velxio e os números não baterem com a fórmula, avise-nos no GitHub. Foi assim que estes foram encontrados.


Compartilhar em:
David Montero

Escrito por

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Artigos relacionados


Artigo anterior
Seis jogos portáteis para o ESP32 e o XIAO ESP32-S3, jogáveis no seu navegador
Próximo artigo
Sete projetos de Halloween que você pode montar e rodar no navegador