Senin, 07 September 2026

Honda Supra X 125 Kiprok Circuit Schematic

 


Kiprok Motor: Fungsi, Cara Kerja, Tegangan Normal, dan Ciri-Ciri Kerusakannya

Kiprok motor merupakan salah satu komponen penting dalam sistem kelistrikan sepeda motor. Komponen yang juga disebut regulator/rectifier ini bertugas menyearahkan listrik dari spul sekaligus mengatur tegangan pengisian aki agar tetap berada pada batas yang aman.

Banyak pemilik motor baru menyadari pentingnya kiprok ketika aki tiba-tiba tekor, lampu sering putus, starter elektrik melemah, atau tegangan aki terlalu tinggi. Padahal, masalah tersebut tidak selalu disebabkan oleh aki. Kiprok, spul, kabel, konektor, dan sistem massa juga perlu diperiksa.

Lalu, sebenarnya apa fungsi kiprok motor? Bagaimana cara kerjanya? Berapa tegangan kiprok motor yang normal? Dan bagaimana cara mengetahui kiprok mulai rusak?

Apa Itu Kiprok Motor?

Kiprok adalah istilah yang umum digunakan untuk menyebut regulator/rectifier pada sepeda motor.

Nama tersebut menggambarkan dua fungsi utama komponen ini:

  • Rectifier: menyearahkan tegangan AC dari spul menjadi DC.

  • Regulator: mengatur dan membatasi tegangan agar tidak berlebihan.

Pada motor dengan sistem kelistrikan 12 volt, aki membutuhkan tegangan pengisian yang lebih tinggi daripada tegangan nominal aki. Karena itu, ketika mesin hidup, tegangan pada sistem kelistrikan biasanya berada di sekitar 13–14 volt lebih.

Secara sederhana, alur sistem pengisian dapat digambarkan:

Spul → Kiprok → Aki → Sistem kelistrikan motor

Tanpa pengaturan tegangan yang baik, kenaikan putaran mesin dapat menyebabkan tegangan listrik meningkat terlalu tinggi dan berpotensi merusak aki maupun komponen elektronik motor.

Fungsi Kiprok pada Sepeda Motor

Secara umum, ada dua fungsi utama kiprok motor.

1. Menyearahkan listrik dari spul

Spul atau alternator menghasilkan listrik AC ketika mesin berputar. Sementara itu, aki membutuhkan listrik DC.

Bagian rectifier pada kiprok bertugas mengubah tegangan AC tersebut menjadi DC.

Dengan demikian, listrik dari spul dapat digunakan untuk mengisi aki dan menyuplai berbagai perangkat kelistrikan motor.

2. Mengatur tegangan pengisian

Putaran mesin berubah-ubah sesuai kondisi berkendara. Ketika RPM meningkat, kemampuan spul menghasilkan listrik juga dapat meningkat.

Jika tegangan tersebut dibiarkan tanpa pengaturan, tegangan sistem dapat menjadi terlalu tinggi.

Di sinilah fungsi regulator bekerja. Regulator mengendalikan tegangan sistem sehingga pengisian aki tetap berada pada batas yang aman.

Karena kiprok harus menangani energi listrik yang cukup besar, komponen ini biasanya dilengkapi sirip pendingin untuk membantu membuang panas.

Bagaimana Cara Kerja Kiprok Motor?

Cara kerja kiprok dapat dipahami dengan melihat prosesnya secara berurutan.

Ketika mesin hidup, poros engkol memutar magnet pada alternator sehingga spul menghasilkan listrik.

Listrik tersebut kemudian masuk ke kiprok.

Spul menghasilkan AC → rectifier menyearahkan AC menjadi DC → regulator mengendalikan tegangan → listrik digunakan untuk mengisi aki.

Pada regulator tipe shunt yang banyak digunakan pada sepeda motor, ketika tegangan meningkat melewati titik regulasi, regulator mengendalikan sebagian energi listrik agar tegangan sistem tidak terus meningkat.

Energi berlebih pada proses regulasi tersebut pada akhirnya banyak berubah menjadi panas. Karena itu, kiprok motor yang panas saat mesin bekerja tidak selalu berarti rusak. Kiprok memang dirancang untuk bekerja dengan pelepasan panas.

Yang perlu dicurigai adalah apabila kiprok menjadi sangat panas disertai gejala seperti konektor meleleh, bau terbakar, tegangan pengisian tidak normal, atau komponen mengalami kerusakan.

Berapa Tegangan Kiprok Motor yang Normal?

Salah satu pertanyaan yang sering muncul adalah:

“Berapa volt tegangan kiprok motor yang normal?”

Untuk sistem sepeda motor 12 volt, tegangan pada terminal aki ketika mesin hidup umumnya berada di kisaran 13,5–14,5 volt, meskipun nilai sebenarnya dapat berbeda tergantung desain sistem pengisian dan spesifikasi masing-masing motor.

Sebagai gambaran:

KondisiTegangan aki
Mesin mati, aki penuh±12,6–12,8 V
Mesin hidup/idle±13–14 V
RPM dinaikkanUmumnya sekitar 13,5–14,5 V
Lebih dari 15 V terus-menerusPerlu diperiksa
Sekitar 16 V atau lebihIndikasi overcharge

Angka tersebut merupakan panduan umum, bukan pengganti spesifikasi servis masing-masing sepeda motor.

Sebagai contoh, beberapa model Honda memiliki spesifikasi pengisian yang berbeda. Karena itu, jika ingin melakukan diagnosis secara akurat, gunakan spesifikasi yang tercantum dalam service manual motor yang bersangkutan.

Apakah Tegangan Akan Naik Terus Saat RPM Tinggi?

Secara teori, spul dapat menghasilkan tegangan yang lebih tinggi ketika putaran mesin meningkat. Namun, tegangan yang sampai ke aki tidak seharusnya naik tanpa batas.

Contohnya, secara sederhana:

RPM rendah → output spul relatif rendah → pengisian berlangsung

RPM meningkat → output spul meningkat → regulator mulai bekerja

RPM semakin tinggi → regulator membatasi tegangan → tegangan sistem tetap terkendali

Inilah alasan tegangan aki tidak seharusnya berubah menjadi 20, 30, atau bahkan 50 volt hanya karena mesin mencapai RPM tinggi.

Jadi, kiprok bukan hanya mengubah AC menjadi DC, tetapi juga mengendalikan tegangan sistem kelistrikan motor.

Ciri-Ciri Kiprok Motor Rusak

Ada beberapa gejala yang dapat menjadi indikasi kiprok mengalami masalah.

1. Aki sering tekor

Jika aki selalu habis meskipun kondisi aki masih relatif baru, jangan langsung mengganti aki.

Periksa terlebih dahulu sistem pengisian, terutama spul dan kiprok.

Kiprok yang tidak mampu mengatur atau meneruskan pengisian dengan baik dapat menyebabkan aki tidak mendapatkan energi yang cukup.

2. Tegangan aki terlalu tinggi

Ini merupakan salah satu indikasi yang cukup penting.

Jika tegangan aki terus meningkat jauh di atas batas normal ketika RPM dinaikkan, regulator kemungkinan mengalami masalah.

Kondisi overcharge dapat memperpendek umur aki dan berpotensi mengganggu komponen kelistrikan lainnya.

3. Lampu sering putus

Lampu yang sering putus dapat disebabkan oleh berbagai hal. Salah satunya adalah tegangan sistem yang terlalu tinggi.

Karena itu, jangan langsung menyimpulkan bahwa lampu berkualitas buruk. Ukur tegangan sistem menggunakan multimeter.

4. Kiprok terlalu panas

Kiprok memang menghasilkan panas ketika bekerja. Namun, jika panasnya berlebihan dan disertai bau terbakar, konektor meleleh, atau tegangan tidak normal, sistem pengisian perlu segera diperiksa.

5. Starter elektrik lemah

Starter elektrik yang semakin berat atau hanya berbunyi “tek-tek” dapat disebabkan oleh aki yang kekurangan daya.

Salah satu penyebabnya adalah sistem pengisian tidak bekerja dengan baik.

Namun, gejala ini juga dapat disebabkan oleh aki yang sudah rusak, motor starter, relay starter, kabel, atau koneksi massa.

Cara Cek Kiprok Motor dengan Multimeter

Pengecekan awal kiprok motor sebenarnya dapat dilakukan menggunakan multimeter digital.

Langkahnya cukup sederhana.

Langkah 1: Ukur tegangan aki saat mesin mati

Atur multimeter pada pengukuran DC Volt.

Hubungkan:

Probe merah → terminal positif (+) aki

Probe hitam → terminal negatif (−) aki

Aki yang penuh dan dalam kondisi baik umumnya menunjukkan sekitar 12,6–12,8 volt setelah kondisi stabil.

Langkah 2: Hidupkan mesin

Perhatikan tegangan pada kondisi idle.

Tegangan biasanya akan meningkat dibandingkan ketika mesin mati karena alternator mulai menghasilkan listrik.

Langkah 3: Naikkan RPM

Naikkan putaran mesin secara bertahap.

Perhatikan apakah tegangan:

naik kemudian stabil, atau

terus meningkat secara berlebihan.

Jika tegangan berada di sekitar rentang normal dan relatif stabil, sistem pengisian kemungkinan bekerja dengan baik.

Sebaliknya, apabila tegangan terus meningkat jauh di atas batas normal, perlu dilakukan pemeriksaan lebih lanjut terhadap kiprok, spul, kabel, konektor, dan massa.

Jangan Langsung Menyalahkan Kiprok

Hal penting dalam mendiagnosis sistem pengisian adalah kiprok bukan satu-satunya komponen yang dapat menyebabkan masalah.

Sistem pengisian motor pada dasarnya terdiri dari beberapa bagian:

Spul/alternator → kiprok → kabel dan konektor → sekring → aki

Masalah juga dapat berasal dari:

  • Spul pengisian lemah atau rusak.

  • Konektor kiprok kotor atau terbakar.

  • Kabel mengalami resistansi tinggi.

  • Massa/ground tidak bagus.

  • Aki sudah mengalami kerusakan.

  • Kiprok mengalami kerusakan regulator atau rectifier.

Karena itu, mengganti kiprok tanpa melakukan pengukuran terlebih dahulu belum tentu menyelesaikan masalah.

Apa Perbedaan Kiprok Full-Wave dan Half-Wave?

Istilah full-wave dan half-wave berkaitan dengan bagaimana sistem pengisian memanfaatkan gelombang AC yang dihasilkan oleh spul.

Pada sistem full-wave, kedua sisi kumparan pengisian digunakan melalui rangkaian penyearah sehingga pemanfaatan energi AC lebih optimal.

Sementara pada sistem half-wave atau sistem dengan konfigurasi tertentu, hanya bagian tertentu dari gelombang atau konfigurasi kumparan yang dimanfaatkan dalam proses penyearahan.

Karena konstruksi spul dan sistem kelistrikan setiap motor berbeda, kiprok full-wave tidak boleh langsung dipasang pada semua motor.

Jika ingin mengubah sistem half-wave menjadi full-wave, biasanya diperlukan perubahan pada konfigurasi kumparan spul dan jalur kabelnya, bukan hanya mengganti kiprok.

Kesimpulan

Kiprok motor adalah komponen yang berfungsi menyearahkan listrik AC dari spul menjadi DC sekaligus mengatur tegangan pengisian aki.

Komponen ini sangat penting karena tegangan yang dihasilkan spul dapat berubah mengikuti putaran mesin. Regulator pada kiprok menjaga agar tegangan sistem tidak meningkat secara berlebihan.

Untuk motor 12 volt, tegangan aki ketika mesin hidup umumnya berada di sekitar 13,5–14,5 volt, tetapi spesifikasi pabrikan tetap menjadi acuan utama.

Jika aki sering tekor, lampu sering putus, starter elektrik lemah, atau tegangan aki terlalu tinggi, jangan hanya mengganti aki. Periksa seluruh sistem pengisian yang terdiri dari spul, kiprok, kabel, konektor, massa, dan aki.

Dengan menggunakan multimeter, pemeriksaan awal sebenarnya dapat dilakukan dengan cukup mudah. Yang paling penting adalah melihat tegangan aki saat mesin mati, saat idle, dan ketika RPM dinaikkan, kemudian membandingkannya dengan spesifikasi motor yang bersangkutan.


Minggu, 16 Agustus 2026

Cara men-drive mosfet dengan tegangan 3,3V dari STM32 atau sejenisnya (CATATAN PROJECT PENELITIANKU)

 


Untuk men-drive MOSFET dengan logika 3,3 V dari STM32, ESP32, atau Teensy, kuncinya adalah: jangan hanya melihat tulisan “VGS(th)” pada datasheet. Yang menentukan MOSFET benar-benar ON adalah spesifikasi RDS(on) pada VGS = 2,5 V atau 3,3 V.

1. Prinsip dasar

Untuk low-side switching:

+12 V
LOAD
D
┌───┴───┐
3.3 V ──┤ Gate │
│ MOSFET│
└───┬───┘
S
GND

MCU GND ────┘

Ketika GPIO = 3,3 V, MOSFET harus masuk kondisi ON dengan resistansi drain-source yang rendah.

2. Jangan tertipu VGS(th)

Misalnya datasheet mengatakan:

VGS(th) = 1–2 V

Bukan berarti MOSFET sudah cocok untuk GPIO 3,3 V.

VGS(th) hanya menunjukkan MOSFET mulai menghantarkan arus kecil, bukan sudah fully enhanced.

Yang harus dicari:

Parameter datasheetYang dicari
VGS(th)≤ 2 V
RDS(on) @ VGS = 4.5 Vbagus
RDS(on) @ VGS = 2.5 Vsangat penting untuk 3,3 V
RDS(on) @ VGS = 3.3 Videal
IDsesuai arus beban
VDSlebih tinggi dari tegangan beban

3. Contoh MOSFET yang lebih cocok

Untuk sistem STM32 3,3 V → beban 12 V, saya lebih menyukai MOSFET tipe logic-level 3,3 V, misalnya:

  • AO3400/AO3400A — beban kecil
  • IRLZ44N — mudah ditemukan, tetapi besar dan bukan pilihan paling efisien untuk desain modern
  • IRLB8721 — lebih cocok untuk arus besar
  • FQP30N06L — cukup populer untuk logic-level, tetapi tetap cek RDS(on) pada tegangan gate yang tersedia

IRF520 kurang ideal untuk GPIO 3,3 V.
IRF3205 juga bukan pilihan terbaik jika gate hanya diberi 3,3 V, walaupun MOSFET tersebut sangat bagus untuk kondisi gate yang lebih tinggi.


4. Rangkaian yang saya rekomendasikan

Untuk STM32 Nucleo G474RE → MOSFET → lampu 12 V/35 W:

+12 V
Lampu 12V/35W
D
┌────┴────┐
STM32 │ N-MOSFET│
GPIO ──100Ω──┤ G S├──── GND
└────┬────┘
GND

Tambahkan:

GPIO STM32
100Ω
├──────── Gate MOSFET
10kΩ
GND

Jadi:

  • 100 Ω → gate resistor
  • 10 kΩ → pull-down gate
  • GND STM32 dan GND supply 12 V → harus common ground

5. Mengapa perlu resistor 100 Ω?

Gate MOSFET sebenarnya bersifat kapasitif.

Saat GPIO berubah:

3.3 V ──► resistor ──► Gate

resistor sekitar 47–220 Ω membantu membatasi peak current dan mengurangi ringing/EMI.

Untuk eksperimen STM32:

100 Ω adalah nilai awal yang sangat baik.

6. Mengapa perlu pull-down 10 kΩ?

Ketika STM32 baru reset atau GPIO masih floating:

GPIO = Hi-Z

Gate MOSFET bisa mendapatkan tegangan tidak terduga.

Dengan:

Gate ──10kΩ── GND

MOSFET dipastikan:

GPIO HIGH → MOSFET ON
GPIO LOW → MOSFET OFF
GPIO Hi-Z → MOSFET OFF

7. Untuk beban Anda: lampu 12 V / 35 W

Arus nominal:

Jadi MOSFET harus mampu menangani sekitar 3 A, tetapi saya tidak akan memilih MOSFET yang spesifikasinya hanya pas 3 A.

Lebih aman memilih MOSFET dengan kemampuan arus ≥10 A dan RDS(on) rendah.

Misalnya jika:

maka:

Ini sangat rendah.

Tetapi jika MOSFET hanya half-on karena gate 3,3 V dan RDS(on) menjadi, misalnya, 0,2 Ω:

MOSFET mulai panas signifikan.

Inilah alasan pemilihan MOSFET berdasarkan RDS(on) pada VGS 2,5/3,3 V sangat penting.


8. Kalau MOSFET besar membutuhkan gate 10 V?

Ada dua solusi.

Solusi A — gunakan MOSFET logic-level

STM32 3.3 V
Logic-Level MOSFET
12 V Load

Ini solusi paling sederhana.

Solusi B — gunakan MOSFET driver

Jika ingin memakai MOSFET seperti IRF3205 untuk arus besar:

STM32
3.3 V
MOSFET DRIVER
│ 10–12 V gate
IRF3205
LOAD

Contoh konsep:

STM32 ──► Gate Driver ──► MOSFET
3.3V 10-12V │
Load

Driver gate memberikan arus charging/discharging gate yang jauh lebih besar dan tegangan gate yang sesuai.


9. Untuk PWM, ini menjadi lebih penting

Karena menggunakan STM32G474RE dan kemungkinan mengendalikan heater dengan PWM,  justru disarankan:

STM32G474RE
│ PWM 3.3 V
100 Ω
Logic-Level MOSFET
12 V / 35 W heater

Untuk PWM frekuensi beberapa kHz, pastikan gate charge (Qg) MOSFET tidak terlalu besar. MOSFET dengan Qg besar membutuhkan arus gate lebih besar agar switching cepat.

Untuk aplikasi Fuzzy Supervisory PID temperatur inkubator, tidak perlu mengejar PWM sangat tinggi. Frekuensi sekitar 1–5 kHz biasanya sudah jauh lebih dari cukup untuk heater lampu, dan beban termal sendiri sangat lambat.

Kesimpulan

Untuk STM32 3,3 V → MOSFET → heater 12 V/35 W, konfigurasi yang saya rekomendasikan:

GPIO STM32 → 100 Ω → Gate MOSFET
Gate → 10 kΩ → GND
Source → GND
Drain → heater
heater → +12 V

Dan yang paling penting: pilih MOSFET yang datasheet-nya menjamin RDS(on) pada VGS 2,5 V atau 3,3 V, bukan hanya berdasarkan VGS(th).

Kalau Anda mau menggunakan IRF3205 yang sudah Anda punya, saya bisa hitungkan apakah GPIO STM32 3,3 V cukup untuk IRF3205, termasuk RDS(on), panas MOSFET, resistor gate, frekuensi PWM, dan apakah perlu gate driver.

ya mau

Ya. Untuk IRF3205 + STM32G474RE 3,3 V + heater 12 V/35 W, hasilnya cukup jelas:

Kesimpulan utama

Saya tidak merekomendasikan IRF3205 langsung dari GPIO STM32 3,3 V.

IRF3205 memang MOSFET arus besar, tetapi bukan MOSFET yang ideal untuk gate drive 3,3 V. Pada 3,3 V, IRF3205 belum dijamin memiliki RDS(on) rendah.

Untuk sistem Anda:

STM32G474RE
PWM 3.3 V
Gate Driver
10–12 V
IRF3205
12 V / 35 W Heater

Kenapa?

Heater Anda:

Jadi arus sekitar 2,9 A.

Kalau IRF3205 mendapatkan gate drive yang cukup tinggi, MOSFET dapat bekerja sangat baik. Tetapi jika hanya diberi 3,3 V, resistansi RDS(on) dapat jauh lebih tinggi daripada kondisi datasheet yang biasanya dispesifikasikan pada gate voltage yang lebih tinggi.

Akibatnya:

Semakin besar RDS(on), semakin besar panas MOSFET.


Rangkaian yang saya pilih untuk proyek inkubator Anda

+12 V
┌─────────┐
│ HEATER │
│ 35 W │
└────┬────┘
D
┌────┴────┐
│ IRF3205 │
│ │
STM32 ──► DRIVER ─►G│ |
│ │
└────┬────┘
S
GND
┌───────────────--┘
STM32 GND

Gate:

STM32 PWM
Gate Driver
├── 10–12 V
10Ω–22Ω
IRF3205 Gate
10kΩ
GND

Komponen yang saya sarankan

KomponenNilai
MOSFETIRF3205
Gate resistor10–22 Ω
Gate pull-down10 kΩ
Gate driver supply10–12 V
Heater12 V / 35 W
Arus heater≈2,92 A
PWMsekitar 1–5 kHz
MCUSTM32G474RE, 3,3 V

Tetapi ada pilihan yang lebih sederhana

Kalau Anda belum membeli gate driver, saya justru menyarankan mengganti IRF3205 dengan MOSFET logic-level yang benar-benar dispesifikasikan pada VGS 2,5/3,3 V.

Untuk proyek inkubatorku, konfigurasi ini jauh lebih sederhana:

STM32 3.3 V
100Ω
Logic-Level MOSFET
Heater 12 V / 35 W

Tidak perlu gate driver, selama MOSFET yang dipilih memang memenuhi RDS(on) pada 3,3 V.


Sabtu, 15 Agustus 2026

Debug program STM32G474RE PWM TIM




Debugging pada STM32 bukan sekadar mencari error compile. Tujuannya adalah menjalankan program secara bertahap sambil melihat nilai variabel, register, peripheral, dan aliran eksekusi secara real-time.

Untuk kasus STM32G474RE + STM32CubeIDE + PWM TIM1, alurnya seperti ini:

1. Build program

Di STM32CubeIDE:

Project → Build Project

Periksa bagian Console.

  • 0 errors → program berhasil dikompilasi.
  • warning → belum tentu fatal.
  • error → program belum bisa di-debug.

2. Pastikan debugger ST-LINK

Nucleo-G474RE sudah memiliki ST-LINK onboard.

Hubungkan USB dari PC ke konektor ST-LINK USB pada board.

Kemudian:

Run → Debug As → STM32 Cortex-M C/C++ Application

CubeIDE akan masuk ke Debug Perspective.


3. Pasang Breakpoint

Breakpoint adalah titik tempat CPU berhenti sementara.

Misalnya program:

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

while (1)

{

    HAL_Delay(100);

}

Pasang breakpoint pada:

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

Caranya:

double-click nomor baris di sebelah kiri kode.

Akan muncul tanda breakpoint.

Ketika program berjalan dan mencapai baris tersebut, CPU berhenti.


4. Gunakan tombol utama Debug

Di toolbar Debug biasanya ada:

TombolFungsi
▶ ResumeMelanjutkan program
⏸ SuspendMenghentikan CPU
↪ Step IntoMasuk ke dalam fungsi
↷ Step OverMenjalankan satu baris
↩ Step ReturnKeluar dari fungsi
⏹ TerminateMenghentikan debugging

 Yang paling sering digunakan adalah:

Breakpoint → Resume → lihat nilai → Step Over

5. Contoh debugging PWM TIM1

Misalnya Anda ingin:

TIM1_CH1 → PA8 → PWM 1 kHz → duty cycle 50%

Konfigurasi:

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

Kemudian:

__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 500);

Jika:

ARR = 999

CCR1 = 500

maka secara sederhana:

6. Periksa variabel dengan Watch

Saat breakpoint aktif, buka:

Window → Show View → Expressions

Tambahkan:

htim1.Instance

htim1.Init.Prescaler

htim1.Init.Period

Untuk PWM, yang paling penting:

TIM1->PSC

TIM1->ARR

TIM1->CCR1

Misalnya hasil:

PSC  = 169
ARR  = 999
CCR1 = 500

berarti kita dapat memeriksa konfigurasi PWM langsung dari register hardware.


7. Debug register TIM1

Ini bagian yang sangat penting untuk STM32.

Jangan hanya melihat kode C. Periksa juga register peripheral.

Buka:

Window → Show View → SFRs

atau gunakan Live Expressions/Expressions.

Perhatikan:

TIM1->PSC
TIM1->ARR
TIM1->CCR1
TIM1->CR1
TIM1->CCMR1
TIM1->CCER
TIM1->BDTR

Contoh interpretasi:

RegisterYang diperiksa
PSCPrescaler
ARRPeriode PWM
CCR1Duty cycle CH1
CR1Counter configuration
CCMR1PWM mode
CCERChannel enable
BDTRMain Output Enable

8. Mengapa TIM1 berbeda dari timer biasa?

TIM1 adalah Advanced-Control Timer.

Ini penting.

Untuk PWM TIM1/TIM8 terdapat konsep Main Output Enable (MOE) melalui register:

TIM1_BDTR

Bit penting:

MOE = 1

Jika konfigurasi timer terlihat benar tetapi output PWM tidak muncul, BDTR/MOE perlu diperiksa.

Namun jika Anda menggunakan:

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

HAL biasanya menangani kebutuhan output utama tersebut untuk penggunaan PWM normal.


9. Debug GPIO PA8

TIM1_CH1 pada konfigurasi umum dapat menggunakan:

PA8

PA8 tidak boleh dikonfigurasi sebagai GPIO Output biasa jika ingin menghasilkan PWM hardware.

Harus menjadi:

PA8
AF1
TIM1_CH1

Di CubeMX:

Pinout → PA8 → TIM1_CH1

Kemudian GPIO akan dikonfigurasi sebagai Alternate Function.

Secara konsep:

TIM1

 │

 └── CH1

      │

      ▼

     PA8

      │

      ▼

    PWM OUT

10. Debug frekuensi PWM

Misalnya clock TIM1:

TIM1CLK = 170 MHz

Prescaler:

PSC = 169

Maka:


Jika:

ARR = 999

maka:



Jadi konfigurasi:

TIM1CLK = 170 MHz
PSC     = 169
ARR     = 999
CCR1    = 500

menghasilkan kira-kira:

PWM = 1 kHz
Duty = 50%

11. Jika PWM tidak keluar

Gunakan urutan debugging berikut:

PROGRAM │ ▼ HAL_TIM_PWM_Start() │ ▼ TIM1 berjalan? / \ NO YES │ │ ▼ ▼ cek clock cek CH1 │ ▼ PA8? / \ NO YES │ │ ▼ ▼ cek AF1 cek CCR1 │ ▼ cek CCER │ ▼ cek BDTR │ ▼ OSCILLOSCOPE

12. Debug dengan oscilloscope

Setelah software benar, ukur:

PA8 ───────── Oscilloscope CH1
GND ───────── Oscilloscope GND

Jika target:

Frequency = 1 kHz
Duty      = 50%

maka waveform kira-kira:

3.3V  ┌───────┐       ┌───────┐
      │       │       │       │
0V ───┘       └───────┘       └────
       0.5 ms   0.5 ms
       <------ 1 ms --------->

Catatan: level logika STM32G474RE umumnya 3.3 V; jangan menghubungkan output PA8 langsung ke beban yang membutuhkan tegangan lebih tinggi.


13. Debug program secara sistematis

Untuk program STM32 yang lebih kompleks, gunakan urutan:

Level 1 — Compile

Apakah program berhasil build?

Level 2 — Program execution

Apakah CPU masuk main()?

Level 3 — Peripheral initialization

Apakah MX_TIM1_Init() dijalankan?

Level 4 — Peripheral start

Apakah HAL_TIM_PWM_Start() dijalankan?

Level 5 — Register

PSC
ARR
CCR1
CCER
BDTR

Level 6 — Pin

PA8 = TIM1_CH1 / AF1

Level 7 — Hardware

Oscilloscope / Logic Analyzer

Ini jauh lebih efektif daripada langsung mengubah-ubah kode secara acak.

Untuk STM32G474RE Anda, pola debug yang paling saya sarankan:

STM32CubeIDE
      │
      ▼
Build
      │
      ▼
Debug
      │
      ▼
Breakpoint
      │
      ▼
main()
      │
      ▼
MX_TIM1_Init()
      │
      ▼
HAL_TIM_PWM_Start()
      │
      ▼
Check TIM1 Registers
      │
      ▼
Check PA8 / AF1
      │
      ▼
Oscilloscope

Intinya: debugging STM32 yang benar dilakukan dari

software → peripheral → register → GPIO → sinyal fisik
.

Untuk kasus PWM TIM1, jangan berhenti pada “program tidak error”; pastikan
TIM1 benar-benar running dan PA8 benar-benar mengeluarkan waveform PWM.


ADS Article