1.Tujuan [kembali]
a. Merangkai dan menguji output pada mikrokontroller ATMEGA 128
b. Merangkai dan menguji input pada mikrokontroller ATMEGA 128
c. Merangkai dan menguji I/O pada mikrokontroller ATMEGA 128
2. Landasan Teori[kembali]
A. Mikrokontroller ATMEGA 128
Mikrokontroller ATMEGA 128 merupakan mikrokontroller keluarga AVR yang mempunyai kapasitas flash memori 128KB. AVR (Alf and Vegard’s Risc Processor) merupakan seri mikrokontroler CMOS 8-bit buatan ATEMEL inc, berdasarkan arsitektur RISC (Reduced Instruction Set Computer). Secara umum, AVR dapat terbagi menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga AT-Mega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, bisa dikatakan hampir sama. Semua jenis AVR dilengkapi dengan flash memori sebagai memori program. Kapasitas dari flash memori ini berbeda antara chip yang satu dengan chip yang lain. Tergantung dari jenis IC yang digunakan. Untuk flash memori yang paling kecil adalah 1 kbytes (ATtiny11, ATtiny12, dan ATtiny15) dan paling besar adalah 128 kbytes (AT-Mega128). Berikut ini adalah spesifikasi Mikrokontroler AVR ATMega-128 dan konfigurasi pin ATMEGA 128.1. Saluran I/O sebanyak 56 buah, yaitu Port A, Port B, Port C, Port D, Port E, Port F dan Port G.
2. ADC 10 bit sebanyak 8 saluran.
3. 2 buah Timer/Counter 8 bit dan 2 buah Timer/Counter 16 bit.
4. Dua buah PWM 8 bit.
5. Watchdog Timer dengan osilator internal.
6. Internal SRAM sebesar 4 kbyte.
7. Memori flash sebesar 128 kBytes.
8. Interupsi Eksternal.
9. Port antarmuka SPI.
10. EEPROM sebesar 4 kbyte.
11. Real time counter.
12. 2 buah Port USART untuk komunikasi serial.
13. Enam kanal PWM.
14. Tegangan operasi sekitar 4,5 V sampai dengan 5,5V
3.Tugas Pendahuluan [kembali]
LM35 Nomor 7
Dengan menggunakan LM35 dan Motor DC : Ketika suhu > 37, maka motor akan bergerak
4.Flowchart [kembali]
5.Listing Program [kembali]
#include <mega32.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
unsigned int adcout;
char temp[16];
int i;
#define ADC_VREF_TYPE 0x00 // Membaca hasil ADC
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE; // Delay needed for the stabilization of the ADC input voltage
delay_us(10); // Start the AD conversion
ADCSRA|=0x40; // Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
return ADCW;
}
void fastprint(char *str)
{
for(i=0;str[i]!='\0';i++)
{
lcd_putchar(str[i]);
delay_ms(10);
}
}
void main(void)
{ // Declare your local variables here
char ucapana[]="Kipas Angin Otomatis";
char ucapanb[]="Dengan Sensor Suhu LM35"; // Port B initialization
DDRB=0xff;
PORTB=0x00;
PINB.0=1;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: Fast PWM top=0xFF
// OC0 output: Non-Inverted PWM
// Timer Period: 16,384 ms
// Output Pulse(s):
// OC0 Period: 16,384 ms Width: 0 us
TCCR0=(1<<WGM00) | (1<<COM01) | (0<<COM00) | (1<<WGM01) | (1<<CS02) | (0<<CS01(1<<CS00);
TCNT0=0x00;
OCR0=0x00;
// ADC initialization
// ADC Clock frequency: 250,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16); //ucapan selamat datang
lcd_gotoxy(0,0);
fastprint(ucapana);
delay_ms(100);
lcd_clear();
lcd_gotoxy(0,0);
fastprint(ucapanb);
delay_ms(100);
lcd_clear(); //mulai
lcd_gotoxy(0,0);
lcd_putsf("Suhu : \nSpeed: ");
while (1)
{ // Place your code here
lcd_gotoxy(7,0);
adcout=read_adc(0)/2-1;
sprintf(temp,"%03i%cC",adcout,0xdf);
lcd_puts(temp);
if(adcout>35)
{
lcd_gotoxy(7,1);
lcd_putsf("||||");
OCR0=255;
}
else if(adcout>30)
{
lcd_gotoxy(9,1);
lcd_putsf("||| ");
OCR0=189;
}
else if(adcout>25)
{
lcd_gotoxy(7,1);
lcd_putsf("|| ");
OCR0=124;
}
else if(adcout>20)
{
lcd_gotoxy(7,1);
lcd_putsf("| ");
OCR0=63;
}
else
{
lcd_gotoxy(7,1);
lcd_putsf(" ");
OCR0=0x00;
}
}
}
6.Video Simulasi [kembali]
7.Analisa [kembali]
Rangkaian di atas menggunakan 3 buah komponen pendukung. pertama yaitu LCD. untuk mengkoneksikan LCD ini dengan Mikrokontrolernya dihunbungkan pin-pin seperti gambar rangkaian di atas. kedua Keypad yang hanya digunakan tombol 1 saja.Untuk mengakses tombol satu ini program akan memberikan nilai PORT yang dihubungkan ke keypad (Dalam hal ini E) berlogika 1 kecuali kolom yang memuat tombol 1 yaitu kolom 1 akan diberi logika 0. ketika tombol 1 ditekan maka baris yang memuat tombol 1 akan berlogika 0, sehingga saat kolom dan baris yang memuat tombol 1 nol, maka data akan dikirimkan ke mikrokontroler. Selanjutnya juga meggunakan driver motor stepper ULN2003A. saat tombol 1 ditekan maka program akan mengirimkan data ke LCD berupa tulisan "Anda Tekan 1" pada baris 0 dan " motor Bergerak " pada baris 1 dan program juga akan memberikan nilai agar motor stepper bergerak dengan fullwave mode. ketika tombol 1 tidak ditekan program tidak memberikan data ke driver motor sehinga motor tidak bergerak namun program tetap memberikan data ke LCD berupa tulisan "Motor Diam".
8.Link Download [kembali]
.



Tidak ada komentar:
Posting Komentar