Anda di halaman 1dari 6

MODUL 4 ADC (Analog-toDdigital-Converter)

Muhammad Ridho Pambudi (S2113003)


Asisten: Ahmad Thoriq S.
Tanggal Percobaan: 27/05/2016
EL3014R Praktikum Sistem Mikroprosesor
Laboratorium Teknik Elektro
Institut Teknologi Sumatera

Abstrak
Pada percobaan kali ini akan Memahami tentang bagaimana
membuat program yang menggunakan ADC pada AVR
ATMEGA8535, lalu mengubah hasil konversi dalam
satuan biner menjadi satuan BCD dan dikirmkan ke PC
melalui komunikasi serial USART..
1.

PENDAHULUAN

Adapun tujuan dari peraktikum kali ini adalah


sebagai berikut:

2.

Mampu
membuat
program
yang
menggunakan
ADC
pada
AVR
ATMEGA8535 untuk mengkonversi input
pada tegangan analog menjadi digital.

3.

HASIL DAN ANALISIS

Mampu
membuat
program
untuk
mengubah hasil konversi dalam satuan
biner menjadi satuan BCD dan dikirmkan
ke PC melalui komunikasi serial USART.

STUDI PUSTAKA

. Analog To Digital Converter (ADC) adalah


pengubah input analog menjadi kode kode digital.
ADC banyak digunakan sebagai pengatur proses
industri, komunikasi digital dan rangkaian
pengukuran/pengujian.
Umumnya
ADC
digunakan sebagai perantara antara sensor yang
kebanyakan analog dengan sistim komputer
seperti sensor suhu, cahaya, tekanan/berat, aliran
dan sebagainya kemudian diukur dengan
menggunakan sistim digital (komputer). ADC
(Analog to Digital Converter) memiliki 2 karakter
prinsip, yaitu kecepatan sampling dan resolusi.
Kecepatan sampling suatu ADC menyatakan
seberapa sering sinyal analog dikonversikan ke
bentuk sinyal digital pada selang waktu tertentu.
Kecepatan sampling biasanya dinyatakan dalam
sample per second (SPS).

Tugas 1 : Program menampilkan


pembacaan suhu. Program ini bekerja
dengan ialah data berupa data analog dari
sensor suhu lalu diubah ke digital.
Menggunakan rumus ADC=VIN x 1024
(10bit)/VREF

Konversi tersebut diubah kedalam degree yang


selanjutnya akan ditampilkan di lcd.
rakit komponen sesuai modul

sambungkan dengan pc

buat program untuk tugas 1

jalankan program
.

Tugas 2 : Program Menampilkan


pembacaan intensitas cahaya
Program ini ialah mengubah data analog
dari sensor suhu (LDR) lalu diubah
digital.mengunakan rumus .
Vout = RLDR/(RLDR+R1) x VCR
Hal ini mengubah data analog ke digital
lalu diubah lagi ke degree sehingga bisa
ditamplikan kedalam lcd.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

inisalisai perangkat ke pc

buat program untuk tugas 2

jalankan program
4.

KESIMPULAN

Pada peraktikum kali ini peraktikan dapat


menyimpulkan
bahwa
AVR
ATMEGA
mempunyai pin untuk ADC (Analog to Digital
Converter) yang bias digunakan mengkonver data
analog ke digital. Sehingga hasilnya bisa dilihat di
LCD.

DAFTAR PUSTAKA
[1]

Panduan Praktis mikrokontroler keluarga AVR


DT starter dan

[2]

http://elektronika-dasar.web.id/adc-analogto-digital-convertion/

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Lampiran

[40]

39. dataLCD = 0x30;

Source code tugas 1

[41]

40. kirim_perintah_lcd();

[42]

41. delay_ms(5);

[43]

42.

[44]

43. dataLCD = 0x30;

[45]

44. kirim_perintah_lcd();

[46]

45. delay_us(150);

[47]

46.

[48]

47. dataLCD = 0x30;

[49]

48. kirim_perintah_lcd();

[50]

49. delay_us(50);

[51]

50.

[52]

51. dataLCD = 0x38;

[53]

52. kirim_perintah_lcd();

[54]

53. delay_us(50);

[55]

54.

[56]

55. dataLCD = 0x04;

[57]

56. kirim_perintah_lcd();

[58]

57. delay_us(50);

[59]

58.

[60]

59. dataLCD = 0x01;

[61]

60. kirim_perintah_lcd();

[62]

61. delay_ms(2);

[63]

62.

[64]

63. dataLCD = 0x06;

[65]

64. kirim_perintah_lcd();

[66]

65. delay_us(50);

[67]

66.

[68]

67.

[69]

68. dataLCD = 0x0C;

[70]

69. kirim_perintah_lcd();

[71]

70. delay_us(50);

[72]

71. }

[73]

72.

[74]

73. unsigned long int hasil;

[75]

74.

[76]

75. unsigned long int bin2BCD


(unsigned int input)

[77]

76. {

[3]

2. #include <mega8535.h>

[4]

3. #include <delay.h>

[5]

4. #include <string.h>

[6]

5. #include <stdio.h>

[7]

6.

[8]

7. #define RS PORTD.5

[9]

8. #define RW PORTD.6

[10]

9. #define E PORTD.7

[11]

10. #define PORT_DATA PORTA

[12]

11. #define DDR_DATA DDRA

[13]

12.

[14]

13. unsigned char dataLCD;

[15]

14.

[16]

15. void kirim_perintah_lcd (void)

[17]

16. {

[18]

17. DDR_DATA=0xFF;

[19]

18. RS=0;

[20]

19. RW=0;

[21]

20. E=1;

[22]

21.

[23]

22. PORT_DATA=dataLCD;

[24]

23. E=0;

[25]

24. }

[26]

25.

[27]

26. void tulis_data_ram_lcd (void)

[28]

27. {

[29]

28. DDR_DATA=0xFF;

[30]

29. RS=1;

[31]

30. RW=0;

[32]

31. E=1;

[33]

32. PORT_DATA=dataLCD;

[34]

33. E=0;

[35]

34. }

[36]

35.

[37]

36. void init_lcd (void)

[38]

37. {

[39]

38. delay_ms(20);

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

[78]

77. hasil = ((input/10000)*65536)+

[79]

78. (((input%10000)/1000)*4096)+

[80]

79.
((((input%10000)%1000)/100)*256)
+

[81]

80.
(((((input%10000)%1000)%100)/10)
*16)+

[109] 108. {unsigned


adc_input=0x00;

char

i,

temp,

[110] 109. DDRA=0x00;


[111] 110.
ADMUX=ADC_VREF_TYPE;
[112] 111. ADCSRA=0x87;
[113] 112. SFIOR&=0xEF;
[114] 113. UCSRA=0x00;

[82]

81.
((((input%10000)%1000)%100)%10)
;

[83]

82. return(hasil);

[84]

83. }

[85]

84.

[86]

85. #define ADC_VREF_TYPE


0x00

[87]

86.

[121] 120. {for (i=0; i<=strlenf( string)1;i++)

[88]

87. unsigned int read_adc (unsigned


char adc_input)

[122] 121. {temp=string[i];

[89]

88. {

[90]

89. unsigned char temp;

[91]

90. unsigned int data_adc;

[92]

91.
ADMUX=adc_input|ADC_VREF
_TYPE;

[93]

92.

[94]

93. ADCSRA|=0x40;

[95]

94.

[96]

95.

[97]

96. while ((ADCSRA & 0x10) == 0);

[98]

97. ADCSRA |= 0x10;

[99]

98. data_adc=0x0000;

[115] 114. UCSRB=0x18;


[116] 115. UCSRC= 0x86;
[117] 116. UBRRH = 0x00;
[118] 117. UBRRL=0x19;
[119] 118.
[120] 119. while(1)

[123] 122. putchar(temp);


[124] 123. }
[125] 124. hasil=read_adc(adc_input);
[126] 125. hasil=hasil*49;
[127] 126. hasil=bin2BCD(hasil);
[128] 127.
temp=(hasil>>16
0x0F)+0x30;

&

[129] 128.
temp=(hasil>>12
0x0F)+0x30;

&

[130] 129. putchar(temp);


[131] 130.
temp=(hasil>>8&
+0x30;

0x0F)

[132] 131. putchar(temp);


[133] 132. putchar(',');

[100] 99. temp=ADCL;


[101] 100. data_adc=ADCH;

[134] 133.
temp=(hasil>>4&
+0x30;

[102] 101. data_adc<<=8;

[135] 134. putchar(temp);

[103] 102. data_adc|=temp;

[136] 135. temp=(hasil & 0x0F)+0x30;

[104] 103. return data_adc;

[137] 136. putchar(' ');

[105] 104. }

[138] 137. putchar('C');

[106] 105.

[139] 138. putchar(0x0D);

[107] 106. flash unsigned char string[]=


{"Hasil Pada ADC0 : "};

[140] 139. putchar(0x0A);

[108] 107. void main(void)

0x0F)

[141] 140. delay_ms(1000);


141.}}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

[174] 35. }
[175] 36.
[176] 37. void init_lcd (void)
[177] 38. {
[178] 39. delay_ms(20);
[179] 40. dataLCD = 0x30;
Source code tugas 2
[142] #include <mega8535.h>
[143] 4. #include <delay.h>
[144] 5. #include <string.h>
[145] 6. #include <stdio.h>
[146] 7.
[147] 8. #define RS PORTD.5
[148] 9. #define RW PORTD.6
[149] 10. #define E PORTD.7
[150] 11. #define PORT_DATA PORTA
[151] 12. #define DDR_DATA DDRA
[152] 13.
[153] 14. unsigned char dataLCD;
[154] 15.
[155] 16. void kirim_perintah_lcd (void)
[156] 17. {
[157] 18. DDR_DATA=0xFF;
[158] 19. RS=0;
[159] 20. RW=0;
[160] 21. E=1;
[161] 22.
[162] 23. PORT_DATA=dataLCD;
[163] 24. E=0;
[164] 25. }
[165] 26.
[166] 27. void tulis_data_ram_lcd (void)
[167] 28. {
[168] 29. DDR_DATA=0xFF;
[169] 30. RS=1;
[170] 31. RW=0;
[171] 32. E=1;
[172] 33. PORT_DATA=dataLCD;
[173] 34. E=0;

[180] 41. kirim_perintah_lcd();


[181] 42. delay_ms(5);
[182] 43.
[183] 44. dataLCD = 0x30;
[184] 45. kirim_perintah_lcd();
[185] 46. delay_us(150);
[186] 47.
[187] 48. dataLCD = 0x30;
[188] 49. kirim_perintah_lcd();
[189] 50. delay_us(50);
[190] 51.
[191] 52. dataLCD = 0x38;
[192] 53. kirim_perintah_lcd();
[193] 54. delay_us(50);
[194] 55.
[195] 56. dataLCD = 0x04;
[196] 57. kirim_perintah_lcd();
[197] 58. delay_us(50);
[198] 59.
[199] 60. dataLCD = 0x01;
[200] 61. kirim_perintah_lcd();
[201] 62. delay_ms(2);
[202] 63.
[203] 64. dataLCD = 0x06;
[204] 65. kirim_perintah_lcd();
[205] 66. delay_us(50);
[206] 67.
[207] 68.
[208] 69. dataLCD = 0x0C;
[209] 70. kirim_perintah_lcd();
[210] 71. delay_us(50);
[211] 72. }
[212] 73.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

[213] 74. unsigned long int hasil;

[248] 109.{unsigned
adc_input=0x01;

[214] 75.
[215] 76. unsigned long int bin2BCD (unsigned
int input)

char

[250] 111.ADMUX=ADC_VREF_TYPE;
[251] 112.ADCSRA=0x87;

[217] 78. hasil = ((input/10000)*65536)+

[252] 113.SFIOR&=0xEF;

[218] 79. (((input%10000)/1000)*4096)+

[253] 114.UCSRA=0x00;

[219] 80. ((((input%10000)%1000)/100)*256)+

[254] 115.UCSRB=0x18;

[220] 81.
(((((input%10000)%1000)%100)/10)*16)+

[255] 116.UCSRC= 0x86;

[222] 83. return(hasil);

temp,

[249] 110.DDRA=0x00;

[216] 77. {

[221] 82. ((((input%10000)%1000)%100)%10);

i,

[256] 117.UBRRH = 0x00;


[257] 118.UBRRL=0x19;
[258] 119.

[223] 84. }

[259] 120.while(1)

[224] 85.

[260] 121.{for (i=0; i<=strlenf( string)-1;i++)

[225] 86. #define ADC_VREF_TYPE 0x00

[261] 122. {temp=string[i];

[226] 87.

[262] 123. putchar(temp);

[227] 88. unsigned int read_adc (unsigned char


adc_input)
[228] 89. {

[263] 124. }
[264] 125.hasil=read_adc(adc_input);
[265] 126.hasil=hasil*49;

[229] 90. unsigned char temp;

[266] 127.hasil=bin2BCD(hasil);

[230] 91. unsigned int data_adc;


[231] 92.
ADMUX=adc_input|ADC_VREF_TYPE
;
[232] 93.

[267] 128.temp=(hasil>>16 & 0x0F)+0x30;


[268] 129.putchar(temp);
[269] 130.putchar(',');
[270] 131.temp=(hasil>>12 & 0x0F)+0x30;

[233] 94. ADCSRA|=0x40;

[271] 132.putchar(temp);

[234] 95.

[272] 133.temp=(hasil>>8& 0x0F) +0x30;

[235] 96.

[273] 134.putchar(temp);

[236] 97. while ((ADCSRA & 0x10) == 0);

[274] 135.putchar(',');

[237] 98. ADCSRA |= 0x10;

[275] 136.putchar('V');

[238] 99. data_adc=0x0000;

[276] 137.temp=(hasil>>4& 0x0F) +0x30;

[239] 100.temp=ADCL;

[277] 138.

[240] 101.data_adc=ADCH;

[278] 139.temp=(hasil & 0x0F)+0x30;

[241] 102.data_adc<<=8;

[279] 140.

[242] 103.data_adc|=temp;

[280] 141.

[243] 104.return data_adc;

[281] 142.putchar(0x0D);

[244] 105.}

[282] 143.putchar(0x0A);

[245] 106.

[283] 144.delay_ms(1000);

[246] 107.flash unsigned char string[]= {"Hasil


Pada ADC1 : "};

145.}}

[247] 108.void main(void)


Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Anda mungkin juga menyukai