LAPORAN PRAKTIKUM
Mata kuliah Mikrokontroler
Praktikum 1 : Digital Input/Output
Praktikum 2 : Analog Input / Output
Praktikum 3 : Statement Control
Praktikum 3 : Statement Control
Praktikum 4 :Sensor Interfacing
Nama
|
:
|
I Putu Angga Aditya
|
Nim
|
:
|
1415313016
|
Dosen Pengampu
|
:
|
I Nyoman Kusuma Wardana, M.Sc
|
Program Studi Teknik Listrik
Jurusan Teknik Elektro
Politeknik Negeri Bali
2016
DIGITAL Input/Output
(Praktikum 1)
I.Dasar Teori
Digital Input/Output(Digital I/O) adalah komponen yang palling mendasar dari sebuah MCU(Main Control Unit) yang menghubungkan mikrokontroler dengan dunia luar. Antarmuka dengan dunia luar dikenal dengan istital PORT. Port adalah titik dimana data inernal dari chip MCU keluar atau data eksternal berjalan masuk.
Digital IO bisa digunakan untuk menyalakan LED ,atau men-drive sebuah transistor untuk keperluan pengontrolan dengan arus yang lebih tinggi. Digital I/O juga bisa digunakan untuk membaca data dari luar(sebaagai input),misalnya untuk membaca status tombol,switch,atau membaca data dari keypad.
Contoh dari pengaplikasian digital I/O yaitu sebagai berikut:
A. Blink
Pada contoh di bawah ini akan memperlihatkan hal paling sederhana yang bisa dilakukan dengan menggunakan Arduino untuk melihat output/keluaran fisik, yaitu menghidup-matikan LED.
Hardware/perangkat keras yang diperlukan
· Arduino
· LED
B. Button
Pushbutton atau switch menghubungkan dua titik pada rangkaian ketika kita menekannya. Pada contoh di bawah ini kita akan menyalakan LED bawaan pada pin 13 dengan menggunakan button/tombol.
II.Alat Dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Board Arduino Uno R3
|
1
|
2
|
Modul/Rangkaian Percobaan
|
1
|
5
|
Kabel USB
|
1
|
6
|
Kabel jumper
|
Secukupnya
|
III. Langkah Percobaan
III.1 Percobaan Led Blink
A.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Blink dan Arduino
Pin Arduino
|
Komponen
|
13
|
Led
|
Gambar 1. Skematik Percobaan blink
Gambar 2. Breadboard Percobaan Blink
B.Pemrograman pada Arduino diperlihatkan sebagai berikut:
a.Blink
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
III.2 Push Button ON/OFF
A.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada tabel berikut:
Pin Arduino
|
Komponen
|
2
|
Button
|
13
|
Led
|
b) Button
Gambar 1. Skematik Percobaan Button
Gambar 2. Breadboard Percobaan Button
B. Pemrograman pada Arduino diperlihatkan sebagai berikut:
b.Push Button ON/OFF
int buttonPin = 2;
int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
III.3 Kombinasi Multi Pushbutton Dan Multi Led
A.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Multi Pushbutton Dan Multi Led
Pin Arduino
|
Komponen
|
2
|
Button 1
|
3
|
Button 2
|
13
|
Led 1
|
12
|
Led 2
|
11
|
Led 3
|
10
|
Led 4
|
Gambar 1. Skematik Percobaan Multi Pushbutton Dan Multi Led
Gambar 2. Breadboard Percobaan Multi Pushbutton Dan Multi Led
B. Pemrograman pada Arduino diperlihatkan sebagai berikut:
C. Multi Pushbutton Dan Multi Led
int buttonPin1 = 2;
int buttonPin2 = 3;
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
}
void loop() {
digitalRead(buttonPin1);
digitalRead(buttonPin2);
if (buttonPin1 == HIGH) {
// jalan kanan
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
delay (1000);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
delay (1000);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,HIGH);
digitalWrite(ledPin4,LOW);
delay (1000);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,HIGH);
delay (1000);
}
else {
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
delay (1000);
}
}
IV.Hasil Dan Pembahasan
Pada percobaan kali ini menggunakan pin-pin digital dari arduino, dimana pin- pin tersebut akan dipakai baik sebagai input maupun output. Seperti percobaan diatas Pushbutton dipakai sebagai input dan Led dipakai sebagai output. Dan jika kita ingin membuat pin digital arduino sebagai input, maka pada program di arduino.ide kita dapat menulis “ pinMode (pushbutton1,INPUT); “ , dan untuk membaca hasil inputan dari pushbuttonnya dapat digunakan “digitalRead (pushbutton); “ . Kemudian jika kita ingin membuat pin arduino sebagai output maka untuk pin mode kita dapat tuliskan “pinMode (Led1,OUTPUT); “
ANALOG Input/Output
(Praktikum 2)
I. Dasar Teori
Sinyal Analog adalah suatu kondisi tertentu ada kemungkinan dihadapkan pada kondisi input dan output yang membutuhkan besaran yang berubah-ubah dengan nilai yang kontinyu dan tidak lagi hanya dengan dua keadaan seperti halnya sinyal digital.
Sebagai contoh saat menghubungkan sensor yang tegangan keluarannya bervariasi dalam kisaran dari 0 volt sampai 5 volt.
· Analog Input
Arduino khususnya menyediakan 6 kanal(8 kanal pada model mini dan nano,dan 16 pada model mega)untuk difungsikan sebagai analog input.
Analog ke digital converternya menggunakan resolusi 10 bit yang berarti range nilai analog dari 0 volt sampai 5 volt akan dirubah ke nilai integer 0 sampai 1023.
Perintah yang digunakan untuk fungsi analog input ini adalah:
1.analogRead(pin) berfungsi untuk membaca nilai analog pada input pin yang akan menghasilkan nilai integer antara 0-1023
2.analogReference(parameter) berfungsi untuk menentukan referensi yang digunakan
· Analog Output
Secara teori suatu analog output akan mengeluarkan output tegangan bervariasi sesuai dengan nilai yang dikehendaki,maka seharusnya pin output analog Arduino seharusnya mampu mengeluarkan tegangan output dengan kisaran tegangan dari 0 volt sampai 5 volt.arduino menggunakan cara pulse wide modulasi(PWM) atau modulasi lebar pulsa untuk menghasilkan analog output yang dikehendaki.Metode ini menggunakan pendekatan perubahan lebar pulsa untuk menghasilkan nilai tegangan analog yang diinginkan.
Perintah yang digunakan untuk output analog adalah analogWrite(pin,value),dimana:
· Pin:nomor pin Arduino yang akan digunakan sebagai analog output
· Value:nilai duty cycle yang diinginkan dengan nilai 0-255,yang berarti nilai 0 untuk 0 volt dan 255 untuk tegangan keluaran maksimum atau 5 volt.
II.Alat Dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Arduino Uno R3
|
1
|
2
|
Kabel USB
|
1
|
3
|
Modul/Rangkaian Percobaan
|
1
|
4
|
Kabel jumper
|
Secukupnya
|
III. Langkah Percobaan
III.1 Percobaan Input Potensiometer
a.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Potensiometer
Pin Arduino
|
Komponen
|
A0
|
Potensiometer
|
Gambar 1. Skematik Percobaan Input Potensiometer
B. Pemrograman pada Arduino diperlihatkan sebagai berikut:
b.Input Potensiometer
int sensorPin=A0;
int sensorValue=0;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue=analogRead(sensorPin);
int newValue=map(sensorValue,0,1023,0,100);
Serial.println(newValue);
delay(100);
}
III.2 Percobaan Input Potensiometer Out Led
a.Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada tabel berikut:
Koneksi Konfigurasi Input Potensiometer Out Led
Pin Arduino
|
Komponen
|
A0
|
Potensiometer
|
13
|
Led
|
Gambar 2. Breadboard Percobaan Input Potensiometer Out Led
B. Pemrograman pada Arduino diperlihatkan sebagai berikut:
b.Input Potensiometer Out Led
int led = 13
int pinPot = A0;
int potVal = 0;
void setup() {
pinMode(led,OUTPUT);
}
void loop() {
potVal=analogRead(pinPot);
potVal=map(potVal,0,1023,0,255);//ubah nilai (0-1023) menjadi (0-255)
analogWrite(led,potVal);
analogWrite(led,potVal);
}
IV.Hasil dan Pembahasan
Pada percobaan kali ini menggunakan pin-pin analog dari arduino yaitu dari pin A0 sampai dengan pin A5, dimana pin- pin tersebut akan dipakai sebagai analog input. Seperti percobaan diatas Potensiometer dipakai sebagai input dan Led dipakai sebagai output. Dan jika kita ingin membuat pin analog arduino sebagai input, maka pada program di arduino.ide kita dapat menulis “ pinMode (Potensiometer,INPUT); “ , dan untuk membaca hasil inputan dari potensiometer dapat digunakan “analogRead (Potensiometer); “ dan “int Val;” dipakai untuk menyimpan nilai konversi analog ke digital. Kemudian “potVal=map(potVal,0,1023,0,255);” dipakai untuk mengubah nilai dari (0-1023) menjadi (0-255). Dan jika kita ingin mengatur nyala
STATEMENT CONTROL
(Praktikum 3)
I. Dasar Teori
Statement Control atau Pengendalian digunakan untuk mengambil suatu keputusan atau memilih bagian program yang akan dikerjakansesuai dengan kondisi atau syarat yang di berikan.Statement-statement diatas memerlukan suatu kondisi atau syarat sebagai dasar pengambilan keputusan.Salah satu kondisi yang umum digunakan adalah berupa keadaan benar atau salah,0 atau 1.
Ketika menyelesaikan masalah,tidak hanya satu kasus yang dapat ditemui,namun ada banyak,kadang kala menemui beberapa kasus.Ada beberapa format yang berbeda untuk setiap kasus ketika diimplementasikan di algoritma pemrograman.
Ada 2 jenis statement control yaitu antara lain:
a) If
If merupakan salah satu struktur pemilihan yang akan mengeksekusi statement jika memenuhi kondisi dan jika tidak maka akan diabaikan.if ini bisa dibagi menjadi beberapa struktur ,yaitu:
1. If
Struktur if yaitu hanya akan memberikan pilihan jika kondisi bernilai benar.
2. If else
Struktur if yaitu memberikan pilihan untuk kondisi yang bernilai salah.
Statement looping adalah suatu proses yang melakukan statement-statement dalam sebuah program secara terus menerus sampai terdapat kondisi untuk menghentikannya.
Ada tiga jenis statement looping yaitu:
a) for
Struktur for adalah pengulangan yang digunakan untuk melakukan pengulangan yang telah diketahui banyaknya
b) while
Struktur while adalah pengulangan yang melakukan pengecekan kondisi diawal blok struktur
c) do-while
Struktur do-while sama halnya dengan struktur while,tetapi pada struktur do-while ini pengecekan kondisi dilakukan diakhir.
II.Alat Dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Arduino Uno R3
|
1
|
2
|
Kabel USB
|
1
|
3
|
Modul
|
1
|
4
|
Kabel jumper
|
Secukupnya
|
III. Langkah Percobaan
A. Percobaan For Control (Kombinasi berdasarkan button yang ditekan)nyala Led
III.1 Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada table berikut:
A. Pemrograman pada Arduino diperlihatkan sebagai berikut:
a. For Control (Kombinasi berdasarkan button yang ditekan)nyala Led
int tombol1=3;
int tombol2=4;
int tombol3=5;
int tombol4=6;
int led1=7;
int led2=8;
int led3=9;
int led4=10;
void setup() {
pinMode (tombol1,INPUT);
pinMode (tombol2,INPUT);
pinMode (tombol3,INPUT);
pinMode (tombol4,INPUT);
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
}
void loop() {
if (digitalRead(tombol1)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
else if (digitalRead(tombol2)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
else if (digitalRead(tombol3)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
}
else if (digitalRead(tombol4)==LOW)
{digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
}
delay (30);
}
IV. Hasil dan Pembahasan
Pada praktikum kali ini menggunakan fungsi if-else dimana program akan berjalan ketika kondisinya terpenuhi, dan ketika kondisi pertama tidak terpenuhi maka program akan mencari kondisi yang lain, kemudian jika kondisinya terpenuhi program akan terus berjalan. Dalam hal ini program akan memeriksa kondisi dari pushbutton yang ditekan. Ketika pushbutton 1 ditekan maka hanya satu Led yang akan menyala, kemudian ketika pushbutton 2 ditekan maka dua Led yang akan menyala, terus ketika pushbutton 3 ditekan maka tiga Led yang akan menyala, terakhir ketika pushbutton 4 ditekan maka empat Led akan menyala.
SENSOR INTERFACING
(Praktikum 4)
I. Dasar Teori
Interface atau dalam istilah Indonesianya Antar Muka dapat diartikan sebagai sebuah titik, di mana dua komponen atau benda berbeda bertemu. Dalam hubungannya dengan perangkat lunak, interface dapat diartikan sebagai sarana atau medium atau sistem operasi yang digunakan untuk menghubungkan antara perangkat mikroprosesor agar dapat berkomunikasi dengan pengguna (user). Sedangkan pada konteks perangkat keras interface berarti komponen elektronika yang menghubungkan atau mengkomunikasikan prosesor dengan komponen atau perangkat lain dalam suatu sistem. Dalam praktikum kali ini saya akan mempraktekan tentang interfacing arduino dengan sensor. Dan untuk menampilkan hasil pembacaan dari sensor yang dipakai saya akan mengggunakan sebuah LCD.
Pertama saya akan bahas mengenai sensor. Sensor adalah jenis transduser (mengubah suatu energi menjadi energi yang lain) seperti mengubah variasi mekanis, magnetis, panas, sinar dan kimia menjadi tegangan dan arus listrik. Ada banyak sensor yang ada, namun pada praktikum kali ini saya akan menggunakan sensor Flowmeter (sensor aliran) dan sensor suhu (DS18B20).
Flowmeter merupakan alat yang berfungsi untuk mengukur kecepatan aliran dan volume fluida liquid maupun gas. Kerja dari flowmeter ini yaitu fluida berupa gas menggerakkan kincir yang dihubungkan dengan motor sehingga saat kincir berputar maka motor juga ikut berputar dan dapat menghasilkan ggl induksi. Pengkondisi sinyal membuat sinyal tegangan ggl induksi dari motor dapat terbaca oleh arduino, lalu LCD dapat manampilkan hasil pengukuran dari flow meter tersebut.
Keterangan:
Pada gambar sensor flowmeter diatas untuk babel berwarna merah untuk VCC, kemudian kabel yang berwarna hitam untuk grunding (GND), dan kabel berwarna kuning untuk data.
DS1820 adalah sensor suhu yang dikeluarkan oleh Dallas Semiconductor. Untuk membacanya menggunakan protokol 1 wire communication. Dimana hanya ada tiga kabel yang terdiri dari +5V, GND dan DQ (Data Input/Output). Keunggulan dari DS1820 adalah, output berupa data digital dengan nilai ketelitian 0,5 derajat Celcius sehingga mempermudah pembacaan oleh mikrokontroller.
Gambar 2. Sensor DS18B20
Dan komponen yang dipakai untuk menampilkan hasil pembacaan sensor yaitu LCD. LCD atau Liquid Crystal Display adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. Dan pada percobaan kali ini saya menggunakan LCD 16x2 yang artinya LCD tersebut terdiri dari 16 kolom dan 2 baris karakter (tulisan).
II. Alat dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Arduino Uno R3
|
1
|
2
|
Modul /Rangkaian percobaan
|
1
|
3
|
Kabel USB
|
1
|
4
|
Sensor Suhu (
|
1
|
5
|
Sensor Aliran (Flow Meter)
|
1
|
6
|
Kabel jumper
|
Secukupnya
|
III. Langkah Percobaan
III.1 Percobaan Interfacing Arduino Dan Sensor
a. Koneksi Hardware
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada table berikut:
Dengan menggunakan breadboard, koneksikan pin-pin ke Arduino dengan konfigurasi seperti pada table berikut:
Gambar 1. Skematik Percobaan Interfacing Sensor Dan Arduino
A. Pemrograman pada Arduino diperlihatkan sebagai berikut:
a. Percobaan Interfacing Sensor Dan Arduino
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 6);
volatile int flow_frequency; // Measures flow sensor pulses
unsigned int l_hour; // Calculated litres/hour
unsigned char flowsensor = 2; // Sensor Input
unsigned long currentTime;
unsigned long cloopTime;
void flow () // Interrupt function
{
flow_frequency++;
}
void setup()
{
pinMode(flowsensor, INPUT);
digitalWrite(flowsensor, HIGH); // Optional Internal Pull-Up
Serial.begin(9600);
attachInterrupt(0, flow, RISING); // Setup Interrupt
sei(); // Enable interrupts
currentTime = millis();
cloopTime = currentTime;
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("SUHU: BELUM ADA");
}
void loop ()
{
currentTime = millis();
// Every second, calculate and print litres/hour
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime; // Updates cloopTime
// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hour
flow_frequency =0; // Reset Counter
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("Flow: ");
lcd.print(l_hour); // Print litres/hour
lcd.setCursor(12, 1);
lcd.print("L/H");
//lcd.clear();
}
}
IV. Hasil dan Pembahasan
Pada praktikum kali ini saya belajar tentang interfacing sensor dengan arduino, dimana pada praktikum ini sensor akan terhubung dengan arduino sehingga sensor dapat mengirim data hasil pengukuran suhu dan aliran kemudian data tersebut diterima oleh arduino untuk seterusnya ditampilkan pada LCD. Pada program untuk menampilkan hasil pembacaan sensor pada LCD dapat dituliskan ‘’ lcd.print ( “ Flow: ” ) ; ‘’ . Kemudian program untuk mengatur letak penampilan tulisan ( hasil pembacaan sensor ) yaitu ‘’ lcd.setCursor (0,1); ‘’ . maksud dari lcd.setCursor (0,1); ini adalah kita akan menulis di LCD pada number colom ke 0, number baris ke 1.
daftar pustaka:
www.kusumawardana.web.id
Tidak ada komentar:
Posting Komentar