Pintu Geser Otomatis ditemukan hampir di tiap bangunan yang banyak
dilalui oleh orang. Pintu Geser Otomatis dianggap menambah efisiensi
waktu tiap orang yang melaluinya. Pintu Geser Otomatis memiliki komponen
utama berupa sensor pergerakkan manusia dan motor penggerak mekanik
pintu. Pintu Geser Otomatis dalam aplikasi ini menggunakan sensor
pergerakkan manusia yang mendeteksi pergerakkan berdasarkan pancaran
radiasi infra merah yang adalah suhu khas dari manusia, dan motor DC
sebagai penggerak mekanik pintunya.
PIR Motion Detector adalah modul produksi yang
komponen utamanya adalah sensor PIR (Passive Infra-Red), yaitu sensor
yang dapat mendeteksi pergerakan manusia berdasarkan perubahan suhu
lingkungan. Modul ini sangat baik digunakan untuk aplikasi-aplikasi yang
memerlukan sensor yang dapat mendeteksi adanya gerakan manusia. Modul
inilah yang menjadi sensor utama yang digunakan dalam Aplikasi ini.
Untuk CPU (Central Processing Unit) –nya digunakan DI-Smart AVR System yang adalah sistem mikrokontroler yang berbasis ATmega8535(L). Dan sebagai driver / rangkaian penggerak motor digunakan MDCD4 (Motor DC Driver 4A), yaitu modul driver motor DC yang dapat digunakan untuk menggerakkan motor DC sampai dengan 4 Ampere.
Radius pendeteksian pergerakan manusia oleh sensor PIR pada Aplikasi (Seri Pemantauan Gerakan [I]) – Pintu Geser Otomatis
ini adalah 5 meter. Waktu tunda saat pintu terbuka adalah 1 menit,
dimana waktu akan ter-reset jika terdeteksi kembali pergerakkan manusia.
Dan pintu pun akan kembali membuka saat proses menutupnya pintu
terdeteksi pergerakkan manusia.
Modul-Modul Depok Instruments yang Mendukung:
- DI-Smart AVR System (Sistem Minimum Mikrokontroler AVR ATMEGA8535)
- DI-Smart Extension Board
- DI-MDCD4 (Motor DC Driver 4A)
- DI-PIR Motion Detector
Flowchart:
Skrip Program:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 1/18/2011
Author :
Company :
Comments:
Chip type : ATmega8535L
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/
#include <mega8535.h>
#define M1 PORTC.0
#define DDRM1 DDRC.0
#define M2 PORTC.1
#define DDRM2 DDRC.1
#define PIR PIND.4
#define PORTPIR PORTD.4
#define DDRPIR DDRD.4
#define ls_buka PIND.3
#define PORTLSBUKA PORTD.3
#define DDRLS_BUKA DDRD.3
#define ls_tutup PIND.2
#define PORTLSTUTUP PORTD.2
#define DDRLS_TUTUP DDRD.2
unsigned char posisi_program=0;
bit flagtimer=0;
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
TCNT1H=0;
TCNT1L=0;
TCCR1B=0;
flagtimer=1;
}
void main(void)
{
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0×10;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
DDRM1=1;
DDRM2=1;
PORTPIR=1;
PORTLSBUKA=1;
PORTLSTUTUP=1;
DDRPIR=0;
DDRLS_BUKA=0;
DDRLS_TUTUP=0;
// Global enable interrupts
#asm(“sei”)
M1=0;
M2=0;
while (1)
{
// Place your code here
if (posisi_program==0){
while (PIR!=0);
//BUKA
M1=0;
M2=1;
while (ls_buka!=0);
M1=0;
M2=0;
}
TCNT1L=0;
TCNT1H=0;
OCR1AH=0x8c;
OCR1AL=0xa0;
flagtimer=0;
TCCR1B=0×05;
while (1){
if (PIR==0){
TCCR1B=0×05;
TCNT1L=0;
TCNT1H=0;
flagtimer=0;
}
if (flagtimer==1) break;
};
//Tutup
M1=1;
M2=0;
while (1){
if (PIR==0){
//BUKA
M1=0;
M2=1;
while (ls_buka!=0);
M1=0;
M2=0;
posisi_program=1;
break;
}
if (ls_tutup==0){
M1=0;
M2=0;
posisi_program=0;
break;
}
};
};
}
0 komentar:
Posting Komentar