Puji dan syukur penyusun ucapkan kehadirat Allah SWT atas segala limpahan rahmat
dan karunia-Nya kepada penyusun, sehingga penyusun dapat menyelesaikan penyusunan
modul praktikum Mekatronika ini.
Modul Mekatronika terdiri dari modul yang menjelaskan bagaimana suatu komponen
mesin diperintah oleh suatu program . Setiap modul akan menjelaskan fungsi – fungsi
statement program .Pratikkan ini Penyusun menyadari bahwa dalam penyusunan ini masih
terdapat banyak kekurangan, oleh karena itu penyusun senantiasa mengharapkan saran
kritikan yang sifatnya membangun demi kesempurnaan modul ini.
Akhir kata, semoga modul praktikum Mektronika ini dapat bermanfaat dan menambah
pemahaman mahasiswa khususnya di Program Studi Teknik Mesin Universitas Bengkulu
terhadap aplikasi teknik digital.
Tim Penyusun
ii
DAFTAR ISI
1.4.2 Pecobaan LED dan Sensor LDR (Light Dependant Resistor) ...................................... 5
iv
TATA TERTIB PELAKSANAAN PRAKTIKUM
1. Sebelum melaksanakan praktikum, praktikan wajib menyerahkan “Laporan Awal
Praktikum” untuk setiap modul praktikum.
2. Praktikan wajib memakai baju berkerah.
3. Setiap kelompok harus membawa minimal 2 buah modul praktikum.
4. Praktikan diwajibkan hadir 10 menit lebih awal sesuai dengan jadwal pelaksanaan praktikum
untuk melakukan absensi dengan asisten.
5. Bagi praktikan yang melanggar poin 1-4 tidak diperkenankan mengikuti
praktikum.
6. Setiap kelompok harus mengisi blangko peminjaman peralatan praktikum.
7. Selama melaksanakan praktikum, praktikan dilarang :
a) Makan dan merokok.
b) Melakukan kegiatan selain kegiatan praktikum.
c) Mengaktifkan HP kecuali dibutuhkan.
8. Sebelum melaksanakan praktikum, praktikan harus memahami terlebih
dahulu prosedur percobaan dan rangkaian percobaan.
9. Setelah melaksanakan praktikum, peralatan praktikum harus dikembalikan
sesuai dengan jumlah dan jenis yang tertera pada blangko peminjaman
peralatan praktikum.
10. Setiap peralatan praktikum yang rusak dan atau hilang karena kesalahan
praktikan, harus diganti dan menjadi tanggung jawab praktikan.
Kontrak Nilai :
- Laporan Awal 10%
- Tugas Awal 5%
- Pre Test 5%
- Indeks Pemahaman 10%
- Post Test 5%
- Laporan Akhir 15%
- Laporan Kelompok 15%
- Responsi 20%
- Tugas Besar 15%
- Kehadiran Mutlak
v
MODUL 1
LED (Light Emitting Diode)
1.1 Tujuan
Setelah mengikuti praktikum ini, praktikan diharapkan mampu untuk :
1) Mengenal dan memahami fungsi dasar pemrograman Arduino.
2) Mengenal dan memahami fungsi dari komponen dasar elektronika LED.
3) Mampu membuat program untuk mengkontrol nyala LED dengan Arduino.
4) Mengamati keluaran data berupa nyala LED dari Arduino.
1.2 Dasar Teori
Arduino dikatakan sebagai sebuah platform dari physical computing yang
bersifat open source. Arduino tidak hanya sekedar sebuah alat pengembangan,
tetapi ia adalah kombinasi dari hardware, bahasa pemrograman dan Integrated
Development Environment (IDE) yang canggih. IDE adalah sebuah software
yang sangat berperan untuk menulis program, meng-compile menjadi kode biner
dan meng-upload ke dalam memori mikrokontroler. Ada banyak projek dan
alat- alat dikembangkan oleh akademisi dan profesional dengan menggunakan
Arduino, selain itu juga ada banyak modul- modul pendukung (sensor, tampilan,
penggerak dan sebagainya) yang dibuat oleh pihak lain untuk bisa disambungkan
dengan Arduino. Arduino berevolusi menjadi sebuah platform karena ia menjadi
pilihan dan acuan bagi banyak praktisi.
Blink adalah pelajaran pemrograman yang paling sederhana dari pelajaran
pemrogramanArduino. Seperti halnya mempelajari bahasa pemrograman baru,
maka pelajaran pertama adalah "Hello World" -- nah, blink an LED inilah
"Hello World" dari pemrograman Arduino.
Dengan blink kita dapat melakukan pengujian yang berfungsi untuk
mengetes apakah board arduino dapat berfungsi dengan baik atau tidak, selain
itu untuk menguji keterkiriman source code yang diupload pada board. Dalam
pengembangannya program blink juga digunakan sebagai kontrol dasar Light
Emiting Diode (LED).
1
LED adalah komponen yang dapat mengeluarkan emisi cahaya. LED
merupakan produk temuan lain setelah dioda. Strukturnya juga sama dengan
dioda, tetapi belakangan ditemukanbahwa elektron yang menerjam sambungan
P-N juga melepaskan energi berupa energi panas dan energi cahaya. Untuk
mendapatkan emisi cahaya pada semi konduktor, doping yang dipakai adalah
galium, arsenik, dan fosfor. Jenis doping yang berbeda menghasilkan warna
yang berbeda pula.
2
1.4 Langkah Percobaan
1.4.1 Percobaan Running LED
Disini output dari LED dapat diatur sesuai dengan listing dari program
yang dibuat. Output yang dikeluarkan dari rangkaian LED berupa hidup dan
nyalanya dari lampu LED tersebut.
1. Susun rangkaian seperti terlihat pada Gambar 1.4 berikut
3
void loop()
{
//LED1 yang ada di pin 7 menyala,LED lain di pin 8-9 mati
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(100); //kecepatan kedip 0,5 detik
//LED2 yang ada di pin 8 menyala,LED lain mati
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(100); //kecepatan kedip 0,5 detik
//LED3 yang ada di pin 9 menyala,LED lain mati
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(100); //kecepatan kedip 0,5 detik
//LED4 yang ada di pin 10 menyala,LED lain mati
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
delay(100); //kecepatan kedip 0,5 detik
//LED5 yang ada di pin 11 menyala,LED lain mati
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, HIGH);
delay(100); //kecepatan kedip 0,5 detik
}
4
1.4.2 Pecobaan LED dan Sensor LDR (Light Dependant Resistor)
Seperti pada percobaan sebelumnya, output dari LED dapat dilihat
menggunakan sensor LDR. LDR adalah jenis resistor yang nilainya berubah
seiring intensitas cahaya yang diterima oleh komponen tersebut. Biasa digunakan
sebagai detektor cahaya atau pengukur besaran konversi cahaya. Berikut langkah
percobaan rangakaian LED dan LDR
1. Susun rangkaian seperti terlihat pada Gambar 1.3 berikut
5
//Pengecekan nilai yang diterima sensor ldr <= 300
//jika kecil, LED hidup
if (ldrStatus <=300) {
digitalWrite(ledPin, HIGH); //led hidup
Serial.println("LDR is DARK, LED is ON");
}
else {
digitalWrite(ledPin, LOW); //led mati
Serial.println("---------------");
}
}
4. Compile dan upload program ke dalam Arduino board.
6
MODUL 2
INPUT/OUTPUT ARDUINO
2.1 Tujuan
Tujuan dari praktikum ini adalah :
1) Memahami prinsip kerja dari sebuah switch yang digunakan sebagai digital
input.
2) Menggunakan tombol push dengan input digital untuk mengubah sebuah
kondisi dari LED ( Light Emiting Diode).
3) Memahami frekuensi yang digunakan pada sebuah mikrokontroler untuk
menghasilkan sebuah nada.
4) Memahami prinsip kerja dari sensor ultrasonik sebagai input digital.
2.2 Dasar Teori
Arduino dikatakan sebagai sebuah platform dari physical computing yang
bersifat opensource. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi
ia adalah kombinasi dari hardware, bahasa pemrograman dan Integrated
Development Environment (IDE) yang canggih. IDE adalah sebuah software yang
sangat berperan untuk menulis program, meng-compile menjadikode biner dan meng-
upload ke dalam memori mikrokontroler. Switch (Saklar) adalah sebuahperangkat
elektronik yang digunakan untuk memutuskan jaringan listrik atau untuk
menghubungkannya. Jadi saklar pada dasarnya adalah alat penyambung atau pemutus
aliran listrik. Selain untuk jaringan listrik arus kuat, saklar berbentuk kecil juga
dipakai untuk alat komponen elektronika arus lemah. Alat ini befungsi sebagai
pemberi sinyal masukan pada rangkaian listrik, ketika / selama bagian knopnya
ditekan maka alat ini akan bekerja,sebaliknya ketika dilepas maka alat ini akan
berhenti bekerja.
Salah satu jenis switch yang sering digunakan adalah tactile switches seperti
yang terlihat pada Gambar 2.1. Fungsinya sama seperti switch pada umumnya,
namun komponen ini memiliki 4 kaki. Untuk menggunakan komponen tactile
switches harus dihubungkan secara bersilang A dan C atau B dan D.
7
Sensor ultrasonik tipe HCSR04 merupakan perangkat yang
digunakan untuk mengukur jarak dari suatu objek. Kisaran
jarak yang dapat diukur sekitar 2-450 cm. Sensor ini dapat dilihat pada Gambar
2.2
8
Push Button :
1. Hubungkan kaki + anoda LED dengan Resistor 1 ohm, kemudian
hubungkan ke PIN 3 PWM Arduino.
2. Hubungkan Push Button (pin A) ke Pin arduino PIN 3 PWM.
3. Hubungkan Push Button (pin B) dengan resistor 1k dan hubungkan ke Pin
arduino GND.
4. Hubungkan Push Button (pin C) ke Pin arduino 5V.
LED :
5. Hubungkan kaki Katoda (-) atau Short Leg pada LED ke Ground (GND)
6. Hubungkan kaki Anoda (+) atau Long Leg pada LED ke resistor 220 dan
hubungkan ke Pin Arduino PIN 12 PWM
7. Hubungkan Arduino dengan PC/Komputer dengan menggunakan Kabel
USB Arduino.
8. Masukan listing program ini ke Software compiler arduino.
int pinLed = 3; //Membuat variabel untuk LED
int pintombol = 4; // Membuat variabel untuk Tombol
void setup() {
Serial.begin (9600);
pinMode(pinLed, OUTPUT); // variabel pinLed menjadi output
pinMode(pintombol, INPUT_PULLUP); // variabel pinBtn menjadi
input
}
void loop() {
// variabel statusBtn menyimpan nilai dari hasil pembacaan
pinBtn
int statusBtn = digitalRead(pintombol);
// Ketika push button tidak ditekan nilainya HIGH/1
if(statusBtn == HIGH)
{
digitalWrite(pinLed, HIGH);
Serial.print("Hidup");
} else {
digitalWrite(pinLed, LOW);
Serial.print("Mati");
}
}
9
Berikutnya Compile dan Upload Program ke Arduino Board, perhatikan yang
terjadi, apakah sesuai dengan spesifikasi atau tidak.
2.4.2 Percobaan Making Sound
a) Percobaan Menggunakan Buzzer
10
void loop(){
while(digitalRead(bt)){
digitalWrite(buz, HIGH);
delayMicroseconds(nada[x]);
digitalWrite(buz, LOW);
delayMicroseconds(nada[x]);
if(digitalRead(bt) == 0){
if(x <109){
x++;
break;
}else{
x=0;
break;
}
}
}
}
3. Berikutnya compile dan upload program ke arduino Board.
b) Percobaan Menggunakan Buzzer dan Sensor Ultrasonik
// defines variables
long duration;
int distance;
11
int safetyDistance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
distance= duration*0.034/2;
safetyDistance = distance;
if (safetyDistance <= 5){
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, LOW);
}
Serial.println(distance);
}
12
MODUL 3
SEVEN SEGMENT
3.1 Tujuan Pratikum
Tujuan praktikum seven segment adalah :
1. Mahasiswa dapat mengetahui bagaimana mengouputkan karakter angka dan
huruf pada seven segment menggunakan arduino.
2. Mahasiswa dapat mengetahui bagaimana menggunakan decoder 7447 BCD to
seven segment.
3.2 Dasar Teori
Pada umumnya seven segment terdiri 7 buah led yang disusun membentuk
angka 8, dimana setiap segmentnya terdiri dari LED yang salah satu kaki terminal
lednya di jadikan satu atau yang disebut dengan common. Kaki yang dijadikan satu
/ common sendiri dibagi menjadi 2 macam yaitu kaki common anoda dan kaki
common cathoda. Skema dari 7 batang led tadi biasanya di tandai dengan huruf a -
g, sebagai berikut
13
Untuk memudahkan, maka setiap segmen tersebut diberi kode huruf
a,b,c,d,e,f,g, dan dp; seperti pada gambar di bawah ini.
14
3.6 Program Percobaan
Beriku langkah percobaan pada komponen seven segment :
A. Memeriksa LED
int a=8;
int b=9;
int c=11;
int d=12;
int e=13;
int f=7;
int g=6;
int dp=10;
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
}
void loop() {
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
}
B. Membuat Rotasi Angka dan Huruf
int a=8;
int b=9;
int c=11;
int d=12;
int e=13;
int f=7;
15
int g=6;
int dp=10;
void setup()
{
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
}
void loop() {
//angka 0
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH;
digitalWrite(dp,LOW;
//angka 1 delay(1000);
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
delay(1000);
//angka 2
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
16
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//angka 3
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//angka 4
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//angka 5
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//angka 6
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
17
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//angka 7
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
delay(1000);
//angka 8
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//angka 9
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
delay(1000);
//clear led
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
18
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,HIGH);
delay(1000);
//huruf a
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,HIGH);
delay(1000);
//huruf b
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,HIGH);
delay(1000);
//huruf c
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(dp,HIGH);
delay(1000);
//huruf d
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
19
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,HIGH);
delay(1000);
//huruf e
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,HIGH);
delay(1000);
//huruf f
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,HIGH);
delay(1000);
//clear
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,HIGH);
delay(1000);
}
20
MODUL 4
LIQUID CRYSTAL DISPLAY (LCD) 16X2 I2C
4.1 Tujuan Praktikum
Setelah mengikuti praktikum ini, praktikan diharapkan mampu untuk:
1. Mahasiswa mampu mengenal dan memahami dalam penerapan perangkat
arduino.
2. Mahasiswa dapat mengontrol dan manajemen tampilan Pada perangkat LCD
16x2 I2C
4.2 Dasar Teori
Dalam modul LCD (Liquid Cristal Display) 16x2 I2C terdapat
microcontroller yang berfungsi sebagai pengendali tampilan karakter LCD.
Microntroller pada suatu LCD dilengkapi dengan memori dan register. Memori
yang digunakan microcontroler internal LCD adalah : DDRAM (Display Data
Random Access Memory) merupakan memori tempat karakter yang akan
ditampilkan berada. CGRAM (Character Generator Random Access Memory)
merupakan memori untuk menggambarkan pola sebuah karakter dimana bentuk
dari karakter dapat diubah-ubah sesuai dengan keinginan. CGROM (Character
Generator Read Only Memory) merupakan memori untuk menggambarkan pola
sebuah karakter dimana pola tersebut merupakan karakter dasar yang sudah
ditentukan secara permanen oleh pabrikan pembuat LCD tersebut sehingga
pengguna tinggal mangambilnya sesuai alamat memorinya dan tidak dapat
merubah karakter dasar yang ada dalam CGROM. Register control yang terdapat
dalam suatu LCD diantaranya adalah. Register perintah yaitu register yang berisi
perintah-perintah dari mikrokontroler ke panel LCD pada saat proses penulisan
data atau tempat status dari panel LCD dapat dibaca pada saat pembacaan data.
Register data yaitu register untuk menuliskan atau membaca data dari atau
keDDRAM. Penulisan data pada register akan menempatkan data tersebut ke
DDRAM sesuai dengan alamat yang telah diatur sebelumnya. Pin, kaki atau jalur
input dan kontrol dalam suatu LCD diantaranya adalah : Pin data adalah jalur untuk
memberikan data karakter yang ingin ditampilkan menggunakan LCD dapat
dihubungkan dengan bus datadari rangkaian lain seperti mikrokontroler dengan
lebar data 8 bit. Pin RS (Register Select) berfungsi sebagai indikator atau yang
21
menentukan jenis data yang masuk, apakah data atau perintah. Logika low
menunjukan yang masuk adalah perintah, sedangkan logika high menunjukan data.
Pin R/W (Read Write) berfungsi sebagai instruksi pada modul jika low tulis data,
sedangkan high baca data. Pin E (Enable) digunakan untuk memegang data baik
masuk atau keluar. Pin VLCD berfungsi mengatur kecerahan tampilan (kontras)
dimana pin ini dihubungkan dengan trimpot 5 Kohm, jika tidak digunakan
dihubungkan ke ground, sedangkan tegangan catu daya ke LCD sebesar 5 Volt.
LCD 16x2 I2C dapat dilihat pada Gambar 4.1.
22
4.3 Alat dan Bahan
Alat dan bahan yang digunakan pada praktikum ini adalah :
1. Laptop/ PC yang telah terinstal IDE Arduino
2. Arduino
3. LCD 16x2 I2C
4. Kabel Jumper
5. Sensor LM35
4.4 Langkah Percobaan
4.4.1 Percobaan LCD 16x2 Membaca Temperatur
Sama seperti sebelumnya, LCD juga dapat menampilkan bacaan sesuai
dengan inputan dari sensor. Sensor yang digunakan percobaan ini yaitu LM35
untuk mendeteksi temperatur.
Langkah Percobaan :
1. Susun Rangkaian seperti pada Gambar 4.2
Gambar 4.4 Susunan Rangkaian Pada LCD 16x2 I2C dan LM35
2. Pasang kabel USB pada Arduino dengan port USB yang terdapat pada
labtop untukmengupload program.
3. Buka Arduino IDE, lalu ketikkan program berikut:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);//Atur alamat LCD ke 0x27
untuk tampilan 16 karakter dan 2 baris
#define sensor A1//Sensor LM35
byte degree[8] =
{
0b00011,
0b00011,
0b00000,
23
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};// Baris-baris ini untuk membuat tanda Derajat khusus
void setup() {
lcd.backlight();
Serial.begin(9600);
lcd.init();
lcd.createChar(1, degree);
lcd.setCursor(0,0);
lcd.print(" Digital ");
lcd.setCursor(0,1);
lcd.print(" Thermometer ");
delay(2000);
lcd.clear();
}
void loop()
{
/*---------Temperature-------*/
float reading=analogRead(sensor);
float temperature=reading*(5.0/1023.0)*100;
delay(10);
/*------Display Result------*/
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Temperature");
lcd.setCursor(4,1);
lcd.print(temperature);
lcd.write(1);
lcd.print("C");
delay(1000);
}
24
4.4.2 Pecobaan LCD 16x2 I2C
Para percobaan ini memanfaatkan LCD untuk m enampilkan
bacaan pada layar LCD itu sendiri .
Langkah Percobaan :
1. Susun Rangkaian seperti pada Gambar 4.2
25
lcd.noBacklight();//Lampu LCD Mati
delay(5000);
lcd.backlight();//
delay(50);
lcd.setCursor(0,0);
lcd.print("Mati ");
lcd.setCursor(0,1);
lcd.print("Pertama");
delay(3000);
lcd.clear();
delay(50);
lcd.backlight();
delay(500);
lcd.noBacklight();
delay(5000);
lcd.backlight();
lcd.setCursor(7,0);
lcd.print("Mati Lagi");
lcd.setCursor(11,1);
lcd.print("Kedua");
delay(3000);
lcd.clear();
}
4. Compile dan upload program ke dalam Arduino board.
5. Perhatikan dan amati pada rangkaian yang telah anda buat.
6. Buat program dengan menambahkan deklarasi baru pada program.
7. Ulangi langkah 4 dan 5.
26
MODUL 5
MOTOR SERVO
5.1 Tujuan
Tujuan dari praktikum ini adalah :
1) Mahasiswa mampu menggunakan fungsi motor servo dengan arduino.
2) Mahasiswa mampu mengetahui prinsip kerja dari motor servo.
5.2 Dasar Teori
Motor servo adalah sebuah perangkat sebagai aktuator putar (motor) yang
dirancang dengan sistem kontrol umpan balik loop tertutup (servo), sehingga dapat
di set-up atau di aturuntuk menentukan dan memastikan posisi sudut dari poros
output motor. Motor servo merupakan perangkat yang terdiri dari motor DC,
serangkaian gear, rangkaian kontrol dan potensiometer. Serangkaian gear yang
melekat pada poros motor DC akan memperlambat putaran poros dan
meningkatkan torsi motor servo, sedangkan potensiometer dengan perubahan
resistansinya saat motor berputar berfungsi sebagai penentu batas posisi putaran
poros motor servo.
Penggunaan sistem kontrol loop tertutup pada motor servo berguna untuk
mengontrol gerakan dan posisi akhir dari poros motor servo. Posisi poros output
akan dihasilkan oleh sensor, untuk mengetahui posisi poros sudah tepat seperti
yang di inginkan atau belum, dan jika belum, maka kontrol input akan mengirim
sinyal kendali untuk membuat posisi poros tersebut tepat pada posisi yang
diinginkan. Motor servo biasa digunakan dalam aplikasi- aplikasi di industri,
selain itu juga digunakan dalam berbagai aplikasi lain seperti pada mobil mainan
radio kontrol, robot, pesawat, dan lain sebagainya.
Ada dua jenis motor servo, yaitu motor servo AC dan DC. Motor servo AC
lebih dapat menangani arus yang tinggi atau beban berat, sehingga sering
diaplikasikan pada mesin- mesin industri. Sedangkan motor servo DC biasanya
lebih cocok untuk digunakan pada aplikasi-aplikasi yang lebih kecil. Dan bila
dibedakan menurut rotasinya, umumnya terdapat dua jenis motor servo yang dan
terdapat di pasaran, yaitu motor servo rotation 1800 dan servorotation continuous
3600.
27
1. Motor servo standard (servo rotation 1800) adalah jenis yang paling umum dari
motor servo, dimana putaran poros outputnya terbatas hanya 900 kearah kanan
dan 900 kearah kiri. Dengan kata lain total putarannya hanya setengah lingkaran
atau 1800.
2. Motor servo rotation continuous 3600 merupakan jenis motor servo yang
sebenarnya sama dengan jenis servo standard, hanya saja perputaran porosnya
tanpa batasan atau dengan kata lain dapat berputar terus, baik ke arah kanan
maupun kiri.
28
5.3 Peralatan
Peralatan yang diperlukan untuk praktikum motor servo adalah :
1) Laptop/ PC yang telah terinstal IDE Arduino
2) Motor Servo
3) Arduino Uno
4) Motor Servo
5) Kabel Jumper
6) Sensor Ultrasonik
7) Potensiometer
5.4 Langkah Percobaan
5.4.1 Percobaan Test Servo Dengan Potensiometer
1. Rangkaian percobaan seperti pada Gambar 5.2
29
int Hasilbaca=analogRead(Potensiometer);
Sudut=map(Hasilbaca,0 ,1023 , 0, 180);
servosaya.write(Hasilbaca);
Serial.println(Hasilbaca);
Serial.println(Sudut);
Serial.println("");
delay(15);
}
4. Lalu, klik compile untuk mengecek coding yang kita buat.
5. Coba perhatikan yang terjadi pada rangkaian, amati dan pahami.
5.4.2 Percobaan Servo Dengan Ultrasonic Sensor
1. Rangkaian percobaan seperti pada Gambar 5.3
30
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 10) {
Serial.println("the distance is less than 10");
servo.write(90);
delay(500);
}
else { servo.write(0);
}
if (distance > 60 || distance <= 0){ Serial.println("The
distance is more than 60");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}
4. Lalu, klik compile untuk mengecek coding yang kita buat.
5. Coba perhatikan yang terjadi pada rangkaian, amati dan pahami.
31
MODUL 6
MOTOR STEPPER
6.1 Tujuan Praktikum
Tujuan dari praktikum ini adalah :
1. Mahasiswa dapat mengetahui prinsip kerja dari motor stepper.
2. Mahasiswa mampu menggunakan motor stepper dengan menggunakan
mikrokontroler arduino.
3. Mahasiswa dapat memahami penerapan atau pengalikasian motor stepper
dalam dunia industri.
6.2 Dasar Teori
6.2.1 Motor Stepper 28BYJ-48
Motor stepper merupakan salah satu jenis motor yang banyak digunakan
sebagai aktuator. Perputaran dari motor stepper dapat diatur dengan menggunakan
mikroprosesor maupun mikrokontroler. Motor stepper tidak memiliki komutator
dan umumnya hanya memiliki kumparan pada bagian stator dan magnet permanen
(bahan fremagnetic) pada bagian rotor. Konstruksi tersebut menyebabkan motor
stepper dapat diatur posisinya pada posisi tertentu, misalnya searah jarum jam atau
berlawanan dengan arah jarum jam. Motor ini bergerak sesuai dengan
sudut step yang bisa bervariasi tergantung dari motor stepper yang digunakan.
Pada datasheet disebutkan motor stepper mempunyai stride angle sebesar
5.625 derajat. Artinya motor stepper membutuhkan 360/5.625 = 64 step untuk
melakukan 1 kali putaran. Ini dihitung setelah melalui gearbox yang ada pada
motor. Aslinya bisa lebih banyak lagi step yang dibutuhkan untuk satu kali
putaran, tergantung rasio gearbox nya. Beberapa motor stepper mempunyai stride
angle lebih kecil lagi, berarti motor stepper tersebut lebih bagus, karena bisa
dikendalikan ke posisi yang lebih presisi. Jumlah step yang diperlukan untuk satu
kali putaran juga bisa ditentukan melalui script. Memutar motor stepper lebih
rumit dibanding motor dc, karena memerlukan gelombang pulsa (pwm=pulse
width modulation) untuk menggerakkanya.
Motor Stepper 28BYJ-48 adalah motor stepper unipolar dengan tegangan
sebesar 5V DC, jumlah fase sebanyak 4, rasio variasi kecepatan 1/64, stride
angle 5,625 derajat/64 dan frekuensi 100 Hz, konsumsi arus sekitar 160mA untuk
32
setiap lilitan dan 200mA saat motor dijalankan dengan kecepatan maksimum
Motor ini memiliki banyak fitur yaitu :
1. Rotasi sudut dari motor proporsional terhadap input pulsa
2. Memiliki torsi penuh ketika lilitan diberi energi
3. Posisi yang presisi dan perpindahan yang dapat diulang (akurasi 5% dari
satu step dan error yang terjadi tidak akan di akumulasikan ke step yang
berikutnya).
4. Respon yang sangat baik untuk memulai, berhenti atau berbalik.
5. Sangat handal, karena tidak ada kontak dengan brushes pada motor.
6. Open loop control, membuat motor lebih sederhana dan lebih mudah dikontrol.
7. Memungkinkan untuk mendapatkan putaran sinkron pada kecepatan yang
sangat rendah.
8. Berbagai kecepatan putaran dapat direalisasikan karena kecepatannya
sebanding dengan frekuensi pulsa input.
Dibawah ini adalah Gambar 6.1 atau gambar schematics internal dari Motor
Stepper 28BYJ-48. Dapat kita lihat bahwa motor stepper unipolar memiliki
sebuah common dibagian tengah
33
ULN2003A adalah sebuah high-voltage (50 VDC) dan high-current (500
mA) Darlington Array Transistor. Setiap chip ULN2003A berisi 7 pasang NPN
Darlington. Rating arus pada pin collector sebuah Darlington sebesar 500
mA. Chip ini dapat di aplikasikan pada driver relay, driver lampu, logic
buffer dan lain lain. Berikut bentuk dan pin-pin dari Driver ULN2003A yang
dapat dilihat pada Gambar 6.2.
34
Gambar 6.3 Modul Bluetooth HC-05
6.3 Percobaan
Akan dilakukan 3 percobaan yaitu half-speed test, Clockwise-Counter
clockwise, dan Connect with Module Bluetooth.
6.3.1 Peralatan
Peralatan yang dibutuhkan pada praktikum ini adalah :
1. Laptop/PC yang telah ter-install Arduino IDE 1 Set
2. Arduino Uno 1 Buah
3. Motor Stepper 28BYJ-48 1 Buah
4. Driver ULN 2003A 1 Buah
5. Bread Board 1 Buah
6. Smartphone (Androrid) 1 Buah
7. Kabel Jumper Secukupnya
6.3.2 Langkah Percobaan
6.3.2.1 Percobaan 1 Half-Speed Test
1. Rangkai percobaan seperti pada Gambar 6.4
35
3. Setelah software terbuka, tulis program atau coding dibawah ini pada
layar kerja arduino
#include <AccelStepper.h>
#define HALFSTEP 8
36
#include <Stepper.h>
// Tentukan jumlah langkah yang diperlukan untuk satu kali
putaran:
const int stepsPerRevolution = 2048; //berputar 360 derajat
// Pengkabelan:
// Pin 8 ke IN1 pada driver
// Pin 9 ke IN2 pada driver
// Pin 10 ke IN3 pada driver
// Pin 11 ke IN4 pada driver
// Mebuat objek StepperKu, untuk mendefinisikan urutan
pengkabelan:
Stepper StepperKu = Stepper(stepsPerRevolution, 8, 10, 9,
11);
void setup() {
// Menentukan rpm = 10 rpm:
StepperKu.setSpeed(10);
// Komunikasi serial dengan baud rate 9600:
Serial.begin(9600);
}
void loop() {
// Stepper berputar 360 derajat satu arah:
Serial.println("Searah Jarum jam");
StepperKu.step(stepsPerRevolution);
delay(500);
// Stepper berputar 360 derajat ke arah sebaliknya:
Serial.println("Berlawanan Arah Jarum jam");
StepperKu.step(-stepsPerRevolution);
delay(500);
}
4. Lalu, Klik Compile untuk mengecek kebenaran dari coding yang telah
dibuat.
5. Klik Upload, untuk meng-upload coding yang telah dibuat ke Arduino.
6. Perhatikan yang terjadi pada rangkaian.
6.3.2.2 Percobaan 3 Connect With Bluetooth Module HC-05
1. Rangkai percobaan seperti pada Gambar 6.5
37
Gambar 6.5 Rangkaian Percobaan 3
2. Buka Software Arduino IDE untuk memulai pemograman.
3. Setelah software terbuka, tulis program atau coding dibawah ini pada layar
kerja Arduino
#include <AccelStepper.h>
#define HALFSTEP 8
#define motorPin1 8 // IN1 on ULN2003 ==> Blue on
28BYJ-48
#define motorPin2 9 // IN2 on ULN2004 ==> Pink on
28BYJ-48
#define motorPin3 10 // IN3 on ULN2003 ==> Yellow on
28BYJ-48
#define motorPin4 11 // IN4 on ULN2003 ==> Orange on
28BYJ-48
// NOTE: The sequence 1-3-2-4 is required for proper
sequencing of 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3,
motorPin2, motorPin4);
String myString = "";
boolean validCommand = false;
boolean justRun = false; // if True, indicates need
to run at constant speed
long mySteps = 2048; // Assuming a nominal 4096
steps per revolution
float mySpeed = 500.0;
char command;
void setup()
{
38
Serial.begin(9600);
Serial.println("Bluetooth is NOT connected");
Serial.println("Waiting for data");
stepper1.disableOutputs(); // disable
motor coils until needed
stepper1.setMaxSpeed(1000.0);
}
void loop()
{
validCommand = false;
readData(); // Read any available characters
from the serial input buffer
checkData(); // Check the input data string for
validity and extract the command
if (validCommand) // If the command string was valid
{
processCommand(); // Process command character and
change stepper motor behaviour
}
if (justRun)
{
stepper1.runSpeed(); // Keep running continuously at
predefined speed & direction
}
else
{
stepper1.run(); // Run until previously defined
endpoint is reached,
} // with previously defined
acceleration and final speed.
}
//-----------------------------------------------------------
--------------------------------
//
// Function to read available data from serial input buffer
//
void readData()
{
while ( Serial.available() ) // Read while there
39
are available characters
{
delay(3);
char c = Serial.read();
myString += c; // build the command
string
}
Serial.print(myString); // Output the full
command string - for debugging
}
//-----------------------------------------------------------
--------------------------------
//
// Function to check the input data string for validity and
extract the command character
//
void checkData()
{
// Is the input data string 4 characters long, starting
with sub-string "com" ?
if (( myString.length() == 4) &&
(myString.startsWith("com") ))
{
validCommand = true;
command = myString[3]; // Get the command
character
Serial.print(" command is ");
Serial.println(command);
}
else // input data string must contain at least 1
character, or we get stuck in a loop
if ( myString.length() > 0)
{
validCommand = false;
Serial.println(" command string is invalid");
}
myString = ""; // Clear the input
data string for next time
}
40
//-----------------------------------------------------------
--------------------------------
//
// Function to process command character and change stepper
motor behaviour
//
void processCommand()
{
justRun = false;
stepper1.enableOutputs(); // enable the motor
coils
switch (command)
{
case '0': // Stop immediately
{
Serial.println("STOP immediately");
stopNow();
break;
}
case '1': // move half turn clockwise, accelerating
& decelerating
{
Serial.println("step clockwise");
moveSteps(mySteps);
break;
}
case '2': // move half turn anticlockwise,
accelerating & decelerating
{
Serial.println("step anti-clockwise");
moveSteps(-mySteps);
break;
}
case '3': // run slow clockwise at Constant Speed,
no acceleration
{
Serial.println("run clockwise");
runAtSpeed(mySpeed);
41
break;
}
case '4': // run slow anti-clockwise at Constant
Speed, no acceleration
{
Serial.println("run anti-clockwise");
runAtSpeed(-mySpeed);
break;
}
case 'Z': // Bluetooth Disconnected; Stop
immediately
{
Serial.println("Bluetooth Disconnected; STOP
immediately");
stopNow();
break;
}
default: // command character does not match range
of valid commands
Serial.print(command);
Serial.println(" ....is not in valid command range");
break;
}
}
//-----------------------------------------------------------
--------------------------------
//
// Function to setup the stepper motor to move a defined
number of steps
//
void moveSteps(long steps)
{
stepper1.setAcceleration(10.0);
stepper1.setSpeed(5.0);
stepper1.setCurrentPosition(0);
stepper1.moveTo(steps);
}
//-----------------------------------------------------------
--------------------------------
42
//
// Function to set up the stepper motor to run at a defined
speed
//
void runAtSpeed(float cSpeed)
{
stepper1.setSpeed(cSpeed);
justRun = true;
}
// Function to stop the stepper motor immediately and disable
the motor coils
//
void stopNow()
{
stepper1.stop();
stepper1.setCurrentPosition(0);
stepper1.run(); // stop & set commands only
"active" after a call to "run"
stepper1.disableOutputs(); // disable the motor coils
to conserve power
}
4. Lalu, Klik Compile untuk mengecek kebenaran dari coding yang telah
dibuat.
5. Sebelum di upload, lepas terlebih dahulu kabel jumper yang terkoneksi ke pin
TX dan RX pada arduino.
6. Kemudian, Klik Upload, untuk meng-upload coding yang telah dibuat ke
Arduino.
7. Setelah coding berhasil ter-upload pasangkan kembali kabel jumper pada TX
dan RX yang dilepas sebelumnya.
8. Pasang aplikasi pada smartphone (android) yaitu aplikasi BlueCore Tech
Curtain Control.
9. Buka aplikasi tersebut dan koneksikan smartphone dengan module Bluetooth
HC-05 dengan mengklik logo Bluetooth pada layar kerja aplikasi tersebut.
10. Pilih nama dari module Bluetooth yang digunakan.
11. Lakukan control pada motor stepper sesuai yang diinginkan menggunakan
aplikasi tersebut.
43
MODUL 7
LOAD CELL
7.1 Tujuan Praktikum
Tujuan dari praktikum ini adalah :
1. Mahasiswa dapat mengetahui prinsip kerja dari load cell.
2. Mahasiswa mampu menggunakan load cell dengan menggunakan
mikrokontroler arduino.
7.2 Dasar Teori
Sensor load cell merupakan transduser yang bekerja sebagai konversi dari berat
benda menjadi elektrik, perubahan ini terjadi karena terdapat resistansi pada strain
gauge. Pada satu sensor loadcell memiliki 4 susunan strain. Sensor ini memiliki
nilai konduktansinya berbanding lurus dengan gaya/beban yang diterima dan
bersifat resistif. Jika loadcell tidak ada beban besar resistansi nya akan bernilai
sama pada setiap sisinya, tetapi ketika loadcell memiliki beban maka nilai
resistansinya akan menjadi tidak seimbang. Proses inilah yang dimanfaatkan untuk
mengukur berat pada suatu benda.
44
Gambar 7.2 Rangkaian Sederhana Loadcell
7.3 Peralatan
Peralatan yang diperlukan untuk praktikum motor servo adalah :
1) Laptop/ PC yang telah terinstal IDE Arduino
2) Loadcell
3) HX711 Module
4) LCD+I2C Module
5) Kabel jumper
7.4 Langkah Percobaan
1. Rangkai percobaan seperti pada Gambar 7.1
45
#include<EEPROM.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int HX711_dout = 12;
const int HX711_sck = 13;
HX711_ADC LoadCell(HX711_dout, HX711_sck);
const int calVal_eepromAdress = 0;
long t;
void setup() {
Serial.begin(9600);
lcd.init();
pinMode(HX711_dout, INPUT);
delay(10);
Serial.println();
Serial.println("Memulai...");
lcd.init();
LoadCell.begin();
lcd.setCursor(0,0);
lcd.print("Brt: ");
lcd.setCursor(12,0);
lcd.print("0");
lcd.setCursor(14,0);
lcd.print("gr");
float calibrationValue;
calibrationValue = 696.0;
EEPROM.get(calVal_eepromAdress, calibrationValue);
long stabilizingtime = 2000;
boolean _tare = true;
LoadCell.start(stabilizingtime, _tare);
if (LoadCell.getTareTimeoutFlag()) {
Serial.println("Timeout, cek kabel MCU>HX711 pastikan sudah
tepat");
while (1);
}
else {
LoadCell.setCalFactor(calibrationValue);
Serial.println("Startup selesai");
}
46
}
void loop() {
static boolean newDataReady = 0;
const int serialPrintInterval = 0;
if (LoadCell.update()) newDataReady = true;
if (newDataReady) {
if (millis() > t + serialPrintInterval) {
int i = LoadCell.getData();
if(i<0){
i=0;
}
tampil(i);
newDataReady = 0;
t = millis();
}
}
if(Serial.available() > 0){
float i;
char inByte = Serial.read();
if (inByte == 't') LoadCell.tareNoDelay();
}
if (LoadCell.getTareStatus() == true) {
Serial.println("Tara selesai");
}
}
47
lcd.setCursor(8,0);
}else if(j<1000000 && j>=100000){
lcd.setCursor(7,0);
}else if(j<10000000 && j>=1000000){
lcd.setCursor(6,0);
}else if(j<100000000 && j>=10000000){
lcd.setCursor(5,0);
}else{
lcd.setCursor(4,0);
}
lcd.print(j);
}
4. Lalu, Klik Compile untuk mengecek kebenaran dari coding yang telah dibuat.
5. Klik Upload, untuk meng-upload coding yang telah dibuat ke Arduino
Perhatikan yang terjadi pada rangkaian.
48
LAMPIRAN
49
Lembar Asistensi
Nama :
NPM :
Kelompok :
Tanggal Keterangan Paraf
Nama Asisten
NPM
50
TUGAS AWAL
PRAKTIKUM MEKATRONIKA
MODUL
Disusun Oleh :
Nama :
NPM :
Kelompok :
51
LAPORAN AWAL
PRAKTIKUM MEKATRONIKA
MODUL
Disusun Oleh :
Nama :
NPM :
Kelompok :
Rekan Kerja : 1.
2.
3. dst
Dosen Pengampu : Agus Suandi, S.T., M.Eng.
52
LAPORAN AKHIR
PRAKTIKUM MEKATRONIKA
MODUL
Disusun Oleh :
Nama :
NPM :
Kelompok :
Rekan Kerja : 1.
2.
3. dst
Dosen Pengampu : Agus Suandi, S.T., M.Eng.
53
LAPORAN KELOMPOK
PRAKTIKUM MEKATRONIKA
Disusun Oleh :
Kelompok :
Dosen Pengampu : Agus Suandi, S.T., M.Eng.
Tanggal Penyerahan :
54