Anda di halaman 1dari 9

BAB VII

Percobaan 6
Aplikasi Lanjutan Mikrokontroler AVR

1. Tujuan Percobaan
1. Mempelajari dasar-dasar teknik opto-isolation dengan komponen optocoupler
2. Mempelajari proses pembangkitan sinyal audio secara digital dengan metode
Direct Digital Synthesis (DDS)
3. Mengetahui cara mengendalikan rangkaian bertegangan tinggi secara
terisolasi dengan rangkaian bertegangan rendah
4. Mengaplikasikan metode DDS untuk menghasilkan nada dengan
mikrokontroler AVR.

2. Alat dan Bahan


1. Modul utama Atmel ATMega 8535
2. Modul I/O
3. Modul input analog
4. Kabel jumper pelangi
5. Kabel dan stop kontak
6. Laptop
7. Buzzer Pasif
8. Rangkaian dimmer Zero Crossing dan Optocoupler
9. Lampu Pijar 15 Watt
10. Software CVAVR
11. Software ProgISP
3. Rangkaian Percobaan
 Rangkaian sistem minimum ATMEL Atmega 8535/16/32

Gambar 7.6 Rangkaian Sistem Minimum ATMEL Atmega 8535/16/32

 Rangkaian I/O

Gambar 7.7 Rangkaian I/O


 Rangkaian Input Analog

Gambar 7.8 Rangkaian Input Analog

3.1 Dimmer Beban 220 VAC Resistif dengan Potensiometer

Gambar 7.10 Dimmer Beban 220 VAC Resistif


3.2 Pembangkitan Nada

Gambar 7.11 Interkoneksi buzzer

4. Langkah Percobaan
1. Menyiapkan modul yang akan digunakan
2. Menyiapkan software CodeVisionAVR 2.05.3
3. Merangkai modul yang akan digunakan dalam praktikum
4. Melakukan percobaan sesuai variasi berikut ini:

4.1. Dimmer Beban 220 VAC Resistif dengan Potensiometer


1. Menyusun listing program inisialisasi dengan CodeWizard dan listing
program utama dalam bahasa C pada software CodeVisionAVR seperti
berikut
#include <mega8535.h>

#include <delay.h>

unsigned int tunda;


unsigned int delay;

interrupt [EXT_INT0] void ext_int0_isr(void)


{
PORTD.1=0;
TCNT0=255-tunda;
TCCR0=TCCR0|0x05;
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTD.1=1;
TCCR0=TCCR0&0x00;
}
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR))

unsigned char read_adc(unsigned char adc_input)


{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
ADCSRA|=(1<<ADSC);

while ((ADCSRA & (1<<ADIF))==0);


ADCSRA|=(1<<ADIF);
return ADCH;
}

void main(void)
{
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3)
| (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) |
(0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3)


| (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) |
(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3)


| (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) |
(0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3)
| (0<<DDD2) | (1<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) |
(0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) |


(0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) |
(0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0<<AS2;
TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) |
(0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) |


(0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (1<<TOIE0);

GICR|=(0<<INT1) | (1<<INT0) | (0<<INT2);


MCUCR=(0<<ISC11) | (0<<ISC10) | (1<<ISC01) | (1<<ISC00);
MCUCSR=(0<<ISC2);
GIFR=(0<<INTF1) | (1<<INTF0) | (0<<INTF2);
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) |
(0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) |


(0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) |
(0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
SFIOR=(1<<ADHSM) | (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL)


| (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) |


(0<<TWIE);

#asm("sei")

while (1)

{
tunda=read_adc(0);
delay=156-(0.61*tunda);
}
}
2. Melakukan proses build/compile dan mendownload program ke
mikrokontroler ATMEL Atmega 8535 dengan modul USBAsp dan
software ProgISP
3. Mengamati hasil percobaan dengan melihat pengaruh input terhadap
output yang terjadi pada modul
4.2 Pembangkitan Nada
1. Menyusun listing program inisialisasi dengan CodeWizard dan listing
program utama dalam bahasa C pada software CodeVisionAVR seperti
berikut

#include <mega8535.h>
#include <tonelib.h>

void main(void)
{

tone_wr_init();

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x03;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

while (1)
{

nada_g1(0.3);
jeda(0.1);
nada_g1(0.3);
jeda(0.1);
nada_c2(0.4);
jeda(0.05);
nada_c2(0.4);
jeda(0.05);
nada_c2(0.4);
jeda(0.05);
nada_c2(0.4);
jeda(0.05);
nada_c2(0.8);
jeda(0.05);
nada_b1(0.4);
jeda(0.05);
nada_c2(0.4);
jeda(0.05);
nada_d2(0.4);
jeda(0.05);
nada_d2(0.4);
jeda(0.05);
nada_d2(0.4);
jeda(0.05);
nada_d2(0.4);
jeda(0.05);
nada_d2(1.2);
jeda(0.05);
.
.
.
break;

}
}

2. Melakukan proses build/compile dan mendownload program ke


mikrokontroler ATMEL Atmega 8535 dengan modul USBAsp dan software
ProgISP
3. Mendengar hasil percobaan yang terjadi pada modul

5. Data Percobaan

5.1 Dimmer Beban 220 VAC Resistif dengan Potensiometer


<cantumkan gambar percobaan sesuai variasi, jika terdapat perubahan pada salah satu
variasi, maka sertakan minimal 3 gambar yang bisa menunjukkan perubahannya
secara berurut>

5.2 Pembangkitan Nada


Cantumkan foto ketika pengambilan gelombang suara dengan aplikasi oscilloscope
<data boleh diambil dari shift hari rabu>

Anda mungkin juga menyukai