Komponen · 16 mnt baca

Cara Mengatur Buck Converter LM2596 ke 5 V atau 3,3 V

Cara mengatur buck converter LM2596: atur 5 V atau 3,3 V dengan trimpot dan multimeter, beri daya Arduino dan servo dari 12 V, plus panas, arus, dan perbandingan dengan 7805.

Mengatur LM2596 artinya memberi daya ke input modul lalu memutar sekrup kuningan pada trimpot biru sambil mengukur output-nya dengan multimeter, sampai angkanya menunjukkan tegangan yang kamu mau, misalnya 5 V atau 3,3 V. Modul step-down (buck) LM2596 adalah regulator tegangan yang murah dan sangat umum, yang secara efisien mengubah adaptor 12 V, aki mobil, atau paket Li-ion 2S menjadi tegangan lebih rendah untuk Arduino, ESP32, servo, dan LED strip. Modul ini menerima input 4,5–40 V, menurunkannya ke nilai berapa pun antara sekitar 1,25 V dan 35 V, dan bisa memberi arus sampai 3 A. Aturan emasnya cukup satu kalimat: selalu atur dan ukur output-nya sebelum kamu menghubungkan beban.

Di panduan ini kamu akan belajar cara kerja buck converter, pin dan komponen di modulnya, cara mengatur 5 V dan 3,3 V langkah demi langkah dengan trimpot dan multimeter, serta rumus Vout = 1,23 × (1 + R2 / R1) yang menentukan output-nya. Setelah itu kita bahas cara memberi daya Arduino dan servo dari 12 V, batas arus dan panas, efisiensi dan perbedaannya dengan 7805, serta kesalahan yang sering terjadi (polaritas terbalik, tegangan turun ketika diberi beban), lalu lanjut ke kode yang mengukur output-nya dengan Arduino, ESP32, dan Raspberry Pi Pico.

Modul buck converter step-down LM2596
Modul buck LM2596: input IN+ / IN−, output OUT+ / OUT−, trimpot biru multi-putaran yang mengatur output, induktor besar yang menyimpan energi, serta kapasitor input dan output dalam satu papan.

Apa itu LM2596 dan bagaimana cara kerjanya?

LM2596 adalah IC regulator step-down switching yang awalnya dikembangkan oleh National Semiconductor dan sekarang diproduksi oleh Texas Instruments. Regulator linear seperti 7805 membuang kelebihan tegangan dengan mengubahnya menjadi panas; LM2596 justru menyalakan dan mematikan transistor daya di dalamnya sekitar 150.000 kali per detik (150 kHz). Ketika transistor menyala, arus mengalir lewat induktor ke beban dan induktor menyimpan energi di medan magnetnya; ketika transistor mati, induktor terus menyalurkan energi itu ke beban lewat dioda Schottky. Kapasitor output meratakan pulsa-pulsa ini. Perbandingan waktu transistor menyala disebut duty cycle, kira-kira D ≈ Vout / Vin: untuk mendapat 5 V dari 12 V, sakelarnya menyala sekitar 42% dari waktu.

Karena tidak ada energi yang dibakar, efisiensinya sekitar 80–90% dan arus yang ditarik dari input lebih kecil daripada arus yang diberikan di output: modul yang memberi 2 A pada 5 V dari 12 V hanya menarik sekitar 1 A dari input. Pin FB (feedback/umpan balik) menjaga tegangan output tetap stabil. Chip membandingkan tegangan di FB dengan referensi internal 1,23 V lalu menyesuaikan duty cycle-nya. Di modul siap pakai, salah satu kaki pembagi tegangan yang masuk ke pin FB adalah trimpot multi-putaran; memutar sekrupnya mengubah rasio pembagi dan karena itu juga tegangan output. Ada juga versi LM2596 dengan output tetap 3,3 V, 5 V, dan 12 V, tetapi di dunia Arduino yang paling umum adalah modul biru yang memakai versi adjustable (ADJ).

FiturChip LM2596 (datasheet)Modul siap pakai (tipikal)
Tegangan input4,5–40 V (batas mutlak 45 V)4,5–40 V; minimal 1,5–2 V di atas output
Tegangan outputADJ: 1,23–37 V; tetap: 3,3 / 5 / 12 VSekitar 1,25–35 V dengan trimpot
Arus output3 ASekitar 2 A kontinu tanpa heatsink, 3 A dengan heatsink
Frekuensi switching150 kHz (127–173 kHz)150 kHz
Referensi feedback1,23 V1,23 V
Efisiensi73–90% (tergantung tegangan dan arus)Tipikal 80–88% untuk 12 V → 5 V
Arus diam (Iq)Tipikal 5 mA, maks. 10 mA; 80 µA jika dimatikan lewat ON/OFF5–10 mA + LED daya (jika ada)
Batas arusTipikal 4,5 A puncak (3,6–6,9 A)Tidak bisa diatur (hanya versi CC/CV yang punya pengaturan)
ProteksiPembatasan arus dan thermal shutdownTanpa proteksi polaritas terbalik

Pin modul dan komponen di papannya

Modul LM2596 biru punya empat titik sambungan: IN+ dan IN− adalah input, OUT+ dan OUT− adalah output. IN− dan OUT− tersambung jadi satu di papan; buck converter tidak mengisolasi input dari output, jadi sumber daya, modul, dan board yang kamu beri daya memakai GND bersama. Di papannya kamu akan menemukan chip LM2596S lima pin (paket TO-263: VIN, output, GND, FB, dan ON/OFF), induktor besar 33–47 µH yang biasanya bertanda 330 atau 470, dioda Schottky 3 A seperti SS34, kapasitor elektrolit di input dan satu lagi di output (biasanya 100–220 µF), serta trimpot multi-putaran bertanda 103 (10 kΩ). Tanda pada induktor bisa kamu baca dengan kalkulator kode induktor. Di kebanyakan modul, pin ON/OFF chip disambungkan ke GND, jadi modul langsung bekerja begitu diberi daya.

Pin modulFungsiDisambungkan ke
IN+Positif input (4,5–40 V)Positif adaptor, aki, atau paket baterai
IN−Negatif input (GND)Negatif sumber daya
OUT+Positif output yang sudah diregulasi5V atau Vin Arduino, 5V ESP32, VSYS Pico, kabel merah servo
OUT−Negatif output (GND yang sama dengan IN−)GND board, kabel cokelat atau hitam servo
Modul LM2596 tidak punya proteksi polaritas terbalik. Kalau input-nya tersambung terbalik walau hanya sebentar, chip dan diodanya biasanya langsung mati; kadang chip-nya korsleting di dalam dan sejak itu meneruskan tegangan input langsung ke output. Sebelum menyambung, baca label IN+ dan IN− dua kali, cek polaritas sumber daya dengan multimeter, dan di rangkaian permanen tambahkan dioda Schottky seri di input (misalnya SS34 atau 1N5822, drop sekitar 0,4–0,5 V). Tertukar antara input dan output lalu menyambung sumber daya ke sisi OUT juga merusak modul.

Cara mengatur LM2596 langkah demi langkah: 5 V atau 3,3 V dengan multimeter

  1. Jangan sambungkan apa pun ke output. Modul diatur tanpa beban; Arduino atau ESP32 baru kamu sambungkan setelah tegangan yang benar terlihat.
  2. Sambungkan sumber daya asli yang akan kamu pakai di proyek (misalnya adaptor 12 V 2 A) ke input: positif ke IN+, negatif ke IN−. Kalau papannya punya LED, LED itu akan menyala.
  3. Atur multimeter ke tegangan DC (range 20 V atau auto); tempelkan probe merah ke OUT+ dan probe hitam ke OUT−. Pembacaan pertama bisa saja mendekati tegangan input, karena setelan pabriknya tidak diketahui.
  4. Dengan obeng minus kecil, putar sekrup kuningan trimpot 2–3 putaran ke satu arah sambil melihat layar multimeter. Kalau tegangannya turun, arah putaranmu sudah benar; kalau naik, putar ke arah sebaliknya. Arahnya bisa berbeda antar modul, tergantung bagaimana trimpot itu disambungkan.
  5. Pada trimpot multi-putaran sekitar 25 putaran, menyapu seluruh rentangnya bisa butuh 20 putaran atau lebih. Sekrupnya tidak punya titik henti; di ujung rentang sekrup akan selip dengan bunyi klik halus dan tegangannya berhenti berubah. Kalau itu terjadi, putar balik ke arah sebaliknya.
  6. Begitu mendekati target, lanjutkan per seperempat putaran lalu dengan langkah yang lebih kecil lagi. Untuk 5 V, biarkan di antara 5,00–5,10 V; untuk 3,3 V, di antara 3,30–3,35 V. Pada board 3,3 V seperti ESP32 dan Pico, jangan pernah melewati 3,6 V.
  7. Sambungkan bebannya, atau uji dengan resistor 10 Ω / 5 W yang menarik sekitar 500 mA pada 5 V, lalu ulangi pengukuran dalam kondisi berbeban. Kalau tegangannya turun lebih dari 0,1–0,2 V, cek sumber daya dan pengkabelannya.
  8. Setelah selesai, teteskan sedikit cat kuku atau lem tembak di sekrup trimpot; pada robot yang bergetar, setelannya bisa bergeser seiring waktu.
Kenapa harus sehati-hati itu? Menyambungkan output yang masih 12 V ke pin 5V Arduino atau pin 3V3 ESP32 akan merusak board dalam hitungan detik. Kalau kamu baru belajar mengukur, baca panduan cara memakai multimeter. Bahkan pada modul LM2596 yang punya layar voltmeter kecil 3 digit, pastikan setelan pertama dengan multimeter; layar seperti ini bisa meleset sekitar 0,1 V.

Rumus output: Vout = 1,23 × (1 + R2 / R1)

LM2596 mengatur output-nya sehingga tegangan di pin FB bernilai 1,23 V. Kalau resistor antara output dan FB kita sebut R2, dan resistor antara FB dan GND kita sebut R1, output-nya adalah Vout = 1,23 × (1 + R2 / R1). Di modul, trimpot 10 kΩ menggantikan R2, sedangkan R1 adalah resistor tetap kecil di papan. Dari rumus ini ada dua konsekuensi penting: walaupun R2 mendekati nol, output tidak bisa turun di bawah 1,23 V; dan sebesar apa pun R2, output tidak bisa melebihi input. Kalau trimpot diputar terlalu jauh ke atas, chip membuat sakelarnya menyala terus dan output-nya tertahan sekitar 1–2 V di bawah input. Inilah penyebab paling umum keluhan “modulku tidak mau menurunkan tegangan”.

Kalau di proyek yang bergetar atau yang harus awet lama kamu ingin memakai resistor tetap sebagai pengganti trimpot, ikuti datasheet dan pilih R1 antara 240 Ω dan 1,5 kΩ. Dengan R1 = 1 kΩ, untuk 5 V kamu mendapat R2 = 1 kΩ × (5 / 1,23 − 1) ≈ 3,07 kΩ; dengan resistor 1% 3,09 kΩ output-nya 5,03 V. Untuk 3,3 V, R2 ≈ 1,68 kΩ, dan resistor 1% 1,69 kΩ menghasilkan 3,31 V. Ini sebenarnya hanya pembagi tegangan; rasionya bisa kamu cek dengan kalkulator pembagi tegangan.

Target outputInput minimum yang disarankanPemakaian umum
3,3 V5 VPin 3V3 ESP32 atau Pico, sensor 3,3 V
4,0–4,1 V6 VModul GSM SIM800L
5,0 V7 VPin 5V Arduino, pin 5V ESP32, servo SG90, LED WS2812B
6,0 V8 VServo MG996R (batas atas untuk SG90 dan MG90S)
7,5–9 V10–11 VJack DC atau pin Vin Arduino
12 V14–15 VKipas, relay, dan LED strip 12 V dari sistem 24 V

Nilai input minimum di tabel berlaku untuk beban 2–3 A: sakelar LM2596 punya drop tipikal 1,16 V pada 3 A, dan induktor serta kabel menambah beberapa ratus milivolt. Pada beban ringan (sekitar 1 A), selisihnya turun menjadi sekitar 1,5 V. Paket Li-ion 2S 7,4 V turun ke sekitar 6,4 V ketika baterainya terpakai; itu masih cukup untuk jalur 5 V 1 A, tetapi tidak untuk jalur servo 6 V. Untuk menyiapkan modul GSM yang butuh 4 V, lihat artikel SIM800L.

Memberi daya Arduino dari adaptor atau aki 12 V

Ada dua cara yang benar untuk memberi daya Arduino dengan LM2596. Cara pertama: atur modul ke 5,0 V lalu sambungkan output-nya langsung ke pin 5V. Karena cara ini melewati regulator milik board, hampir tidak ada panas yang muncul dan ini pilihan paling efisien; tetapi tidak ada lagi yang melindungi board-mu. Kalau trimpot bergeser atau modulnya rusak dan meneruskan input ke output, 12 V langsung masuk ke mikrokontroler. Kalau dengan sambungan ini kamu juga mencolokkan kabel USB, daya USB komputer dan output modul jadi tersambung satu sama lain; melepas modul ketika meng-upload kode adalah cara paling aman.

Cara kedua: atur modul ke 7,5–9 V lalu sambungkan ke jack DC atau pin Vin. Regulator milik board kemudian melakukan regulasi akhir, dan dioda di input jack melindungi dari polaritas terbalik. Memberi 12 V langsung ke jack juga bisa, tetapi dengan beban 200 mA regulator kecil di board menghasilkan panas (12 − 5) × 0,2 = 1,4 W; atur LM2596 ke 7,5 V dan kerugian itu turun menjadi (7,5 − 5) × 0,2 = 0,5 W. Semua pilihan catu daya ada di artikel Cara Memberi Daya ke Arduino, dan letak pin-nya di pinout Arduino Uno.

SambunganSetelan LM2596KelebihanPerhatikan
Pin 5V Arduino5,0–5,1 VPilihan paling dingin dan paling efisienTanpa proteksi; jangan colokkan USB bersamaan
Jack DC Arduino7,5–9 VDilindungi dioda polaritas terbalik dan regulator boardDioda membuat drop sekitar 0,7 V
Pin Vin Arduino7,5–9 VTidak perlu jack, dilindungi regulator boardTanpa proteksi polaritas terbalik
Pin 5V (VIN) ESP325,0 VLDO di board menghasilkan 3,3 VJangan pernah memberi 5 V ke pin 3V3
Pin 3V3 ESP323,30 VMelewati regulator boardDi atas 3,6 V ESP32 bisa rusak
Pin VSYS Pico5,0 VVSYS menerima 1,8–5,5 VTambahkan dioda Schottky kalau USB juga tersambung
Sambungan mana pun yang kamu pilih, OUT− modul harus disambungkan ke GND board; dalam sistem dengan GND terpisah, sinyal jadi tidak bermakna dan sensor membaca nilai acak. Kalau kamu memindahkan modul yang sudah diatur ke proyek lain, ukur lagi output-nya: minggu lalu mungkin modul itu disetel untuk LED strip 12 V.

Memberi daya servo dan motor: menghitung arus

Pemakaian LM2596 yang paling umum adalah sebagai catu daya servo. SG90 menarik 100–250 mA ketika bergerak dan melonjak ke 600–700 mA ketika mulai bergerak dan ketika diberi beban. MG996R mencapai sekitar 2,5 A ketika tertahan (stall) pada 6 V. Ketika memilih modul, jangan hitung rata-ratanya: jumlahkan arus semua servo yang bisa terbebani bersamaan. Mengharapkan 2 A kontinu dari LM2596 tanpa heatsink itu realistis: 3 SG90 berjalan dengan nyaman, tetapi memberi daya lengan robot dengan 4–6 MG996R dari satu modul sama saja mengundang reset dan servo bergetar. Dalam kasus itu, pakai modul terpisah untuk setiap satu atau dua servo, atau modul 5 A seperti XL4015.

Motor servo MG996R
Servo MG996R: bekerja pada 4,8–7,2 V dan menarik sampai 2,5 A ketika berbeban; dengan LM2596 yang disetel ke 6 V, jalur terpisah untuk setiap satu atau dua MG996R adalah pilihan yang aman.

Kamu juga perlu menghitung arus input, karena kalau adaptornya tidak sanggup, output tetap turun sebagus apa pun modulnya. Rumusnya Iin = (Vout × Iout) / (Vin × η). Untuk 2 A pada 5 V dari 12 V dengan efisiensi 85%, Iin = 10 W / (12 V × 0,85) ≈ 0,98 A, jadi adaptor 12 V 2 A sudah cukup. Beban yang sama menarik sekitar 1,6 A dari paket baterai 2S 7,4 V. Memasang kapasitor elektrolit 470–1000 µF di dekat jalur servo membuat arus lonjakan ketika servo mulai bergerak dipasok oleh kapasitor, bukan oleh modul. Untuk semua solusi reset yang disebabkan servo, lihat Kenapa Arduino-ku terus reset?, dan untuk pengkabelan servo lihat Apa Itu Motor Servo? serta servo MG996R.

Batas arus, panas, dan heatsink

Buck converter memang efisien, tetapi bukan tanpa rugi. Daya yang hilang kira-kira Ploss = Pout × (1/η − 1) dan terbagi antara chip, dioda Schottky, dan induktor. Pada output 5 V 2 A (10 W) dengan efisiensi 85%, timbul panas sekitar 1,8 W. LM2596S di modul berpaket TO-263 yang disolder ke area tembaga kecil; menurut datasheet, hambatan termalnya ke udara adalah 30–50 °C/W tergantung luas area tembaga. Karena itu pada 2 A chip-nya jadi terlalu panas untuk disentuh lama, dan pada 3 A heatsink aluminium kecil yang ditempel dan aliran udara wajib ada. Di dalam kotak tertutup, batas-batas ini turun lebih jauh lagi.

Beban (12 V → 5 V)Daya outputPerkiraan rugi dayaKondisi
0,5 A2,5 W~0,4 WHangat, tidak perlu heatsink
1 A5 W~0,8 WPanas tapi masih nyaman
2 A10 W~1,8 WSangat panas, butuh aliran udara
3 A15 W~3,5 WWajib heatsink dan kipas

Batas arus LM2596 tidak bisa diatur oleh pengguna. Ketika arus puncak sakelar mencapai sekitar 4,5 A (3,6–6,9 A tergantung variasi produksi), chip memendekkan pulsanya, menurunkan frekuensi ketika kelebihan beban, dan mematikan dirinya sendiri kalau terlalu panas. Proteksi ini biasanya menyelamatkan modul ketika terjadi korsleting, tetapi tidak menggantikan sekring. Untuk pekerjaan yang butuh pengaturan arus, seperti menyalakan LED daya tinggi atau membuat catu daya uji dengan pembatas arus, ada modul LM2596 CC/CV (arus konstan / tegangan konstan) dengan trimpot kedua untuk arus. Kalau kamu ingin jalur daya yang tahan korsleting, tambahkan juga sekring dengan rating yang sesuai di input.

Sebagian modul murah di pasaran memakai chip palsu atau chip yang labelnya diganti. Sebagian berjalan pada frekuensi yang jauh lebih rendah dari 150 kHz, menghasilkan riak (ripple) lebih besar, serta jadi panas dan tegangannya merosot jauh sebelum mencapai 3 A. Jangan percaya angka 3 A di label: rancang untuk 2 A kontinu, dan kalau butuh lebih, bagi bebannya ke dua modul atau pindah ke modul yang lebih kuat seperti XL4015.

Efisiensi dan perbandingan dengan 7805

Kalau dibandingkan dengan regulator tegangan 7805 yang melakukan pekerjaan yang sama, besarnya perbedaan jadi jelas. Ketika memberi 1 A pada 5 V dari 12 V, 7805 juga menarik 1 A dari input dan mengubah (12 − 5) × 1 = 7 W menjadi panas; efisiensinya hanya 42% dan butuh heatsink besar. LM2596 menarik sekitar 0,49 A dari input untuk beban yang sama dan rugi dayanya kurang dari 1 W. Di proyek bertenaga baterai, perbedaan ini langsung terasa pada lama pemakaian: ketika efisiensi naik dua kali lipat, baterai bertahan kira-kira dua kali lebih lama.

Harga yang dibayar sebuah buck converter adalah derau. Menurut datasheet, riak gigi gergaji di output biasanya 0,5–3% dari tegangan output, yaitu 25–150 mV pada 5 V, ditambah derau switching 150 kHz di atasnya. Untuk Arduino, servo, relay, dan LED itu tidak masalah, tetapi akan terlihat kalau kamu memberi daya untuk pengukuran analog yang presisi, mikrofon, atau penguat audio. Dalam kasus itu, gabungkan keduanya: turunkan dulu ke 7–8 V dengan LM2596, lalu dapatkan 5 V yang bersih dengan 7805 atau LDO, sehingga kamu mendapat efisiensi sekaligus ketenangan. Untuk eksperimen kecil berarus rendah di breadboard, modul daya breadboard MB102 siap pakai adalah pilihan yang praktis.

FiturLM2596 (buck)7805 (linear)AMS1117-3.3 (LDO)
Cara kerjaSwitching 150 kHz, energi disimpan di induktorMengubah kelebihan tegangan menjadi panasMengubah kelebihan tegangan menjadi panas
Efisiensi dari 12 V80–90%~42% dengan output 5 V~27% dengan output 3,3 V (input maks. 15 V)
Arus maksimum3 A (2 A kontinu dalam praktiknya)1–1,5 A0,8–1 A
Selisih input-output minimum~1,5–2 V~2 V~1,1–1,3 V
Derau outputRiak puluhan mVSangat rendahSangat rendah
Pengaturan output1,25–35 V dengan trimpotTetap 5 VTetap 3,3 V
Arus diam (Iq)5–10 mA3–8 mA~5 mA
Paling cocok untukSelisih tegangan besar, arus tinggi, bateraiSelisih kecil, arus rendah, catu daya yang tenang3,3 V dari 5 V, beberapa ratus mA
Buck LM2596
Buck LM2596
Regulator LM7805
Regulator LM7805
Regulator AMS1117-3.3
Regulator AMS1117-3.3
Modul daya MB102
Modul daya MB102

Mengukur output LM2596 dalam kondisi berbeban dengan Arduino

Cara terbaik untuk melihat seberapa jauh tegangan turun ketika berbeban adalah mengukur penurunannya selama beban bekerja. Kode di bawah menggerakkan servo terus-menerus antara 0 dan 180 derajat dan menampilkan tegangan terendah dan tertinggi yang terlihat di output LM2596 ke Serial Monitor. Pengkabelannya begini: kabel merah servo ke OUT+, kabel cokelat ke OUT−, dan kabel sinyal ke D9; di antara OUT+ dan GND kamu buat pembagi tegangan 47 kΩ dan 10 kΩ lalu sambungkan titik tengahnya ke A0. Arduino diberi daya lewat USB, dan OUT− harus disambungkan ke GND Arduino.

C++ (Arduino IDE)
1// LM2596 yük testi: servo dönerken çıkış gerilimini izle / LM2596 load test: watch the output while a servo moves
2// Kart: Arduino Uno / Nano (ATmega328P) / Board: Arduino Uno / Nano (ATmega328P)
3#include <Servo.h>
4
5const int SENSE_PIN = A0;          // OUT+ -> 47k -> A0 -> 10k -> GND
6const int SERVO_PIN = 9;           // servo sinyal kablosu / servo signal wire
7const float R_TOP = 47000.0;       // bölücü üst direnç / divider top resistor
8const float R_BOTTOM = 10000.0;    // bölücü alt direnç / divider bottom resistor
9const float AREF_V = 1.1;          // dahili referans, multimetreyle düzelt / internal reference, calibrate with a multimeter
10const float LOW_LIMIT = 4.6;       // 5 V hat için uyarı sınırı / warning limit for a 5 V rail
11
12Servo servo;
13float vMin, vMax;
14
15float readOutput() {
16  long sum = 0;
17  for (int i = 0; i < 8; i++) {
18    sum += analogRead(SENSE_PIN);  // 8 örneğin toplamı / sum of 8 samples
19  }
20  float vPin = (sum / 8.0) * AREF_V / 1023.0;
21  return vPin * (R_TOP + R_BOTTOM) / R_BOTTOM;  // bölücüyü geri hesapla / undo the divider
22}
23
24void track() {
25  float v = readOutput();
26  if (v < vMin) vMin = v;          // en düşük değer / lowest value
27  if (v > vMax) vMax = v;          // en yüksek değer / highest value
28}
29
30void setup() {
31  Serial.begin(9600);
32  analogReference(INTERNAL);       // 1,1 V referans, beslemeden bağımsız / 1.1 V reference, independent of the supply
33  for (int i = 0; i < 10; i++) {   // referans otursun, ilk okumaları at / let the reference settle, drop first readings
34    analogRead(SENSE_PIN);
35    delay(5);
36  }
37  servo.attach(SERVO_PIN);
38}
39
40void loop() {
41  vMin = 99.0;
42  vMax = 0.0;
43  for (int a = 0; a <= 180; a += 2) {     // 0 -> 180 derece / 0 -> 180 degrees
44    servo.write(a);
45    for (int k = 0; k < 5; k++) { track(); delay(2); }
46  }
47  for (int a = 180; a >= 0; a -= 2) {     // 180 -> 0 derece / 180 -> 0 degrees
48    servo.write(a);
49    for (int k = 0; k < 5; k++) { track(); delay(2); }
50  }
51  Serial.print(F("Min: "));
52  Serial.print(vMin, 2);
53  Serial.print(F(" V  Max: "));
54  Serial.print(vMax, 2);
55  Serial.print(F(" V  Dusus / Drop: "));
56  Serial.print(vMax - vMin, 2);
57  Serial.println(F(" V"));
58  if (vMin < LOW_LIMIT) {
59    Serial.println(F("UYARI: gerilim cok dusuyor / WARNING: voltage sags too much"));
60  }
61  delay(1000);
62}

Alih-alih memakai tegangan catu Arduino sendiri, kode ini memakai referensi internal 1,1 V milik ATmega328P (analogReference(INTERNAL)), jadi pembacaannya tidak terpengaruh oleh USB yang bernilai 4,7 V atau 5,1 V. Tegangan tertinggi yang bisa diukur dengan pembagi 47k/10k sekitar 6,2 V; pada jalur servo 6 V, beri ruang untuk toleransi referensi dengan memakai resistor atas 56 kΩ dan mengubah konstanta R_TOP. Karena referensi internal bisa berbeda sekitar ±10% antar chip, ukur output sekali dengan multimeter lalu sesuaikan AREF_V (misalnya 1.08) sampai kedua hasilnya sama. Kalau penurunannya melebihi 0,3 V ketika servo bergerak, perpendek kabelnya, pakai kabel yang lebih tebal, dan tambahkan 470 µF di jalur servo; di bawah 0,1 V berarti catu dayamu sehat.

ESP32: berjalan dari aki 12 V dan memantau tegangannya

Memberi daya ESP32 dari aki 12 V adalah skenario umum untuk stasiun sensor di kebun atau pelacak di dalam mobil. Atur LM2596 ke 5,0 V dan sambungkan ke pin 5V (VIN) board ESP32; LDO milik board menghasilkan 3,3 V. LM2596 dengan mudah menanggung lonjakan arus singkat yang ditarik ESP32 ketika mengirim lewat Wi-Fi; gejala catu daya yang lemah dibahas lengkap di artikel error brownout ESP32. Kode di bawah membaca tegangan aki di GPIO34 lewat pembagi 100 kΩ / 22 kΩ dan memasukkan ESP32 ke deep sleep selama 10 menit begitu tegangannya mencapai batas bawah aman aki asam timbal.

C++ (Arduino IDE)
1// ESP32: LM2596 ile 12 V aküden beslen, aküyü izle / ESP32: run from a 12 V battery via an LM2596, monitor the battery
2#include <Arduino.h>
3#include "esp_sleep.h"
4
5const int BAT_PIN = 34;                           // GPIO34: yalnız giriş, ADC1 / input-only, ADC1
6const float RATIO = (100.0 + 22.0) / 22.0;        // 100k / 22k bölücü (~5,55) / divider (~5.55)
7const float LOW_V = 11.8;                         // kurşun asit akü alt sınırı / lead-acid low limit
8const uint64_t SLEEP_US = 10ULL * 60 * 1000000;   // 10 dakika (mikrosaniye) / 10 minutes (microseconds)
9
10float batteryVolts() {
11  uint32_t mv = 0;
12  for (int i = 0; i < 16; i++) {
13    mv += analogReadMilliVolts(BAT_PIN);          // kalibre edilmiş mV / calibrated mV
14  }
15  return mv / 16.0 / 1000.0 * RATIO;              // bölücüyü geri hesapla / undo the divider
16}
17
18void setup() {
19  Serial.begin(115200);
20  delay(200);
21}
22
23void loop() {
24  float v = batteryVolts();
25  Serial.printf("Aku / Battery: %.2f V\n", v);
26  if (v < LOW_V) {
27    Serial.println("Aku zayif, 10 dk uyku / Battery low, sleeping 10 min");
28    Serial.flush();
29    esp_sleep_enable_timer_wakeup(SLEEP_US);      // zamanlayıcıyla uyan / wake up by timer
30    esp_deep_sleep_start();                       // derin uyku / deep sleep
31  }
32  delay(5000);
33}

Pembagi ini menurunkan bahkan tegangan pengisian 14,4 V ke sekitar 2,6 V, jadi kamu tetap berada dalam rentang ukur ADC ESP32. Aki asam timbal dalam keadaan diam dianggap penuh di sekitar 12,6–12,8 V; turun di bawah 11,8 V membuatnya mendekati pengosongan dalam dan memperpendek umurnya. Ada satu jebakan: LM2596 sendiri menarik 5–10 mA walaupun tanpa beban. Sementara ESP32 hanya memakai mikroampere ketika deep sleep, modulnya menghabiskan 120–240 mAh per hari, dan aki 7 Ah bisa habis dalam 1–2 bulan hanya karena itu. Hitungannya bisa kamu coba dengan nilaimu sendiri memakai kalkulator umur baterai. Untuk proyek yang akan tidur berbulan-bulan, kamu butuh modul yang pin EN (ON/OFF)-nya dikeluarkan untuk memutus daya sepenuhnya, atau konverter step-down dengan arus diam yang sangat rendah; teknik sleep dibahas lengkap di artikel deep sleep ESP32.

Alat bantu pengaturan dengan Raspberry Pi Pico (MicroPython)

Kalau kamu ingin melihat proses pengaturan di layar komputer, Pico bisa kamu pakai sebagai voltmeter sederhana. Karena ADC Pico membaca paling tinggi 3,3 V, sambungkan output LM2596 ke GP26 lewat pembagi 100 kΩ dan 10 kΩ; dengan rasio ini kamu bisa mengukur dengan aman sampai 36 V, jadi walaupun modul yang belum diatur mengeluarkan tegangan yang mendekati input-nya, Pico tidak akan rusak. Pico diberi daya lewat USB dan GND-nya disambungkan. Tergantung targetnya, kode menampilkan “high” atau “low” dan menyalakan LED bawaan begitu output berada dalam ±1%. Kalau kamu baru mengenal Pico, mulai dari Apa Itu Raspberry Pi Pico?.

MicroPython
1# Pico: LM2596 ayar yardımcısı / Pico: LM2596 adjustment helper
2from machine import ADC, Pin
3import time
4
5adc = ADC(26)                  # GP26 (ADC0): OUT+ -> 100k -> GP26 -> 10k -> GND
6led = Pin("LED", Pin.OUT)      # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
7RATIO = (100 + 10) / 10        # bölücü oranı 11, en fazla ~36 V / divider ratio 11, up to ~36 V
8VREF = 3.3                     # ADC referansı (V) / ADC reference (V)
9CAL = 1.000                    # multimetreyle düzeltme katsayısı / multimeter correction factor
10TARGET = 5.00                  # hedef: 5.00 ya da 3.30 / target: 5.00 or 3.30
11
12def read_volts(n=64):
13    total = 0
14    for _ in range(n):
15        total += adc.read_u16()                    # 0-65535 ham değer / raw value
16    return total / n / 65535 * VREF * RATIO * CAL
17
18while True:
19    v = read_volts()
20    err = (v - TARGET) / TARGET * 100              # hedeften sapma (%) / deviation from target (%)
21    led.value(abs(err) <= 1.0)                     # ±%1 içinde LED yanar / LED on within ±1%
22    if err > 1.0:
23        hint = "yuksek, dusur / high, lower it"
24    elif err < -1.0:
25        hint = "dusuk, artir / low, raise it"
26    else:
27        hint = "tamam / OK"
28    print("{:.2f} V  {:+.1f} %  {}".format(v, err, hint))
29    time.sleep(0.3)

Karena ADC Pico bisa meleset sekitar 1–2%, koreksi faktor CAL sekali dengan membandingkannya ke multimeter; setelan akhirnya tetap paling baik dipastikan dengan multimeter. Kalau nanti kamu juga ingin memberi daya Pico dari LM2596, sambungkan output 5,0 V ke pin VSYS lewat dioda Schottky 1N5819; dioda ini mencegah dua sumber daya saling berebut ketika USB dicolokkan. Jangan pernah menyambungkan output modul ke pin 3V3 Pico.

Ide proyek LM2596

  • Mobil robot: paket 18650 2S (7,4 V) memberi daya motor langsung lewat L298N, dan LM2596 yang disetel ke 5 V memberi daya Arduino dan sensor. Langkah-langkahnya ada di artikel Mobil Robot Arduino.
  • Lengan robot: dengan LM2596 yang disetel ke 6 V, buat jalur daya yang kuat untuk servo MG996R yang terpisah dari Arduino; detailnya di panduan lengan robot Arduino.
  • Rumah kaca pintar 12 V: satu adaptor 12 V memberi daya kipas dan pompa, dan LM2596 menghasilkan 5 V dari jalur yang sama untuk Arduino, relay, dan LCD; lihat Proyek Rumah Kaca Pintar.
  • Catu daya meja yang bisa diatur: buat catu daya lab kecil dari LM2596, adaptor laptop bekas, dan voltmeter digital buatan Arduino yang menampilkan output-nya di layar.
  • LED strip WS2812B: 60 LED dengan warna putih penuh bisa menarik sampai 3,6 A; batasi kecerahannya dan tetap di bawah 2 A dengan LM2596 5 V. Perhitungan arusnya ada di artikel WS2812B NeoPixel.
  • Perangkat ESP32 di mobil: turunkan tegangan aki 12–14,4 V ke 5 V; tambahkan sekring di input dan dioda TVS untuk melawan lonjakan tegangan di kendaraan.

Kesalahan umum dan cara mengatasinya

GejalaKemungkinan penyebabSolusi
Output hampir sama dengan input (misalnya 11 V dari 12 V)Trimpot di posisi paling atas, atau target lebih tinggi dari inputTanpa beban, ukur sambil memutar 10–20 putaran ke arah yang menurunkan tegangan
Nilainya tidak berubah ketika trimpot diputarTrimpot multi-putaran selip di ujung rentangnyaPutar 5–10 putaran ke arah sebaliknya; kalau tetap tidak berubah, modulnya mungkin rusak
5 V turun ke 4,3 V ketika beban disambungkanAdaptor tidak sanggup memberi arus, selisih input-output terlalu kecil, atau kabel terlalu tipisUkur input dalam kondisi berbeban, sisakan selisih minimal 2 V, pakai kabel yang pendek dan tebal
Arduino reset ketika servo bergerakServo dan Arduino berbagi catu daya lemah yang samaModul terpisah untuk servo, kapasitor 470–1000 µF, dan GND bersama
Modul mati lalu menyala lagi setelah beberapa menitThermal shutdown bekerjaKurangi beban, tambahkan heatsink dan aliran udara, atau pindah ke modul 5 A
Setelah polaritas terbalik, output 0 V atau sama dengan inputChip dan dioda terbakarGanti modul dan tambahkan dioda Schottky seri di input
Derau pada pembacaan analog atau audioRiak switching 150 kHzTambahkan filter LC di output atau pakai buck + LDO, buat jalur GND tetap pendek
Setelannya bergeser seiring waktuGetaran telah memutar trimpotKunci trimpot dengan cat kuku atau silikon, atau pakai resistor tetap
Ketika mencari masalah, lakukan tiga pengukuran: input dalam kondisi berbeban, output dalam kondisi berbeban, dan selisih keduanya. Kalau selisihnya di bawah 2 V, masalahnya ada di sumber daya; kalau input-nya baik tetapi output-nya rendah, penyebabnya modul atau pengkabelannya. Hambatan gabungan 0,1–0,2 Ω pada kabel dan kontak breadboard menyebabkan drop 0,2–0,4 V pada 2 A; kamu bisa melihatnya dengan kalkulator hukum Ohm. Jangan alirkan lebih dari 1 A lewat jalur breadboard. Kalau kamu curiga board-mu rusak, ikuti pemeriksaan di Apakah Arduino-ku Rusak?.

Kalau diatur dengan benar, diberi selisih input-output yang cukup, dan dijaga di bawah batas 2 A, LM2596 adalah salah satu komponen paling praktis untuk menjalankan proyek dari satu adaptor atau baterai. Ingat urutannya: atur dulu tanpa beban, lalu ukur dalam kondisi berbeban, dan sambungkan board paling akhir. Di aplikasi BlueGrays kamu akan menemukan proyek-proyek yang butuh catu daya terpisah, seperti Mobil Kendali Bluetooth dengan L298N, Robot Penghindar Rintangan, proyek servo, Koreografi Lingkaran Servo dengan 32 servo, kendali LED strip WS2812B, Voltmeter Digital dengan Layar LCD, dan Stasiun Penyiraman Pintar, lengkap dengan skema rangkaian dan kode langkah demi langkah.

Pertanyaan umum

Bagaimana cara mengatur LM2596?

Sambungkan sumber daya ke input dan, tanpa apa pun tersambung ke output, tempelkan probe multimeter ke OUT+ dan OUT−. Putar sekrup trimpot biru dengan obeng kecil dan berhenti begitu nilai yang kamu mau terlihat (misalnya 5,00 V). Terakhir, sambungkan bebannya dan ulangi pengukuran dalam kondisi berbeban.

Berapa ampere yang bisa diberikan LM2596?

Chip LM2596 dirancang untuk 3 A, dan batas arus internalnya bekerja pada arus puncak sekitar 4,5 A. Modul siap pakai berjalan nyaman di sekitar 2 A kontinu tanpa heatsink; 3 A butuh heatsink dan aliran udara. Karena chip palsu di modul murah bisa memberi arus lebih kecil, paling aman merancang untuk 2 A.

Ke arah mana trimpot LM2596 diputar untuk menaikkan tegangan?

Arahnya bisa berbeda antar modul, tergantung bagaimana trimpot disambungkan ke papan, jadi jangan mengandalkan ingatan. Putar sekrupnya 2–3 putaran ke satu arah lalu cek multimeter; kalau tegangannya turun, arah itu yang menurunkan tegangan. Trimpot-nya punya sekitar 25 putaran dan tanpa titik henti, jadi di ujung rentang sekrupnya hanya selip dengan bunyi klik.

Kenapa tegangan output LM2596-ku tidak mau turun?

Penyebab paling umum adalah trimpot berada di posisi paling atas; pada trimpot multi-putaran kamu mungkin perlu 10–20 putaran sebelum tegangannya mulai berubah. Kalau nilai yang diatur lebih tinggi dari input, output tertahan 1–2 V di bawah input. Kalau diputar sebanyak apa pun tidak ada bedanya dan output sama dengan input, chip-nya korsleting di dalam; ganti modulnya.

Bagaimana cara memberi daya Arduino dengan LM2596?

Kamu bisa mengatur modul ke 5,0 V dan menyambungkan output-nya ke pin 5V Arduino; ini cara yang paling dingin, tetapi tidak ada yang tersisa untuk melindungi board. Pilihan yang lebih aman adalah mengatur modul ke 7,5–9 V dan menyambungkannya ke jack DC atau pin Vin. Di kedua cara, OUT− modul harus disambungkan ke GND Arduino.

LM2596 atau 7805: mana yang lebih baik?

Kalau selisih input dan output besar dan arusnya tinggi, LM2596 jauh lebih baik: dari 12 V ke 5 V pada 1 A, 7805 menghasilkan panas 7 W sementara rugi daya LM2596 kurang dari 1 W. Kalau selisihnya kecil, arusnya rendah, dan kamu butuh catu daya yang tenang, 7805 lebih sederhana. Di rangkaian analog yang sensitif, keduanya bisa dipakai berurutan.

Lihat semua proyek
Voltmeter Digital dengan Layar LCD
#56Menengah
Premium

Voltmeter Digital dengan Layar LCD

Cari tahu berapa tegangan yang diberikan baterai atau adaptor daya dengan alat ukur buatanmu sendiri. Pembagi dari dua resistor menurunkan tegangan tinggi ke tingkat yang bisa dibaca board, dan Arduin

4.5(27)
36
Menggunakan Motor Servo
#35Pemula
Premium

Menggunakan Motor Servo

Lengan motor servo kecil berputar ke tiga posisi bergantian: penuh ke awal, tepat ke tengah, dan penuh ke akhir, menunggu dua detik di setiap perhentian. Arduino memberi tahu motor sudut mana yang har

4.7(48)
67
Mobil Kendali Bluetooth dengan L298N
#80Mahir
Premium

Mobil Kendali Bluetooth dengan L298N

Jadikan ponselmu remote dan kendarai mobil robotmu sendiri. Arduino menerima perintah dari aplikasi remote control di ponselmu lewat modul Bluetooth dan memutar roda dengan driver motor; mobil maju, m

5.0(38)
65
Robot Penghindar Rintangan
#81Mahir
Premium

Robot Penghindar Rintangan

Bagaimana kalau membuat kendaraan pintar yang mencari jalannya sendiri? Robot Penghindar Rintangan terus memindai sekelilingnya berkat sensor ultrasonik di depannya. Ketika menemui rintangan, robot be

5.0(38)
49
Koreografi Lingkaran Servo - Pola Animasi dengan 32 Servo
#102Mahir
Premium

Koreografi Lingkaran Servo - Pola Animasi dengan 32 Servo

Proyek animasi visual dengan 32 motor servo yang disusun melingkar di Arduino Mega. Servo-servo dikelola dalam satu array, tersambung ke pin 22-53 Mega, dan menampilkan empat urutan gerak: getaran kacau ketika semua servo bergerak ke sudut acak, sapuan serempak ketika semuanya bergerak bersamaan, gelombang yang berputar halus mengelilingi lingkaran, dan terakhir jarum kompas yang berayun ke kiri dan kanan.

4.5(40)
62
Kendali Strip NeoPixel WS2812B ESP32
#126Menengah
Premium

Kendali Strip NeoPixel WS2812B ESP32

LED addressable WS2812B (NeoPixel) adalah LED RGB pintar yang bisa dikendalikan secara berantai lewat satu pin data. Di proyek ini, kita mengendalikan strip WS2812B 8 LED dengan library Adafruit_NeoPixel untuk membuat animasi pelangi yang halus. Meskipun level logika 3,3V ESP32 bekerja lancar dengan sebagian besar komponen WS2812B, kita menunjukkan solusi dengan resistor seri 470Ω dan kapasitor 1000µF untuk berjaga-jaga jika tidak stabil. Animasinya dibuat dengan menggeser nilai hue.

4.9(19)
30
Stasiun Penyiraman Pintar
#83Mahir
Premium

Stasiun Penyiraman Pintar

Tukang kebun yang menyiram tanamanmu sendiri, supaya tanaman tidak kering ketika kamu berlibur. Sensor kelembapan tanah mengukur seberapa basah tanahnya; ketika kering, Arduino menyalakan pompa air be

5.0(42)
57