Componentes · 20 min de leitura

CI 555 timer: pinagem e circuitos astável e monoestável explicados

Como funciona o CI 555 timer? Pinagem, ligação astável e monoestável, as fórmulas f = 1,44/((R1+2R2)C) e t = 1,1RC, um pisca-pisca de LED e código para Arduino.

O CI 555 timer é um chip temporizador barato, de 8 pinos, que define intervalos de tempo de microssegundos a horas usando nada além de um resistor e um capacitor. Piscar um LED em um ritmo definido, manter uma lâmpada acesa por um minuto depois de apertar um botão, gerar um som em um buzzer ou acionar um motor com PWM: ele faz tudo isso sem microcontrolador e sem uma linha de código. Projetado por Hans Camenzind para a Signetics em 1971 e lançado em 1972, ele se tornou um dos chips mais produzidos do mundo; em 2003, estimava-se que um bilhão de unidades eram fabricadas por ano.

Neste guia você vai aprender a pinagem do 555, como funcionam por dentro os comparadores e o flip-flop, os dois circuitos básicos (o pisca-pisca astável e o monoestável de disparo único), de onde vêm as fórmulas de frequência e de tempo, como levar o ciclo de trabalho abaixo de 50% e como usar o 555 junto com Arduino, ESP32 e Raspberry Pi Pico. Se você não quer fazer as contas à mão, a calculadora do 555 timer mostra na hora a frequência, o ciclo de trabalho e a forma de onda.

O que é o 555 timer e como ele funciona?

Dentro do 555 há quatro partes principais. A primeira é um divisor de tensão formado por três resistores iguais em série entre VCC e GND (5 kΩ cada no NE555 clássico); ele gera duas tensões de referência: 2/3 e 1/3 de VCC. A segunda é um par de comparadores ligados a essas referências: o comparador de limiar compara o pino THRES com 2/3 VCC, e o comparador de disparo compara o pino TRIG com 1/3 VCC. A terceira é um flip-flop SR que os dois comparadores ativam e resetam, e a quarta é o estágio de saída acionado pelo flip-flop, junto com um transistor de descarga que esvazia o capacitor.

A regra, na verdade, é muito simples: quando a tensão no TRIG cai abaixo de 1/3 VCC, a saída vai para HIGH e o transistor de descarga desliga. Quando a tensão no THRES sobe acima de 2/3 VCC, a saída vai para LOW e o transistor de descarga liga, puxando o pino 7 para o GND. Se nada disso acontecer, a saída mantém o estado anterior. O que define o tempo é quanto o capacitor externo leva para carregar e descarregar entre esses dois limites através de um resistor. Com alimentação de 5 V, os limites são 3,33 V e 1,67 V; com 9 V, são 6 V e 3 V. Muita gente diz que o nome do chip vem dos três resistores de 5 kΩ internos, mas Camenzind explicou que a Signetics escolheu o número arbitrariamente.

CaracterísticaNE555 (bipolar)TLC555 (CMOS)
Tensão de alimentação4,5–16 V (SE555: até 18 V)2–15 V (LMC555: a partir de 1,5 V)
Corrente em repouso (5 V)2–6 mACerca de 0,2 mA
Corrente de saídaFornece e absorve até 200 mAFornece cerca de 10 mA, absorve 100 mA
Nível HIGH da saídaCerca de 1,5–1,7 V abaixo de VCCAté VCC (rail-to-rail)
Frequência máxima recomendada100 kHzCerca de 2 MHz
Funciona com 3,3 VNãoSim
Versão com dois timersNE556 (14 pinos)TLC556 (14 pinos)

Pinagem do 555 timer

O chanfro em meia-lua ou o pontinho em cima do chip marca o pino 1. Com o chanfro à esquerda e olhando de cima, os pinos 1–4 vão da esquerda para a direita na fileira de baixo e os pinos 5–8 vão da direita para a esquerda na fileira de cima; ou seja, os números aumentam no sentido anti-horário e o pino 8 (VCC) fica bem em frente ao pino 1. O encapsulamento DIP-8 se encaixa perfeitamente sobre o canal no meio da protoboard: cada fileira de pernas precisa ficar de um lado do canal.

PinoNomeFunçãoLigação típica
1GNDTerra (0 V)Alimentação negativa
2TRIG (disparo)Leva a saída a HIGH e inicia a contagem quando cai abaixo de 1/3 VCCAstável: no pino 6; monoestável: pull-up + botão
3OUT (saída)Saída; no NE555 fornece ou absorve até 200 mALED com resistor, buzzer, transistor
4RESETForça a saída para LOW quando puxado abaixo de cerca de 0,7 VDireto no VCC se não for usado
5CONT (controle)Acesso direto à referência de 2/3 VCC; desloca os limitesCapacitor de 10 nF para o GND
6THRES (limiar)Leva a saída a LOW e termina a contagem acima de 2/3 VCCNo capacitor de temporização
7DISCH (descarga)Pino em coletor aberto, ligado ao GND enquanto a saída está em LOWAstável: entre R1 e R2; monoestável: no pino 6
8VCCAlimentação positiva (NE555: 4,5–16 V)Alimentação positiva + desacoplamento de 100 nF
O erro mais comum de quem está começando é deixar o pino RESET (4) flutuando. Um pino flutuante capta ruído e o chip reseta aleatoriamente; o LED às vezes pisca e às vezes nem responde. Se você não vai usá-lo, ligue o pino 4 direto no VCC. Além disso, o 555 bipolar puxa da alimentação picos de corrente curtos, mas grandes, toda vez que a saída muda; sem um capacitor cerâmico de 100 nF e um eletrolítico de 10 µF bem junto aos pinos 8 e 1, o circuito pode disparar sozinho.

Três modos de operação: astável, monoestável e biestável

ModoTambém chamado deO que fazUso típico
AstávelMultivibrador livreGera sozinho uma onda quadrada contínuaPisca-pisca de LED, tom de buzzer, sinal de clock, PWM
MonoestávelDisparo único (one-shot)Fica em HIGH por um tempo definido quando disparado e depois volta a LOWLâmpada temporizada, minuteria de escada, alongamento de pulso
BiestávelFlip-flopVai a HIGH com o TRIG e a LOW com o RESET e mantém o estado; sem temporizaçãoChave liga/desliga com dois botões

Circuito astável: um pisca-pisca de LED com 555

No circuito astável, os pinos TRIG (2) e THRES (6) são ligados juntos e conectados ao capacitor de temporização. O capacitor carrega a partir do VCC através de R1 e R2; quando sua tensão chega a 2/3 VCC, a saída vai para LOW, o transistor de descarga liga e o capacitor passa a descarregar no pino 7 só através de R2. Quando a tensão cai para 1/3 VCC, a saída volta a HIGH e o ciclo se repete sozinho. O capacitor nunca se esvazia por completo, mas oscila entre 1/3 e 2/3 VCC; só ao ligar ele começa vazio, e é por isso que o primeiro período em HIGH é um pouco mais longo. O circuito abaixo funciona com uma bateria de 9 V e pisca dois LEDs alternadamente uma vez por segundo; é a luz de polícia mais simples possível.

  1. Coloque o 555 sobre o canal no meio da protoboard, com o chanfro virado para a esquerda. Se você não sabe como a protoboard é ligada por dentro, leia antes O que é uma protoboard?.
  2. Ligue os pinos 8 (VCC) e 4 (RESET) no barramento de +9 V e o pino 1 (GND) no barramento negativo. Coloque um capacitor cerâmico de 100 nF entre os pinos 8 e 1, o mais perto possível do chip.
  3. Ligue R1 = 10 kΩ entre os pinos 8 e 7 e R2 = 68 kΩ entre os pinos 7 e 6.
  4. Una os pinos 6 e 2 com um fio. Desse nó, ligue um capacitor eletrolítico de C = 10 µF ao GND; a perna curta (negativa) dele tem que ir para o lado do GND.
  5. Coloque um capacitor de 10 nF (marcado 103) do pino 5 (CONT) para o GND.
  6. Do pino de saída 3, passe por um resistor de 470 Ω até o ânodo do primeiro LED e ligue o cátodo dele ao GND; esse LED acende enquanto a saída está em HIGH. Ligue o ânodo do segundo LED ao +9 V por 470 Ω e o cátodo dele à saída; esse LED acende enquanto a saída está em LOW.
  7. Ligue a bateria: os dois LEDs devem acender alternadamente por cerca de 0,54 s e 0,47 s. Se nenhum LED acender, primeiro confira se o pino 4 está no VCC.

Em 9 V, a saída HIGH do NE555 fica em cerca de 7,5 V, então passam cerca de 12 mA pelo primeiro LED e cerca de 15 mA pelo segundo. Se você rodar o circuito com 5 V, baixe os resistores para 220–330 Ω; use a calculadora de resistor para LED para achar o valor e leia O que é um LED? para saber mais sobre o próprio LED. Como a frequência não depende da tensão de alimentação, os mesmos R1, R2 e C continuam dando uma piscada por segundo em 5 V.

Fórmulas de frequência e tempo do 555 timer

Quando um capacitor carrega através de um resistor R, a tensão dele sobe seguindo uma curva exponencial; τ = R·C é a constante de tempo, explicada em detalhes em O que é um capacitor?. Ir de 1/3 VCC a 2/3 VCC leva exatamente ln 2 · R · C ≈ 0,693 · R · C, porque a distância que falta até o alvo cai pela metade nesse tempo. Como a carga acontece através de R1 + R2 e a descarga só através de R2, os tempos em HIGH e em LOW são diferentes. Somar os dois tempos e tirar o inverso dá o fator 1 / 0,693 ≈ 1,44 e a famosa fórmula: f = 1,44 / ((R1 + 2·R2) · C).

GrandezaFórmulaExemplo: R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF
Tempo em HIGH (tH)0,693 · (R1 + R2) · C0,54 s
Tempo em LOW (tL)0,693 · R2 · C0,47 s
Período (T)0,693 · (R1 + 2·R2) · C1,01 s
Frequência (f)1,44 / ((R1 + 2·R2) · C)0,99 Hz
Ciclo de trabalho(R1 + R2) / (R1 + 2·R2)53,4%
Largura do pulso monoestável (t)1,1 · R · C1,1 s para R = 100 kΩ, C = 10 µF
Capacitores usados em um circuito de temporização com 555
No 555, o capacitor define o tempo junto com o resistor: use capacitores eletrolíticos (µF) para segundos e cerâmicos ou de filme (nF) para frequências na faixa de kHz.

Tenha alguns limites em mente ao escolher os valores. R1 deve ter pelo menos 1 kΩ; caso contrário, quando o transistor de descarga liga, ele liga o VCC quase direto ao GND. Segundo o datasheet da Texas Instruments, a pequena corrente puxada pela entrada de limiar faz com que R1 + R2 não deva passar de cerca de 3,4 MΩ em 5 V ou 10 MΩ em 15 V; na prática, ficar entre 1 kΩ e 1 MΩ é o mais seguro. Não use capacitores abaixo de 1 nF, porque a capacitância da própria protoboard e dos fios vai atrapalhar o cálculo. Use o NE555 abaixo de 100 kHz; para sinais mais rápidos, escolha uma versão CMOS. Para decifrar os números impressos em um capacitor, use a ferramenta código de capacitor, e para ver a curva de carga, a ferramenta constante de tempo RC.

R1R2CFrequênciaCicloUso
10 kΩ100 kΩ10 µF0,69 Hz52%Luz de aviso lenta
10 kΩ68 kΩ10 µF0,99 Hz53%Pisca-pisca de LED, uma vez por segundo
4,7 kΩ47 kΩ1 µF14,6 Hz52%Efeito estroboscópico rápido
1 kΩ10 kΩ100 nF686 Hz52%Tom de buzzer
1 kΩ6,8 kΩ100 nF986 Hz53%Sinal de teste em torno de 1 kHz
1 kΩ10 kΩ10 nF6,86 kHz52%Tom agudo, PWM
1 kΩ18 kΩ1 nF38,9 kHz51%Portadora de controle remoto IR (ajuste para 38 kHz com um trimpot)

Ajustando o ciclo de trabalho: abaixo de 50%

No circuito astável básico, o capacitor carrega através de R1 + R2, mas descarrega só através de R2, então o tempo em HIGH é sempre maior que o tempo em LOW e o ciclo de trabalho não consegue ficar abaixo de 50%; deixar R2 muito maior que R1 aproxima de 50%, mas nunca fica abaixo. A solução é um diodo 1N4148 em paralelo com R2, com o ânodo voltado para o pino 7 e o cátodo para o pino 6. Durante a carga, a corrente passa pelo diodo e desvia de R2; durante a descarga, o diodo fica polarizado reversamente e a corrente passa por R2. Isso dá tH ≈ 0,693 · R1 · C e tL ≈ 0,693 · R2 · C, e o ciclo de trabalho cai para R1 / (R1 + R2). Por exemplo, com R1 = 10 kΩ, R2 = 47 kΩ e C = 10 µF, o LED fica aceso por 69 ms e apagado por 326 ms: uma piscada curta e chamativa com ciclo de 17,5%. A queda direta de cerca de 0,6 V do diodo deixa o tempo em HIGH um pouco maior que o calculado, principalmente em 5 V. Para saber como os diodos se comportam em geral, veja O que é um diodo?.

Se você quer manter a frequência fixa e ajustar só o ciclo de trabalho, use um potenciômetro e dois diodos. Ligue o cursor do potenciômetro no pino 7; ligue uma ponta do potenciômetro ao capacitor por um diodo (ânodo do lado do potenciômetro) e a outra ponta ao capacitor por um segundo diodo virado ao contrário (cátodo do lado do potenciômetro). Com R1 = 1 kΩ, um potenciômetro de 100 kΩ e C = 10 nF, a frequência fica em cerca de 1,4 kHz enquanto o ciclo de trabalho varia mais ou menos de 1% a 99%, porque a soma das resistências de carga e descarga continua a mesma quando você gira o potenciômetro. Com um MOSFET na saída, esse é o jeito clássico de controlar a velocidade de um motor CC ou o brilho de uma fita de LED de 12 V; veja O que é PWM? e Como usar um MOSFET com Arduino para os detalhes.

Circuito monoestável: pulso único e lâmpada temporizada

No circuito monoestável, os pinos 6 (THRES) e 7 (DISCH) são ligados juntos; um resistor R vai desse nó até o VCC e um capacitor C até o GND. O pino TRIG (2) é mantido em HIGH por um resistor de pull-up. Em repouso, a saída fica em LOW e o transistor de descarga mantém o capacitor vazio. Quando um pulso LOW curto chega ao TRIG, a saída vai para HIGH, o transistor de descarga desliga e o capacitor começa a carregar através de R. Quando a tensão dele chega a 2/3 VCC, a saída volta para LOW e o capacitor é descarregado na hora. Desta vez o capacitor carrega desde zero até 2/3 VCC, então o pulso dura ln 3 · R · C ≈ 1,1 · R · C, que também não depende da tensão de alimentação.

  1. Ligue os pinos 8 e 4 no +5 V e o pino 1 no GND; coloque um capacitor de 100 nF entre os pinos 8 e 1 e um de 10 nF entre o pino 5 e o GND.
  2. Una os pinos 6 e 7. Desse nó, ligue R = 470 kΩ ao +5 V e um capacitor eletrolítico de C = 100 µF ao GND (perna negativa no GND).
  3. Puxe o TRIG (pino 2) para o +5 V com 10 kΩ e ligue um botão de pressão entre o pino 2 e o GND. Para saber mais sobre a ligação de botões, veja Como ligar um botão no Arduino.
  4. Para um primeiro teste, ligue um LED no pino de saída 3 por um resistor de 330 Ω.
  5. Aperte o botão rapidamente: o LED fica aceso por cerca de 1,1 × 470 kΩ × 100 µF ≈ 52 segundos e depois apaga. Por causa da tolerância de ±20% do capacitor eletrolítico, qualquer valor entre 42 e 62 segundos é normal.
  6. Para uma lâmpada de verdade, acione um relé em vez do LED: vá da saída, por 1 kΩ, até a base de um transistor BC547, ligue o emissor ao GND e o coletor a uma ponta da bobina do relé; a outra ponta da bobina vai ao +5 V. Não esqueça um diodo 1N4007 em paralelo com a bobina (cátodo do lado do +5 V); para o papel do transistor, veja O que é um transistor?.
Se você segurar o botão por mais tempo que o atraso, a saída continua em HIGH mesmo depois que o tempo acaba; segundo o datasheet, o TRIG precisa voltar a HIGH pelo menos 10 µs antes do fim do intervalo para a contagem terminar. Para atrasos longos, aumente C em vez de R: se a corrente de fuga do capacitor eletrolítico se aproximar da pequena corrente de carga que passa por R, o capacitor nunca chega a 2/3 VCC e a lâmpada nunca apaga, então mantenha R abaixo de 1 MΩ. Se você for ligar uma lâmpada da rede elétrica com um relé, nunca energize o circuito antes de o lado da rede estar isolado e siga as regras de segurança de O que é um módulo relé?.
RCTempo (1,1 · R · C)Uso
10 kΩ1 µF11 msDebounce de botão, alongar pulsos curtos
100 kΩ10 µF1,1 sBipe curto, campainha
220 kΩ47 µF11,4 sIluminação de curta duração
470 kΩ100 µF52 sMinuteria de escada, lâmpada temporizada
10 kΩ + potenciômetro de 1 MΩ100 µF1,1–111 sTemporizador ajustável

Para encurtar o atraso, você pode adicionar um segundo botão no pino RESET (4): puxe o pino para o VCC com 10 kΩ e ligue o botão entre o RESET e o GND; no instante em que ele é apertado, a saída vai para LOW e o capacitor é descarregado. Um circuito monoestável às vezes dispara sozinho uma vez quando a alimentação é ligada. Para evitar isso, ligue o pino RESET ao VCC por 10 kΩ e ao GND por 10 µF: ao ligar, o chip fica em reset pelo pouco tempo que esse capacitor leva para carregar e começa a funcionar normalmente quando a alimentação se estabiliza.

Como usar um 555 timer com Arduino?

O 555 e o Arduino não são rivais; eles formam uma boa dupla. Você também pode fazer um pisca-pisca simples no Arduino com millis(), mas um 555 não precisa de código, funciona com alimentação de até 16 V, fornece 200 mA na saída e continua funcionando mesmo se o Arduino travar. Por isso, o 555 costuma entrar junto com o Arduino em um de três papéis: como fonte de sinal que o Arduino mede, como temporizador de hardware que o Arduino dispara (um medidor de capacitância, um alongador de pulsos) e como oscilador que o Arduino liga e desliga pelo pino RESET (uma sirene ou um tom de buzzer). No último caso, basta ligar o pino 4 do 555 a uma saída do Arduino: enquanto o pino está em HIGH, o oscilador funciona; enquanto está em LOW, ele fica em silêncio.

Pino do 555Arduino UnoESP32Raspberry Pi Pico
8 VCC5V3V3 (só com 555 CMOS)3V3(OUT) (555 CMOS) ou VBUS (NE555)
1 GNDGNDGNDGND
3 OUTD2GPIO 27GP15 (por um divisor de 10 kΩ + 20 kΩ com NE555)
2 TRIG (exemplo de disparo)D7GPIO 26GP14 (só com um 555 CMOS alimentado pelo 3V3)
4 RESET5V ou um pino digital3V33V3(OUT)
Quando ligar um 555 a um Arduino, alimente os dois pelos mesmos 5 V e una os GNDs. A saída de um 555 funcionando com 9 ou 12 V chega a 7–10 V e vai danificar a entrada do Arduino; nesse caso, você precisa reduzir a saída com um divisor de tensão. O nível HIGH do NE555 em 5 V é de cerca de 3,5 V, só um pouco acima do limite de 3 V do Uno; para um HIGH mais seguro, você pode adicionar um resistor de pull-up de 10 kΩ da saída para o 5 V.

No primeiro exemplo, o Arduino mede a frequência e o ciclo de trabalho do pisca-pisca e os compara com os valores das fórmulas. O circuito é o mesmo circuito astável de antes (R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF), só que alimentado pelo pino 5V do Arduino em vez de 9 V, e o pino de saída 3 vai no D2. A função pulseIn() retorna, em microssegundos, quanto tempo um pino fica em HIGH ou em LOW.

C++ (Arduino IDE)
1// 555 flaşörünün frekansını ve duty cycle'ını ölçer / Measures the frequency and duty cycle of a 555 flasher
2const int SIGNAL_PIN = 2;                    // 555 çıkışı (pin 3) / 555 output (pin 3)
3const float R1_OHM = 10000.0;                // R1 = 10 kΩ
4const float R2_OHM = 68000.0;                // R2 = 68 kΩ
5const float C_FARAD = 10e-6;                 // C = 10 µF
6const unsigned long TIMEOUT_US = 3000000UL;  // 3 s: ~1 Hz sinyal için / for a ~1 Hz signal
7
8void setup() {
9  Serial.begin(9600);
10  pinMode(SIGNAL_PIN, INPUT);
11
12  // Formüllerle hesaplanan değerler / Values from the formulas
13  float fCalc = 1.44 / ((R1_OHM + 2 * R2_OHM) * C_FARAD);
14  float dutyCalc = 100.0 * (R1_OHM + R2_OHM) / (R1_OHM + 2 * R2_OHM);
15  Serial.print(F("Hesaplanan / Calculated: f = "));
16  Serial.print(fCalc, 3);
17  Serial.print(F(" Hz, duty = "));
18  Serial.print(dutyCalc, 1);
19  Serial.println(F(" %"));
20}
21
22void loop() {
23  unsigned long highUs = pulseIn(SIGNAL_PIN, HIGH, TIMEOUT_US);  // HIGH süresi / HIGH time
24  unsigned long lowUs = pulseIn(SIGNAL_PIN, LOW, TIMEOUT_US);    // LOW süresi / LOW time
25
26  if (highUs == 0 || lowUs == 0) {           // zaman aşımı / timeout
27    Serial.println(F("Sinyal yok / No signal"));
28    return;
29  }
30
31  unsigned long periodUs = highUs + lowUs;
32  float f = 1000000.0 / periodUs;            // f = 1 / T
33  float duty = 100.0 * highUs / periodUs;    // duty = tH / T
34
35  Serial.print(F("Olculen / Measured: f = "));
36  Serial.print(f, 3);
37  Serial.print(F(" Hz, duty = "));
38  Serial.print(duty, 1);
39  Serial.print(F(" %, tH = "));
40  Serial.print(highUs / 1000);
41  Serial.print(F(" ms, tL = "));
42  Serial.print(lowUs / 1000);
43  Serial.println(F(" ms"));
44}

Por padrão, o pulseIn() espera no máximo 1 segundo; com um sinal em torno de 1 Hz, ele primeiro espera o pulso atual terminar e depois um novo começar, então aumentamos o timeout para 3 segundos. É normal a frequência medida no Monitor Serial diferir do valor calculado em 5–20%; a maior parte da diferença vem da tolerância do capacitor eletrolítico. Essa diferença também é um jeito de descobrir o valor real do capacitor: coloque a frequência medida em f = 1,44 / ((R1 + 2·R2) · C) e isole C. Para sinais mais rápidos, contar bordas com uma interrupção em vez de pulseIn() dá resultados mais precisos.

Disparando um 555 pelo Arduino: um medidor de capacitância

Como a largura do pulso monoestável é t = 1,1 · R · C, se você conhece R e mede t, consegue achar o valor do capacitor com C = t / (1,1 · R). O circuito é assim: pinos 6 e 7 unidos, com 100 kΩ desse nó até o 5 V e o capacitor em teste até o GND; pinos 4 e 8 no 5 V e o pino 5 no GND por 10 nF. O TRIG (pino 2) é puxado para o 5 V com 10 kΩ e ligado ao D7, e o pino de saída 3 vai no D2. O Arduino envia um pulso LOW de 10 µs pelo D7 e mede com micros() quanto tempo a saída fica em HIGH.

C++ (Arduino IDE)
1// 555 monostable ile kondansatör ölçer / Capacitance meter with a 555 monostable
2const int TRIG_PIN = 7;                      // 555 pin 2 (TRIG)
3const int OUT_PIN = 2;                       // 555 pin 3 (OUT)
4const float R_OHM = 100000.0;                // 6-7 ile 5V arasındaki direnç / resistor between pins 6-7 and 5V
5const float CAL = 1.0;                       // kalibrasyon: gerçek / ölçülen / calibration: real / measured
6const unsigned long TIMEOUT_US = 6000000UL;  // 6 s: ~47 µF'a kadar / up to ~47 µF
7
8void setup() {
9  Serial.begin(9600);
10  pinMode(OUT_PIN, INPUT);
11  pinMode(TRIG_PIN, OUTPUT);
12  digitalWrite(TRIG_PIN, HIGH);              // TRIG beklemede HIGH / TRIG idles HIGH
13}
14
15void loop() {
16  while (digitalRead(OUT_PIN) == HIGH) {}    // önceki darbenin bitmesini bekle / wait for any previous pulse to end
17
18  digitalWrite(TRIG_PIN, LOW);               // 10 µs'lik LOW darbesiyle tetikle / trigger with a 10 µs LOW pulse
19  delayMicroseconds(10);
20  digitalWrite(TRIG_PIN, HIGH);
21
22  unsigned long t0 = micros();
23  while (digitalRead(OUT_PIN) == LOW) {      // çıkışın HIGH olmasını bekle / wait for OUT to go HIGH
24    if (micros() - t0 > 1000) {
25      Serial.println(F("555 yanit vermiyor / 555 not responding"));
26      delay(1000);
27      return;
28    }
29  }
30
31  t0 = micros();
32  while (digitalRead(OUT_PIN) == HIGH) {     // darbe süresini ölç / time the pulse
33    if (micros() - t0 > TIMEOUT_US) {
34      Serial.println(F("Kondansator cok buyuk / Capacitor too large"));
35      delay(1000);
36      return;
37    }
38  }
39  unsigned long widthUs = micros() - t0;
40
41  // t = 1,1 · R · C  ->  C = t / (1,1 · R)
42  float capNf = CAL * (widthUs * 1e-6) / (1.1 * R_OHM) * 1e9;
43
44  Serial.print(F("t = "));
45  Serial.print(widthUs);
46  Serial.print(F(" us, C = "));
47  if (capNf >= 1000.0) {
48    Serial.print(capNf / 1000.0, 2);
49    Serial.println(F(" uF"));
50  } else {
51    Serial.print(capNf, 1);
52    Serial.println(F(" nF"));
53  }
54  delay(1000);
55}

Aqui medimos manualmente com micros() em vez de pulseIn(), porque a saída já está em HIGH logo depois do disparo e o pulseIn() trataria esse pulso como um “pulso anterior” e o pularia. No Uno, o micros() tem resolução de 4 µs; com 100 kΩ, um capacitor de 1 nF dá um pulso de 110 µs, então a faixa de medição vai mais ou menos de 1 nF a 47 µF. Meça um capacitor conhecido e escreva a razão entre o valor real e o valor medido no fator CAL para calibrar o seu medidor. Antes de ligar um capacitor eletrolítico, descarregue-o encostando as pernas uma na outra e ligue a perna positiva no lado dos pinos 6–7.

Usando um 555 timer com ESP32 e Raspberry Pi Pico

O ESP32 e o Raspberry Pi Pico trabalham em 3,3 V e seus pinos não toleram 5 V. Já o NE555 clássico precisa de pelo menos 4,5 V, então não funciona com 3,3 V. A solução mais limpa é um 555 CMOS como o TLC555, LMC555 ou ICM7555: ele tem a mesma pinagem, funciona pelo pino 3V3 e sua saída vai de 0 a 3,3 V, então se liga direto a um GPIO. Se você só tem um NE555, alimente-o com 5 V e divida a saída com 10 kΩ (em série) e 20 kΩ (para o GND). Como o nível HIGH do NE555 fica em torno de 3,5 V, a saída do divisor cai para cerca de 2,3 V: o bastante para o limite de 2 V do Pico, mas no limite para o limite de cerca de 2,5 V do ESP32. Por isso, com o ESP32, prefira um 555 CMOS.

No exemplo do ESP32, um 555 CMOS com R1 = 1 kΩ, R2 = 6,8 kΩ e C = 100 nF gera um sinal de cerca de 986 Hz; ele tem as mesmas proporções do pisca-pisca, só que mil vezes mais rápido. O ESP32 executa uma rotina de interrupção a cada borda de subida e mostra quantas bordas contou em um segundo; esse número é diretamente a frequência em Hz. O ciclo de trabalho é calculado a partir de um único tempo em HIGH medido com pulseIn().

C++ (Arduino IDE)
1// ESP32 + CMOS 555 (TLC555) frekans ve duty ölçer / ESP32 + CMOS 555 (TLC555) frequency and duty meter
2const int SIGNAL_PIN = 27;                   // 555 çıkışı (pin 3) / 555 output (pin 3)
3
4volatile uint32_t edgeCount = 0;
5portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;
6
7void IRAM_ATTR onRise() {
8  portENTER_CRITICAL_ISR(&mux);
9  edgeCount++;                               // her yükselen kenarı say / count every rising edge
10  portEXIT_CRITICAL_ISR(&mux);
11}
12
13void setup() {
14  Serial.begin(115200);
15  pinMode(SIGNAL_PIN, INPUT);
16  attachInterrupt(digitalPinToInterrupt(SIGNAL_PIN), onRise, RISING);
17}
18
19void loop() {
20  static uint32_t lastMs = millis();
21  if (millis() - lastMs < 1000) return;      // 1 saniyelik ölçüm penceresi / 1-second gate
22  lastMs += 1000;
23
24  portENTER_CRITICAL(&mux);
25  uint32_t edges = edgeCount;                // sayacı oku ve sıfırla / read and reset the counter
26  edgeCount = 0;
27  portEXIT_CRITICAL(&mux);
28
29  unsigned long highUs = pulseIn(SIGNAL_PIN, HIGH, 100000UL);  // tek bir HIGH süresi / one HIGH time
30  float duty = highUs * (float)edges / 10000.0;                // duty % = tH(µs) · f(Hz) / 10000
31
32  Serial.printf("f = %u Hz, tH = %lu us, duty = %.1f %%\n", (unsigned)edges, highUs, duty);
33}

No Pico, a função machine.time_pulse_us() do MicroPython é o equivalente ao pulseIn() do Arduino, com uma diferença importante: se o pino já estiver no nível pedido, ela começa a contar na hora. Por isso, a primeira chamada é usada para pular um pulso parcial e sincronizar com a borda do sinal; as medições de LOW e HIGH que vêm depois são pulsos completos. O exemplo mede o circuito do pisca-pisca de uma vez por segundo e alterna o LED da placa a cada leitura.

MicroPython
1# Pico ile 555 flaşörünü ölçmek / Measuring a 555 flasher with the Pico
2from machine import Pin, time_pulse_us
3import time
4
5sig = Pin(15, Pin.IN)       # 555 çıkışı: CMOS 555 doğrudan, NE555 bölücüyle / 555 output: CMOS 555 direct, NE555 via a divider
6led = Pin(25, Pin.OUT)      # dahili LED (Pico W'de Pin("LED")) / onboard LED (Pin("LED") on a Pico W)
7TIMEOUT = 2_000_000         # 2 s zaman aşımı / 2 s timeout
8
9while True:
10    # İlk ölçüm yarım darbeyi atlar ve kenara senkronlar / The first call skips a partial pulse and syncs to an edge
11    if time_pulse_us(sig, 1, TIMEOUT) < 0:
12        print("Sinyal yok / No signal")
13        continue
14    low_us = time_pulse_us(sig, 0, TIMEOUT)    # tam LOW süresi / full LOW time
15    high_us = time_pulse_us(sig, 1, TIMEOUT)   # tam HIGH süresi / full HIGH time
16    if low_us < 0 or high_us < 0:
17        continue
18    period = low_us + high_us
19    print("f = {:.3f} Hz, duty = {:.1f} %, tH = {} ms, tL = {} ms".format(
20        1_000_000 / period, 100 * high_us / period, high_us // 1000, low_us // 1000))
21    led.toggle()            # her ölçümde LED'i değiştir / toggle the LED on every reading
22    time.sleep_ms(200)

Ideias de projetos com 555 timer

  • Luz de polícia: pisque um LED vermelho e um azul alternadamente, um ligado da saída ao GND e o outro do VCC à saída; 4,7 kΩ, 47 kΩ e 1 µF dão um efeito estroboscópico rápido.
  • Sirene de dois tons: ligue a saída de um primeiro 555 lento, por um resistor, ao pino 5 (CONT) de um segundo 555; conforme os limites se deslocam, o tom do segundo chip sobe e desce. Use um buzzer passivo ou um alto-falante pequeno para o som.
  • Minuteria de escada: monte com um 555 monoestável, um relé e botões um temporizador que mantém uma lâmpada acesa por um minuto, com os botões de andares diferentes ligados em paralelo.
  • Medidor de capacitância: use o código Arduino deste artigo para medir capacitores com a marcação apagada e mostre o resultado em um display LCD I2C.
  • Transmissor IR: acione um LED IR com um 555 astável ajustado em 38 kHz e detecte o sinal com um receptor IR; você tem um alarme simples de feixe interrompido. Receptores de controle remoto como o TSOP ou o VS1838B podem tratar uma portadora contínua como ruído e suprimi-la depois de um tempo, então ligue e desligue esse 555 pelo pino RESET com um segundo 555 lento para enviar rajadas.
  • Controle de velocidade de motor: ligue o circuito PWM de frequência fixa com potenciômetro a um MOSFET para ajustar a potência de um motor CC de 12 V ou de uma fita de LED.
  • Detector de pulso ausente: coloque um transistor PNP (por exemplo, um BC557) em paralelo com o capacitor de temporização, com a base ligada ao TRIG; cada pulso LOW que o Arduino envia em intervalos regulares dispara o 555 e esvazia o capacitor, reiniciando a contagem. Se o Arduino travar e os pulsos pararem, o tempo se esgota e o 555 dispara um alarme ou reinicia o sistema.

Erros comuns e como resolvê-los

SintomaCausa provávelSolução
O LED não pisca, fica aceso ou apagadoRESET (4) flutuando ou no GND; no modo astável, pinos 2 e 6 não unidosLigue o RESET ao VCC e una os pinos 2 e 6 com um fio
A frequência fica longe do valor calculadoTolerância de ±20% do capacitor eletrolítico, valor mal lido (nF em vez de µF), C pequeno demaisMeça o capacitor, confira o código dele, use um capacitor de filme para trabalhos precisos
O circuito fica instável ou dispara sozinhoSem desacoplamento da alimentação, pino CONT ou TRIG flutuando100 nF + 10 µF entre os pinos 8 e 1, 10 nF no pino 5, pull-up de 10 kΩ no TRIG
O chip esquentaSaída em curto com um LED sem resistor ou com o GND; R1 pequeno demaisColoque um resistor em série com o LED, use R1 de pelo menos 1 kΩ
O atraso monoestável nunca terminaBotão mantido pressionado ou TRIG preso em LOWAperte o botão rapidamente ou envie um pulso LOW curto pelo Arduino
O chip reseta ou queima quando o relé soltaFalta o diodo para absorver a tensão reversa da bobinaLigue um 1N4007 em paralelo com a bobina do relé
O Arduino lê valores errados ou o pino se danifica555 alimentado com 9–12 VAlimente o 555 com 5 V ou reduza a saída com um divisor de tensão
O ciclo de trabalho não fica abaixo de 50%Limite natural do circuito astável básicoColoque um diodo 1N4148 em paralelo com R2
Quando o circuito não funcionar, meça primeiro com um multímetro: você deve ver a tensão de alimentação nos pinos 8 e 4 e cerca de 2/3 VCC no pino 5 (6 V em 9 V). Se a tensão do capacitor no circuito astável oscilar devagar entre 1/3 e 2/3 VCC, o chip está funcionando e o problema está do lado da saída. Para a técnica de medição, veja Como usar um multímetro.

O 555 timer é uma das melhores peças para aprender, porque mostra em um só chip barato as ideias centrais de temporização da eletrônica (carga RC, limites, comparadores, flip-flops). Comece com o pisca-pisca de uma vez por segundo, mude os valores para obter um tom de buzzer e depois experimente a lâmpada temporizada monoestável e o medidor de capacitância com Arduino. No app BlueGrays você encontra os projetos de luz de polícia, iluminação de escada e buzzer passo a passo, com esquemas do circuito e código, para testar lado a lado as versões com Arduino e Pico dos seus circuitos com 555.

Perguntas frequentes

Para que serve um 555 timer?

O 555 é um chip temporizador de uso geral que define intervalos de tempo com um resistor e um capacitor. No modo astável, ele gera uma onda quadrada contínua para pisca-piscas de LED, tons de buzzer ou sinais de clock; no modo monoestável, gera uma saída que fica ligada por um tempo definido depois de um disparo, para lâmpadas temporizadas ou temporizadores. Ele não precisa de microcontrolador nem de código.

Qual tensão o 555 timer precisa?

O NE555 clássico funciona de 4,5 a 16 V (o SE555, até 18 V); 5, 9 e 12 V são as alimentações mais comuns. Para tensões mais baixas, como 3,3 V, use versões CMOS como o TLC555 (2–15 V), o ICM7555 ou o LMC555, que começa em 1,5 V. Enquanto a alimentação se mantiver constante, a frequência e o tempo não dependem da tensão.

Quais valores dão um pisca-pisca de 1 Hz com 555?

Com R1 = 10 kΩ, R2 = 68 kΩ e C = 10 µF, você obtém f = 1,44 / ((10 kΩ + 2 · 68 kΩ) · 10 µF) ≈ 0,99 Hz; o LED fica aceso por cerca de 0,54 s e apagado por 0,47 s. Por causa da tolerância de ±20% do capacitor eletrolítico, o valor real vai ser um pouco diferente. Para um ajuste fino, troque R2 por um trimpot.

Como deixar o ciclo de trabalho do 555 abaixo de 50%?

No circuito astável básico, o capacitor carrega através de R1 + R2, mas descarrega só através de R2, então o tempo em HIGH é sempre maior que o tempo em LOW. Se você colocar um diodo 1N4148 em paralelo com R2, com o ânodo voltado para o pino 7, o capacitor carrega só através de R1. Aí tH ≈ 0,693 · R1 · C e tL ≈ 0,693 · R2 · C, e escolher R1 menor que R2 leva você abaixo de 50%.

Qual é a diferença entre o NE555 e o TLC555?

O NE555 é feito com transistores bipolares, precisa de pelo menos 4,5 V e fornece até 200 mA na saída, mas consome 2–6 mA em repouso e sofre acima de 100 kHz. O TLC555 é uma versão CMOS: funciona a partir de 2 V, consome cerca de 0,2 mA, chega a cerca de 2 MHz e a saída sobe até a tensão de alimentação; por outro lado, só fornece cerca de 10 mA. Os dois têm a mesma pinagem.

Os pinos 4 e 5 do 555 podem ficar desconectados?

O pino RESET (4) nunca deve ficar flutuando; se você não o usa, ligue-o direto no VCC, senão o ruído pode resetar o chip aleatoriamente. O pino CONT (5) tecnicamente pode ficar aberto, mas ligá-lo ao GND por um capacitor de 10 nF é um bom hábito para que o ruído não desloque os limites. Se você aplicar uma tensão externa nesse pino, os limites mudam e, com eles, a frequência.

Ver todos os projetos
Luzes de polícia com LEDs
#4Iniciante

Luzes de polícia com LEDs

Como as luzes de uma viatura: o LED vermelho pisca três vezes rapidamente, depois o LED azul pisca três vezes, e a sequência se repete sem parar. Basta ligar dois LEDs e dois resistores ao Arduino. Um

4.7(103)
258
Uso do buzzer
#13Iniciante

Uso do buzzer

Já se perguntou como uma campainha ou um alarme produz som? O Arduino faz um pequeno buzzer emitir bipes em intervalos curtos: bipe, pausa, bipe, pausa. Você vê como a eletricidade produz som e dá o p

4.7(89)
161
Ajuste de frequência com buzzer
#14Intermediário

Ajuste de frequência com buzzer

Você controla o som de um buzzer com quatro botões: um inicia o som, outro o interrompe e os outros dois o deixam mais agudo ou mais grave. Mantenha pressionado o botão de aumentar ou diminuir, e o to

4.6(69)
118
Raspberry Pi Pico: efeito de luz policial (vermelho + azul)
#151Iniciante

Raspberry Pi Pico: efeito de luz policial (vermelho + azul)

Simulamos a barra de luzes de uma viatura com um Raspberry Pi Pico da forma mais simples! Os LEDs vermelho e azul acendem alternadamente (flip-flop): enquanto o vermelho está aceso, o azul fica apagado, e eles trocam de estado a cada 0,3 segundo, para sempre. O código escreve as duas etapas diretamente em um único laço while True; a velocidade é definida pela constante WAIT_MS.

4.7(3)
10
Iluminação inteligente de escadas e corredores
#82Intermediário
Premium

Iluminação inteligente de escadas e corredores

Ao entrar na escada ou no corredor, as luzes acendem uma a uma no sentido em que você caminha. Há um sensor de distância em cada extremidade; ao passar por um deles, os oito LEDs acendem a partir daqu

5.0(35)
51
Acender uma lâmpada de 220V com botão de pressão
#19Avançado
Premium

Acender uma lâmpada de 220V com botão de pressão

Enquanto você mantém o botão pressionado, uma lâmpada de 220 volts fica acesa e apaga assim que você solta. O sinal fraco do Arduino não consegue acender a lâmpada diretamente, então um relé, que é um

4.4(30)
38
Efeito de luzes de viatura com ESP32
#109Iniciante
Premium

Efeito de luzes de viatura com ESP32

Simule as luzes de uma viatura fazendo grupos de LEDs vermelhos e azuis piscarem rapidamente. Usar 2 LEDs em cada grupo deixa o efeito mais marcante. Um exemplo clássico de alternância rápida e controle de grupos.

4.6(21)
36