MEMBUAT RANGKAIAN SENSOR CAHAYA DENGAN
MICROCONTROLLER
Komponen
yang di gunakan :
1.
ATmega16
2.
Sensor
LDR
3.
Resistor
4.
LM016L
5.
Motor
Langkah
langkah awal yang harus kita lakukan adalah sebagai berikut :
·
Terlebih
dahulu kita membuka aplikasi proteus 8,
dengan cara :
Windows ~ Searach program files (ketikkan proteus 8) ~ enter
Windows ~ Searach program files (ketikkan proteus 8) ~ enter
·
Kemudian
pada tampilan pertama proteus 8 :
Pilih lah new project ~ ubah nama file menurut tugas anda , lalu next ~ pilih CREATE A SCHEMATIC FROM THE SELECTED TEMPLATE, atur posisi tampilan yang anda mau lalu next ~ pilih “CREATE A PCB LAYOUT FROM THE SE3LECTED TEMPALTED” klik Default , next ~ klik “CREATE FIRMWARE PROJECT” , next ~ Finish .
Pilih lah new project ~ ubah nama file menurut tugas anda , lalu next ~ pilih CREATE A SCHEMATIC FROM THE SELECTED TEMPLATE, atur posisi tampilan yang anda mau lalu next ~ pilih “CREATE A PCB LAYOUT FROM THE SE3LECTED TEMPALTED” klik Default , next ~ klik “CREATE FIRMWARE PROJECT” , next ~ Finish .
Muncul tampilan
seperti di bawah ini :
·
Untuk
menambahkan komponen pilih :
Library ~ pick parts from library ~ enter ,
maka muncul tampiilan seperti ini
Library ~ pick parts from library ~ enter ,
maka muncul tampiilan seperti ini
·
Ketikan
komponen yang di perlukan pada kolom KEYWORDS ,
dan gambar komponen yang anda cari akan muncul pada kolom SCHEMATIC PREFIEW
Oke lembar kerja
sudah siap di gunakan , sekarang kita mulai membuat rangkaian sensor cahaya
1.
Pertama
kita kumpulkan semua bahanbahan terlebih dahulu
2.
Lalu
kita taruh komponen LM016L
3.
Selanjutnya
tambahakan pula ATMEGA16 , dan Ground pada lembar kerja
4.
Kemudian
tambahkan komponen TORCH_LDR , RESISTOR , dan Ouput pada lembar kerja
5.
Tambahkan
lagi Motor dan ground di samping atmega sebagai penggerak nya
6.
Jika
komponen semua telah siap di lembar kerja , sekarang saatnya untuk menyambung
kan seluruh komponen tersebut . Sambungkan terlebih dahulu komponen lm016l dan
atmega16
7.
Kemudian
sambungkan pin terakhir pada lm016l ke atmega16 dan tambahakan dan sambungkan
pula output pada sisi kanan atmega16 nya
8.
Kemudian
sambungkan Resistor pada ATMEGA16 nya
9.
Lalu
sambungkan komponen ouput , Resistor, Torch_ldr dan Ground menjadi satu
10. Sekarang kita akan menyambungkan
motor dan ground nya pada atmega16
Semua rangkaian sudah kita buat , sekarang saatnya kita untuk membuat program
untuk menjalankan sensor cahaya berikut ini . Disini saya menggunakan
CODEVISION AR untuk membuat source code nya . Jika sourcecode sudah kita
buat kita masukkan source code tersebut pada ATMEGA16 nya , jika sudah jalankan
program tersebut . SELAMAT MENCOBA
Ini lah source code
yang di gunakan untuk sensor cahaya berikut ini :
/*******************************************************
This program was
created by the CodeWizardAVR V3.23a
Automatic Program
Generator
© Copyright 1998-2015
Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 03/11/2015
Author :
Company :
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock
frequency: 12,000000 MHz
Memory model : Small
External RAM
size : 0
Data Stack size : 256
*******************************************************/
#include <io.h>
// Alphanumeric LCD
functions
#include
<alcd.h>
#include
<delay.h>
// Declare your
global variables here
void main(void)
{
// Declare your local
variables here
// Input/Output Ports
initialization
// Port A
initialization
// Function: Bit7=In
Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA7)
| (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) |
(0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T
Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7)
| (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3)
| (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B
initialization
// Function: Bit7=In
Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7)
| (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) |
(0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T
Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7)
| (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3)
| (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port C
initialization
// Function: Bit7=Out
Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRC=(1<<DDC7)
| (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) |
(1<<DDC2) | (1<<DDC1) | (1<<DDC0);
// State: Bit7=0
Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTC=(0<<PORTC7)
| (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3)
| (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
// Port D
initialization
// Function: Bit7=Out
Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRD=(1<<DDD7)
| (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) |
(1<<DDD2) | (1<<DDD1) | (1<<DDD0);
// State: Bit7=0
Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTD=(0<<PORTD7)
| (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3)
| (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0
initialization
// Clock source:
System Clock
// Clock value: Timer
0 Stopped
// Mode: Normal
top=0xFF
// OC0 output:
Disconnected
TCCR0=(0<<WGM00)
| (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) |
(0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1
initialization
// Clock source:
System Clock
// Clock value:
Timer1 Stopped
// Mode: Normal
top=0xFFFF
// OC1A output:
Disconnected
// OC1B output:
Disconnected
// Noise Canceler:
Off
// Input Capture on
Falling Edge
// Timer1 Overflow
Interrupt: Off
// Input Capture
Interrupt: Off
// Compare A Match
Interrupt: Off
// Compare B Match
Interrupt: Off
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;
// Timer/Counter 2
initialization
// Clock source:
System Clock
// Clock value:
Timer2 Stopped
// Mode: Normal
top=0xFF
// OC2 output:
Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2)
| (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) |
(0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
// Timer(s)/Counter(s)
Interrupt(s) initialization
TIMSK=(0<<OCIE2)
| (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B)
| (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
// External
Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=(0<<ISC11)
| (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
// USART
initialization
// USART disabled
UCSRB=(0<<RXCIE)
| (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) |
(0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
// Analog Comparator
initialization
// Analog Comparator:
Off
// The Analog
Comparator's positive input is
// connected to the
AIN0 pin
// The Analog
Comparator's negative input is
// connected to the
AIN1 pin
ACSR=(1<<ACD) |
(0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) |
(0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);
// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN)
| (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) |
(0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
// SPI initialization
// SPI disabled
SPCR=(0<<SPIE)
| (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA)
| (0<<SPR1) | (0<<SPR0);
// TWI initialization
// TWI disabled
TWCR=(0<<TWEA)
| (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
// 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);
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("");
lcd_gotoxy(0,1);
lcd_putsf("");
delay_ms(500);
while(1)
// Place your code here
if (PINA.0==1)
{
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("Sensor cahaya
");
lcd_gotoxy(0,0);
lcd_putsf("Aktif");
PORTD=0xFF;
delay_ms(250);
}
else if (PINA.0==0)
{
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf("Sensor cahaya");
lcd_gotoxy(0,0);
lcd_putsf("Mati");
PORTD=0x00;
delay_ms(250);
}
else
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("anda salah");
}
}