Anda di halaman 1dari 19

MODUL 3

Sensor dan Aktuator

1. Pendahuluan
1.1 Pengenalan
Dalam modul ini Anda akan belajar tentang bagaimana mengintegrasikan
sensor dan actuator untuk sebuah perangkat mekatronika sederhana. Terdapat
beberapa perangkat sensor dan actuator yang akan dibahas dalam modul ini,
antara lain perangkat sensor ultrasonic dan perangkat motor servo.

1.2 Konsep dan target capaian studi


Konsep yang akan digunakan pada modul ini adalah sebagai berikut :
1. Duty Cycle
2. Library Arduino
3. Pernyataan kondisi else-if

Setelah menyelesaikan modul ini, anda diharapkan memiliki kemampuan


dan pemahaman mengenai:
1. Bagaimana menggunakan sensor ultrasonic
2. Bagaimana mengkontrol motor servo
3. Bagaimana mengintegrasikan sensor dan actuator bersama

2. Sirkuit 3A: Motor Servo


2. 1 Komponen
Komponen yang digunakan pada sirkuit ini adalah :
1. Potensiometer
2. Motor servo

Penjelasan mengenai komponen :


1. Motor Servo
Motor servo adalah sebuah perangkat atau aktuator putar (motor) yang
dirancang dengan sistem kontrol umpan balik loop tertutup (servo), sehingga
dapat di set-up atau di atur untuk menentukan dan memastikan posisi sudut dari
poros output motor. Motor DC biasa memiliki dua kabel. Ketika
menghubungkan kabel ke daya, motor akan berputar. Disisi lain Motor servo
memiliki tiga kabel yaitu satu untuk daya, satu untuk ground dan satu untuk
sinyal. Ketika Anda mengirim sinyal yang tepat melalui kabel sinyal, servo
akan bergerak ke sudut tertentu dan tetap di sana. Servo pada umumnya
berotasi pada rentang 0 hingga 180 °.

Pin Description

White Signal - PWM In

Red Power (5V)

Black Ground (GND)

2.2 Konsep
1. Duty Cycle
Pulse Width Modulation (PWM) yang tersedia pada mikrokontroler adalah
salah satu cara yang digunakan untuk mengontrol sinyal servo. Ketika berbicara
tentang berapa lama sinyal PWM aktif, ini disebut sebagai Duty Cycle. Duty
Cycle diukur dalam persentase. Persentase Duty Cycle secara khusus
menjelaskan persentase waktu sinyal digital menyala selama interval atau
periode waktu. Variasi dalam Duty Cycle memberitahu servo ke posisi sudut
mana untuk shaft dari motor servo harus bergerak.

2. Library Arduino
Menulis kode sinyal PWM yang tepat ke servo akan memakan waktu dan
akan membutuhkan lebih banyak pengetahuan tentang servo. Untungnya,
Arduino IDE memiliki ratusan paket kode bawaan dan juga yang dibangun oleh
para pengguna yang dikumpulkan dalam sebuah library (perpustakaan). Salah
satu perpustakaan bawaan yang dimiliki Arduino IDE adalah Perpustakaan
Servo. Perpustakaan Servo memungkinkan kita untuk mengontrol servo hanya
dengan beberapa baris kode.
Untuk menggunakan salah satu paket kode Arduino bawaan, yang harus Anda
lakukan adalah "memasukkan" sebuah tautan ke file tajuknya yang disebut
sebagai file header. File header adalah file kode yang lebih kecil yang berisi
definisi untuk semua fungsi yang digunakan di perpustakaan itu. Dengan
menambahkan tautan ke file header di kode Anda, Anda mengaktifkan kode
untuk menggunakan semua fungsi perpustakaan itu. Untuk menggunakan
Perpustakaan Servo, anda perlu menambahkan baris berikut ke bagian atas
program Anda.
#include <Servo.h>

3. Pernyataan kondisi else-if


Dalam night-light circuit hanya memungkinkan menggunakan code perintah
if/else dimana saat dijalankan salah satu kode memiliki nilai yang benar dan
salah satu kode memiliki nilai yang salah. Dalam modul ini akan dijelaskan
bagaimana jika memiliki lebih dari 2 kemungkinan. Sebagai contoh:
1) Jika (If) jaraknya kurang dari 10, buat LED RGB berwarna merah.
2) Lain jika (Else If) jaraknya lebih dari 10 tetapi kurang dari 20, jadikan LED
RGB berwarna kuning.
3) Lain (Else) membuat LED RGB hijau.

*Jika ingin menggunakan lebih dari 3 pernyataan dapat menggunakan lebih


banyak Lain Jika (Else If)

2.3 Rangkaian
Rangkaian akan tampak seperti gambar dibawah.
2.4 Kode Program
Kode program dibawah dapat ditulis pada jendela kerja Arduino IDE.
#include <Servo.h> //memasukan perpustakaan servo

int potPosition; // variabel ini akan menyimpan posisi potensi


ometer
int servoPosition; //servo akan bergerak pada posisi ini

Servo myservo; //membuat objek servo


void setup() {
myservo.attach(9); //memberitahu objekservo bahwa servo terhubun
g ke pin 9

void loop() {
potPosition = analogRead(A0); //menggunakan analog
baca untuk menentukan posisi potensio meter (0-1023)

servoPosition = map(potPosition, 0,1023,20,160); // ubah angka potens


iometer ke posisi servo dari 20-160
//Note: its best to
avoid driving the little SIK servos all the
//way to 0 or 180 de
grees it can cause the motor to jitter, which is bad for the servo.

myservo.write(servoPosition); //pindahkan servo k


e posisi 10 derajat
}
Program Overview
1. Baca posisi Potensiometer
2. Konversikan nilai potensiometer (0-1023) ke sudut (20--160).
3. Ubah servo untuk pergi ke sudut yang diinginkan.

Deskripsi Kode :
Kode Deskripsi

Menggunakan #include perintah ini menambahkan perpustakaan ke program Arduino


Perpustakaan: Anda. Setelah Anda memasukkan perpustakaan, Anda dapat
#include <Servo.h> menggunakan perintah di perpustakaan di program Anda. Baris ini
menambahkan perpustakaan Servo.

Membuat Objek Servo perintah ini menciptakan objek servo baru dan memberikan nama
Servo: padanya, myServo dalam kasus ini. Jika Anda membuat lebih dari satu
Servo myServo; objek servo, Anda harus memberi mereka nama yang berbeda.

Memasang Servo: .attach() Metode memberitahu objek servo yang menempelkan kabel
myServo.attach(9); sinyal servo-nya. Ini akan mengirim sinyal posisi ke pin ini. Dalam sketsa
ini, pin 9 digunakan. Ingatlah untuk hanya menggunakan pin digital yang
mampu PWM.

Pemetaan:
map(potPosition, Seperti yang ditunjukkan pada sirkuit sebelumnya, nilai pin analog pada
0,1023,20,160); mikrokontroler Anda bervariasi dari 0-1023. Namun, bagaimana jika kita
ingin nilai-nilai itu mengendalikan motor servo yang hanya menerima nilai
dari 0-180? Jawabannya adalah menggunakan fungsi peta.
Fungsi map() mengambil rentang nilai dan menghasilkan rentang nilai
yang berbeda yang dapat mengandung nilai lebih atau kurang dari
aslinya. Dalam hal ini, kami mengambil rentang 0-1023 dan
memetakannya ke kisaran 20-160.

Servo Write: .write() Metode memindahkan servo ke sudut yang ditentukan. Dalam
myServo.write(90); contoh ini, servo sedang diperintahkan untuk pergi ke sudut 90.

2.5 Pemecahan masalah ( Troubleshooting)


Masalah Solusi

Servo tidak Periksa kabel pada servo Anda. Pastikan bahwa kabel merah pada kabel
bergerak servo terhubung ke 5V, kabel hitam terhubung ke GND dan kabel sinyal putih
terhubung ke pin 9.

Servo Berkedut Meskipun servos ini seharusnya bergerak dari 0 hingga 180 derajat, kadang-
kadang mengirimnya ke titik ekstrem dari jangkauannya menyebabkan
mereka bergerak-gerak (servo berusaha bergerak lebih jauh daripada yang
bisa). Pastikan Anda tidak memberi tahu servo untuk bergerak di luar kisaran
20-160 derajat.
LAPORAN PRAKTIKUM MEKATRONIKA MODUL 3A
Serahkan lembar laporan praktikum ini pada asisten segera setelah praktikum tiap
modul selesai

NAMA PRAKTIKAN :

KELOMPOK :

TANGGAL PRAKTIKUM :

(1). Kode perintah apa yang diubah saat ingin membalik putaran servo terhadap
potensiometer?

(2). Kode apa yang anda gunakan untuk memperbesar rasio putaran potensiometer
terhadap pergerakan servo?
(3). Tuliskan kode jika anda ganti potensiometer dengan sensor cahaya!
3 Sirkuit 3B : Sensor Jarak

3.1 Komponen
Komponen yang digunakan pada sirkuit ini adalah :
1. RGB LED
2. Kabel jumper
3. Resistor 330 Ω
4. Sensor jarak

Penjelasan mengenai komponen :


1. Sensor jarak ultrasonic
Sensor jarak bekerja dengan mengirimkan pulsa cahaya atau suara keluar
dari pemancar, lalu menentukan berapa lama waktu yang dibutuhkan sinyal
untuk memantul suatu objek dan kembali ke penerima (seperti sonar).
Beberapa sensor menggunakan cahaya inframerah, beberapa menggunakan
laser, dan beberapa seperti HC-SR04 yang termasuk dalam kit yang akan
digunakan memanfaatkan suara ultrasonic.

Pin Description

VCC Power (5V)

Trig Trigger Pulse Input: Sends bursts of ultrasound at 40kHz.

Echo Echo Pulse Output: Receives echo signal. Range is calculated by


the proportion of trigger signal sent and echo signal received.

GND Ground (0V)


3.2 Rangkaian

Diagram sirkuit dapat dilihat pada gambar dibawah.

Tabel Hookup
Component RedBoard Breadboard Breadboard Breadboard Breadboard

Jumper Wire 5V 5V Rail ( + )

Jumper Wire GND GND Rail ( - )

RGB LED A25 (RED) A24 (GND) A23 (GREEN) A22 (BLUE)

330Ω Resistor E22 F22


(orange, orange, brown)

330Ω Resistor E23 F23


(orange, orange, brown)

330Ω Resistor E25 F25


(orange, orange, brown)

Jumper Wire E24 GND Rail ( - )

Jumper Wire Digital Pin 3 J25

Jumper Wire Digital Pin 5 J23

Jumper Wire Digital Pin 6 J22

Distance Sensor A3 (Vcc) A4 (Trig) A5 (Echo) A6 (GND)

Jumper Wire Digital Pin 11 E4 (Trig)

Jumper Wire Digital Pin 12 E5 (Echo)

Jumper Wire E3 5V Rail ( + )

Jumper Wire E6 GND Rail ( - )


3.3 Kode Program
const int trigPin = 11; //hubungkan pin dengan sensor jarak
const int echoPin = 12; //hubungkan pin gema pada sensor jarak
const int redPin = 3; //pin untuk mengontrol led warna merah
const int greenPin = 5; //pin untuk mengontrol led warna hijau
const int bluePin = 6; //pin untuk mengontrol led warna biru
float distance = 0; //menyimpan jarak yang diukur pada sensor

void setup()
{
Serial.begin (9600); //atur koneksi dengan komputer

pinMode(trigPin, OUTPUT); //pin output berupa pulse listrik


pinMode(echoPin, INPUT); //pin gema akan mengatur durasi pulse yang dating
dari sensor jarak

//Seting output RBG LED


pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}

void loop() {
distance = getDistance(); //Variabel yang digunakan untuk menyimpan jarak

Serial.print(distance); //print the distance that was measured


Serial.println(" in"); //print units after the distance

if(distance <= 10){ //jika jarak dekat

//lampu LED akan Merah


analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);

} else if(10 < distance && distance < 20){ //jika jarajk medium

//led akan berwarna kuning


analogWrite(redPin, 255);
analogWrite(greenPin, 50);
analogWrite(bluePin, 0);

} else{ //jika jarak jauh

//led akan berwarna hijau


analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
}

delay(50); //tunda selama 50ms setelah pembacaan


}

//------------------FUNCTIONS-------------------------------

// KEMBALI JARAK YANG DIUKUR DENGAN SENSOR JARAK HC-SR04


float getDistance()
{
float echoTime; // variabel untuk menyimpan waktu yang diper
lukan agar ping memantul dari suatu objek
float calculatedDistance; // variabel untuk menyimpan jarak yang dihit
ung dari waktu gema
// mengirimkan pulsa ultrasonik yang panjangnya 10 ms
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

echoTime = pulseIn(echoPin, HIGH); //menggunakan pulsa untuk menentukan b


erapa lama waktu yg dibutuhkan
//pulse untuk mengembalikan sensor

calculatedDistance = echoTime / 148.0; //mengitung jarak yang dipantulkan (se


tengah waktu pentalan dikalikan dengan kecepatan suara)

return calculatedDistance; // kirim kembali jarak yang dihitung


}

Deskripsi Kode
Kode Deskripsi

Variabel Float : Variabel float, kependekan dari angka floating-point, mirip


float echoTime; dengan bilangan bulat kecuali dapat mewakili angka yang
mengandung titik desimal. Mengapung bagus untuk
merepresentasikan nilai yang perlu lebih presisi daripada
int. Mengapung memungkinkan kita untuk mengukur jarak
yang tepat seperti 9,33 inci, bukan hanya 9 inci.

Pernyataan Else if: pernyataan Else if memungkinkan Anda menggabungkan


if(logic statement){ lebih dari satu pernyataan logika. Arduino akan menguji
code to run if logic setiap pernyataan logika secara berurutan; jika ada yang
statement benar itu akan menjalankan kode di bagian itu dan
kemudian melewati semua bagian kode lainnya dalam
is true }
pernyataan if.
else if(second logic
statement){
code to run if the second
logic
statement is true }
else(default logic
statement){
code to run if neither of
the first
two statements are true }

Fungsi User-Defined: Fungsi ini memberi tahu sensor jarak untuk mengirimkan
getDistance(); bentuk gelombang ultrasonik, mengukur waktu yang
diperlukan untuk memantul kembali ke sensor, lalu
menghitung jarak berdasarkan kecepatan suara.
Perhitungan ini didasarkan pada informasi yang ditemukan
di sensor jarak datasheet.

3.4 Troubleshooting
Masalah Solusi

Warna LED RGB tidak Periksa koneksi untuk kawat dan resistor yang terhubung
berfungsi atau ada ke setiap kaki LED. Pastikan LED RGB dimasukkan dalam
warna yang hilang orientasi yang benar.

Sensor jarak Buka monitor serial di komputer Anda. Anda akan melihat
sepertinya tidak aliran jarak yang dicetak di monitor. Jika mereka semua
berfungsi membaca 0 atau melompat-lompat, maka periksa kabel
pada sensor Anda.

Sensor jarak masih Polusi suara ultrasonik akan mengganggu pembacaan


tidak berfungsi sensor jarak Anda. Jika Anda mengarahkan dua sensor
jarak satu sama lain, mereka akan membingungkan satu
sama lain. Beberapa sistem pendingin udara juga dapat
mengeluarkan suara dalam kisaran ultrasonik. Coba
arahkan sensor Anda dari sensor jarak lain atau ubah ke
lokasi lain.
LAPORAN PRAKTIKUM MEKATRONIKA MODUL 3B
Serahkan lembar laporan praktikum ini pada asisten segera setelah praktikum tiap
modul selesai

NAMA PRAKTIKAN :

KELOMPOK :

TANGGAL PRAKTIKUM :

(1). Tuliskan kode sehingga nilai dalam pernyataan logika sehingga LED RGB
berubah warna pada jarak yang berbeda

(2). Coba edit kode sehingga sensor jarak menghasilkan satuan panjang
sentimeter
(3). Tuliskan kode jika terdapat 4 variasi jarak (0-10cm, 10-20cm, 20-30cm, dan
diatas 30cm) dengan kode warna masing-masing merah, biru, jingga, hijau!
4. Sirkuit 3C : Alarm Gerak

4.1 Komponen
Komponen yang digunakan pada sirkuit ini adalah :
1. RGB LED
2. Piezo Buzzer
3. Resistor 330 Ω
4. Motor Servo
5. Kabel jumper (15 buah )

4.2 Rangkaian

4.3 Kode Program


#include <Servo.h> //memasukan perpustakaan servo

const int trigPin = 11; //koneksikan triger pin dengan sensor jarak
const int echoPin = 12; //koneksikan echo pin dengan sensor jarak

const int redPin = 3; //pin untuk mengontrol led warna merah


const int greenPin = 5; //pin untuk mengontrol led warna hijau
const int bluePin = 6; //pin untuk mengontrol led warna hijau

const int buzzerPin = 10; //pin untuk mengatur buzzer

float distance = 0; // menyimpan jarak yang diukur oleh sensor jar


ak
Servo myservo; //membuat servo objek
void setup()
{
Serial.begin (9600); // mengatur koneksi serial dengan komputer
pinMode(trigPin, OUTPUT); //output triger pin yaitu pulse listrik
pinMode(echoPin, INPUT); //pin echo yang digunakan untuk input berupa pulse

//pengatur RGB Led


pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);

pinMode(buzzerPin, OUTPUT); //mengatur buzzer untuk output


myservo.attach(9); //pin 9 untuk mengatur servo

void loop() {
distance = getDistance(); // variabel untuk menyimpan jarak yang diukur oleh
sensor
Serial.print(distance)*2.54; // cetak jarak yang diukur
Serial.println(" cm"); // unit cetak setelah jarak
if(distance <= 10){ //if the object is close

//mengatur rgb warna merah


analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);

//kode ini untuk menggerakkan servo dan alarm


tone(buzzerPin, 272); //buzz pada buzzer pin
myservo.write(45); //servo bergerak 45 derajat
delay(100); //tunggu 100 milliseconds

noTone(buzzerPin); //matikan buzzer


myservo.write(135); // servo bergerak 135 degrees
delay(100); //tunggu 100 milliseconds

} else if(10 < distance && distance < 20){ //jika objek dengan jarak medium

//membuat rgb warna kuning


analogWrite(redPin, 255);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);

} else{ //jika jarak jauh

//membuat RGB LED warna hijau


analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
}

delay(50); //tunggu 50ms setelah bacaan


}

//------------------FUNCTIONS-------------------------------

// KEMBALI JARAK YANG DIUKUR DENGAN SENSOR JARAK HC-SR04


float getDistance()
{
float echoTime; // variabel untuk menyimpan waktu yang diper
lukan agar ping memantul dari suatu objek
float calculatedDistance; // variabel untuk menyimpan jarak yang dihit
ung dari waktu gema
// mengirimkan pulsa ultrasonik yang panjangnya 10 ms
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

echoTime = pulseIn(echoPin, HIGH); // mengirimkan pulsa ultrasonik yang p


anjangnya 10 ms
// pulsa untuk memantul kembali ke sen
sor

calculatedDistance = echoTime / 148.0; // menghitung jarak objek yang memantu


lkan (setengah waktu pentalan dikalikan dengan kecepatan suara)
return calculatedDistance; // kirim kembali jarak yang dihitung
}

Deskripsi Kode
Kode Deskripsi

Constants: const int Konstanta adalah variabel yang telah ditandai sebagai "hanya-baca"
trigPin = 11; dan tidak dapat mengubah nilainya saat program berjalan. Konstanta
sangat bagus untuk mendeklarasikan variabel nomor pin yang tidak
akan berubah sepanjang program.

No Tone Function: Di sirkuit 2A Anda membuat lagu menggunakan buzzer dan fungsi
noTone(pin_number); nada, tetapi Anda memberi fungsi nada tiga parameter: nomor pin,
frekuensi, dan durasi. Anda dapat meninggalkan parameter ketiga,
dan nada akan diputar sampai Anda mengubahnya atau
mematikannya. noTone () mematikan pin yang telah diaktifkan
dengan perintah nada.
4.4 Troubleshooting
Masalah Solusi

Warna LED RGB tidak Periksa koneksi untuk kawat dan resistor yang terhubung ke setiap
berfungsi atau ada warna kaki LED. Pastikan LED RGB dimasukkan dalam orientasi yang
yang hilang benar.

Sensor jarak sepertinya Buka Serial Monitor di komputer Anda. Anda akan melihat aliran jarak
tidak berfungsi yang dicetak di monitor. Jika mereka semua membaca 0 atau
melompat-lompat, maka periksa kabel pada sensor Anda.

Sensor jarak masih tidak Polusi suara ultrasonik akan mengganggu pembacaan sensor jarak
berfungsi Anda. Jika Anda mengarahkan dua sensor jarak satu sama lain,
mereka akan membingungkan satu sama lain. Beberapa sistem
pendingin udara juga dapat mengeluarkan suara dalam kisaran
ultrasonik. Coba arahkan sensor Anda dari sensor jarak lain atau
ubah ke lokasi lain.

Servo tidak berfungsi Pastikan semua kabel servo Anda terhubung. Pastikan bahwa kabel
hitam terhubung ke rel negatif dan kabel merah terhubung ke rail
positif. Pastikan Anda menggunakan pin digital yang mampu PWM.

Munculan terlalu banyak Dua baris kode yang melewati sudut ke motor servo adalah
atau tidak cukup myservo.write(45); dan myservo.write(135);. Coba ubah
nilai sudut ini untuk menyempurnakan mekanisme Anda.
LAPORAN PRAKTIKUM MEKATRONIKA MODUL 3C
Serahkan lembar laporan praktikum ini pada asisten segera setelah praktikum tiap
modul selesai

NAMA PRAKTIKAN :

KELOMPOK :

TANGGAL PRAKTIKUM :

(1). Tuliskan kode sehingga alarm berbunyi dari jarak yang lebih jauh atau lebih
dekat

Anda mungkin juga menyukai