Tampilkan postingan dengan label digital. Tampilkan semua postingan
Tampilkan postingan dengan label digital. Tampilkan semua postingan

Rabu, 17 April 2013

Pengenalan Arduino Duemilanove

Pengenalan Arduino Duemilanove


Gambaran Umum

Arduino Duemilanove ("2009") adalah mikrokontroler Board berbasis ATmega168 (datasheet) atau ATmega328 (datasheet). Arduino Duemilanove memiliki 14 digital input/output pin (dimana 6 diantaranya  dapat digunakan sebagai output PWM), 6 input analog, osilator 16 MHz kristal, koneksi USB, soket listrik, header ICSP, dan tombol reset. Ini berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya dengan menghubungkan ke komputer dengan kabel USB atau menghidupkannya dengan adaptor AC-DC atau baterai untuk memulainya.
"Duemilanove" artinya 2009 dalam bahasa Italia dan dinamai setelah tahun peluncurannya. Duemilanove adalah yang terbaru dalam rangkaian USB Arduino board, untuk perbandingan dengan versi sebelumnya, lihat indeks Arduino board.


Microcontroller
ATmega168
Tegangan saat Operasi
5V
Tegangan Masukan (Disarankan)
7-12V
Tegangan Masukan (Batasan)
6-20V
Digital I/O Pin
14 (termasuk 6 PWM output yang disediakan)
Input Analog Pin
6
DC Current per I/O Pin
40 mA
DC Current for 3.3V Pin
50 mA
Flash Memory
16 KB (ATmega168) atau 32 KB (ATmega328) dimana 2 KB digunakan oleh bootloader
SRAM
1 KB (ATmega168) atau 2 KB (ATmega328)
EEPROM
512 bytes (ATmega168) atau 1 KB (ATmega328)
Clock Speed
16 MHz


SKEMA & REFERENSI DESAIN

Anda dapat temukan referensi tentang Arduino Duemilanove dibawah ini : 
EAGLE files : arduino-duemilanove-reference-design.zip
Skema : arduino-duemilanove-schematic.pdf

Mapping 





Power

Arduino Duemilanove dapat diaktifkan melalui koneksi USB atau dengan power supply eksternal. Sumber daya akan dipilih secara otomatis.
Eksternal (non-USB) daya dapat berasal baik itu dari adaptor AC-DC (dinding-kutil) atau baterai. Adaptor ini dapat dihubungkan dengan mencolokkan sebuah 2.1mm steker pusat-positif ke colokan listrik board. Arahan dari baterai dapat dimasukkan ke dalam header pin Gnd dan Vin dari konektor DAYA.
Board dapat beroperasi pada persediaan eksternal 6 sampai 20 volt. Jika disertakan dengan kurang dari 7V, maka pin 5V hanya menyuplai kurang dari lima volt dan board mungkin tidak stabil. Jika menggunakan lebih dari 12V, tegangan regulator bisa panas dan merusak board. Kisaran yang disarankan adalah 7 sampai 12 volt.
Power pada pin adalah sebagai berikut:
  • VIN. Tegangan input ke papan Arduino saat menggunakan sumber daya eksternal (dibandingkan dengan 5 volt dari koneksi USB atau sumber daya lain). Anda dapat menyediakan tegangan melalui pin ini, atau jika menyediakan tegangan melalui colokan listrik, akses melalui pin ini (VIN).
  • 5V. Regulated power supply digunakan untuk daya mikrokontroler dan komponen lainnya di board. Ini dapat berasal baik dari VIN melalui regulator on-board, atau dipasok oleh USB atau suplai 5V regulated.
  • 3V3. 3,3 volt pasokan yang dihasilkan oleh chip FTDI on-board. Menarik arus maksimum 50 mA.
  • GND. Pin Ground.

Memori

ATmega168 memiliki 16 KB memori flash untuk menyimpan kode (yang 2 KB digunakan untuk bootloader), sedangkan ATmega328 memiliki 32 KB_ (juga dengan 2 KB digunakan untuk bootloader). ATmega168 memiliki 1 KB dari SRAM dan 512 byte EEPROM (yang dapat dibaca dan ditulis dengan perpustakaan EEPROM), ATmega328 memiliki 2 KB dari SRAM dan 1 KB EEPROM.

Input dan Output

Masing-masing dari 14 digital pin pada Duemilanove dapat digunakan sebagai input atau output_ menggunakan pinMode ()_ digitalWrite ()_ dan digitalRead () fungsi. Mereka beroperasi pada 5 volt. Setiap pin dapat memberikan atau menerima maksimum 40 mA dan memiliki resistor pull-up internal yang (secara default terputus) dari 20-50 kOhms. Selain itu, beberapa pin memiliki fungsi khusus:
  • Serial: 0 (RX) and 1 (TX). Digunakan untuk menerima (RX) dan mengirimkan (TX) TTL data serial. Pin ini terhubung ke pin sesuai FTDI USB-to-TTL Serial chip.
  • External Interrupts: 2 and 3. Pin ini dapat dikonfigurasi untuk memicu interrupt pada nilai yang rendah, tepi naik atau jatuh_ atau perubahan nilai. Lihat attachInterrupt () fungsi untuk rincian.
  • PWM: 3, 5, 6, 9, 10, and 11. Menyediakan 8-bit PWM output dengan analogWrite () function.
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin ini mendukung komunikasi SPI menggunakan perpustakaan SPI.
  • LED: 13. Terdapat built-in LED terhubung ke pin digital 13. Ketika pin adalah nilai HIGH, LED menyala, saat pin adalah LOW, LED Mati.
Duemilanove memiliki 6 input analog, yang masing-masing menyediakan 10 bit resolusi (yaitu 1024 nilai yang berbeda). Secara default mereka mengukur dari tanah sampai 5 volt, meskipun sebenarnya bisa diganti batas atas jangkauan mereka menggunakan pin AREF dan analogReference () function. Selain itu, beberapa pin memiliki fungsi khusus:
  • I2C: analog input pins A4 (SDA) and A5 (SCL). Mendukung I2C (TWI) komunikasi menggunakan Wire Library.
Ada beberapa pin lainnya pada board :
  • AREF. Tegangan referensi untuk input analog. Digunakan dengan analogReference ().
  • Reset. untuk me-reset mikrokontroler. Biasanya digunakan untuk menambahkan tombol reset untuk pelindung yang memblok salah satu di board.
Lihat juga pemetaan antara pin Arduino dan port ATmega168 disini

Komunikasi

Arduino Duemilanove memiliki sejumlah fasilitas untuk berkomunikasi dengan komputer, Arduino lain, atau mikrokontroler lainnya. ATmega168 dan ATmega328 menyediakan UART TTL (5V) komunikasi serial, yang tersedia di pin digital 0 (RX) dan 1 (TX). Sebuah FTDI FT232RL pada saluran forum ini komunikasi serial melalui USB dan driver FTDI (disertakan dengan versi Windows dari software Arduino) menyediakan port com virtual untuk perangkat lunak pada komputer. Perangkat lunak Arduino termasuk monitor seri yang memungkinkan data tekstual sederhana yang akan dikirim ke dan dari papan Arduino. RX dan TX LED di papan akan berkedip ketika data sedang dikirim melalui chip FTDI dan koneksi USB ke komputer (tetapi tidak untuk komunikasi serial pada pin 0 dan 1).

SoftwareSerial library memungkinkan untuk komunikasi serial pada salah satu pin digital Duemilanove.



ATmega168 dan ATmega328 juga mendukung I2C (TWI) dan komunikasi SPI. Software Arduino termasuk perpustakaan Kabel untuk mempermudah penggunaan bus I2C, lihat Dokument untuk rincian. Untuk komunikasi SPI, menggunakan SPI Library.

Pemrograman

Arduino Duemilanove dapat diprogram dengan software Arduino (download). Pilih "Arduino Diecimila atau Duemilanove w / ATmega168" atau "Arduino Duemilanove w / ATmega328" dari Tools> Board menu (sesuai dengan mikrokontroler pada Board Anda). Untuk rincian, lihat referensi dan tutorial.
ATmega168 atau ATmega328 pada Arduino Duemilanove dilengkapi preburned dengan bootloader yang memungkinkan Anda untuk meng-upload kode baru padanya tanpa menggunakan programmer hardware eksternal. Hal ini berkomunikasi menggunakan protokol STK500 asli (referensi, C file header). Anda juga bisa melewatkan bootloader dan program mikrokontroler melalui ICSP (In-Circuit Serial Programming) Header, lihat petunjuk ini untuk rincian.


USB Proteksi Arus Lebih

Arduino Duemilanove memiliki polyfuse reset yang melindungi port USB komputer Anda dari arus pendek dan arus lebih. Meskipun kebanyakan komputer memberikan perlindungan internal mereka sendiri, sekering menyediakan lapisan tambahan perlindungan. Jika lebih dari 500 mA diterapkan ke port USB, sekering akan secara otomatis memutuskan sambungan sampai pendek atau kelebihan beban dihilangkan.

Karakteristik fisik

Panjang maksimum dan lebar Duemilanove PCB adalah 2,7 dan 2,1 inci masing-masing, dengan konektor USB dan colokan listrik memanjang melewati yang pertama ukuran. Tiga lubang sekrup memungkinkan board harus terpasang ke permukaan atau case. Perhatikan bahwa jarak antara pin digital 7 dan 8 adalah 160 mil (0,16 "), bukan kelipatan genap dari 100 mil jarak pin lainnya.

Sekian Penjelasan tentang Arduino Duemilanove, semoga bermanfaat.. dan terimakasih telah berkunjung...

Selasa, 09 April 2013

Dasar Pemrograman ATmega8535


Prosedur umum untuk memprogram ATmega8535 secara berurutan adalah :

1. Menuliskan listing program menggunakan bahasa tingkat pemrograman tingkat tinggi (assembler, C, Basic, Pascal, dll) 
2. Mengkompail program ke dalam set instruksi ATmega8535 menggunakan software compiler (WinAVR, GCC, CVAVR, BASCOM, AVR-Studio, dll)
3. Memasukkan file hasil proses compile atau make ke dalam IC ATmega8535 menggunakan software downloader atau chip programmer (Ponyprog, CVAVR, USB-Downloader, dll). Biasanya file ini berekstensi .hex atau .bin.
4. IC ATmega8535 telah terprogram dan siap digunakan
Dalam praktikum ini digunakan bahasa C sebagai bahasa pemrograman dan Codevision AVR (CVAVR) sebagai compiler. CVAVR dipilih karena tersedia dalam versi bajakan (hehehe…) dan memiliki fasilitas Code Wizard yang sangat membantu. Software chip programmer menggunakan CVAVR standard V 1.24, Ponyprog2000 atau Universal ISP Programmer V 1.04, tergantung mode download, menggunakan port paralel atau port USB.
Jika menggunakan PC dengan fasilitas port paralel, pemrograman dapat dilakukan langsung menggunakan CVAVR. Sebelumnya dibuat dulu kabel downloader, untuk menghubungkan port paralel PC dengan port SPI (Serial Peripheral Interface) pada mikrokontroler.



Skema Kabel Downloader Paralel



Jika pemrograman menggunakan laptop, yang hanya mengandalkan USB, maka harus dipakai peralatan downloader via port USB, seperti AVRdoper, USB-downloader, dll. 



Langkah untuk menghasilkan file .hex dengan menggunakan CVAVR secara umum adalah :
1. Membuat Project baru, diberi nama.
2. Membuat file Source baru, dalam bahsa C, edit, simpan.
3. Hubungkan/koneksikan file Source dengan Project yang ada.
4. Lakukan proses make (shift+F9) untuk membuat file .hex.
5. Jika ada yang salah, dikoreksi sampai berhasil



FASILITAS DASAR INPUT-OUTPUT 
Fasilitas input/output merupakan fungsi mikrokontroller untuk dapat menerima sinyal masukan (input) dan memberikan sinyal keluaran (output). Sinyal input maupun sinyal output adalah berupa data digital 1 (high, mewakili tegangan 5 volt) dan 0 (low, mewakili tegangan 0 volt). Mikrokontroller ATMEGA8535 memiliki 4 buah PORT 8 bit bidirectional yang dapat difungsikan sebagai PORT input maupun PORT output yaitu PORTA, PORTB , PORTC, dan PORT D. Register digunakan untuk mengatur fungsi dari pin-pin pada tiap port. Register dapat dianalogikan sebagai kumpulan switch on/off yang digunakan untuk mengaktifkan fungsi apa yang akan dipakai dari port mikrokontroller. Pada setiap port pin terdapat 3 buah register 8 bit: DDRxn, PORTxn, dan PINxn. 
Register DDRxn digunakan untuk menentukan arah dari pin yang bersangkutan. Jika DDRxn diberikan nilai 1 (high), maka pin digunakan sebagai output. Jika DDRxn diberikan nilai 0 (low), maka pin difungsikan sebagai input. Register PORTxn digunakan untuk mengaktifkan pull-up resistor (pada saat pin difungsikan sebagai input), dan memberikan nilai keluaran pin high/low (pada saat difungsikan sebagai output). PINxn merupakan register yang berfungsi untuk mengetahui keadaan tiap-tiap pin pada mikrokontroller. Register ini digunakan untuk membaca keadaan pin pada saat difungsikan sebagai input. 



Rangkaian Output LED dan Input Tombol



Percobaan pertama adalah menyalakan LED sesuai dengan pola tertentu. Sesuai skema, LED dikonfigurasikan dalam posisi SINK, artinya LED menyala jika port yang bersesuaian diberi logika 0 (tegangan 0 volt atau dianggap ground). Demikian halnya dengan saklar tombol. Jika ditekan, maka port yang bersesuaian akan terhubung ke ground.



Tugas : menyalakan LED yang terhubung ke port B, selang seling ON dan OFF dimulai dari port B yang paling besar (PORT B.7)



Penyelesaian : 
1. Konfigurasikan PORT B sebagai keluaran
2. Kirimkan urutan bilangan 1 0 1 0 1 0 1 0




Pelaksanaan tanpa menggunakan CodeWizard AVR:
1. Hubungkan PC dengan minimum system 8535 melalui port ISP. Nyalakan catu daya.
2. Buka Codevision AVR, lakukan konfigurasi chip programmer. Pilih menu Setting>>Programmer, lalu pilih type Kanda System STK200+/300.
3. Pilih menu File>>New, pilih Project.
4. Jika ditawari untuk menggunakan CodeWizardAVR, pilih No saja dulu.
5. Beri nama project baru dengan nama “kenalan” (tanpa “)
6. Buat file source C. Pilih menu File>> New, pilih Source.
7. Ketikkan listing seperti ini.



#include 
void main(void)
{
DDRB=0xFF;
PORTB=0xFF;
while(1)
{
PORTB=0xAA;
}
}
8. Simpan dulu file C nya. Beri nama “nocw” saja.
9. Lakukan konfigurasi project. Pilih menu Project>>Configure. Tekan tombol Add, lalu pilih file dengan nama “nocw”. Pilih tab C Compiler. Pada pilihan Chip pilih Atmega8535. Ubah Clock menjadi 4 MHz. Lalu pilih tab After Make, centang pilihan Program the Chip. Setelah semua selesai, klik OK.
10. Simpan dulu filenya.
11. Lakukan compile dengan menekan shift+F9. Jika tidak ada pesan error atau peringatan, maka klik Program. Tunggu sebentar, semoga tidak ada kesalahan teknis.
12. Amati keluaran LED pada sismin.

Pelaksanaan menggunakan CodeWizard AVR:
1. Hubungkan PC dengan minimum system 8535 melalui port ISP. Nyalakan catu daya.
2. Buka Codevision AVR, lakukan konfigurasi chip programmer. Pilih menu Setting>>Programmer, lalu pilih type Kanda System STK200+/300.
3. Pilih menu File>>New, pilih Project.
4. Jika ditawari untuk menggunakan CodeWizardAVR, pilih Yes.
5. Pada tab Chip, pilih 8535 dengan clock 4 MHz.
6. Pilih tab Ports, lalu pilih tab Port B. Setelah itu klik semua pilihan di bawah tulisan Data Direction dari In berubah menjadi Out. Klik juga semua pilihan di bawah tulisna Pull-up/Output Value dari 0 menjadi 1.
7. Pilih menu File>>Generate, save and exit.
8. Beri nama sourcenya dengan nama withcw
9. Beri nama projectnya dengan nama kenalan2. juga file cwp-nya.
10. Lihatlah, program awal sudah dibuatkan. Scroll ke bawah, amati tulisan DDRB dan PORT B. Bandingkan nilainya dengan listing program sebelumnya. Sama …
11. Scroll lagi ke bawah. Cari tulisan //place your code here. Di bawahnya tuliskan perintah PORTB=0xAA;
12. Simpan dulu file C nya. 
13. Lakukan konfigurasi project. Pilih menu Project>>Configure. Lalu pilih tab After Make, centang pilihan Program the Chip. Setelah semua selesai, klik OK.
14. Lakukan compile dengan menekan shift+F9. Jika tidak ada pesan error atau peringatan, maka klik Program. Tunggu sebentar, semoga tidak ada kesalahan teknis.
15. Amati keluaran LED pada sismin.

PENJELASAN
1. Semua port 8 bit memiliki indeks 0 s/d 7. Misalkan PORTB.0, PORTB.1 s/d PORTB.7
2. Indeks port yang paling besar merupakan bagian Most Significant Bit (MSB).
3. Indeks port yang paling kecil merupakan bagian Least Significant Bit (LSB).
4. Penulisan bilangan biner, yang paling kiri adalah MSB, dan sebaliknya. 
5. Biasakan menuliskan data dalam format Heksadesimal. Syntax-nya adalah 0xXX di mana XX merupakan bilangan heksadesimal. Misalkan dituliskan PORTB=0xAA, artinya kita memasukkan data AA atau 1 0 1 0 1 0 1 0 ke port B.
6. DDRB=0xFF artinya kita memasukkan bilangan 1 1 1 1 1 1 1 1 ke Data Direction Register B, yang membuat semua pin B menjadi output.
7. PORTB=0xFF artinya kita memasukkan bilangan 1 1 1 1 1 1 1 1 ke Register PORT B, yang membuat semua pin B menjadi berlogika high. 
8. Perintah #include artinya kita menggunakan file Header mega8535.h yang berisi perintah-perintah yang dapat dikenali oleh compiler. Nanti kita akan menggunakan header-header lainnya.
9. void main(void) menunjukkan program utama.
10. Tulisan yang berada di belakan tanda // dan berwarna biru dianggap sebagai komentar, dan tidak dijalankan dalam program. Demikian juga tulisan di antara tanda /* …. */
11. while (1) artinya adalah looping yang tanpa henti.

LATIHAN 1. LAMPU BERKEDIP

Masukkan listing berikut ini ke dalam 8535.

#include
#include
void main()
{
DDRB=0xFF;
while(1)
{
PORTC=0;
delay_ms(1000);
PORTC=0xFF;
delay_ms(1000);
}
}

PENJELASAN
1. Pada program di atas, digunakan file header untuk mengijinkan digunakannya perintah/fungsi delay_ms(1000). 
2. Perintah ini artinya melakukan delay/penundaan dalam satuan milidetik, sebanyak data yang dimasukkan dalam (…).
3. Agar lama delaynya akurat, maka setting clock pada 8535 harus persis sama dengan nilai osilator kristal yang dipasang.

TIPE DATA

Tipe data yang dapat dioperasikan dalam C untuk aplikasi mikrokontroler adalah :
1. byte. Mulai 0 s/d 255 (8 bit)
2. char. Mulai -128 s/d 127 (8 bit)
3. unsigned. Sama dengan byte. (8 bit)
4. int. Mulai -32768 s/d 32767 (16 bit)
5. Unsigned int. Mulai 0 s/d 65535 (16 bit)
6. long int (int versi 32 bit)
7. float dan double mulai 1,175e-38 s/d 3,402e38 (32 bit)

VARIABEL
Variabel Global, digunakan di seluruh program. Dideklarasikan di luar fungsi, di bagian paling atas. Saat program berjalan, jika tidak ditentukan, akan bernilai 0. Variabel Lokal, digunakan secara lokal di dalam fungsi tertentu. Dideklarasikan di dalam fungsi tersebut, dan tidak diinisialisasikan pada awal program berjalan. Variabel dalam bentuk Array, indeks paling kecilnya adalah 0.
OPERATOR ARITMATIKA
* Multiplication x*y kalikan x dengan y 
/ Division x/y bagi x dengan y 
% Modulo x%y sisa x dibagi oleh y 
+ Addition x+y jumlahkan x dan y 
- Subtraction x-y Kurangkan y dari x 
++ Increment x++ Increment x setelahnya 
-- Decrement --x Decrement x sebelumnya
- Negation -x Kalikan x dengan –1 

OPERATOR LOGIKA. 
> Greater than x>y 1 jika terpenuhi 
>= Greater than or equal to x>=y 1 jika terpenuhi 
< Less than x<= Less than or equal to x<=y 1 jika terpenuhi == Equal to x==y 1 jika sama != Not equal to x!=y 1 jika tidak sama ! Logical NOT !x 1 jika x adalah 0 && Logical AND x&&y 0 jika x atau y ada yang 0 || Logical OR x||y 0 jika x dan y adalah 0 OPERATOR BITWISE ~ Bitwise complement ~x Mengubah 1 jadi 0 dan sebaliknya NOT & Bitwise AND x&y AND Bitwise antara x dan y | Bitwise OR x|y OR Bitwise x dan y ^ Bitwise exclusive OR x^y XOR Bitwise << Left shift x<<2 geser ke kiri 2 posisi bit >> Right shift x>>3 geser ke kanan3 posisi bit 

Nb. Syntax variabel = variabel & data dapat dituliskan variabel &= data
KONTROL ALIRAN
Struktur if – else
if (expression) 
statement 1
else 
statement2
artinya jika expression bernilai true, statement 1 dikerjakan. Kalau tidak statement 2 dikerjakan.

Struktur – while

while(expression)
{
Statement
}

artinya jika expression bernilai true, statement dikerjakan. Kalau false, selesai.

Struktur for –
For(expression1; expression2; expression3)
{
Statement
}

Expression1 adalah inisialisasi, Expression3 adalah operasi atau fungsi yang dilakukan, Expression2 adalah pengujian. Selama Expression2 terpenuhi, statement dikerjakan. Jika tidak, selesai. 

LATIHAN 2. MEMBACA TOMBOL:

#include
#define tombol PIND

void main()
{
DDRB=0xFF;
DDRD=0x00;
PORTD=0XFF;
while(1)
{
if((tombol&0x01)==0) PORTB=0x55;
if((tombol&0x02)==0) PORTB=0xAA;
if((tombol&0x04)==0) PORTB=0x00;
if((tombol&0x08)==0) PORTB=0xFF;
}
}

PENJELASAN :
1. Tombol dipasang di PORTD. Jika ditekan berlogika 0.
2. Lampu LED dipasang di PORTB. Jika berlogika 0 akan menyala.

Pengenalan ATMega8535


Mikrokontroller merupakan contoh suatu sistem komputer sederhana yang masuk dalam kategori embedded komputer. Di dalam sebuah mikrokontroller terdapat komponen-komponen seperti: processor, memory, clock, peripheral I/O, dll. Mikrokontroller memiliki kemampuan manipulasi data (informasi) berdasarkan suatu urutan instruksi (program) yang dibuat oleh programmer. Mikrokontroller adalah piranti elektronik yang dikemas dalam bentuk sebuah IC (Integrated Circuit) tunggal, sebagai bagian utama dan beberapa peripheral lain yang harus ditambahkan, seperti kristal dan kapasitor. 


Mikrokontroller AVR memiliki arsitektur RISC 8 Bit, sehingga semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam satu siklus instruksi clock. Bandingkan dengan instruksi keluarga MCS-51 (arsitektur CISC) yang membutuhkan siklus 12 clock. RISC adalah Reduced Instruction Set Computing sedangkan CISC adalah Complex Instruction Set Computing.
AVR dikelompokkan kedalam 4 kelas, yaitu ATtiny, keluarga AT90Sxx, keluarga ATmega, dan keluarga AT86RFxx. Dari kesemua kelas yang membedakan satu sama lain adalah ukuran onboard memori, on-board peripheral dan fungsinya. Dipilih Atmega8535 karena populasi yang banyak, sehingga ketersediaan komponen dan referensi penunjang lebih terjamin.

Tabel Perbandingan Spesifikasi dan Fitur keluarga AVR
Keterangan: 
• Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil perencanaan, yang harus dijalankan oleh mikrokontroler
• RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan data sementara dan pengolahan data ketika program sedang running
• EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk penyimpanan data secara permanen oleh program yang sedang running
• Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun masukan bagi program
• Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa
• UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus secara serial asynchronous
• PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa
• ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu
• SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara serial synchronous
• ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal

Arsitektur ATmega8535 
• Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D 
• ADC 10 bit sebanyak 8 Channel 
• Tiga buah timer / counter 
• 32 register 
• Watchdog Timer dengan oscilator internal 
• SRAM sebanyak 512 byte 
• Memori Flash sebesar 8 kb 
• Sumber Interrupt internal dan eksternal 
• Port SPI (Serial Peripheral Interface) 
• EEPROM on board sebanyak 512 byte 
• Komparator analog 
• Port USART (Universal Shynchronous Ashynchronous Receiver Transmitter)

Fitur ATmega8535
• Sistem processor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. 
• Ukuran memory flash 8KB, SRAM sebesar 512 byte, EEPROM sebesar 512 byte. 
• ADC internal dengan resolusi 10 bit sebanyak 8 channel 
• Port komunikasi serial USART dengan kecepatan maksimal 2.5 Mbps 
• Mode Sleep untuk penghematan penggunaan daya listrik 

Konfigurasi pin ATmega8535
• VCC merupakan pin yang berfungsi sebagai pin masukan catudaya 
• GND merupakan pin Ground 
• Port A (PA0...PA7) merupakan pin I/O dan pin masukan ADC 
• Port B (PB0...PB7) merupakan pin I/O dan pin yang mempunyai fungsi khusus yaitu Timer/Counter, komparator Analog dan SPI 
• Port C (PC0...PC7) merupakan port I/O dan pin yang mempunyai fungsi khusus, yaitu komparator analog dan Timer Oscillator 
• Port D (PD0...PD1) merupakan port I/O dan pin fungsi khusus yaitu komparator analog dan interrupt eksternal serta komunikasi serial 
• RESET merupakan pin yang digunakan untuk mereset mikrokontroler 
• XTAL1 dan XTAL2 merupakan pin masukan clock eksternal 
• AVCC merupakan pin masukan untuk suplai tegangan ADC 
• AREF merupakan pin masukan tegangan referensi untuk ADC

Pin-out ATmega8535

Peta Memory ATmega8535
ATmega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Memori data terbagi menjadi 3 bagian yaitu : 32 buah register umum, 64 buah register I.O, dan 512 byte SRAM internal. Register untuk keperluan umum menempati space data pada alamat terbawah yaitu $00 sampai $1F. Sementara itu register khusus untuk menangani I/O dan kontrol terhadap mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari $20 sampai $5F. Register tersebut merupakan register yang khusus digunakan untuk mengatur fungsi terhadap berbagai peripheral mikrokontroler, seperti kontrol register, timer/counter, fungsi fungsi I/O, dan sebagainya. Register khusus alamat memori secara lengkap dapat dilihat pada tabel dibawah. Alamat memori berikutnya digunakan untuk SRAM 512 byte, yaitu pada lokasi $60 sampai dengan $25F.


Peta Memori Data ATmega8535
Memori program yang terletak pada Flash Perom tersusun dalam word atau 2 byte karena setiap instruksi memiliki lebar 16-bit atau 32bit. AVR ATmega8535 memiliki 4KByte x 16 Bit Flash Perom dengan alamat mulai dari $000 sampai $FFF. AVR tersebut memiliki 12 bit Program Counter (PC) sehingga mampu mengalamati isi Flash.

Memori Program AVR ATmega8535
Selain itu AVR ATmega8535 juga memilki memori data berupa EEPROM 8-bit sebanyak 512 byte. Alamat EEPROM dimulai dari $000 sampai $1FF.

Status Register
Status register adalah register berisi status yang dihasilkan pada setiap operasi yang dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti CPU mikrokontroler.


Status Register ATmega8535
Penjelasan
• Bit7 >>> I (Global Interrupt Enable), Bit harus di Set untuk mengenable semua jenis interupsi. 
• Bit6 >>> T (Bit Copy Storage), Instruksi BLD dan BST menggunakan bit T sebagai sumber atau tujuan dalam operasi bit. Suatu bit dalam sebuah register GPR dapat disalin ke bit T menggunakan instruksi BST, dan sebaliknya bit T dapat disalin kembali ke suatu bit dalam register GPR dengan menggunakan instruksi BLD. 
• Bi5 >>> H (Half Cary Flag) 
• Bit4 >>> S (Sign Bit) merupakan hasil operasi EOR antara flag -N (negatif) dan flag V (komplemen dua overflow). 
• Bit3 >>> V (Two's Component Overflow Flag) Bit ini berfungsi untuk mendukung operasi matematis. 
• Bit2 >>> N (Negative Flag) Flag N akan menjadi Set, jika suatu operasi matematis menghasilkan bilangan negatif. 
• Bit1 >>> Z (Zero Flag) Bit ini akan menjadi Set apabila hasil operasi matematis menghasilkan bilangan 0. 
• Bit0 >>> C (Cary Flag) Bit ini akan menjadi set apabila suatu operasi menghasilkan carry. 

SISTEM MINIMUM ATmega8535
Sistem minimum (minsys) mikrokontroler adalah rangkaian elektronik minimum yang diperlukan untuk beroperasinya IC mikrokontroler. Rangkaian ini kemudian bisa dihubungkan dengan rangkaian lain untuk menjalankan fungsi tertentu. 

Sistem Minimum Atmega8535
Untuk membuat rangkaian minimum ATmega8535 diperlukan beberapa komponen yaitu:
• IC mikrokontroler ATmega8535
• 1 XTAL 4 MHz atau 8 MHz atau 11.0592 MHz (XTAL1)
• 3 kapasitor kertas yaitu dua 22 pF (C2 dan C3) serta 100 nF (C4)
• 1 kapasitor elektrolit 4.7 uF (C12) 2 resistor yaitu 100 ohm (R1) dan 10 Kohm (R3)
• 1 tombol reset pushbutton (PB1)
Selain itu tentunya diperlukan power suply yang bisa memberikan tegangan 5V DC. Rangkaian sistem minimum ini sudah siap untuk menerima sinyal analog (fasilitas ADC) di port A. 

Rabu, 03 April 2013

Arduino: Membaca Data Jarak Menggunakan Modul Sensor Ultrasonik PING Parallax

Arduino: Membaca Data Jarak Menggunakan Modul Sensor Ultrasonik PING Parallax

Pada tutorial ini digunakan software Arduino 1.0.1 yang merupakan versi terbaru IDE Arduino. Namun tak hanya menggunakan versi terbaru, sebagai perbandingan, digunakan juga IDE Arduino-0022.
Pada kedua versi Arduino tersebut terdapat contoh program sensor PING yang dapat langsung diuji-coba tanpa modifikasi atau dengan sedikit modifikasi. Untuk praktisnya, kita akan merangkai Starduino Board dan PING Parallax sesuai dengan contoh program PING yang tersedia pada IDE Arduino.


starduino_ping_parallax400

Rangkaian Starduino + PING Parallax
Modul sensor ultrasonik PING buatan Parallax memiliki 3 kaki yakni: GND5V, dan SIG. Gambar di bawah ini menunjukkan koneksi modul PING dengan Starduino Board.

starduino_ping_diagramb
Kaki SIG dari modul PING dihubungkan dengan Pin-7 dari Starduino. Kaki GND dan 5Vdihubungkan ke GND dan +5V dari Starduino.
Setelah Starduino dan PING terangkai dengan benar, maka langkah selanjutnya adalah membuka sketch Ping yang telah tersedia pada contoh-contoh program bawaan IDE Arduino 1.0.1 maupun Arduino-0022 seperti ditunjukkan pada screenshot di bawah ini.
arduino_sensor_ping
Sebelum program ini kita upload ke Starduino, kita edit sedikit program Ping pada bagian tampilan data serial dan delay sebagai berikut:
   Serial.print("Jarak = ");
   Serial.print(inches);
   Serial.print("in, ");
   Serial.print(cm);
   Serial.print("cm");
   Serial.println();
   delay(500);
Baris perintah pertama yang bercetak tebal menambahkan tulisan ‘Jarak =’ sebelum menampilkan nilai jarak dalam inci dan centimeter. Perubahan program lainnya adalah parameter fungsi delay() yang awalnya bernilai 100 diganti menjadi 500.
Selanjutnya, kita lakukan upload program ke Starduino dan buka window Serial Monitor. Jika tidak ada kesalahan pada hardware dan komunikasi, maka Starduino akan melakukan pengukuran dan mengirimkan hasil pengukuran jarak ke PC melalui port serial.
LED pada modul PING akan berkedip setiap 1/2 detik sebagai tanda bahwa modul PING bekerja memancarkan suara ultrasonik. Teknik pengukuran jarak dilakukan dengan mengukur lebar-pulsa dalam satuan waktu yang menunjukkan lamanya waktu semenjak PING memancarkan suara ultrasonik hingga menerima pantulan suara ultrasonik, atau mengalami TIMEOUT. Selanjutnya, program menghitung jarak dalam inci dan centimeter menggunakan fungsi-fungsi berikut:
long microsecondsToInches(long microseconds)
{
  // According to Parallax’s datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}
Berikut adalah tampilan window Serial Monitor yang menampilkan data yang dikirimkan oleh Starduino Board melalui port serial RS232.
starduino_ping_com1
Nah, sangat mudah bukan? Dengan dukungan contoh-contoh program dan library-library siap pakai yang disediakan oleh Arduino, kita dapat membuat prototipe sistem dengan sangat cepat. Tak heran jika Arduino mengklaim dirinya sebagai Rapid Prototyping Platform.
Tak hanya mudah, Arduino juga murah. Dan tak hanya murah, Arduino juga menerapkan kebijakan open-source untuk software dan hardwarenya, sehingga siapapun boleh membuat sendiri versi Arduino-nya masing-masing. Termasuk juga saya dengan versi Starduino yang masih berbasis ATmega8.
Dengan Starduino dan PING Parallax, kita dapat membuat berbagai aplikasi berbasis pengukuran jarak seperti monitoring level air, pengukur tinggi badan, sistem pengaman mesin potong, dan lain-lain.
Berikut adalah screenshot aplikasi monitoring level ketinggian air dalam tandon dan aplikasi pengukur tinggi badan berbasis Starduino dan sensor jarak ultrasonik PING Parallax. Program dibuat menggunakan VB.NET 2005 Express Edition.
starduino_ping_levelair
starduino_ping_tinggibadan

terimakasih atas kunjungannya... Selamat bermanfaat....