INTERNAL ANALOG DIGITAL CONVERTER (ADC)
5.2 Uraian Materi
5.2.4 Register ADCL dan ADCH
Register ADCL dan ADCH merupakan dua register tempat menampung hasil pembacaan ADC. Untuk mengambil nilai data digunakan ADCW (mode 10 bit) dan ADCH (mode 8 bit). Berikut potongan listing program untuk mendapatkan nilai dari masukan analog pada internal ADC.
unsigned int getadc(unsigned char channeladc) {
unsigned int adcVal;
ADMUX=channeladc|0x40; //avcc ADCSRA|=(1<<ADEN); ADCSRA|=(1<<ADSC); loop_until_bit_is_clear(ADCSRA,ADSC); adcVal = ADCW; ADCSRA&=~(1<<ADEN); return adcVal; }
MODUL AJAR PRAKTIKUM INTERFACING 111 Gambar 5.1 merupakan foto dari modul input ADC pada AVR Trainer Board dimana pada paraktikum ini sinyal analog yang diukur adalah dari hasil pembacaan tegangan pada potensiometer 10K Ohm. Dimana rangkaian schematic dari potensiometer seperti ditunjukkan pada gambar 5.2.
Gambar 5.1 Foto modul input sinyal analog AVR Trainer Board.
Gambar 5.2 Rangkaian schematic pembacaan tegangan pada potensiometer.
5.3 Rangkuman
ATmega 16 memiliki fitur internal ADC yang dapat membaca sinyal analog dari luar dengan jumlah masukan 8 channel dan resolusi pembacaan maksimum 10 bit.
Register-register yang mempengaruhi ADC antara lain: − Register ADCMUX
− Register ADCSRA
MODUL AJAR PRAKTIKUM INTERFACING 112
5.4 Referensi
a) Agfianto Eko Putra (2009), Tip dan trik Mikrontroler AT89 dan AVR. Penerbit Gavamedia.
b) Budiharto, Widodo (2006), Panduan Praktikum Mikrokontroler AVR ATmega 16. Elex Media Komputindo.
c) Takashi, (2007), AVR GCC Tutorial. German: (www.mikrocontroller.net). d) Atmel Co., (2010). Datasheet AVR ATmega16.
5.5 Latihan Soal
1. Sebutkan fitur internal ADC yang ada pada Atmega 16? Jelaskan! 2. Register-register apa saja yang mempengaruhi ADC? Jelaskan! 3. Apa perbedaan sinyal analog dan digital? Jelaskan!
MODUL AJAR PRAKTIKUM INTERFACING 113
5.6 Lembar Kerja
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...MODUL AJAR PRAKTIKUM INTERFACING 114
5.7 Lembar Kerja Praktek/Praktikum
5.7.1 Alat dan BahanAlat :
No. Nama Jenis
Perangkat Jumlah
1. Komputer/Notebook Keras 1
2. AVR Trainer Board yang dilengkapi dengan
AVR910 Downloader Keras 1
3. Driver AVR910 USB downloader Lunak 1
4. WinAVR Editor Notepad Lunak 1
Bahan :
No. Nama Jenis
Perangkat Jumlah
1. Kabel USB Printer Keras 1
2. Kabel data pelangi Keras 4
3. Kabel power 220VAC Keras 1
5.7.2 Prosedur Keselamatan
Untuk mencegah hal-hal yang tidak diinginkan, Ikutilah prosedur keselamatan kerja berikut ini selama praktikum berlangsung:
1. Sebelum menggunakan perangkat hendaknya periksa dahulu kelengkapannya. 2. Sebelum menyalakan perangkat periksa dan pastikan koneksi kabel dan
konektor-konektor yang terhubung.
3. Periksa dahulu tombol power perangkat dan pastikan dalam keadaan OFF sebelum dikonfigurasi.
4. Periksa kembali konfigurasi kabel dan konektor dan pastikan tidak ada yang terbalik polaritasnya.
5.7.3 Langkah Kerja
Ikuti langkah-langkah kerja praktikum berikut ini sesuai dengan prosedur: 1. Ketikan program menggunakan notepad WinAVR.
2. Konfigurasi compiler WinAVR pada menggunakan M-File.
MODUL AJAR PRAKTIKUM INTERFACING 115 4. Download file berekstensi *.hex hasil kompilasi ke Microcontroller dengan perangkat keras AVR 910 USB downloader dan perangakat lunak downloader AVRdude.
5. Sambungkan AVR Trainer Board ke sumber tegangan AC 220V dengan menggunakan kabel power dan pastikan dahulu kondisi switch pada power supply modul dalam keadaan “OFF”. Untuk memastikan apakah sumber tegangan AC sudah mengalir bisa dengan menekan tombol power supply keposisi “ON” dan lampu akan menyala. Jika belum menyala coba periksa koneksi kabel dan colokan pada power supply.
6. Sambungkan port AVR yang dipakai ke bagian port modul dengan menggunakan kabel data pelangi.
7. Nyalakan modul dengan menekan tombol power supply ke posisi “ON” dan amati hasilnya.
8. Buatlah analisa dan kesimpulan dari praktikum yang dikerjakan.
5.7.4 Gambar Kerja
Gambar 5.3 menunjukkan koneksi antara komputer dengan modul AVR Trainer Board.
Gambar 5.3 Koneksi computer dengan modul AVR Trainer Board
Gambar 5.4 menunjukkan koneksi port pin AVR ke port modul I/O AVR Trainer Board menggunakan kabel data pelangi.
AVR Trainer Board
AVR910
MODUL AJAR PRAKTIKUM INTERFACING 116
Gambar 5.4 Koneksi microcontroller ke modul input/output
5.7.5 Lembar Tugas
1. Jalankan contoh program untuk membaca tegangan potensiomenter pada input analog ADC (A0) di bawah ini:
#include <avr/io.h> #include <util/delay.h> #define mode_ADC 0x20
unsigned char baca_adc (unsigned char pin_adc) {
ADMUX = pin_adc | mode_ADC; ADCSRA |=0x40;
while ((ADCSRA & 0x10)==0); ADCSRA |= 0x10; return ADCH; } void main(void) { DDRC = 0xFF; ADMUX=mode_ADC; ADCSRA=0x85; while(1) { PORTC = baca_adc(0); _delay_ms(100); } } Ke port modul input/ouput
MODUL AJAR PRAKTIKUM INTERFACING 117 2. Modifikasi program di atas sehingga hasil pembacaan ADC yang berupa nilai
heksa atau biner dapat ditampilkan pada modul seven segment.
3. Jalankan program untuk membaca nilai input ADC pada channel 0 (A0) yang dihasilkan dari potensiometer agar dapat ditampilkan pada LCD 8 bit.
#include <avr/io.h> #include <util/delay.h> #include <stdio.h>
#define ENABLE_LCD PORTD |= 0x04 #define DISABLE_LCD PORTD &= ~0x04 #define SET_LCD_DATA PORTD |= 0x01 #define SET_LCD_CMD PORTD &= ~0x01 #define mode_ADC 0x00
void port_init(void); void LCD_init(void);
void LCD_WriteCommand (unsigned char CMD); void LCD_WriteData (unsigned char Data); unsigned char baca_adc (unsigned char pin_adc); int rib,rat,pul,sat;
unsigned int data; char lcd_buffer[33]; int i;
// Inisialisasi port AVR 8535 void port_init(void)
{
DDRA = 0x00; // PORTA INPUT
PORTA = 0x00; // SEMUA PORTA DIAKTIFKAN DDRB = 0x00; // PORTB INPUT
PORTB = 0x00; // SEMUA PORTB DIAKTIFKAN DDRC = 0xFF; // PORTC OUTPUT
PORTC = 0x00; // SEMUA PORTC DIAKTIFKAN
DDRD = 0xFF; // PORTD OUTPUT
PORTD = 0x00; // SEMUA PORTD DIAKTIFKAN } // Inisialisasi LCD // DISPCLR = 01H // FUNCSET = 38H // ENTRMOD = 06H // DISPON = 0CH void LCD_init(void) {
delay_ms(100); // tunggu selama 100 ms LCD_WriteCommand (0x38); // 8 data lines = FUNCSET LCD_WriteCommand (0x06); // cursor setting = ENTRMOD LCD_WriteCommand (0x0f); // display ON = DISPON
LCD_WriteCommand (0x01); // clear LCD memory = DISPCLR delay_ms(10); // tunggu 10ms untuk membersihkan LCD }
MODUL AJAR PRAKTIKUM INTERFACING 118
// Prosedur untuk command instruction
void LCD_WriteCommand (unsigned char Command) {
SET_LCD_CMD; // Set LCD in command mode PORTC = Command; // Load data to port
ENABLE_LCD; // Write data to LCD delay_ms(1);
DISABLE_LCD; // Disable LCD delay_ms(1); // wait for 1ms }
// Prosedur untuk data instruction void LCD_WriteData (unsigned char Data) {
SET_LCD_DATA; // Set LCD in data mode PORTC = Data; // Load data to port ENABLE_LCD; // Write data to LCD delay_ms(1);
DISABLE_LCD; // Disable LCD delay_ms(1); // wait for 1ms }
unsigned char baca_adc(unsigned char pin_adc) { ADMUX= pin_adc|mode_ADC; ADCSRA|=0x40; while((ADCSRA & 0x10)==0); ADCSRA |=0x10; /*return ADCH;*/ return ADCW >>1; } //******************* MAIN FUNCTION ******************* main() { port_init(); LCD_init(); ADMUX =mode_ADC; ADCSRA =0x85; while(1) { data = baca_adc(0);
sat = data % 10; // sat = sisa dari data dibagi 10 pul = data / 10; pul = pul % 10; rat = data / 100; rat = rat % 10; rib = data / 1000;
LCD_WriteCommand (0x80); // pesan tempat di baris 1 kolom 0 LCD_WriteData (rib + 0x30); // data ASCII ribuan
LCD_WriteCommand (0x081); // pesan tempat di baris 1 kolom 1 LCD_WriteData (rat + 0x30); // data ASCII ratusan
MODUL AJAR PRAKTIKUM INTERFACING 119 4. Modifikasi program no. 3 agar pembacaan ADC dapat ditampilkan pada LDC
dengan mode LCD 4 bit.
Catatan:
Buat analisa dan kesimpulan dari semua percobaan yang telah kalian lakukan dalam laporan praktikum sesuai format pada lampiran A dalam modul ini.
LCD_WriteData (pul + 0x30); // data ASCII puluhan
LCD_WriteCommand (0x083); // pesan tempat di baris 1 kolom 3 LCD_WriteData (sat + 0x30); // data ASCII satuan
delay_ms(50); }
MODUL AJAR PRAKTIKUM INTERFACING 120 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
MODUL AJAR PRAKTIKUM INTERFACING 121
5.8 Jawaban Latihan Soal
1. Sudah dijelaskan pada uraian materi 2. Sudah dijelaskan pada uraian materi
3. Analog = output berupa range antara 0 s/d (x) Volt Digital = output berupa 0 atau 1 (5V).
LAMPIRAN
Penyusun:
Noorman Rinanto, S.T., M.T.
NIP
PROGRAM STUDI TEKNIK OTOMASI
JURUSAN TEKNIK KELISTRIKAN KAPAL
POLITEKNIK PERKAPALAN NEGERI SURABAYA
– 131 Powerful Instructions – Most Single-clock Cycle Execution – 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz – On-chip 2-cycle Multiplier
• High Endurance Non-volatile Memory segments
– 16 Kbytes of In-System Self-programmable Flash program memory – 512 Bytes EEPROM
– 1 Kbyte Internal SRAM
– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM – Data retention: 20 years at 85°C/100 years at 25°C(1) – Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program True Read-While-Write Operation
– Programming Lock for Software Security
• JTAG (IEEE std. 1149.1 Compliant) Interface
– Boundary-scan Capabilities According to the JTAG Standard – Extensive On-chip Debug Support
– Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
– Real Time Counter with Separate Oscillator – Four PWM Channels
– 8-channel, 10-bit ADC 8 Single-ended Channels
7 Differential Channels in TQFP Package Only
2 Differential Channels with Programmable Gain at 1x, 10x, or 200x – Byte-oriented Two-wire Serial Interface
– Programmable Serial USART – Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator – On-chip Analog Comparator
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection – Internal Calibrated RC Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby
• I/O and Packages
– 32 Programmable I/O Lines
– 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF
• Operating Voltages – 2.7V - 5.5V for ATmega16L – 4.5V - 5.5V for ATmega16 • Speed Grades – 0 - 8 MHz for ATmega16L – 0 - 16 MHz for ATmega16
• Power Consumption @ 1 MHz, 3V, and 25°C for ATmega16L – Active: 1.1 mA
– Idle Mode: 0.35 mA – Power-down Mode: < 1 μA