Tutorial Program Arduino : Input Analog


6:04 AM |


Selamat datang di blog Cael-Two, kali ini saya akan membahas tata cara pemrograman Arduino untuk menggunakan masukan analog.Tentunya anda harus menyiapkan alat dan bahan seperti di bawah ini.
 
PERALATAN :
1.    Komputer               : 1 set
2.    Arduino Uno          : 1 pcs
3.    Kabel USB tipe B  : 1 pcs
4.    Project board          : 1 pcs
5.    Kabel jumper          : 1 set
6.    Potensiometer 10K : 3 pcs
7.    LCD 2x16              : 1 pcs


PERCOBAAN :
3.1 Analog Input dengan Tegangan Referensi Internal (1,1 Volt)
Pada percobaan kali ini akan dibuat program untuk mengkonversi nilai tegangan analog dari potensiometer menjadi nilai digital. Data hasil konversi akan ditampilkan pada LCD 2x16. Tegangan referensi ADC yang digunakan adalah tegangan refrensi internal yang besarnya adalah 1,1 volt.


Prosedur :
1.    Rangkaialah rangkaian pada Gambar 3.1
Gambar 3.1 Rangkaian Percobaan 3.1
2.    Tuliskan sintaks program di bawah ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.

#include 
LiquidCrystal lcd(2,3,4,5,6,7);
void  setup()  {
lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0);
lcd.print("ADC Example  on  A0");
analogReference(INTERNAL);
pinMode(A0,INPUT);
}
void  loop()  {
unsigned  int  dataADC  =  analogRead(A0);
lcd.setCursor(0,1);
lcd.print("Value=  ");
lcd.print(dataADC);
delay(500);
}


Tugas dan Pertanyaan :
1.    Putarlah potensiometer sehingga terjadi perubahan tegangan dari 0 volt sampai 1.5 volt dengan rentan perubahan 0.5 volt. Amati data yang ditampilkan pada LCD, kemudian isilah Tabel 3.1 !
 Tabel 3.1 Perbandingan data hasil perhitungan dan data pada LCD

2.    Jelaskan fungsi tiap baris dari sintaks program pada percobaan 3.1 !
#include <LiquidCrystal.h>//Pemanggilan library untuk LCD
//Menginisialisasikan pin LCD yang di pakai ke Library LCD
LiquidCrystal lcd(2,3,4,5,6,7);

void setup(){
  lcd.begin(16,2);//Men-set jumla baris dan kolom yang di gunakan
  lcd.clear();//Meng-clear baris dan kolom pada LCD dari karakter apapun
  lcd.setCursor(0,0);//Men-set kursor ke baris 0, kolom 0
  lcd.print("ADC Example on A0");//Mengirimkan text ke LCD
  analogReference(INTERNAL);//Menggunakan referensi tegangan analog sebesar 1,1V
  pinMode(A0,INPUT);//Men-set pin A0 menjadi INPUT 
}

void loop(){
  //Membaca nilai analog di pin A0, kemudian di simpan di varibel
  //dataADC dengan format integer.
  int dataADC = analogRead(A0);
  lcd.clear();//Meng-clear baris dan kolom pada LCD dari karakter apapun
  lcd.setCursor(0,1);//Men-set kursor ke baris 0, kolom 1
  lcd.print("Value = ");//Mengirimkan text ke LCD
  lcd.print(dataADC);//Mengirimkan nilai ADC yang terbaca ke LCD
  delay(500);//program di tunda selama 500mS sebelum ke step selanjutnya.
}

3.2 Analog Input dengan Tegangan Referensi VCC
Pada percobaan kali ini akan dibuat program seperti pada Percobaan 3.1. Pada Percobaan 3.2 tegangan referensi ADC yang digunakan adalah tegangan VCC pada mikrokontroler.
Prosedur :
1.    Gantilah  sintaks  program  pada  Percobaan  3.1  menjadi  seperti  di  bawah  ini, kemudian lakukan kompilasi dan upload program.
#include 
LiquidCrystal lcd(2,3,4,5,6,7);
void  setup()  {
lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0);
lcd.print("ADC Example  on  A0");
analogReference(DEFAULT);
pinMode(A0,INPUT);
}
void  loop()  {
unsigned  int  dataADC  =  analogRead(A0);
lcd.setCursor(0,1);
lcd.print("Value=  ");
lcd.print(dataADC);
delay(500);
}
Tugas dan Pertanyaan :

1.    Putarlah potensiometer sehingga terjadi perubahan tegangan dari 0 volt sampai 5 volt dengan rentan perubahan 1 volt, kemudian amati data yang ditampilkan pada LCD dan isilah Tabel 3.2 !
Tabel 3.2 Perbandingan data perhitungan dan data pada LCD
2.    Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 3.2
#include <LiquidCrystal.h>//Pemanggilan library untuk LCD
//Menginisialisasikan pin LCD yang di pakai ke Library LCD
LiquidCrystal lcd(2,3,4,5,6,7);

void setup(){
  lcd.begin(16,2);//Men-set jumla baris dan kolom yang di gunakan
  lcd.clear();//Meng-clear baris dan kolom pada LCD dari karakter apapun
  lcd.setCursor(0,0);//Men-set kursor ke baris 0, kolom 0
  lcd.print("ADC Example on A0");//Mengirimkan text ke LCD
//Menggunakan referensi tegangan analog dari tegangan Vcc
  analogReference(DEFAULT);
  pinMode(A0,INPUT);//Men-set pin A0 menjadi INPUT 
}

void loop(){
  //Membaca nilai analog di pin A0, kemudian di simpan di varibel
  //dataADC dengan format integer.
  int dataADC = analogRead(A0);
  lcd.clear();//Meng-clear baris dan kolom pada LCD dari karakter apapun
  lcd.setCursor(0,1);//Men-set kursor ke baris 0, kolom 1
  lcd.print("Value = ");//Mengirimkan text ke LCD
  lcd.print(dataADC);//Mengirimkan nilai ADC yang terbaca ke LCD
  delay(500);//program di tunda selama 500mS sebelum ke step selanjutnya.
}


3.3 Analog Input dengan Tegangan Referensi Eksternal
Pada  percobaan  kali  ini  akan  dibuat  program  seperti  pada Percobaan  3.1 dan Percobaan 3.2. Tegangan referensi ADC yang digunakan adalah tegangan referensi eksternal yaitu tegangan pada pin AREF. Pada percobaan kali ini besar tegangan pada pin AREF akan di-set sebesar 4 volt. Sehingga dapat dikatakan bahwa besarnya tegangan referensi yang digunakan adalah 4 volt.
Prosedur :
1.    Rangkaialah rangkaian pada Gambar 3.2,
Gambar 3.2 Rangkaian Praktikum 3.3
2.    Tuliskan sintaks program di bawah ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
#include 
LiquidCrystal lcd(2,3,4,5,6,7);
void  setup()  {
lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0);
lcd.print("ADC Example  on  A0");
analogReference(EXTERNAL);
pinMode(A0,INPUT);
}
void  loop()  {
unsigned  int  dataADC  =  analogRead(A0);
lcd.setCursor(0,1);
lcd.print("Value=  ");
lcd.print(dataADC);
delay(500);
}
3.    Putar potensiometer R3 hingga tegangan pada pin AREF terukur 4 volt.
Tugas dan Pertanyaan :
1.    Putarlah  potensiometer  R2  sehingga  terjadi  perubahan  tegangan  dari  0-5  volt dengan rentan perubahan 1 volt. Amati data yang ditampilkan pada LCD, kemudian isilah Tabel 3.3.
Tabel 3.3 Perbandingan data hasil perhitungn dan data pada LCD
2.    Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 3.3 !
#include <LiquidCrystal.h>//Pemanggilan library untuk LCD
//Menginisialisasikan pin LCD yang di pakai ke Library LCD
LiquidCrystal lcd(2,3,4,5,6,7);

void setup(){
  lcd.begin(16,2);//Men-set jumla baris dan kolom yang di gunakan
  lcd.clear();//Meng-clear baris dan kolom pada LCD dari karakter apapun
  lcd.setCursor(0,0);//Men-set kursor ke baris 0, kolom 0
  lcd.print("ADC Example on A0");//Mengirimkan text ke LCD
//Menggunakan referensi tegangan analog dari tegangan di pin Aref
  analogReference(EKSTERNAL);
  pinMode(A0,INPUT);//Men-set pin A0 menjadi INPUT 
}

void loop(){
  //Membaca nilai analog di pin A0, kemudian di simpan di varibel
  //dataADC dengan format integer.
  int dataADC = analogRead(A0);
  lcd.clear();//Meng-clear baris dan kolom pada LCD dari karakter apapun
  lcd.setCursor(0,1);//Men-set kursor ke baris 0, kolom 1
  lcd.print("Value = ");//Mengirimkan text ke LCD
  lcd.print(dataADC);//Mengirimkan nilai ADC yang terbaca ke LCD
  delay(500);//program di tunda selama 500mS sebelum ke step selanjutnya.
}
3.    Jelaskan pengaruh nilai tegangan referensi pada hasil konversi ADC !
>> Nilai tegangan referensi pada konfersi ADC mempengaruhi pada resolusi yang di hasilkan semakin besar nilai tegangan referensi maka semakin besar juga resolusi perubahannya.

3.4 Analog Comparator
Pada Percobaan 3.4 akan dibuat program untuk mengakses fitur analog komparator pada mikrokontroler.Pada percobaan kali ini dua buah input analog akan dihubungkan ke input pin komparator yaitu AIN0  (pin 6) dan AIN1(pin 7) Output komparator akan ditampilkan pada LCD.


Prosedur :
1.    Rangkaialah rangkaian pada Gambar 3.3.
Gambar 3.3 Rangkaian percobaan analog komparator

2.    Tuliskan sintaks program di bawah ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
#include  <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
boolean  comparatorOutput;
ISR  (ANALOG_COMP_vect) {
comparatorOutput=  true;
}
void  setup()  {
ADCSRB  =  0;
ACSR =   _BV(ACI) |  _BV(ACIE)  |  _BV  (ACIS1);
lcd.begin(16,2); lcd.clear();lcd.setCursor(0,0);
lcd.print("Analog Comparator");
}
void  loop()  {
if  (comparatorOutput==true) {
lcd.setCursor(0,1);
lcd.print("Comparator High");
comparatorOutput =  false;
}
else  {
lcd.setCursor(0,1);
lcd.print("Comparator Low  ");
}delay(1000);}

Tugas dan Pertanyaan :
1.    Putarlah potensiometer R2 dan R3, amati teks pada LCD sehinga terjadi perubahan output. Apakah yang terjadi jika tegangan pada pin AIN0 lebih besar dari tegangan pada pin AIN1, jelaskan !
>> Jika tegangan pada AIN0 ( pin 6 ) lebih besar dari AIN1 ( pin 7 ) maka tampilan LCD akan menunjukkan “ Comparator HIGH “ selang 1 detik.

2.    Jelaskan prinsip kerja dari analog komparator pada sistem minimum Arduino ! apakah prinsip kerja komparator pada mikrokontroler sama dengan prinsip kerja komparator pada op-amp ?
>> Prinsip kerjanya hampir sama, akan tetapi ada sedikit perbedaan dimana komparator pada arduino hanya akan menghasilkan nilai output HIGH saat terjadi interrupt, atau saat ada perubahan tegangan antara AIN0 dan AIN1. Jika tidak ada perubahan di antaranya output dari komparator arduino adalah LOW.

3.    Apakah yang terjadi jika tegangan pada pin AIN0 lebih kecil dari tegangan pada AIN1, jelaskan !
>> Jika AIN0 lebih kecil dari AIN1 , maka tampilan pada LCD akan tetap menunjukkan “ Comparator LOW” .

4.    Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 3.4 !
#include <LiquidCrystal.h>//Pemanggilan library untuk LCD
//Menginisialisasikan pin LCD yang di pakai ke Library LCD
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
boolean comparatorOutput;//Menginisialisasikan variable dengan tipe boolean
ISR (ANALOG_COMP_vect){//Interrupt Service Routine untuk analog comparator
  comparatorOutput=true;//Memberikan boolean true jika terjadi interrupt
}
void setup(){ 
  ADCSRB=0; //Menonaktifkan analog komparator multiplexser
  //[ACD, ACBG, ACO, ACI, ACIE, ACIC, ACIS1, ACIS0] 
  ACSR=_BV(ACI) //(clear) analog comparator interrupt flag
  | _BV(ACIE) //analog comparator interrupt enable
  | _BV(ACIS1); //Pemilihan mode analog comparator interrupt
  lcd.begin(16,2); //Men-set jumla baris dan kolom yang di gunakan 
  lcd.clear();//Membersihkan baris dan kolom pada tampilan LCD dari semua karakter
  lcd.setCursor(0,0); //Men-set kursor pada baris 0 dan kolom 0
  lcd.print("Analog Comparator"); //Mencetak text ke LCD
}void loop()
{
  if (comparatorOutput==true)//Jika terjadi interupsi
  {//lakukan program didalam fungsi if()
    lcd.setCursor(0,1); //Men-set kursor pada baris 0 dan kolom 1
    lcd.print("Comparator High");//Mencetak text ke LCD
    comparatorOutput=false;//constans pada  comparatorOutput di kembalikan ke false
  }
  else //jika tidak terjadi interupsi
  {//lakukan program di dalam fungsi else.
    lcd.setCursor(0,1); //Men-set kursor pada baris 0 dan kolom 1
    lcd.print("Comparator Low");//Mencetak text ke LCD
   }delay(2000); //program di tunda selama 500mS sebelum ke step selanjutnya. 
}  


You Might Also Like :


Pengikut