• Tidak ada hasil yang ditemukan

Rancangan Sistem Pengontrolan dan Pengamanan Kebocoran LPG Berbasis Mikrokontroler ATMega32 dengan Menggunakan Media Informasi SMS

N/A
N/A
Protected

Academic year: 2019

Membagikan "Rancangan Sistem Pengontrolan dan Pengamanan Kebocoran LPG Berbasis Mikrokontroler ATMega32 dengan Menggunakan Media Informasi SMS"

Copied!
17
0
0

Teks penuh

(1)

52

52 Lampiran 1

Tabel data normalisasi lemari tabung LPG dari alat Waktu (s)

(2)

53

Tabel data normalisasi lemari tabung LPG secara teori Waktu (s)

(3)

54

54

220 1476,47 1464,71 1452,94 1464,71 230 1423,53 1407,84 1407,84 1413,07 240 1372,55 1331,37 1372,55 1358,82 250 1319,61 1301,96 1331,37 1317,65 260 1276,47 1245,10 1288,24 1269,93 270 1231,37 1211,76 1229,41 1224,18 280 1188,24 1162,75 1200,00 1183,66 290 1152,94 1121,57 1150,98 1141,83 300 1121,57 1080,39 1127,45 1109,80 310 1078,43 1049,02 1084,31 1070,59 320 1052,94 1013,73 1056,86 1041,18 330 1009,80 960,78 1025,49 998,69

340 986,27 958,82 990,20 978,43

350 960,78 935,29 976,47 957,52

360 929,41 909,80 949,02 929,41

370 913,73 894,12 929,41 912,42

380 888,24 878,43 907,84 891,50

390 868,63 850,98 900,00 873,20

400 852,94 841,18 890,20 861,44

410 827,45 827,45 872,55 842,48

420 809,80 809,80 856,86 825,49

430 796,08 801,96 841,18 813,07

440 786,27 796,08 837,25 806,54

450 774,51 786,27 815,69 792,16

460 754,90 786,27 754,90 765,36

470 764,71 796,08 735,29 765,36

480 776,47 786,27 729,41 764,05

490 776,47 786,27 731,37 764,71

500 776,47 786,27 749,02 770,59

510 784,31 778,43 782,35 781,70

520 790,20 798,04 801,96 796,73

530 801,96 803,92 805,88 803,92

540 805,88 805,88 831,37 814,38

550 819,61 819,61 815,69 818,30

560 829,41 809,80 803,92 814,38

(4)

55 Lampiran 3

Kode Program CodeVisionAVR

/******************************************************* This program was created by the

CodeWizardAVR V3.12 Advanced Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 22/12/2014 Author :

Company : Comments:

Chip type : ATmega32A Program type : Application

AVR Core Clock frequency: 4,000000 MHz Memory model : Small

External RAM size : 0 Data Stack size : 512

*******************************************************/ #include <mega32a.h>

#include <delay.h> char dat;

// Alphanumeric LCD functions #include <alcd.h>

#define buzzer PORTC.0 #include <stdio.h> #include <stdlib.h> #define kipas PORTC.1 #define sv PORTC.2

// Declare your global variables here char lcd_buffer[33];

float vgas;

unsigned int temp,temp1,temp2,x; // Voltage Reference: AVCC pin

#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR)) // Read the AD conversion result

(5)

56 {

ADMUX=adc_input | ADC_VREF_TYPE;

// Delay needed for the stabilization of the ADC input voltage delay_us(10);

// Start the AD conversion ADCSRA|=(1<<ADSC);

// Wait for the AD conversion to complete while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF);

return ADCW; }

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) // USART Receiver buffer

#define RX_BUFFER_SIZE 8 char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE <= 256

unsigned char rx_wr_index=0,rx_rd_index=0; #else

unsigned int rx_wr_index=0,rx_rd_index=0; #endif

#if RX_BUFFER_SIZE < 256 unsigned char rx_counter=0; #else

unsigned int rx_counter=0; #endif

// This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow;

// USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) {

char status,data; status=UCSRA; data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

(6)

57 // special case for receiver buffer size=256 if (++rx_counter == 0) rx_buffer_overflow=1; #else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1; }

#endif } }

#ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_

#pragma used+ char getchar(void) {

char data;

while (rx_counter==0);

data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256

if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif

#asm("cli") --rx_counter; #asm("sei") return data; }

#pragma used- #endif

// USART Transmitter buffer #define TX_BUFFER_SIZE 8 char tx_buffer[TX_BUFFER_SIZE]; #if TX_BUFFER_SIZE <= 256

unsigned char tx_wr_index=0,tx_rd_index=0; #else

unsigned int tx_wr_index=0,tx_rd_index=0; #endif

#if TX_BUFFER_SIZE < 256 unsigned char tx_counter=0; #else

(7)

58 // USART Transmitter interrupt service routine interrupt [USART_TXC] void usart_tx_isr(void) {

if (tx_counter) {

--tx_counter;

UDR=tx_buffer[tx_rd_index++]; #if TX_BUFFER_SIZE != 256

if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; #endif

} }

#ifndef _DEBUG_TERMINAL_IO_

// Write a character to the USART Transmitter buffer #define _ALTERNATE_PUTCHAR_

#pragma used+ void putchar(char c) {

while (tx_counter == TX_BUFFER_SIZE); #asm("cli")

if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) {

tx_buffer[tx_wr_index++]=c; #if TX_BUFFER_SIZE != 256

if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; #endif

++tx_counter; }

else UDR=c; #asm("sei") }

#pragma used- #endif

// Standard Input/Output functions #include <stdio.h>

/*

unsigned int bacaNilaiSensorI2C(unsigned char alamatI2C) { unsigned int sensor;

i2c_start();

i2c_write(alamatI2C); i2c_write(0x41); i2c_stop();

(8)

59 delay_us(10);

i2c_start();

i2c_write(alamatI2C|0x01); sensor = i2c_read(1);

sensor = sensor*256 + i2c_read(0); i2c_stop();

return sensor; }

*/

void send_sms_txt(char flash *fmtstr1, char flash *fmtstr2) {

printf("AT+CMGF=1"); putchar(0x0D);//ENTER while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500); printf("AT+CMGS=\""); printf(fmtstr1);

printf("\"");

putchar(0x0D);//ENTER while(getchar()!=0x20){}; delay_ms(500); printf(fmtstr2); putchar(0x1A);

while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; delay_ms(500);

(9)

60 while(getchar()!=0x0A){};

delay_ms(500); }

void sms_init() {

printf("ATE0");

putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500);

}

void cek_sms() {

while(getchar()!=','){}; while(getchar()!=0x0A){}; }

char receive_sms() {

char data;

printf("AT+CMGR=1"); putchar(0x0D);

while(getchar()!=0x0A){}; while(getchar()!=0x0A){}; data=getchar();

while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500);

printf("AT+CMGD=1"); putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500);

printf("AT+CMGD=2"); putchar(0x0D);//ENTER while(getchar()!='K'){}; while(getchar()!=0x0A){}; delay_ms(500);

(10)

61 delay_ms(500);

return(data); }

void tampil_lcd(char x,char y,char flash *teks, int tunda) {

lcd_gotoxy(x,y); lcd_putsf(teks); delay_ms(tunda); }

void main(void) {

// Declare your local variables here unsigned int sensor;

// 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=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=Out DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (1<<DDC1) | (1<<DDC0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

(11)

62 // 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;

(12)

63

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

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(1<<RXCIE) | (1<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x19;

// 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 Clock frequency: 125,000 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: Free Running ADMUX=ADC_VREF_TYPE;

ADCSRA=(1<<ADEN) | (0<<ADSC) | (1<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0);

SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

(13)

64

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);

// Bit-Banged I2C Bus initialization // I2C Port: PORTB

// I2C SDA bit: 2 // I2C SCL bit: 3 // Bit Rate: 100 kHz

// Note: I2C settings are specified in the

// Project|Configure|C Compiler|Libraries|I2C menu. /*

i2c_init(); */

// Alphanumeric LCD initialization // Connections are specified in the

// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit 0

// RD - PORTA Bit 1 // EN - PORTA Bit 2 // D4 - PORTA Bit 3 // D5 - PORTA Bit 4 // D6 - PORTA Bit 5 // D7 - PORTA Bit 6 // Characters/line: 8 lcd_init(16);

// Global enable interrupts #asm("sei")

buzzer=1; delay_ms(1000); buzzer=0; lcd_clear(); lcd_gotoxy(0,0);

lcd_puts("Inisialising"); delay_ms(2000); //sms_init(); lcd_clear();

lcd_puts("Modem OK"); delay_ms(2000);

(14)

65

(15)

66 else if (dat=='Y')

{lcd_clear();

tampil_lcd(0,0,"respon:N",0); tampil_lcd(0,1,"kipas Mati",0); kipas=0;

delay_ms(500);

send_sms_txt("085373735194","kipas Mati"); goto awal;

} else

{lcd_clear();tampil_lcd(0,0,"salah respon,krm ulang",1000); send_sms_txt("085373735194","jawaban tidak cocok"); goto cek;

(16)

67 Lampiran 4

Gambar alat secara keseluruhan saat proses pengujian

(17)

68 Lampiran 5

Tampilan SMS pada mobile phone

(a) (b)

Gambar

Tabel data normalisasi lemari tabung LPG dari alat
Tabel data normalisasi lemari tabung LPG secara teori
Gambar alat secara keseluruhan saat proses pengujian

Referensi

Dokumen terkait

Pada Proyek Akhir ini bertujuan dalam rangka mengurangi tingkat ledakan dan kebakaran akibat dari kebocoran pada tabung LPG yaitu dengan Merancang alat yang

Dari hasil pengujian sistem keseluruhan, pada mode otomatis jika kadar gas LPG dalam ruang sudah melebihi referensi, maka mikrokontroler secara otomatis akan

Pengujian dilakukan dalam hari yang sama dengan pengujian sebelumnya (pada Sub Bab 3.5) dan proses pengambilan data juga sama. Ketepatan antara alat ukur kelajuan dan arah

Blok Diagram Sistem Monitoring dan Mengontrol Kebocoran gas, mikrokontroler wemos D1 mini digunakan sebagai mikro utama, yang akan mengolah data inputan yang diterima dari sensor,

Hasil pengujian menunjukkan waktu yang dibutuhkan valve untuk menmbuka dan fan untuk berhenti adalah lambat dikarenakan tegangan output yang dikeluarkan sensor gas LPG

 Sistem akan aktif setelah dihubungkan ke sumber tegangan, langkah selanjunya letakan sensor TGS 2610 secara vertikal dari tabung gas LPG, dalam pengujian

Cara kerja alat ini yaitu, Sambungkan sistem dengan menghubungkan ke sumber daya dan tekan tombol ON/OFF pada perangkat sistem untuk menyalakan sistem yang

Pengujian komunikasi serial pada hyperterminal dapat dilihat pada gambar 4.2 di bawah ini: Gambar 4.2 Pengujian komunikasi serial 4.3 Kerja Sistem Pengamanan Sepeda Motor Secara