-->

Hasil Analisa Praktikum Mikrokontroler Tentang ADC

Sobat Kuliah Teknik - Pada kesempatan kali ini saya akan bagikan sebuah laporan hail praktikum mikrokontroler tentang ADC. Yuk intip di bawah ini.


Percobaan IIIa Potensiometer dan LCD untuk mengubah besaran analog ke besaran digital.

christianto.tjahyadi.com
Pada percobaan pertama ini kita akan menuliskan program yang sudah ada pada modul praktikum, kemudian di jalankan. Berikut adalah program dan analisanya atau pembahasan programnya.
  • #include <mega16.h>  //program ini adalah library dari mikrokontroller yang kita gunakan ialah ATMega16 .
  • #include <alcd.h>  //Program ini memiliki arti bahwa memakai library alfanumerik LCD
  • #include <delay.h>  //Merupakan library untuk memberi waktu tunda
  • #define ADC_VREF_TYPE 0x40 //Maksutnya kita bisa memasukkan tegangan VREF yang di inginkan, fungsi dari VREF adalah sebagai persceler dari tiap-tiap data, 0x40 berdasarkan register dari ADC itu sendiri dsetting berdasarkan keinginan,
  • unsigned char rib,rat,pul,sat;  //Program ini menghasilkan karakter nilai rib, rat, pul, sat.
  • unsigned int adc,volt;  //Program menghasilkan nilai ADC, dan volt.
  • unsigned int read_adc(unsigned char adc_input)  //artinya menghasilkan dan membaca input adc.
  • { //awal fungsi program.
  • ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);  //Merupkana registrer 8 bit yang berfungsi untuk menentukan tegangan referensi ADC format data input, dan saluran ADC yang digunakan.
  • delay_us(10);  //artinya waktu tunda selama 30 menit.
  • ADCSRA|=0x40; //mengaktifkan adc dan fitur interupsinya
  • while((ADCSRA & 0x10)==0);  //apabila eksekusi benar saat mengaktifkan adc maka akan melakukan pengulangan.
  • ADCSRA|=0x10;  //mengaktifkan adc dan fitur interupsinya
  • return ADCW;} //suatu kumpulan intruksi untuk mengerjakan suatu keperluan tertentu dengan hasil akhir dari keperluan tersebut.
  • void display()  //untuk memastikan data yang kita input valid.
  • {  //awal fungsi program.
  • rib=volt/1000;  //input rib tegangan dibagi 1000.
  • rat=(volt%1000)/100;   //input rat persen tegangan dikalikan dengan 1000 dan dibagi dengan 100.
  • pul=(volt%1000)%100/10;  //Memiliki arti input pul persen tegangan dikali dengan 1000 dan dibagi dengan persen 100 dan dibagi 10.
  • sat=(volt%1000)%100%10;  //artinya input pul persen tegangan dikali dengan 1000 dan dibagi dengan persen 100 dan dibagi persen 10.
  • lcd_putchar(rib+'0');  //untuk menampilkan karakter pada posisi rib+0.
  • lcd_putchar(rat+'0');  //untuk menampilkan karakter pada posisi rat+0.
  • lcd_putchar(pul+'0');  //untuk menampilkan karakter pada posisi pul+0.
  • lcd_putchar(sat+'0');  //untuk menampilkan karakter pada posisi sat+0.
  • lcd_gotoxy(14,0);  //menampilkan data di kolom 4 baris ke 0.
  • lcd_putsf("mV");   //menampilkan array mV bertype char.
  • } //Merupakan penutup program
  • void main()  //artinya pada bagian program inti yang akan dijalankan.
  • { //awal program.
  • lcd_init(16);  //berfungsi untuk inisialisasi LCD kemudian dilanjutkan dengan penghapusan tampilan LCD dan menempatkan posisi kursor.
  • lcd_clear();  //untuk menghapus tampilan lcd.
  • lcd_putsf("tegangan=");  //menampilkan array tegangan bertype char.
  • while(1)  //apabila eksekusi benar maka melakukan pengulangan sebanyak satu kali.
  • { //tanda fungsi awal dari program.
  • adc=read_adc(0x00);  //akan membaca input adc.
  • volt=adc*5;  //merupakan tegangan adc dikalikan dengan 5.
  • lcd_gotoxy(9,0);  //menampilkan data di kolom 9 baris ke 0.
  • display();  //untuk memastikan data yang kita input itu valid.
  • delay_ms(500);  //melakukan waktu tunda selama 5 detik.
  • }  //Tanda untuk penutup program.
  • }  //penutup program.

2. Percobaan Modifikasi penampil berupa level menggunakan modul keluaran digital

Pada percobaan ini kita akan memodifikasi program di atas menjadi program dimana penampilnya adalah berupa level menggunakan keluaran digital, berikut program dan analisanya.

  • #include <mega16.h>   //Program ini adalah library dari mikrokontroller yang kita gunakan ialah ATMega16 .
  • #include <alcd.h>  //program ini memiliki adalah memakai library alfanumerik LCD
  • #include <stdio.h>  //fungsi program ini adalah untuk menggabungkan file header.
  • #include <delay.h>  //program untuk menunda eksekusi program dibawah dengan kisaran waktu sehinggah jika kita mengisi 1000 maka akan ditunda selama 1 detik.
  • #include <stdlib.h>  //fungsi library standard.
  • #define ADC_VREF_TYPE 0x40  //Bisa memasukkan tegangan VREF yang di inginkan, fungsi dari VREF adalah sebagai persceler dari tiap-tiap data, 0x40 berdasarkan register dari ADC itu sendiri dsetting berdasarkan keinginan,
  • unsigned char rib,rat,pul,sat;  //menghasilkan karakter nilai rib, rat, pul, sat.
  • unsigned int adc,volt; = menghasilkan nilai ADC, dan volt.
  • unsigned int read_adc(unsigned char adc_input)  //menghasilkan dan membaca input adc.
  • {  //awal program.
  • ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);  //Merupakan registrer 8 bit yang berfungsi untuk menentukan tegangan referensi ADC format data input, dan saluran ADC yang digunakan.
  • delay_us(10);  //waktu delay
  • ADCSRA|=0x40;  //mengaktifkan adc dan fitur interupsinya
  • while((ADCSRA & 0x10)==0);  //Artinya apabila eksekusi benar saat mengaktifkan adc maka akan melakukan pengulangan.
  • ADCSRA|=0x10;  //mengaktifkan adc dan fitur interupsinya
  • return ADCW;}  //Merupakan suatu kumpulan intruksi untuk mengerjakan suatu keperluan tertentu dengan hasil akhir dari keperluan tersebut.
  • char data[33];  //karakter data 33.
  • int baca;   //membaca karakter.
  • void main()  //bagian program inti yang akan dijalankan.
  • {  //awal program.
  • ADMUX=0x40;  //register 8 bit yang berfungsi menentukan tegangan referensi ADC, format data output.
  • ADCSRA=0x87;   //mengaktifkan adc dan fitur interupsinya
  • SFIOR&=0xEF;  //register SFIOR untuk menentukan sumber auto trigger konversi ADC yaitu menentukan nilai dari ADTS0, ADST1, ADST2.
  • lcd_init(16);  //untuk inisialisasi LCD kemudian dilanjutkan dengan penghapusan tampilan LCD dan fungsi yang harus dipanggil pertama kali sebelum memanggil fungsi-fungsi LCD yang lain
  • lcd_clear();  //untuk menghapus tampilan lcd.
  • lcd_putchar(0xFF);  //untuk menampilkan karakter lcd.
  • lcd_gotoxy(7,1);  //menampilkan data di kolom 7 di baris 1.
  • while(1)   //apabila eksekusi benar maka akan melakukan pengulangan sebanyak 1 kali.
  • {  //awal program.
  • baca=read_adc(0x00);  //akan membaca input adc.
  • volt=adc*5;  //tegangan adc dikalikan dengan 5.
  • lcd_gotoxy(0,0);  //menampilkan data kolom ke 0 baris ke 0
  • sprintf(data,"nilai=%4u",baca);  //simpan baca ke array nilai.
  • lcd_puts(data);  //fungsi untuk menampilkan data.
  • delay_ms(500);  //waktu jeda sebanyak 5 detik
  • {  //awal program
  • if (baca<=100) {lcd_clear();lcd_gotoxy(6,1);lcd_putchar(0xFF);}  //jika data baca lebih kecil sama dengan 100 maka akan menghapus tampilan lcd, dan menampilkan data lcd dikolom 6 dibaris ke 1.
  • Else  //Artinya adalah set up pengkondisian aplikasi.
  • if (baca<100 && baca <=200) {lcd_clear();lcd_gotoxy(7,1);lcd_putchar(0xFF);} //jika data baca lebih kecil 100 dan data baca lebih kecil dari 200, maka akan menghapus lcd, dan menampilkan lcd pada kolom 7 dibaris 1.
  • Else  //set up pengkondisian aplikasi.
  • if (baca<200 && baca <=300) {lcd_clear();lcd_gotoxy(8,1);lcd_putchar(0xFF);} //jika data baca lebih kecil dari 200 dan data baca lebih kecil sama dengan dari 300, maka akan menghapus lcd, dan menampilkan lcd pada kolom 8 dibaris 1.
  • Else  //set up pengkondisian aplikasi.
  •  if (baca<300 && baca <=400) {lcd_clear();lcd_gotoxy(9,1);lcd_putchar(0xFF);}  // jika data baca lebih kecil dari 300 dan data baca lebih kecil sama dengan dari 400, maka akan menghapus lcd, dan menampilkan lcd pada kolom 9 dibaris 1.
  • Else  //set up pengkondisian aplikasi.
  • if (baca<400 && baca <=500) {lcd_clear();lcd_gotoxy(10,1);lcd_putchar(0xFF);}  //jika data baca lebih kecil dari 400 dan data baca lebih kecil sama dengan dari 500, maka akan menghapus lcd, dan menampilkan lcd pada kolom 10 dibaris 1.
  • Else   //Adalah set up pengkondisian aplikasi.
  • if (baca<500 && baca <=600) {lcd_clear();lcd_gotoxy(11,1);lcd_putchar(0xFF);} //jika data baca lebih kecil dari 500 dan data baca lebih kecil sama dengan dari 600, maka akan menghapus lcd, dan menampilkan lcd pada kolom 11 dibaris 1.
  • Else  //= set up pengkondisian aplikasi. 
  • if (baca<600 && baca <=700) {lcd_clear();lcd_gotoxy(12,1);lcd_putchar(0xFF);} //jika data baca lebih kecil dari 600 dan data baca lebih kecil sama dengan dari 700, maka akan menghapus lcd, dan menampilkan lcd pada kolom 12 dibaris 1.
  • Else   //set up pengkondisian aplikasi.
  • if (baca<700 && baca <=800) {lcd_clear();lcd_gotoxy(13,1);lcd_putchar(0xFF);}  //jika data baca lebih kecil dari 700 dan data baca lebih kecil sama dengan dari 800, maka akan menghapus lcd, dan menampilkan lcd pada kolom 13 dibaris 1.
  • Else   //set up pengkondisian aplikasi.
  • if (baca<800 && baca <=900) {lcd_clear();lcd_gotoxy(14,1);lcd_putchar(0xFF);} //jika data baca lebih kecil dari 800 dan data baca lebih kecil sama dengan dari 900, maka akan menghapus lcd, dan menampilkan lcd pada kolom 14 dibaris
  • Else  //set up pengkondisian aplikasi.
  • if (baca<900 && baca <=1000) {lcd_clear();lcd_gotoxy(15,1);lcd_putchar(0xFF);}  //jika data baca lebih kecil dari 900 dan data baca lebih kecil sama dengan dari 1000, maka akan menghapus lcd, dan menampilkan lcd pada kolom 15 dibaris 1.
  • else{  //set up pengkondisian aplikasi.
  • }  //Tandapenutup program.
  • }  //Tandapenutup program.
  • }  //Tanda program.
  • }  //Tanda program.

3. Percobaan IIIb sensor LM35DZ sebagai sensor suhu dengan keluaran 10mV / 0C.

Pada percobaan IIIb ini kita akan memprogram sensor LM35DZ sebagai sensor suhu dengan keluaran 10mV/ 0C, dimana programnya sudah ada apda modul tinggal di jalankan dan di amati yang terjadi, berikut programnya dan penjelasan.


  • #include <mega16.h>   //Merupakan library dari mikrokontroller yang kita gunakan ialah ATMega16 .
  • #asm  //adalah setting LCD di PORT D yang kemudian akan me-link ke library lcd.hyang didalamnya terdapat akses LCD secara langsung.
  • .equ __lcd_port=0x12;  //setting LCD di PORT D yang kemudian akan me-link ke library lcd.hyang    didalamnya terdapat akses LCD secara langsung.
  • #endasm  //mengakhiri setting LCD di PORT D yang kemudian akan me-link ke library lcd.hyang didalamnya terdapat akses LCD secara langsung.
  • #include <lcd.h>   //memakai library alfanumerik LCD
  • #include <delay.h>  //fungsi untuk memberikan waktu tunda
  • #include <stdlib.h>  //fungsi library standard.
  • unsigned int suhu;  //menghasilkan input suhu.
  • char temp[6];  //menampilkan karakter temperatur 6.
  • float suhu_c;  //variable suhu.
  • unsigned int read_adc(unsigned char adc_input)   //menghasilkan dan membaca input adc.
  • {  //awal program.
  • ADMUX=adc_input|0x40;  //register 8 bit yang berfungsi menentukan tegangan referensi ADC, format data output.
  • ADCSRA|=0x40;  //mengaktifkan adc dan fitur interupsinya
  • while((ADCSRA&0x10)==0);  //apabila eksekusi benar saat mengaktifkan adc maka akan melakukan pengulangan.
  • ADCSRA|=0x10;  //mengaktifkan adc dan fitur interupsinya
  • return ADCW;  //suatu kumpulan intruksi untuk mengerjakan suatu keperluan tertentu dengan hasil akhir dari keperluan tersebut.
  • }  //awal program.
  • void main()  //inti program yang akan dijalankan.
  • {  //awal program.
  • ADMUX=0x40;  //register 8 bit yang berfungsi menentukan tegangan referensi ADC, format data output.
  • ADCSRA=0x87;   //mengaktifkan adc dan fitur interupsinya
  • SFIOR&=0xEF;  //register SFIOR untuk menentukan sumber auto trigger konversi ADC yaitu menentukan nilai dari ADTS0, ADST1, ADST2.
  • lcd_init(16);  //untuk inisialisasi LCD kemudian dilanjutkan dengan penghapusan tampilan LCD dan fungsi yang harus dipanggil pertama kali sebelum memanggil fungsi-fungsi LCD yang lain
  • lcd_clear();  //menghapus tampilan lcd.
  • lcd_putsf("Suhu=");  //fungsi untuk menampilkan suhu.
  • while(1)   //Artinya apabila eksekusi benar maka akan melakukan pengulangan sebanyak 1 kali.
  •   {  //awal program.      
  •   suhu=read_adc(0x00);  //membaca suhu adc.
  •   suhu_c=(float)suhu*500/1023;  //variable suhu suhu dikali dengan 500 dan dibagi dengan 1023.     
  •   ftoa(suhu_c,3,temp);  //variable temperature suhu 3c.
  •   lcd_gotoxy(5,0);  //menampilkan kolom ke 5 baris ke 0.
  •   lcd_puts(temp);  //menampilkan temperature.
  •   lcd_gotoxy(14,0);  //menampilkan data pada olom 14 baris ke 0.
  •   lcd_putchar(0xDF);  //menampilkan karakter lcd.
  •   lcd_gotoxy(15,0);  //menampilkan data pada kolom ke 15 baris ke 0.
  •   lcd_putsf("C");  //menampilkan data C.
  •   delay_ms(200);  //menunda waktu selama 2 menit.
  •   }  //penutup program.
  • }  //penutup program.

4. Percobaan Modifikasi agar nilai suhu dapat ditampilkan pada PC.

Pada percobaan modifkasi kita akan melakukan percobaan dimaa nilau suhunya akan di tampilkan apda PC, berikut program dan penjelasannya.
  • #include <mega32.h>   //Artinya kita menggunakan library mikrotroller ATMega 32
  • #include <delay.h>  //fungsi untuk melakukan waktu tunda. Standard Input/Output functions
  • #include <stdio.h>  //Merupakan fungsi library standard.
  • #define ADC_VREF_TYPE 0x00  //Kita bisa memasukkan tegangan VREF yang di inginkan, fungsi dari VREF adalah sebagai persceler dari tiap-tiap data, 0x00 berdasarkan register dari ADC itu sendiri dsetting berdasarkan keinginan,
  • #define led PORTB  //masukkan led pada PORTB.
  • unsigned int read_adc(unsigned char adc_input)  //menghasilkan dan membaca input adc.
  • {  //Tanda pembuka program
  • ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);  //input adc menggunakan register 8 bit.
  • delay_us(10);  //waktu tunda sebanyak 30 menit
  • ADCSRA|=0x40;  //Artinya register 8 bit yang berfungsi menentukan tegangan referensi ADC, format data output.
  • while ((ADCSRA & 0x10)==0);  //apabila eksekusi benar saat mengaktifkan adc maka akan melakukan pengulangan.
  • ADCSRA|=0x10;  //mengaktifkan adc dan fitur interupsinya
  • return ADCW;  //suatu kumpulan intruksi untuk mengerjakan suatu keperluan tertentu dengan hasil akhir dari keperluan tersebut.
  • }  //penutup program.
  • void main(void)  //inti program yang dijalankan.
  • {  //tanda pembuka program
  • unsigned int DataADC;  //menghasilkan dan membaca input adc.
  • float Vin;  //variable Vin.
  • int Derajat;  //fungsi data derajat.
  • PORTB=0x00;  //isi program dimana fungsi DDRB sebagai pengondisi port B sebagai masukan atau ouput
  • DDRB=0xFF;  //isi program dimana fungsi DDRB  sebagai pengondisi port B sebagai masukan atau ouput
  • while (1)  //Apabila eksekusi benar maka akan melakukan pengulangan sebanyak 1 kali.
  • {  //awal program.
  • DataADC = read_adc(0);  //untuk membaca sata adc.
  • printf("Output ADC0=");  //memasukkan input untuk output adc.
  • printf("%i\r",DataADC);  //memasukkan input untuk membaca adc.
  • delay_ms(1000);  //waktu tunda selama 1  detik.
  • printf("Output Vin=");  //memasukkanoutput Vin.
  • Vin = DataADC *0.0012414;  //input data adc dikali dengan hasil pembagian.
  • printf("%f\r",Vin);  //memasukkan input Vin.
  • delay_ms(1000);  //melakukan waktu tunda selama 1 detik
  • printf("Output Derajat=");  //memasukkan derajat output.
  • Derajat=Vin*100;  //Tegangan input dikalikan dengan 100.
  • printf("%i\r",Derajat);  //memasukkan derajat input.
  • delay_ms(1000);  //waktu tunda selama 1 detik.
  • }  //penutup program.
  • }  //penutup program.

0 Response to "Hasil Analisa Praktikum Mikrokontroler Tentang ADC"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel