Sensor cahaya pada ATMega dengan codevision AVR

Cara membuat sensor cahaya pada atmega dengan codevision avr biasanya macem2, mulai dari fotodioda, fototransistor, LDR dan masih banyak lagi. Untuk membuat rangkaian sensor cahaya kita menggunakan Analog to Digital Converternya ATMega, kalau untuk jenis ATMega16, ATMega32 dan ATMega8535 kita bisa menggunakan PINA.

Membuat Sensor Cahaya pada ATMega

Prinsip kerja rangkaian sensor cahaya ini sama seperti sensor suhu LM35, dimana subrutin ADC milik ATMega akan mengambil input dari kaki ADC kemudian program akan membaca output ADC tersebut.

Berikut contoh penggunaan sensor cahaya menggunakan LDR, saya ambil dari laporan praktikum yang saya ampu, dibuat oleh Mas Adi Candra Swastika. Cara kerja program ini mikrokontrol akan mengambil output ADC dari LDR dan jika hasil pembacaan ADC melebihi 150 maka LCD akan menampilkan angka 1 (high) selain itu maka akan menampilkan angka 0 (low). Program sensor cahaya CVAVR ini dapat dimodifikasi sendiri misal dengan memvariasikan perlakuan output.

Kode program Sensor Cahaya Menggunakan AVR ATMega

*****************************************************

This program was produced by the

CodeWizardAVR V2.05.0 Professional

Automatic Program Generator

© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 13/04/2012

Author : Adi Candra Swastika

Company :

Comments: cara membuat sensor cahaya menggunakan atmega16 dan codevision avr

Chip type : ATmega16

Program type : Application

AVR Core Clock frequency : 16.000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

*****************************************************/

#include <mega16.h> // mikrokontroler yang dipakai adalah atmega 16

#include <stdio.h>

#include <delay.h> //memasukkan library delay atau waktu tunda

// Alphanumeric LCD Module functions

#include <alcd.h> // library yang menunjukkan penggunaan lcd

unsigned char a, reff=150;//definisi variabel a, dan menentukan angka 150 sebagai referensi

char buff[32];

unsigned char adc_data;

#define ADC_VREF_TYPE 0x20

// ADC interrupt service routine

interrupt [ADC_INT] void adc_isr(void)

{

// Read the 8 most significant bits

// of the AD conversion result

adc_data=ADCH;

}

// Read the 8 most significant bits

// of the AD conversion result

// with noise canceling

unsigned char read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage

delay_us(10);

#asm

in r30,mcucr

cbr r30,__sm_mask

sbr r30,__se_bit | __sm_adc_noise_red

out mcucr,r30

sleep

cbr r30,__se_bit

out mcucr,r30

#endasm

return adc_data;

}

void main(void)

{

//definisi IO(input output) pada masing-masing port

PORTA=0x00;

DDRA=0x00;

PORTB=0x00;

DDRB=0x00;

PORTC=0x00;

DDRC=0x00;

PORTD=0x00;

DDRD=0x00;

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// USART initialization

// USART disabled

UCSRB=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 1000.000 kHz

// ADC Voltage Reference: AREF pin

// ADC Auto Trigger Source: ADC Stopped

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x8C;

// SPI initialization

// SPI disabled

SPCR=0x00;

// TWI initialization

// TWI disabled

TWCR=0x00;

// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:

// RS – PORTB Bit 0

// RD – PORTB Bit 1

// EN – PORTB Bit 2

// D4 – PORTB Bit 4

// D5 – PORTB Bit 5

// D6 – PORTB Bit 6

// D7 – PORTB Bit 7

// Characters/line: 16

lcd_init(16);

// Global enable interrupts

#asm(“sei”)

while (1)

{

a=read_adc(0); // pembacaan adc dimasukkan pada variabel a

lcd_gotoxy(0,0); //mendefinisikan koordinat x=0 y=0 sebagai awal mula penulisan LCD

sprintf (buff,”ADC0 : %d”,read_adc(0)); //menuliskan nilai ADC pada LCD

lcd_puts(buff);

lcd_gotoxy(0,1);//mendefinisikan koordinat x=0 y=1 sebagai awal mula penulisan LCD

if(a<reff){ //perumpamaan jika a kurang dari nilai referensi (150) maka LCD

lcd_putsf(“0”); //akan menampilkan angka 0, jika a>referensi (150) maka LCD

}else{ //akan menampilkan angka 1

lcd_putsf(“1”);

}

delay_ms(300); //memberikan delay sebesar 300 milisecond

lcd_clear();

}

}

 

Gambar Rangkaian Pembuatan Sensor Cahaya Menggunakan ATmel Atmega

Berikut adalah gambar rangkaian sensor cahaya menggunakan LDR pada atmel atmega

Sensor cahaya pada ATMega dengan codevision AVR ADC LDR ATmega

12 pemikiran pada “Sensor cahaya pada ATMega dengan codevision AVR”

  1. Judul Harga Beli Sekarang
    Dasar Mikrokontroler Atmega8535 dengan CAVR BUKU ORIGINAL Rp64.000  
    Buku Belajar Sendiri Mikrokontroler AVR Seri ATMega8535 Simulasi, Hardware, Dan Aplikasi Rp70.000  
    Buku 20 Aplikasi Mikrokontroler ATMega 8535 & ATMega 16 Menggunakan Bascom-AVR+CD Rp70.500
    BUKU PRAKTIKUM TEKNOLOGI MICROCONTROLLER ATMEGA- 16 UNTUK SMK/ MAK Rp40.000  
    Buku Dasar Mikrokontroler Atmega8535 dengan CAVR Rp64.000
    BUKU MIKROKONTROLER AVR ATMEGA8535 + CD Rp80.750  
    buku pemrograman mikrokontrorler avr atmega 16 + cd Rp50.000  

Tinggalkan komentar

(Note, links and most HTML attributes are not allowed in comments)

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Ingin produk/website Anda kami ulas? Silahkan klik tombol dibawah ini