Rancang Bangun Robot Keseimbangan Menggunakan Sensor Mpu6050 Berbasis Atmega328 Chapter III V

BAB III PERANCANGAN ALAT

3.1 Diagram Blok

Gambar 12. Diagram Blok Dari Rangkaian

Pada diagram block di atas, input accelerometer, Gyroscop dan input setting
PID dalam hal ini menggukanan multi turn potensiometer, untuk output motor
didrive oleh H-Bridge. Pembacaan sensor accelerometer dan Gyroscop diterima oleh
miktrokontoller menggunakan komunikasi data I2C, yang hanya menggunakan dua
port yaitu port SDA dan SCL.
Data accelerometer dan Gyroscop yang diterima oleh mikrokontroller akan di
proses, dan di masukan ke persamaan complamantary filter. untuk menghasilkan
sudut yang seharusnya. Setelah sudut yang seharusnya telah didapat maka data akan

Universitas Sumatera Utara

26

diolah oleh kontrol PID, yang diharapkan dapat menentukan nilai aksi yang sesuai
dengan yang dibutuhkan robot untuk mecapai titik setimbang, dalam menentukan

konstanta P, I dan D dapat diatur dengan memutar multiturn potensiometer, output
dari multi turn potensiometer berupa tegangan analog sehingga dibutuhkan ADC
yang terdapat dalam fitur mikrokontroler untuk membaca input dari mutli turn
potensiometer, cara ini lebih efesien karena hasil output yang terlihat dalam bentuk
gerakan motor akan terlihat saat itu juga, sehingga dapat mempermudah kita dalam
menentuka konstanta P, I dan D yang tepat.

3.2 Perancangan Rangkaian Mikrokontroller ATMEGA328
Rangkaian

sistem

minimum

mikrokontoler

ATMEGA328terdiri dari

rangkaiansistem minimum dan rangkaian I/O. Rangkaian minimum mikrokontroler
terdiridari rangkaian clock dan rangkaian reset.Rangkaian clock pada mikrokontroler

ATMEGA328 membutuhkan osilator kristal dan 2 buah kapasitor non polar agar
dapat berosilasi. Padaperancangan ini, besar frekuensi osilatorkristal yang digunakan
adalah 16 MHzdan besar kapasitas kapasitor adalah 22 pF. Pemilihan frekuensi dan
besarkapasitor

tersebut

ATMEGA328.Rangkaian

dirancang
reset

pada

berdasarkan

datasheet

mikrokontroler


mikrokontroler

ATMEGA328berfungsi

untukmengembalikan mikrokontroler pada program awal (vektor reset).

Gambar 13. Rangkaian Mikrokontroller ATMEGA328

Universitas Sumatera Utara

27

Untuk pemrograman ke mikrokontroler ATMEGA328, maka diperlukan
suatu

programmer/downloader

ISP

(In


ISPmempunyai keuntungan yaitu dapat
sedangterpasang

dengan

rangkaian

System

Programming).Programmer

memprogram mikrokontroler yang

lainnya

tanpa

harus


mencabutserpih

(chip)mikrokontroler tersebut sehingga lebih praktis jika ingin melakukan
pemrogramansecara

berulang-ulang.

Pemrograman

berbasis

ISP

cukup

menghubungkan antarapin MOSI, MISO, SCK, RESET, VCC dan Ground dengan
programmer ISPtersebut. Programmer ISP yang digunakan adalah programmer
USBISP yang dapat memprogram hampir semua jenis chip AVR dan menggunakan
catu daya yang telah ada pada USB


3.3 Rangkaian MPU6050
Robot ini menggunakan sensor modul GY-521 dan sensor yang digunakan
adalah MPU6050, berikut rangkaian modul Gy-521.Sensor ini dapat mendeteki 3
axis sudut dan 3 axis kecepatan sudut, untuk 3 axis sudut adalah sudut x, y dan z.

Z

X

Y

Gambar 14. Axis sudut Accelerometer
Pada robot ini hanya menggunakan satu axis sudut, yaitu sumbu y. data yang
akan berubah jika sensor digerakkan searah sumbu y, data yang dihasilkan akan
dibagi dengan sensvitas sensor. Dalam perancangan ini hanya menggunakan 8 bit (0
– 255). Hasil pembacaan akan dibagi dengan sensivitas untuk mendapat hasil dalam

Universitas Sumatera Utara

28


satuan g (gravitasi), dan nilai maksimumnya adalah 1 g dan minimumnya adalah -1
g, pada sensor ini nilai maksimal didapat pada sudut 900 jika digerakkan ke arah
sudut 180 maka nilainya akan berkurang secara linier sesuai dengan sudut hingga ke
sudut 00 sebaliknya jika digerakkan ke sudut 00 maka nilainya akan dimulai dari 0
dan naik secara linier hinggal ke nilai 255 di sudut 00, mengingat karakter
pembacaan sensor untuk range 0 – 255 adalah 00 - 1800, dan nilai tertinggi dan
terendah pada sudut 90, makan perlu manipulasi program untuk mendapatkan sudut
satu lingkaran utuh (00 – 360), jika output mengarah ke angka yang lebih kecil maka
nilai maksimum (255) dikurangi output accelerometer, begitu juga sebaliknya jika
output mengarah ke angka yang lebih besar maka nilai output accelerometer
dikurangi dengan nilai minimum (0).
Untuk mengetehui output mengarah ke angka besar atau kea arah kecil maka
diperlukan angka refrensi dalam hal ini adalah pembacaan sensor pada sudut 900, jika
nilai output accelerometer lebih kecil dari refrensi maka nilanya mengarah ke angka
besar sebaliknya jika nilai output accelerometer lebih besar dari nilai refrensi maka
nilainya mengarah ke angka yang lebih kecil.
Output gyroscope berpengaruh kepada kesetabilan robot saat robot bergerak dan
saat robot mencapai titik seimbang robot, itu karena output gyroscope akan berbalik
saat terjadi robot berhenti mendadak dan besar kecilnya nilai juga berpengaruh dari

seberapa cepat kecepatan sudutnya.Berikut rangkaian MPU6050:

Gambar 15. Rangkaian Modul MPU6050

Universitas Sumatera Utara

29

Dari rangkain di atas terlihat hanya 2 (dua) port saja yang dihubungkan ke
mikrokontroller, dan itu berguna untuk menghemat penggunaan port pada
mikrokontroller, tetapi kekurangannya waktu yang dibutuhkan untuk membaca
pastinya lebih lama jika dibandingkan dengan menggunakan PORT ADC, tetapi
selisih delay tidak terlalu mempengaruhi keseimbangan robot, sehingga komunikasi
menggunakan ini dapat digunakan.

3.4

Rangkaian Regulator
Pada rangkaian ini menggunakan baterai 11.1V litium polimer sebagai


sumber tegnagan, yang nantinya tegangan akan di turunkan menjadi 5V. berikut
rangkaian regulator:

Gambar 16. Rangkaian Regulator
Rangkaian

ini

berfungsi

untuk

memberikan

supply

tegangan

ke


mikrokontroller, HC-05, MPU6050, dan driver Motor. Keluaran padarangkaian
Regulator ini diharapkan5 volt.Karena pada rangkaian regulator ini menggunakan IC
regulator 7805, yang dapat menstabilkan tegangan agar mendekati yang diharapkan
yaitu 5V.

Universitas Sumatera Utara

30

3.5

Driver Motor
Dual H-bridge adalah driver motor menggunakan MOSFET, dimana untuk

dapat menggerakan satu buah motor terdiri dari dua buah MOSFET kanal N dan dua
buah MOSFET kanal P. disebut dual H-bridge karena memiliki kemampuan untuk
mengendalikan dua buah motor. Keunggulan dari driver MOSFET adalah memiliki
kemampuan mengalirkan arus yang besar dan memiliki disipasi daya yang kecil.
Selain itu jenis driver MOSFET hanya memerlukan dua pin untuk dapat
mengendalikan kecepatan dan arah putar motor.


Gambar 17. Rangkaian Driver Motor
MOSFET yang digunakan adalah jenis IRF9540 (MOSFET kanal P) dan
IRF540 (MOSFET kanal N). MOSFET jenis ini memliki 3 pin yaitu G (GATE), D
(DRAIN), dan S (SOURCE). MOSFET mengalirkan arus dari drain ke source
sehingga arus aktif MOSFET biasa disebut IDS, sehingga memungkinkan adanya
IDS negatif. MOSFET kanal N dan P memiliki kinerja yang komplemen. MOSFET
N akan aktif jika VGS tidak sama dengan nol atau sebesar 10V untuk IRF540
sedangkan untuk MOSFET kanal P aktif saat VGS sama dengan -10V (IDS kanal P
biasanya negatif).

Universitas Sumatera Utara

31

3.6

Rangkaian Potensiometer

Gambar 18. Rangkaian Potensiometer
Pada rangkaian ini menggunakan potensiometer sebagai setting nilai
konstanta PID. Rangkaian potensiometer ini dihubungkan ke pin ADC, dan nilai dari
ADC diguanakan sebagai nilai konstanta PID. Potensiometer yang diguanakn yaitu
jenis multiturn, yang memiliki kelebihan lebih presisi.

3.7

Rangkaian Bluetooth
Rangkaian HC-05 ini berfungsi untuk mengintegrasikan Android dengan

Mikrokontroller.Dalam melakukan koneksi antara modul HC-05 dan mikrokontroller
Pada rangkaian ini ada beberapa hal yang harus diperhatikan, yaitu pada jalur
penghubung dari rangkaian modul Bluetooth ke mikrokontroller. Meliputi pin power
5V, ground, transmitter (Tx), dan receiver (Rx). Pin-pin ini akan dihubungkan ke
setiap jalur pin miktokontroller.

Universitas Sumatera Utara

32

Pin power dihubungkan ke 5V, pin GND digubungkan ke groud suplly,
kemudian pin Rx pada HC-05, dihubungkan ke Tx mikrokontroller dan pin Tx HC05 dihubungkan ke pin Rx miktokontroller.

Gambar 19

Rangkaian HC-05

Universitas Sumatera Utara

33

3.8

FlowChart

Gambar 20. Flowchart program

Universitas Sumatera Utara

BAB IV PENGUJIAN DAN ANALISA

4.1 Pengujian Mikrokontroller ATMEGA328
Pengujian rangkaian mikrokontroller ini bertujuan untuk mengetahui apakah
rangkaian mikrokontroller bekerja dengan baik. Pengujian pada rangkaian ini dengan
malakukan read signatur pada chip mikrokontroller

Gambar 21. Read Signatur Chip Mikrokontroller ATMEGA328

Kemudian setelah read signatur telah berhasil maka mikrokontroller di uji lagi
dengan memberikan program sebagai berikut:

void setup() {
pinMode(LED_BUILTIN, OUTPUT);}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);

Universitas Sumatera Utara

35

delay(1000);
digitalWrite(LED_BUILTIN, LOW
delay(1000}
Jika program tersebut dijalankan, maka PORTB.5 akanbernilai “high” selama
satu detik dan dan “low” selama satu detik, dengan memberikan indikator LED pada
pin tersebut.demikian maka system minimum mikrokontroller ATMEGA328 telah
berjalan dengan baik.

4.2 Pengujian Rangkaian Regulator
Pada pengujian rangkaian regulator ini bertujuan untuk mengetahui apakah
tegangan output dari regulator sesuai yang diharapakan yaitu 5V. pengujian ini
dilakukan dengan mengukur output dari regulator menggunakan Volt meter. Positif
volt meter dihubungkan ke output regulator dan negative volt meter digubungkan ke
groud. Jika pada volt meter telah mendekati 5V maka rangkaian regulator berjalan
dengan baik. Berikut gambar pengukuran output regulator.

Gambar 22. Pengujian Output Regulator

Universitas Sumatera Utara

36

4.3 Pengujian Rangkaian Potensiometer
Pengujian rangkaian potensiometer ini sama dengan pengujian regulator, yaitu
dengan mengukur output dari potensiometer dengan interval 0 – 5 volt. Jika diputar
ke kenan tegangan semakin besar dan jika diputar kekiri tegangan semakain kecil
maka rangkaian potensiometer telah bekerja dengan baik.
Pengujian juga bias dilakukan dnegan menghubungkan output pin potensiometer
ke pin analog (ADC), atau sesuai dengan rangkaian kemudian mikrokontroller
deprogram dengan program sebagai berikut.
int sensorValue1;
int sensorValue2;
int sensorValue3;
float volt1;
float volt2;
float volt3;
void setup() {
Serial.begin(9600);
}

void loop() {
sensorValue1 = analogRead(A1);
volt1=sensorValue1*0.004887;
sensorValue2 = analogRead(A2);
volt2=sensorValue2*0.004887;
sensorValue3 = analogRead(A3);
volt3=sensorValue3*0.004887;

Serial.print("DATA,");
Serial.print("TIME,");
Serial.print(volt1);
Serial.print(",");
Serial.print(volt2);
Serial.print(",");
Serial.println(volt3);

Universitas Sumatera Utara

37

delay(200);
}
Output dari program ini dapat dilihat pada serial monitor pada software.
ketika potensiometer diputar dan nilai yang yang tampil pada serial monitor berubah
dengan range antara 0-1023 maka rangkaian potensiometer dapat bekerja dengan
baik.

4.4 Pengujian Rangkaian Driver Motor
Driver motor yang digunakan menggunakan IC IRF540 dan di rangkai secara H
bridge. Pada rangkaian ini menggunakan 2 Motor sehingga membutuhkan 2
rangkaian H bridge. Untuk pengujian rangkaian H bridge ini membuathkan 2 pin
PWM, jadi dengan dua motor membutuhkan 4 pin PWM, unutk pengujian driver
motor ini dengna program sebagai berikut:
int ENA=9;
int ENB=6;
int ENC=10;
int END=5;
void setup(){
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
pinMode(ENC,OUTPUT);
pinMode(END,OUTPUT);
}
void loop(){
analogWrite(ENA, 0);
analogWrite(ENB,100);
analogWrite(ENC, 0);
analogWrite(END,100);
delay(5000);
analogWrite(ENA, 200);
analogWrite(ENB,125);
analogWrite(ENC, 200);

Universitas Sumatera Utara

38

analogWrite(END,125);
delay(5000);
}

Jika Motor berputar kekanan selama 5 detik dan kekiri selama 5 detik, maka
driver dapat bekerja dengan baik.

4.5 Pengujian SinkronisasiHC-05
Pengujian sinkronisasi adalah proses sinkronisasi antara android smartphone
dengan mikrokontroler, yang dilakukan melalui media Bluetooth. Pengujian
dilakukan dengan cara melakukan pairing antara android smartphone dengan modul
Bluetooth HC-05 yang tersambung dengan mikrokontroler. Proses ini dilakukan
menggunakan aplikasi ”Bluetooth Settings” yang terdapat padaandroid smartphone.
Kemudian aplikasi akan mendeteksi Id Bluetooth padamodul HC-05, setelelah
terdeteksi dan melakukan sinkronisasi, androidsmartphone siap berkomunikasi
dengan mikrokontroler.

Gambar 23. Sinkronisasi HC-05 dengan Android
Gambar di atas menunjukkan android smartphone dan modul Bluetooth HC-05
telah tersinkronisasi.Ini diketahui dari tampilan “Bluetooth Settings” pada android
smartphone yang menampilkan modul Bluetooth HC-05 telah ter-pairing.Hal ini

Universitas Sumatera Utara

39

menunjukkan bahwa pengujian sinkronisasi telahberhasil sesuai dengan yang
dirancang.

4.6 Pengujian Gyroscope
Unutk mengetahui sensor ini dapat bekerja dengan baik, dapat dilakukan
pengujian dengan memprogram mikrokontroller, dengan tujuan untuk memastikan
sensor dapat mendeteksi gyrocope atau tidak. Program dapat dilihat sebagai berikut:
#include
#include
MPU6050 mpu;
unsigned long timer = 0;
float timeStep = 0.01;
float pitch = 0;
float roll = 0;
float yaw = 0;
void setup()
{
Serial.begin(9600);
while(!mpu.begin(MPU6050_SCALE_2000DPS,
MPU6050_RANGE_2G))
{
delay(500);
}
mpu.calibrateGyro();
mpu.setThreshold(3);
}
void loop()
{
timer = millis();
Vector norm = mpu.readNormalizeGyro();
pitch = pitch + norm.YAxis * timeStep;
roll = roll + norm.XAxis * timeStep;

Universitas Sumatera Utara

40

yaw = yaw + norm.ZAxis * timeStep;
Serial.print("DATA,");
Serial.print("TIME,");
Serial.print(pitch);
Serial.print(",");
Serial.print(roll);
Serial.print(",");
Serial.println(yaw);
delay(200);
}
Data dikirim menggunakan komunikasi serial, dan langsung di float ke
Microsoft excel dengan software PLX-DAQ, yang dirilis oleh parallax. Setelah
program diterima sensor di digerakan secara acak, sehingga didapat data sebagai
berikut:
Tabel 4
No

Pitch

Roll

Yaw

Waktu (s)

1.0

0.77

0

0.84

0.1

2.0

0.77

0

0.84

0.2

3.0

0.77

0

0.84

0.3

4.0

0.77

0

0.84

0.4

5.0

0.77

0

0.84

0.5

6.0

0.77

0

0.84

0.6

7.0

0.77

0

0.84

0.7

8.0

0.77

0

0.84

0.8

9.0

0.77

0

0.84

0.9

10.0

0.77

0

0.84

1

11.0

0.77

0

0.84

1.1

12.0

0.77

0

0.84

1.2

13.0

0.77

1.21

0.84

1.3

14.0

0.77

1.21

0.84

1.4

15.0

0.77

1.21

0.84

1.5

16.0

0.77

1.21

0.84

1.6

17.0

0.77

1.21

0.84

1.7

18.0

0.77

1.21

0.84

1.8

19.0

0.77

1.21

-0.18

1.9

Universitas Sumatera Utara

41

20.0

0.77

1.21

-1.18

2

21.0

0.77

1.21

-2.17

2.1

22.0

0.77

1.21

-2.17

2.2

23.0

0.77

1.21

-2.17

2.3

24.0

0.77

1.21

-0.9

2.4

25.0

-0.12

1.21

0.8

2.5

26.0

-0.12

1.21

2.38

2.6

27.0

-0.12

1.21

3.35

2.7

28.0

-0.12

1.21

4.53

2.8

29.0

-0.12

1.21

5.46

2.9

30.0

-0.12

1.21

6.26

3

31.0

-0.12

1.21

7.1

3.1

32.0

-0.12

1.21

7.1

3.2

33.0

-0.12

1.21

7.1

3.3

34.0

-0.12

1.21

7.1

3.4

35.0

-0.12

1.21

7.1

3.5

36.0

-0.12

1.21

5.62

3.6

37.0

-0.12

1.21

4.05

3.7

38.0

-0.12

1.21

3.06

3.8

39.0

-0.12

1.21

3.06

3.9

40.0

-0.12

1.21

3.06

4

Gyroscope yang dideteksi ada 3, yaitu Pitch, Roll dan Yaw, data secara gerafik dapat
dilihat seperti dibawah ini.

8

Kemiiringan

6
4
Yaw
2
Roll
0
0

1

2

-2
-4

3

4

Pitch

waktu

Gambar 24. Grafik Gyroscope

Universitas Sumatera Utara

42

4.7 Pengujian Accelerometer.
Unutk mengetahui sensor ini dapat bekerja dengan baik, maka dilakukan
pengujian dengan memprogram mikrokontroller, dengan tujuan untuk memastikan
sensor dapat mendeteksi Accelerometer atau tidak. Program dapat dilihat sebagai
berikut:
#include
#include
MPU6050 mpu;
void setup()
{
Serial.begin(9600);
while(!mpu.begin(MPU6050_SCALE_2000DPS,
MPU6050_RANGE_2G))
{
delay(500);
}
}
void loop()
{
Vector normAccel = mpu.readNormalizeAccel();
Int

pitch=-(atan2(normAccel.XAxis,

sqrt(normAccel.

YAxis*normAccel.YAxis+normAccel.ZAxis*normAccel.ZAxis))*1
80.0)/M_PI;
Int roll=(atan2(normAccel.YAxis,normAccel.ZAxis)*180.0)
/M_PI;
Serial.print("DATA,");
Serial.print("TIME,");
Serial.print(pitch);
Serial.print(",");
Serial.print(roll);
Serial.println();
delay(100);
}

Universitas Sumatera Utara

43

Data dikirim menggunakan komunikasi serial, dan langsung di float ke
Microsoft excel dengan software PLX-DAQ, yang dirilis oleh parallax. Disini juga
terlihat hasil pembacaan sensor yang telah konversi data hasil pembacaan sensor ke
bentuk drajat Roll dan Pitch. Setelah program diterima sensor di digerakan kedepan
dan kebelakang, sehingga didapat data sebagai berikut:

Table 5
No

Pitch

Roll

waktu (s)

1

-18

-4

0.1

2

-16

-1

0.2

3

-17

-1

0.3

4

-12

1

0.4

5

-3

0

0.5

6

0

4

0.6

7

2

7

0.7

8

8

5

0.8

9

15

1

0.9

10

21

3

1

11

25

6

1.1

12

25

10

1.2

13

21

10

1.3

14

17

1

1.4

15

14

11

1.5

16

11

-1

1.6

17

1

-1

1.7

18

-6

5

1.8

19

-13

-1

1.9

20

-21

-5

2

21

-22

-4

2.1

22

-28

-4

2.2

23

-27

-5

2.3

24

-25

-2

2.4

25

-15

4

2.5

26

-13

8

2.6

27

-8

3

2.7

Universitas Sumatera Utara

44

28

-3

1

2.8

29

-2

0

2.9

30

-5

0

3

31

-1

3

3.1

32

-5

16

3.2

33

-6

23

3.3

34

0

24

3.4

35

1

27

3.5

36

2

33

3.6

37

-2

44

3.7

38

4

26

3.8

39

4

35

3.9

40

2

37

4

41

2

32

4.1

42

3

24

4.2

43

-4

35

4.3

44

-3

31

4.4

45

0

22

4.5

46

-4

18

4.6

47

-2

1

4.7

48

2

-5

4.8

49

-10

-2

4.9

60

Kemiringan

40
20
Rool
0
0

1

2

3

4

5

Pitch

-20
-40

waktu

Gambar 25. Grafik Accelerometer

Universitas Sumatera Utara

45

4.8 Pengujian Complamantary Filter

Filter ini digunakan untuk mengabungkan pembacaan gyroscope dan
accelerometer, filter ini dapat di jalankan dengan persamaan sebagai berikut:

CF= A * (f_angle + gyro * dt) + (1 - A) * acc;

(2)

dimana
dt

= 0,010

a

= 0,98

Penggabungan dan pengujian rumus didalam program, dapat dilihat seperti
program sebagai berikut:

#include
#include
MPU6050 mpu;
unsigned long timer = 0;
float timeStep = 0.01;
float roll_gyro = 0;
unsigned long preTime = 0;
float r_angle, f_angle, omega;
void setup()
{
Serial.begin(9600);
while(!mpu.begin(MPU6050_SCALE_2000DPS,
MPU6050_RANGE_2G))
{
delay(500);
}
mpu.calibrateGyro();
mpu.setThreshold(3);
}

void loop(){

Universitas Sumatera Utara

46

timer = millis();
Vector norm = mpu.readNormalizeGyro();
Vector normAccel = mpu.readNormalizeAccel();
int

roll_acc

=

(atan2(normAccel.YAxis,

normAccel.ZAxis)*180.0)/M_PI;
roll_gyro = roll_gyro + norm.XAxis * timeStep;
float dt = 0,010;
preTime = now;
float A = 0.8;
f_angle = A * (f_angle + roll_gyro * dt) + (1 - A) *
roll_acc;
Serial.print("DATA,");
Serial.print("TIME,");
Serial.print(roll_acc);
Serial.print(",");
Serial.print(roll_gyro);
Serial.print(",");
Serial.println(f_angle);
}

Ketika program dijalankan dan sensor digerakkan ke depan dan ke belakang
maka output sensor

gyroscope dan accelerometer akan digabungkan ke

complementary filter untuk mendapatkan sudut yang seharusnya, pembacaan sensor
accelerometer yang tidak stabil saat bergerak akan diredam oleh pembacaan
gyroscope yang peka terhadap sensor yang bergerak tetapi tidak stabil saat sensor
dalam keadaan diam, dengan demikian perlu digunakan compelementary filter untuk
menutupi kekurangan accelerometer dengan pembacaan gyrocope. berikut hasil
pembacaan complementary filter sebagai berikut:
Table 6
No

Accelerometer

Gyroscope

C. Filter

Waktu (s)

1

-24.18

30.55

-7.85

0.1

2

-22.66

54.57

-6.77

0.2

3

-14.32

70.66

-4.89

0.3

Universitas Sumatera Utara

47

4

-15.93

91.83

-2.63

0.4

5

-14.91

74.73

-0.8

0.5

6

-10.34

72.36

1

0.6

7

-8.08

70.21

2.7

0.7

8

-6.42

79.16

4.6

0.8

9

-5.78

48.75

5.6

0.9

10

-3.07

33.24

6.25

1

11

-0.20

69.23

7.9

1.1

12

2.22

88.66

10.26

1.2

13

7.80

99.43

12.96

1.3

14

14.84

113.55

16.2

1.4

15

12.60

92.64

18.83

1.5

16

17.08

115.47

22.11

1.6

17

23.28

131.4

26.2

1.7

18

24.66

157.72

30.7

1.8

19

28.05

126.86

34.5

1.9

20

-26.38

114.37

40.33

2

21

29.87

-78.69

14.17

2.1

22

29.38

-46.33

12.98

2.2

23

27.83

-49.32

12.86

2.3

24

27.62

-52.24

12.72

2.4

25

29.18

-73.58

11.64

2.5

26

23.59

-74.83

9.9

2.6

27

23.14

-72.47

8.24

2.7

28

18.02

-80.49

6.26

2.8

29

17.16

-80.95

4.32

2.9

30

10.62

-93.96

1.83

3

31

9.52

-112.57

-1.25

3.1

32

4.02

-147.95

-5.46

3.2

33

2.34

-150.27

-9.53

3.3

34

-2.96

-87.38

-11.96

3.4

35

-6.40

-108.49

-15.09

3.5

36

-4.91

-101.2

-17.97

3.6

37

-14.61

-86.69

-20.51

3.7

38

-16.49

-85.73

-23.14

3.8

39

-21.07

-72.14

-25.35

3.9

40

-22.28

-63.98

-27.31

4

Universitas Sumatera Utara

48

41

-24.95

-75.19

-29.53

4.1

42

-29.30

-73.45

-31.92

4.2

43

-29.54

66.69

-7.15

4.3

44

-26.12

70.2

-7.01

4.4

45

-27.98

84.76

-6.78

4.5

46

-26.12

93.45

-5.29

4.6

47

-21.48

105.34

-2.75

4.7

48

-17.85

92.11

-0.5

4.8

49

-18.52

89.24

1.49

4.9

50

-16.00

92.98

3.61

5

200
150

Kemiringan

100
50
cf

0
0

1

2

3

4

5

-50

gyro

-100

acc

-150
-200

Waktu

Gambar 26. Pengujian Complamantary Filter

Dapat kita perhatikan dari grafik diatas terlihat bahwa hasil complementary filter
lebih cenderung mengikuti pergerakan pembacaan accelerometer, dan gyroscope
lebih kepada meredam hasil pembacaan accelerometer. gyroscope menghasilkan
output yang lebih peka saat sensor begerak.
Output dari complementary filter juga terlihat lebih halus, karena pada dasarnya
complementary filter mengoreksi sudut sekarang dengan sudut sebelumnya secara
sedikit demi sedikit. Hasil data dengan perubahan yang halus sangat berpengaruh
kepada pergerakan sensor, gerakan robot yang halus dapat mengurangi noise
pergerakan robot itu sendiri sehinggal robot akan lebih stabil.

Universitas Sumatera Utara

49

4.9 Pengujian PID
Kontrol PID (Proportional Integral Derivative) merupakan kontroler mekanisme
umpan balik yang biasanya dipakai pada sistem kontrol industri. Sebuah kontroler
PID secara kontinyu menghitung nilai kesalahan sebagai beda antara setpoint yang
diinginkan dan variabel proses terukur. Kontroler mencoba untuk meminimalkan
nilai kesalahan setiap waktu dengan penyetelan variabel kontrol, dengan persamaan
sebagai berikut: .
(3)
Untuk diterpkan didalam bahasa pemrograman dengan prsamaan sebagai berikut

(4)
Untuk pengujian PID dapat dilakukan dengan memprogram mikrokontroller dengan
penggalan code program sebagai berikut.
void myPID(){
unsigned long now=millis();
float dt=(now-preTime)/1000.0;
preTime =now;
float K =0.8;
float A =K/(K+dt);
f_angle =A*(f_angle+omega*dt)+(1-A)*r_angle;
//complemtari filter
timeChange = (now - lastTime);
if(timeChange >= SampleTime){
Input = f_angle;
error = Input;
errSum += error * timeChange;
dErr = (error - lastErr) / timeChange;
Output = kp * error + ki * errSum + kd * dErr;
//control PID
LOutput = Output + Run_Speed + (Turn_Speed);

Universitas Sumatera Utara

50

ROutput = Output + Run_Speed - (Turn_Speed);
lastErr = error;
lastTime = now;
}
}
Dimana nilai Run_speed digunakan untuk mengontrol maju dan mundur, dan
nilai Turn_speed digunakan untuk belok kanan dan belok kiri pada robot. Program
diatas telah digabungkan complamantry filter dengan control PID, untuk
mendapatkan hasil yang lebih bagus.
Untuk pengontrolan maju, mundur dan belok, data dikirim melalui android
dengan aplikasi Bluetooth electronic, aplikasi tersebut dapat di desain sesuai dengan
keinginan dan data yang dikirim dapat diatus sesuai dengan keinginan, data yang di
kirim akan diterima mikrokontroller melalui Bluetooth.
Kesetabilan robot sangat bergantung dari keakuratan hasil pembacaan
complementary filter yang menajadi input PID dan penentuan konstanta P, I dan D.
pada rangkaian ini masih terjadi noice karena adanya arus balik dari motor.

Universitas Sumatera Utara

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan
1. Noice masih besar terjadi karena arus balik yang terjadi pada motor.
2. Robot hanya mempertahankan posisi seimbang maksimal pada sudut -50- 50,
karena torsi dan kecepatan motor tidak cukup untuk menyeimbangkan robot,
dan tidak cukup kuat menahan beban robot dengan kemiringan yang berlebih.
3. Robot hanya dapat seimbang di atas permukaan yang datar dan jika dikotrol
blum stabil

5.2 Saran
1. Sebaiknya menggunakan motor yang mempunyai torsi besar dan kecepatan
yang lebih, agar robot dapat mempertahankan posisi disaat robot dalam
keadaan miring dan juga encoder salah satu motor adalah SM - E048 buatan
japan, yang telah digunakan oleh József Fekete (2016). Motor memiliki
spesifikasi 12500 RPM, arus 3A dan torsi besar.
2. Untuk memperbaiki keseimbangan yang baik di perlukan algoritma yang
baik, contohnya dengan menggunakan kalman filter persamaan yang
digunakan untuk menggabungkan acceleration dengan gyroscop, persamaan
ini telah digunakan oleh Jatesada Borsub (2016).

Universitas Sumatera Utara