Selasa, 18 Januari 2011

EFESIENSI PENGGUNAAN KIPAS BERDASARKAN JUMLAH ORANG (miniatur)

LATAR BELAKANG
Seiring perkembangan zaman banyak penelitian-penelitian yang dilakukan untuk mengembangkan berbagai macam teknologi . Untuk itu diciptakanlah teknologi untuk menghemat energy listrik serta mencegah terbuangnya energy listrik secara sia-sia. Sehingga penggunaan listrik dapat benar-benar efesien. Dimulai dengan penggunaan kipas angin , di latar belakangi dari kehidupan di Surabaya yang mempunyai udara cukup panas sehingga bisa dipastikan hampir di setiap rumah memiliki kipas angin. Penggunaan kipas di setiap rumah sering kali tidak efesien dan bisa membuang-buang listrik secara sia-sia . Maka diciptakanlah kipas yang menyala berdasarkan jumlah orang yang ada dalam ruangan . Selain itu , juga dapat menghemat pengeluaran untuk membayar biaya listrik tiap bulannya.

PERIPHERAL YANG DIGUNAKAN

-ADC
ADC disini digunakan untuk mengubah sinyal masukan dari sensor photodiode dan infra red yang berupa sinyal analog diubah menjadi sinyal digital agar dapat diolah pada mikro , karena sensor yang digunakan untuk menghitung jumlah orang keluar masuk ada 4 ,maka sinyal yang diubah dari analog ke digital ada 4 , sehingga ADC yang digunakan juga hanya 4 bit .

-TIMER
Timer yang digunakan adalah timer 0 untuk mengatur pwm kipas

PENJELASAN SISTEM / CARA KERJA ALAT



Cara kerja dari alat ini adalah kipas akan berputar dan kecepatannya berdasarkan jumlah orang yang ada di dalam ruangan . Untuk menghitung jumlah orang yang ada , digunakan 4 buah sensor infra red dan photo diode , 2 buah di pintu masuk dan 2 yang lain diletakkan di pintu keluar. Apabila ada orang yang melewati sensor A dan B maka sensor akan mengirimkan sinyal ke mikro yang merupakan sinyal untuk orang masuk , Apabila ada orang yang melewati sensor D dan C maka sensor akan mengirimkan sinyal ke mikro yang merupakan sinyal untuk orang keluar kemudian pada ADC, sinyal tersebut akan diolah sehingga dapat menampilkan” jumlah orang “ pada LCD . Untuk mengatur kecepatan dari kipas digunakan PWM . Dengan ketentuan yang telah dibuat yaitu :
Jumlah orang <=5 kipas 1 dan kipas 2 mati
Jumlah orang 6-10 kipas 1 menyala dengan pwm =70 , kipas 2 mati
Jumlah orang 11-15 kipas 1 menyala dengan pwm =150 , kipas 2 mati
Jumlah orang 16-20 kipas 1 menyala dengan pwm =150 , kipas 2 menyala dengan pwm =70
Jumlah orang >20 kipas 1 menyala dengan pwm =200 , kipas 2 menyala dengan pwm =150
Untuk settingan dari pwm nya dapat diatur kembali sesuai dengan keinginan . Dengan ketentuan kipas berkecepatan maksimal pada pwm = 255
Pada LCD juga ditampilkan berapa PWM masing-masing kipas .
Kipas yang digunakan membutuhkan supply sebesar 12 V sehingga pada alat ini di gunakan 2 supply . 12 v untuk kipas dan 5 v untuk mikro .

MAIN PROGRAM

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Evaluation
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 1/15/2011
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:


Chip type : ATmega8535
Program type : Application
Clock frequency : 11.059200 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
*****************************************************/

#include
#include


// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTB
#endasm
#include

#include

#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 3
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20

// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
}
#define kipas1 PORTB.0
#define kipas2 PORTB.1
char timer, pwm1,pwm2,tes[9],kata2[16];
// Timer/Counter 0 initialization
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
timer++;
if(timer<=pwm1)kipas1=1;
else kipas1=0;

if(timer<=pwm2)kipas2=1;
else kipas2=0;
TCNT0=0xff;

}



int i,sen1=0,sen2=0,sen3=0,sen4=0;
char jml,org,baca[5],move,kata[5],jml2;
void hitsen()
{
for(i=0;i<4;i++)
{
if(adc_data[i]>100) baca[i]=1;
else baca[i]=0;
}
move=(baca[0]*1)+(baca[1]*2)+(baca[2]*4)+(baca[3]*8);

}

void org_msk()
{
hitsen();
move&=0b00001111;
switch(move)
{
case 0b00000001: sen1=1; break;
case 0b00000010: sen2=1; break;
case 0b00000000:
{
jml=sen1+sen2;
if(jml==2)
{
org++;
sen1=0; sen2=0;
}
break;
}
}
/*
itoa(org,kata);
lcd_gotoxy(0,1);
lcd_puts(kata); */
}
void org_klr()
{
hitsen();
move&=0b00001111;
switch(move)
{
case 0b00000100: sen3=1; break;
case 0b00001000: sen4=1; break;
case 0b00000000:
{
jml2=sen3+sen4;
if(jml2==2)
{
if(org<=0)
{
org=0; sen3=0; sen4=0;
}
else
{
org--;
sen3=0; sen4=0;
}
}
break;
}
}
/*
itoa(org,kata);
lcd_gotoxy(0,1);
lcd_puts(kata);*/

}
// Declare your global variables here

void main(void)
{
// Declare your local variables here
int a;

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTA=0xFF;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x0F;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
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: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
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=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 691.200 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCC;
SFIOR&=0xEF;

// LCD module initialization
lcd_init(16);

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

while (1)
{
// Place your code here
/* a=adc_data[1];
itoa(a,kata);
lcd_gotoxy(0,0);
lcd_puts(kata);
delay_ms(100);
lcd_clear();*/

/*org_msk();
org_klr();
itoa(org,kata);
lcd_gotoxy(0,0);
lcd_putsf("jumlah=");

lcd_puts(kata); */
lcd_clear();
org_msk();
org_klr();
lcd_gotoxy(0,0);
lcd_putsf("jml orang=");
itoa(org,kata);
lcd_puts(kata);

if(org<=5){pwm1=0; pwm2=0;}
if(org>5 && org<=10){pwm1=70; pwm2=0;}
if(org>10 && org<=15){pwm1=150; pwm2=0;}
if(org>15 && org<=20){pwm1=150; pwm2=70;}
if(org>20){pwm1=200; pwm2=150;}
itoa(pwm1,kata2);
lcd_gotoxy(0,1);
lcd_puts(kata2);
itoa(pwm2,kata2);
lcd_gotoxy(8,1);
lcd_puts(kata2);


};
}


FOTO ALAT


VIDEO


SCHEMATIC


BIODATA PENULIS

Nama : Dini Aprilianti
TTL : Ambon, 18 April 1990
Jenis Kelamin : Perempuan
Agama : Islam
Alamat Asal : Jl. Titan I AA 9 Malang
Alamat Surabaya : Tegal Mulyorejo Baru 44 Surabaya
No.Telp Rumah : ( 0341 ) 474555
No.Hp : 085733178590
Riwayat Pendidikan :
Tingkat Nama Sekolah Tahun
SD SD Negeri Purwantoro XIV Malang 1996-2002
SMP SMP Negeri 5 Malang 2002-2005
SMA SMK Telkom Malang 2005-2008
Perguruan Tinggi Teknik Elektronika PENS-ITS, 2008-Sekarang
Surabaya

Jumat, 14 Mei 2010

TUGAS ARKOM

  • Managing Memory

    · Program tunggal

    memory dibagi 2, untuk OS dan untuk program yang dijalankan

    · Program Jamak

    Bagian “Pengguna” dibagi dan digunakan bersama oleh beberapa proses yang aktif

    Swapping

    Swapping (tukar menukar) ==> antrian panjang dari proses yang disimpan dalam disk

    Proses swapping menukarkan sebuah proses keluar dari memori untuk sementara waktu ke sebuah penyimpanan sementara dengan sebuah proses lain yang sedang membutuhkan sejumlah alokasi memori untuk dieksekusi. Tempat penyimpanan sementara ini biasanya berupa sebuah fast disk dengan kapasitas yang dapat menampung semua salinan dari semua gambaran memori serta menyediakan akses langsung ke gambaran tersebut. Jika eksekusi proses yang dikeluarkan tadi akan dilanjutkan beberapa saat kemudian, maka ia akan dibawa kembali ke memori dari tempat penyimpanan sementara tadi. Bagaimana sistem mengetahui proses mana saja yang akan dieksekusi? Hal ini dapat dilakukan denganready queue. Ready queue berisikan semua proses yang terletak baik di penyimpanan sementara maupun memori yang siap untuk dieksekusi. Ketika penjadwal CPU akan mengeksekusi sebuah proses, ia lalu memeriksa apakah proses bersangkutan sudah ada di memori ataukah masih berada dalam penyimpanan sementara. Jika proses tersebut belum berada di memori maka proses swapping akan dilakukan seperti yang telah dijelaskan di atas.

    · Permasalahan : I/O lebih lambat dibandingkan CPU seperti terjadi pada sistem operasi, pemrograman jamak, CPU dapat diam untuk sebagian besar waktu

    · Solusi :

    1. Meningkatkan memori utama

    2. Swapping

    · Setelah proses swapping dilakukan, maka file swap dihapus dari memory

    · Jika tidak ada proses dalam memory yang siap (misal seluruh I/O digunakan), swap mengeluarkan satu blok proses ke antrian menengah.

    Virtual Memory

    Pengertian

    Memori virtual merupakan suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh bagian program perlu ikut masuk ke dalam memori.

    Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat menampung program dalam skala besar, melebihi daya tampung dari memori utama yang tersedia.

    Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."

    Konsep memori virtual pertama kali dikemukakan Fotheringham pada tahun 1961 pada sistem komputer Atlas di Universitas Manchester, Inggris (Hariyanto, Bambang : 2001).

    Keuntungan

    Sebagaimana dikatakan di atas bahwa hanya sebagian dari program yang diletakkan di memori. Hal ini berakibat pada:

    o Berkurangnya I/O yang dibutuhkan (lalu lintas I/O menjadi rendah). Misal, untuk program butuh membaca dari disk dan memasukkan dalam memory setiap kali diakses.

    o Berkurangnya memori yang dibutuhkan (space menjadi lebih leluasa). Contoh, untuk program 10 MB tidak seluruh bagian dimasukkan dalam memori. Pesan-pesan error hanya dimasukkan jika terjadi error.

    o Meningkatnya respon, sebagai konsekuensi dari menurunnya beban I/O dan memori.

    o Bertambahnya jumlah user yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan dari user.

    Implementasi

    Gagasan dari memori virtual adalah ukuran gabungan program, data dan stack melampaui jumlah memori fisik yang tersedia. Sistem operasi menyimpan bagian-bagian proses yang sedang digunakan di memori utama (main memory) dan sisanya ditaruh di disk. Begitu bagian di disk diperlukan, maka bagian di memori yang tidak diperlukan akan disingkirkan (swap-out) dan diganti (swap-in) oleh bagian disk yang diperlukan itu.

    Memori virtual diimplementasikan dalam sistem multiprogramming. Misalnya: 10 program dengan ukuran 2 Mb dapat berjalan di memori berkapasitas 4 Mb. Tiap program dialokasikan 256 KByte dan bagian-bagian proses di-swap masuk dan keluar memori begitu diperlukan. Dengan demikian, sistem multiprogrammingmenjadi lebih efisien.

    Memori virtual dapat dilakukan melalui dua cara:

    1. Permintaan pemberian halaman (demand paging).

    2. Permintaan segmentasi (demand segmentation). Contoh: IBM OS/2. Algoritma dari permintaan segmentasi lebih kompleks, karenanya jarang diimplementasikan

    Paging

    · membagi memory dalam ukuran yang sama, dalam potongan kecil (disebut bingkai halaman)

    · Membagi program (proses) dalam potongan kecil berukuran sama

    · Mengalokasikan jumlah bingkai halaman yang diperlukan untuk sebuah proses

    · Sistem Operasi mengelola daftar bingkai yang bebas (tidak digunakan)

    · Sebuah proses tidak memerlukan bingkai halaman yang berdampingan

    · Menggunakan tabel halaman untuk menjaga alur kerja

    · Paging –> Mempersiapkan resource untuk proses yang akan dijalankan

    Segmentasi virtual memory

    Beberapa sistem, seperti sistem Burroughs besar, tidak menggunakan paging untuk mengimplementasikan memori virtual. Sebaliknya, mereka menggunakan segmentasi, sehingga virtual address space sebuah aplikasi dibagi menjadi segmen variabel-panjang. Alamat maya terdiri dari beberapa segmen dan offset dalam segmen tersebut.

    Terutama, didukung Intel 80286 skema segmentasi yang sama sebagai pilihan, tapi itu tidak digunakan oleh sistem operasi.

    Hal ini dimungkinkan untuk menggabungkan segmentasi dan paging, biasanya membagi segmen ke halaman masing-masing. Dalam sistem yang menggabungkan mereka, seperti Multics dan System/38 IBM dan IBM System i mesin, memori virtual biasanya diimplementasikan dengan Pager, dengan segmentasi digunakan untuk menyediakan perlindungan memori. Dengan Intel 80386 dan kemudian IA-32 prosesor, segmen berada dalam ruang alamat 32-bit linear paged, sehingga segmen dapat dipindahkan ke dalam dan keluar dari ruang alamat linier, dan halaman di ruang alamat linier dapat dipindahkan masuk dan keluar dari memori utama , menyediakan dua tingkat memori virtual, namun jika ada beberapa sistem operasi melakukannya. Sebaliknya, mereka hanya menggunakan paging.

    Perbedaan antara implementasi memori virtual menggunakan halaman dan menggunakan segmen bukan hanya tentang pembagian memori dengan ukuran tetap dan variabel, masing-masing. Dalam beberapa sistem, umpamanya Multics, atau kemudian System/38 dan mesin Perdana, segmentasi itu sebenarnya terlihat oleh pengguna proses, sebagai bagian dari semantik model memori. Dengan kata lain, bukan sebuah proses hanya memiliki memori yang tampak seperti vektor besar tunggal byte atau kata-kata, itu lebih terstruktur. Hal ini berbeda dengan menggunakan halaman, yang tidak mengubah model terlihat pada proses. Hal ini memiliki konsekuensi penting.

    Segmen bukan hanya halaman "dengan panjang variabel", atau cara sederhana untuk memperpanjang ruang alamat (seperti pada Intel 80286). Dalam Multics, segmentasi itu merupakan mekanisme yang sangat kuat yang digunakan untuk menyediakan model memori virtual single-level, di mana tidak ada pembedaan antara "memori proses" dan "file system" - sebuah proses 'ruang alamat aktif hanya terdiri daftar segmen (file) yang dipetakan ke ruang alamat potensi, baik kode dan data. Hal ini tidak sama dengan fungsi mmap kemudian di Unix, karena antar-file pointer tidak bekerja saat file pemetaan ke semi- sewenang-wenang tempat. Multics memiliki seperti mode pengalamatan dibangun ke instruksi paling. Dengan kata lain itu bisa melakukan pindah referensi antar-segmen, sehingga menghilangkan kebutuhan untuk linker yang sepenuhnya. ini juga bekerja ketika proses yang berbeda memetakan file yang sama ke tempat yang berbeda dalam ruang alamat pribadi mereka.

Sabtu, 08 Mei 2010

09-05-2010

postingan pertama...
karena aq lg gandrung2 nya ma lagu ini maka ...
tara!!!! ini lyric lagunya..

Cinta kita- teuku wisnu feat shireen

Inilah aku apa adanya
Yang ingin membuatmu bahagia
Maafkan bila ku tak sempurna
Sesempurna cintaku padamu

Ini cintaku apa adanya
Yang ingin selalu di sampingmu
Ku tahu semua tiada yg sempurna
Di bawah kolong langit ini

Jalan kita masih panjang
Ku ingin kau selalu disini

Biar cinta kita tumbuh harum mewangi
Dan dunia menjadi saksinya
Untuk apa kita membuang-buang waktu
Dengan kata kata perpisahan

Demi cinta kita aku akan menjaga
Cinta kita yg telah kita bina
Walau hari terus berganti hari lagi
Cinta kita abadi selamanya

Jalan kita masih panjang
Ku ingin kau selalu disini

Biar cinta kita tumbuh harum mewangi
Dan dunia menjadi saksinya
Untuk apa kita membuang-buang waktu
Dengan kata kata perpisahan

Demi cinta kita aku akan menjaga
Cinta kita yg telah kita bina
Walau hari terus berganti hari lagi
Cinta kita abadi selamanya