SKRIPSI
TEKNIK ELEKTRO KONSENTRASI TEKNIK KONTROL
FERDA SAEPULAH
NIM. 165060307111002
UNIVERSITAS BRAWIJAYA
FAKULTAS TEKNIK
MALANG
2019
LEMBAR PENGESAHAN
IMPLEMENTASI KONTROLER SELF – TUNING PID DAN KALMAN FILTER
PADA SISTEM KESETIMBANGAN ROBOT BERODA DUA
SKRIPSI
TEKNIK ELEKTRO KONSENTRASI TEKNIK KONTROL
Diajukan untuk memenuhi persyaratan
memperoleh gelar Sarjana Teknik
FERDA SAEPULAH
NIM. 165060307111002
Skripsi ini telah direvisi dan disetujui oleh dosen pembimbing
pada tanggal 28 Oktober 2019
Mengetahui,
Ketua Jurusan Teknik Elektro
KOMISI PEMBIMBING :
Dosen Pembimbing 1 : Goegoes Dwi Nusantoro, S.T., M.T. ……………………
Mahasiswa,
FERDA SAEPULAH
NIM. 165060307111002
RINGKASAN
Ferda Saepulah, Jurusan Teknik Elektro, Fakultas Teknik Universitas Brawijaya, Oktober
2019, Implementasi Kontroler Self – Tuning PID dan Kalman Filter pada Sistem
Kesetimbangan Robot Beroda Dua, Dosen Pembimbing: Goegoes Dwi Nusantoro, S.T, M.T.
dan Ir. Moch.Rusli, Dipl.Ing.
Sistem kesetimbangan robot beroda dua memiliki konsep yang didasarkan pada teori
pendulum terbalik. Sebuah sistem kontrol yang sesuai dibutuhkan untuk dapat mengontrol
sistem sehingga seimbang dan stabil. Robot beroda dua adalah suatu robot mobile yang
memiliki sebuah roda disisi kanan dan kirinya yang tidak akan seimbang apabila tanpa adanya
kontroler. Menyeimbangkan robot beroda dua memerlukan suatu metode kontrol yang baik
dan handaluntuk mempertahankan posisi robot dalam keadaan tegak lurus terhadap permukaan
bumi tanpa menggunakan pengendali lain dari luar. Pada penelitian ini digunakan kontroler
Self-Tuning Proposional Integral Derivatif (PID) sebagai pengendali dan Kalman Filter
digunakan sebagai pemrosesan data sensor berupa penggabungan data sensor accelerometer
dan sensor gyroscope. Salah satu metode self-tuning PID yang dipakai dalam skripsi ini adalah
Dahlin PID Controller. Metode pencarian estimasi dilakukan menggunakan Recursive Least
Square (RLS), sehingga proses identifikasi berjalan secara real-time. Hasil penelitian
menunjukkan respon sistem yang dihasilkan dari penggunaan self-tuning controller dengan
menggunakan kalman filter ini memiliki nilai error steady state dibawah 0,5% dan tidak
memiliki overshoot, sementara pada hasil pengujian respon sistem tanpa menggunakan filter
memiliki nilai error steady state diatas 0,5% dan memiliki overshoot.
Kata Kunci : Robot Beroda Dua, Self-Tuning PID, Recursive Least Square, Kalman Filter.
i
SUMMARY
The two-wheeled robot equilibrium system has a concept based on the inverse pendulum
theory. An appropriate control system is needed to be able to control the system so that it is
balanced and stable. Two-wheeled robot is a mobile robot that has a wheel on the right and
left that will not be balanced if there is no controller. Balancing a two-wheeled robot requires
a good and reliable control method to maintain the robot's position perpendicular to the
surface of the earth without using other controllers from the outside. In this study, the
controller used Self-Tuning Proposional Integral Derivative (PID) as a controller and
Kalman Filter is used as sensor data processing in the form of combining accelerometer and
gyroscope sensor data. One method of self-tuning PID used in this thesis is Dahlin PID
Controller. Estimation search method is done using Recursive Least Square (RLS), so the
identification process runs in real-time. The results showed that the system response resulting
from the use of self-tuning controller using the Kalman filter has a steady state error value
below 0,5% and has no overshoot, while the results of testing the system response without
using a filter has a steady state error value above 0, 5% and have overshoot.
Keywords : Two-Wheeled Robot, Self-Tuning PID, Recursive Least Square, Kalman Filter.
ii
PENGANTAR
iii
Teman – teman asisten laboratorium dasar elektrik dan pengukuran, Mas Ghozal, Mas
Izzul, Mas Dhika, Mas Ivan, Mas Bob, Mas Argy, Mas Aldi, Mbak Teki, Mbak Annisa,
Aan, Banu, Ariq, Eka, Faisal, Khuzain, Arbi, Dhika 17, Aldo, Rina, Angel, Vika, Ario,
Ote, Rama 17, dan Yusuf, terima kasih telah memberikan dukungan dan canda tawa.
Teman – teman Workshop Aeronautika’16 divisi kombat (Rizky dan Frans), divisi
komurindo (Rama, Zidan, dan Aan), dan divisi krti (Aidil, Tyo, Mufid, Khatijah, dan
Nafis), telah memberikan bantuan dan motivasi.
Keluarga besar Teknik Kontrol 2016 dan Mosfet 2016 untuk dukungan dan semangat.
Semua pihak, yang telah memberikan bantuan serta dukungan baik secara langsung
maupun tidak langsung atas penyusunan skripsi ini.
Dalam penyusunan skripsi ini, penulis menyadari bahwa skripsi ini belumlah sempurna,
karena keterbatasan ilmu dan kendala – kendala lain yang terjadi selama pengerjaan skripsi
ini. Oleh karena itu, penulis berharap kritik dan saran untuk penyempurnaan tulisan di masa
yang akan datang. Semoga tulisan ini dapat bermanfaat dan dapat digunakan untuk
pengembangan lebih lanjut.
Penulis
iv
DAFTAR ISI
RINGKASAN ..................................................................................................................... i
SUMMARY ........................................................................................................................ ii
PENGANTAR .................................................................................................................... iii
DAFTAR ISI ...................................................................................................................... v
DAFTAR GAMBAR .......................................................................................................... vii
DAFTAR TABEL .............................................................................................................. ix
BAB I PENDAHULUAN ................................................................................................... 1
1.1 Latar Belakang ..................................................................................................... 1
1.2 Rumusan Masalah ................................................................................................ 2
1.3 Batasan Masalah .................................................................................................. 2
1.4 Tujuan ................................................................................................................. 3
BAB II DASAR TEORI ..................................................................................................... 4
2.1 Robot Beroda Dua................................................................................................ 4
2.2 Konsep Kesetimbangan Robot Beroda Dua .......................................................... 6
2.3 Matlab R2013 ...................................................................................................... 9
2.4 Kontroler ............................................................................................................. 9
2.4.1 Kontroler Proporsional (P) ................................................................................. 10
2.4.2 Kontroler Integral (I) ......................................................................................... 11
2.4.3 Kontroler Devatif (D) ........................................................................................ 11
2.4.4 Kontroler PID .................................................................................................... 12
2.5 Self – Tuning Controller ...................................................................................... 13
2.6 Recursive Least Square (RLS).............................................................................. 14
2.7 Dahlin PID Controller .......................................................................................... 16
2.8 Kalman Filter ....................................................................................................... 19
2.9 Motor DC ............................................................................................................ 21
2.10 Driver Motor H-Bridge L298N ............................................................................ 24
2.11 PWM (Pulse Width Modulation) .......................................................................... 25
2.12 Mikrokontroler Arduino Mega 2560..................................................................... 26
2.13 Gyroscope ............................................................................................................ 27
v
2.14 Accelerometer ...................................................................................................... 28
BAB III METODOLOGI PENELITIAN.......................................................................... 30
3.1 Perancangan Blok Diagram Sistem ...................................................................... 31
3.2 Spesifikasi Desain ................................................................................................ 32
3.3 Karakterisasi Setiap Blok ..................................................................................... 32
3.3.1 Karakterisasi Plant Sistem Kesetimbangan dengan Aktuator. ............................. 32
3.3.2 Karakterisasi L298N Dual H-Bridge Motor Driver............................................. 34
3.3.3 Karakterisasi Sensor MPU6050 GY-521 ............................................................ 36
3.3.3.1 Karakterisasi Sensor Gyroscope ...................................................................... 36
3.3.3.2 Karakterisasi Sensor Accelerometer ................................................................. 38
3.4 Perancangan Perangkat Keras .............................................................................. 41
3.5 Perancangan Algoritma Kalman Filter.................................................................. 45
3.6 Perancangan dan Pembuatan Program Self-Tuning PID Controller ...................... 48
3.7 Penentuan Nilai Awal Parameter Estimasi dan Parameter Kontrol ........................ 48
3.8 Flowchart Program Utama ................................................................................... 51
BAB IV HASIL DAN KESIMPULAN .............................................................................. 52
4.1 Pengujian Kalman Filter....................................................................................... 52
4.2 Pengujian Self –Tuning PID Controller Pada Robot Beroda Dua .......................... 54
BAB V KESIMPULAN DAN SARAN .............................................................................. 59
5.1 Kesimpulan .......................................................................................................... 59
5.2 Saran.................................................................................................................... 59
DAFTAR PUSTAKA ......................................................................................................... 60
LAMPIRAN ....................................................................................................................... 61
vi
DAFTAR GAMBAR
vii
Gambar 3.10 Driver motor H-bridge L298N ....................................................................... 43
Gambar 3.11 Komputer yang terinstall Arduino IDE .......................................................... 43
Gambar 3.12 Plant sistem kesetimbangan dengan aktuator motor DC ................................. 44
Gambar 3.13 Blok Diagram Kalman Filter Update ............................................................. 45
Gambar 3.14 Struktur model ARX...................................................................................... 49
Gambar 3.15 System Indetification Tool............................................................................. 49
Gambar 3.16 Sinyal output dari estimasi model .................................................................. 49
Gambar 3.17 Flowchart sistem keseluruhan ........................................................................ 51
Gambar 4.1 Data Hasil Pengujian Kalman Filter Tanpa Gangguan Pada Sensor MPU6050
GY-521 ................................................................................................................................ 53
Gambar 4.2 Data Hasil Pengujian Kalman Filter dengan Gangguan Pada Sensor
MPU6050 GY-521 ............................................................................................................... 54
Gambar 4.3 Respon sistem dengan setpoint 0° menggunakan kalman filter ........................ 55
Gambar 4.4 Perubahan nilai estimasi dengan setpoint 0° .................................................... 55
Gambar 4.5 Perubahan nilai parameter gain kontroler PID dengan setpoint 0° .................... 56
Gambar 4.6 Respon sistem dengan setpoint 0° tanpa menggunakan filter ........................... 57
Gambar 4.7 Perubahan nilai estimasi dengan setpoint 0° tanpa menggunakan filter ....... 57
Gambar 4.8 Perubahan nilai parameter gain kontroler PID dengan setpoint 0° tanpa
menggunakan filter .............................................................................................................. 58
viii
DAFTAR TABEL
ix
1
BAB 1
PENDAHULUAN
dimana parameter dari sistem diestimasi dan hasil estimasi parameter yang telah dihitung
digunakan untuk mendapatkan parameter kontrol (Bobal, 2005:13). Recursive Least Square
(RLS) merupakan suatu metode identifikasi sistem dengan kelebihan mengganggap sistem
fisik yang akan dimodelkan sebagai sebuah black box, sehingga apapun jenis komponen yang
ada di dalam sistem fisik dan apapun jenis bahannya tidakakan dipermasalahkan dan tidak
perlu diperhatikan. Selain itu algoritma RLS ini dapay diaplikasikan secara real time. (Bobal,
2005: 32).
Pada skripsi ini akan melakukan penelitian lebih lanjut pengontrolan sudut pada plant
sistem kesetimbangan dengan aktuator motor DC menggunakan metode sistem pengendalian
adaptif yaitu Kontroler Self – Tuning PID berupa Dahlin PID dengan metode estimasi
Recursive Least Square (RLS) dan Filter data sensor berupa Kalman Filter yang berfungsi
untuk pemrosesan data sensor accelerometer dan sensor gyroscope dengan harapan mampu
menghasilkan repon sistem yang baik dan dapat mengidentifikasi plant dengan
mempertimbangan karakteristik dari plant.
BAB II
DASAR TEORI
Robot beroda dua terdiri dari kontroler, badan robot, dua buah aktuator (motor DC),
dan sensor sudut. Kontroler membuat robot balancing dapat berdiri tegak pada permukaan
bumi dan menggerakkan motor. Motor menyediakan kekuatan untuk menggerakkan badan
robot. Sensor sudut untuk mendeteksi accelerometer dan gyroscope dan menjadikannya sudut
pada badan robot.
Robot beroda dua adalah robot yang mempunyai dua buah penggerak yang
dihubungkan ke roda yang terdapat disebelah kanan dan kiri robot. Cara kerja secara general
untuk dapat menyeimbangkan robot ini adalah ketika robot akan terjatuh kesisi depan maupun
kesisi belakang, maka untuk menstabilkan atau menyeimbangkannya harus mengirimkan
sinyal kontrol yang sesuai ke motor DC sehingga motor DC berputar ke arah depan dan
mengikuti pergerakan robot dan dapat kembali ke posisi semula, begitu juga sebaliknya jika
robot akan terjatuh ke arah belakang untuk menstabilkan atau menyeimbangkannya harus
mengirimkan sinyal kontrol yang sesuai ke motor DC sehingga motor DC berputar ke arah
belakang dan mampu mengikuti pergerakan robot sehingga dapat kembali ke posisi semula.
Robot beroda dua ini pada dasarnya memiliki prinsip kerja seperti pendulum terbalik yang
sistemnya tidak stabil, sehingga diperlukan sebuah kontroler yang baik dan efisien sehingga
mampu membuat robot tersebut stabil.
7
Gambar 2.3 Posisi seimbang yang harus dipertahankan oleh Robot Beroda Dua
Sumber: J.-D. Warren, J. Adams dan H. Molle, 2011.
8
Kesetimbangan robot menggunakan dua roda memiliki dua reaksi dari putaran kedua
rodanya yaitu reaksi kesetimbangan dan reaksi mobilitas. Kedua reaksi tersebut harus diulas
sebagai dua tahapan. Tahapan tersebut akan diulas secara rinci.
lebih besar dibandingkan dengan besarnya θ agar robot dapat kembali ke posisi semula.
Berikut ini persamaan stationary pivot point dari balancing robot /inverted pendulum.
2.4 Kontroler
Sistem pengendalian dirancang untuk melakukan dan menyelesaikan tugas tertentu.
Syarat utama sistem pengendalian adalah harus stabil. Di samping kestabilan mutlak, maka
sistem harus memiliki kestabilan secara relatif, yakni tolak ukur kualitas kestabilan sistem
dengan menganilisis sampai sejauh mana batas-batas kestabilan sistem tersebut jika dikenai
gangguan (Ogata, K., 1997). Selain itu analisis juga dilakukan untuk mengetahui bagaimana
kecepatan sistem dalam merespon input dan output.
Suatu sistem dikatakan stabil jika diberi gangguan maka sistem tersebut akan kembali ke
keadaan steady state di mana output berada dalam keadaan tetap seperti tidak ada gangguan.
Sistem dikatakan tidak stabil jika outputnya berosilasi terus menerus ketika dikenai suatu
gangguan. Karena suatu sistem pengendalian biasanya melibatkan penyimpanan energi maka
output sistem ketika diberi suatu input,tidak dapat mengikuti input secara serentak, tapi
menunjukkan respon transien berupa suatu osilasi teredam sebelum mencapai steady state.
m(t)=Kp*e(t) (2-1)
dimana:
Kp = adalah penguatan proporsional
e(t) = sinyal error
m(t) = output kontroler
Penambahan Kp akan mempercepat kecepatan respon transient dan mengurangi kesalahan
keadaan mantap.
𝑑𝑒(𝑡)
𝑚(𝑡) = 𝐾𝑑 (2-4)
𝑑𝑡
dimana:
𝐾𝑑 = adalah penguatan derivative
𝑒(𝑡) = sinyal error
𝑚(𝑡) = output kontroler
Kontroler ini digunakan untuk memperbaiki atau mempercepat respon transient.
Kp
+
Input +e(t) m(t)
Ki ʃ e(t) dt
- + +
Kd de(t)/dt
untuk mengubah parameter dari kontroler, dimana terdiri estimasi parameter rekursif dan
perhitungan desain (Astrom, 2008: 21). Diagram Blok Self Tuning Controller dapat dilihat
pada Gambar 2.11.
Spesification Controller
Design Process Parameters
Estimation
Controller
Parameters
Reference
input
Controller Process
Parameter dari model di identifikasi secara on-line pada blok “Estimation” yang
memberikan sebuah estimasi parameter plant. Pada blok “Controller Design” berisi
perhitungan yang dibutuhkan untuk desain dari kontroler dengan metode yang telah di
tentukan dan beberapa desain parameter yang telah di pilih. Setelah perhitungan selesai, hasil
parameter dari blok controller design akan di implementasikan pada blok “Controller”
(Astrom, 2008: 90).
(i) 2
t
Vt (θ, Zt ) = i 1
(2-6)
Dimana :
(t ) y (i ) yˆ (i ) (2-7)
15
yˆ T (i) (2-8)
yˆ (t ) = output estimasi
= vektor regresi
Untuk meminimalkan e(t ) maka berlaku
Sehingga
Dimana
F (t ) 1 i 1 (i 1) T (i 1)
t
(2-13)
Persamaan 2-13 masih merupakan persamaan least square yang belum recursive, untuk
membuat persamaan tersebut menjadi recursive maka diberikan:
F (t 1) 1 i 1 (i 1) T (i 1) F (t ) 1 (t ) T (t )
t 1
(2-15)
Berdasarkan persamaan (2-12), (2-14), dan (2-15), persamaan (2-17) dapat ditulis kembali
kedalam persamaan (2-18)
t 1
(i 1) y(i) F (t 1)
i 1
1
ˆ(t 1) (2-18)
t 1
i 1
(i 1) y(i) F (t ) 1ˆ(t ) (t ) (t )T ˆ(t ) (t )[ y(t 1) ˆ(t )T (t )] (2-19)
16
Persamaan PID diatas dalam bentuk umum dalam fungsi waktu. Dimana
e(t ) w(t ) y (t ) yang merupakan nilai selisih antara nilai yang diinginkan dengan nilai hasil
proses atau nilai sebenarnya. u (t ) merupakan nilai keluaran dari kontroler. y (t ) merupakan
nilai keluaran dari plant (proses) atau nilai sebenarnya. w(t ) merupakan sinyal referensi atau
setpoint (nilai yang diinginkan). Parameter dari kontroler PID, yaitu Kp merupakan gain
(penguatan) proporsional, TI adalah konstanta waktu integral, dan TD merupakan konstanta
waktu diferensial.
17
1
U ( s) K P 1 TD s E ( s) (2-26)
TI s
Dimana s merepresentasikan operator transformasi laplace. Dari persamaan 2-26 maka kita
dapat menentukan fungsi alih dari kontroler PID :
U ( s) 1
GR ( s) K P 1 TD s (2-27)
E ( s) TI s
Untuk mendapatkan persamaan dalam fungsi Z (digital) maka persamaan kontroler PID
dalam fungsi waktu kita diskritisasi komponen integral dan diferensial pada persamaan 2-26
ketika periode sampling T0 kecil dan noise (derau) dari sinyal output proses telah di filter,
maka algoritma yang paling sederhana diperoleh dengan mengganti derivatif dengan
diferensial dari orde pertama (two-point, backward difference)
de e(k ) e(k 1) e(k )
(2-28)
dt T0 T0
Dimana e(k) adalah nilai kesalahan pada saat k sampling (misal pada waktu t = kT0).
Pendekatan termudah dari integral adalah dengan penjumlahan sederhana sehingga kita
mendekati fungsi waktu kontinyu dengan sampling periode T 0 dari fungsi konstan (step
function atau fungsi satuan). Dengan menggunakan forward rectangular method (FRM):
t k
u(k ) K P e(k ) e(k 1) 0 e(k ) D e(k ) 2e(k 1) e(k 2) (2-32)
T T
TI T0
Sehingga persamaan (2-38) menjadi seperti yang dituliskan kedalam persamaan (2-33):
u(k ) K P e(k ) e(k 1) 0 e(k ) D e(k ) 2e(k 1) e(k 2) u(k 1)
T T
TI T0
Kontroler ini menggunakan vektor estimasi parameter dalam bentuk
ˆ T (k ) aˆ1 , aˆ 2 , bˆ1 (2-34)
T0
TI (2-37)
1 T
1 D
aˆ1 2aˆ 2 T0
T0 aˆ 2 Q
TD (2-38)
K bˆP 1
T0
Q 1 e B
(2-39)
Dimana B di kenal sebagai adjustment factor (faktor pengatur) dimana menggambarkan
konstanta dalam domain waktu dari fungsi alih sesuai dengan perubahan yang terjadi pada
output plant (proses) pada closed loop. Semakin kecil nilai B maka respon akan semakin
cepat.
Untuk menghindari osilasi pada output plant (proses) maka disarankan untuk memilih
estimasi parameter kontrol awal menggunakan persamaan berikut. Pada dasarnya persamaan
ini merupakan invers dari persamaan (2-36), (2-37) dan (2-38).
T0 TD
C 1 (2-40)
TI T0
19
TD
1 2
T0
aˆ1 (2-41)
C
TD
aˆ 2 (2-42)
T0 C
Q
bˆ1 (2-43)
K PC
Oleh karena itu, ketika memulai merancang algoritma kita harus menghindari memilih
Menjelaskan masalah filter pada proses yang linier, sehingga filter tersebut
dikenal dengan nama Kalman Filter. Kalman Filter dapat menghilangkan noise dari suatu
sinyal yang mengandung informasi dan mengambil informasi tersebut untuk diproses lebih
lanjut. Suatu proses yang menggunakan Kalman Filter untuk memfilter noise harus dapat
disajikan dalam dua persamaan, yaitu persamaan state dan persamaan keluaran. Masing-
masing persamaan mempunyai noise dan saling bebas, sehingga tidak ada korelasi saling
antara kedua noise. Hasil perhitungan optimal yang digunakan untuk mendapatkan nilai
estimasi pada Kalman Filter.
GyroAngleDot
dengan xk , dan wk dan vk merupakan variabel acak dari proses noise dan
GyroBias
measurement noise.
Persamaan yang spesifik dari time and measurement updates dapat dilihat pada Tabel
2.1 dan Tabel 2.2.
xˆ k Axˆ k 1 Bu k
Pk APk 1 AT Q
Pk ( I K k H ) Pk
2.9 Motor DC
Motor listrik sangat sering digunakan sebagai elemen kontrol akhir dalam sistem kontrol
posisi dan kecepatan. Prinsip kerja dasar dari sebuah motor listrik adalah gaya yang bekerja
pada konduktor yang berada di dalam suatu medan magnet ketika ada arus yang melewati
konduktor tersebut (W. Bolton, 2004)
Motor DC memerlukan suplai tegangan yang searah pada kumparan medan untuk diubah
menjadi energi mekanik. Kumparan medan pada motor dc disebut stator (bagian yang tidak
berputar) dan kumparan jangkar disebut rotor (bagian yang berputar).
Jika terjadi putaran pada kumparan jangkar dalam pada medan magnet, maka akan timbul
tegangan (GGL) yang berubah-ubah arah pada setiap setengah putaran, sehingga merupakan
tegangan bolak-balik.
Prinsip kerja dari arus searah adalah membalik phasa tegangan dari gelombang yang
mempunyai nilai positif dengan menggunakan komutator, dengan demikian arus yang berbalik
arah dengan kumparan jangkar yang berputar dalam medan magnet. Bentuk motor paling
sederhana memiliki kumparan satu lilitan yang bisa berputar bebas di antara kutub-kutub
magnet permanen.
22
Catu tegangan dc dari baterai menuju ke lilitan melalui sikat yang menyentuh
komutator, dua segmen yang terhubung dengan dua ujung lilitan. Kumparan satu lilitan pada
gambar di atas disebut angker dinamo. Angker dinamo adalah sebutan untuk komponen yang
berputar di antara medan magnet.
mengendalikan 1 motor stepper. Kelebihan akan modul driver motor L298N ini yaitu dalam
hal kepresisian dalam mengontrol motor sehingga motor lebih mudah untuk dikontrol.
Rangkaian ini dihubungkan ke arduino Due. Bentuk fisik dari driver motorH-Bridgr L298N
adalah seperti pada Gambar 2.15.
𝑇𝑜𝑛
𝐷𝑢𝑡𝑦 𝐶𝑦𝑐𝑙𝑒 = 𝑥 100%….(%) (2.46)
𝑇
Dengan :
𝑇𝑜𝑛 = Periode logika tinggi
𝑇 = Periode Keseluruhan
2.13 Gyroscope
Gyroscope adalah suatu alat yang berupa sensor gyro untuk menentukan orientasi
gerak dengan bertumpu pada roda atau cakram yang berotasi dengan cepat pada sumbu.
Berdasarkan keterangan tersebut, maka pergerakan gyroscope digambarkan seperti pada
gambar 2.18.
27
Gyroscope memiliki output yang peka terhadap kecepatan sudut dari arah sumbu x
yang nantinya akan menjadi sudut phi (roll), dari sumbu y nantinya menjadi sudut (pitch), dan
sumbu z nantinya menjadi sudut psi (yaw).
Penggunaan gyroscope dalam kehidupan sehari-hari belum banyak. Gyroscope
lazimnya digunakan pada pesawat terbang, Kapal, Helikopter,dll. Hal tersebut untuk
mengurangi getaran yang ditimbulkan mesin agar keseimbangan tidak goyah. Gyroscope baru-
baru ini juga diterapkan pada mainan Helicopter dengan tujuan menyeimbangkan saat
diterbangkan.
2.14 Accelerometer
Accelerometer adalah alat yang digunakan untuk mengukur percepatan mendeteksi dan
mengukur getaran (vibrasi), dan mengukur percepatan akibat gravitasi. Sensor accelerometer
mengukur percepatan dari 3 sumbu gerakan akibat gerakan benda yang melekat padanya.
Gambar 2.19 menunjukkan daerah kerja accelerometer.
BAB III
METODOLOGI PENELITIAN
Pada penulisan skripsi ini akan dirancang kontroler self – tuning PID (Proporsional
Integral Derivatif) yang berfungsi sebagai pengendali robot beroda dua dan Kalman Filter
yang berfungsi sebagai penggabungan dan pemrosesan data pada sensor accelerometer dan
sensor gyroscope. Perancangan robot beroda dua ini dilakukan secara bertahap sehingga akan
memudahkan dalam analisis pada setiap bloknya maupun secara keseluruhan. Untuk
menyelesaikan rumusan masalah dan merealisasikan tujuan peneliatian yang terdapat di bab
pendahuluan, maka diperlukan metode untuk menyelesaikan masalah tersebut. Metode
penelitian pada skripsi ini meliputi :
1. Perancangan blok diagram sistem.
2. Spesifikasi desain.
3. Karakterisasi setiap blok.
Karakterisasi setiap blok dilakukan untuk mempermudah analisis sistem. Karakteristik
dibagi menjadi beberapa bagian, yaitu:
a. Karakterisasi plant (sistem kesetimbangan dengan aktuator (Motor DC 12 V JGA25-
370)).
b. Karakterisasi driver (L298N Dual H-Bridge Motor Driver).
c. Karakterisasi sensor MPU 6050 GY – 521.
d. Karakterisasi pengujian gangguan pada plant.
4. Perancangan perangkat keras.
Perancangan perangkat keras meliputi sistem mekanik dan elektrik robot beroda dua
dan sistem keseluruhan (hardware dan software) robot beroda dua.
5. Perancangan dan pembuatan algoritma Kalman filter.
6. Penentuan nilai awal parameter estimasi dan parameter kontroler.
7. Perancangan dan pembuatan program algoritma self-tuning controller
Metode penelitian tersebut dijelaskan sebagai berikut :
30
Gambar 3.1 Blok Digram Sistem Loop Tertutup Kesetimbangan Robot Beroda Dua
Keterangan:
u c (t ) : setpoint (nilai masukan sistem yang diinginkan pada keluaran sistem).
e(t ) : nilai selisih antara setpoint dengan output.
a : new Value berupa nilai sudut Pitch keluaran dari sensor accelerometer.
g : merupakan nilai kecepatan sudut keluaran dari sensor gyroscope.
g : merupakan new Rate berupa nilai sudut keluaran dari sensor gyroscope.
bias : merupakan nilai bias yang akan diperbaharui dengan perkalian error .
Kontroler parameter: nilai yang menghasilkan parameter kontroler yang baru untuk kontroler
PID.
300
200
100
0
0 20 40 60 80 100
DUTY CYCLE (%)
3. Menghubungkan output tegangan driver motor ( L298N Dual H-Bridge Motor Driver )
dengan multimeter.
4. Mengatur duty cycle sinyal PWM pada Arduino Mega dengan nilai 0%-100%.
5. Mengamati dan mencatat hasil pembacaan multimeter di setiap kenaikan 5%.
Data pengujian driver motor ( L298N Dual H-Bridge Motor Driver ) ditunjukkan
dalam Tabel 3.2. Pada Tabel tersebut terdapat duty cycle sebagai input driver. Output driver
berupa tegangan yang diukur menggunakan multimeter.
Tabel 3.2 Hasil Pengujian Driver (L298N Dual H-Bridge Motor Driver)
90 10,5
95 11,416
100 12,01
Berdasarkan Tabel 3.2 didapatkan kurva output tegangan driver (V) terhadap masukan
duty cycle sinyal PWM (%) seperti ditunjukkan pada Gambar 3.3
6
4
2
0
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
DUTY CYCLE (%)
5. Sistem mekanik robot beroda dua yang terhubung dengan sensor MPU6050 dan
mikrokontroler Arduino Mega.
Prosedur pengujian meliputi:
1. Robot dikondisikan dalam posisi tegak, kemudian pembacaan data sensor gyroscope
dijalankan. Pada saat program sedang running, robot dimiringkan ke depan dan ke
belakang secara kontinyu dalam interval tertentu.
2. Setelah interval waktu tertentu, pembacaan data output sensor dihentikan dan
kemudian data output berupa besaran sudut tersebut dilihat.
Pengujian sensor gyroscope terhubung dengan mekanik robot beroda dua dan
mikrokontroler Arduino Mega. Kemudian data dari sensor gyroscope akan dibuat input dan
keluarannya adalah nilai pwm motor DC yang kemudian menjadikannya sudut tegak lurus.
Kemiringan dari robot beroda dua diubah-ubah dalam interval waktu tertentu. Perubahan sudut
dari sensor gyroscope yang terjadi akan ditampilkan lewat komputer pada serial monitor
arduino.
Pengujian sensor gyroscope yang merupakan sensor kecepatan sudut. Kecepatan sudut
merupakan besaran vektor dimana nilainya juga bergantung pada arah pergerakan robot
beroda dua. Dimana pengujian dilakukan dengan cara memiringkan robot ke depan dan ke
belakang secara kontinyu dalam selang waktu tertentu. Gambar 3.4 menunjukan data output
dari sensor gyroscope hasil dari pengujian.
37
3. Sensor MPU6050 GY-521 sebagai pengukur sudut dari robot beroda dua
Pada pengukuran sudut robot beroda dua, digunakan modul sensor digital MPU6050 GY-
521 dengan dua pengukuran kesetimbangan robot yaitu, accelerometer dan gyroscope.
Prinsip kerja sistem pengontrolan sudut output pada plant sistem kesetimbangan robot
beroda dua dengan menggunakan self – tuning PID controller dan kalman filter berdasarkan
skema perangkat keras pada gambar 3.6 adalah sebagai berikut:
1. Sudut output dari plant sistem kesetimbangan robot beroda dua akan dibaca oleh sensor
sudut dengan nilai -10° sampai 10°.
2. Selanjutnya hasil pembacaan dari sensor sudut berfungsi sebagai masukan pada
mikrokontroler Arduino Mega 2560 sebagai pemroses utama.
3. Kemudian sudut keluaran tersebut diproses menggunakan self – tuning PID controller
sehingga menghasilkan keluaran berupa sinyal PWM.
4. Keluaran sinyal PWM dari Arduino Mega 2560 digunakan sebagai sinyal kontrol bagi
aktuator berupa motor dc yang kemudian masuk ke dalam Driver L298N yang dicatu
dengan baterai 18650 11,1 V.
5. Tengangan keluaran dari driver L298N merupakan sinyal kontrol PWM yang telah
dikuatkan.
6. Motor DC akan bergerak sesuai dengan besar duty cycle PWM yang dikeluarkan oleh
mikrokontroler Arduino Mega 2560 dan sistem kesetimbangan robot beroda dua akan
menghasilkan sudut output yang kemudian akan dibaca kembali oleh sensor sudut.
7. Kemudian hasil dari pembacaan sensir akan ditampilkan melalui computer menggunakan
software visual studio.
Sebelum Kalman filter dapat digunakan dan diimplementasikan pada robot beroda dua,
dilakukan perancangan algoritma kalman filter dalam bentik sistem matematis. Secara umum
algoritma kalman filter akan ditemukan matrix dan vector matematis. Pada penelitian ini
menggunakan algoritma penggabungan nilai sensor accelerometer dan sensor gyroscope agar
menghilangkan noise dalam sensor sudut dan lebih mudah diterapkan ke dalam bahasa
pemograman bahasa c pada software Arduino IDE. Langkah – langkah dalam algoritma
kalman filter seperti pada gambar 3.13 direpresentasikan dalam bentuk matematis seperti pada
persamaan berikut:
1. Pertama, menginisialisasi state estimasi awal berupa prediksi dengan menentukan nilai
kalman bias awal senilai 0,001 dan mendapatkan nilai pembacaan sudut gyroscope
dengan mengintegralkannya.
3. Ketiga, mencari nilai pembacaan error sudut dengan hasil dari pengurangan sudut
accelerometer dengan sudut gyroscope.
4. Keempat, mencari nilai baru untuk kalman gainnya dengan nilai kalman measure (R)
senilai 0,03.
Dengan:
A(q)=1+a1q-1+a2q-2…+anaq-na
47
B(q)=b1q-1+b2q-2…+bnbq-nb
𝑦(𝑘) = keluaran
𝑢(𝑘) = masukan
𝑒(𝑘) = gangguan
Proses identifikasi dilakukan beberapa kali hingga didapatkan besfit yang terbaik. Dari
hasil identifikasi, didapatkan fungsi alih sistem kesetimbangan robot beroda dua yang
memiliki besfit sebesar 90,23%. Fungsi alih tersebut dapat dilihat pada persamaan 3.2
0,007245𝑧 −1 +0,00222𝑧 −2
𝐺(𝑧 −1) = (3.2)
1−0,7648𝑧 −1 −0,2174𝑧 −2
Setelah mendapatkan nilai 𝑎̂1 , 𝑎̂2, dan 𝑏̂1 yang didapat dari persamaan (3-1) langkah
selanjutnya adalah menghitung nilai K P , TI , TD dengan menggunakan persamaan (2-9), (2-10),
(2-11), (2-12), (2-13). Untuk waktu sampling 𝑇0 = 0,05 detik dan nilai adjustment factor
menurut Bobál et al, B 1x10 6 , oleh karena itu perhitungan ditunjukan dengan cara dibawah
ini :
𝑇0 0,05
𝑄 = 1 − 𝑒 − 𝐵 = 1 − 𝑒 10−6 = 1
𝑎1 +(2 𝑥 𝑎2) −0,7648+(2 x(−0,2174))
𝐾𝑃 = − 1 𝑋 ( 𝑥 𝑄) = − 1 𝑋 ( 𝑥 1) = 165,57
𝑏1 0,007245
𝑇0 𝑥 𝑎2 𝑥 𝑄 0,05 𝑥 (−0,2174) 𝑥 1
𝑇𝑑 = = = − 0,009061357
𝐾𝑝 𝑥 𝑏1 165,5762 𝑥 0,007245
𝑇0 0,05
𝑇𝑖 = − 1 𝑥 ( 1 𝑇 )= −1𝑥 ( 1 −0,00906 ) = 3,3696
+1+ 𝑑 −1,1996
+1+(
0,05
)
𝑎1+(2 𝑥 𝑎2) 𝑇0
𝐾𝑃 165,5762
𝐾𝑖 = = = 49,149
𝑇𝑖 3,3696
Dari perhitungan diatas didapatkan bahwa nilai parameter gain kontroler awal 𝐾𝑃 =
165,5762, 𝐾𝑑 = −1,500345, 𝐾𝑖 = 49,149
BAB IV
HASIL DAN PEMBAHASAN
0.4
0.2
Sudut Pitch (derajat)
-0.2
-0.4
-0.8
0 100 200 300 400 500 600 700 800 900 1000
Data ke -
Gambar 4.1 Data Hasil Pengujian Kalman Filter Tanpa Gangguan Pada Sensor
MPU6050 GY-521
52
Dari Gambar 4.1 terlihat bahwa pengujian Kalman filter pada sensor MPU6050 GY-
521 sudah akurat, terlihat dari keluaran data sensor tanpa menggunakan filter memiliki range
keluaran yang tidak mendekati nilai sudut 0°, sementara pada keluaran data sensor dengan
filter memiliki nilai yang mendekati nilai sudut 0°. Pada gambar 4.1 hasil pengujian dilakukan
tanpa diberi gangguan luar.
0
Sudut Pitch (derajat)
-50
Gangguan luar
-100
0 100 200 300 400 500 600 700 800 900 1000
Data ke -
Gambar 4.2 Data Hasil Pengujian Kalman Filter dengan Gangguan Pada Sensor
MPU6050 GY-521
Dari Gambar 4.2 merupakan hasil pengujian kalman filter dari sensor MPU6050 GY-
521 dengan adanya gangguan luar berupa getaran. Hasil dari keluaran filter tetap
menunjukkan nilai sudut mendekati 0°, sementara data tanpa menggunakan kalman filter
memiliki nilai sudut yang sangat jauh dari 0°. Dapat disimpulkan bahwa penujian Kalman
filter pada sensor MPU6050 GY-521 sudah bekerja dengan baik.
4.2 Pengujian Self – Tuning PID Controller Pada Robot Beroda Dua
Pengujian dilakukan dengan nilai setpoint 0°. Dari pengujian yang dilakukan akan
diamati respon sistem dengan melihat sudut output yang dihasilkan, dan melihat perubahan
parameter gain kontroler PID serta perubahan nilai estimasi yang didapatkan pada sistem
dengan menggunakan kalman filter dan tanpa menggunakan kalman filter.
53
Respon sistem dengan menggunakan kalman filter dan perubahan parameter gain
kontroler PID serta perubahan nilai estimasi yang didapatkan masing – masing ditunjukkan
pada gambar 4.3, 4.4, 4.5.
-0.5
Sudut (derajat)
-1
-1.5
-2
Keluaran Sistem
Batas Atas Toleransi 0,5%
-2.5 Setpoint
Batas Bawah Toleransi 0,5%
-3
0 100 200 300 400 500 600 700 800 900 1000
Waktu (ms)
Dari grafik respon sistem pada gambar 4.3 dapat diketahui bahwa respon sisten dengan
setpoint 0° menggunakan kalman filter memiliki nilai settling time sebesar 0,493 detik, error
steady state sebesar 0,14% dan tidak memiliki overshoot.
-0.1
-0.2
-0.3
Nilai
-0.4
-0.5
-0.6 a1
a2
-0.7 b1
-0.8
0 100 200 300 400 500 600 700 800 900 1000
Waktu(ms)
Dari grafik perubahan nilai estimasi pada gambar 4.4, dapat dilihat nilai 𝑎̂1 berubah
dari nilai awal sebesai -0,7648 menjadi -0,7652, sedangkan untuk nilai 𝑎̂2 berubah dari nilai
awal sebesar -0,2174 menjadi -0,217405 dan untuk nilai 𝑏̂1 berubah dari nilai awal sebesar
0,00724 menjadi 0,00715.
160
Kp
140 Ki
Kd
120
100
Nilai
80
60
40
20
-20
0 100 200 300 400 500 600 700 800 900 1000
Waktu(ms)
Gambar 4.5 Perubahan nilai parameter gain kontroler PID dengan setpoint 0°
Dari grafik perubahan nilai parameter kontroler PID pada gambar 4.5, dapat dilihat
nilai parameter gain kontroler PID dengan menggunakan kalman filter memiliki perubahan
yang tidak terlalu derastis, maupun saat kondisi steady state. Nilai akhir dari Kp sebesar
167,79, sedangkan untuk nilai Ki sebesar 49,79, dan untuk nilai Kd sebesar -1,52.
Respon sistem tanpa menggunakan kalman filter dan perubahan parameter gain
kontroler PID serta perubahan nilai estimasi yang didapatkan masing – masing ditunjukkan
pada gambar 4.6, 4.7, 4.8.
55
Sudut (derajat) 2
-2
Keluaran Sistem
Batas Atas Toleransi 0,5%
-4
Setpoint
Batas Bawah Toleransi 0,5%
-6
0 100 200 300 400 500 600 700 800 900 1000
Waktu (ms)
Dari grafik respon sistem pada gambar 4.6 dapat diketahui bahwa respon sisten dengan
setpoint 0° tanpa menggunakan filter memiliki nilai settling time sebesar 0,221 detik, error
steady state sebesar 2,4% dan memiliki overshoot.
-0.1
-0.2
-0.3
Nilai
-0.4
-0.5
-0.6 a1
a2
-0.7 b1
-0.8
0 100 200 300 400 500 600 700 800 900 1000
Waktu(ms)
Gambar 4.7 Perubahan nilai estimasi dengan setpoint 0° tanpa menggunakan filter
56
Dari grafik perubahan nilai estimasi pada gambar 4.4, dapat dilihat nilai 𝑎̂1 berubah
dari nilai awal sebesai -0,7648 menjadi -0,7683, sedangkan untuk nilai 𝑎̂2 berubah dari nilai
awal sebesar -0,2174 menjadi -0,21743 dan untuk nilai 𝑏̂1 berubah dari nilai awal sebesar
0,00724 menjadi 0,00195.
Kp
600 Ki
Kd
500
400
Nilai
300
200
100
-100
0 100 200 300 400 500 600 700 800 900 1000
Waktu(ms)
Gambar 4.8 Perubahan nilai parameter gain kontroler PID dengan setpoint 0° tanpa
menggunakan filter
Dari grafik perubahan nilai parameter kontroler PID pada gambar 4.8, dapat dilihat
nilai parameter gain kontroler PID tanpa menggunakan filter memiliki perubahan nilai yang
bertahap hingga mencapai nilai steady state perubahannya semakin drastis. Nilai akhir dari Kp
sebesar 614,04, sedangkan untuk nilai Ki sebesar 181,66, dan untuk nilai Kd sebesar -5,56.
57
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Kesimpulan yang diperoleh dari penelitian ini adalah sebagai berikut:
1. Berdasarkan hasil penentuan nilai awal estimasi sistem kesetimbangan robot beroda dua
tanpa diberikan beban didapatkan parameter estimasi 𝑎̂1 = −0,7648, 𝑎̂2 = −0,2174, dan
𝑏̂1 = 0,007245. Parameter estimasi tersebut terjadi perubahan saat badan robot akan
diseimbangkan.
2. Berdasarkan hasil analisis pengujian Kalman filter, maka dapat disimpulkan
kesetimbangan robot beroda dua tercapai dengan nilai dari parameter Kalman angle =
0,001, Kalman bias = 0,003, Kalman measure = 0,03. Terlihat keluaran sensor MPU6050
GY-521 berupa sudut Pitch memiliki hasil keluaran yang sangat mendekati nilai nol.
3. Berdasarkan hasil pengujian sistem dengan menggunakan Kalman filter, respon sistem
dengan setpoint 0° tidak memiliki overshoot, memiliki nilai settling time kurang dari 1
detik, yaitu senilai 0,493 detik, dan nilai error steady state kurang dari 0,5% yaitu senilai
0,14%. Sedangkan hasil pengujian tanpa menggunakan Kalman filter, respon sistem
dengan setpoint 0° memiliki overshoot, memiliki nilai settling time sebesar 0,221 detik
dan nilai error steady state lebih dari 0,5% yaitu senilai 2,4%.
5.2 Saran
Saran yang dapat diberikan untuk penelitian selanjutnya adalah dengan menambahkan
feedback berupa kecepatan dari parameter motor DC dan gangguan berupa lintasan
kemiringan.
58
59
DAFTAR PUSTAKA
LAMPIRAN 1
FOTO ALAT
62
63
64
65
LAMPIRAN 2
LISTING PROGRAM
66
float PID_result = 0;
KalmanFilter kalmanX(0.001, 0.003,
0.03); float T_0 = 0.05;
//a_hat2 = 0.2474;
void setup() {
//b_hat1 = 0.0001722;
// Initialize MPU6050
gain_adaptasi_11=0.000000001;
while(!mpu.begin(MPU6050_SCALE_20 gain_adaptasi_12=0;
00DPS, MPU6050_RANGE_2G)) gain_adaptasi_13=0;
{
gain_adaptasi_21=0;
delay(500); gain_adaptasi_22=0.000000001;
}
gain_adaptasi_23=0;
gain_adaptasi_31=0;
// Calibrate gyroscope. The calibration gain_adaptasi_32=0;
must be at rest.
gain_adaptasi_33=0.000000001;
// If you don't want calibrate, comment
this line.
digitalWrite(13, ledState);
//By default turn off both the motors
/////////////////////////////////////////////////////////////
/// analogWrite(10,LOW);
setpoint= 0; analogWrite(9,LOW);
y= accPitch;
//set timer1 interrupt at 1Hz
ek_1=ek;
TCCR1A = 0;// set entire TCCR1A
register to 0 ek=setpoint-y;
ISR(TIMER1_COMPA_vect)
sinyalPWM(); {
RLS();
Serial.print(cnt); changeParam();
Serial.print(";"); }
Serial.print(setpoint);
Serial.print(y); float F, G, M, N, H, J, L;
Serial.print(";");
Serial.print(kalPitch);
Serial.print(";"); F = a_hat1+(2*a_hat2);
Serial.print(a_hat1,5); G = (F/b_hat1);
Serial.print(";"); Kp = -1*(G*Q);
Serial.print(a_hat2,5);
Serial.print(";"); M = T_0*a_hat2*Q;
Serial.print(b_hat1,5); N = Kp*b_hat1;
Serial.print(";"); Td = (M/N);
Serial.print(Kp);
Serial.print(";"); H = (1/F);
Serial.print(Ki); J = (Td/T_0);
Serial.print(";"); L = H+1+J;
Serial.println(Kd); Ti = (-1*(T_0/L));
cnt++;
} Ki = (Kp/Ti);
Kd = Kp*Td;
70
} a_hat2=theta_update2;
b_hat1=theta_update3;
void sinyalPWM()
{ gain_adaptasi_11=gain_update_11;
sinyal=mk; gain_adaptasi_12=gain_update_12;
if(sinyal<0){ gain_adaptasi_13=gain_update_13;
sinyal=0; gain_adaptasi_21=gain_update_21;
} gain_adaptasi_22=gain_update_22;
{ gain_adaptasi_31=gain_update_31;
sinyal=255; gain_adaptasi_32=gain_update_32;
} gain_adaptasi_33=gain_update_33;
else{ }
sinyal=sinyal;
ek_2 = ek_1;
a_hat1=theta_update1;
71
aux_13b = (aux_11a*mk_1);
aux_theta2 = (((gain_adaptasi_21*-
1*y_1) + (gain_adaptasi_22*-1*y_2) +
(gain_adaptasi_23*mk_1))*error_estimasi aux_31b = (aux_31a*-1*y_1);
)/denom;
aux_32b = (aux_31a*-1*y_2);
aux_theta3 = (((gain_adaptasi_31*-
aux_33b = (aux_31a*mk_1);
1*y_1) + (gain_adaptasi_32*-1*y_2) +
(gain_adaptasi_33*mk_1))*error_estimasi
)/denom;
aux_11c =
theta_update1 = a_hat1 + aux_theta1; ((aux_11b*gain_adaptasi_11) +
72
(aux_12b*gain_adaptasi_21) +
(aux_13b*gain_adaptasi_31))/denom;
gain_update_11 = (gain_adaptasi_11 -
aux_12c = aux_11c);
((aux_11b*gain_adaptasi_12) +
(aux_12b*gain_adaptasi_22) + gain_update_12 = (gain_adaptasi_12 -
(aux_13b*gain_adaptasi_32))/denom; aux_12c);
aux_31c = }
((aux_31b*gain_adaptasi_11) +
(aux_32b*gain_adaptasi_21) +
(aux_33b*gain_adaptasi_31))/denom; void PID_calculate (){
p1 = -1; /////////////////////////////////////////////////////////////
///
p2 = 0;
void loop() {
// Calculate Pitch & Roll from
accelerometer (deg)
accPitch = -(atan2(acc.XAxis,
///////////////////////////////////////////////////////////// sqrt(acc.YAxis*acc.YAxis +
/// acc.ZAxis*acc.ZAxis))*180.0)/M_PI;
unsigned long currentMillis = millis(); // accRoll = (atan2(acc.YAxis,
grab current time acc.ZAxis)*180.0)/M_PI;
if(output <0 ) {
// save the "current" time
analogWrite(9,0);
previousMillis = millis();
analogWrite(10,output);
}
analogWrite(4,0);
74
analogWrite(5,output);
analogWrite(9,output*-1);
analogWrite(10,0);
analogWrite(4,output*-1);
analogWrite(5,0);
}
75
LAMPIRAN 3
DATA PENGUJIAN
76
Setpoint Output
𝑎̂1 𝑎̂2 𝑏̂1 𝐾𝑝 𝐾𝑖 𝐾𝑑
(derajat) (derajat)
0 -2.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.9 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.71 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.58 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.57 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.57 49.14 -1.5
0 -2.53 -0.7648 -0.2174 0.00725 165.57 49.14 -1.5
82
Setpoint Output
𝑎̂1 𝑎̂2 𝑏̂1 𝐾𝑝 𝐾𝑖 𝐾𝑑
(derajat) (derajat)
0 -3.54 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.99 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.99 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -4.4 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.87 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.59 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.39 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.5 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.5 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.15 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.72 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.48 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.66 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -4.17 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -4.17 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -4.08 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.95 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.85 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.66 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -4.08 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -4.08 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.86 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.91 -0.7648 -0.2174 0.00724 165.58 49.14 -1.5
0 -3.86 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.54 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.49 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.68 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.68 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -4.15 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.87 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.91 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.49 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.75 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.75 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.95 -0.7648 -0.2174 0.00724 165.63 49.15 -1.5
0 -3.72 -0.7648 -0.2174 0.00724 165.69 49.17 -1.5
0 -3.63 -0.7648 -0.2174 0.00724 165.69 49.17 -1.5
0 -3.57 -0.7648 -0.2174 0.00724 165.69 49.17 -1.5
90
LAMPIRAN 4
DATASHEET
® L298
.. TOTAL DC CURRENT UP TO 4 A
LOW SATURATION VOLTAGE
. OVERTEMPERATURE PROTECTION
LOGICAL "0" INPUT VOLTAGE UP TO 1.5 V
(HIGH NOISE IMMUNITY)
DESCRIPTION PowerSO20
Multiwatt15
The L298 is an integrated monolithic circuit in a 15-
lead Multiwatt and PowerSO20 packages. It is a
high voltage, high current dual full-bridge driver de-
signed to accept standard TTL logic levels and drive ORDERING NUMBERS : L298N (Multiwatt Vert.)
L298HN (Multiwatt Horiz.)
inductive loads such as relays, solenoids, DC and L298P (PowerSO20)
stepping motors. Two enable inputs are provided to
enable or disable the device independently of the in-
put signals. The emitters of the lower transistors of nection of an external sensing resistor. An additional
each bridge are connected together and the corre- supply input is provided so that the logic works at a
sponding external terminal can be used for the con- lower voltage.
BLOCK DIAGRAM
15 CURRENT SENSING B
14 OUTPUT 4
13 OUTPUT 3
12 INPUT 4
11 ENABLE B
10 INPUT 3
9 LOGIC SUPPLY VOLTAGE VSS
Multiwatt15 8 GND
7 INPUT 2
6 ENABLE A
5 INPUT 1
4 SUPPLY VOLTAGE VS
3 OUTPUT 2
2 OUTPUT 1
1 CURRENT SENSING A
GND 1 20 GND
Sense A 2 19 Sense B
N.C. 3 18 N.C.
Out 1 4 17 Out 4
Out 2 5 PowerSO20 16 Out 3
VS 6 15 Input 4
Input 1 7 14 Enable B
Enable A 8 13 Input 3
Input 2 9 12 VSS
GND 10 11 GND
D95IN239
THERMAL DATA
Symbol Parameter PowerSO20 Multiwatt15 Unit
Rth j-case Thermal Resistance Junction-case Max. – 3 °C/W
Rth j-amb Thermal Resistance Junction-ambient Max. 13 (*) 35 °C/W
2/13
L298
ELECTRICAL CHARACTERISTICS (VS = 42V; VSS = 5V, Tj = 25°C; unless otherwise specified)
Symbol Parameter Test Conditions Min. Typ. Max. Unit
VS Supply Voltage (pin 4) Operative Condition VIH +2.5 46 V
VSS Logic Supply Voltage (pin 9) 4.5 5 7 V
IS Quiescent Supply Current (pin 4) Ven = H; IL = 0 Vi = L 13 22 mA
Vi = H 50 70 mA
Ven = L Vi = X 4 mA
ISS Quiescent Current from VSS (pin 9) Ven = H; IL = 0 Vi = L 24 36 mA
Vi = H 7 12 mA
Ven = L Vi = X 6 mA
ViL Input Low Voltage –0.3 1.5 V
(pins 5, 7, 10, 12)
ViH Input High Voltage 2.3 VSS V
(pins 5, 7, 10, 12)
IiL Low Voltage Input Current Vi = L –10 µA
(pins 5, 7, 10, 12)
IiH High Voltage Input Current Vi = H ≤ VSS –0.6V 30 100 µA
(pins 5, 7, 10, 12)
Ven = L Enable Low Voltage (pins 6, 11) –0.3 1.5 V
Ven = H Enable High Voltage (pins 6, 11) 2.3 VSS V
Ien = L Low Voltage Enable Current Ven = L –10 µA
(pins 6, 11)
Ien = H High Voltage Enable Current Ven = H ≤ VSS –0.6V 30 100 µA
(pins 6, 11)
VCEsat (H) Source Saturation Voltage IL = 1A 0.95 1.35 1.7 V
IL = 2A 2 2.7 V
VCEsat (L) Sink Saturation Voltage IL = 1A (5) 0.85 1.2 1.6 V
IL = 2A (5) 1.7 2.3 V
VCEsat Total Drop IL = 1A (5) 1.80 3.2 V
IL = 2A (5) 4.9 V
Vsens Sensing Voltage (pins 1, 15) –1 (1) 2 V
3/13
L298
1) 1)Sensing voltage can be –1 V for t ≤ 50 µsec; in steady state Vsens min ≥ – 0.5 V.
2) See fig. 2.
3) See fig. 4.
4) The load must be a pure resistor.
Figure 1 : Typical Saturation Voltage vs. Output Figure 2 : Switching Times Test Circuits.
Current.
4/13
JGA25-370RC DC Gearmotor with Extended
Axis (645 RPM at 12 V)
Overview
JGA25-370RC is a high quality DC gearmotor featuring a longer output shaft, which is specially
designed for mounting speed encoders.
Specifications
Nominal voltage: 12 V
Free-run speed at 12 V: 645 RPM
Free-run current at 12 V: 40 mA
Stall current at 12 V: 1.2 A
Stall torque at 12 V: 0.5 kg.cm
Reductor size: 22 mm
Weight: 90 g
Fig. 1. Lateral view of the JGA25-370RC DC gearmotor (L is specified for each RPM value)
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 14 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
The Arduino Mega2560 can be powered via the USB connection or with an external power supply. The power source is
selected automatically. External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or battery. The
adapter can be connected by plugging a 2.1mm center-positive plug into the board's power jack. Leads from a battery
can be inserted in the Gnd and Vin pin headers of the POWER connector.
The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may
supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat
and damage the board. The recommended range is 7 to 12 volts.
The Mega2560 differs from all preceding boards in that it does not use the FTDI USB-to-serial driver chip. Instead, it
features the Atmega8U2 programmed as a USB-to-serial converter.
• VIN. The input voltage to the Arduino board when it's using an external power source (as opposed to 5 volts
from the USB connection or other regulated power source). You can supply voltage through this pin, or, if
supplying voltage via the power jack, access it through this pin.
• 5V. The regulated power supply used to power the microcontroller and other components on the board. This
can come either from VIN via an on-board regulator, or be supplied by USB or another regulated 5V supply.
• 3V3. A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.
• GND. Ground pins.
The ATmega2560 has 256 KB of flash memory for storing code (of which 8 KB is used for the bootloader), 8 KB of
SRAM and 4 KB of EEPROM (which can be read and written with the EEPROM library).
Each of the 54 digital pins on the Mega can be used as an input or output, using pinMode(), digitalWrite(), and
digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an
internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions:
• Serial: 0 (RX) and 1 (TX); Serial 1: 19 (RX) and 18 (TX); Serial 2: 17 (RX) and 16 (TX); Serial 3: 15 (RX) and
14 (TX). Used to receive (RX) and transmit (TX) TTL serial data. Pins 0 and 1 are also connected to the
corresponding pins of the ATmega8U2 USB-to-TTL Serial chip .
• External Interrupts: 2 (interrupt 0), 3 (interrupt 1), 18 (interrupt 5), 19 (interrupt 4), 20 (interrupt 3), and 21
(interrupt 2). These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a
change in value. See the attachInterrupt() function for details.
• PWM: 0 to 13. Provide 8-bit PWM output with the analogWrite() function.
• SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). These pins support SPI communication, which, although
provided by the underlying hardware, is not currently included in the Arduino language. The SPI pins are also
broken out on the ICSP header, which is physically compatible with the Duemilanove and Diecimila.
• LED: 13. There is a built-in LED connected to digital pin 13. When the pin is HIGH value, the LED is on, when
the pin is LOW, it's off.
• I2C: 20 (SDA) and 21 (SCL). Support I2C (TWI) communication using the Wire library (documentation on the
Wiring website). Note that these pins are not in the same location as the I2C pins on the Duemilanove.
The Mega2560 has 16 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). By default
they measure from ground to 5 volts, though is it possible to change the upper end of their range using the AREF pin and
analogReference() function.
• AREF. Reference voltage for the analog inputs. Used with analogReference().
• Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which
block the one on the board.
The Arduino Mega2560 has a number of facilities for communicating with a computer, another Arduino, or
other microcontrollers. The ATmega2560 provides four hardware UARTs for TTL (5V) serial communication.
An ATmega8U2 on the board channels one of these over USB and provides a virtual com port to software on
the computer (Windows machines will need a .inf file, but OSX and Linux machines will recognize the board
as a COM port automatically. The Arduino software includes a serial monitor which allows simple textual
data to be sent to and from the board. The RX and TX LEDs on the board will flash when data is being
transmitted via the ATmega8U2 chip and USB connection to the computer (but not for serial communication
on pins 0 and 1).
A SoftwareSerial library allows for serial communication on any of the Mega's digital pins.
The ATmega2560 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire
library to simplify use of the I2C bus; see the documentation on the Wiring website for details. To use the SPI
communication, please see the ATmega2560 datasheet.
The Arduino Mega2560 can be programmed with the Arduino software (download). For details, see the
reference and tutorials.
The Atmega2560 on the Arduino Mega comes preburned with a bootloader that allows you to upload new
code to it without the use of an external hardware programmer. It communicates using the original STK500
protocol (reference, C header files).
You can also bypass the bootloader and program the microcontroller through the ICSP (In-Circuit Serial
Programming) header; see these instructions for details.
Rather then requiring a physical press of the reset button before an upload, the Arduino Mega2560 is
designed in a way that allows it to be reset by software running on a connected computer. One of the
hardware flow control lines (DTR) of the ATmega8U2 is connected to the reset line of the ATmega2560 via a
100 nanofarad capacitor. When this line is asserted (taken low), the reset line drops long enough to reset the
chip. The Arduino software uses this capability to allow you to upload code by simply pressing the upload
button in the Arduino environment. This means that the bootloader can have a shorter timeout, as the
lowering of DTR can be well-coordinated with the start of the upload.
This setup has other implications. When the Mega2560 is connected to either a computer running Mac OS X
or Linux, it resets each time a connection is made to it from software (via USB). For the following half-second
or so, the bootloader is running on the Mega2560. While it is programmed to ignore malformed data (i.e.
anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a
connection is opened. If a sketch running on the board receives one-time configuration or other data when it
first starts, make sure that the software with which it communicates waits a second after opening the
connection and before sending this data.
The Mega contains a trace that can be cut to disable the auto-reset. The pads on either side of the trace can
be soldered together to re-enable it. It's labeled "RESET-EN". You may also be able to disable the auto-reset
by connecting a 110 ohm resistor from 5V to the reset line; see this forum thread for details.
The Arduino Mega has a resettable polyfuse that protects your computer's USB ports from shorts and
overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer
of protection. If more than 500 mA is applied to the USB port, the fuse will automatically break the connection
until the short or overload is removed.
The maximum length and width of the Mega PCB are 4 and 2.1 inches respectively, with the USB connector
and power jack extending beyond the former dimension. Three screw holes allow the board to be attached to
a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16"), not an even multiple
of the 100 mil spacing of the other pins.
The Mega is designed to be compatible with most shields designed for the Diecimila or Duemilanove. Digital
pins 0 to 13 (and the adjacent AREF and GND pins), analog inputs 0 to 5, the power header, and ICSP
header are all in equivalent locations. Further the main UART (serial port) is located on the same pins (0 and
1), as are external interrupts 0 and 1 (pins 2 and 3 respectively). SPI is available through the ICSP header on
both the Mega and Duemilanove / Diecimila. Please note that I2C is not located on the same pins on the
Mega (20 and 21) as the Duemilanove / Diecimila (analog inputs 4 and 5).
Document Number: PS-MPU-6000A-00
MPU-6000/MPU-6050 Product Specification Revision: 3.3
Release Date: 5/16/2012
SCL / SCLK
SDA / SDI GND GND
CLKOUT
CLKOUT
SDA
SCL
C3 C3
2.2nF 2.2nF
24 23 22 21 20 19 24 23 22 21 20 19
CLKIN 1 18 CLKIN 1 18
2 17 2 17
GND GND
3 16 3 16
4
MPU-6000 15 4
MPU-6050 15
VDD VDD
5 14 5 14
AUX_DA 6 13 AUX_DA 6 13
7 8 9 10 11 12 C2 7 8 9 10 11 12 C2
0.1µF 0.1µF
AUX_CL AUX_CL
GND GND
C1 VLOGIC C1
0.1µF 0.1µF
AD0 / SDO
INT
INT
/CS
FSYNC
FSYNC
C4
AD0
10nF
22 of 54
Document Number: PS-MPU-6000A-00
MPU-6000/MPU-6050 Product Specification Revision: 3.3
Release Date: 5/16/2012
All Voltages at 0V
Power-Up Sequencing
1. VLOGIC amplitude must always be ≤VDD
amplitude
TVDDR
90% 2. TVDDR is VDD rise time: Time for VDD to rise
from 10% to 90% of its final value
3. TVDDR is ≤100ms
10%
VDD
4. TVLGR is VLOGIC rise time: Time for
TVLGR VLOGIC to rise from 10% to 90% of its final
90% value
5. TVLGR is ≤3ms
VLOGIC
10% 6. TVLG-VDD is the delay from the start of VDD
ramp to the start of VLOGIC rise
7. TVLG-VDD is ≥0
TVLG - VDD
8. VDD and VLOGIC must be monotonic
ramps
23 of 54
Document Number: PS-MPU-6000A-00
MPU-6000/MPU-6050 Product Specification Revision: 3.3
Release Date: 5/16/2012
1
CLKIN
22 CLOCK Clock MPU-60X0
CLKOUT
Self
X Accel ADC 12
test Interrupt INT
Status
Register
8
(/CS)
Self Y Accel ADC 9
Slave I2C and AD0 / (SDO)
test
SPI Serial 23
FIFO
Interface SCL / (SCLK)
24
SDA / (SDI)
Self Z Accel ADC
test Config
Signal Conditioning
Registers
Master I2C Serial 7
AUX_CL
Self Serial Interface
test X Gyro ADC Interface Bypass 6
Sensor AUX_DA
Mux
Registers
11
Self FSYNC
test Y Gyro ADC
Factory
Calibration
Digital Motion
Processor
Self
Z Gyro ADC (DMP)
test
Charge
Bias & LDO
Pump
20 13 18 10 8
7.6 Overview
The MPU-60X0 is comprised of the following key blocks and functions:
Three-axis MEMS rate gyroscope sensor with 16-bit ADCs and signal conditioning
Three-axis MEMS accelerometer sensor with 16-bit ADCs and signal conditioning
Digital Motion Processor (DMP) engine
2
Primary I C and SPI (MPU-6000 only) serial communications interfaces
2 rd
Auxiliary I C serial interface for 3 party magnetometer & other sensors
Clocking
Sensor Data Registers
FIFO
Interrupts
Digital-Output Temperature Sensor
Gyroscope & Accelerometer Self-test
Bias and LDO
Charge Pump
24 of 54
Document Number: PS-MPU-6000A-00
MPU-6000/MPU-6050 Product Specification Revision: 3.3
Release Date: 5/16/2012
7.7 Three-Axis MEMS Gyroscope with 16-bit ADCs and Signal Conditioning
The MPU-60X0 consists of three independent vibratory MEMS rate gyroscopes, which detect rotation about
the X-, Y-, and Z- Axes. When the gyros are rotated about any of the sense axes, the Coriolis Effect causes
a vibration that is detected by a capacitive pickoff. The resulting signal is amplified, demodulated, and filtered
to produce a voltage that is proportional to the angular rate. This voltage is digitized using individual on-chip
16-bit Analog-to-Digital Converters (ADCs) to sample each axis. The full-scale range of the gyro sensors
may be digitally programmed to ±250, ±500, ±1000, or ±2000 degrees per second (dps). The ADC sample
rate is programmable from 8,000 samples per second, down to 3.9 samples per second, and user-selectable
low-pass filters enable a wide range of cut-off frequencies.
7.8 Three-Axis MEMS Accelerometer with 16-bit ADCs and Signal Conditioning
The MPU-60X0’s 3-Axis accelerometer uses separate proof masses for each axis. Acceleration along a
particular axis induces displacement on the corresponding proof mass, and capacitive sensors detect the
displacement differentially. The MPU-60X0’s architecture reduces the accelerometers’ susceptibility to
fabrication variations as well as to thermal drift. When the device is placed on a flat surface, it will measure
0g on the X- and Y-axes and +1g on the Z-axis. The accelerometers’ scale factor is calibrated at the factory
and is nominally independent of supply voltage. Each sensor has a dedicated sigma-delta ADC for providing
digital outputs. The full scale range of the digital output can be adjusted to ±2g, ±4g, ±8g, or ±16g.
2
7.10 Primary I C and SPI Serial Communications Interfaces
2
The MPU-60X0 communicates to a system processor using either a SPI (MPU-6000 only) or an I C serial
interface. The MPU-60X0 always acts as a slave when communicating to the system processor. The LSB of
2
the of the I C slave address is set by pin 9 (AD0).
The logic levels for communications between the MPU-60X0 and its master are as follows:
MPU-6000: The logic level for communications with the master is set by the voltage on VDD
MPU-6050: The logic level for communications with the master is set by the voltage on VLOGIC
For further information regarding the logic levels of the MPU-6050, please refer to Section 10.
25 of 54
Document Number: PS-MPU-6000A-00
MPU-6000/MPU-6050 Product Specification Revision: 3.3
Release Date: 5/16/2012
2
7.11 Auxiliary I C Serial Interface
2
The MPU-60X0 has an auxiliary I C bus for communicating to an off-chip 3-Axis digital output magnetometer
or other sensors. This bus has two operating modes:
2
I C Master Mode: The MPU-60X0 acts as a master to any external sensors connected to the
2
auxiliary I C bus
2
Pass-Through Mode: The MPU-60X0 directly connects the primary and auxiliary I C buses together,
allowing the system processor to directly communicate with any external sensors.
2
Auxiliary I C Bus Modes of Operation:
2
I C Master Mode: Allows the MPU-60X0 to directly access the data registers of external digital
sensors, such as a magnetometer. In this mode, the MPU-60X0 directly obtains data from auxiliary
sensors, allowing the on-chip DMP to generate sensor fusion data without intervention from the
system applications processor.
2
For example, In I C Master mode, the MPU-60X0 can be configured to perform burst reads,
returning the following data from a magnetometer:
X magnetometer data (2 bytes)
Y magnetometer data (2 bytes)
Z magnetometer data (2 bytes)
2
The I C Master can be configured to read up to 24 bytes from up to 4 auxiliary sensors. A fifth sensor
can be configured to work single byte read/write mode.
Pass-Through Mode: Allows an external system processor to act as master and directly
2
communicate to the external sensors connected to the auxiliary I C bus pins (AUX_DA and
2 rd
AUX_CL). In this mode, the auxiliary I C bus control logic (3 party sensor interface block) of the
2
MPU-60X0 is disabled, and the auxiliary I C pins AUX_DA and AUX_CL (Pins 6 and 7) are
2
connected to the main I C bus (Pins 23 and 24) through analog switches.
Pass-Through Mode is useful for configuring the external sensors, or for keeping the MPU-60X0 in a
low-power mode when only the external sensors are used.
2
In Pass-Through Mode the system processor can still access MPU-60X0 data through the I C
interface.
2
Auxiliary I C Bus IO Logic Levels
2
MPU-6000: The logic level of the auxiliary I C bus is VDD
2
MPU-6050: The logic level of the auxiliary I C bus can be programmed to be either VDD or VLOGIC
For further information regarding the MPU-6050’s logic levels, please refer to Section 10.2.
26 of 54