Componenti · 19 min di lettura

Timer NE555: piedinatura, circuito astabile e monostabile

Come funziona il timer NE555? Piedinatura, collegamento astabile e monostabile, formule f = 1,44/((R1+2R2)C) e t = 1,1RC, lampeggiatore LED e codice Arduino.

Il timer NE555 (o integrato 555) è un chip economico a 8 piedini che permette di impostare tempi da pochi microsecondi a diverse ore con una sola resistenza e un condensatore. Far lampeggiare un LED a ritmo fisso, tenere accesa una lampada per un minuto dopo la pressione di un pulsante, generare un tono su un buzzer o pilotare un motore in PWM: fa tutto questo senza microcontrollore e senza una riga di codice. Progettato da Hans Camenzind per Signetics nel 1971 e messo in commercio nel 1972, è diventato uno dei circuiti integrati più prodotti al mondo; nel 2003 se ne stimava una produzione di circa un miliardo di pezzi all'anno.

In questa guida imparerai la piedinatura del 555, come funzionano al suo interno i comparatori e il flip-flop, i due circuiti di base (il lampeggiatore astabile e il monostabile a impulso singolo), da dove vengono le formule di frequenza e durata, come portare il duty cycle sotto il 50% e come usare il 555 insieme ad Arduino, ESP32 e Raspberry Pi Pico. Se non vuoi fare i calcoli a mano, il calcolatore per timer 555 mostra subito frequenza, duty cycle e forma d'onda.

Cos'è il timer NE555 e come funziona?

Dentro il 555 ci sono quattro parti principali. La prima è un partitore di tensione formato da tre resistenze uguali in serie tra VCC e GND (da 5 kΩ ciascuna nel classico NE555); fornisce due tensioni di riferimento: 2/3 e 1/3 di VCC. La seconda è una coppia di comparatori collegati a questi riferimenti: il comparatore di soglia confronta il pin THRES con 2/3 VCC, il comparatore di trigger confronta il pin TRIG con 1/3 VCC. La terza è un flip-flop SR che i due comparatori impostano e azzerano, e la quarta è lo stadio di uscita comandato dal flip-flop, insieme al transistor di scarica che svuota il condensatore.

La regola in realtà è molto semplice: quando la tensione su TRIG scende sotto 1/3 VCC, l'uscita va HIGH e il transistor di scarica si spegne. Quando la tensione su THRES supera 2/3 VCC, l'uscita va LOW e il transistor di scarica entra in conduzione, portando il pin 7 a GND. Se non succede nessuna delle due cose, l'uscita mantiene lo stato precedente. A fissare il tempo è la durata della carica e della scarica del condensatore esterno, attraverso una resistenza, tra queste due soglie. Con 5 V di alimentazione le soglie sono 3,33 V e 1,67 V; con 9 V sono 6 V e 3 V. Si dice spesso che il nome derivi dalle tre resistenze interne da 5 kΩ, ma Camenzind ha raccontato che Signetics scelse il numero in modo arbitrario.

CaratteristicaNE555 (bipolare)TLC555 (CMOS)
Tensione di alimentazione4,5–16 V (SE555: fino a 18 V)2–15 V (LMC555: da 1,5 V)
Corrente a riposo (5 V)2–6 mACirca 0,2 mA
Corrente di uscitaEroga e assorbe fino a 200 mAEroga circa 10 mA, assorbe 100 mA
Livello HIGH in uscitaCirca 1,5–1,7 V sotto VCCFino a VCC (rail-to-rail)
Frequenza massima consigliata100 kHzCirca 2 MHz
Funziona a 3,3 VNoSì
Versione doppiaNE556 (14 pin)TLC556 (14 pin)

Piedinatura del NE555 (pinout)

La tacca a mezzaluna o il piccolo puntino sulla parte superiore del chip indica il pin 1. Con la tacca a sinistra e guardando dall'alto, i pin 1–4 vanno da sinistra a destra nella fila inferiore e i pin 5–8 da destra a sinistra nella fila superiore; la numerazione procede quindi in senso antiorario e il pin 8 (VCC) si trova proprio di fronte al pin 1. Il contenitore DIP-8 si inserisce perfettamente a cavallo del canale centrale della breadboard: ogni fila di piedini deve stare su un lato del canale.

PinNomeFunzioneCollegamento tipico
1GNDMassa (0 V)Negativo dell'alimentazione
2TRIG (trigger)Porta l'uscita HIGH e avvia la temporizzazione quando scende sotto 1/3 VCCAstabile: al pin 6; monostabile: pull-up + pulsante
3OUT (uscita)Uscita; nel NE555 eroga o assorbe fino a 200 mALED con resistenza, buzzer, transistor
4RESETForza l'uscita LOW se portato sotto circa 0,7 VDirettamente a VCC se non usato
5CONT (controllo)Accesso diretto al riferimento di 2/3 VCC; sposta le soglieCondensatore da 10 nF verso GND
6THRES (soglia)Porta l'uscita LOW e termina la temporizzazione sopra 2/3 VCCAl condensatore di temporizzazione
7DISCH (scarica)Pin a collettore aperto collegato a GND mentre l'uscita è LOWAstabile: tra R1 e R2; monostabile: al pin 6
8VCCAlimentazione positiva (NE555: 4,5–16 V)Positivo + disaccoppiamento da 100 nF
L'errore più comune dei principianti è lasciare scollegato il pin RESET (4). Un pin flottante raccoglie disturbi e il chip si resetta a caso; il LED a volte lampeggia, a volte non risponde affatto. Se non lo usi, collega il pin 4 direttamente a VCC. Inoltre il 555 bipolare assorbe dall'alimentazione picchi di corrente brevi ma intensi a ogni commutazione dell'uscita; senza un condensatore ceramico da 100 nF e un elettrolitico da 10 µF vicinissimi ai pin 8 e 1, il circuito può attivarsi da solo.

Tre modi di funzionamento: astabile, monostabile e bistabile

ModoDetto ancheCosa faUso tipico
AstabileMultivibratore astabileGenera da solo un'onda quadra continuaLampeggiatore LED, tono per buzzer, segnale di clock, PWM
MonostabileMultivibratore monostabile (one-shot)Quando riceve un trigger resta HIGH per un tempo fisso, poi torna LOWLuce temporizzata, temporizzatore luce scale, allungamento di impulsi
BistabileFlip-flopVa HIGH con TRIG, LOW con RESET e mantiene lo stato; nessuna temporizzazioneInterruttore on/off a due pulsanti

Circuito astabile: lampeggiatore LED con il NE555

Nel circuito astabile i pin TRIG (2) e THRES (6) vengono uniti e collegati al condensatore di temporizzazione. Il condensatore si carica da VCC attraverso R1 e R2; quando la sua tensione raggiunge 2/3 VCC l'uscita va LOW, il transistor di scarica entra in conduzione e il condensatore si scarica verso il pin 7 solo attraverso R2. Quando la tensione scende a 1/3 VCC l'uscita torna HIGH e il ciclo si ripete da solo. Il condensatore non si svuota mai del tutto, ma oscilla tra 1/3 e 2/3 VCC; solo all'accensione parte da zero, per questo il primo periodo HIGH è un po' più lungo. Il circuito seguente funziona con una batteria da 9 V e accende due LED in modo alternato una volta al secondo: è il lampeggiante della polizia più semplice che si possa fare.

  1. Inserisci il 555 a cavallo del canale centrale della breadboard con la tacca rivolta a sinistra. Se non sai come è collegata internamente una breadboard, leggi prima Cos'è una breadboard?.
  2. Collega i pin 8 (VCC) e 4 (RESET) alla linea dei +9 V e il pin 1 (GND) alla linea negativa. Inserisci un condensatore ceramico da 100 nF tra i pin 8 e 1, il più vicino possibile al chip.
  3. Collega R1 = 10 kΩ tra i pin 8 e 7 e R2 = 68 kΩ tra i pin 7 e 6.
  4. Unisci i pin 6 e 2 con un filo. Da questo punto collega verso GND un condensatore elettrolitico da C = 10 µF; il piedino corto (negativo) deve andare dal lato di GND.
  5. Inserisci un condensatore da 10 nF (sigla 103) tra il pin 5 (CONT) e GND.
  6. Dall'uscita (pin 3) passa attraverso una resistenza da 470 Ω fino all'anodo del primo LED e collega il catodo a GND; questo LED si accende quando l'uscita è HIGH. Collega l'anodo del secondo LED a +9 V tramite 470 Ω e il catodo all'uscita; questo LED si accende quando l'uscita è LOW.
  7. Collega la batteria: i due LED dovrebbero accendersi alternandosi per circa 0,54 s e 0,47 s. Se non si accende nessuno dei due, controlla per prima cosa che il pin 4 sia a VCC.

A 9 V l'uscita HIGH del NE555 è di circa 7,5 V, quindi nel primo LED scorrono circa 12 mA e nel secondo circa 15 mA. Se alimenti il circuito a 5 V, abbassa le resistenze a 220–330 Ω; calcola il valore con il calcolatore della resistenza per LED e consulta Cos'è un LED? per tutto ciò che riguarda il LED. Poiché la frequenza non dipende dalla tensione di alimentazione, gli stessi valori di R1, R2 e C danno sempre un lampeggio al secondo anche a 5 V.

Formule di frequenza e durata del NE555

Quando un condensatore si carica attraverso una resistenza R, la sua tensione sale seguendo una curva esponenziale; τ = R·C è la costante di tempo, spiegata in dettaglio in Cos'è un condensatore?. Passare da 1/3 VCC a 2/3 VCC richiede esattamente ln 2 · R · C ≈ 0,693 · R · C, perché in quel tempo la distanza che manca all'obiettivo si dimezza. Dato che la carica avviene attraverso R1 + R2 e la scarica solo attraverso R2, i tempi HIGH e LOW sono diversi. Sommando i due tempi e facendo il reciproco compare il fattore 1 / 0,693 ≈ 1,44 e si ottiene la famosa formula: f = 1,44 / ((R1 + 2·R2) · C).

GrandezzaFormulaEsempio: R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF
Tempo HIGH (tH)0,693 · (R1 + R2) · C0,54 s
Tempo LOW (tL)0,693 · R2 · C0,47 s
Periodo (T)0,693 · (R1 + 2·R2) · C1,01 s
Frequenza (f)1,44 / ((R1 + 2·R2) · C)0,99 Hz
Duty cycle(R1 + R2) / (R1 + 2·R2)53,4%
Durata dell'impulso monostabile (t)1,1 · R · C1,1 s con R = 100 kΩ, C = 10 µF
Condensatori usati in un circuito di temporizzazione con 555
Nel 555 è il condensatore, insieme alla resistenza, a fissare il tempo: elettrolitici (µF) per i secondi, ceramici o a film (nF) per frequenze nell'ordine dei kHz.

Quando scegli i valori, tieni presenti alcuni limiti. R1 deve essere di almeno 1 kΩ; altrimenti, quando il transistor di scarica conduce, collega VCC quasi direttamente a GND. Secondo il datasheet di Texas Instruments, a causa della piccola corrente assorbita dall'ingresso di soglia, R1 + R2 non dovrebbe superare circa 3,4 MΩ a 5 V e 10 MΩ a 15 V; in pratica restare tra 1 kΩ e 1 MΩ è la scelta più sicura. Non scendere sotto 1 nF per il condensatore, perché la capacità propria della breadboard e dei cavi falserebbe il calcolo. Usa il NE555 sotto i 100 kHz; per segnali più veloci scegli una versione CMOS. Per decifrare i numeri stampati su un condensatore usa lo strumento codice condensatore, e per vedere la curva di carica lo strumento costante di tempo RC.

R1R2CFrequenzaDutyUso
10 kΩ100 kΩ10 µF0,69 Hz52%Luce di avviso lenta
10 kΩ68 kΩ10 µF0,99 Hz53%Lampeggiatore LED, una volta al secondo
4,7 kΩ47 kΩ1 µF14,6 Hz52%Effetto stroboscopico veloce
1 kΩ10 kΩ100 nF686 Hz52%Tono per buzzer
1 kΩ6,8 kΩ100 nF986 Hz53%Segnale di prova intorno a 1 kHz
1 kΩ10 kΩ10 nF6,86 kHz52%Tono acuto, PWM
1 kΩ18 kΩ1 nF38,9 kHz51%Portante per telecomando IR (regola a 38 kHz con un trimmer)

Regolare il duty cycle: scendere sotto il 50%

Nel circuito astabile di base il condensatore si carica attraverso R1 + R2 ma si scarica solo attraverso R2, quindi il tempo HIGH è sempre più lungo del tempo LOW e il duty cycle non può scendere sotto il 50%; scegliendo R2 molto più grande di R1 ti avvicini al 50%, ma non vai mai sotto. La soluzione è aggiungere un diodo 1N4148 in parallelo a R2, con l'anodo verso il pin 7 e il catodo verso il pin 6. Durante la carica la corrente passa nel diodo e scavalca R2; durante la scarica il diodo è polarizzato inversamente e la corrente scorre in R2. Si ottiene così tH ≈ 0,693 · R1 · C e tL ≈ 0,693 · R2 · C, e il duty cycle scende a R1 / (R1 + R2). Per esempio, con R1 = 10 kΩ, R2 = 47 kΩ e C = 10 µF il LED resta acceso 69 ms e spento 326 ms: un lampo breve e ben visibile con un duty cycle del 17,5%. La caduta di circa 0,6 V del diodo allunga un po' il tempo HIGH rispetto al calcolo, soprattutto a 5 V. Per capire come si comportano i diodi, leggi Cos'è un diodo?.

Se vuoi tenere fissa la frequenza e regolare solo il duty cycle, usa un potenziometro e due diodi. Collega il cursore del potenziometro al pin 7; collega un estremo al condensatore tramite un diodo (anodo dal lato del potenziometro) e l'altro estremo, sempre al condensatore, tramite un secondo diodo orientato al contrario (catodo dal lato del potenziometro). Con R1 = 1 kΩ, un potenziometro da 100 kΩ e C = 10 nF la frequenza resta a circa 1,4 kHz mentre il duty cycle varia all'incirca dall'1% al 99%, perché ruotando il potenziometro la somma delle resistenze di carica e scarica resta la stessa. Con un MOSFET in uscita è il metodo classico per regolare la velocità di un motore in corrente continua o la luminosità di una striscia LED a 12 V; trovi i dettagli in Cos'è il PWM? e Usare un MOSFET con Arduino.

Circuito monostabile: impulso singolo e luce temporizzata

Nel circuito monostabile i pin 6 (THRES) e 7 (DISCH) sono uniti; da questo punto parte una resistenza R verso VCC e un condensatore C verso GND. Il pin TRIG (2) viene tenuto HIGH da una resistenza di pull-up. A riposo l'uscita è LOW e il transistor di scarica tiene vuoto il condensatore. Quando su TRIG arriva un breve impulso LOW, l'uscita va HIGH, la scarica si interrompe e il condensatore comincia a caricarsi attraverso R. Quando la sua tensione raggiunge 2/3 VCC, l'uscita torna LOW e il condensatore viene scaricato all'istante. Questa volta la carica parte da zero fino a 2/3 VCC, quindi l'impulso dura ln 3 · R · C ≈ 1,1 · R · C e anche in questo caso non dipende dalla tensione di alimentazione.

  1. Collega i pin 8 e 4 a +5 V e il pin 1 a GND; inserisci 100 nF tra i pin 8 e 1 e 10 nF tra il pin 5 e GND.
  2. Unisci i pin 6 e 7. Da questo punto collega R = 470 kΩ verso +5 V e un condensatore elettrolitico da C = 100 µF verso GND (piedino negativo a GND).
  3. Porta il pin TRIG (2) a +5 V con una resistenza da 10 kΩ e collega un pulsante tra il pin 2 e GND. Per i dettagli sul collegamento dei pulsanti, leggi Come collegare un pulsante ad Arduino.
  4. Per la prima prova, collega un LED all'uscita (pin 3) tramite una resistenza da 330 Ω.
  5. Premi brevemente il pulsante: il LED resta acceso circa 1,1 × 470 kΩ × 100 µF ≈ 52 secondi e poi si spegne. Per la tolleranza di ±20% dell'elettrolitico, un risultato tra 42 e 62 secondi è normale.
  6. Per una lampada vera, pilota un relè al posto del LED: dall'uscita passa con 1 kΩ alla base di un transistor BC547, collega l'emettitore a GND e il collettore a un capo della bobina del relè; l'altro capo della bobina va a +5 V. Non dimenticare un diodo 1N4007 in antiparallelo alla bobina (catodo verso +5 V); per il ruolo del transistor, leggi Cos'è un transistor?.
Se tieni premuto il pulsante più a lungo della temporizzazione, l'uscita resta HIGH anche a tempo scaduto; secondo il datasheet, TRIG deve tornare HIGH almeno 10 µs prima della fine dell'intervallo perché questo termini. Per tempi lunghi aumenta C, non R: se la corrente di perdita dell'elettrolitico si avvicina alla piccola corrente di carica che arriva da R, il condensatore non raggiunge mai 2/3 VCC e la lampada non si spegne; tieni quindi R sotto 1 MΩ. Se commuti una lampada a 230 V con un relè, non dare mai tensione al circuito prima di aver isolato la parte di rete e segui le regole di sicurezza di Cos'è un modulo relè?.
RCTempo (1,1 · R · C)Uso
10 kΩ1 µF11 msAntirimbalzo per pulsanti, allungare impulsi brevi
100 kΩ10 µF1,1 sBip breve, campanello
220 kΩ47 µF11,4 sIlluminazione di breve durata
470 kΩ100 µF52 sLuce scale temporizzata, lampada ritardata
10 kΩ + potenziometro da 1 MΩ100 µF1,1–111 sTimer regolabile

Per interrompere la temporizzazione in anticipo puoi aggiungere un secondo pulsante sul pin RESET (4): porta il pin a VCC con 10 kΩ e collega il pulsante tra RESET e GND; appena lo premi, l'uscita va LOW e il condensatore viene scaricato. Un monostabile a volte si attiva da solo una volta quando riceve alimentazione. Per evitarlo, collega il pin RESET a VCC tramite 10 kΩ e a GND tramite 10 µF: all'accensione il chip resta in reset per il breve tempo necessario a caricare quel condensatore e inizia a funzionare normalmente quando l'alimentazione è stabile.

Come si usa il NE555 con Arduino?

Il 555 e Arduino non sono rivali, ma una buona squadra. Un semplice lampeggiatore puoi farlo anche con Arduino usando millis(), ma il 555 non richiede codice, funziona fino a 16 V, eroga 200 mA in uscita e continua a lavorare anche se Arduino si blocca. Per questo il 555 affianca di solito Arduino in uno di tre ruoli: come sorgente di segnale che Arduino misura, come timer hardware che Arduino attiva (misuratore di capacità, allungatore di impulsi) e come oscillatore che Arduino accende e spegne tramite il pin RESET (sirena o tono per buzzer). Nell'ultimo caso basta collegare il pin 4 del 555 a un'uscita di Arduino: con il pin HIGH l'oscillatore funziona, con il pin LOW tace.

Pin del 555Arduino UnoESP32Raspberry Pi Pico
8 VCC5V3V3 (solo 555 CMOS)3V3(OUT) (555 CMOS) oppure VBUS (NE555)
1 GNDGNDGNDGND
3 OUTD2GPIO 27GP15 (con NE555, tramite partitore 10 kΩ + 20 kΩ)
2 TRIG (esempio di trigger)D7GPIO 26GP14 (solo con 555 CMOS alimentato a 3V3)
4 RESET5V o un pin digitale3V33V3(OUT)
Quando colleghi un 555 ad Arduino, alimenta entrambi dagli stessi 5 V e unisci le masse. L'uscita di un 555 alimentato a 9 o 12 V arriva a 7–10 V e danneggia l'ingresso di Arduino; in quel caso devi abbassarla con un partitore di tensione. Il livello HIGH del NE555 a 5 V è di circa 3,5 V, appena sopra la soglia di 3 V dell'Uno; per un HIGH più sicuro puoi aggiungere una resistenza di pull-up da 10 kΩ tra l'uscita e i 5 V.

Nel primo esempio Arduino misura frequenza e duty cycle del lampeggiatore e li confronta con i valori calcolati con le formule. Il circuito è lo stesso astabile visto sopra (R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF), ma alimentato dal pin 5V di Arduino invece che a 9 V, con l'uscita (pin 3) collegata a D2. La funzione pulseIn() restituisce, in microsecondi, per quanto tempo un pin resta HIGH o LOW.

Arduino (C++)
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}

Per impostazione predefinita pulseIn() aspetta al massimo 1 secondo; con un segnale di circa 1 Hz attende prima la fine dell'impulso in corso e poi l'inizio di uno nuovo, perciò abbiamo portato il timeout a 3 secondi. È normale che nel Monitor seriale la frequenza misurata si discosti del 5–20% da quella calcolata; la maggior parte della differenza dipende dalla tolleranza dell'elettrolitico. Questa differenza è anche un modo per conoscere il valore reale del condensatore: inserisci la frequenza misurata in f = 1,44 / ((R1 + 2·R2) · C) e ricava C. Con segnali più veloci, contare i fronti con un interrupt invece di usare pulseIn() dà risultati più precisi.

Attivare il 555 con Arduino: un misuratore di capacità

Dato che in modalità monostabile l'impulso dura t = 1,1 · R · C, se conosci R e misuri t puoi trovare il valore del condensatore con C = t / (1,1 · R). Il circuito è questo: pin 6 e 7 uniti, con 100 kΩ da questo punto verso 5 V e il condensatore da misurare verso GND; pin 4 e 8 a 5 V, pin 5 a GND tramite 10 nF. Il pin TRIG (2) viene portato a 5 V con 10 kΩ e collegato a D7, mentre l'uscita (pin 3) va a D2. Arduino invia da D7 un impulso LOW di 10 µs e misura con micros() per quanto tempo l'uscita resta HIGH.

Arduino (C++)
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}

Qui misuriamo a mano con micros() invece di usare pulseIn(), perché subito dopo il trigger l'uscita è già HIGH e pulseIn() considererebbe quell'impulso come «impulso precedente» e lo salterebbe. Sull'Uno micros() ha una risoluzione di 4 µs; con 100 kΩ un condensatore da 1 nF dà un impulso di 110 µs, quindi il campo di misura va all'incirca da 1 nF a 47 µF. Misura un condensatore noto e scrivi il rapporto tra il suo valore reale e quello misurato nel fattore CAL per calibrare il tuo strumento. Prima di collegare un elettrolitico, scaricalo cortocircuitandone i piedini e collega il piedino positivo dal lato dei pin 6 e 7.

Il NE555 con ESP32 e Raspberry Pi Pico

ESP32 e Raspberry Pi Pico funzionano a 3,3 V e i loro pin non tollerano i 5 V. Il classico NE555, invece, richiede almeno 4,5 V e quindi non può essere alimentato a 3,3 V. La soluzione più pulita è un 555 CMOS come il TLC555, l'LMC555 o l'ICM7555: ha la stessa piedinatura, si alimenta dal pin 3V3 e la sua uscita va da 0 a 3,3 V, quindi si collega direttamente a un GPIO. Se hai solo un NE555, alimentalo a 5 V e dividi la sua uscita con 10 kΩ (in serie) e 20 kΩ (verso GND). Poiché il livello HIGH del NE555 è di circa 3,5 V, l'uscita del partitore scende a circa 2,3 V: abbastanza per la soglia di 2 V del Pico, ma al limite per la soglia di circa 2,5 V dell'ESP32. Con l'ESP32 preferisci quindi un 555 CMOS.

Nell'esempio con ESP32, un 555 CMOS con R1 = 1 kΩ, R2 = 6,8 kΩ e C = 100 nF genera un segnale di circa 986 Hz; ha le stesse proporzioni del lampeggiatore, ma è mille volte più veloce. L'ESP32 esegue una routine di interrupt a ogni fronte di salita e stampa quanti fronti ha contato in un secondo; quel numero è direttamente la frequenza in Hz. Il duty cycle si calcola da un singolo tempo HIGH misurato con pulseIn().

Arduino (C++)
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}

Sul Pico la funzione machine.time_pulse_us() di MicroPython è l'equivalente di pulseIn() di Arduino, con una differenza importante: se il pin è già al livello richiesto, inizia a misurare subito. Per questo la prima chiamata serve a saltare un impulso incompleto e a sincronizzarsi su un fronte del segnale; le misure LOW e HIGH che seguono riguardano impulsi completi. L'esempio misura il lampeggiatore da un lampo al secondo e a ogni lettura cambia lo stato del LED integrato.

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)

Idee di progetto con il NE555

  • Lampeggiante della polizia: Accendi alternandoli un LED rosso e uno blu, uno collegato dall'uscita a GND e l'altro da VCC all'uscita; con 4,7 kΩ, 47 kΩ e 1 µF ottieni un effetto stroboscopico veloce.
  • Sirena bitonale: Porta l'uscita di un primo 555 lento, tramite una resistenza, al pin 5 (CONT) di un secondo 555; quando le soglie si spostano, il tono del secondo chip sale e scende. Per il suono usa un buzzer passivo o un piccolo altoparlante.
  • Luce scale temporizzata: Costruisci con un 555 monostabile, un relè e dei pulsanti un timer che tenga accesa una lampada per un minuto, con i pulsanti dei vari piani collegati in parallelo.
  • Misuratore di capacità: Con il codice Arduino di questo articolo misura i condensatori con la sigla cancellata e mostra il risultato su un display LCD I2C.
  • Trasmettitore IR: Pilota un LED infrarosso con un 555 astabile regolato a 38 kHz e rileva il segnale con un ricevitore IR; ottieni un semplice allarme a interruzione di fascio. I ricevitori per telecomandi come il TSOP o il VS1838B possono scambiare una portante continua per un disturbo e sopprimerla dopo poco, quindi accendi e spegni questo 555 dal suo pin RESET con un secondo 555 lento per trasmettere a raffiche.
  • Regolatore di velocità per motore: Collega il circuito PWM a frequenza fissa con potenziometro a un MOSFET per regolare la potenza di un motore in corrente continua a 12 V o di una striscia LED.
  • Rilevatore di impulsi mancanti: Aggiungi un transistor PNP (per esempio un BC557) in parallelo al condensatore di temporizzazione, con la base collegata a TRIG; ogni impulso LOW che Arduino invia a intervalli regolari attiva il 555 e insieme scarica il condensatore, così la temporizzazione riparte da capo. Se Arduino si blocca e gli impulsi si fermano, il tempo scade e il 555 fa scattare un allarme o riavvia il sistema.

Errori comuni e soluzioni

SintomoCausa probabileSoluzione
Il LED non lampeggia, resta acceso o spentoRESET (4) scollegato o a GND; nell'astabile, pin 2 e 6 non unitiCollega RESET a VCC e unisci i pin 2 e 6 con un filo
La frequenza è molto diversa dal calcoloTolleranza di ±20% dell'elettrolitico, valore letto male (nF invece di µF), C troppo piccoloMisura il condensatore, controlla la sigla, usa un condensatore a film per lavori precisi
Il circuito è instabile o si attiva da soloNessun disaccoppiamento dell'alimentazione, pin CONT o TRIG scollegato100 nF + 10 µF tra i pin 8 e 1, 10 nF sul pin 5, pull-up da 10 kΩ su TRIG
Il chip si scaldaUscita in cortocircuito su un LED senza resistenza o su GND; R1 troppo piccolaMetti una resistenza in serie al LED e usa R1 di almeno 1 kΩ
Il monostabile non finisce maiPulsante tenuto premuto o TRIG bloccato LOWPremi brevemente o invia da Arduino un breve impulso LOW
Il chip si resetta o si guasta quando il relè si diseccitaManca il diodo che assorbe la tensione inversa della bobinaCollega un 1N4007 in antiparallelo alla bobina del relè
Arduino legge male o il pin si è danneggiatoIl 555 è alimentato a 9–12 VAlimenta il 555 a 5 V o abbassa l'uscita con un partitore di tensione
Il duty cycle non scende sotto il 50%Limite naturale del circuito astabile di baseAggiungi un diodo 1N4148 in parallelo a R2
Quando il circuito non funziona, misura prima con il multimetro: sui pin 8 e 4 devi trovare la tensione di alimentazione e sul pin 5 circa 2/3 di VCC (6 V con 9 V). Se nel circuito astabile la tensione del condensatore sale e scende lentamente tra 1/3 e 2/3 VCC, il chip funziona e il problema è dal lato dell'uscita. Per la tecnica di misura, leggi Come usare il multimetro.

Il NE555 è uno dei componenti migliori per imparare, perché racchiude in un solo chip economico le idee di base della temporizzazione in elettronica (carica RC, soglia, comparatore, flip-flop). Comincia dal lampeggiatore da un lampo al secondo, poi cambia i valori per ottenere un tono per buzzer e infine prova la luce temporizzata monostabile e il misuratore di capacità con Arduino. Nell'app BlueGrays trovi passo dopo passo, con schemi e codice, progetti come il lampeggiante della polizia, le luci del passaggio a livello, l'illuminazione delle scale e il buzzer, così puoi provare fianco a fianco le versioni Arduino e Pico dei tuoi circuiti con il 555.

Domande frequenti

A cosa serve il timer NE555?

Il 555 è un circuito integrato timer di uso generale che fissa i tempi con una resistenza e un condensatore. In modalità astabile genera un'onda quadra continua per lampeggiatori LED, toni per buzzer o segnali di clock; in modalità monostabile fornisce un'uscita che resta attiva per un tempo fisso dopo un trigger, per luci temporizzate o timer. Non richiede microcontrollore né codice.

Con che tensione funziona il NE555?

Il classico NE555 funziona tra 4,5 e 16 V (l'SE555 fino a 18 V); 5, 9 e 12 V sono le alimentazioni più comuni. Per tensioni basse come 3,3 V si usano versioni CMOS come il TLC555 (2–15 V), l'ICM7555 o l'LMC555, che parte da 1,5 V. Finché l'alimentazione resta costante, frequenza e durata non dipendono dalla tensione.

Quali valori usare per un lampeggiatore da 1 Hz con il NE555?

Con R1 = 10 kΩ, R2 = 68 kΩ e C = 10 µF si ottiene f = 1,44 / ((10 kΩ + 2 · 68 kΩ) · 10 µF) ≈ 0,99 Hz; il LED resta acceso circa 0,54 s e spento 0,47 s. Per la tolleranza di ±20% dell'elettrolitico, il valore reale sarà un po' diverso. Per una regolazione fine sostituisci R2 con un trimmer.

Come si porta il duty cycle del 555 sotto il 50%?

Nel circuito astabile di base il condensatore si carica attraverso R1 + R2 ma si scarica solo attraverso R2, quindi il tempo HIGH è sempre più lungo del tempo LOW. Se aggiungi un diodo 1N4148 in parallelo a R2, con l'anodo verso il pin 7, la carica avviene solo attraverso R1. Allora tH ≈ 0,693 · R1 · C e tL ≈ 0,693 · R2 · C, e scegliendo R1 più piccola di R2 scendi sotto il 50%.

Che differenza c'è tra NE555 e TLC555?

Il NE555 è realizzato con transistor bipolari, richiede almeno 4,5 V e può erogare fino a 200 mA in uscita, ma a riposo assorbe 2–6 mA e fatica sopra i 100 kHz. Il TLC555 è una versione CMOS: funziona da 2 V, assorbe circa 0,2 mA, arriva a circa 2 MHz e la sua uscita sale fino alla tensione di alimentazione; in compenso eroga solo circa 10 mA. I due hanno la stessa piedinatura.

Si possono lasciare scollegati i pin 4 e 5 del NE555?

Il pin RESET (4) non va mai lasciato scollegato; se non lo usi collegalo direttamente a VCC, altrimenti i disturbi possono resettare il chip a caso. Il pin CONT (5) tecnicamente può restare libero, ma è una buona abitudine collegarlo a GND con un condensatore da 10 nF, così il rumore non sposta le soglie. Se applichi una tensione esterna a questo pin, cambiano le soglie e quindi la frequenza.

Vedi tutti i progetti
Lampeggiante della polizia a LED
#4Principiante

Lampeggiante della polizia a LED

Proprio come le luci di un'auto della polizia: il LED rosso lampeggia tre volte velocissimo, poi tocca al blu per altre tre volte, e la sequenza si ripete senza sosta. Ti bastano due LED e due resiste

4.7(99)
235
Uso del cicalino
#13Principiante

Uso del cicalino

Ti sei mai chiesto come fa un campanello o un allarme a suonare? L'Arduino fa suonare un piccolo cicalino a intervalli brevi: bip, pausa, bip, pausa. Vedi come l'elettricità diventa suono e fai il pri

4.7(89)
158
Impostazione della frequenza con cicalino
#14Intermedio

Impostazione della frequenza con cicalino

Comandi il suono di un buzzer con quattro pulsanti: uno avvia il suono, uno lo zittisce e gli altri due lo rendono più acuto o più grave. Tieni premuto il pulsante su o giù e il tono cambia passo dopo

4.6(68)
115
Raspberry Pi Pico Effetto Lampeggiante Polizia (Rosso + Blu Stroboscopio, GP11 + GP12)
#151Principiante

Raspberry Pi Pico Effetto Lampeggiante Polizia (Rosso + Blu Stroboscopio, GP11 + GP12)

Simuliamo il lampeggiante di un'auto della polizia con un Raspberry Pi Pico nella sua forma più semplice! 🚨 I LED rosso e blu si alternano (flip-flop): mentre il rosso è acceso il blu è spento, e ogni 0,3 secondi si scambiano, all'infinito. Il codice scrive i due passi direttamente in un unico ciclo `while True`; la velocità si regola con la costante `WAIT_MS`.

4.7(3)
10
Segnalatori lampeggianti a LED per passaggi a livello
#146Avanzato
Premium

Segnalatori lampeggianti a LED per passaggi a livello

Segnalatori a LED per passaggi a livello.

5.0(2)
14
Illuminazione intelligente di scale e corridoi
#82Intermedio
Premium

Illuminazione intelligente di scale e corridoi

Metti piede sulle scale o nel corridoio e le luci si accendono gradino dopo gradino nella direzione in cui cammini. A ogni estremità c'è un sensore di distanza; davanti a qualunque dei due passi, gli

5.0(35)
51
Lampadina 220V con pulsante (Push)
#19Avanzato
Premium

Lampadina 220V con pulsante (Push)

Finché tieni premuto il pulsante, una vera lampadina da 220 volt resta accesa, e si spegne appena lo lasci. Il piccolo segnale dell'Arduino non può accendere la lampadina direttamente, quindi in mezzo

4.4(30)
38
ESP32 Effetto Lampeggiante della Polizia
#109Principiante
Premium

ESP32 Effetto Lampeggiante della Polizia

Simula i lampeggianti di un'auto della polizia facendo lampeggiare rapidamente gruppi di LED rossi e blu. Con 2 LED in ogni gruppo l'effetto è più drammatico. Un classico esempio di pattern di toggle veloce e controllo a gruppi.

4.6(21)
36