December 5, 2021

Blogna Kang U-2 Man

STM32, Embedded System, Microcontroller, ARM Cortex-M, RTOS, FreeRTOS

Pengukuran Frekuensi Dan Siklus Kerja Dengan STM32

2 min read

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

Tutorial kali ini masih membahas tentang pemanfaatan timer. Timer akan digunakan untuk mengukur frekuensi dan siklus kerja sebuah sinyal, memanfaatkan fungsi Capture dari sebuah timer. Bagi yang belum membaca artikel tentang timer di STM32, silakan dibuka link berikut

  1. Pengenalan Timer STM32 Bagian 1
  2. Pengenalan Timer STM32 Bagian 2
  3. Pengenalan Timer STM32 Bagian 3 (Habis)

PRINSIP PENGUKURUAN SINYAL DENGAN TIMER

Selain mempunyai keluaran, timer juga mempunyai masukan yang juga dipetakan ke pin GPIO yang sama. Pin masukan timer ini bisa digunakan untuk pengukuran sinyal yang berasal dari luar, frekuensi maupun siklus kerjanya. Untuk pengukuran frekuensi dan siklus kerja sebuah sinyal diperlukan 2 buah input capture yang dipetakan ke pin input timer yang sama. Kedua unit capture ini bekerja secara berlawanan, unit capture yang pertama mendeteksi sinyal saat transisi naik sedangkan unit capture yang lain mendeteksi saat transisi turun. Unit capture yang pertama akan mengukur perioda sinyal (frekuensi) sedangkan unit capture yang lainnya perioda saat lebar pulsa (siklus kerja).

Prinsip Pengukuran Frekuensi dan Siklus Kerja

Frekuensi sinyal dihitung dengan persamaan sebagai berikut:

Sedangkan nilai duty cycle dihitung dengan rumus sebagai berikut:

Dalam pengukuran, ada kemungkinan sinyal periode mempunyai frekuensi rendah, sehingga timer mengalami overflow terlebih dahulu sebelum sinyal satu periode penuh.

Frekuensi Sinyal Terlalu rendah

Lalu berapa frekeunsi maksimal yang bisa diukur? Saya belum menemukan rumus untuk menghitungnya. Jika ada yang sudah tahu, semoga berkenan untuk memberitahukannya di kolom komentar.

PENGATURAN TIMER

Di contoh tutorial ini, saya menggunakan STM32F207ZG (144 pin), namun bisa dengan mudah di-porting ke STM32 yang lain.

Program menggunakan TIM3 CH1 dan CH2, yang bekerja sebagai Input Capture Direct Mode (CH1) dan Input Capture Indirect Mode (CH2). CH1 akan aktif di Rising Edge dan CH2 di Falling Edge. Kendali Slave Mode berada di Reset Mode dengan Trigger Source dari sinyal TI1FP1.

Konfigurasi Timer

Interupsi TIM3 diaktifkan. Untuk menampilkan hasil pengukuran digunakan USART1 yang bekerja di baud rate 115200 bps.

JALANNYA PROGRAM

Program utama dari pengukuran ini adalah interupsi timer TIM3. Interupsi timer di-handle di fungsi callback.

Program layanan interupsi, hanya melayani interupsi dari CH1, karena CH2 pada dasarnya mengalami interupsi sebelum CH1. Setelah membaca nilai cacahan dari CH1, perlu dicek terlebih dahulu, apakah ada nilai yang tersimpan di register capture atau tidak, karena walaupun tidak ada sinyal di pin CH1, TIM3 akan tetap mengalami interupsi, dalam hal ini interupsi karena overflow.

Looping utama akan menampilkan hasil pengukuran ke USART1.

Silakan tonton videonya…

Untuk source code bisa diunduh di link ini.

Semoga bermanfaat.

Visits: 17 Visits: 98018

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.