BAB II LANDASAN TEORI 2.1 Pendahuluan Perubahan iklim global

advertisement
BAB II
LANDASAN TEORI
2.1 Pendahuluan
Perubahan iklim global yang terjadi pada saat ini menyebabkan kondisi
cuaca susah ditebak , hal ini menyebabkan perubahan cuaca secara tiba tiba dari
panas ke hujan sebaliknya. Akibatnya banyak aktifitas yang terganggu akibat hal
tersebut, diantaranya kegiatan menjemur pakaian. Adalah suatu kegiatan yang
sering dilakukan di dalam kehidupan rumah tangga.dan biasa kita lihat menjemur
pakaian sering kita tinggal bepergian, sehingga tidak sempat lagi untuk
mengangkat jemuran pada waktu akan turun hujan atau hari sudah malam,untuk
mengatasi masalah tersebut perlu adanya sistem kontrol otomatis untuk menjemur
pakaian.
Dalam perancangan impleentasi sistem atap rumah otomatis, masalah
masalah yang dapat dipecahkan adalah meliputi : sistem pengendali atap
rumah,arsitektur perangkat keras, meliputi : perangkat elektroniki dan mekanik.
Penggunaan alat ini akan sangat membantu dalam kegiatan sehari hari.
2.2 Dasar Sistem Kendali
Sistem kendali atau sistem kontrol merupakan suatu sistem yang
keluaranya atau outputnya dikendalikan pada suatu nilai tertentu atau untuk
merubah beberapa ketentuan yang telah ditetapkan dari masukan atau input ke
sistem. Untuk merancang suatu sistem kendali yang dapat merespon perubahan
tegangan dan menjalankan perintah berdasarkan situasi yang terjadi, maka
diperlukan pemahaman tentang sistem kendali (controll system). Sistem kendali
4
5
merupakan suatu kondisi dimana sebuah perangkat (device) dapat
dikontrol sesuai dengan perubahan situasi.
2.3 Komponen Hardware
2.3.1
Power Supplay
Gambar 2.1 : Power supplay
Power supply adalah perangkat keras berupa kotak yang isinya merupakan
kabel-kabel untuk menyalurkan tegangan ke dalam perangkat keras lainnya. Input
power supply berupa arus bolak-balik (AC) sehingga power supply harus
mengubah tegangan AC menjadi DC (arus searah). Besarnya listrik yang mampu
ditangani power supply ditentukan oleh dayanya dan dihitung dengan satuan
Watt. Powersupplay berfungsi sebagai penyupali tenaga untuk menghidupkan
sebuah sistem.
2.3.2
Kapasitor
Gambar 2.2 : Kapasitor
6
Kapasitor adalah perangkat komponen elektronika yang berfungsi untuk
menyimpan muatan listrik dan terdiri dari dua konduktor yang dipisahkan oleh
bahan
penyekat
(dielektrik)
pada
tiap
konduktor
atau
yang
disebut
keping. Kapasitor biasanya disebut dengan sebutan kondensator yang merupakan
komponen listrik dibuat sedemikian rupa sehingga mampu menyimpan muatan
listrik.
Prinsip kerja kapasitor pada umunya hampir sama dengan resistor yang
juga termasuk ke dalam komponen pasif. Komponen pasif adalah jenis komponen
yang bekerja tanpa memerlukan arus panjar. Kapasitor sendiri terdiri dari dua
lempeng logam (konduktor) yang dipisahkan oleh bahan penyekat (isolator).
Penyekat atau isolator banyak disebut sebagai bahan zat dielektrik.
2.3.3
Mikrokontroler ATMega8535
Gambar 2.3 : Minimum Sistem Atmega8535
Mikrokontroler adalah IC yang dapat diprogram berulang kali, baik ditulis
atau dihapus (Agus Bejo, 2007). Biasanya digunakan untuk pengontrolan otomatis
dan manual pada perangkat elektronika.
7
Beberapa tahun terakhir, mikrokontroler sangat banyak digunakan terutama
dalam pengontrolan robot. Seiring perkembangan elektronika, mikrokontroler
dibuat semakin kompak dengan bahasa pemrograman yang juga ikut berubah.
Salah satunya adalah mikrokontroler AVR (Alf and Vegard’s Risc processor)
ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction Set
Computing) dimana program berjalan lebih cepat karena hanya membutuhkan
satu siklus clock untuk mengeksekusi satu instruksi program. Secara umum, AVR
dapat dikelompokkan menjadi 4 kelas, yaitu kelas ATtiny, keluarga AT90Sxx,
keluarga ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masingmasing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan
instruksi yang digunakan, mereka bisa dikatakan hampir sama. Mikrokontroler
AVR ATmega8535 memiliki fitur yang cukup lengkap. Mikrokontroler AVR
ATmega8535 telah dilengkapi dengan ADC internal, EEPROM internal,
Timer/Counter, PWM, analog comparator, dll (M.Ary Heryanto, 2008). Sehingga
dengan fasilitas yang lengkap ini memungkinkan kita belajar mikrokontroler
keluarga AVR dengan lebih mudah dan efisien, serta dapat mengembangkan
kreativitas penggunaan mikrokontroler ATmega8535. Fitur-fitur yang dimiliki
oleh mikrokontroler ATmega8535 adalah sebagai berikut:
1. Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.
2. ADC internal sebanyak 8 saluran.
3. Tiga buah Timer/Counter dengan kemampuan pembandingan.
4. CPU yang terdiri atas 32 buah register.
5. SRAM sebesar 512 byte.
8
6. Memori Flash sebesar 8 kb dengan kemampuan Read While Write.
7. Port antarmuka SPI
8. EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
9. Antarmuka komparator analog.
10. Port USART untuk komunikasi serial.
11. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16
MHz.
2.3.4
Konstruksi ATMega8535
Mikrokontroler ATmega8535 memiliki 3 jenis memori, yaitu memori
program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri
dan terpisah.
a. Memori program
ATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang
terpetakan dari alamat 0000h – 0FFFh dimana masing-masing alamat
memiliki lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian
yaitu bagian program boot dan bagian program aplikasi.
b. Memori data
ATmega8535 memiliki kapasitas memori data sebesar 608 byte yang
terbagi menjadi 3 bagian yaitu register serba guna, register I/O dan
SRAM. ATmega8535 memiliki 32 byte register serba guna, 64 byte
register I/O yang dapat diakses sebagai bagian dari memori RAM
(menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O
9
(menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk
memori data SRAM.
c. Memori EEPROM
ATmega8535 memiliki memori EEPROM sebesar 512 byte yang
terpisah dari memori program maupun memori data. Memori EEPROM ini
hanya dapat diakses dengan menggunakan register-register I/O yaitu register
EEPROM Address, register EEPROM Data, dan register EEPROM Control.
Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses
data eksternal, sehingga waktu eksekusinya relatif lebih lama bila
dibandingkan dengan mengakses data dari SRAM.
ATmega8535 merupakan tipe AVR yang telah dilengkapi dengan 8
saluran ADC internal dengan fidelitas 10 bit. Dalam mode operasinya, ADC
ATmega8535 dapat dikonfigurasi, baik secara single ended input maupun
differential input. Selain itu, ADC ATmega8535 memiliki konfigurasi
pewaktuan, tegangan referensi, mode operasi, dan kemampuan filter derau
yang amat fleksibel, sehingga dengan mudah disesuaikan dengan kebutuhan
ADC itu sendiri. ATmega8535 memiliki 3 modul timer yang terdiri dari 2
buah timer/counter 8 bit dan 1 buah timer/counter 16 bit. Ketiga modul
timer/counter ini dapat diatur dalam mode yang berbeda secara individu dan
tidak saling mempengaruhi satu sama lain. Selain itu, semua timer/counter
juga
dapat
difungsikan
sebagai
sumber
interupsi.
Masing-masing
timer/counter ini memiliki register tertentu yang digunakan untuk mengatur
mode dan cara kerjanya.
10
Serial Peripheral Interface (SPI) merupakan salah satu mode
komunikasi serial syncrhronous kecepatan tinggi yang dimiliki oleh
ATmega8535. Universal Syncrhronous and Asyncrhronous Serial Receiver
and Transmitter (USART) juga merupakan salah satu mode komunikasi
serial yang dimiliki oleh ATmega8535. USART merupakan komunikasi
yang memiliki fleksibilitas tinggi, yang dapat digunakan untuk melakukan
transfer data baik antar mikrokontroler maupun dengan modul-modul
eksternal termasuk PC yang memiliki fitur UART.
USART memungkinkan transmisi data baik secara syncrhronous
maupun
asyncrhronous,
sehingga
dengan
memiliki
USART
pasti
kompatibel dengan UART. Pada ATmega8535, secara umum pengaturan
mode syncrhronous maupun asyncrhronous adalah sama. Perbedaannya
hanyalah terletak pada sumber clock saja.
Jika pada mode asyncrhronous masing-masing peripheral memiliki
sumber clock sendiri, maka pada mode syncrhronous hanya ada satu sumber
clock yang digunakan secara bersama-sama. Dengan demikian, secara
hardware untuk mode asyncrhronous hanya membutuhkan 2 pin yaitu TXD
dan RXD, sedangkan untuk mode syncrhronous harus 3 pin yaitu TXD,
RXD dan XCK
11
Pin-pin pada Mikrokontroler ATmega8535
Gambar 2.4 Konfigurasi pin ATmega8535 (Data Sheet AVR)
Konfigurasi pin ATmega8535 dengan kemasan 40 pin DIP (Dual Inline
Package) dapat dilihat pada gambar 2.1. Dari gambar di atas dapat dijelaskan
fungsi dari masing-masing pin Atmega8535 sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2. GND merukan pin Ground.
3. Port A (PortA0…PortA7) merupakan pin input/output dua arah dan pin
masukan ADC.
4. Port B (PortB0…PortB7) merupakan pin input/output dua arah dan dan pin
fungsi khusus, seperti dapat dilihat pada tabel di bawah ini.
Pin
Fungsi Khusus
PB7
SCK (SPI Bus Serial Clock)
PB6
MISO (SPI Bus Master Input/ Slave Output)
12
PB5
MOSI (SPI Bus Master Output/ Slave Input)
PB4
SS (SPI Slave Select Input)
PB3
AIN1 (Analog Comparator Negative Input)
OC0 (Timer/Counter0 Output Compare Match Output)
PB2
AIN0 (Analog Comparator Positive Input)
INT2 (External Interrupt 2 Input)
PB1
T1 (Timer/ Counter1 External Counter Input)
PB0
T0 T1 (Timer/Counter External Counter Input)
XCK (USART External Clock Input/Output)
.
Tabel 2.1 : Fungsi khusus Port B
5. Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin fungsi
khusus, seperti dapat dilihat pada tabel dibawah ini.
Pin
Fungsi khusus
PC7
TOSC2 ( Timer Oscillator Pin2)
PC6
TOSC1 ( Timer Oscillator Pin1)
PC5
Input/Output
PC4
Input/Output
PC3
Input/Output
PC2
Input/Output
PC1
SDA ( Two-wire Serial Buas Data Input/Output Line)
PC0
SCL ( Two-wire Serial Buas Clock Line)
Tabel 2.2 : Fungsi khusus Port C
13
6.Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin fungsi
khusus, seperti yang terlihat pada tabel dibawah ini.
Pin
Fungsi khusus
PD7
OC2 (Timer/Counter Output Compare Match Output)
PD6
ICP (Timer/Counter1 Input Capture Pin)
PD5
OC1A (Timer/Counter1 Output Compare A Match Output)
PD4
OC1B (Timer/Counter1 Output Compare B Match Output)
PD3
INT1 (External Interrupt 1 Input)
PD2
INT0 (External Interrupt 0 Input)
PD1
TXD (USART Output Pin)
PD0
RXD (USART Input Pin)
Tabel 2.3 : Fungsi Khusus Post D
2.3.5
Sensor Hujan
Gambar 2.5 : Sensor hujan
Secara umum sensor hujan didefenisikan sebagai alat yang mampu
menangkap fenomena fisika atau kimia kemudian mengubahnya menjadi sinyal
elektrik baik arus fisik maupun tegangan.sensor hujan dirancang untuk
14
mendeteksi air pada saat turun hujan tetapi juga dapat digunakan untuk
mendeteksi level air.rangkaian sensor hujan menggunakan komponen resistor
sebagai komponen utama dan elektroda sebagai pendeteksi air.
2.3.6
LCD 16X2
Gambar 2.6 : LCD 16 X 2
Display elektronik adalah salah satu komponen elektronika yang berfungsi
sebagai tampilan suatu data, baik karakter, huruf ataupun grafik. LCD (Liquid
Cristal Display) adalah salah satu jenis display elektronik yang dibuat dengan
teknologi CMOS logic yang bekerja dengan tidak menghasilkan cahaya tetapi
memantulkan cahaya yang ada di sekelilingnya terhadap front-lit atau
mentransmisikan cahaya dari back-lit. LCD (Liquid Cristal Display) berfungsi
sebagai penampil data baik dalam bentuk karakter, huruf,dan angka.
15
2.3.7
Potensiometer
Gambar 2.7 : Potensiometer
Potensiometer adalah resistor tiga terminal dengan sambungan geser yang
membentuk pembagi tegangan dapat disetel.[1] Jika hanya dua terminal yang
digunakan (salah satu terminal tetap dan terminal geser), potensiometer berperan
sebagai resistor variabel atau Rheostat. Potensiometer biasanya digunakan untuk
mengendalikan peranti elektronik seperti pengendali suara pada penguat.
Potensiometer yang dioperasikan oleh suatu mekanisme dapat digunakan sebagai
transduser, misalnya sebagai sensor joystick.
1. Elemen resistif
2. Badan
3. Penyapu (wiper)
4. Sumbu
5. Sambungan tetap pertama
6. Sambungan penyapu
7. Cincin
16
8. Baut
9. Sambungan tetap kedua
Potensiometer jarang digunakan untuk mengendalikan daya tinggi (lebih
dari 1 Watt) secara langsung. Potensiometer digunakan untuk menyetel taraf
isyarat analog (misalnya pengendali suara pada peranti audio), dan sebagai
pengendali masukan untuk sirkuit elektronik. Sebagai contoh, sebuah peredup
lampu menggunakan potensiometer untuk menendalikan pensakelaran
sebuah TRIAC, jadi secara tidak langsung mengendalikan kecerahan lampu.
Potensiometer yang digunakan sebagai pengendali volume kadang-kadang
dilengkapi dengan sakelar yang terintegrasi, sehingga potensiometer membuka
sakelar saat penyapu berada pada posisi terendah.
2.3.8
Limit Swicth
Gambar 2.8 : Limit Switch
Limit switch merupakan jenis saklar yang dilengkapi dengan katup yang
berfungsi menggantikan tombol. Prinsip kerja limit switch sama seperti saklar
Push ON yaitu hanya akan menghubung pada saat katupnya ditekan pada batas
penekanan tertentu yang telah ditentukan dan akan memutus saat saat katup tidak
17
ditekan. Limit switch termasuk dalam kategori sensor mekanis yaitu sensor yang
akan memberikan perubahan elektrik saat terjadi perubahan mekanik pada sensor
tersebut. Penerapan dari limit switch adalah sebagai sensor posisi suatu benda
(objek) yang bergerak
2.3.9
Driver L298
Gambar 2.9 : Driver L298
IC L298 adalah sebuah IC H-bridge yang mampu mengendalikan bebanbeban induktif seperti relay, solenoid, motor DC dan motor stepper. IC L298
mempunyai 2 buah H-bridge di dalamnya sehingga bisa mengendalikan kecepatan
dan arah 2 buah motor DC dengan arus 2 Amps setiap H-bridge nya. Kedua H
bridge di dalam IC ini bisa di parallel untuk meningkatkan kemampuan menopang
arus mencapai 4 Amp.
Dalam penggunaan nya IC L298 biasanya dipasangi heat sink untuk mecegah
terjadinya over temperature. IC L 298 ini sering digunakan untuk robot line
follower, robot KRI ataupun KRCI karena praktis dan melewatkan arus yang
18
cukup besar. Spesifikasi IC L298 :Tegangan operasi mencapai 46 volts-Mampu
mengendalikan motor stepper bipolar 2 ampsMampu mengontrol arah motor DC
dengan arus maks 2 amps setiap h-bridge.Mampu mengendalikan motor DC 4
amp dengan memparalelkan kedua h-bridge di dalam IC L298. Mendukung
control PWM dengan frekuensi mencapai 20 KHZ. Mempunyai sensor arus
keluaran Mempunyai Proteksi over temperatureSupply voltage: +5 VDC
KONFIGURASI PIN IC L298
Keterangan
Input 1, input 2, input 3, input 4 dihubungkan ke mikrokontroler sebagai direksi
Enable A, Enable B dihubungkan ke Port OC pada mikro sebagai input PWM Cur
Sen A, Cur Sen B dihubungkan ke groundLogic Supply Voltage Vss dihubungkan
ke vcc mikro (5V)Supply Voltage Vs dihubungkan ke Catu Daya batere
(12V)Output 1, output 2, output 3, output 3 dihubungkan ke motor DC
2.3.10 Motor DC
Gambar 2.10 : Motor DC
Pengendali / Kontroler LCD (Liquid Cristal Display) Dalam modul LCD
(Liquid Cristal Display) terdapat microcontroller yang berfungsi sebagai
19
pengendali tampilan karakter LCD (Liquid Cristal Display). Microntroller pada
suatu LCD (Liquid Cristal Display) dilengkapi dengan memori dan register.
Memori yang digunakan microcontroler internal LCD adalah : DDRAM (Display
Data Random Access Memory) merupakan memori tempat karakter yang akan
ditampilkan berada. CGRAM (Character Generator Random Access Memory)
merupakan memori untuk menggambarkan pola sebuah karakter dimana bentuk
dari karakter dapat diubah-ubah sesuai dengan keinginan.
CGROM (Character Generator Read Only Memory) merupakan memori
untuk menggambarkan pola sebuah karakter dimana pola tersebut merupakan
karakter dasar yang sudah ditentukan secara permanen oleh pabrikan pembuat
LCD (Liquid Cristal Display) tersebut sehingga pengguna tinggal mangambilnya
sesuai alamat memorinya dan tidak dapat merubah karakter dasar yang ada dalam
CGROM. Register control yang terdapat dalam suatu LCD diantaranya adalah.
Register perintah yaitu register yang berisi perintah-perintah dari mikrokontroler
ke panel LCD (Liquid Cristal Display) pada saat proses penulisan data atau
tempat status dari panel LCD (Liquid Cristal Display) dapat dibaca pada saat
pembacaan data. Register data yaitu register untuk menuliskan atau membaca data
dari atau keDDRAM. Penulisan data pada register akan menempatkan data
tersebut keDDRAM sesuai dengan alamat yang telah diatur sebelumnya. Pin, kaki
atau jalur input dan kontrol dalam suatu LCD (Liquid Cristal Display) diantaranya
adalah : Pin data adalah jalur untuk memberikan data karakter yang ingin
ditampilkan menggunakan LCD (Liquid Cristal Display) dapat dihubungkan
dengan bus data dari rangkaian lain seperti mikrokontroler dengan lebar data 8 bit.
20
Pin RS (Register Select) berfungsi sebagai indikator atau yang menentukan jenis
data yang masuk, apakah data atau perintah. Logika low menunjukan yang masuk
adalah perintah, sedangkan logika high menunjukan data. Pin R/W (Read Write)
berfungsi sebagai instruksi pada modul jika low tulis data, sedangkan high baca
data. Pin E (Enable) digunakan untuk memegang data baik masuk atau keluar. Pin
VLCD berfungsi mengatur kecerahan tampilan (kontras) dimana pin ini
dihubungkan dengan trimpot 5 Kohm, jika tidak digunakan dihubungkan ke
ground, sedangkan tegangan catu daya ke LCD sebesar 5 Volt
Motor DC (Direct Current) adalah peralatan elektromagnetik dasar yang
berfungsi untuk mengubah tenaga listrik menjadi tenaga mekanik yang desain
awalnya diperkenalkan oleh Michael faraday lebih dari seabad yang lalu (E.
Pitowarno, 2006). Motor DC dikendalikan dengan menentukan arah dan
kecepatan putarnya. Arah putaran motor DC adalah searah dengan arah putaran
jarum jam (Clock Wise/CW) atau berlawanan arah dengan arah putaran jarum jam
(Counter Clock Wise/CCW), yang bergantung dari hubungan kutub yang
diberikan pada motor DC. Kecepatan putar motor DC diatur dengan besarnya arus
yang diberikan.
Motor DC dipakai untuk menggerakkan roda robot. Digunakan H-Brighge
IC L298 sebagai penguat motor DC yang berfungsi sebagai driver, sebab sangat
tidak mungkin mengendalikan motor DC langsung dari mikrokontroler yang
memiliki arus dan tegangan terbatas. Untuk itu digunakan H-Brihge sebagai
driver motor DC (H.Andrianto, 2008).
21
Metode Pulsa with modulation atau PWM dapat digunakan untuk mengatur
kecepatan motor dan untuk menghindarkan rangkaian mengkomsumsi daya
berlebih. PWM dapat mengatur kecepatan motor karena tegangan yang diberikan
dalam selang waktu tertentu saja. PWM ini dapat dibangkitkan melalui software.
Lebar pulsa PWM dinyatakan dalam Duty Cycle. Misalnya duty cycle 10 %,
berarti lebar pulsa adalah 1/10 bagian dari satu perioda penuh (E. Pitowarno,
2006).
2.3.11 Gear Box
Gambar 2.11. Gear box motor dc
Dalam beberapa unit mesin memiliki sistem pemindah tenaga yaitu gearbox
yang berfungsi untuk menyalurkan tenaga atau daya mesin ke salah satu bagian
mesin lainnya, sehingga unit tersebut dapat bergerak menghasilkan sebuah
pergerakan baik putaran maupun pergeseran. Gearbox merupakan suatu alat
khusus yang diperlukan untuk menyesuaikan daya atau torsi (momen/daya) dari
motor yang berputar, dan gearbox juga adalah alat pengubah daya dari motor yang
berputar menjadi tenaga yang lebih besar
22
2.2 Komponen Software
2.2.1
Pemrograman Bahasa C
Bahasa
pemrograman
C merupakan
salah
satu bahasa
pemrograman komputer. Dibuat pada tahun 1972 oleh Dennis Ritchie
untuk Sistem Operasi Unix di Bell Telephone Laboratories.Meskipun C dibuat
untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering
digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh
berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat
beberepa compiler yang sangat populer telah tersedia. C secara luar biasa
memengaruhi bahasa populer lainnya, terutama C++ yang merupakan extensi dari
C
2.2.2
Codevision AVR
CodeVision AVR merupakan sebuah software yang digunakan untuk
memprogram mikrokontroler sekarang ini telah umum. Mulai dari penggunaan
untuk kontrol sederhana sampai kontrol yang cukup kompleks, mikrokontroler
dapat berfungsi jika telah diisi sebuah program, pengisian program ini dapat
dilakukan menggunakan compiler yang selanjutnya diprogram ke dalam
mikrokontroler menggunakan fasilitas yang sudah di sediakan oleh program
tersebut. Salah satu compiler program yang umum digunakan sekarang ini adalah
CodeVision AVR yang menggunakan bahasa pemrograman C. CodeVision AVR
mempunyai suatu keunggulan dari compiler lain, yaitu adanya codewizard,
fasilitas ini memudahkan kita dalam inisialisasi mikrokontroler yang akan kita
gunakan.
23
2.2.3
AVRProg
AVRProg adalah aplikasi yang digunakan untuk mentransfer program dari
codevisionAVR ke mikrokontroler.
Download