555 Entegresi: Pin Dizilimi, Astable ve Monostable Devreler
555 entegresi nasıl çalışır? Pin dizilimi, astable ve monostable bağlantı, f = 1,44/((R1+2R2)C) ve t = 1,1RC formülleri, LED flaşör ve Arduino kodu.
555 entegresi, yalnızca bir direnç ve bir kondansatörle mikrosaniyelerden saatlere kadar süre ayarlayabilen, 8 bacaklı ucuz bir zamanlayıcı (timer) entegresidir. Bir LED'i belirli aralıklarla yakıp söndürmek, butona basıldıktan sonra lambayı bir dakika açık tutmak, buzzer'dan ton çıkarmak ya da bir motoru PWM ile sürmek için mikrodenetleyiciye ve koda ihtiyaç duymaz. 1971'de Hans Camenzind tarafından Signetics için tasarlanan entegre, 1972'de piyasaya çıktığından beri dünyanın en çok üretilen entegrelerinden biri oldu; 2003'te yılda yaklaşık bir milyar adet üretildiği tahmin ediliyordu.
Bu yazıda 555'in pin dizilimini, içindeki karşılaştırıcılarla flip-flop'un nasıl çalıştığını, iki temel bağlantıyı (astable flaşör ve monostable tek atım), frekans ve süre formüllerinin nereden geldiğini, duty cycle'ı %50'nin altına indirmeyi ve 555'i Arduino, ESP32 ve Raspberry Pi Pico ile birlikte kullanmayı öğreneceksin. Değerleri elle hesaplamak istemezsen 555 zamanlayıcı hesaplayıcısı frekansı, duty cycle'ı ve dalga şeklini anında gösterir.
555 entegresi nedir, nasıl çalışır?
555'in içinde dört temel parça vardır. Birincisi VCC ile GND arasına seri bağlanmış üç eşit dirençten oluşan bir gerilim bölücüdür (klasik NE555'te her biri 5 kΩ); bu bölücü iki referans gerilimi üretir: VCC'nin 2/3'ü ve 1/3'ü. İkincisi bu referanslara bağlı iki karşılaştırıcıdır (comparator): eşik karşılaştırıcısı THRES pinini 2/3 VCC ile, tetik karşılaştırıcısı TRIG pinini 1/3 VCC ile kıyaslar. Üçüncüsü bu iki karşılaştırıcının kurup sıfırladığı bir SR flip-flop, dördüncüsü de flip-flop'a bağlı çıkış katı ile kondansatörü boşaltan deşarj transistörüdür.
Kural aslında çok basittir: TRIG pinindeki gerilim 1/3 VCC'nin altına düştüğünde çıkış HIGH olur ve deşarj transistörü kapanır. THRES pinindeki gerilim 2/3 VCC'yi geçtiğinde çıkış LOW olur ve deşarj transistörü açılarak 7. pini GND'ye çeker. İkisi de olmuyorsa çıkış önceki durumunu korur. Zamanı belirleyen şey, dışarıdaki kondansatörün bir direnç üzerinden bu iki eşik arasında dolup boşalma süresidir. 5 V beslemede eşikler 3,33 V ve 1,67 V, 9 V beslemede 6 V ve 3 V olur. Entegrenin adının içerideki üç 5 kΩ'luk dirençten geldiği sık söylenir; Camenzind ise sayının Signetics tarafından keyfi olarak seçildiğini anlatmıştır.
| Özellik | NE555 (bipolar) | TLC555 (CMOS) |
|---|---|---|
| Besleme gerilimi | 4,5–16 V (SE555: 18 V'a kadar) | 2–15 V (LMC555: 1,5 V'tan başlar) |
| Boştaki akım (5 V) | 2–6 mA | Yaklaşık 0,2 mA |
| Çıkış akımı | 200 mA'e kadar verir ve çeker | Yaklaşık 10 mA verir, 100 mA çeker |
| Çıkışın HIGH seviyesi | VCC'nin yaklaşık 1,5–1,7 V altında | VCC'ye kadar çıkar (rail-to-rail) |
| Önerilen en yüksek frekans | 100 kHz | Yaklaşık 2 MHz |
| 3,3 V ile çalışma | Çalışmaz | Çalışır |
| Çift zamanlayıcılı sürüm | NE556 (14 bacak) | TLC556 (14 bacak) |
555 pin dizilimi (pinout)
Entegrenin üstündeki yarım ay şeklindeki çentik ya da küçük nokta 1. pini gösterir. Çentik soldayken üstten baktığında alt sırada soldan sağa 1–4, üst sırada sağdan sola 5–8 numaralı pinler bulunur; yani numaralar saat yönünün tersine artar ve 1 numaranın tam karşısında 8 numara (VCC) vardır. DIP-8 kılıf breadboard'un ortasındaki kanalın üzerine tam oturur; bir sıra bacak kanalın bir yanında, diğer sıra öbür yanında kalmalıdır.
| Pin | Adı | Görevi | Tipik bağlantı |
|---|---|---|---|
| 1 | GND | Toprak (0 V) | Beslemenin eksisi |
| 2 | TRIG (tetik) | 1/3 VCC'nin altına düşünce çıkışı HIGH yapar, zamanlamayı başlatır | Astable: 6. pine; monostable: pull-up + buton |
| 3 | OUT (çıkış) | Çıkış; NE555'te 200 mA'e kadar akım verir ya da çeker | Direnç üzerinden LED, buzzer, transistör |
| 4 | RESET | Yaklaşık 0,7 V'un altına çekilince çıkışı zorla LOW yapar | Kullanılmıyorsa doğrudan VCC |
| 5 | CONT (kontrol) | 2/3 VCC referansına doğrudan erişim; eşikleri değiştirir | 10 nF kondansatörle GND'ye |
| 6 | THRES (eşik) | 2/3 VCC'yi geçince çıkışı LOW yapar, zamanlamayı bitirir | Zamanlama kondansatörüne |
| 7 | DISCH (deşarj) | Çıkış LOW iken GND'ye kısa devre olan açık kollektör uç | Astable: R1–R2 arası; monostable: 6. pine |
| 8 | VCC | Pozitif besleme (NE555: 4,5–16 V) | Beslemenin artısı + 100 nF dekuplaj |
Üç çalışma modu: astable, monostable ve bistable
| Mod | Türkçe adı | Ne yapar? | Örnek kullanım |
|---|---|---|---|
| Astable | Kararsız multivibratör | Kendi kendine sürekli kare dalga üretir | LED flaşör, buzzer tonu, saat sinyali, PWM |
| Monostable | Tek kararlı multivibratör | Tetiklenince belirli bir süre HIGH kalır, sonra LOW'a döner | Gecikmeli lamba, merdiven otomatiği, darbe uzatma |
| Bistable | Çift kararlı (flip-flop) | TRIG ile HIGH, RESET ile LOW olur ve durumunu korur; zamanlama yoktur | İki butonlu aç-kapa anahtarı |
Astable bağlantı: 555 ile LED flaşör devresi
Astable bağlantıda TRIG (2) ve THRES (6) pinleri birleştirilir ve zamanlama kondansatörüne bağlanır. Kondansatör VCC'den R1 ve R2 üzerinden dolar; gerilimi 2/3 VCC'ye ulaşınca çıkış LOW olur, deşarj transistörü açılır ve kondansatör bu kez yalnızca R2 üzerinden 7. pine boşalır. Gerilim 1/3 VCC'ye indiğinde çıkış yeniden HIGH olur ve döngü kendi kendine sürer. Kondansatör hiçbir zaman sıfıra kadar boşalmaz, hep 1/3 ile 2/3 VCC arasında gidip gelir; yalnızca ilk açılışta boştan başladığı için ilk HIGH süresi biraz daha uzun olur. Aşağıdaki devre 9 V pil ile çalışır ve iki LED'i saniyede bir sırayla yakar; polis çakarının en basit hâli budur.
- 555'i breadboard'un ortasındaki kanalın üzerine, çentiği sola bakacak şekilde yerleştir. Breadboard'un iç bağlantılarını bilmiyorsan önce Breadboard Nedir? yazısına göz at.
- 8 (VCC) ve 4 (RESET) numaralı pinleri +9 V hattına, 1 (GND) numaralı pini eksi hatta bağla. 8 ile 1 arasına, entegreye olabildiğince yakın, 100 nF'lık bir seramik kondansatör tak.
- R1 = 10 kΩ direnci 8 ile 7 numaralı pinler arasına, R2 = 68 kΩ direnci 7 ile 6 numaralı pinler arasına bağla.
- 6 ve 2 numaralı pinleri bir kabloyla birleştir. Bu noktadan GND'ye C = 10 µF elektrolitik kondansatör bağla; kısa (eksi) bacağı GND tarafına gelmeli.
- 5 numaralı CONT pininden GND'ye 10 nF (üzerinde 103 yazar) bir kondansatör tak.
- 3 numaralı çıkıştan 470 Ω direnç üzerinden birinci LED'in anoduna git, katodunu GND'ye bağla; bu LED çıkış HIGH iken yanar. İkinci LED'in anodunu 470 Ω ile +9 V'a, katodunu çıkışa bağla; bu LED çıkış LOW iken yanar.
- Pili bağla: iki LED yaklaşık 0,54 s ve 0,47 s aralıklarla sırayla yanmalıdır. LED'ler hiç yanmıyorsa ilk iş 4 numaralı pinin VCC'de olduğunu kontrol et.
9 V'ta NE555'in HIGH çıkışı yaklaşık 7,5 V olduğu için birinci LED'den yaklaşık 12 mA, ikinci LED'den yaklaşık 15 mA akım geçer. Devreyi 5 V ile çalıştıracaksan dirençleri 220–330 Ω'a düşür; LED direnci hesabı için LED direnci hesaplayıcısını, LED'in kendisi için LED Nedir? yazısını kullanabilirsin. Frekans besleme geriliminden bağımsız olduğu için aynı R1, R2 ve C değerleri 5 V'ta da saniyede bir yanıp sönme verir.
555 frekans ve süre formülleri
Bir kondansatör R direnci üzerinden doldurulduğunda gerilimi üstel bir eğriyle yükselir; τ = R·C zaman sabitidir ve ayrıntılarını Kondansatör Nedir? yazısında bulabilirsin. Kondansatörün 1/3 VCC'den 2/3 VCC'ye çıkması tam ln 2 · R · C ≈ 0,693 · R · C sürer, çünkü hedefe kalan fark bu sürede yarıya iner. Dolum R1 + R2, boşalma yalnızca R2 üzerinden olduğu için HIGH ve LOW süreleri farklıdır. İki süre toplanıp tersi alındığında 1 / 0,693 ≈ 1,44 katsayısı ortaya çıkar ve meşhur formül elde edilir: f = 1,44 / ((R1 + 2·R2) · C).
| Büyüklük | Formül | Örnek: R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF |
|---|---|---|
| HIGH süresi (tH) | 0,693 · (R1 + R2) · C | 0,54 s |
| LOW süresi (tL) | 0,693 · R2 · C | 0,47 s |
| Periyot (T) | 0,693 · (R1 + 2·R2) · C | 1,01 s |
| Frekans (f) | 1,44 / ((R1 + 2·R2) · C) | 0,99 Hz |
| Duty cycle | (R1 + R2) / (R1 + 2·R2) | %53,4 |
| Monostable darbe süresi (t) | 1,1 · R · C | R = 100 kΩ, C = 10 µF için 1,1 s |

Değer seçerken birkaç sınırı bil. R1 en az 1 kΩ olmalıdır; aksi halde deşarj transistörü açıldığında VCC'yi neredeyse doğrudan GND'ye bağlar. Texas Instruments'ın veri sayfasına göre eşik girişinin çektiği küçük akım yüzünden R1 + R2 toplamı 5 V'ta yaklaşık 3,4 MΩ'u, 15 V'ta 10 MΩ'u geçmemelidir; pratikte 1 kΩ ile 1 MΩ arasında kalmak en güvenlisidir. Kondansatörde 1 nF'ın altına inme, çünkü breadboard'un ve kabloların kendi kapasitesi hesabı bozar. NE555'i 100 kHz'in altında kullan; daha hızlı sinyal için CMOS bir sürüm seç. Kondansatör üzerindeki sayıları çözmek için kondansatör kodu, dolum eğrisini görmek için RC zaman sabiti aracını kullanabilirsin.
| R1 | R2 | C | Frekans | Duty | Kullanım |
|---|---|---|---|---|---|
| 10 kΩ | 100 kΩ | 10 µF | 0,69 Hz | %52 | Yavaş uyarı ışığı |
| 10 kΩ | 68 kΩ | 10 µF | 0,99 Hz | %53 | Saniyede bir yanan LED flaşör |
| 4,7 kΩ | 47 kΩ | 1 µF | 14,6 Hz | %52 | Hızlı çakar efekti |
| 1 kΩ | 10 kΩ | 100 nF | 686 Hz | %52 | Buzzer tonu |
| 1 kΩ | 6,8 kΩ | 100 nF | 986 Hz | %53 | 1 kHz civarı test sinyali |
| 1 kΩ | 10 kΩ | 10 nF | 6,86 kHz | %52 | Yüksek ton, PWM |
| 1 kΩ | 18 kΩ | 1 nF | 38,9 kHz | %51 | IR kumanda taşıyıcısı (trimpotla 38 kHz'e ayarla) |
Duty cycle ayarı: %50'nin altına inmek
Temel astable devrede kondansatör R1 + R2 üzerinden dolup yalnızca R2 üzerinden boşaldığı için HIGH süresi her zaman LOW süresinden uzundur, yani duty cycle %50'nin altına inemez; R2'yi R1'e göre çok büyük seçersen %50'ye yaklaşırsın ama altına geçemezsin. Çözüm, R2'ye paralel bir 1N4148 diyot eklemektir: anodu 7. pine, katodu 6. pine bakacak şekilde. Dolum sırasında akım diyottan geçip R2'yi atlar; boşalmada diyot ters yönde kalır ve akım R2 üzerinden akar. Böylece tH ≈ 0,693 · R1 · C ve tL ≈ 0,693 · R2 · C olur, duty cycle da R1 / (R1 + R2) değerine iner. Örneğin R1 = 10 kΩ, R2 = 47 kΩ ve C = 10 µF ile LED 69 ms yanar, 326 ms söner: %17,5 duty ile kısa ve dikkat çekici bir flaş. Diyodun yaklaşık 0,6 V'luk gerilim düşümü, özellikle 5 V'ta HIGH süresini hesaplanandan biraz uzatır. Diyotların genel davranışı için Diyot Nedir? yazısına bakabilirsin.
Frekansı sabit tutup yalnızca duty cycle'ı ayarlamak istiyorsan bir potansiyometre ve iki diyot kullan. Potansiyometrenin orta ucunu 7. pine bağla; bir ucunu bir diyotla (anot potta) kondansatöre, diğer ucunu ters yönlü ikinci bir diyotla (katot potta) yine kondansatöre bağla. R1 = 1 kΩ, 100 kΩ'luk pot ve C = 10 nF ile frekans yaklaşık 1,4 kHz'te sabit kalırken duty cycle kabaca %1 ile %99 arasında değişir, çünkü pot döndükçe dolum ve boşalma dirençlerinin toplamı hep aynı kalır. Çıkışa bir MOSFET bağlayarak DC motor hızını ya da 12 V LED şeridin parlaklığını ayarlamanın klasik yolu budur; ayrıntılar PWM Nedir? ve Arduino ile MOSFET Kullanımı yazılarında.
Monostable bağlantı: tek atım ve gecikmeli lamba
Monostable bağlantıda 6 (THRES) ve 7 (DISCH) pinleri birleştirilir; bu noktadan VCC'ye bir R direnci, GND'ye bir C kondansatörü bağlanır. TRIG (2) pini bir pull-up dirençle HIGH tutulur. Beklemede çıkış LOW'dur ve deşarj transistörü kondansatörü boş tutar. TRIG'e kısa bir LOW darbesi geldiğinde çıkış HIGH olur, deşarj kapanır ve kondansatör R üzerinden dolmaya başlar. Gerilimi 2/3 VCC'ye ulaşınca çıkış LOW'a döner ve kondansatör anında boşaltılır. Bu kez dolum sıfırdan 2/3 VCC'ye kadar sürdüğü için süre ln 3 · R · C ≈ 1,1 · R · C olur ve yine besleme geriliminden bağımsızdır.
- 8 ve 4 numaralı pinleri +5 V'a, 1 numaralı pini GND'ye bağla; 8 ile 1 arasına 100 nF, 5 ile GND arasına 10 nF kondansatör tak.
- 6 ve 7 numaralı pinleri birleştir. Bu noktadan +5 V'a R = 470 kΩ, GND'ye C = 100 µF elektrolitik kondansatör (eksi bacak GND'de) bağla.
- 2 numaralı TRIG pinini 10 kΩ ile +5 V'a çek ve 2 ile GND arasına bir buton bağla. Buton bağlantısının ayrıntıları için Arduino'ya Buton Nasıl Bağlanır? yazısına bakabilirsin.
- Test için önce 3 numaralı çıkışa 330 Ω direnç üzerinden bir LED bağla.
- Butona kısa bas: LED yaklaşık 1,1 × 470 kΩ × 100 µF ≈ 52 saniye yanık kalıp söner. Elektrolitik kondansatörün ±%20 toleransı yüzünden 42–62 saniye arası bir sonuç normaldir.
- Gerçek bir lamba için LED yerine bir röle sür: çıkıştan 1 kΩ ile bir BC547 transistörün bazına git, emetörü GND'ye, kollektörü röle bobininin bir ucuna bağla; bobinin diğer ucu +5 V'a gider. Bobine ters paralel bir 1N4007 diyot (katodu +5 V tarafında) koymayı unutma; transistörün görevi için Transistör Nedir? yazısına bakabilirsin.
| R | C | Süre (1,1 · R · C) | Kullanım |
|---|---|---|---|
| 10 kΩ | 1 µF | 11 ms | Buton zıplamasını gidermek, kısa darbeyi uzatmak |
| 100 kΩ | 10 µF | 1,1 s | Kısa bip, kapı zili |
| 220 kΩ | 47 µF | 11,4 s | Kısa süreli aydınlatma |
| 470 kΩ | 100 µF | 52 s | Merdiven otomatiği, gecikmeli lamba |
| 10 kΩ + 1 MΩ pot | 100 µF | 1,1–111 s | Süresi ayarlanabilir zamanlayıcı |
Süreyi yarıda kesmek için 4 numaralı RESET pinine ikinci bir buton ekleyebilirsin: pini 10 kΩ ile VCC'ye çek ve butonu RESET ile GND arasına bağla; basıldığı an çıkış LOW olur ve kondansatör boşaltılır. Monostable devre, enerji ilk verildiğinde bazen kendiliğinden bir kez tetiklenir. Bunu önlemek için RESET pinini 10 kΩ ile VCC'ye, 10 µF ile GND'ye bağlayabilirsin: açılışta bu kondansatör dolana kadar geçen kısa sürede entegre sıfırda tutulur ve besleme oturduktan sonra normal çalışmaya başlar.
555 ile Arduino birlikte nasıl kullanılır?
555 ile Arduino rakip değil, iyi bir ekiptir. Basit bir flaşörü Arduino'da millis() ile de yapabilirsin; ama 555 kodsuz, 16 V'a kadar beslemeyle ve 200 mA çıkış akımıyla çalışır ve Arduino kilitlense bile görevini sürdürür. Bu yüzden 555 genellikle üç rolde Arduino'nun yanına eklenir: Arduino'nun ölçtüğü bir sinyal kaynağı, Arduino'nun tetiklediği bir donanım zamanlayıcısı (kondansatör ölçer, darbe uzatıcı) ve Arduino'nun RESET pini üzerinden açıp kapattığı bir osilatör (siren ya da buzzer tonu). Son durumda 555'in 4 numaralı pinini bir Arduino çıkışına bağlaman yeterlidir: pin HIGH iken osilatör çalışır, LOW iken susar.
| 555 pini | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| 8 VCC | 5V | 3V3 (yalnızca CMOS 555) | 3V3(OUT) (CMOS 555) ya da VBUS (NE555) |
| 1 GND | GND | GND | GND |
| 3 OUT | D2 | GPIO 27 | GP15 (NE555'te 10 kΩ + 20 kΩ bölücüyle) |
| 2 TRIG (tetikleme örneği) | D7 | GPIO 26 | GP14 (yalnızca 3V3 ile beslenen CMOS 555) |
| 4 RESET | 5V ya da bir dijital pin | 3V3 | 3V3(OUT) |
İlk örnekte Arduino, flaşör devresinin frekansını ve duty cycle'ını ölçüp formülle hesaplanan değerle karşılaştırır. Devre yukarıdaki astable devrenin aynısıdır (R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF), yalnızca 9 V yerine Arduino'nun 5V pininden beslenir ve 3 numaralı çıkış D2'ye bağlanır. pulseIn() fonksiyonu bir pinin HIGH ya da LOW kaldığı süreyi mikrosaniye cinsinden döndürür.
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}pulseIn() varsayılan olarak en fazla 1 saniye bekler; 1 Hz civarındaki bir sinyalde önce mevcut darbenin bitmesini, sonra yenisinin başlamasını beklediği için zaman aşımını 3 saniyeye çıkardık. Seri Monitör'de ölçülen frekansın hesaplanandan %5–20 farklı çıkması normaldir; farkın büyük kısmı elektrolitik kondansatörün toleransından gelir. Bu fark, kondansatörün gerçek değerini bulmanın da bir yoludur: ölçülen frekansı f = 1,44 / ((R1 + 2·R2) · C) formülünde yerine koyup C'yi çözebilirsin. Daha hızlı sinyallerde pulseIn() yerine kenarları kesmeyle (interrupt) saymak daha doğru sonuç verir.
Arduino ile 555'i tetiklemek: kondansatör ölçer
Monostable modda darbe süresi t = 1,1 · R · C olduğuna göre, R'yi bilip t'yi ölçersen C = t / (1,1 · R) ile kondansatörün değerini bulursun. Devre şöyledir: 6 ve 7 numaralı pinler birleşik, bu noktadan 5 V'a 100 kΩ, GND'ye ölçülecek kondansatör; 4 ve 8 numaralı pinler 5 V'ta, 5 numaralı pin 10 nF ile GND'de. 2 numaralı TRIG pini 10 kΩ ile 5 V'a çekilir ve D7'ye, 3 numaralı çıkış D2'ye bağlanır. Arduino D7'den 10 µs'lik bir LOW darbesi gönderir ve çıkışın HIGH kaldığı süreyi micros() ile ölçer.
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}Burada pulseIn() yerine micros() ile elle ölçüm yaptık, çünkü tetiklemeden hemen sonra çıkış zaten HIGH olur ve pulseIn() bu darbeyi "önceki darbe" sayıp atlar. Uno'da micros() 4 µs çözünürlüklüdür; 100 kΩ ile 1 nF'lık bir kondansatör 110 µs'lik darbe verdiği için ölçüm aralığı kabaca 1 nF ile 47 µF arasındadır. Bilinen bir kondansatörü ölçüp gerçek değerin ölçülen değere oranını CAL katsayısına yazarak cihazını kalibre edebilirsin. Elektrolitik bir kondansatörü takmadan önce bacaklarını kısa devre ederek boşalt ve artı bacağını 6–7 numaralı pinlerin tarafına bağla.
ESP32 ve Raspberry Pi Pico ile 555
ESP32 ve Raspberry Pi Pico 3,3 V ile çalışır ve pinleri 5 V'a dayanıklı değildir. Klasik NE555 ise en az 4,5 V ister, yani 3,3 V'tan beslenemez. En temiz çözüm TLC555, LMC555 ya da ICM7555 gibi bir CMOS 555 kullanmaktır: aynı pin dizilimine sahiptir, 3V3 pininden beslenir ve çıkışı 0 ile 3,3 V arasında gidip geldiği için doğrudan GPIO'ya bağlanır. Elinde yalnızca NE555 varsa onu 5 V'tan besleyip çıkışını 10 kΩ (seri) ve 20 kΩ (GND'ye) dirençlerle böl. NE555'in HIGH seviyesi 3,5 V civarında olduğundan bölücü çıkışı yaklaşık 2,3 V'a iner: bu, Pico'nun 2 V'luk eşiği için yeterlidir ama ESP32'nin yaklaşık 2,5 V'luk eşiği için sınırda kalır. Bu yüzden ESP32'de CMOS 555 tercih et.
ESP32 örneğinde CMOS 555, R1 = 1 kΩ, R2 = 6,8 kΩ ve C = 100 nF ile yaklaşık 986 Hz'lik bir sinyal üretir; bu, flaşör devresiyle aynı oranlara sahip ama bin kat daha hızlıdır. ESP32 her yükselen kenarda bir kesme fonksiyonu çalıştırır ve bir saniyede kaç kenar saydığını yazar; bu sayı doğrudan frekansın Hz cinsinden değeridir. pulseIn() ile ölçülen tek bir HIGH süresinden de duty cycle hesaplanır.
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}Pico'da MicroPython'un machine.time_pulse_us() fonksiyonu Arduino'daki pulseIn()'in karşılığıdır, ama önemli bir farkı vardır: pin zaten istenen seviyedeyse ölçmeye hemen başlar. Bu yüzden ilk ölçüm, yarım bir darbeyi atlayıp sinyalin kenarına senkronlanmak için kullanılır; ardından gelen LOW ve HIGH ölçümleri tam darbelerdir. Örnek, saniyede bir yanıp sönen flaşör devresini ölçer ve her ölçümde dahili LED'in durumunu değiştirir.
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)555 entegresi ile proje fikirleri
- Polis çakarı: Biri çıkıştan GND'ye, diğeri VCC'den çıkışa bağlı kırmızı ve mavi LED'leri sırayla yak; 4,7 kΩ, 47 kΩ ve 1 µF ile hızlı bir çakar efekti elde edersin.
- İki tonlu siren: Yavaş çalışan ilk 555'in çıkışını bir dirençle ikinci 555'in 5 numaralı CONT pinine ver; eşikler değiştikçe ikinci entegrenin tonu iner ve çıkar. Ses için pasif bir buzzer ya da küçük bir hoparlör kullan.
- Merdiven otomatiği: Monostable 555, röle ve butonlarla lambayı bir dakika açık tutan, farklı katlardaki butonların paralel bağlandığı bir zamanlayıcı kur.
- Kondansatör ölçer: Bu yazıdaki Arduino koduyla etiketi silinmiş kondansatörleri ölç ve sonucu bir I2C LCD ekranda göster.
- IR verici: 38 kHz'e ayarlanmış bir astable 555 ile IR LED'i sür ve sinyali bir IR alıcıyla algıla; basit bir ışın kesilme alarmı elde edersin. TSOP ya da VS1838B gibi kumanda alıcıları kesintisiz taşıyıcıyı bir süre sonra gürültü sayıp bastırabildiği için bu 555'i ikinci, yavaş bir 555 ile RESET pininden açıp kapatarak darbeli yayın yap.
- Motor hız kontrolü: Potansiyometreli sabit frekanslı PWM devresini bir MOSFET'e bağlayarak 12 V DC motorun ya da LED şeridin gücünü ayarla.
- Kayıp darbe dedektörü: Zamanlama kondansatörüne paralel, bazı TRIG pinine bağlı bir PNP transistör (ör. BC557) ekle; Arduino'nun düzenli aralıklarla gönderdiği her LOW darbesi hem 555'i tetikler hem de kondansatörü boşaltıp süreyi baştan başlatır. Arduino kilitlenip darbeler kesilirse süre dolar ve 555 bir alarm verir ya da sistemi yeniden başlatır.
Sık yapılan hatalar ve çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| LED yanıp sönmüyor, sürekli yanık ya da sönük | RESET (4) boşta ya da GND'de; astable'da 2 ile 6 birleştirilmemiş | RESET'i VCC'ye bağla, 2 ile 6'yı bir kabloyla birleştir |
| Frekans hesaplanandan çok farklı | Elektrolitik kondansatörün ±%20 toleransı, yanlış okunan değer (µF yerine nF), çok küçük C | Kondansatörü ölç, kodunu kontrol et, hassas işlerde film kondansatör kullan |
| Devre düzensiz çalışıyor ya da kendini tetikliyor | Besleme dekuplajı yok, CONT ya da TRIG pini boşta | 8–1 arasına 100 nF + 10 µF, 5 numaralı pine 10 nF, TRIG'e 10 kΩ pull-up |
| Entegre ısınıyor | Çıkış dirençsiz bir LED'e ya da GND'ye kısa devre; R1 çok küçük | LED'e seri direnç koy, R1'i en az 1 kΩ yap |
| Monostable süre bitmiyor | Buton basılı kalıyor ya da TRIG LOW'da takılı | Butona kısa bas ya da Arduino'dan kısa bir LOW darbesi gönder |
| Röle bırakırken entegre sıfırlanıyor ya da bozuluyor | Bobinin ters gerilimini söndüren diyot yok | Röle bobinine ters paralel 1N4007 bağla |
| Arduino yanlış okuyor ya da pin bozuldu | 555 9–12 V ile besleniyor | 555'i 5 V'tan besle ya da çıkışı gerilim bölücüyle düşür |
| Duty cycle %50'nin altına inmiyor | Temel astable devrenin doğal sınırı | R2'ye paralel 1N4148 diyot ekle |
555 entegresi, elektroniğin zamanla ilgili temel fikirlerini (RC dolumu, eşik, karşılaştırıcı, flip-flop) tek bir ucuz entegrede gösterdiği için öğrenmeye en uygun parçalardan biridir. Önce saniyede bir yanıp sönen flaşörü kur, ardından değerleri değiştirerek buzzer tonuna geç, sonra monostable gecikmeli lambayı ve Arduino ile kondansatör ölçeri dene. BlueGrays uygulamasında polis çakarı, hemzemin geçit uyarı ışıkları, merdiven aydınlatması ve buzzer projelerini devre şemaları ve kodlarıyla adım adım bulabilir, 555 ile kurduğun devrelerin Arduino ve Pico karşılıklarını yan yana deneyebilirsin.
Sıkça sorulan sorular
555 entegresi ne işe yarar?
555, bir direnç ve bir kondansatörle zaman ayarlayan genel amaçlı bir zamanlayıcı entegresidir. Astable modda sürekli kare dalga üreterek LED flaşör, buzzer tonu ya da saat sinyali; monostable modda tetiklendiğinde belirli bir süre açık kalan bir çıkış üreterek gecikmeli lamba ya da zamanlayıcı yapar. Çalışması için mikrodenetleyiciye ve koda gerek yoktur.
555 entegresi kaç volt ile çalışır?
Klasik NE555 4,5–16 V arasında çalışır (SE555 18 V'a kadar); 5, 9 ve 12 V en yaygın beslemelerdir. 3,3 V gibi düşük gerilimler için TLC555 (2–15 V), ICM7555 ya da 1,5 V'tan başlayan LMC555 gibi CMOS sürümler kullanılır. Frekans ve süre, besleme sabit kaldığı sürece gerilimden bağımsızdır.
555 ile 1 Hz flaşör için hangi değerler kullanılır?
R1 = 10 kΩ, R2 = 68 kΩ ve C = 10 µF ile f = 1,44 / ((10 kΩ + 2 · 68 kΩ) · 10 µF) ≈ 0,99 Hz elde edilir; LED yaklaşık 0,54 s yanar, 0,47 s söner. Elektrolitik kondansatörün ±%20 toleransı yüzünden gerçek değer biraz farklı çıkar. Tam ayar için R2 yerine bir trimpot kullanabilirsin.
555'te duty cycle %50'nin altına nasıl düşürülür?
Temel astable devrede kondansatör R1 + R2 üzerinden dolup yalnızca R2 üzerinden boşaldığı için HIGH süresi her zaman LOW süresinden uzundur. R2'ye paralel, anodu 7. pine bakan bir 1N4148 diyot eklersen dolum yalnızca R1 üzerinden olur. O zaman tH ≈ 0,693 · R1 · C ve tL ≈ 0,693 · R2 · C olur; R1'i R2'den küçük seçerek %50'nin altına inersin.
NE555 ile TLC555 arasındaki fark nedir?
NE555 bipolar transistörlerle yapılır, en az 4,5 V ister, çıkıştan 200 mA'e kadar akım verebilir ama boşta 2–6 mA çeker ve 100 kHz üzerinde zorlanır. TLC555 CMOS bir sürümdür: 2 V'ta çalışır, yaklaşık 0,2 mA çeker, 2 MHz'e kadar çıkabilir ve çıkışı besleme gerilimine kadar yükselir; buna karşılık çıkıştan yalnızca 10 mA civarında akım verebilir. İkisinin pin dizilimi aynıdır.
555'in 4 ve 5 numaralı pinleri boş bırakılabilir mi?
4 numaralı RESET pini boş bırakılmamalıdır; kullanmıyorsan doğrudan VCC'ye bağla, aksi halde parazitle entegre rastgele sıfırlanabilir. 5 numaralı CONT pini teknik olarak boş kalabilir, ama gürültünün eşikleri oynatmaması için 10 nF'lık bir kondansatörle GND'ye bağlamak iyi bir alışkanlıktır. Bu pine dışarıdan gerilim uygularsan eşikler, dolayısıyla frekans değişir.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Polis Çakar
Polis arabasının çakarı gibi: kırmızı LED üç kez hızlıca yanıp söner, ardından mavi LED üç kez çakar ve bu sıra hiç durmadan sürer. Arduino'ya iki LED ve iki direnç bağlaman yeter. Birkaç dakikada kur

Buzzer Kullanımı
Kapı zili ya da alarm sesi nasıl çıkar, hiç merak ettin mi? Arduino küçük bir buzzer'ı kısa aralıklarla öttürür: bip, sus, bip, sus. Sesin elektrikle nasıl üretildiğini görür, ileride melodi çalan pro

Buzzer İle Frekans Ayarı
Dört butonla bir buzzer'dan çıkan sesi yönetirsin: biri sesi başlatır, biri susturur, diğer ikisi sesi inceltip kalınlaştırır. Artırma ya da azaltma butonunu basılı tuttukça ses adım adım değişir ve s

Raspberry Pi Pico Polis Çakar Efekti (Kırmızı + Mavi Strobe, GP11 + GP12)
Polis aracının çakar tepe lambasını Raspberry Pi Pico ile en basit hâliyle simüle ediyoruz! 🚨 Kırmızı ve mavi LED sırayla yanar (flip-flop): kırmızı yanarken mavi söner, 0,3 saniye sonra yer değiştirirler ve bu sonsuza kadar sürer. Kod tek bir `while True` döngüsünde iki adımı doğrudan yazar; hız `WAIT_MS` sabitiyle ayarlanır.

LED Hemzemin Geçit Uyarı Işıkları
Hemzemin geçitlerdeki gibi dönüşümlü yanıp sönen LED uyarı ışıkları.

Akıllı Merdiven ve Koridor Aydınlatması
Merdivene ya da koridora adım attığında ışıklar senin gittiğin yönde, basamak basamak yanar. Girişte ve çıkışta birer mesafe sensörü vardır; hangisinin önünden geçersen sekiz LED o uçtan başlayarak ya

220V Ampülü Buton(Push) İle Yakma
Butona bastığın sürece 220 voltluk gerçek bir ampul yanar, bıraktığın anda söner. Arduino'nun küçük sinyali ampulü doğrudan yakamaz; araya röle denen elektrikli bir anahtar girer ve ampulün devresini

ESP32 Polis Çakar Efekti
Kırmızı ve mavi LED gruplarını hızla yanıp söndürerek polis aracı çakar simülasyonu. 2'şer LED grubuyla efekt daha dramatik olur. Hızlı toggle pattern'i ve grup kontrolünün örneği.
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 160'tan fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

