Kamis, 08 Mei 2014

Aplikasi - Pintu Geser Otomatis (Seri Pemantauan Gerakan [I])

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:
Blok Diagram:



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