Anda di halaman 1dari 12

LAPORAN PRAKTIKUM MIKROPROSESOR

“MODUL 4”

Disusun oleh :

ASEP YONO
32222022

2A D3 TEKNIK TELEKOMUNIKASI

PROGRAM STUDI D3 TEKNIK TELEKOMUNIKASI

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI UJUNG PANDANG

MAKASSAR

2024
Analog Input-Output

1. Tujuan
- Mengidentifikasi pin analog
- Mengakses pin analog mikrokontroler
- Membuat program aplikasi analog input output

2. Dasar Teori
Pada beberapa sistim kontrol, pengolahan input dan output secara digital mungkin
sudah memenuhi kinerja yang dibutuhkan. Akan tetapi pada 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. Sinyal semacam ini disebut sebagai sinyal analog, sebagai contoh saat
menghubungkan sensor yang tegangan keluarannya bervariasi dalam dari 0 volt sampai 5
volt. Maka dalam hal ini Arduino sebagai kontroler harus mampu mengidentifikasi/mengolah
semua variasi tegangan keluaran dari sensor yang dihubungkan pada pin inputnya tersebut.
Begitu juga halnya saat diperlukan tegangan output yang membutuhkan nilai tegangan yang
bervariasi, seperti misalnya saat kita menginginkan mengatur tingkat keterangan sebuah led
atau berubahnya kecepatan sebuah motor. Arduino uno memiliki pin I/O untuk mengakses
atau menerima data yang berupa sinyal analog maupun sinyal digital.

2.1. Input Analog


Sinyal analog menjelaskan variabel fisik yang bervariasi terus menerus dan
berhubungan dengan variabel lain. Contoh dari sinyal analog yaitu intensitas cahaya LED
yang diatur arusnya melalui variasi supply tegangan LED tersebut, atau suhu di kamar
yang berjalan sering dengan berjalannya waktu.
Sinyal analog dapat mengambil nilai-nilai yang tak terbatas. Tetapi
pada mikrokontroler tidak dapat mewakili jumlah yang tak terbatas nilainya itu. Sehingga
yang harus dilakukan ketika ada sinyal analog yaitu sampling dengan cara mengubah sinyal
analog tersebut menjadi sinyal digital melalui pin khusus yaitu pin Analog ke Digital
Konversi (ADC). Hal ini berarti mikrokontroler memilih nilai-nilai tertentu pada sinyal
analog dan menggunakan serangkaian bit untuk mewakili nilai-nilai tersebut.
Pin analog (ADC) tersebut berfungsi sebagai pengubah sinyal analog menjadi output
digital sehingga mudah diolah dan dapat diukur. Pin analog (ADC) dapat mengukur nilai
tegangan yang masuk dengan kondisi normal range dari 0 – 5 Vdc yang akan dibandingkan
dengan tegangan refrensinya (Vref). Hal ini berguna saat akan mengukur output tegangan
dari suatu sensor yang terhubung serta dapat dimanfaatkan untuk keperluan pengondisian
program. Untuk membaca sinyal analog yang terhubung pada pin ADC di Software IDE
Arduino yaitu menggunakan fungsi analogRead([nomorPin]).
Arduino khusus 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 kenilai integer 0 sampai 1023, atau resolusinya adalah 5 volt/1024=4,9mV per unit
dimana itu berarti nilai digital yang dihasilkan akan berubah setiap perubahan 4,9mV dari
tegangan input analognya. Akan tetapi range input analog dan resolusi tersebut dapat dirubah
dengan fungsi analogReference().

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.
Parameternya meliputi:
• DEFAULT: default analog reference yaitu 5V (pada board Arduino 5V) atau 3,3 volt
(pada board Arduino 3,3 V)
• INTERNAL: built-in referensi internal tergantung pada jenis mikrokontroler yang
terpasang pada board Arduino, 1.1 volt pada ATmega168 atau ATmega328 dan 2.56
volt pada ATmega8.
• INTERNAL1V1: a built-in referensi internal 1.1V (khusus Arduino Mega)
• INTERNAL2V56: a built-in referensi internal 2,56V (khusus Arduino Mega)
• EXTERNAL: pilihan referensi yang tergantung pada tegangan yang diberikan pada pin
AREF(hanya dengan range tegangan 0 sampai 5V).
Perlu diperhatikan, jangan menggunakan referensi di bawah 0 volt atau lebih dari 5 volt dan
pastikan memilih referensi external sebelum perintah analogRead() jika menghubungkan pin
AREF dengan referensi eksternal karena jika tidak akan merusak mikrokontroler.

2.2. Output Analog


Output analog Arduino tidak dapat dihasilkan secara langsung, tetapi harus melewati
proses pengubahan output dari digital menjadi analog yang memerlukan fungsi komponen
Digital to Analog Converter. Tetapi fungsi tersebut tidak terdapat pada Arduino, sehingga
memerlukan modul eksternal (modul DAC) sebagai konverter sinyalnya. Di sisi lain, output
analog pada Arduino kebanyakan memiliki fitur PWM (Pulse Width Modulation). Contoh
apabila arduino yang dihubungkan dengan LED ingin mengendalikan intensitas cahaya LED
tersebut (nyala terang – redup mati).
Analog output yang terdapat di Arduino akan mengeluarkan sinyal analog dengan nilai
pwm / intensitas yang telah diprogram/setting. PWM seolah – olah dapat memanipulasi /
mengubah sinyal digital menjadi sinyal analog. Dengan cara Arduino mengubah keluaran
sinyal digital dari logika HIGH ke LOW atau sebaliknya dengan waktu yang telah ditentukan.
Lama waktu untuk logika HIGH dikatakan dengan istilah panjang pulsa atau pulse
width. Variasi perubahan nilai output analog dihasilkan dari perubahan panjang pulsa yang
telah diset dengan kondisi waktu tertentu serta dikerjakan secara berulang-ulang.
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 V sampai 5V. Akan
tetapi tidak demikian adanya, karena pin-pin Arduino yang difungsikan sebagai output
sebenarnya hanya mampu sebagai digital output yaitu hanya mampu mengeluarkan tegangan
0V atau 5V. Lalu bagaimana Arduino menangani Analog Output tersebut? Arduino
menggunakan cara Pulsa Wide Modulasi (PWM) atau modulasi lebar pulsa untuk
menghasilkan analog output yang dikehendaki. Metode PWM ini menggunakan pendekatan
perubahan lebar pulsa untuk menghasilkan nilai tegangan analog yang diinginkan. Pin yang
difungsikan sebagai PWM analog output akan mengeluarkan sinyal pulsa digital dengan
frekwensi 490 Hz dimana nilai tegangan analog diperoleh dengan merubah Duty Cycle atau
perbandingan lamanya pulsa HIGH terhadap periode (T) dari sinyal digital tersebut. Jika
pulsa HIGH muncul selama setengah dari periode sinyal maka akan menghasilkan duty cycle
5o% yang berarti sinyal analog yang dihasilkan sebesar setengah dari tegangan analog
maksimal yaitu 1/2 dari 5 V atau sama dengan 2,5 V begitu juga halnya jika pulsa HIGH
hanya seperempat bagian dari periode sinyal maka tegangan analog identik yang dihasilkan
adalah 1/4 dari 5V = 1,25 V dan seterusnya.

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
0Volt dan 255 untuk tegangan keluaran maksimum atau 5Volt.
3. Langkah kerja
3.1 Membuat program aplikasi input output analog secara langsung pada Arduino. Untuk
yang pertama menggunakan potensiometer yang dihubungkan pada analog pin 0 seperti
pada gambar berikut ini:

Pada latihan ini akan menampilkan nilai input analog yang dihasilkan pada serial monitor
dengan merubah posisi potensiometer. Sketchnya sebagai berikut:

int analogPin = 0; int val = 0;


void setup() { Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin);
//tampilkan pada serial monitor dalam desimal Serial.println(val,DEC);
//tampilkan pada serial monitor dalam biner Serial.println(val,BIN);
delay(1000); //refresh tampilan setiap 1 detik
}

Pada posisi potensio minimum akan menghasilkan nilai 0 dan posisi potensio maksimum
menghasilkan nilai 1023 atau 1111111111(biner).
3.2. Berikutnya membuat ptogram analog output dengan mengeluarkan sinyal analog ke pin 9
yang dihubungkan dengan resistor dan led seperti rangkaian berikut:

sketchnya adalah:

int kecerahan = 0;
int levelperubah = 5;//step perubahan kecerahan

void setup() {
Serial.begin(9600);
}

void loop() { analogWrite(9, kecerahan);


//tampilkan kecerahan di serial monitor Serial.println(kecerahan);
//perbaharui nilai kecerahan kecerahan = kecerahan +
levelperubah;
if (kecerahan == 0 || kecerahan == 255) {
//jika mencapai nilai batas levelperubah = -levelperubah ;
//berubah kenilai sebaliknya
}
delay(500);
}

Hasilnya kecerahan led akan berubah setiap 1/2 detik dengan step perubahan 5 digit,
setelah mencapai kecerahan maksimum (tampilan pada serial monitor 255) akan redup
kembali sampai led padam (tampilan pada serial monitor 0) dan akan terus berulang
kembali begitu seterusnya.
3.3. Kombinasikan analog input dari potensiometer untuk mengatur analog output kecerahan
dari LED, seperti gambar berikut:

Sketchnya sebagai berikut:

const int analogInPin = 0; // analog input pin analog 0 const int analogOutPin = 9;
// analog output pin 9 led

int sensorValue = 0; // variable input analog int


outputValue = 0; // variable output analog

void setup() {
// inisialisasi komunikasi serial pada 9600 bps: Serial.begin(9600);
}

void loop() {
// membaca nilai analog in: sensorValue =
analogRead(analogInPin);
// memetakan kedalam kisaran output analog: outputValue = map(sensorValue,
0, 1023, 0, 255);
// merubah nilai analog output: analogWrite(analogOutPin, outputValue);

// mencetak pada serial monitor: Serial.print("sensor = " );


Serial.print(sensorValue); Serial.print(" output = ");
Serial.println(outputValue);
// tunggu 20 milidetik sebelum pembacaan berikutnya delay(20);
}
Pada sketch di atas digunakan function “map()” untuk memetakan input analog yang
resolusinya 1024 ke output analog yang resolusinya hanya 256.
3.4. Buatlah program analog input menggunakan sensor suhu LM35 dengan algoritma
sebagai berikut:

- suhu <27 derajat, Led Hijau menyala


- suhu> 27 atau <30, Led Kuning menyala
- Suhu >30 atau <35 Led Merah menyala
- Suhu >35 Led Merah blink

Sensor LM35 mendeteksi suhu 1derajat celcius/10 mV

330R
APK-TECH | techno-apk.blogspot.com

LED-RED LED-YELLOW LED-GREEN


AREF
13
PB5/SCK
12
1 U1 RESET
PB4/MISO
11
~PB3/MOSI/OC2A 10
~ PB2/SS/OC1B
9
~ PB1/OC1A 8
27.0 PB0/ICP1/CLKO
ATMEGA328P-PU
1121

DIGITAL (~PWM)

7
ANALOG IN

PD7/AIN1
2 6
VOUT A0 PD6/AIN0 RXD
PC0/ADC0 5
A1 PD5/T1
PC1/ADC1 4
A2 PD4/T0/XCK TXD
PC2/ADC2 3
A3 PD3/INT1
3 LM35 PC3/ADC3 2
A4 PD2/INT0 RTS
PC4/ADC4/SDA 1
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD CTS

ARDUINO UNO R3

Contoh program

// Program untuk mengendalikan LED berdasarkan suhu menggunakan sensor LM35 dan
Arduino Uno

const int pinLM35 = A0; // Pin analog untuk sensor LM35

const int pinHijau = 2; // Pin untuk LED Hijau

const int pinKuning = 3; // Pin untuk LED Kuning

const int pinMerah = 4; // Pin untuk LED Merah

void setup() {

pinMode(pinHijau, OUTPUT);

pinMode(pinKuning, OUTPUT);

pinMode(pinMerah, OUTPUT);

Serial.begin(9600);

}
void loop() {

// Baca nilai analog dari sensor LM35

int adcValue = analogRead(pinLM35);

// Konversi nilai ADC ke tegangan dalam milivolt

float milliVolt = adcValue * (5000.0 / 1024.0);

// Konversi tegangan menjadi suhu dalam derajat Celsius

float suhuCelsius = milliVolt / 10.0;

// Atur LED berdasarkan suhu

if (suhuCelsius < 27) {

digitalWrite(pinHijau, HIGH);

digitalWrite(pinKuning, LOW);

digitalWrite(pinMerah, LOW);

} else if (27 <= suhuCelsius && suhuCelsius < 30) {

digitalWrite(pinHijau, LOW);

digitalWrite(pinKuning, HIGH);

digitalWrite(pinMerah, LOW);

} else if (30 <= suhuCelsius && suhuCelsius < 35) {

digitalWrite(pinHijau, LOW);

digitalWrite(pinKuning, LOW);

digitalWrite(pinMerah, HIGH);

} else {

digitalWrite(pinHijau, LOW);

digitalWrite(pinKuning, LOW);

// Blink LED Merah

blinkLED(pinMerah, 500); // Waktu nyala-mati LED Merah (ms)

}
// Tampilkan suhu di Serial Monitor

Serial.print("Suhu: ");

Serial.print(suhuCelsius);

Serial.println(" °C");

delay(1000);

// Fungsi untuk membuat LED berkedip

void blinkLED(int pin, int delayTime) {

digitalWrite(pin, HIGH);

delay(delayTime);

digitalWrite(pin, LOW);

delay(delayTime);

Suhu >35 Led Merah blink


suhu> 27 atau <30, Led Kuning menyala

suhu <27 derajat, Led Hijau menyala

Suhu >30 atau <35 Led Merah menyala


KESIMPULAN

Dalam percobaan ini, sensor suhu LM35 digunakan untuk mengukur suhu
lingkungan. Berdasarkan nilai suhu yang terbaca oleh sensor, LED dengan warna yang
berbeda akan menyala atau berkedip. Logika operasional dari sistem ini adalah sebagai
berikut:
1. Ketika suhu yang terdeteksi oleh sensor kurang dari 27°C, LED hijau akan menyala,
sementara LED kuning dan merah akan mati.
2. Jika suhu mencapai 27°C atau lebih, LED hijau akan mati, dan LED kuning akan
menyala, sedangkan LED merah tetap mati.
3. Saat suhu mencapai 30°C atau lebih tinggi, LED kuning akan mati, dan LED merah
akan menyala secara solid.
4. Namun, jika suhu terus meningkat hingga mencapai 35°C atau lebih, LED merah akan
mulai berkedip sebagai indikasi peringatan suhu yang sangat tinggi.
Dengan demikian, sistem ini memberikan indikasi visual tentang tingkat suhu
lingkungan menggunakan tiga warna LED yang berbeda: hijau untuk suhu rendah, kuning
untuk suhu sedang, dan merah untuk suhu tinggi, dengan kedipan LED merah sebagai
peringatan suhu yang ekstrem.

Anda mungkin juga menyukai