Memprogram STM32 Nucleo dengan STM32CubeIDE Bagian 2: Mengatur PWM, Frekuensi dan Duty Cycle

Kembali lagi ke postingan part 2 masih tentang mikrokontroller STM32, kali ini penulis ingin menulis tentang bagaimana cara membuat PWM pada STM32, mengatur frekuensi serta duty cycle sesuai dengan yang diinginkan karena kebutuhan frekuensi bergantung pada aplikasi/projek yang akan kita buat.

Jika pembaca mencari artikel ini di google tentu sudah tahu apa yang dimaksud dengan PWM sehingga tidak perlu dijelaskan lagi. Untuk yang belum paham mungkin di kesempatan lain penulis akan membahas apa itu PWM.

Untuk membuat PWM kita membutuhkan fungsi TIMER, atau TIMx pada STM32 dimana x adalah nomor TIMER. Pada STM32F446RE mempunyai 14 TIMER dari TIM1 hingga TIM14, disini kita akan mencoba menggunakan TIM1 dengan frekuensi PWM yang dibangkitkan sebesar 2KHz.

Seperti biasa, buat Project Baru terus beri nama, kemudian pilih board yang digunakan, maka akan tampil konfigurasi Pinout.

Pada Category, pilih Timers kemudian klik TIM1, Pada Clock Source pilih Internal Clock
kita menggunakan Channel 1 untuk membangkitan PWM dengan cara memilih PWM Generation CH1, seperti yang terlihat gambar dibawah

Masuk ke tab Clock Configuration, maka akan terlihat konfigurasi clock bawaan sistem nya

Pada sisi kanan terlihat ada beberapa Bus dengan nilai frekuensi konfigurasi Clocknya, yang terpenting adalah APB1 dan APB2. Bus ini terhubung ke periferal dan fitur tertentu terutama TIMER yang bisa dilihat di datasheet berikut

Pada halaman 57-58, terlihat hubungan antara periferal dengan bus. Jika dilihat pada tabel diatas periferal TIM1 yang kita gunakan untuk membangkitkan PWM ini berada di bus APB2. sehingga APB2 time clock yang besar frekuensinya sebesar 84MHz ini mempengaruhi pengaturan yang akan kita buat selanjutnya karena TIM1 ini berada di bus APB2.

Kembali lagi ke tab Pinout & Configuration pada CubeIDE
Karena frekuensi clock APB2 sebesar 84MHz, sedangkan frekuensi PWM yang kita inginkan adalah 2KHz, maka harus diturunkan terlebih dahulu menggunakan Prescaler. Berdasarkan datasheet di bagian TIM1&TIM8 main features halaman 449, Prescaler ini mempunyai besar 16-bit sehingga rentang nilainya antara 1 hingga 65536

Kita tahu bahwa frekuensi APB2 sebesar 84MHz, penulis disini menggunakan prescaler sebesar 42 sehingga frekuensi yang dihasilkan adalah 2MHz (84MHz/42 = 2MHz) atau 2 juta tick dalam satu detik (2 juta tick per detik).
Agar PWM menjadi 2KHz atau 2 ribu tick per detik harus dibagi lagi di bagian Counter Period. Sesuai dengan namanya, Counter Period ini akan menghitung hingga waktu tertentu dalam satu period nya. Jika clock nya 2.000.000 tick dalam satu detik jika ingin diubah menjadi 2000 tick dapat dibagi dengan 1000 (2000000/1000 = 2000 atau 2 KHz), sehingga Counter Period nya sebesar 1000.

Oleh karena itu, Prescaler diisi dengan 42-1, Counter Period diisi dengan 1000-1. Catatan: terkadang ada beberapa board nucleo yang diisi langsung dengan besar 42 dan 1000 tanpa dikurangi -1 terlebih dahulu.

Lihat gambar pinout

Terlihat bahwa pin PWM (TIM1_CH1) berada di PA8 atau D7, setelah itu generate code dengan menekan ikon gear, kita selesai mengkonfigurasi menjadi pin PWM.
Sekarang buka file main.c untuk mulai menulis kode

Masukan kode berikut didalam int main diluar while loop

Fungsi diatas adalah untuk memulai membangkitankan fungsi PWM. Jika kita menggunakan TIM2, &htim1 bisa diganti dengan &htim2 sesuai yang digunakan, sama juga jika kita menggunakan channel 2 maka TIM_CHANNEL_1 dapat diganti dengan TIM_CHANNEL_2

Selanjutnya adalah mengatur duty cycle, besarannya dapat diatur menggunakan fungsi berikut

Ingat ga sebelumnya kita memasukkan nilai counter period sebesar 1000, karena itu nilai maksimal duty cycle nya juga sebesar 1000. Kalo di Arduino nilai maksimal duty cycle kan cuman 255. Kalo kita ingin duty cycle sebesar 50%, maka

Jika ingin 33% maka

Full Program int main

Gimana kalo frekuensinya saya ubah menjadi 10KHz dengan APB2 clock tetap sebesar 84MHz?

saya bisa menggunakan kombinasi berikut

Prescaler = 42-1
Counter Period = 200-1

Prescaler = 84-1
Counter Period = 100-1

Prescaler = 2-1
Counter Period = 4200-1

Semakin besar nilai counter period maka rentang duty cycle juga semakin besar dan resolusinya semakin tinggi. Berikut merupakan pembacaan osiloskop

Terima Kasih kepada para pembaca, sekian tulisan tentang PWM. Mohon koreksinya jika ada tulisan yang kurang tepat di kolom komentar

3 thoughts on “Memprogram STM32 Nucleo dengan STM32CubeIDE Bagian 2: Mengatur PWM, Frekuensi dan Duty Cycle

  • 14/08/2021 at 14:39
    Permalink

    terimakasih kak, akhirnya motor saya bisa bergerak juga. kemudian saya ingin bertanya, bagaimana cara agar kita bisa mengatur gerakan motor kira seperti pause, kemudian bergerak lagi ketika ditekan? terimakasih

    Reply
  • 16/02/2024 at 17:56
    Permalink

    Tadalafil 20 Mg Precio
    It is remarkable, it is very valuable piece
    Cialis 5 mg prezzo cialis prezzo cialis 5 mg prezzo

    Reply
  • 21/02/2024 at 04:02
    Permalink

    Aviator Spribe играть с друзьями
    Absolutely with you it agree. In it something is also I think, what is it excellent idea.
    Добро пожаловать в захватывающий мир авиаторов! Aviator – это увлекательная игра, которая позволит вам окунуться в атмосферу боевых действий на небе. Необычные графика и захватывающий сюжет сделают ваше путешествие по воздуху неповторимым.

    Играйте в Aviator Spribe играть бесплатно и ощутите волнение азарта!
    Aviator игра позволит вам почувствовать себя настоящим пилотом. Вам предстоит совершить невероятные маневры, выполнять сложные задания и сражаться с противниками. Улучшайте свой самолет, чтобы быть готовым к любым ситуациям и становиться настоящим мастером.
    Основные особенности Aviator краш игры:
    1. Реалистичная графика и физика – благодаря передовой графике и реалистичной физике вы почувствуете себя настоящим пилотом.
    2. Разнообразные режимы игры и миссии – в Aviator краш игре вы сможете выбрать различные режимы игры, такие как гонки, симулятор полетов и захватывающие воздушные бои. Кроме того, каждая миссия будет предлагать свои собственные вызовы и задачи.
    3. Улучшение и модернизация самолетов – в игре доступны различные модели самолетов, которые можно покупать и улучшать. Вы сможете устанавливать новое оборудование, улучшать двигательность и мощность своего самолета, а также выбирать различные варианты окраски и декорации.
    Aviator краш игра – это возможность испытать себя в роли авиатора и преодолеть все сложности и опасности воздушного пространства. Почувствуйте настоящую свободу и адреналин в Aviator краш игре онлайн!
    Играйте в «Авиатор» в онлайн-казино Pin-Up
    Aviator краш игра онлайн предлагает увлекательную и захватывающую игровую атмосферу, где вы становитесь настоящим авиатором и сражаетесь с самыми опасными искусственными интеллектами.
    В этой игре вы должны показать свое мастерство и смекалку, чтобы преодолеть сложности многочисленных локаций и уровней. Вам предстоит собирать бонусы, уклоняться от препятствий и сражаться с врагами, используя свои навыки пилотирования и стрельбы.
    Каждый уровень игры Aviator краш имеет свою уникальную атмосферу и задачи. Будьте готовы к неожиданностям, так как вас ждут захватывающие повороты сюжета и сложные испытания. Найдите все пути к победе и станьте настоящим героем авиатором!
    Авиатор игра является прекрасным способом провести время и испытать настоящий адреналиновый разряд. Готовы ли вы стать лучшим авиатором? Не упустите свой шанс и начните играть в Aviator краш прямо сейчас!
    Aviator – играй, сражайся, побеждай!
    Aviator Pin Up (Авиатор Пин Ап ) – игра на деньги онлайн Казахстан
    Aviator игра предлагает увлекательное и захватывающее разнообразие врагов и уровней, которые не оставят равнодушными даже самых требовательных геймеров.
    Враги в Aviator краш игре онлайн представлены в самых разных формах и размерах. Здесь вы встретите группы из маленьких и быстрых врагов, а также огромных боссов с мощным вооружением. Разнообразие врагов позволяет игрокам использовать разные тактики и стратегии для победы.
    Кроме того, Aviator игра предлагает разнообразие уровней сложности. Выберите легкий уровень, чтобы насладиться игровым процессом, или вызовите себе настоящий вызов, выбрав экспертный уровень. Независимо от выбранного уровня сложности, вы получите максимум удовольствия от игры и окунетесь в захватывающий мир авиаторов.
    Играйте в Aviator и наслаждайтесь разнообразием врагов и уровней, которые позволят вам почувствовать себя настоящим авиатором.

    Reply

Leave a Reply

Your email address will not be published.