Komponen · 16 mnt baca

IC Timer 555: Penjelasan Pinout, Rangkaian Astabil, dan Monostabil

Bagaimana cara kerja IC timer 555? Pinout, pengkabelan astabil dan monostabil, rumus f = 1,44/((R1+2R2)C) dan t = 1,1RC, lampu kedip LED, serta kode Arduino.

IC timer 555 adalah chip timer 8 pin yang murah dan bisa mengatur selang waktu dari mikrodetik sampai berjam-jam hanya dengan sebuah resistor dan sebuah kapasitor. Mengedipkan LED dengan kecepatan tertentu, menyalakan lampu selama satu menit setelah tombol ditekan, membunyikan nada di buzzer, atau menggerakkan motor dengan PWM: semuanya bisa dilakukan tanpa mikrokontroler dan tanpa satu baris kode pun. Dirancang oleh Hans Camenzind untuk Signetics pada 1971 dan dirilis pada 1972, chip ini menjadi salah satu chip yang paling banyak diproduksi di dunia; pada 2003 diperkirakan satu miliar unit dibuat setiap tahun.

Di panduan ini kamu akan mempelajari pinout 555, cara kerja komparator dan flip-flop di dalamnya, dua rangkaian dasarnya (lampu kedip astabil dan one-shot monostabil), asal rumus frekuensi dan waktu, cara menurunkan duty cycle di bawah 50%, serta cara memakai 555 bersama Arduino, ESP32, dan Raspberry Pi Pico. Kalau kamu tidak mau menghitung manual, kalkulator timer 555 langsung menampilkan frekuensi, duty cycle, dan bentuk gelombangnya.

Apa itu timer 555 dan bagaimana cara kerjanya?

Di dalam 555 ada empat bagian utama. Yang pertama adalah pembagi tegangan dari tiga resistor yang sama besar yang tersusun seri antara VCC dan GND (masing-masing 5 kΩ pada NE555 klasik); bagian ini menghasilkan dua tegangan referensi: 2/3 dan 1/3 VCC. Yang kedua adalah sepasang komparator yang terhubung ke referensi tersebut: komparator threshold membandingkan pin THRES dengan 2/3 VCC, dan komparator trigger membandingkan pin TRIG dengan 1/3 VCC. Yang ketiga adalah flip-flop SR yang di-set dan di-reset oleh kedua komparator, dan yang keempat adalah tahap output yang digerakkan flip-flop, bersama transistor discharge yang mengosongkan kapasitor.

Aturannya sebenarnya sangat sederhana: ketika tegangan di TRIG turun di bawah 1/3 VCC, output menjadi HIGH dan transistor discharge mati. Ketika tegangan di THRES naik di atas 2/3 VCC, output menjadi LOW dan transistor discharge menyala, menarik pin 7 ke GND. Kalau tidak terjadi keduanya, output mempertahankan keadaan sebelumnya. Yang menentukan waktu adalah berapa lama kapasitor eksternal terisi dan terkosongkan di antara kedua ambang ini melalui resistor. Dengan catu daya 5 V, ambangnya 3,33 V dan 1,67 V; dengan 9 V, ambangnya 6 V dan 3 V. Sering dikatakan nama chip ini berasal dari tiga resistor 5 kΩ di dalamnya, tetapi Camenzind menjelaskan bahwa Signetics memilih angka itu begitu saja.

FiturNE555 (bipolar)TLC555 (CMOS)
Tegangan catu daya4,5–16 V (SE555: sampai 18 V)2–15 V (LMC555: mulai 1,5 V)
Arus diam (5 V)2–6 mASekitar 0,2 mA
Arus outputMengeluarkan dan menyerap sampai 200 mAMengeluarkan sekitar 10 mA, menyerap 100 mA
Level output HIGHSekitar 1,5–1,7 V di bawah VCCSampai VCC (rail-to-rail)
Frekuensi maksimum yang disarankan100 kHzSekitar 2 MHz
Bisa jalan di 3,3 VTidakYa
Versi timer gandaNE556 (14 pin)TLC556 (14 pin)

Pinout timer 555

Takik setengah lingkaran atau titik kecil di atas chip menandai pin 1. Dengan takik di kiri dan dilihat dari atas, pin 1–4 berurutan dari kiri ke kanan di baris bawah, dan pin 5–8 dari kanan ke kiri di baris atas; dengan kata lain, nomornya naik berlawanan arah jarum jam dan pin 8 (VCC) berada tepat di seberang pin 1. Kemasan DIP-8 pas sekali melintang di atas celah tengah breadboard: satu baris kaki harus berada di setiap sisi celah.

PinNamaFungsiKoneksi umum
1GNDGround (0 V)Catu daya negatif
2TRIG (trigger)Membuat output HIGH dan memulai pewaktuan ketika turun di bawah 1/3 VCCAstabil: ke pin 6; monostabil: pull-up + tombol
3OUT (output)Output; pada NE555 mengeluarkan atau menyerap sampai 200 mALED lewat resistor, buzzer, transistor
4RESETMemaksa output LOW ketika ditarik di bawah sekitar 0,7 VLangsung ke VCC kalau tidak dipakai
5CONT (control)Akses langsung ke referensi 2/3 VCC; menggeser ambangKapasitor 10 nF ke GND
6THRES (threshold)Membuat output LOW dan mengakhiri pewaktuan di atas 2/3 VCCKe kapasitor pewaktu
7DISCH (discharge)Pin open-collector yang terhubung singkat ke GND selama output LOWAstabil: di antara R1 dan R2; monostabil: ke pin 6
8VCCCatu daya positif (NE555: 4,5–16 V)Catu daya positif + decoupling 100 nF
Kesalahan pemula yang paling umum adalah membiarkan pin RESET (4) mengambang. Pin yang mengambang menangkap noise dan chip ter-reset secara acak; LED kadang berkedip dan kadang tidak merespons sama sekali. Kalau tidak dipakai, sambungkan pin 4 langsung ke VCC. Selain itu, 555 bipolar menarik lonjakan arus yang singkat tapi besar dari catu daya setiap kali output berpindah keadaan; tanpa kapasitor keramik 100 nF dan kapasitor elektrolit 10 µF tepat di dekat pin 8 dan 1, rangkaian bisa memicu dirinya sendiri.

Tiga mode kerja: astabil, monostabil, dan bistabil

ModeNama lainFungsinyaPemakaian umum
AstabilMultivibrator bebas (free-running)Menghasilkan gelombang kotak terus-menerus dengan sendirinyaLampu kedip LED, nada buzzer, sinyal clock, PWM
MonostabilOne-shotTetap HIGH selama waktu tertentu ketika dipicu, lalu kembali LOWLampu tunda, timer lampu tangga, memperpanjang pulsa
BistabilFlip-flopMenjadi HIGH dengan TRIG dan LOW dengan RESET lalu mempertahankan keadaannya; tanpa pewaktuanSaklar on/off dua tombol

Rangkaian astabil: lampu kedip LED dengan 555

Pada rangkaian astabil, pin TRIG (2) dan THRES (6) disambung jadi satu dan dihubungkan ke kapasitor pewaktu. Kapasitor terisi dari VCC melalui R1 dan R2; ketika tegangannya mencapai 2/3 VCC, output menjadi LOW, transistor discharge menyala, dan sekarang kapasitor terkosongkan ke pin 7 hanya melalui R2. Ketika tegangannya turun ke 1/3 VCC, output kembali HIGH dan siklusnya berulang dengan sendirinya. Kapasitor tidak pernah kosong sepenuhnya, melainkan berayun di antara 1/3 dan 2/3 VCC; hanya ketika baru dinyalakan ia mulai dari kosong, karena itu periode HIGH pertama sedikit lebih panjang. Rangkaian di bawah ini berjalan dari baterai 9 V dan mengedipkan dua LED bergantian sekali per detik; ini lampu polisi paling sederhana yang bisa dibuat.

  1. Pasang 555 melintang di atas celah tengah breadboard dengan takik menghadap ke kiri. Kalau kamu belum tahu bagaimana breadboard terhubung di dalamnya, baca dulu Apa Itu Breadboard?.
  2. Hubungkan pin 8 (VCC) dan 4 (RESET) ke jalur +9 V, dan pin 1 (GND) ke jalur negatif. Pasang kapasitor keramik 100 nF di antara pin 8 dan 1, sedekat mungkin dengan chip.
  3. Pasang R1 = 10 kΩ di antara pin 8 dan 7, dan R2 = 68 kΩ di antara pin 7 dan 6.
  4. Sambungkan pin 6 dan 2 dengan kabel. Dari titik ini, hubungkan kapasitor elektrolit C = 10 µF ke GND; kakinya yang pendek (negatif) harus ke sisi GND.
  5. Pasang kapasitor 10 nF (bertanda 103) dari pin 5 (CONT) ke GND.
  6. Dari pin output 3, lewatkan resistor 470 Ω ke anoda LED pertama dan hubungkan katodanya ke GND; LED ini menyala selama output HIGH. Hubungkan anoda LED kedua ke +9 V lewat 470 Ω dan katodanya ke output; LED ini menyala selama output LOW.
  7. Pasang baterai: kedua LED harus menyala bergantian selama sekitar 0,54 dtk dan 0,47 dtk. Kalau tidak ada LED yang menyala, cek dulu apakah pin 4 sudah di VCC.

Di 9 V, output HIGH NE555 sekitar 7,5 V, jadi sekitar 12 mA mengalir lewat LED pertama dan sekitar 15 mA lewat LED kedua. Kalau rangkaian dijalankan dari 5 V, turunkan resistornya ke 220–330 Ω; pakai kalkulator resistor LED untuk menghitung nilainya dan baca Apa Itu LED? tentang LED-nya sendiri. Karena frekuensinya tidak bergantung pada tegangan catu daya, R1, R2, dan C yang sama tetap menghasilkan satu kedipan per detik di 5 V.

Rumus frekuensi dan waktu timer 555

Ketika kapasitor terisi melalui resistor R, tegangannya naik mengikuti kurva eksponensial; τ = R·C adalah konstanta waktu, yang dijelaskan rinci di Apa Itu Kapasitor?. Naik dari 1/3 VCC ke 2/3 VCC butuh tepat ln 2 · R · C ≈ 0,693 · R · C, karena sisa jarak ke target berkurang setengahnya dalam waktu itu. Karena pengisian terjadi melalui R1 + R2 dan pengosongan hanya melalui R2, waktu HIGH dan LOW berbeda. Menjumlahkan kedua waktu lalu mengambil kebalikannya menghasilkan faktor 1 / 0,693 ≈ 1,44 dan rumus yang terkenal: f = 1,44 / ((R1 + 2·R2) · C).

BesaranRumusContoh: R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF
Waktu HIGH (tH)0,693 · (R1 + R2) · C0,54 dtk
Waktu LOW (tL)0,693 · R2 · C0,47 dtk
Periode (T)0,693 · (R1 + 2·R2) · C1,01 dtk
Frekuensi (f)1,44 / ((R1 + 2·R2) · C)0,99 Hz
Duty cycle(R1 + R2) / (R1 + 2·R2)53,4%
Lebar pulsa monostabil (t)1,1 · R · C1,1 dtk untuk R = 100 kΩ, C = 10 µF
Kapasitor yang dipakai di rangkaian pewaktu 555
Pada 555, kapasitor menentukan waktu bersama resistor: pakai kapasitor elektrolit (µF) untuk hitungan detik dan kapasitor keramik atau film (nF) untuk frekuensi kHz.

Ingat beberapa batas ketika memilih nilai. R1 minimal 1 kΩ; kalau tidak, ketika transistor discharge menyala, VCC hampir langsung terhubung ke GND. Menurut datasheet Texas Instruments, arus kecil yang ditarik input threshold berarti R1 + R2 sebaiknya tidak melebihi sekitar 3,4 MΩ di 5 V atau 10 MΩ di 15 V; dalam praktiknya, bertahan di antara 1 kΩ dan 1 MΩ paling aman. Jangan memakai kapasitor di bawah 1 nF, karena kapasitansi breadboard dan kabel sendiri akan mengacaukan perhitungan. Pakai NE555 di bawah 100 kHz; untuk sinyal yang lebih cepat pilih versi CMOS. Untuk membaca angka yang tercetak di kapasitor pakai alat kode kapasitor, dan untuk melihat kurva pengisian pakai alat konstanta waktu RC.

R1R2CFrekuensiDutyPemakaian
10 kΩ100 kΩ10 µF0,69 Hz52%Lampu peringatan lambat
10 kΩ68 kΩ10 µF0,99 Hz53%Lampu kedip LED, sekali per detik
4,7 kΩ47 kΩ1 µF14,6 Hz52%Efek strobo cepat
1 kΩ10 kΩ100 nF686 Hz52%Nada buzzer
1 kΩ6,8 kΩ100 nF986 Hz53%Sinyal uji sekitar 1 kHz
1 kΩ10 kΩ10 nF6,86 kHz52%Nada tinggi, PWM
1 kΩ18 kΩ1 nF38,9 kHz51%Carrier remote IR (setel ke 38 kHz dengan trimmer)

Mengatur duty cycle: turun di bawah 50%

Pada rangkaian astabil dasar, kapasitor terisi melalui R1 + R2 tetapi terkosongkan hanya melalui R2, jadi waktu HIGH selalu lebih panjang daripada waktu LOW dan duty cycle tidak bisa turun di bawah 50%; membuat R2 jauh lebih besar daripada R1 mendekatkanmu ke 50%, tapi tidak pernah di bawahnya. Solusinya adalah dioda 1N4148 yang dipasang paralel dengan R2, anodanya ke arah pin 7 dan katodanya ke arah pin 6. Selama pengisian, arus mengalir lewat dioda dan melewati R2; selama pengosongan, dioda dalam bias mundur dan arus mengalir lewat R2. Hasilnya tH ≈ 0,693 · R1 · C dan tL ≈ 0,693 · R2 · C, dan duty cycle turun menjadi R1 / (R1 + R2). Misalnya, dengan R1 = 10 kΩ, R2 = 47 kΩ, dan C = 10 µF, LED menyala 69 ms dan mati 326 ms: kedipan singkat yang menarik perhatian dengan duty 17,5%. Tegangan maju dioda sekitar 0,6 V membuat waktu HIGH sedikit lebih panjang dari perhitungan, terutama di 5 V. Tentang perilaku dioda secara umum, lihat Apa Itu Dioda?.

Kalau kamu ingin frekuensinya tetap dan hanya duty cycle yang diatur, pakai potensiometer dan dua dioda. Hubungkan wiper pot ke pin 7; hubungkan satu ujung pot ke kapasitor lewat sebuah dioda (anoda di sisi pot) dan ujung lainnya ke kapasitor lewat dioda kedua yang menghadap berlawanan (katoda di sisi pot). Dengan R1 = 1 kΩ, pot 100 kΩ, dan C = 10 nF, frekuensinya tetap sekitar 1,4 kHz sementara duty cycle berubah kira-kira dari 1% sampai 99%, karena jumlah hambatan pengisian dan pengosongan tetap sama ketika pot diputar. Dengan MOSFET di output, inilah cara klasik mengatur kecepatan motor DC atau kecerahan LED strip 12 V; lihat Apa Itu PWM? dan Memakai MOSFET dengan Arduino untuk detailnya.

Rangkaian monostabil: pulsa one-shot dan lampu tunda

Pada rangkaian monostabil, pin 6 (THRES) dan 7 (DISCH) disambung jadi satu; resistor R dipasang dari titik ini ke VCC dan kapasitor C ke GND. Pin TRIG (2) dijaga HIGH dengan resistor pull-up. Ketika diam, output LOW dan transistor discharge menjaga kapasitor tetap kosong. Ketika pulsa LOW singkat tiba di TRIG, output menjadi HIGH, transistor discharge mati, dan kapasitor mulai terisi melalui R. Ketika tegangannya mencapai 2/3 VCC, output kembali LOW dan kapasitor langsung terkosongkan. Kali ini kapasitor terisi penuh dari nol sampai 2/3 VCC, jadi pulsanya berlangsung ln 3 · R · C ≈ 1,1 · R · C, yang lagi-lagi tidak bergantung pada tegangan catu daya.

  1. Hubungkan pin 8 dan 4 ke +5 V dan pin 1 ke GND; pasang kapasitor 100 nF di antara pin 8 dan 1, serta kapasitor 10 nF di antara pin 5 dan GND.
  2. Sambungkan pin 6 dan 7. Dari titik ini, hubungkan R = 470 kΩ ke +5 V dan kapasitor elektrolit C = 100 µF ke GND (kaki negatif ke GND).
  3. Tarik TRIG (pin 2) ke +5 V dengan 10 kΩ dan pasang push button di antara pin 2 dan GND. Selengkapnya tentang pengkabelan tombol, lihat Cara Menghubungkan Push Button ke Arduino.
  4. Untuk uji pertama, hubungkan LED ke pin output 3 lewat resistor 330 Ω.
  5. Tekan tombol sebentar: LED tetap menyala sekitar 1,1 × 470 kΩ × 100 µF ≈ 52 detik lalu padam. Karena toleransi kapasitor elektrolit ±20%, nilai di antara 42 dan 62 detik itu normal.
  6. Untuk lampu sungguhan, gerakkan relay alih-alih LED: dari output lewat 1 kΩ ke basis transistor BC547, hubungkan emitor ke GND dan kolektor ke salah satu ujung kumparan relay; ujung kumparan lainnya ke +5 V. Jangan lupa dioda 1N4007 melintang di kumparan (katoda di sisi +5 V); tentang peran transistor, lihat Apa Itu Transistor?.
Kalau tombol ditahan lebih lama dari waktu tundanya, output tetap HIGH bahkan setelah waktunya habis; menurut datasheet, TRIG harus kembali HIGH setidaknya 10 µs sebelum akhir interval agar pewaktuan selesai. Untuk tunda yang panjang, perbesar C, bukan R: kalau arus bocor kapasitor elektrolit mendekati arus pengisian kecil yang mengalir lewat R, kapasitor tidak pernah mencapai 2/3 VCC dan lampunya tidak pernah mati, jadi jaga R di bawah 1 MΩ. Kalau kamu menyalakan lampu listrik PLN dengan relay, jangan pernah menyalakan rangkaian sebelum sisi listrik PLN terisolasi, dan ikuti aturan keamanan di Apa Itu Modul Relay di Arduino?.
RCWaktu (1,1 · R · C)Pemakaian
10 kΩ1 µF11 msDebounce tombol, memperpanjang pulsa pendek
100 kΩ10 µF1,1 dtkBunyi bip singkat, bel pintu
220 kΩ47 µF11,4 dtkPenerangan jangka pendek
470 kΩ100 µF52 dtkTimer lampu tangga, lampu tunda
10 kΩ + pot 1 MΩ100 µF1,1–111 dtkTimer yang bisa diatur

Untuk memotong waktu tunda, kamu bisa menambahkan tombol kedua di pin RESET (4): tarik pin itu ke VCC dengan 10 kΩ dan pasang tombol di antara RESET dan GND; begitu ditekan, output menjadi LOW dan kapasitor terkosongkan. Rangkaian monostabil kadang memicu dirinya sendiri sekali ketika daya pertama kali diberikan. Untuk mencegahnya, hubungkan pin RESET ke VCC lewat 10 kΩ dan ke GND lewat 10 µF: ketika dinyalakan, chip ditahan dalam keadaan reset selama waktu singkat yang dibutuhkan kapasitor itu untuk terisi, lalu mulai bekerja normal begitu catu dayanya stabil.

Bagaimana cara memakai timer 555 dengan Arduino?

555 dan Arduino bukan saingan; keduanya tim yang bagus. Kamu memang bisa membuat lampu kedip sederhana di Arduino dengan millis(), tetapi 555 tidak butuh kode, bisa jalan dengan catu daya sampai 16 V, memberikan 200 mA dari output-nya, dan tetap bekerja walaupun Arduino-nya hang. Karena itu 555 biasanya bergabung dengan Arduino dalam salah satu dari tiga peran: sebagai sumber sinyal yang diukur Arduino, sebagai timer hardware yang dipicu Arduino (pengukur kapasitansi, pemanjang pulsa), dan sebagai osilator yang dinyalakan dan dimatikan Arduino lewat pin RESET (sirene atau nada buzzer). Untuk kasus terakhir, cukup hubungkan pin 4 dari 555 ke output Arduino: selama pin itu HIGH osilator berjalan, dan selama LOW ia diam.

Pin 555Arduino UnoESP32Raspberry Pi Pico
8 VCC5V3V3 (hanya 555 CMOS)3V3(OUT) (555 CMOS) atau VBUS (NE555)
1 GNDGNDGNDGND
3 OUTD2GPIO 27GP15 (lewat pembagi 10 kΩ + 20 kΩ dengan NE555)
2 TRIG (contoh trigger)D7GPIO 26GP14 (hanya dengan 555 CMOS yang diberi daya dari 3V3)
4 RESET5V atau pin digital3V33V3(OUT)
Ketika menghubungkan 555 ke Arduino, beri daya keduanya dari 5 V yang sama dan satukan ground-nya. Output 555 yang berjalan di 9 atau 12 V berayun sampai 7–10 V dan akan merusak input Arduino; dalam kasus itu kamu perlu menurunkan output dengan pembagi tegangan. Level HIGH NE555 di 5 V sekitar 3,5 V, hanya sedikit di atas ambang 3 V milik Uno; untuk HIGH yang lebih aman, kamu bisa menambahkan resistor pull-up 10 kΩ dari output ke 5 V.

Di contoh pertama, Arduino mengukur frekuensi dan duty cycle lampu kedip lalu membandingkannya dengan nilai dari rumus. Rangkaiannya sama dengan rangkaian astabil di atas (R1 = 10 kΩ, R2 = 68 kΩ, C = 10 µF), hanya saja diberi daya dari pin 5V Arduino, bukan 9 V, dan pin output 3 ke D2. Fungsi pulseIn() mengembalikan berapa lama sebuah pin tetap HIGH atau LOW, dalam mikrodetik.

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

Secara default pulseIn() menunggu paling lama 1 detik; dengan sinyal sekitar 1 Hz, ia menunggu dulu pulsa yang sedang berjalan selesai lalu menunggu pulsa baru dimulai, jadi kami menaikkan timeout-nya ke 3 detik. Wajar kalau frekuensi terukur di Serial Monitor berbeda 5–20% dari nilai hitungan; sebagian besar perbedaannya berasal dari toleransi kapasitor elektrolit. Perbedaan itu juga bisa dipakai untuk mencari nilai asli kapasitor: masukkan frekuensi terukur ke f = 1,44 / ((R1 + 2·R2) · C) lalu cari C. Untuk sinyal yang lebih cepat, menghitung tepi sinyal dengan interrupt alih-alih pulseIn() memberi hasil yang lebih akurat.

Memicu 555 dari Arduino: pengukur kapasitansi

Karena lebar pulsa monostabil adalah t = 1,1 · R · C, kalau kamu tahu R dan mengukur t, nilai kapasitor bisa dicari dengan C = t / (1,1 · R). Ini rangkaiannya: pin 6 dan 7 disambung, dengan 100 kΩ dari titik ini ke 5 V dan kapasitor yang diuji ke GND; pin 4 dan 8 di 5 V, dan pin 5 ke GND lewat 10 nF. TRIG (pin 2) ditarik ke 5 V dengan 10 kΩ dan dihubungkan ke D7, dan pin output 3 ke D2. Arduino mengirim pulsa LOW 10 µs dari D7 lalu mengukur berapa lama output tetap HIGH dengan micros().

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

Di sini kita mengukur manual dengan micros(), bukan pulseIn(), karena output sudah HIGH tepat setelah dipicu dan pulseIn() akan menganggap pulsa itu sebagai “pulsa sebelumnya” lalu melewatinya. Pada Uno, micros() punya resolusi 4 µs; dengan 100 kΩ, kapasitor 1 nF menghasilkan pulsa 110 µs, jadi jangkauan ukurnya kira-kira 1 nF sampai 47 µF. Ukur kapasitor yang nilainya sudah diketahui dan tulis perbandingan nilai aslinya dengan nilai terukur ke faktor CAL untuk mengkalibrasi alat ukurmu. Sebelum memasang kapasitor elektrolit, kosongkan dulu dengan menghubungsingkatkan kakinya, dan hubungkan kaki positifnya ke sisi pin 6–7.

Memakai timer 555 dengan ESP32 dan Raspberry Pi Pico

ESP32 dan Raspberry Pi Pico bekerja di 3,3 V dan pin-pinnya tidak tahan 5 V. Sebaliknya, NE555 klasik butuh minimal 4,5 V, jadi tidak bisa jalan dari 3,3 V. Solusi paling rapi adalah 555 CMOS seperti TLC555, LMC555, atau ICM7555: pinout-nya sama, bisa jalan dari pin 3V3, dan output-nya berayun di antara 0 dan 3,3 V, jadi bisa langsung dihubungkan ke GPIO. Kalau kamu cuma punya NE555, beri daya dari 5 V dan bagi output-nya dengan 10 kΩ (seri) dan 20 kΩ (ke GND). Karena level HIGH NE555 sekitar 3,5 V, output pembagi turun ke sekitar 2,3 V: cukup untuk ambang 2 V milik Pico, tapi pas-pasan untuk ambang ESP32 yang sekitar 2,5 V. Karena itu, dengan ESP32 sebaiknya pilih 555 CMOS.

Di contoh ESP32, 555 CMOS dengan R1 = 1 kΩ, R2 = 6,8 kΩ, dan C = 100 nF menghasilkan sinyal sekitar 986 Hz; perbandingannya sama dengan lampu kedip, hanya seribu kali lebih cepat. ESP32 menjalankan rutin interrupt di setiap tepi naik dan mencetak berapa tepi yang dihitung dalam satu detik; angka itu langsung menjadi frekuensi dalam Hz. Duty cycle dihitung dari satu waktu HIGH yang diukur dengan pulseIn().

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

Di Pico, fungsi machine.time_pulse_us() MicroPython setara dengan pulseIn() di Arduino, dengan satu perbedaan penting: kalau pin sudah berada di level yang diminta, ia langsung mulai menghitung waktu. Karena itu panggilan pertama dipakai untuk melewati pulsa yang tidak utuh dan menyinkronkan diri ke tepi sinyal; pengukuran LOW dan HIGH setelahnya adalah pulsa penuh. Contoh ini mengukur rangkaian lampu kedip sekali per detik dan membalik keadaan LED onboard di setiap pembacaan.

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)

Ide proyek timer 555

  • Lampu polisi: Kedipkan LED merah dan biru bergantian, satu dihubungkan dari output ke GND dan satunya dari VCC ke output; 4,7 kΩ, 47 kΩ, dan 1 µF menghasilkan efek strobo cepat.
  • Sirene dua nada: Masukkan output dari 555 pertama yang lambat lewat resistor ke pin 5 (CONT) dari 555 kedua; ketika ambangnya bergeser, nada chip kedua naik turun. Pakai buzzer pasif atau speaker kecil untuk suaranya.
  • Timer lampu tangga: Buat timer dengan 555 monostabil, relay, dan tombol yang menyalakan lampu selama satu menit, dengan tombol-tombol di lantai yang berbeda dipasang paralel.
  • Pengukur kapasitansi: Pakai kode Arduino di artikel ini untuk mengukur kapasitor yang tandanya sudah pudar, lalu tampilkan hasilnya di layar LCD I2C.
  • Pemancar IR: Gerakkan LED IR dengan 555 astabil yang disetel ke 38 kHz lalu deteksi sinyalnya dengan penerima IR; jadilah alarm pemutus sinar sederhana. Penerima remote seperti TSOP atau VS1838B bisa menganggap carrier yang terus-menerus sebagai noise dan meredamnya setelah beberapa waktu, jadi nyalakan dan matikan 555 ini lewat pin RESET-nya dengan 555 kedua yang lambat untuk mengirim semburan sinyal.
  • Pengatur kecepatan motor: Hubungkan rangkaian PWM berfrekuensi tetap dengan potensiometer ke MOSFET untuk mengatur daya motor DC 12 V atau LED strip.
  • Detektor pulsa hilang: Pasang transistor PNP (mis. BC557) melintang di kapasitor pewaktu dengan basisnya disambung ke TRIG; setiap pulsa LOW yang dikirim Arduino secara berkala sekaligus memicu 555 dan mengosongkan kapasitor, sehingga pewaktuan dimulai ulang. Kalau Arduino hang dan pulsanya berhenti, waktunya habis dan 555 membunyikan alarm atau me-restart sistem.

Kesalahan umum dan cara memperbaikinya

GejalaKemungkinan penyebabSolusi
LED tidak berkedip, terus menyala atau terus matiRESET (4) mengambang atau di GND; di mode astabil, pin 2 dan 6 tidak disambungSambungkan RESET ke VCC dan sambungkan pin 2 dan 6 dengan kabel
Frekuensi jauh dari nilai hitunganToleransi kapasitor elektrolit ±20%, salah baca nilai (nF bukan µF), C terlalu kecilUkur kapasitornya, cek kodenya, pakai kapasitor film untuk pekerjaan presisi
Rangkaian tidak stabil atau memicu dirinya sendiriTidak ada decoupling catu daya, pin CONT atau TRIG mengambang100 nF + 10 µF di antara pin 8 dan 1, 10 nF di pin 5, pull-up 10 kΩ di TRIG
Chip jadi panasOutput terhubung singkat ke LED tanpa resistor atau ke GND; R1 terlalu kecilTambahkan resistor seri ke LED, buat R1 minimal 1 kΩ
Waktu tunda monostabil tidak pernah selesaiTombol ditahan atau TRIG tertahan di LOWTekan tombol sebentar saja atau kirim pulsa LOW singkat dari Arduino
Chip ter-reset atau rusak ketika relay lepasTidak ada dioda untuk meredam tegangan balik kumparanPasang 1N4007 melintang di kumparan relay
Arduino membaca nilai yang salah atau pinnya rusak555 diberi daya dari 9–12 VBeri daya 555 dari 5 V atau turunkan output-nya dengan pembagi tegangan
Duty cycle tidak mau turun di bawah 50%Batas alami rangkaian astabil dasarTambahkan dioda 1N4148 paralel dengan R2
Ketika rangkaian tidak bekerja, ukur dulu dengan multimeter: kamu harus melihat tegangan catu daya di pin 8 dan 4, serta sekitar 2/3 VCC di pin 5 (6 V pada 9 V). Kalau tegangan kapasitor di rangkaian astabil pelan-pelan berayun di antara 1/3 dan 2/3 VCC, chip-nya bekerja dan masalahnya ada di sisi output. Tentang teknik pengukuran, lihat Cara Memakai Multimeter.

Timer 555 adalah salah satu komponen terbaik untuk belajar, karena ia memperlihatkan ide inti pewaktuan di elektronika (pengisian RC, ambang, komparator, flip-flop) dalam satu chip murah. Mulailah dengan lampu kedip sekali per detik, ubah nilainya untuk mendapatkan nada buzzer, lalu coba lampu tunda monostabil dan pengukur kapasitansi Arduino. Di aplikasi BlueGrays kamu akan menemukan proyek lampu polisi, lampu tangga, dan buzzer langkah demi langkah lengkap dengan skema rangkaian dan kode, jadi kamu bisa mencoba versi Arduino dan Pico dari rangkaian 555-mu berdampingan.

Pertanyaan umum

Untuk apa timer 555 dipakai?

555 adalah chip timer serbaguna yang mengatur selang waktu dengan sebuah resistor dan sebuah kapasitor. Dalam mode astabil ia menghasilkan gelombang kotak terus-menerus untuk lampu kedip LED, nada buzzer, atau sinyal clock; dalam mode monostabil ia menghasilkan output yang menyala selama waktu tertentu setelah dipicu, untuk lampu tunda atau timer. Ia tidak butuh mikrokontroler dan tidak butuh kode.

Berapa tegangan yang dibutuhkan timer 555?

NE555 klasik bekerja dari 4,5 sampai 16 V (SE555 sampai 18 V); 5, 9, dan 12 V adalah catu daya yang paling umum. Untuk tegangan yang lebih rendah seperti 3,3 V, pakai versi CMOS seperti TLC555 (2–15 V), ICM7555, atau LMC555 yang mulai dari 1,5 V. Selama catu dayanya konstan, frekuensi dan waktunya tidak bergantung pada tegangan.

Nilai berapa yang menghasilkan lampu kedip 555 1 Hz?

Dengan R1 = 10 kΩ, R2 = 68 kΩ, dan C = 10 µF kamu mendapatkan f = 1,44 / ((10 kΩ + 2 · 68 kΩ) · 10 µF) ≈ 0,99 Hz; LED menyala sekitar 0,54 dtk dan mati 0,47 dtk. Karena toleransi kapasitor elektrolit ±20%, nilai aslinya akan sedikit berbeda. Untuk penyetelan halus, ganti R2 dengan trimmer.

Bagaimana cara membuat duty cycle 555 di bawah 50%?

Pada rangkaian astabil dasar, kapasitor terisi melalui R1 + R2 tetapi terkosongkan hanya melalui R2, jadi waktu HIGH selalu lebih panjang daripada waktu LOW. Kalau kamu menambahkan dioda 1N4148 paralel dengan R2, anoda ke arah pin 7, kapasitor hanya terisi melalui R1. Maka tH ≈ 0,693 · R1 · C dan tL ≈ 0,693 · R2 · C, dan memilih R1 lebih kecil dari R2 membawamu ke bawah 50%.

Apa bedanya NE555 dan TLC555?

NE555 dibuat dengan transistor bipolar, butuh minimal 4,5 V, dan bisa memberikan sampai 200 mA dari output-nya, tetapi menarik 2–6 mA ketika diam dan kesulitan di atas 100 kHz. TLC555 adalah versi CMOS: bisa jalan dari 2 V, menarik sekitar 0,2 mA, mencapai sekitar 2 MHz, dan output-nya naik penuh sampai tegangan catu daya; di sisi lain, ia hanya bisa mengeluarkan sekitar 10 mA. Keduanya punya pinout yang sama.

Apakah pin 4 dan 5 pada 555 boleh dibiarkan tidak terhubung?

Pin RESET (4) jangan pernah dibiarkan mengambang; kalau tidak dipakai, sambungkan langsung ke VCC, karena kalau tidak, noise bisa me-reset chip secara acak. Pin CONT (5) secara teknis boleh dibiarkan terbuka, tetapi menghubungkannya ke GND lewat kapasitor 10 nF adalah kebiasaan yang baik agar noise tidak menggeser ambangnya. Kalau kamu memberikan tegangan eksternal ke pin ini, ambangnya, dan karena itu frekuensinya, ikut berubah.

Lihat semua proyek
Lampu Polisi LED
#4Pemula

Lampu Polisi LED

Persis seperti lampu di mobil polisi: LED merah berkedip tiga kali dengan cepat, lalu LED biru berkedip tiga kali, dan polanya terus berulang tanpa henti. Yang kamu butuhkan hanya dua LED dan dua resi

4.7(103)
258
Menggunakan Buzzer
#13Pemula

Menggunakan Buzzer

Pernah penasaran bagaimana bel pintu atau alarm mengeluarkan suaranya? Arduino membuat buzzer kecil berbunyi bip dengan jeda singkat: bip, jeda, bip, jeda. Kamu melihat bagaimana suara dibuat dengan l

4.7(89)
161
Mengatur Frekuensi Buzzer
#14Menengah

Mengatur Frekuensi Buzzer

Kamu mengendalikan suara buzzer dengan empat tombol: satu memulai suara, satu membungkamnya, dan dua lainnya membuatnya lebih tinggi atau lebih rendah. Tahan tombol naik atau turun dan nadanya berubah

4.6(69)
118
Efek Lampu Strobo Polisi Raspberry Pi Pico (Merah + Biru)
#151Pemula

Efek Lampu Strobo Polisi Raspberry Pi Pico (Merah + Biru)

Kita menyimulasikan bar lampu mobil polisi dengan Raspberry Pi Pico dalam bentuk paling sederhana! LED merah dan biru menyala bergantian (flip-flop): ketika merah menyala, biru mati, dan keduanya bertukar setiap 0,3 detik, selamanya. Kode menulis dua langkah itu langsung di satu loop while True; kecepatannya diatur dengan konstanta WAIT_MS.

4.7(3)
10
Lampu Tangga dan Koridor Pintar
#82Menengah
Premium

Lampu Tangga dan Koridor Pintar

Injak tangga atau masuk ke lorong, dan lampu menyala satu per satu ke arah kamu berjalan. Ada sensor jarak di setiap ujung; sensor mana pun yang kamu lewati, delapan LED menyala satu per satu dari uju

5.0(35)
51
Menyalakan Bohlam 220V dengan Tombol Tekan
#19Mahir
Premium

Menyalakan Bohlam 220V dengan Tombol Tekan

Selama kamu menahan tombol, bohlam 220 volt sungguhan tetap menyala, dan mati begitu kamu melepasnya. Sinyal kecil Arduino tidak bisa langsung menyalakan bohlam, jadi relay, sakelar yang dikendalikan

4.4(30)
38
Efek Lampu Strobo Polisi ESP32
#109Pemula
Premium

Efek Lampu Strobo Polisi ESP32

Tiru lampu strobo mobil polisi dengan mengedipkan kelompok LED merah dan biru secara cepat. Memakai 2 LED di setiap kelompok membuat efeknya lebih dramatis. Contoh klasik pola toggle cepat dan kendali per kelompok.

4.6(21)
36