Parçalar · 14 dk okuma

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.

ÖzellikNE555 (bipolar)TLC555 (CMOS)
Besleme gerilimi4,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 mAYaklaşık 0,2 mA
Çıkış akımı200 mA'e kadar verir ve çekerYaklaşık 10 mA verir, 100 mA çeker
Çıkışın HIGH seviyesiVCC'nin yaklaşık 1,5–1,7 V altındaVCC'ye kadar çıkar (rail-to-rail)
Önerilen en yüksek frekans100 kHzYaklaşık 2 MHz
3,3 V ile çalışmaÇalışmazÇalışır
Çift zamanlayıcılı sürümNE556 (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.

PinAdıGöreviTipik bağlantı
1GNDToprak (0 V)Beslemenin eksisi
2TRIG (tetik)1/3 VCC'nin altına düşünce çıkışı HIGH yapar, zamanlamayı başlatırAstable: 6. pine; monostable: pull-up + buton
3OUT (çıkış)Çıkış; NE555'te 200 mA'e kadar akım verir ya da çekerDirenç üzerinden LED, buzzer, transistör
4RESETYaklaşık 0,7 V'un altına çekilince çıkışı zorla LOW yaparKullanılmıyorsa doğrudan VCC
5CONT (kontrol)2/3 VCC referansına doğrudan erişim; eşikleri değiştirir10 nF kondansatörle GND'ye
6THRES (eşik)2/3 VCC'yi geçince çıkışı LOW yapar, zamanlamayı bitirirZamanlama kondansatörüne
7DISCH (deşarj)Çıkış LOW iken GND'ye kısa devre olan açık kollektör uçAstable: R1–R2 arası; monostable: 6. pine
8VCCPozitif besleme (NE555: 4,5–16 V)Beslemenin artısı + 100 nF dekuplaj
Yeni başlayanların en sık hatası RESET (4) pinini boşta bırakmaktır. Boştaki pin parazit toplar ve entegre rastgele sıfırlanır; LED bazen yanıp söner, bazen hiç tepki vermez. Kullanmıyorsan 4. pini doğrudan VCC'ye bağla. Ayrıca bipolar 555, çıkış durum değiştirirken beslemeden kısa ama büyük akım darbeleri çeker; 8 ile 1 numaralı pinlerin hemen yanına 100 nF seramik ve 10 µF elektrolitik kondansatör koymazsan devre kendi kendini tetikleyebilir.

Üç çalışma modu: astable, monostable ve bistable

ModTürkçe adıNe yapar?Örnek kullanım
AstableKararsız multivibratörKendi kendine sürekli kare dalga üretirLED flaşör, buzzer tonu, saat sinyali, PWM
MonostableTek kararlı multivibratörTetiklenince belirli bir süre HIGH kalır, sonra LOW'a dönerGecikmeli 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.

  1. 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.
  2. 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.
  3. R1 = 10 kΩ direnci 8 ile 7 numaralı pinler arasına, R2 = 68 kΩ direnci 7 ile 6 numaralı pinler arasına bağla.
  4. 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. 5 numaralı CONT pininden GND'ye 10 nF (üzerinde 103 yazar) bir kondansatör tak.
  6. 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.
  7. 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ükFormülÖrnek: R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF
HIGH süresi (tH)0,693 · (R1 + R2) · C0,54 s
LOW süresi (tL)0,693 · R2 · C0,47 s
Periyot (T)0,693 · (R1 + 2·R2) · C1,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 · CR = 100 kΩ, C = 10 µF için 1,1 s
555 zamanlama devresinde kullanılan kondansatörler
555'te süreyi dirençle birlikte kondansatör belirler: saniyeler için elektrolitik (µF), kHz frekanslar için seramik ya da film (nF) kondansatör kullanılır.

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.

R1R2CFrekansDutyKullanım
10 kΩ100 kΩ10 µF0,69 Hz%52Yavaş uyarı ışığı
10 kΩ68 kΩ10 µF0,99 Hz%53Saniyede bir yanan LED flaşör
4,7 kΩ47 kΩ1 µF14,6 Hz%52Hızlı çakar efekti
1 kΩ10 kΩ100 nF686 Hz%52Buzzer tonu
1 kΩ6,8 kΩ100 nF986 Hz%531 kHz civarı test sinyali
1 kΩ10 kΩ10 nF6,86 kHz%52Yüksek ton, PWM
1 kΩ18 kΩ1 nF38,9 kHz%51IR 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.

  1. 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.
  2. 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.
  3. 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.
  4. Test için önce 3 numaralı çıkışa 330 Ω direnç üzerinden bir LED bağla.
  5. 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.
  6. 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.
Butonu süreden daha uzun basılı tutarsan çıkış süre dolsa bile HIGH kalır; veri sayfasına göre zamanlamanın bitmesi için TRIG'in süre sonundan en az 10 µs önce HIGH'a dönmesi gerekir. Uzun süreler için R'yi değil C'yi büyüt: elektrolitik kondansatörün kaçak akımı R üzerinden gelen küçük dolum akımına yaklaşırsa kondansatör 2/3 VCC'ye hiç ulaşamaz ve lamba sönmez; bu yüzden R'yi 1 MΩ'un altında tut. 220 V'luk bir lambayı röleyle anahtarlayacaksan şebeke tarafını yalıtmadan devreye enerji verme ve Röle Modülü Nedir? yazısındaki güvenlik kurallarına uy.
RCSüre (1,1 · R · C)Kullanım
10 kΩ1 µF11 msButon zıplamasını gidermek, kısa darbeyi uzatmak
100 kΩ10 µF1,1 sKısa bip, kapı zili
220 kΩ47 µF11,4 sKısa süreli aydınlatma
470 kΩ100 µF52 sMerdiven otomatiği, gecikmeli lamba
10 kΩ + 1 MΩ pot100 µF1,1–111 sSü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 piniArduino UnoESP32Raspberry Pi Pico
8 VCC5V3V3 (yalnızca CMOS 555)3V3(OUT) (CMOS 555) ya da VBUS (NE555)
1 GNDGNDGNDGND
3 OUTD2GPIO 27GP15 (NE555'te 10 kΩ + 20 kΩ bölücüyle)
2 TRIG (tetikleme örneği)D7GPIO 26GP14 (yalnızca 3V3 ile beslenen CMOS 555)
4 RESET5V ya da bir dijital pin3V33V3(OUT)
555'i Arduino'ya bağlarken ikisini de aynı 5 V'tan besle ve GND'leri birleştir. 9 ya da 12 V ile çalışan bir 555'in çıkışı 7–10 V'a çıkar ve Arduino'nun girişini bozar; böyle bir devrede çıkışı bir gerilim bölücüyle düşürmen gerekir. NE555'in 5 V'taki HIGH seviyesi yaklaşık 3,5 V'tur ve Uno'nun 3 V'luk eşiğinin biraz üstünde kalır; daha güvenli bir HIGH için çıkıştan 5 V'a 10 kΩ'luk bir pull-up direnci ekleyebilirsin.

İ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.

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}

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.

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}

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.

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}

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.

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)

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

BelirtiOlası nedenÇözüm
LED yanıp sönmüyor, sürekli yanık ya da sönükRESET (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 CKondansatörü ölç, kodunu kontrol et, hassas işlerde film kondansatör kullan
Devre düzensiz çalışıyor ya da kendini tetikliyorBesleme dekuplajı yok, CONT ya da TRIG pini boşta8–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üçükLED'e seri direnç koy, R1'i en az 1 kΩ yap
Monostable süre bitmiyorButon 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 bozuluyorBobinin ters gerilimini söndüren diyot yokRöle bobinine ters paralel 1N4007 bağla
Arduino yanlış okuyor ya da pin bozuldu555 9–12 V ile besleniyor555'i 5 V'tan besle ya da çıkışı gerilim bölücüyle düşür
Duty cycle %50'nin altına inmiyorTemel astable devrenin doğal sınırıR2'ye paralel 1N4148 diyot ekle
Devre çalışmadığında önce multimetreyle ölç: 8 ve 4 numaralı pinlerde besleme gerilimini, 5 numaralı pinde yaklaşık 2/3 VCC'yi (9 V'ta 6 V) görmelisin. Astable devrede kondansatörün gerilimi 1/3 ile 2/3 VCC arasında yavaşça gidip geliyorsa entegre çalışıyordur ve sorun çıkış tarafındadır. Ölçüm tekniği için Multimetre Nasıl Kullanılır? yazısına bakabilirsin.

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.

Tüm projeleri gör
Polis Çakar
#4Başlangıç

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

4.7(99)
235
Buzzer Kullanımı
#13Başlangıç

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

4.7(88)
157
Buzzer İle Frekans Ayarı
#14Orta

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

4.6(68)
115
Raspberry Pi Pico Polis Çakar Efekti (Kırmızı + Mavi Strobe, GP11 + GP12)
#151Başlangıç

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.

4.7(3)
10
LED Hemzemin Geçit Uyarı Işıkları
#146İleri
Premium

LED Hemzemin Geçit Uyarı Işıkları

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

5.0(2)
14
Akıllı Merdiven ve Koridor Aydınlatması
#82Orta
Premium

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

5.0(35)
51
220V Ampülü Buton(Push) İle Yakma
#19İleri
Premium

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

4.4(30)
38
ESP32 Polis Çakar Efekti
#109Başlangıç
Premium

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.

4.6(21)
36