Anda di halaman 1dari 13

22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Kuliah Perancangan Sistem Embedded

UNCATEGORIZED

SISTEM KENDALI MOTOR DC BERBASIS


FREERTOS DENGAN MENGGUNAKAN
ARDUINO UNO
JANUARY 3, 2019 | ALILSN12 | 3 COMMENTS

Nur Rasyid Fadlurrahman (13214038)

Moh N Syahril Kaharu (13214045)

1         Spesi kasi


Berikut adalah spesi kasi rancangan sistem kendali kecepatan/posisi motor yang akan dibuat:

1. Input: Keypad 4×4 (Input nilai Set point Kecepatan/Posisi, Kp, Ki, dan Kd)
2. Output:

LCD 16×2 I2C :


Teks Interfacing untuk petunjuk pemberian input
Display nilai input set point kecepatan dan nilai Kp, Ki, serta Kd yang diberikan.
Display nilai hasil kecepatan motor yang dihasilkan realtime
Speaker buzzer : Suara setiap kali tombol keypad ditekan untuk memasukkan input

3. Hardware sistem secara umum terdiri dari Arduino Uno, 1 keypad 4×4, 1 LCD 16×2 I2C, dan 1 speaker
buzzer.
4. Sistem yang dirancang adalah sistem untuk mengendalikan kecepatan/posisi motor DC dengan
metode PID pada mikrokontroler berbasis FreeRTOS.
5. Sistem akan menerima input berupa nilai kecepatan/posisi (set point), nilai Kp, Ki, dan Kd dari keypad.
6. Sistem akan mengeluarkan suara dari speaker buzzer setiap kali tombol keypad ditekan.
7. Nilai Kp, Ki, dan Kd yang diinput disimpan ke dalam EEPROM ( le eksternal)

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 1/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

8. Kemudian sistem akan menampilkan nilai input kecepatan (set point), Kp, Ki, dan Kd yang diberikan
pada LCD.
9. Sistem kemudian akan menjalankan motor dan menjaga agar nilai kecepatan/posisi motor berada pada
set point yang telah ditentukan dengan nilai konstanta PID yang telah diberikan sebelumnya.
10. Nilai kecepatan/posisi motor dapat ditampilkan secara real time pada LCD.

Adapun skenario dari rancangan sistem ini adalah sebagai berikut:

1. Program dimulai dengan menampilkan mode.


2. Terdapat dua mode utama yaitu mode kendali kecepatan dan mode kendali posisi.
3. Pada setiap mode terdapat empat pilihan mode yaitu mode set input (set point, Kp, Ki, dan Kd), mode
ubah RPM (mode untuk mengubah RPM ketika motor sudah berjalan), dan mode mulai proses kendali
motor (kecepatan/posisi).
4. Setiap mode tersebut ditampilkan pada LCD. Pergantian display mode bisa dengan menekan tombol A
dan B pada keypad (A untuk naik dan B untuk turun).
5. Setiap mode bisa dipilih dengan menekan tombol D pada keypad saat ditampilkan mode yang
bersangkutan pada LCD.
6. Pada mode set input pertama-tama akan diminta input nilai kecepatan/posisi set point, serta nilai Kp,
Ki, dan Kd dari keypad.
7. Setiap kali tombol keypad ditekan akan ada bunyi pada speaker buzzer sebagai feedback.
8. Setelah memberikan input kecepatan/posisi pada keypad: tombol D ditekan 1x -> ditampilkan per-
mintaan input nilai Kp pada LCD.
9. Setelah memberikan input nilai Kp pada keypad: tombol D ditekan 1x -> ditampilkan permintaan input
nilai Ki pada LCD.
10. Setelah memberikan input nilai Ki pada keypad: tombol D ditekan 1x -> ditampilkan permintaan input
nilai Kd pada LCD.
11. Setelah memberikan input nilai Kd pada keypad: tombol D ditekan 1x -> kembali ke display pemilihan
mode pada LCD.
12. Nilai Kp, Ki, dan Kd yang diinput disimpan ke le eksternal atau EEPROM.
13. Pada mode cek konstanta PID akan ditampilkan sekaligus pada LCD nilai kecepatan set point, Kp, Ki,
dan Kd yang telah diset pada keypad.
14. Saat mode cek konstanta PID: tombol D ditekan 1x -> kembali ke display pemilihan mode pada LCD.
15. Pada mode mulai proses kendali motor akan ditampilkan hasil pembacaan kecepatan/posisi aktual
motor yang dihasilkan secara real time.
16. Saat mode hasil: tombol D ditekan 1 x -> kembali ke display pemilihan mode pada LCD.
17. Tombol * untuk mereset.

2         Perancangan

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 2/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

2.1        Skema Rangkaian

Gambar 2.1.1 Skema Pin Arduino UNO

Gambar 2.1.2 Skema Pin Pada Motor Encoder

Gambar 2.1.3 Skema Pin Pada Motor Driver

2.2        Model Data Flow Diagram


DFD level 0 dari sistem ini adalah sebagai berikut:

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 3/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Gambar 2.2.1 DFD Level 0 Sistem

DFD level 0 menjelaskan interaksi antara sistem yang dibuat dengan user dan lingkungan yang dikontrol.
Dalam hal ini, lingkungan yang dikontrol adalah motor. Sistem akan menerima input dari user berupa nilai
set point kecepatan/posisi motor yang diinginkan serta nilai-nilai konstanta PID yang diperlukan. Sistem
kemudian akan mengolah informasi dan memberikan kepada motor kecepatan/posisi motor yang se-
harusnya. Kecepatan/posisi motor secara aktual juga dibaca oleh sistem untuk ditampilkan kepada user
melalui LCD. Adapun suara buzzer berasal dari sistem sebagai feedback dari setiap penekakan keypad
saat memasukkan input.

Adapun DFD level 1 sistem adalah sebagai berikut:

Gambar 2.2.2 DFD Level 1 Sistem

DFD level 1 ini menjelaskan secara detail proses dalam sistem. Dalam hal ini terdapat beberapa proses
yang secara keseluruhan membangun sistem untuk mengendalikan kecepatan/posisi motor.

2.3        Model State Chart


Berikut adalah state chart yang digunakan pada sistem:

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 4/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Gambar 2.3.1 State Chart Sistem

Pada desain state chart ini sistem awalnya akan menampilkan display menu utama yang terdiri dari menu
mode kendali kecepatan dan menu mode kendali posisi. Pilihan 1 pada keypad akan membawa sistem ke
mode kendali kecepatan sedangkan pilihan 2 akan membawa sistem pada menu kendali posisi. Pada se-
tiap mode ini, akan ditampilkan pilihan-pilihan mode juga. Pilihan 1 untuk input meminta input set point,
Kp, Ki, dan Kd. Pilihan 2 untuk mengecek nilai Kp, Ki, dan Kd yang telah dimasukkan. Pilihan 3 adalah un-
tuk memulai proses kendali (kecepatan/posisi) pada motor. Penekanan * untuk melakukan reset pada
sistem.

2.4        Sinyal & Sistem


Berikut adalah diagram blok sinyal dan sistem dari sistem yang dirancang:

Gambar 2.4.1 Diagram Blok Sinyal dan Sistem

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 5/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Pada diagram blok diatas terlihat bahwa mikrokontroler akan membaca input berupa nilai Set Point
(kecepatan/posisi), nilai Kp, Ki, dan Kd dari keypad kemudian akan mengolah informasi dan memberikan
kepada motor kecepatan/posisi motor yang seharusnya melalui motor driver. Kecepatan/posisi motor se-
cara aktual juga dibaca oleh sistem melalui rotary encoder untuk ditampilkan kepada user melalui LCD.
Adapun suara buzzer berasal dari sistem sebagai feedback dari setiap penekakan keypad saat mema-
sukkan input. Nilai Kp, Ki, dan Kd disimpan dalam EEPROM. Power supply dihubungkan ke motor driver
dan mikrokontroler sebagai sumber daya. Adapun rotary encoder mendapatkan daya dari mikrokontoler
yang terhubung dengan power supply sedangkan motor DC mendapatkan daya dari motor driver yang
terhubung langsung ke power supply.

2.5        Pembagian Task pada RTOS


Pada sistem ini kami hanya menggunakan 1 task saja untuk melakukan seluruh proses mulai dari display
menu utama, pembacaan input keypad, membunyikan buzzer sebagai feedback penekanan keypad, peny-
impanan nilai konstanta PID ke EEPROM, dan proses kendali kecepatan/posisi motor. Proses penjad-
walan menggunakan FreeRTOS.

2.6        Flow chart perangkat lunak


Berikut adalah ow chart software dari sistem secara umum:

Gambar 2.6.1 Flow Chart Menu Utama

Flow Chart menu utama diatas memiliki beberapa sub fungsi seperti fungsi untuk pembacaan keypad,
fungsi untuk membunyikan buzzer, fungsi untuk menyimpan data konstanta PID ke EEPROM, dan fungsi
untuk melakukan sistem kendali kecepatan/posisi motor. Berikut adalah ow chart dari masing-masing
fungsi tersebut:

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 6/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Gambar 2.6.2 Flow Chart Pembacaan Keypad

Gambar 2.6.3 Flow Chart Membunyikan Buzzer

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 7/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Gambar 2.6.4 Flow Chart Menyimpan ke EEPROM

Gambar 2.6.3 Flow Chart Proses Kendali

3         Implementasi
Tahap implementasi hardware & software

3.1        Implementasi Hardware


List Komponen Yang Digunakan
https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 8/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Board Arduino UNO


Keypad 4×4
LCD 16×2 dan i2c board
Motor Driver L298N
Motor DC
Motor Encoder tipe TB6612FNG
Adaptor + Konektor DC
Kabel Jumper

Implementasi Keseluruhan Rangkaian Komponen

Gambar 3.1. Gambar Full Rangkaian Sistem Speed PID Control

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 9/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Gambar 3.2. Gambar Adaptor Yang Digunakan Untuk Suplai Daya Bagi Motor

Gambar 3. Kit Motor DC

3.2        Implementasi Software


Implementasi software dari rancangan kami diberikan pada link berikut ini.

Pada implementasi software proyek akhir ini kami masih menggunakan 1 Task untuk pengaturan LCD,
Keypad, Buzzer, dan Set Motor(Motor Driver, Motor DC, dan Motor Encoder). Kami cukup kesulitan un-
tuk mengeset 2 atau lebih jumlah task. Program menggunakan fungsi-fungsi untuk set kp,ki,kd, rpm, out-
put motor, buzzer, pembacaan sinyal encoder, dan pemrosesan nilai PID. Program sudah berhasil diimple-
mentasikan pada board Arduino.

 
https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 10/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

4         Pengujian
Hasil Pengujian :

Gambar 4.1. Hasil tampilan pembacaan RPM pada Display LCD

Pada gambar di atas, ditampilkan referensi RPM target yang sudah diset pada saat input kecepatan den-
gan menggunakan Keypad (baris pertama) dan pembacaan RPM dari encoder pada saat motor dijalankan
dengan pemrosesan nilai PID (baris ke-dua).

Kecepatan motor sudah cukup baik diatur oleh nilai PID yang diinput namun masih mengalami sinusoidal
pada keadaan steady, hal ini mungkin disebabkan adanya error yang disebabkan noise pada komponen
encoder dan motor serta nilai PID yang dicoba belum cukup baik. Berikut adalah salah satu hasil per-
cobaan dengan plot sinyal RPM pada saat pemrosesan PID berjalan :

Gambar 4.2. Hasil plot sinyal RPM pada saat motor dijalankan dengan kontrol PID

Pada gambar di atas, motor diset pada berbagai kecepatan. Kecepatan pertama diset pada 900 RPM. Ke-
mudian kecepatan dinaikkan pada 950 RPM, 1000 RPM, dan 1200 RPM. Semakin tinggi kecepatannya
dinaikkan maka akan terjadi overshot yang semakin lebar. Kemudian kecepatan diturunkan menjadi 800
RPM dan yang terakhir 450 RPM.

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 11/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

5         Kesimpulan
Kesimpulan yang dapat diambil dari perancangan proyek akhir ini adalah sebagai berikut :

Sistem pengendali kecepatan pada proyek ini bersifat closed loop control dengan kontrol PID untuk
melakukan penstabilan kecepatan motor untuk mencapai target kecepatan. Komponen kontrol PID ini
terdiri dari tiga jenis yaitu Proportional, Integratif dan Derivatif. Ketiganya dapat dipakai bersamaan
maupun sendiri-sendiri tergantung dari respon yang kita inginkan terhadap suatu plant.
Real-Time Operating System (RTOS) adalah sistem operasi yang multitasking yang ditujukan untuk
aplikasi yang real-time.
Pengaturan Task pada sistem FreeRTOS dilakukan dengan scheduling task. Penjadwalan dapat dikon-
gurasi untuk operasi preemptive dan cooperative.

6         Daftar Pustaka


Motor Speed PID Control http://ctms.engin.umich.edu/CTMS/index.php?
example=MotorSpeed&section=ControlPID , akses terakhir tanggal 10 Desember 2018

Control Speed PID, https://www.instructables.com/id/Control-Speed-Motor-PID/ , akses terakhir tang-


gal 10 Desember 2018

https://medium.com/luosrobotics/an-introduction-to-pid-control-with-dc-motor-1fa3b26ec661 , akses
terakhir tanggal 10 Desember 2018

http://www.ni.com/white-paper/3782/en/ , akses terakhir tanggal 18 Desember 2018

3 THOUGHTS ON “SISTEM KENDALI MOTOR DC BERBASIS FREERTOS DENGAN


MENGGUNAKAN ARDUINO UNO”

Pingback: Proyek Perancangan Sistem Embedded 2018-2019 Semester 1 | Kuliah Perancangan Sistem
Embedded

Risna
AUGUST 6, 2019 AT 2:51 AM

Wih keren. Trimakasih ulasanya

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 12/13
22/4/2021 Sistem Kendali Motor DC Berbasis FreeRTOS Dengan Menggunakan Arduino Uno | Kuliah Perancangan Sistem Embedded

Syaefudhin
MARCH 4, 2020 AT 7:07 AM

untuk modul secara lengkap ada tidak ? sekalian prorgramnya

https://embedded.stei.itb.ac.id/2019/01/03/sistem-kendali-motor-dc-berbasis-freertos/ 13/13

Anda mungkin juga menyukai