You are on page 1of 275

PENDAHULUAN

Pada era sekarang ini mikroelektronika sangat berkembang pesat, IC dan prosesor- prosesor mini sudah banyak dipasaran dan mudah untuk didapatkan. Hal ini yang mengakibatkan mikrokontroler sangat murah karena hampir semua peralatan elektronika yang kita lihat sehari-hari menggunakan teknologi ini, seperti jam digital, pintu otomatis yang ada di mall-mall, palang pintu parkir, lampu merah, counter down (angka yang ada pada lampu merah) dan masih banyak yang lain. Jika anda melihat benda atau alat yang seperti kami sebutkan diatas pasti anda berfikir bagaimana ya cara membuat alat seperti itu??, wah pasti susah dan ribet banget !!! memang sebenarnya untuk merancang sebuah system yang menggunakan mikrokontroler membutuhkan dasar teori tentang mikrokontroler, pengetahuan elektronika dan pemrograman yang sangat mendasar dan kompleks, dan itu bukan hal yang mudah dan dapat anda pahami dalam waktu yang singkat. Namun anda tidak perlu bingung harus memulai dari mana untuk belajar mikrokontroler. dengan adanya kit ini segala kegundahan dan rasa takut anda pada mikrontroler akan teratasi. Kit ini memang ditunjukkan untuk anda yang benar-benar

awam dalam hal mikroelektronika dan pemrograman. Disini anda akan mempraktekkan secara langsung tanpa harus terlebih dahulu membaca dasar-dasar teori yang bisa membuat anda semakin bingung. Dan anda bisa langsung melihat hasil kerja anda secara real tanpa harus menggunakan simulasi dan membayangkan bagaimana hasilnya. Dalam kit ini, selain anda belajar mikrokontroler dan pemroraman juga akan menjelaskan bagaimana cara membuat PCB dengan standart pabrikan internasional dan sekali lagi untuk membuat PCB dengan satndart pabrikan internasional tidaklah serumit dan sesusah yang anda bayangkan. Dan sebenarnya sangat mudah dan tidak membutuhkan waktu yang cukup lama, bahakan hanya membutuhkan waktu + 30 menit saja. Pembuatan PCB ini akan dijelaskan pada bagian suplemen buku yang ada pada bab-bab terakhir.

Berkenalan dengan Mini32

Berkenalan dengan Mini32 Mini 32 merupakan suatu development board yang digunakan sebagai controller untuk berbagai

Mini 32 merupakan suatu development board yang digunakan sebagai controller untuk berbagai aplikasi interface, diantaranya pngendalian LED, seven-segment, dot matrix, LCD dsb. Kelebihan utama mini 32 development board ini adalah tidak membutuhkan downloader/programmer untuk mendownload program dari computer ke chip Atmega 32, cukup dengan menggunakan kabel USB mini B yang harganya jauh lebih murah dibandingkan jika anda harus membeli sebuah downloader.

Sekilas Tentang Mini-32

Apa sih mikrokontroller yang digunakan dalam Mini 32 ini ? Bagian ini akan menjawab dan menjelaskan tentang chip mikrokontroller yang digunakan pada mini 32.

Mini 32 ini menggunakan mikrokontroller ATMEL Atmega32 sebagai prosesor yang merupakan salah satu jenis mikrokontroller keluaran AVR yang menganut arsitektur RISC (Reduce Instruction Set Compute). AVR memiliki keunggulan dibandingkan mikrokontroler yang lain. AVR memiliki kemampuan eksekusi program yang sangat cepat karena sebagian besar instruksi hanya dieksekusi dalam 1 siklus clock.

Selain itu mikrokontroller ATMEL Atmega32 ini memiliki fitur yang lengkap diantaranya ADC internal, EEPROM internal, Timer/Counter, Watchdog timer, PWM, Port I/O, Komparator dll. Dengan adanya fitur yang sangat lengkap ini ATMEL Atmega32L dapat didesain dan deprogram untuk berbagai aplikasi elektronika.

Berikut akan dijelaskan beberapa fitur yang ada pada ATMEL Atmega32 :

1. Merupakan mikrokontroler AVR 18 yang mempunyai kemampuan yang tinggi dengan kebutuhan daya yang rendah.

2. Mempunyai 32 buah register.

3. fitur pheripheral

- Real time counter dengan osilator terpisah

- 4 buah chanel PWM

- Pemrograman serial USART

4. I.nput/Output

- mempunyai 32 pin I/O

- mempunyai 40 pin PDIP

5. hanya membutuhkan 2,7 5,5 V sebagai sumber tegangan/power.

Bagaimana Development Board ini disusun.

Development board ini disusun bagi Anda yang ingin belajar mikokontroller khususnya mikrokontroller Atmega32. Development board ini disusun secara sistematis dan interaktif, dimana Anda dapat belajar sekaligus mempraktekkan secara langsung apa yang sedang Anda

pelajari. Development board ini dapat dengan mudah di pelajari khusunya bagi Anda yang masih awam atau masih pemula dalam hal mikrokontroller karena dalam paket development board di sertakan modul/kit yang akan Anda pelajari disetiap bab nya. Modul/Kit yang disertakan berupa aplikasi dasar tentang materi-materi yang Anda pelajari, dan tentunya bisa Anda kembangkan menjadi sebuah alat atau sistem sesuai dengan kebutuhan Anda.

yang Anda pelajari, dan tentunya bisa Anda kembangkan menjadi sebuah alat atau sistem sesuai dengan kebutuhan
yang Anda pelajari, dan tentunya bisa Anda kembangkan menjadi sebuah alat atau sistem sesuai dengan kebutuhan

Apa itu code vision

Apa itu code vision Code vision adalah sebuah aplikasi yang digunakan untuk membantu dalam pemrograman mikrokontroler
Code vision adalah sebuah aplikasi yang digunakan untuk membantu dalam pemrograman mikrokontroler yang bekerja dalam
Code vision adalah sebuah aplikasi yang
digunakan untuk membantu dalam
pemrograman mikrokontroler yang bekerja
dalam lingkungan pengembangan perangkat
lunak yang terintegrasi (integrated development
Environment/IDE), code vision dilengkapi
dengan source code editor, compiler, linker,
dan dapat memanggil AVR studio untuk
debuggernya.

Bahasa pemrograman code vision

Bahasa pemrograman yang digunakan pada code vision yaitu menggunakan bahasa pemrograman low level language (assembly) dan high level language (C, Basic, Java, PHP dsb). Namun dalam buku ini kita akan menggunakan bahasa pemrograman high level yaitu C, karena selain mudah untuk dipahami struktur penulisannya juga lebih ringkas dibanding menggunakan bahasa assembler.

Installasi code vision

Langkah awal sebelum kita mencoba untuk menggunakan mini 32 Development System yang telah kita dapat dan kita aplikasikan menggunakan LED,Seven-Segment,LCD

dsb terlebih dahulu kita harus menginstal codevision yang terdapat pada cd source, code vision berfungsi sebagai editor serta compiler untuk mikrokontroler AVR seperti yang digunakan pada development board kita yaitu atmega32L langkahnya sebagai berikut :

1. Masukkan CD kedalam CD drive

2. Buka windows explorer

3. Pilih CD/DVD Drive

4. Buka folder code vision,double klik file dengan nama CodeVision v2.03.4.exe

Setelah kita men-doble klik file tersebut maka proses installasipun akan berjalan, proses installasi code vision sebagai berikut :

Gambar 1.1 Memilih bahasa installasi

Gambar 1.2 Kotak dialog continue setup Klik next

Gambar 1.1 Memilih bahasa installasi Gambar 1.2 Kotak dialog continue setup Klik next
Gambar 1.1 Memilih bahasa installasi Gambar 1.2 Kotak dialog continue setup Klik next

Gambar 1.3 Memilih letak Folder Installasi

Gambar 1.4 Memilih letak Shortcuts

Gambar 1.3 Memilih letak Folder Installasi Gambar 1.4 Memilih letak Shortcuts
Gambar 1.3 Memilih letak Folder Installasi Gambar 1.4 Memilih letak Shortcuts

Gambar 1.5 Informasi mengenai letak installasi, klik install

Gambar 1.6 Proses extracting file sekaligus proses installasi

Gambar 1.5 Informasi mengenai letak installasi, klik install Gambar 1.6 Proses extracting file sekaligus proses installasi
Gambar 1.5 Informasi mengenai letak installasi, klik install Gambar 1.6 Proses extracting file sekaligus proses installasi

Gambar 1.7 Proses installasi telah selesai Klik finish

Restart komputer anda

Gambar 1.7 Proses installasi telah selesai Klik finish Restart komputer anda

LED (Light Emitting Diodes)

L ight Emitting Diodes atau lebih sering disebut LED adalah komponen semikonduktor yang mampu merubah energi listrik menjadi cahaya. Sekarang ini hampir semua alat

atau instrumen menggunakan LED sebagai salah satu komponennya. LED bentuknya kecil dan harganya murah sehingga sangat sederhana untuk digunakan. LED bisa memancarkan cahaya yang berbeda bergantung pada senyawa kimia di dalam komponen semikonduktornya.

Keuntungan :

1. LED memancarkan cahaya yang lebih terang per wattnya daripada bola lampu pijar.

2. Lebih mudah dan hemat untuk menghasilkan pancaran cahaya berwarna.

3. Dapat menyala dengan cepat.

Kerugian :

Tengangannya sangat sensitive. LED harus diberikan tegangan yang lebih rendah dari batas maksimumnya dan dialirkan arus dibawah nilai batasnya. Dapat juga dirangkai seri dengan resistornya.

Simbol LED Simbol yang biasa digunakan sebagai simbol LED adalah simbol dioda standar tetapi dengan sepasang anak panah keluar yang menunjukkan bahwa dioda tersebut memancarkan cahaya.

yang menunjukkan bahwa dioda tersebut memancarkan cahaya. Gambar 2.1 Simbol LED Ada beberapa perbedaan kecil antara

Gambar 2.1 Simbol LED Ada beberapa perbedaan kecil antara beberapa simbol standar LED, ada simbol yang terkadang dihitamkan ada juga yang tidak dihitamkan. Sering juga ditemui simbol LED dengan lingkaran yang mengelilinginya, terkadang lingkaran tersebut dihitamkan, terkadang juga tidak.

Mengenal Pin LED Beberapa orang terkadang masih bingung membedakan antara mana dioda dan mana katoda dari sebuah LED.

antara mana dioda dan mana katoda dari sebuah LED. Gambar 2.2 Pin LED Seperti yang bisa

Gambar 2.2 Pin LED Seperti yang bisa dilihat, sisi katoda memiliki potongan datar pada fiber glassnya. Dapat dilihat pula bahwa sisi katoda lebih kecil dibandingkan dengan anodanya, tapi jangan tertipu pada syarat ini terutama pada LED bekas karena anda tidak tahu apakah kaki kaki LED tersebut pernah dipotong atai tidak . Kita tahu bahwa banyak sekali jenis LED yang lain, lebih amannya lihat saja datasheet nya atau mudahnya silahkan uji sebelum disolder

Rangkaian Dasar LED

Gambar 2.3 Rangkaian Led.

Rangkaian Dasar LED Gambar 2.3 Rangkaian Led.

Blinking LED/LED kedip.

Aplikasi dasar tentang led yang pertama yaitu Blink LED atau LED yang nyala secara berkedip. Disini kita akan mempraktekkan bagaimana cara untuk menghidupkan LED dengan variasi yaitu blink (berkedip). Sebelumnya kita harus membuat sebuah rangkaian led sederhana. Alat dan bahan sebagai berikut :

Alat dan Bahan :

1. Led 5mm sebanyak 5 buah.

6. Kabel IDE

2. Resistor 220 ohm sebanyak 5 buah. sebanyak 16 buah.

7. Soket IDE

3. PCB 5x10 cm. sebanyak 16 buah.

8. Black housing

4. Solder. single 8 pin.

9. Konektor IDE

5. Tenol.

Setelah semua alat dan bahan terkumpul. Susun/rangkai

led dan resistor pada PCB

sesuai dengan gambar skematik datas. Berikut contoh rangkaian led yang sudah jadi :

pada PCB sesuai dengan gambar skematik datas. Berikut contoh rangkaian led yang sudah jadi : Gambar

Gambar 2.4 Tampak depan.

Selanjutnya kita akan menghubungkan rangkaian led yang telah kita buat sebelumnya ke mini 32 dengan menggunakan kabel. Langkahnya sebagai berikut:

1. Hubungkan rangkaian LED dengan Port D pada mini 32.

2. Hubungkan mini 32 ke komputer dengan kabel USB mini B.

3. Buka code vision dan atur konfigurasi chip,clock serta Port keluarannya. Seperti penjelasan dibawah ini :

menu start all

program codevisionCAVR CodeVision C compiler, atau juga dapat melalui desktop dengan mendouble klik shortcut codevision.

aplikasi

Kita

dapat

menjalankan

ini

melalui

Gambar 2.5 berikut adalah tampilan awal codevision

Gambar 2.5 berikut adalah tampilan awal codevision

Untuk memulai projek baru /new project kita pilih menu file new maka akan muncul kotak dialog seperti dibawah ini :

new maka akan muncul kotak dialog seperti dibawah ini : Gambar 2.6membuat projek baru Pilih project

Gambar 2.6membuat projek baru

Pilih project kemudian klik OK, kemudian akan muncul kotak dialog konfirmasi kita pilih yes

kemudian akan muncul kotak dialog konfirmasi kita pilih yes Gambar 2.7 konfirmasi projek baru menggunakan codewizardAVR

Gambar 2.7 konfirmasi projek baru menggunakan codewizardAVR

Kemudian akan muncul kotak dialog konfigurasi mengenai chip serta pin yang akan kita gunakan

akan muncul kotak dialog konfigurasi mengenai chip serta pin yang akan kita gunakan Gambar 2.8 konfigurasi
akan muncul kotak dialog konfigurasi mengenai chip serta pin yang akan kita gunakan Gambar 2.8 konfigurasi

Gambar 2.8 konfigurasi CHIP dan PORT

Pada menu chip, chip yang kita gunakan pada mini 32 adalah ATmega32 dengan nilai clock 7.372000, kemudian kita setting port yang akan kita gunakan sebagai output/keluaran yang kemudian disambungkan pada rangkaian LED, sebenarnya kita dapat menggunakan salah satu dari keempat port diatas, namun pada kesematan kali ini kita hanya akan menggunakan port D sebagai output dan kita sambungkan dengan rangkaian LED. Maka kita setting port D sebagai output dengan memilih sub menu port D kemudian klik In pada bit ke-0 sampai dengan bit ke-7,maka secara otomatis akan berubah menjadi out

ke-0 sampai dengan bit ke-7,maka secara otomatis akan berubah menjadi out Gambar 2.9 langkah penyimpanan konfigurasi
ke-0 sampai dengan bit ke-7,maka secara otomatis akan berubah menjadi out Gambar 2.9 langkah penyimpanan konfigurasi

Gambar 2.9 langkah penyimpanan konfigurasi

Setelah kita setting chip, clock serta port yang kita gunakan, langkah selanjutnya adalah menyimpan konfigurasi tersebut melalui file save as, kemudian beri nama file, file yang pertama bereksistensi .cwp, file .cwp kita beri nama led_blink.cwp .kemudian pilih Generate,Save and Exit, seperti langkah sebelumnya kita beri nama file .c ini dengan nama file led_blink.c dan file .prj dengan nama led_blink.prj

led_blink.c dan file .prj dengan nama led_blink.prj Gambar 2.10 kode program yang pertama kali Kotak dialog

Gambar 2.10 kode program yang pertama kali

Kotak dialog diatas merupakan lembar kerja dimana kita akan menulis program.

Contoh Program #include <mega32.h> #include <delay.h> void main(void)

{

// fungsi utama // Loop pembuka fungsi utama

PORTD=0xFF;

// konfigurasi Port D aktif low

DDRD=0xFF;

// konfigurasi port D sebagai output

while (1)

{

// Loop pembuka while

PORTD=0xFF;

// led nyala semua

delay_ms(1000);

// tunda satu detik

PORTD=0x00;

// led mati semua

delay_ms(1000);

// tunda satu detik

}

}

// Loop pembuka while // Loop penutup fungsi utama

dan akan menghasilkan nilai

benar, maka pernyataan yang ada didalam kalang while akan dijalankan berulang dan led

Program akan berulang terus menerus karena syarat whie (1),

Save file yang sudah anda ketik dengan memilih menu File Save atau klik icon disket

pada tollbar. Pilih menu project kemudian pilih build all, kemudian akan muncul kotak

dialog sebagai berikut :

all, kemudian akan muncul kotak dialog sebagai berikut : Kotak dalog tersebut berisi tentang semua informasi

Kotak dalog tersebut berisi tentang semua informasi program yang telah kita buat sebelumnya, jika sudah muncul informasi no warning dan no errors berarti program yang telah kita buat siap untuk didownload kedalam mini 32.

Gambar 2.11 compiller information

Led berjalan (shift)

Pada praktik LED yang ke- 2 ini, kita akan mencoba menghidupkan led berjalan/geser

kanan. Seluruh proses installasi perangkat kerasny sama dengan praktik blink led, yang

membedakan hanyalah pada programnya saja

Berkut adalah script program led berjalan :

#include <mega32.h> #include <delay.h> int Lampu; void main(void)

//Deklarasi tipe data //Fungsi utama

{

DDRD=0xFF;

Lampu=1;

// Pengaturan Pin Sebagai Output // Inisialisasi variable lampu

while (1)

{

PORTD= ~Lampu;

// Nilai Lampu = Port Output

Lampu = Lampu << 1 ; // Nilai Lampu digeser kekiri 1 bit if (Lampu>128)

{

Lampu=1;

}

delay_ms(500);

}

}

// Waktu tunda

Setelah anda menulis program pada code vision kemudian simpan dengan nama led_shift. Setelah dipastikan tidak ada error dan warning (bisa dilihat pada kotak dialog information setelah program di build all), kemudian download program ke mini 32 dan lihat hasilnya.

Binary counter

Pada praktik LED yang ke- 3 ini, kita akan mencoba menghidupkan led binary counter.

Seluruh proses installasi perangkat kerasnya sama dengan praktik led sebelumnya, yang

membedakan hanyalah pada programnya saja

Berkut adalah script program led berjalan :

#include <mega32.h> #include <delay.h>

int Sign;

void main(void)

{

Sign=0;

// Deklarasi tipe data

// Fungsi Utama

//Inisialisasi nilai Sign=0

DDRD=0xFF; // Port D dikonfigurasikan sebagai output PORTD= ~Sign; // Semua keluaran Port D akan sesuai/sama dengan nilai Sign

delay_ms(1000); //Tunda 1 detik

while (1)

{

Sign ++;

// Nilai Sign akan bertambah 1

PORTD= ~Sign;

delay_ms(1000);

if (Sign==255)

// Semua keluaran Port D akan sesuai/sama dengan

//Tunda 1 detik

nilai Sign

{

 

Sign=0;

// Nilai Sign diubah kembali ke posisi nol

}

}

}

Setelah anda menulis program pada code vision kemudian simpan dengan nama

led_bc. Setelah dipastikan tidak ada error dan warning ( bisa dilihat pada kotak dialog

information setelah program di build all), kemudian download program ke mini 32 dan lihat

hasilnya.

Pengenalan Seven Segment.

Seven Segment adalah suatu segmen - segmen yang digunakan menampilkan angka. Seven segment ini tersusun atas 7 batang LED yang disusun membentuk angka 8 dengan menggunakan huruf a-f yang disebut DOT MATRIKS. Setiap segmen ini terdiri dari 1 atau 2 Light Emitting Diode ( LED ).

disebut DOT MATRIKS. Setiap segmen ini terdiri dari 1 atau 2 Light Emitting Diode ( LED

Gambar 3.1 Skema seven segment.

Jenis- jenis Seven Segment

Common Anoda Disini, semua anoda dari diode disatukan secara parallel dan semua itu dihubungkan ke VCC dan kemudian LED dihubungkan melalui tahanan pembatas arus keluar dari penggerak. Karena dihubungkan ke VCC, maka Common Anoda ini berada pada kondisi Aktif High.

Common Katoda Disini semua katoda disatukan secara parallel dan dihubungkan ke Ground. Karena seluruh katoda dihubungkan ke Ground, maka Common Katoda ini berada pada kondisi Aktif Low.

Gambar 3.2 Seven Segment Common Anoda dan Common Katoda.

Gambar 3.2 Seven Segment Common Anoda dan Common Katoda.

berikut adalah tampilan dari seven segment

berikut adalah tampilan dari seven segment Gambar 3.3 Tampilan seven segment. setelah melihat hasil dari tampilan

Gambar 3.3 Tampilan seven segment.

setelah melihat hasil dari tampilan seven segment diatas pasti timbul pertanyaan, bagaimana caranya supaya seven segment bisa menampilkan tampilan seperti yang ada pada gambar diatas. Disini kita akan menjawab pertanyaan itu.

Di awal tadi kita sudah tahu apa sebenarnya seven segment itu, tiap-tiap segment yang ada pada seven segment dibentuk oleh sebuah led, dimana led tersebut akan menyala jika diberi tegangan antara 3,5 sampai dengan 5 Volt. Untuk menampilkan sebuah angka ataupun huruf pada penampil seven segment tentunya dibutuhkan beberapa led yang harus menyala, misal untuk menampilkan angka 0, maka led yang harus menyala/ON adalah A,B,C,D,E,F. Sedangkan led G dalam keadaan mati/OFF

Setelah membaca penjelasan mengenai pengenalan dasar seven segment diatas, selanjutnya kita akan menggambar rangkaian dasar sevent segment yang nantinya akan dibuat PCB serta modulnya dan setelah itu dihubungkan dengan mini 32 kemudian diprogram.

Alat dan bahan :

1. Seven segment 1 buah.

2. PCB 8x6 cm.

3. Resistor 220 Ohm 8 buah.

4. Resistor 1 Kohm 1 buah.

5. Transistor C9012 1 buah.

6. Konektor IDE single 8 pin. 7. Tenol. 8. Solder.

Gambar 3.4 Rangkaian Seven Segment.

Gambar 3.4 Rangkaian Seven Segment.

Menampilkan angka dari 0,1,2,3

dst

Menampilkan angka dari 0,1,2,3 dst

Contoh program uji segment

#include<mega32.h>

#include<delay.h>

void main(void)

{

DDRC = 0b11111111;

While(1);

{

PORTC = 0b11111110;

}

}

Test segmen 1

#include<mega32.h>

#include<delay.h>

void main(void)

{

}

DDRC = 0xFF;

While(1);

//port C di fungsikan sebagai output

{

PORTC = 0b11111101;

}

Test segmen 2

#include<mega32.h>

#include<delay.h>

void main(void)

{

DDRC = 0b11111111;

While(1);

{

PORTC = 0b11111011;

}

}

//port C di fungsikan sebagai output

Test segmen 3

#include<mega32.h>

#include<delay.h>

void main(void)

{

DDRC = 0b11111111; //port C di fungsikan sebagai output

While(1);

{

PORTC = 0b11110111;

}

}

Contoh program counter up

#include<mega32.h>

#include<delay.h>

Unsigned char Angka;

void main(void)

{

 

DDRC = 0b11111111;

Angka=0b11111001;

PORTC=Angka;

Delay_ms(1000);

Angka=0b10100100;

PORTC=Angka;

Delay_ms(1000);

Angka=0b11001111;

PORTC=Angka;

Delay_ms(1000);

}

//variabel Angka dengan tipe data unsigned char

Contoh program counter down

#include<mega32.h>

#include<delay.h>

Unsigned char Angka;

void main(void)

{

 

DDRC = 0b11111111;

Angka=0b11001111;

PORTC=Angka;

Delay_ms(1000);

Angka=0b10100100;

PORTC=Angka;

Delay_ms(1000);

Angka=0b11111001;

PORTC=Angka;

Delay_ms(1000);

}

//variabel Angka dengan tipe data unsigned char

Mungkin sebagian dari anda asing mendengar istilah dot matrik dan timbul pertanyaan, apa sih dot matrix itu??. Dot matrix merupakan salah satu penampil yang pada dasarnya tersusun dari led (dot) yang disusun berbentuk baris dan kolom(matrix). Hampir sama dengan seven segment dan hanya susunan led/segment yang berbeda. sebenarnya ada beberapa jenis dot matrix, namun pada keempatan kali ini kita hanya akan membahas dot matrix 8x8 dan 16x16. Dot matrix 8x8 artinya dot matrix yang mempunyai dot sebanyak 8 baris medatar dan 8 baris menurun. Begitu juga untuk dot matrix 16x16. Dot matrix lebih fleksibel dibandingkan dengan penampil-penampil yang lain seperti led dan seven segment, selain dapat menampilkan angka dan huruf dot matrix juga dapat untuk menampilkan gambar dan karakter/emoticon. Tapi proses scaning/penampilan tampilan agak sedikit susah. Jika pada seven segment, anda hanya perlu menghidupkan 8 buah led yang sudah tersusun, namun pada dot matrix anda harus menentukan tiap baris dan kolomnya.

Gambar 4.1 skema dot matrix.

Gambar 4.1 skema dot matrix.

Sebagai contoh jka anda ingin menampilkan angka 1 pada dot matrix 8x8 maka susunan dot yang menyala sebagai berikut :

K

O

L

O

M

BARIS

0

1

2

3

4

5

6

7

0 0

0

0

1

0

0

0

0

1 0

0

1

1

0

0

0

0

2 0

0

0

1

0

0

0

0

3 0

0

0

1

0

0

0

0

4 0

0

0

1

0

0

0

0

5 0

0

0

1

0

0

0

0

6 0

0

0

1

0

0

0

0

7 0

0

1

1

1

0

0

0

Setelah membaca sedikit pengenalan dan penjelasan mengenai dot matrix, kemudian kita buat modul dot matrix sederhana yang nantinya akan kita hubungkan dengan mini 32 dan kita program.

Alat dan Bahan :

1. Dot Matrix 5x7 1 buah (warna terserah)

2. Konektor IDC 12 pin.

3. Soket IDC 12 buah.

4. Black housing 12 buah.

5. Kabel IDC.

6. PCB 5x5 cm.

7. Solder.

8. Tenol.

Contoh program penulisan karakter pada dot matrix

#include <mega32.h> #include<delay.h> Void main(main)

{

DDRA=0xFF; //Port A di fungsikan sebagai output. DDRC=0xFF; //Port C di fungsikan sebagai output.

While(1);

{

PORTA=0b11111110;

PORTC=0b11111111;

delay_ms(1);

PORTC=0b00000000;

delay_ms(10);

PORTA=0b11111101;

PORTC=0b11111111;

delay_ms(1);

PORTC=0b0000100;

delay_ms(10);

PORTA=0b11111011;

PORTC=0b00000100;

delay_ms(1);

PORTC=0b00000000;

delay_ms(10);

PORTA=0b11110111;

PORTC=0b00000100;

delay_ms(1);

PORTC=0b00000000;

delay_ms(10);

PORTA=0b11101111;

}

}

PORTC=0b00000100;

delay_ms(1);

PORTC=0b00000000;

delay_ms(10);

Liquid Cristal Display (LCD)

Liquid Crystal Display (LCD) merupakan sebuah teknologi layar digital yang menghasilkan citra pada sebuah permukaan yang rata (flat) dengan memberi sinar pada kristal cair dan filter berwarna, yang mempunyai struktur molekul polar, diapit antara dua elektroda yang transparan. Bila medan listrik diberikan, molekul menyesuaikan posisinya pada medan, membentuk susunan kristalin yang mempolarisasi cahaya yang melaluinya.

posisinya pada medan, membentuk susunan kristalin yang mempolarisasi cahaya yang melaluinya. Gambar 4.1 LCD 16x2.

Gambar 4.1 LCD 16x2.

LCD (Liquid Crystal Display) merupakan komponen display yang dapat menampilkan karakter huruf, angka, simbol yang dikemas dalam 16 karakter display sebanyak 2 baris. Dalam penggunaannya LCD dapat diprogram dengan 4 bit dan 8 bit data, tergantung kebutuhannya. Dalam pemogramannya, LCD ditentukan dengan pengalamatan pada karakter LCD.

LCD berfungsi menampilkan suatu nilai hasil sensor, menampilkan teks, atau menampilkan menu pada aplikasi mikrokontroler. LCD ini merupakan modul LCD dengan tampilan 16 x 2 baris dengan konsumsi daya rendah. Modul tersebut dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD.

Sedang modul graphics LCD 128x64 ini hampir sama dengan LCD kolom 16x2, hanya saja pada LCD grafik ini sudah dapat menampilakan gambar/grafik dengan dimensi 128x64.

hanya saja pada LCD grafik ini sudah dapat menampilakan gambar/grafik dengan dimensi 128x64. Gambar 4.2 LCD

Gambar 4.2 LCD Grafik 128x64

Nokia 5510 LCD modul didasarkan pada PCD8544 48x48 piksel pengontrol LCD matrix ini adalah LCD grafik dimana dapat menampilkan gambar, logo dan membuat game sederhana. LCD ini menggunakan mikrokontroler Atmel 8-bit.

menampilkan gambar, logo dan membuat game sederhana. LCD ini menggunakan mikrokontroler Atmel 8-bit. Gb. LCD Nokia

Gb. LCD Nokia 5510

Pembuatan rangkaian sederhana LCD 2x16.

Alat dan Bahan :

1. Modul LCD 2x16 1 buah.

2. Konektor IDC single 20 pin.

3. Soket IDC 40 buah.

4. Black housing 40 buah.

5. Kabel IDC.

6. PCB 10x5 cm.

7. Potensio meter 10 Kohm.

8. Solder.

9. Tenol.

Berikut adalah gambar desingnnya :

Berikut adalah gambar desingnnya :

Jika anda dalam pembuatan PCB menggunakan teknik sablon maupun UV berikut adalah gambar filmnya :

Jika anda dalam pembuatan PCB menggunakan teknik sablon maupun UV berikut adalah gambar filmnya :

Berikut gambar contoh rangkaian sederhana LCD yang sudah jadi :

Berikut gambar contoh rangkaian sederhana LCD yang sudah jadi :

Pembuatan Rangkaian Dasar LCD 128x64

Alat dan bahan :

1. Modul LCD 128x64

2. Konektor IDC single 20 pin.

3. Soket IDC 40 buah.

4. Black housing 40 buah.

5. Kabel IDC.

6. PCB 10x10cm.

7. Solder.

8. Tenol.

Berikut adalah gambar designnya :

Berikut adalah gambar designnya :

Jika dalam proses pembuatan PCB menggunakan teknik UV berikut filmnya :

Jika dalam proses pembuatan PCB menggunakan teknik UV berikut filmnya :

Berikut gambar contoh hasil pembuatan rangkaian LCD 128x64 yang sudah jadi :

Berikut gambar contoh hasil pembuatan rangkaian LCD 128x64 yang sudah jadi :

Pembuatan rangkaian sederhana LCD Nokia 5510.

Alat dan bahan :

1. Modul LCD nokia 5510.

2. Konektor IDC single 8 pin.

3. Kabel IDC.

4. Soket IDC 16 buah.

5. Black housing 16 buah.

6. Kapasitor 1µf.

7. Solder.

8. Tenol.

Berikut adalah gambar desingnnya :

Berikut adalah gambar desingnnya :

Jika dalam proses pembuatan PCB menggunakan teknik UV berikut ini filmnya :

Jika dalam proses pembuatan PCB menggunakan teknik UV berikut ini filmnya :

Contoh program menampilkan karakter pada LCD 2x16

#include <mega32.h> #asm

.equ

lcd_port=0x15

#endasm #include <lcd.h>

void main(void)

;PORTC //Port C di fungsikan sebagai output ke LCD.

{

 

lcd_init(16);

lcd_gotoxy(0,0); //Kursor ditempatakan pada baris ke 0 dan kolom ke 0. lcd_putsf("BELAJAR MINI 32!");

}

Contoh Program penulisan karakter pada LCD 128x64

//*Aplikasi Dasar Graphic LCD 128x64*// Menampilkan Tulisan dan Character #include <mega32.h> #include <delay.h> #include <stdlib.h> #include <stdio.h> #include <glcd_128x64.h> void main(void)

{

delay_ms(1000);

init_lcd(); off();

// glcd

on();

// glcd

SetStartLine(0);

glcd_clear();

lcd_printf(30,1,"POWER ON");

delay_ms(50):

delay_ms(2000);

WDTCR=0x0F;

show(at[0],1);

delay_ms(2000);

glcd_clear();

while (1)

{

// watchdog

lcd_printf(4,2,"Graphics LCD");

delay_ms(2000);

glcd_clear(); lcd_printf2(4,5,"SELAMAT MENCOBA");

delay_ms(2000);

glcd_clear();

}

};

Contoh Penulisan Program Pada LCD Nokia 5510 Kode Program Sub Rutin LCD.C

#define SCK PORTA.0 #define SDI PORTA.1 #define D_C PORTA.2 #define SCE PORTA.3 #define RES PORTA.4 #define BL PORTA.5

#define LCD_X

84

#define LCD_Y

48

#define HIGH

1

#define LOW

0

#include <font5x7.c>

/*****************************************************/ void send_data_lcd(char byte)

{

 

unsigned char i; for (i=0;i<8;i++)

{

if (byte&0x80) SDI=1; else SDI=0;

byte<<=1;

SCK=1;

SCK=0;

}

}

/*****************************************************/

void write_command(char byte_command)

{

 

D_C=0;

SCE=0;

send_data_lcd(byte_command);

SCE=1;

}

/*****************************************************/ void write_data(unsigned char byte_data)

{

 

D_C=1;

SCE=0;

send_data_lcd(byte_data);

SCE=1;

}

/**********************************************************************************

***/

void send_lcd_data(flash unsigned char values[], unsigned int amount)

{

unsigned int counter;

for (counter=0; counter < amount;counter++)

{

write_data(values[counter]);

}

}

void goto_x_y(unsigned int x, unsigned int y)

{

 

write_command(0x40|(y&0x07));

// Y axis initialisation: 0100 0yyy

write_command(0x80|(x&0x7f));

// X axis initialisation: 1xxx xxxx

}

/*****************************************************/ void lcd_clear(void)

{

unsigned int ddram;

goto_x_y(0,0);

for (ddram=504;ddram>0;ddram--)

{

write_data(0x00);

}}

// 84*6=504

clear LCD

void LCD_init(void)

{

DDRA=0b11111111;

D_C=0;

SCE=0;

RES=0; delay_ms(100); RES=1;

write_command(0x21);

set

write_command(0x90);

v2: 0xa0 (for 3V) // v3: 0xc2 (2v6-5v)

write_command(0x20);

right, X axe are incremented automatically ,

,back on normal instruction set too

write_command(0x0c);

lcd_clear(); is blurred with random pixels

// Port A

// set extins extended instruction

// (0xc2Vop

v1: 0xc8 (for 3V)//

// horizontal mode from left to

// 0x22 for vertical addressing

// mod control normal change

// reset DDRAM, otherwise the lcd

}

/**********************************************************************************

***/

void lcd_printf(unsigned char x, unsigned char y, flash unsigned char *Str,

{

unsigned char n,w;

unsigned int yy;

goto_x_y(x,y);

for (n = 0;Str[n]!=0;n++)

{

 

yy=(*(Str+n)-32);

w=wide5x7[yy];

yy*=5;

send_lcd_data(&font5x7[yy],w);

write_data(0);

}

)

}

Kode Program Sub Rutin font5x7.C

/************************************************************************ *Driver for Graphic LCD Display ************************************************************************/ flash unsigned char font5x7[] = {

0x00, 0x00, 0x00, 0x00, 0x00,

// (space)

0x5F, 0x00, 0x00, 0x00, 0x00,

// !

0x07, 0x00, 0x07, 0x00, 0x00,

// "

0x14, 0x7F, 0x14, 0x7F, 0x14,

// #

0x24, 0x2A, 0x7F, 0x2A, 0x12,

// $

0x23, 0x13, 0x08, 0x64, 0x62,

// %

0x36, 0x49, 0x55, 0x22, 0x50,

// &

0x05, 0x03, 0x00, 0x00, 0x00,

// '

0x1C, 0x22, 0x41, 0x00, 0x00,

// (

0x41, 0x22, 0x1C, 0x00, 0x00,

// )

0x08, 0x2A, 0x1C, 0x2A, 0x08,

// *

0x08, 0x08, 0x3E, 0x08, 0x08,

// +

0x50, 0x30, 0x00, 0x00, 0x00,

// ,

0x08, 0x08, 0x08, 0x08, 0x08,

// -

0x30, 0x30, 0x00, 0x00, 0x00,

// .

0x20, 0x10, 0x08, 0x04, 0x02,

// /

0x3E, 0x51, 0x49, 0x45, 0x3E,

// 0

0x00, 0x42, 0x7F, 0x40, 0x00,

// 1

0x42, 0x61, 0x51, 0x49, 0x46,

// 2

0x21, 0x41, 0x45, 0x4B, 0x31,

// 3

0x18, 0x14, 0x12, 0x7F, 0x10,

// 4

0x27, 0x45, 0x45, 0x45, 0x39,

// 5

0x3C, 0x4A, 0x49, 0x49, 0x30,

// 6

0x01, 0x71, 0x09, 0x05, 0x03,

// 7

0x36, 0x49, 0x49, 0x49, 0x36,

// 8

0x06, 0x49, 0x49, 0x29, 0x1E,

// 9

0x00, 0x36, 0x36, 0x00, 0x00,

// :

0x56, 0x36, 0x00, 0x00, 0x00,

// ;

0x08, 0x14, 0x22, 0x41, 0x00,

// <

0x14, 0x14, 0x14, 0x14, 0x14,

// =

0x41, 0x22, 0x14, 0x08, 0x00,

// >

0x02, 0x01, 0x51, 0x09, 0x06,

// ?

0x7F, 0x7F, 0x7F, 0x7F, 0x7F,

// @

0x32, 0x49, 0x79, 0x41, 0x3E,// @

0x7E, 0x11, 0x11, 0x11, 0x7E,

// A

0x7F, 0x49, 0x49, 0x49, 0x36,

// B

0x3E, 0x41, 0x41, 0x41, 0x22,

// C

0x7F, 0x41, 0x41, 0x22, 0x1C,

// D

0x7F, 0x49, 0x49, 0x49, 0x41,

// E

0x7F, 0x09, 0x09, 0x01, 0x01,

// F

0x3E, 0x41, 0x41, 0x51, 0x32,

// G

0x7F, 0x08, 0x08, 0x08, 0x7F,

// H

0x41, 0x7F, 0x41, 0x00, 0x00,

// I

0x20, 0x40, 0x41, 0x3F, 0x01,// J 0x7F, 0x08, 0x14, 0x22, 0x41,// K 0x7F, 0x40, 0x40, 0x40, 0x40,// L 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 0x7F, 0x04, 0x08, 0x10, 0x7F,// N 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 0x7F, 0x09, 0x09, 0x09, 0x06,// P 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q 0x7F, 0x09, 0x19, 0x29, 0x46,// R 0x46, 0x49, 0x49, 0x49, 0x31,// S 0x01, 0x01, 0x7F, 0x01, 0x01,// T 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 0x63, 0x14, 0x08, 0x14, 0x63,// X 0x03, 0x04, 0x78, 0x04, 0x03,// Y

0x61, 0x51, 0x49, 0x45, 0x43,// Z

0x7F, 0x41, 0x41, 0x00, 0x00, // [ 0x02, 0x04, 0x08, 0x10, 0x20,// "\" 0x41, 0x41, 0x7F, 0x00, 0x00,// ] 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 0x40, 0x40, 0x40, 0x40, 0x40,// _ 0x01, 0x02, 0x04, 0x00, 0x00, // `

0x20, 0x54, 0x54, 0x78, 0x00,

// a

0x7F, 0x44, 0x44, 0x38, 0x00,

// b

0x38, 0x44, 0x44, 0x44, 0x00,

// c

0x38, 0x44, 0x44, 0x7F, 0x00,

// d

0x38, 0x54, 0x54, 0x58, 0x00,

// e

0x08, 0x7E, 0x09, 0x01, 0x00,

// f

0x08, 0x54, 0x54, 0x3C, 0x00,

// g

0x7F, 0x04, 0x04, 0x78, 0x00,

// h

0x7D, 0x00, 0x00, 0x00, 0x00,

// i

0x20, 0x40, 0x44, 0x3D, 0x00,

// j

0x7F, 0x10, 0x28, 0x44, 0x00,

// k

0x7F, 0x00, 0x00, 0x00, 0x00,

// l

0x7C, 0x04, 0x18, 0x04, 0x78,

// m

0x7C, 0x04, 0x04, 0x78, 0x00,

// n

0x38, 0x44, 0x44, 0x38, 0x00,

// o

0x7C, 0x14, 0x14, 0x08, 0x00,

// p

0x08, 0x14, 0x14, 0x7C, 0x00,

// q

0x7C, 0x08, 0x04, 0x04, 0x00,

// r

0x48, 0x54, 0x54, 0x20, 0x00,

// s

0x04, 0x3F, 0x44, 0x40, 0x00,

// t

0x3C, 0x40, 0x40, 0x3C, 0x00,

// u

0x1C, 0x20, 0x40, 0x20, 0x1C,// v

0x3C, 0x40, 0x30, 0x40, 0x3C,

0x44, 0x28, 0x10, 0x28, 0x44,// x

0x0C, 0x50, 0x50, 0x3C, 0x50,

// w

// y

0x64, 0x54, 0x4C, 0x00, 0x00,

// z

0x08, 0x36, 0x41, 0x00, 0x00, // {

0x7F, 0x00, 0x00,0x00,

0x41, 0x36, 0x08, 0x00, 0x00, // } 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> 0x08, 0x1C, 0x2A, 0x08, 0x08 // <- };

flash unsigned char wide5x7[] = { 0x02,// (space) 0x01,// ! 0x03,// " 0x05,// # 0x05,// $ 0x05,// % 0x05,// & 0x02,// '

0x00, // |

0x03,// (

0x03,// )

0x05,// *

0x05,// +

0x02,// ,

0x05,// -

0x02,// .

0x05,// /

0x05,// 0

0x05,// 1

0x05,// 2

0x05,// 3

0x05,// 4

0x05,// 5

0x05,// 6

0x05,// 7

0x05,// 8

0x05,// 9

0x05,// :

0x02,// ;

0x04,// <

0x05,// =

0x04,// >

0x05,// ?

0x05,// @

0x05,// A

0x05,// B

0x05,// C

0x05,// D

0x05,// E

0x05,// F

0x05,// G

0x05,// H

0x03,// I

0x05,// J

0x05,// K

0x05,// L

0x05,// M

0x05,// N

0x05,// O

0x05,// P

0x05,// Q

0x05,// R

0x05,// S

0x05,// T

0x05,// U

0x05,// V

0x05,// W

0x05,// X

0x05,// Y

0x05,// Z

0x03,// [

0x05,// "\"

0x03,// ]

0x05,// ^

0x05,// _

0x03,// `

0x04,// a

0x04,// b

0x04,// c

0x04,// d

0x04,// e

0x04,// f

0x04,// g

0x04,// h

0x01,// i

0x04,// j

0x04,// k

0x01,// l

0x05,// m

0x04,// n

0x04,// o

0x04,// p

0x04,// q

0x04,// r

0x04,// s

0x04,// t

0x04,// u

0x05,// v

0x05,// w

0x05,// x 0x04,// y 0x03,// z 0x03,// { 0x01,// | 0x03,// } 0x05,// -> 0x05 // <- };

Kode Program Main.C

#include <mega32.h> #include <delay.h> #include <stdlib.h>

#include <LCD5110.c> void main(void)

{

 

delay_ms(1000);

//Waktu tunda 1 detik.

LCD_init();

BL=0;

lcd_printf(4, 1, "Selamat Datang"); lcd_printf(4, 3, "Di MM UGM"); while (1)

{

}

}

Buzzer adalah Perangkat pemberi isyarat suara (sirine), yang mana dapat berupa mekanik maupun elektromekanik.Perangkat ini didasarkan pada system elektromekanik yang sama dengan bell listrik tanpa gong logam. Demikian pula, relay dapat dihubungkan ke interupsi yang berhubungan langsung dengan arus, menghubungkan ke buzz. Masukannya berupa tegangan. Ketika buzzer dihubungkan ke suatu power supply dan diberikan tegangan dan frekuensi yang semakin tinggi maka menghasilkan bunyi yang semakin keras.

Buzzer ini sering digunakan pada perangkat alarm, pewaktu dan pemberi informasi(penanda) kepada pengguna saat melakukan input atau ketikan pengguna mengeklik sebuah mouse atau tombol. Aplikasi dasar lainnya sebagai pengeras suara pada bel sekolah, jam weker, sirine kebakaran dan lain-lain.

Untuk membuat rangkaian sederhana buzzer anda bisa menggunakan PCB atau langsung dengan menggunakan kabel IDC, hala ini karena rangkaian buzzer sangat sederhana bahan yang dibutuhkan hanya buzzer,kabel IDC,soket dan black housing masing-masing 4 buah serta sebuah resistor 220 ohm.

IDC,soket dan black housing masing-masing 4 buah serta sebuah resistor 220 ohm. Gambar 5.1 Rangkaian sederhana

Gambar 5.1 Rangkaian sederhana buzzer.

Berikut adalah contoh kode program sederhana buzzer :

#include <mega32.h> #include <stdio.h> #include <delay.h> void main (void)

{

DDRC=0xff; //Port C di fungsikan sebagai output. while (1)

{

PORTC=0;

delay_ms(1);

PORTC=255;

delay_ms(1);

}

}

//

ON

// Tunda 1 ms = Tunda 0,001 detik // OFF // Tunda 1 ms = Tunda 0,001 detik

Pengenalan Tombol Pada intinya tombol merupakan sebuah saklar pusbutton, Pushbutton merupakan sebuah device untuk menghubungkan dan memutuskan rangkaian listrik antara 2 titik. Penggunaan pushbutton dikehidupan sehari-hari hampir menyentuh semua bidang. Di bidang komputer dengan keyboard dan mouse, dibidang otomotif dengan panel-panel kontrolnya, bahkan diperalatan rumah tangga sekalipun seperti kontrol peralatan listrik juga menggunakan push button.

kontrol peralatan listrik juga menggunakan push button. Gambar 12. Aktif high Push Button Aktif high pushbutton

Gambar 12. Aktif high Push Button Aktif high pushbutton merupakan pushbutton yang memiliki karakteristik saat tidak ada penekanan maka dalam keadaan terputus(off) sedangkan saat ditekan akan tersambung(on). Pada kesempatan kali ini kita akan mencoba mengaplikasikan tombol(pushbutoon, keypad 3x4, keypad Nokia 6610) dengan mini 32.

Pembuatan modul sederhana Push ON/push button.

Alat dan Bahan :

1. Push button 8 buah.

2. Konektor IDC single 10 buah.

3. Soket ICD 20 buah.

4. housing

Black

buah

20

5. Kabel IDC.

6. PCB 7,5x5 cm.

7. Solder.

8. Tenol.

Berikut adalah gambar designnya:

Berikut adalah gambar designnya:

Jika dalam pembuatan PCB anda menggunakan teknik sablon atau UV berikut gambar filmnya :

Jika dalam pembuatan PCB anda menggunakan teknik sablon atau UV berikut gambar filmnya :

Berikut gambar contoh hasil jadi rangkaian sederhana push button :

Berikut gambar contoh hasil jadi rangkaian sederhana push button :

Pembuatan PCB untuk modul keypad 3x4 :

Alat dan bahan :

1. Konektor IDC single 4 pin.

2. Soket IDC 8 buah.

3. Black housing 8 buah.

4. Kabel IDC.

5. PCB 10x10 cm.

6. Solder.

7. Tenol.

Berikut adalah gambar desingnya :

Berikut adalah gambar desingnya :

Contoh gambar yang sudah jadi :

Contoh gambar yang sudah jadi :

Pembuatan PCB untuk modul keypad Nokia 6610:

Alat dan bahan :

1. Konektor IDC single 4 pin.

2. PCB 10x10 cm.

3. Solder.

4. Tenol.

Contoh gambar yang sudah jadi :

Contoh gambar yang sudah jadi :

Untuk mengaplikasikan tombol push on akan dikombinasikan dengan rangkaian led. Tombol push on di fungsikan sebagai input sedangkan rangkaian led di fungsikan sebagai output. Contoh kode programnya sebagai berikut :

// Latihan Tombol // Menekan Tombol dan Menyalakan Led #include <mega32.h> #include <delay.h> Void TestTombol4(void); void main(void)

{

DDRC=255;

// Port Led

= Output

PORTC=255;

DDRA=0b00000000;

PORTA=0b11111111;

while(1)

{

// Port Tombol = Input

TestTombol4();

}

}

void TestTombol4(void)

//pemanggil fungsi TestTombol.

{

 

if (PINA.0==0) //Jika Pin A 0 nilainya sama dengan 0 maka akn menjalankan pernyataan selanjutnya.

{

 

PORTC=0b11111110; // Port C 0 ON.

delay_ms(300);

// Waktu tunda 30ms.

PORTC=0b01111111; // Port C 0 Off.

delay_ms(300);

// Waktu tunda 30ms.

 

}

else

// Jika Pin A 0 nilainya tidak sama dengan 0 maka akan menjalankan pernyataan di bawah.

 

PORTC=0b11111111; //Port C Off.

}

Keypad 3x4 di kombinasikan dengan penampil LCD 16x2. Berikut adalah contoh kode programnya :

#asm

.equ

lcd_port=0x15

#endasm #include <mega32.h>

#include <delay.h> #include <lcd.h> void main(void)

{

DDRA=0b11110000;

// PORTC

while(1)

{

PORTA=0b11101111;

delay_ms(30);

if (PINA.0==0) { lcd_gotoxy(1,1); lcd_putsf ("1"); } if (PINA.1==0) { lcd_gotoxy(1,1); lcd_putsf ("4"); } if (PINA.2==0) { lcd_gotoxy(1,1); lcd_putsf ("7"); } if (PINA.3==0) { lcd_gotoxy(1,1); lcd_putsf ("*"); }

PORTA=0b11011111;

delay_ms(30);

if (PINA.0==0) { lcd_gotoxy(1,1); lcd_putsf ("2"); } if (PINA.1==0) { lcd_gotoxy(1,1); lcd_putsf ("5"); } if (PINA.2==0) { lcd_gotoxy(1,1); lcd_putsf ("8"); } if (PINA.3==0) { lcd_gotoxy(1,1); lcd_putsf("0"); }

PORTA=0b10111111;

delay_ms(30);

if (PINA.0==0) { lcd_gotoxy(1,1); lcd_putsf ("3"); } if (PINA.1==0) { lcd_gotoxy(1,1); lcd_putsf ("6"); } if (PINA.2==0) { lcd_gotoxy(1,1); lcd_putsf ("9"); } if (PINA.3==0) { lcd_gotoxy(1,1); lcd_putsf ("#"); }

}

}

Motor atau motor listrik adalah perangkat elektro magnetis yang mengubah energi listrik menjadi energi mekanik,
Motor atau motor listrik adalah perangkat
elektro magnetis yang mengubah energi listrik
menjadi energi mekanik, dimana energi mekanik
itu berupa putaran dari rotor. Mekanisme kerja
motor secara umum adalah apabila sebuah
kawat berarus diletakkan antara kutub magnet
maka pada kawat itu akan bekerja gaya
sehingga kawat bergerak.
sebuah kawat berarus diletakkan antara kutub magnet maka pada kawat itu akan bekerja gaya sehingga kawat

Jenis dari motor listrik ini sendiri antara lain motor DC dan motor stepper.

Motor DC

Mesin yang berfungsi mengubah tenaga listrik DC menjadi tenaga mekanik dengan tenaga gerak berupa putaran dari rotor. Komponen utama motor ini : kutub medan, dinamo dan komutator.

K utub medan Secara sederhada digambarkan bahwa interaksi dua kutub magnet

akan menyebabkan perputaran pada motor DC. Motor DC memiliki kutub medan

yang stasioner dan dinamo yang menggerakan bearing pada ruang diantara

kutub medan. Motor DC sederhana memiliki dua kutub medan: kutub utara dan kutub

selatan. Garis magnetik energi membesar melintasi bukaan diantara kutub-kutub dari utara

ke selatan. Untuk motor yang lebih besar atau lebih komplek terdapat satu atau lebih

elektromagnet. Elektromagnet menerima listrik dari sumber daya dari luar sebagai penyedia

struktur medan.

D inamo. Bila arus masuk menuju dinamo, maka arus ini akan menjadi elektromagnet. Dinamo yang berbentuk silinder, dihubungkan ke as penggerak untuk menggerakan beban. Untuk kasus motor DC yang kecil, dinamo berputar

dalam medan magnet yang dibentuk oleh kutub-kutub, sampai kutub utara dan selatan magnet berganti lokasi. Jika hal ini terjadi, arusnya berbalik untuk merubah kutub- kutub utara dan selatan dinamo.

C ommutator. Komponen ini terutama ditemukan dalam motor DC. Kegunaannya adalah untuk membalikan arah arus listrik dalam dinamo. Commutator juga membantu dalam transmisi arus antara dinamo dan sumber daya.

Keuntungan utama motor DC adalah sebagai pengendali kecepatan, yang tidak

mempengaruhi kualitas pasokan daya. Motor ini dapat dikendalikan dengan mengatur:

1. Tegangan dinamo meningkatkan tegangan dinamo akan meningkatkan kecepatan

2. Arus medan menurunkan arus medan akan meningkatkan kecepatan.

Gambar 8.1 motor DC

Gambar 8.1 motor DC

Motor Stepper

Motor Stepper adalah motor DC yang gerakannya bertahap (step per step) dan memiliki akurasi yang tinggi tergantung pada spesifikasinya. Setiap motor stepper mampu berputar untuk setiap stepnya dalam satuan sudut (0.75, 0.9, 1.8), makin keil sudut per step-nya maka gerakan per step-nya motor stepper tersebut makin presisi. Motor stepper banyak digunakan untuk aplikasi-aplikasi yang biasanya cukup menggunakan torsi yang kecil, seperti untuk penggerak piringan disket atau piringan CD. Dalam hal kecepatan, kecepatan motor stepper cukup cepat jika dibandingkan dengan motor DC.

Motor stepper merupakan motor DC yang tidak memiliki komutator. Pada umumnya motor stepper hanya mempunyai kumparan pada statornya sedangkan pada bagian rotornya merupakan magnet permanent. Dengan model motor seperti ini maka motor stepper dapat diatur posisinya pada posisi tertentu dan/atau berputar ke arah yang diinginkan, searah jarum jam atau sebaliknya.

Kecepatan motor stepper pada dasarnya ditentukan oleh kecepatan pemberian data pada komutatornya. Semakin cepat data yang diberikan maka motor stepper akan semakin cepat pula berputarnya. Pada kebanyakan motor stepper kecepatannya dapat diatur dalam daerah frekuensi audio dan akan menghasilkan putaran yang cukup cepat. Variabel Reluktansi Motor Pada motor stepper yang mempunyai variabel reluktansi maka terdapat 3 buah lilitan yang pada ujungnya dijadikan satu pada sebuah pin common. Untuk dapat menggerakkan motor ini maka aktivasi tiap-tiap lilitan harus sesuai urutannya. Gambar 8.2. merupakan gambar struktur dari motor dengan variabel reluktansi dimana tiap stepnya adalah 30. Mempunyai 4 buah kutub pada rotor dan 6 buah kutub pada statornya yang terletak saling berseberangan.

kutub pada statornya yang terletak saling berseberangan. Gambar 8.2 Variabel Reluktance Motor Jika lilitan 1 dilewati

Gambar 8.2 Variabel Reluktance Motor Jika lilitan 1 dilewati oleh arus, lilitan 2 mati dan lilitan 3 juga mati maka kumparan 1

akan menghasilkan gaya tolakan kepada rotor dan rotor akan berputar sejauh 30° searah jarum jam sehingga kutub rotor dengan label Y sejajar dengan kutub dengan label 2. Jika kondisi seperti ini berulang terus menerus secara berurutan, lilitan 2 dilewati

arus kemudian lilitan 3 maka motor akan berputar secara terus menerus. Maka agar dapat berputar sebanyak 21 step maka perlu diberikan data dengan urutan seperti pada Gambar

8.3

perlu diberikan data dengan urutan seperti pada Gambar 8.3 Gambar 8.3 Urutan Lilitan Kumparan Pada Motor

Gambar 8.3 Urutan Lilitan Kumparan Pada Motor 1 pada Gambar 8.3. diartikan bahwa lilitan yang bersangkutan dilewati arus sehingga menghasilkan st="on"gaya tolak untuk rotor. Sedangkan 0 diartikan lilitan dalam kondisi off, tidak mendapatkan arus.

Unipolar Motor Stepper Motor stepper dengan tipe unipolar adalah motor stepper yang mempunyai 2 buah lilitan yang masing-masing lilitan ditengah-tengahnya diberikan sebuah tap seperti tampak pada Gambar 8.4

diberikan sebuah tap seperti tampak pada Gambar 8.4 Gambar 8.4 Unipolar Stepper Motor Motor ini mempunyai

Gambar 8.4 Unipolar Stepper Motor Motor ini mempunyai step tiap 30° dan mempunyai dua buah liliatan yang didistribusikan berseberangan 180° di antara kutub pada stator. Sedangkan pada rotonya menggunakan magnet permanen yang berbentuk silinder dengan mempunyai 6 buah kutub, 3 kutub selatan dan 3 buah kutub utara. Sehingga dengan konstrusi seperti ini maka jika dibutuhkan ke presisian dari motor stepper yang lebih tinggi dibutuhkan pula kutub-kutub pada stator dan rotor yang semakin banyak pula. Pada Gambar 21, motor tersebut akan bergerak setiap step sebesar 30° dengan 4 bit urutan data (terdapat dua buah lilitan dengan tap, total lilitan menjadi 4 lilitan).

Ketelitian dari magnet permanen di rotor dapat sampai 1.8° untuk tiap stepnya. Ketika arus mengalir melalui tap tengah pada lilitan pertama akan menyebabkan kutub pada stator bagian atas menjadi kutub utara sedangkan kutub stator pada bagian bawah menjadi kutub selatan. Kondisi akan menyebabkan rotor mendapat st="on"gaya tarik menuju kutub-kutub ini. Dan ketika arus yang melalui lilitan 1 dihentikan dan lilitan 2 diberi arus maka rotor akan mengerak lagi menuju kutub-kutub ini. Sampai di sini rotor sudah berputar sampai 30° atau 1 step.

Sampai di sini rotor sudah berputar sampai 30° atau 1 step. Gambar 8.5 Urutan Data Untuk

Gambar 8.5 Urutan Data Untuk Motor Stepper dengan Tipe Unipolar (torsi normal)

Gambar 8.6 Urutan Data Motor Stepper Tipe Unipolar (torsi besar) Untuk meningkatkan torsi yang tidak

Gambar 8.6 Urutan Data Motor Stepper Tipe Unipolar (torsi besar)

Untuk meningkatkan torsi yang tidak terlalu besar maka dapat digunakan urutan pemberian data seperti pada gambar 8.6 Dimana terdapat dua buah lilitan yang di beri arus pada suatu waktu. Dengan pemberian urutan data seperti ini akan menghasilkan torsi yang lebih besar dan tentunya membutuhkan daya yang lebih besar. Dengan urutan data baik pada Gambar 8.5 atau Gambar 8.6 akan menyebabkan motor berputar sebanyak 24 step atau 4 putaran.

Bipolar Motor Stepper Motor dengan tipe bipolar ini mempunyai konstruksi yang hampir sama dengan motor

stepper tipe unipolar namun tidak terdapat tap pada lilitannya, seperti tampak pada Gambar

8.7

terdapat tap pada lilitannya, seperti tampak pada Gambar 8.7 Gambar 8.7 Bipolar Motor Stepper Penggunaan motor

Gambar 8.7 Bipolar Motor Stepper Penggunaan motor dengan tipe bipolar ini membutuhkan rangkaian yang sedikit lebih rumit untuk mengatur agar motor ini dapat berputar dalam dua arah. Biasanya untuk menggerakkan motor stepper jenis ini membutuhkan sebuah driver motor yang sering dikenal sebagai H Bridge. Rangkaian ini akan menontrol tiap-tiap lilitan secara independen termasuk dengan polaritasnya untuk tiap-tiap lilitan.

Untuk mengontrol agar motor ini dapat berputar satu step maka perlu diberikan arus untuk tiap-tiap lilitan dengan polaritas tertentu pula. Urutan datanya dapat dilihat pada Gambar 8.8.

polaritas tertentu pula. Urutan datanya dapat dilihat pada Gambar 8.8. Gambar 8.8 Urutan Data Motor Stepper

Gambar 8.8 Urutan Data Motor Stepper tipe Bipolar

Rangkaian Dasar Driver Motor DC :

Alat dan bahan :

1. Konektor IDC single 5 pin.

2. PCB 5x5 cm.

3. Resistor 4K7.

4. Transistor BD139.

5. Solder.

6. Tenol.

Berikut gambar desainnya :

Berikut gambar desainnya :

Contoh gambar yang sudah jadi :

Contoh gambar yang sudah jadi :

Rangkaian Dasar Driver Motor Stepper :

Alat dan bahan :

5. Konektor IDC single 10 pin.

6. PCB 5x5 cm.

7. IC ULN2003.

8. Solder.

9. Tenol.

Berikut Gambar desainnya :

Berikut Gambar desainnya :

Contoh gambar yang sudah jadi :

Contoh gambar yang sudah jadi :

Berikut contoh kode program sederhana untuk memutar motor DC :

#include <mega32.h>

#include <delay.h> unsigned char high, low, i, speed; void main(void)

{

 

DDRC.0=1;

PORTC.0=0;

speed=10;

//max 100

min 10

duty cycle

high=speed;

low=100-high;

if (speed>100) { high=0; low=0; }

while(1)

{

for (i=0; i<high; i++)

{

 

PORTC.0=1;

delay_ms(1);

}

for (i=0; i<low; i++)

{

 

PORTC.0=0;

delay_ms(1);

}

}}

Berikut Contoh kode program motor stepper :

#include <mega32.h>

#include <delay.h>

void step_maju(void)

{

 

PORTB =0b00000001;

// A

delay_ms(2);

PORTB =0b00000010;

// B

delay_ms(2);

PORTB =0b00000100;

// ~A

delay_ms(2);

PORTB =0b00001000;

// ~B

delay_ms(2);

}

void step_mundur(void)

{

 

PORTB =0b00001000;

// A

delay_ms(2);

PORTB =0b00000100;

// B

delay_ms(2);

PORTB =0b00000010;

// ~A

delay_ms(2);

PORTB =0b00000001;

// ~B

delay_ms(2);

}

void main(void)

{

 

DDRB =0b00001111; PORTB =0b00000000;

while(1)

{

// step_maju(); step_mundur();

delay_ms(100);

}

}

S ensor adalah sesuatu yang digunakan untuk mendeteksi adanya perubahan lingkungan fisik atau kimia. Variabel keluaran dari sensor yang diubah menjadi besaran listrik disebut Transduser. Gelombang ultrasonik adalah gelombang

dengan besar frekuensi diatas frekuensi gelombang suara yaitu lebih dari 20 KHz. Seperti telah disebutkan bahwa sensor ultrasonik terdiri dari rangkaian pemancar ultrasonik yang disebut transmitter dan rangkaian penerima ultrasonik yang disebut receiver. Sinyal ultrasonik yang dibangkitkan akan dipancarkan dari transmitter ultrasonik. Ketika sinyal mengenai benda penghalang, maka sinyal ini dipantulkan, dan diterima oleh receiver ultrasonik. Sinyal yang diterima oleh rangkaian receiver dikirimkan ke rangkaian mikrokontroler untuk selanjutnya diolah untuk menghitung jarak terhadap benda di

depannya (bidang pantul).

Sensor ultrasonik adalah sensor yang bekerja berdasarkan prinsip pantulan gelombang suara dan digunakan untuk
Sensor ultrasonik adalah sensor
yang bekerja berdasarkan prinsip
pantulan gelombang suara dan
digunakan untuk mendeteksi
keberadaan suatu objek tertentu
di depannya, frekuensi kerjanya
pada daerah diatas gelombang
suara dari 40 KHz hingga 400
KHz.

Prinsip kerja Sensor Ultrasonik Sensor ultrasonik terdiri dari dari dua unit yaitu unit pemancar dan unit penerima. Struktur unit pemancar dan penerima sangatlah sederhana, sebuah kristal piezoelectric dihubungkan dengan mekanik jangkar dan hanya dihubungkan dengan diafragma penggetar. Tegangan bolak-balik yang memiliki frekuensi kerja 40 KHz 400 KHz diberikan pada plat logam. Struktur atom dari kristal piezoelectric akan berkontraksi (mengikat), mengembang atau menyusut terhadap polaritas tegangan yang diberikan, dan ini disebut dengan efek piezoelectric. Kontraksi yang terjadi diteruskan ke diafragma penggetar sehingga terjadi gelombang ultrasonik yang dipancarkan ke udara (tempat sekitarnya), dan pantulan gelombang ultrasonik akan terjadi bila ada objek tertentu, dan pantulan gelombang ultrasonik akan diterima kembali oleh oleh unit sensor penerima. Selanjutnya unit sensor penerima akan menyebabkan diafragma penggetar akan bergetar dan efek piezoelectric menghasilkan sebuah tegangan bolak-balik dengan frekuensi yang sama. Besar amplitudo sinyal elekrik yang dihasilkan unit sensor penerima tergantung dari jauh dekatnya objek yang dideteksi serta kualitas dari sensor pemancar dan sensor penerima. Proses sensing yuang dilakukan pada sensor ini menggunakan metode pantulan untuk menghitung jarak antara sensor dengan obyek sasaran. Jarak antara sensor tersebut

dihitung dengan cara mengalikan setengah waktu yang digunakan oleh sinyal ultrasonik dalam perjalanannya dari rangkaian Tx sampai diterima oleh rangkaian Rx, dengan kecepatan rambat dari sinyal ultrasonik tersebut pada media rambat yang digunakannya, yaitu udara. Waktu di hitung ketika pemencar aktif dan sampai ada input dari rangkaian penerima dan bila pada melebihi batas waktu tertentu rangkaian penerima tidak ada sinyal input maka dianggap tidak ada halangan didepannya. Prinsip kerja dari sensor ultrasonik dapat ditunjukkan dalam gambar dibawah ini :

kerja dari sensor ultrasonik dapat ditunjukkan dalam gambar dibawah ini : Gambar 9.1 Prinsip Kerja Sensor

Gambar 9.1 Prinsip Kerja Sensor Ultrasonik

Prinsip kerja dari sensor ultrasonik adalah sebagai berikut :

1. Sinyal dipancarkan oleh pemancar ultrasonik. Sinyal tersebut berfrekuensi diatas

20kHz, biasanya yang digunakan untuk mengukur jarak benda adalah 40kHz. Sinyal

tersebut di bangkitkan oleh rangkaian pemancar ultrasonik.

2. Sinyal yang dipancarkan tersebut kemudian akan merambat sebagai sinyal /

gelombang bunyi dengan kecepatan bunyi yang berkisar 340 m/s. Sinyal tersebut

kemudian akan dipantulkan dan akan diterima kembali oleh bagian penerima

Ultrasonik.

3. Setelah sinyal tersebut sampai di penerima ultrasonik, kemudian sinyal tersebut akan

diproses untuk menghitung jaraknya. Jarak dihitung berdasarkan rumus :

S = 340.t/2

Dimana S adalah jarak antara sensor ultrasonik dengan bidang pantul, dan t adalah selisih waktu antara pemancaran gelombang ultrasonik sampai diterima kembali oleh bagian penerima ultrasonik.

Pemancar Ultrasonik (Transmitter)

Pemancar Ultrasonik ini berupa rangkaian yang memancarkan sinyal sinusoidal berfrekuensi di atas 20 KHz menggunakan sebuah transducer transmitter ultrasonic

di atas 20 KHz menggunakan sebuah transducer transmitter ultrasonic Gambar 9.2. Rangkaian Pemancar Gelombang Ultrasonik

Gambar 9.2. Rangkaian Pemancar Gelombang Ultrasonik

Prinsip kerja dari rangkaian pemancar gelombang ultrasonik tersebut adlah sebagai berikut :

a) Sinyal 40 kHz dibangkitkan melalui mikrokontroler.

b) Sinyal tersebut dilewatkan pada sebuah resistor sebesar 3kOhm untuk pengaman ketika sinyal tersebut membias maju rangkaian dioda dan transistor.

c) Kemudian sinyal tersebut dimasukkan ke rangkaian penguat arus yang merupakan kombinasi dari 2 buah dioda dan 2 buah transistor.

d) Ketika sinyal dari masukan berlogika tinggi (+5V) maka arus akan melewati dioda D1 (D1 on), kemudian arus tersebut akan membias transistor T1, sehingga arus yang akan mengalir pada kolektotr T1 akan besar sesuai dari penguatan dari transistor.

e) Ketika sinyal dari masukan berlogika tinggi (0V) maka arus akan melewati dioda D2 (D2 on), kemudian arus tersebut akan membias transistor T2, sehingga arus yang akan mengalir pada kolektotr T2 akan besar sesuai dari penguatan dari transistor.

f) Resistor R4 dan R6 berfungsi untuk membagi tengangan menjadi 2,5 V. Sehingga pemancar ultrasonik akan menerima tegangan bolak balik dengan Vpeak-peak adalah 5V (+2,5 V s.d -2,5 V).

Penerima Ultrasonik (Receiver)

Penerima Ultrasonik ini akan menerima sinyal ultrasonik yang dipancarkan oleh pemancar ultrasonik dengan karakteristik frekuensi yang sesuai. Sinyal yang diterima tersebut akan melalui proses filterisasi frekuensi dengan menggunakan rangkaian band pass filter (penyaring pelewat pita), dengan nilai frekuensi yang dilewatkan telah ditentukan. Kemudian sinyal keluarannya akan dikuatkan dan dilewatkan ke rangkaian komparator (pembanding) dengan tegangan referensi ditentukan berdasarkan tegangan keluaran penguat pada saat jarak antara sensor kendaraan mini dengan sekat/dinding pembatas mencapai jarak minimum untuk berbelok arah. Dapat dianggap keluaran komparator pada kondisi ini adalah high (logika 1 ) sedangkan jarak yang lebih jauh adalah low (logika 0 ). Logika-logika biner ini kemudian diteruskan ke rangkaian pengendali (mikrokontroler).

Gambar 9.3 Rangkaian Penerima Gelombang Ultrasonik.

Gambar 9.3 Rangkaian Penerima Gelombang Ultrasonik.

Prinsip kerja dari rangkaian pemancar gelombang ultrasonik tersebut adalah sebagai

berikut :

1. Pertama tama sinyal yang diterima akan dikuatkan terlebih dahulu oleh rangkaian

transistor penguat Q2.

2. Kemudian sinyal tersebut akan di filter menggunakan High pass filter pada frekuensi >

40kHz oleh rangkaian transistor Q1.

3. Setelah sinyal tersebut dikuatkan dan di filter, kemudian sinyal tersebut akan

disearahkan oleh rangkaian dioda D1 dan D2.

4. Kemudian sinyal tersebut melalui rangkaian filter low pass filter pada frekuensi <

40kHz melalui rangkaian filter C4 dan R4.

5. Setelah itu sinyal akan melalui komparator Op-Amp pada U3.

6. Jadi ketika ada sinyal ultrasonik yang masuk ke rangkaian, maka pada komparator akan mengeluarkan logika rendah (0V) yang kemudian akan diproses oleh mikrokontroler untuk menghitung jaraknya.

Rangkaian Dasar Sensor Ultrasonik

Rangkaian Dasar Sensor Ultrasonik

Aplikasi Pengukur Jarak

#include <mega32.h> #include <delay.h> #include <stdlib.h> #include <lcd.h>

#asm

.equ

#endasm

lcd_port=0x15

//port c

unsigned char data, str_data[4];

// External Interrupt 2 service routine interrupt [EXT_INT2] void ext_int2_isr(void)

{

 

data=TCNT0;

delay_ms(500);

itoa(data, str_data); lcd_clear(); lcd_gotoxy(0, 0); lcd_puts(str_data);

}

void main(void)

{

 

DDRB.0=1;

//PORTB.0 pin TRIGER; PORTB.2 PIN ECHO INT2;

DDRB.1=0;

PORTB=0x00;

// Timer/Counter 0 initialization

TCCR0=0x05;

TCNT0=0x00;

OCR0=0x00;

// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: On // INT2 Mode: Falling Edge

GICR|=0x20;

MCUCR=0x00;

MCUCSR=0x00;

GIFR=0x20;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

lcd_init(16);

lcd_clear(); lcd_gotoxy(0, 0);

// clear the LCD

lcd_putchar(200);

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

while(1)

{

PORTB.0=1; delay_us(10);

PORTB.0=0;

TCNT0=0x00;

delay_ms(36);

}

}

Remote control adalah sebuah alat elektronik yang digunakan untuk mengoperasikan sebuah mesin dari jarak jauh. Pada umumnya, pengendali jarak jauh digunakan untuk memberikan perintah dari kejauhan kepada televisi atau barang-barang elektronik lainnya seperti sistem stereo dan pemutar DVD. Remote control untuk perangkat-perangkat ini biasanya berupa benda kecil nirkabel yang dipegang dalam tangan dengan sederetan tombol untuk menyesuaikan berbagai setting, seperti misalnya saluran televisi, nomor trek, dan volume suara. Malah, pada kebanyakan peranti modern dengan kontrol seperti ini, remote controlnya memiliki segala kontrol fungsi sementara perangkat yang dikendalikan itu sendiri hanya mempunyai sedikit kontrol utama yang mendasar. Kebanyakan remote berkomunikasi dengan perangkatnya masing-masing melalui sinyal-sinyal infra merah dan beberapa saja melalui sinyal radio. Remote control biasanya menggunakan baterai AAA yang kecil atau AA sebagai catu dayanya.

saja melalui sinyal radio. Remote control biasanya menggunakan baterai AAA yang kecil atau AA sebagai catu

Remote Transmitter adalah merupakan pemancar jarak jauh. Yang mana semua remote kontrol menggunakan transmisi sinyal infra merah yang dimodulasi dengan sinyal carrier dengan frekuensi tertentu yaitu pada frekuensi 30KHz sampai 40KHz. Sinyal yang dipancarkan oleh pengirim diterima oleh penerima infra merah dan kemudian didecodekan sebagai sebuah paket data biner. Pada transmisi infra merah terdapat dua terminologi yang sangat penting yaitu : space yang menyatakan tidak ada sinyal carrier dan pulse yang menyatakan ada sinyal carrier.

yaitu : space yang menyatakan tidak ada sinyal carrier dan pulse yang menyatakan ada sinyal carrier.
yaitu : space yang menyatakan tidak ada sinyal carrier dan pulse yang menyatakan ada sinyal carrier.

Remote Receiver adalah merupakan penerima jarak jauh. Dalam hal ini sinar infra merah yang dipancarkan oleh pemancar infra merah tentunya mempunyai aturan tertentu agar data yang dipancarkan dapat diterima dengan baik di penerima. Oleh karena itu baik di pengirim infra merah maupun penerima infra merah harus mempunyai aturan yang sama dalam mentransmisikan (bagian pengirim) dan menerima sinyal tersebut kemudian mendekodekannya kembali menjadi data biner (bagian penerima). Komponen yang dapat menerima infra merah ini merupakan komponen yang peka cahaya yang dapat berupa dioda (photodioda) atau transistor (phototransistor). Komponen ini akan merubah energi cahaya, dalam hal ini energi cahaya infra merah, menjadi pulsa-pulsa sinyal listrik. Komponen ini harus mampu mengumpulkan sinyal infra merah sebanyak mungkin sehingga pulsapulsa sinyal listrik yang dihasilkan kualitasnya cukup baik. Pada perangkat ini detektor cahaya yang digunakan adalah komponen TSOP4838, dimana pada komponen ini sudah terdapat filter. Jadi detektor ini akan bekerja dengan baik jika terdapat frekuensi 38KHz.

dimana pada komponen ini sudah terdapat filter. Jadi detektor ini akan bekerja dengan baik jika terdapat
dimana pada komponen ini sudah terdapat filter. Jadi detektor ini akan bekerja dengan baik jika terdapat

Berikut contoh rangkaian dasar sensor infra red

Berikut contoh rangkaian dasar sensor infra red

Berikut contoh desain PCB nya :

Berikut contoh desain PCB nya :

Berikut contoh gambar yang sudah jadi :

Berikut contoh gambar yang sudah jadi :

Berikut contoh desainnya :

Berikut contoh desainnya :

Berikut contoh desain PCB nya :

Berikut contoh desain PCB nya :

Berikut contoh yang sudah jadi :

Berikut contoh yang sudah jadi :

#include <mega32.h> #include <delay.h> // Declare your global variables here unsigned char value, i, j, tx=0, data=0;

void tx_ir(unsigned char send)

{

 

if (send==1)

{

for (j=0; j<25; j++)

{

PORTB.0=0;

delay_us(13);

PORTB.0=1;

delay_us(13);

}

}

else

{

 

for (j=0; j<25; j++)

{

PORTB.0=0;

delay_us(13);

PORTB.0=0;

delay_us(13);

}

}

}

void main(void)

{

PORTB=0x00;

DDRB=0x00;

PORTB.0=0;

DDRB.0=1;

value=170;

while (1)

{

data=value;

tx_ir(1);

for (i=0;i<8;i++)

{

if (data&0x01) tx=1; else tx=0;

//data 8 bit

data>>=1;

tx_ir(tx);

}

tx_ir(0);

PORTB.0=0;

value++;

delay_ms(1000);

}

}

Gelombang radio adalah satu bentuk dari radiasi elektromagnetik, dan terbentuk ketika objek bermuatan listrik dimodulasi (dinaikkan frekuensinya) pada frekuensi yang terdapat dalam frekuensi gelombang radio (RF) dalam suatu spektrum elektromagnetik, dan radiasi elektromagnetiknya bergerak dengan cara osilasi elektrik maupun magnetik.Gelombang elektromagnetik lainnya, yang memiliki frekuensi di atas gelombang radio meliputi sinar gamma, sinar-X, inframerah, ultraviolet, dan cahaya terlihat. Ketika gelombang radio dipancarkan melalui kabel, osilasi dari medan listrik dan magnetik tersebut dinyatakan dalam bentuk arus bolak-balik dan voltase di dalam kabel. Hal ini kemudian dapat diubah menjadi signal audio atau lainnya yang membawa informasi.

Frekuensi adalah ukuran jumlah putaran ulang per peristiwa dalam selang waktu yang diberikan. Untuk memperhitungkan frekuensi, seseorang menetapkan jarak waktu, menghitung jumlah kejadian peristiwa, dan membagi hitungan ini dengan panjang jarak waktu. Hasil perhitungan ini dinyatakan dalam satuan hertz (Hz) yaitu nama pakar fisika Jerman Heinrich Rudolf Hertz yang menemukan fenomena ini pertama kali. Frekuensi sebesar 1 Hz menyatakan peristiwa yang terjadi satu kali per detik.

Secara alternatif, seseorang bisa mengukur waktu antara dua buah kejadian/ peristiwa (dan menyebutnya sebagai periode), lalu memperhitungkan frekuensi (f ) sebagai hasil kebalikan dari periode (T ), seperti nampak dari rumus di bawah ini :

memperhitungkan frekuensi ( f ) sebagai hasil kebalikan dari periode ( T ), seperti nampak dari

RFM12B

RFM12B

Berikut adalah sedikit penjelasan mengenai konfigurasi port nya :

Berikut adalah sedikit penjelasan mengenai konfigurasi port nya :

Berikut contoh gambar desain PCBnya:

Berikut contoh gambar desain PCBnya:

Berikut contoh gambar yang sudah jadi :

Berikut contoh gambar yang sudah jadi :

Berikut contoh kode program komunikasi RF menggunakan modul RFM12B

Program pengirim data Terlebih dahulu buat source baru, save dengan nama Rx.c

/********************************************************************************** /* RFM12B INTERFACE */

#define SCK

3

// SPI clock

#define SDO

1

// SPI Data output (RFM12B side)

#define SDI

2

// SPI Data input (RFM12B side)

#define CS

4

// SPI SS (chip select)

#define NIRQ

2

// (PORTD)

/* IO CONTROL */ #define HI(x) PORTB |= (1<<(x)) #define LO(x) PORTB &= ~(1<<(x)) #define WAIT_NIRQ_LOW() while(PIND&(1<<NIRQ)) /**********************************************************************************

void portInit()

{

HI(CS); HI(SDI); LO(SCK); DDRB = (1<<CS) | (1<<SDI) | (1<<SCK);

}

/**********************************************************************************

unsigned int writeCmd(unsigned int cmd)

{

unsigned char i; unsigned int recv;

recv = 0; LO(SCK);

LO(CS); for(i=0; i<16; i++)

{

if(cmd&0x8000)

HI(SDI);

else

LO(SDI);

HI(SCK);

recv<<=1;

if( PINB&(1<<SDO) )

{ recv|=0x0001;

}

LO(SCK);

cmd<<=1;

}

HI(CS);

return recv;

}

/********************************************************************************** void rfInit()

{

writeCmd(0x80E7);

writeCmd(0x8299);

here)

writeCmd(0xA640);

writeCmd(0xC647);

writeCmd(0x94A0);

writeCmd(0xC2AC);

writeCmd(0xCA81);

writeCmd(0xCED4);

writeCmd(0xC483);

writeCmd(0x9850);

writeCmd(0xCC17);

writeCmd(0xE000);

writeCmd(0xC800);

writeCmd(0xC040);

}

// EL,EF,868band,12.0pF // er,!ebb,ET,ES,EX,!eb,!ew,DC (bug was

// freq select // 4.8kbps // VDI,FAST,134kHz,0dBm,-103dBm // AL,!ml,DIG,DQD4 // FIFO8,SYNC,!ff,DR (FIFO level = 8) // SYNC=2DD4; // @PWR,NO RSTRIC,!st,!fi,OE,EN // !mp,90kHz,MAX OUT // !OB1,!OB0, LPX,!ddy,DDIT,BW0 // NOT USED // NOT USED // 1.66MHz,2.2V

/**********************************************************************************

unsigned char rfRecv()

{

unsigned int data;

while(1)

{

data = writeCmd(0x0000); if ( (data&0x8000) )

{

data = writeCmd(0xB000); return (data&0x00FF);

}

}

}

/********************************************************************************** void FIFOReset()

{

 

writeCmd(0xCA81);

writeCmd(0xCA83);

}

Program utama main.c

#include <mega32.h> #include <delay.h> #include <stdio.h>

#include <RX.c> unsigned char dataRF[25]; void main(void)

{

unsigned char i; // USART Baud Rate: 115200

UCSRA=0x00;

UCSRB=0x18;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x03;

delay_ms(2000);

putchar(200);

portInit(); rfInit(); FIFOReset();

putchar(255);

while(1)

{

 

for (i=0; i<5; i++)

{

dataRF[i] = rfRecv();

// Saving to Array

}

FIFOReset();

for (i=0; i<5; i++)

{

putchar(dataRF[i]);

// Send to UART

}

printf("\r\n");

}

}

Contoh kode program pengirim atau transmitter. Buat source baru dan simpan dengan nama Tx.c

/*********************************************************************************/

#define SCK

3

// SPI clock

#define SDO

1

// SPI Data output (RFM12B side)

#define SDI

2

// SPI Data input (RFM12B side)

#define CS

4

// SPI SS (chip select)

#define NIRQ 2

// (PORTD)

/* IO CONTROL */ #define HI(x) PORTB |= (1<<(x)) #define LO(x) PORTB &= ~(1<<(x)) #define WAIT_NIRQ_LOW() while(PIND&(1<<NIRQ)) /*********************************************************************************/

void portInit()

{

 

HI(CS); HI(SDI); LO(SCK); DDRB = (1<<CS) | (1<<SDI) | (1<<SCK);

DDRD.2=0;

PORTD.2=1;

}

/*********************************************************************************/ unsigned int writeCmd(unsigned int cmd)

{

unsigned char i; unsigned int recv;

recv = 0;

LO(SCK);

LO(CS);

for(i=0; i<16; i++)

{

if(cmd&0x8000)

HI(SDI);

else

LO(SDI);

HI(SCK);

recv<<=1;

if( PINB&(1<<SDO) )

{

recv|=0x0001;

}

LO(SCK);

cmd<<=1;

}

HI(CS);

return recv;

}

/*********************************************************************************/ void rfInit()

{

writeCmd(0x80E7);

writeCmd(0x8239);

writeCmd(0xA640);

writeCmd(0xC647);

writeCmd(0x94A0);

writeCmd(0xC2AC);

writeCmd(0xCA81);

writeCmd(0xCED4);

// EL,EF,868band,12.0pF // !er,!ebb,ET,ES,EX,!eb,!ew,DC // frequency select // 4.8kbps // VDI,FAST,134kHz,0dBm,-103dBm // AL,!ml,DIG,DQD4 // FIFO8,SYNC,!ff,DR // SYNC=2DD4

writeCmd(0xC483);

writeCmd(0x9850);

writeCmd(0xCC17);

writeCmd(0xE000);

writeCmd(0xC800);

writeCmd(0xC040);

}

// @PWR,NO RSTRIC,!st,!fi,OE,EN // !mp,90kHz,MAX OUT

// OB1, COB0, LPX, Iddy, CDDIT CBW0 // NOT USED // NOT USED // 1.66MHz,2.2V

void rfSend(unsigned char data)

{

WAIT_NIRQ_LOW(); writeCmd(0xB800 + data);

}

Contoh kode program pada main.c

#include <mega32.h> #include <delay.h> #include <TX.c> void main()

{

volatile unsigned int i;

//

asm("cli");

delay_ms(2000);

portInit();

rfInit();

while(1)

{

writeCmd(0x0000);

rfSend(0xAA);

rfSend(0xAA);

rfSend(0xAA);

rfSend(0x2D);

rfSend(0xD4);

for(i=0; i<5; i++)

{

rfSend(0x41+i);

}

rfSend(0xAA);

rfSend(0xAA);

rfSend(0xAA);

// PREAMBLE

// SYNC 0x2DD4

//send data 5 byte

// DUMMY BYTES

delay_ms(200);

}

}

RTC (real time clock) merupakan IC yang dapat menyimpan setting waktu. sebagai contoh saat sebuah komputer di matikan selama 3 hari misalnya. maka saat kita ON kan lagi waktu dalam komputer masih menunjukkan waktu saat itu, waktu tidak mengalami kelambatan walaupun selama 3 hari tanpa sumber tegangan. RTC merupakan IC yang dapat mempertahan setting waktu. Ada 2 macam tipe IC RTC yaitu serial dan pararel. Untu schema di atas merupakan serial RTC. Agar waktunya sesuai standar maka diperlukan xtal eksternal 32.768 kHz. Saat supply utama OFF IC akan dapat suplly dari Baterai sehingga setting waktu tetap jalan. IC ini haruslah terkoneksi ke sebuah mokrokontroler. Real Time Clock berhubungan dengan waktu mulai dari detik, menit, jam, hari, tanggal, bulan dan tahun. Tetapi IC RTC ini juga bisa dipakai untuk menyimpan data di dalam internal RAM RTC ini, di mana data tersebut tidak bisa hilang meskipun supply diputus, hal ini karena di dalam IC RTC tersebut ada battery-nya yang selalu hidup untuk menjalankan clock-nya jadi waktu (clock) tetap berjalan meskipun supply dimatikan. IC RTC ini masih mempunyai kelebihan bisa dipakai sebagai timer atau alarm. Untuk hitungan detik, menit,

jam, hari, tanggal, bulan dan tahun dengan tahun kabisat yang valid sampai 2100 karena compensation valid up to 2100. Mode yang dipilih juga bisa 12 or 24 hour clock with AM dan PM in 12 hour mode. RTC 1307 menggunakan teknik I2C yaitu memakai 2 jalur untuk keperluan transfer data secara seri, sedangkan SPI dan MicroWire memakai 3 jalur. Semua teknik mempunyai 1 jalur untuk Clock, I2C hanya punya satu jalur data 2 arah, sedangkan SPI dan MicroWire mempunyai 2 jalur data satu arah, masing-masing untuk jalur data masuk dan jalur data keluar.

KONFIGURASI PIN Untuk lebih jelas mengenai fungsi dan kegunaan dari IC ini terlebih dahulu akan dijelaskan fungsi dari tiap-tiap pin pada IC keluarga DS1307, di mana diketahui bahwa IC DS1307 memiliki 8 pin atau kaki, seperti pada Gambar 12.1.

di mana diketahui bahwa IC DS1307 memiliki 8 pin atau kaki, seperti pada Gambar 12.1. Gambar

Gambar 12.1 Pin-pin IC DS1307

Fungsi dari tiap pin RTC DS1307 antara lain :

1. X1, X2 Terhubung dengan kaki kristal 32768kHz

2. Vbat Terhubung dengan battery 3,3 volt

3. GND, Vcc Input tegangan Vcc adalah +5V.

4. SQW (Square Wave Output)Pin SQW dapat mengeluarkan sinyal salah satu dari 13 taps yang disediakan oleh 15 tingkat pembagi internal dari RTC.

5. SCL Pin SCL mengeluarkan sinyal clock. Pin ini harus diberi resistor Pull Up.

6. SDA Pin SCL mengeluarkan sinyal data

Pembuatan rankaian sederhana RTC DS1307

Alat dan bahan :

1. RTC DS1307 1 buah.

2. Resistor 3 buah.

3. Kapasitor 1 buah.

4. Batteray.

5. Konektor IDC single 5 pin.

6. Soket IDC 10 buah.

11. Tenol.

7. Black housing 10 buah.

8. Kabel IDC.

9. PCB 5x4 cm.

10. Solder.

Rangkaian dasar RTC

Rangkaian dasar RTC

Contoh rangkaian yang sudah jadi

Contoh rangkaian yang sudah jadi

Berikut adalah contoh kode program baca tulis data RTC

#asm

.equ

lcd_port=0x15

// PortC

.equ

i2c_port=0x1b

// PortA

.equ

scl_bit=1

.equ

sda_bit=0

#endasm

#include <mega32.h> #include <delay.h> #include <stdlib.h> #include <lcd.h> #include <ds1307.h> #include <i2c.h>

unsigned char detik, menit, jam, str_detik[4], str_menit[4], str_jam[4]; unsigned char tanggal, bulan, tahun, str_tanggal[4], str_bulan[4], str_tahun[5];

void main(void)

{

lcd_init(16);

lcd_gotoxy(0, 0); lcd_putsf("Latihan RTC");

i2c_init();

rtc_init(0,0,0);

rtc_set_time(0,0,0);

rtc_set_date(11,12,2011);

delay_ms(1000);

while (1)

{

rtc_get_time(&jam,&menit,&detik);

if(detik==0)

{

lcd_clear(); lcd_gotoxy(0, 0); lcd_putsf("Latihan RTC");

}

str_jam[0]=(jam/10)+48;

str_jam[1]=jam%10+48;

lcd_gotoxy(0, 1); lcd_puts(str_jam);

lcd_gotoxy(2,1);

lcd_puts(":");

str_menit[0]=(menit/10)+48;

str_menit[1]=menit%10+48;

lcd_gotoxy(3, 1); lcd_puts(str_menit);

lcd_gotoxy(5,1);

lcd_puts(":");

// SET JAM // SET TANGGAL

// Read Time

str_detik[0]=(detik/10)+48;

str_detik[1]=detik%10+48;

lcd_gotoxy(6, 1); lcd_puts(str_detik);

delay_ms(1000);

}

}

E EPROM (Electrically Erasable Programmable Read-Only Memory, ditulis pula dengan E 2 PROM) adalah sejenis chip memori tidak terhapus yang digunakan

dalam komputer dan peralatan elektronik lain untuk menyimpan sejumlah konfigurasi data pada alat elektronik tersebut yang tetap harus terjaga meskipun sumber daya diputuskan, seperti tabel kalibrasi atau kofigurasi perangkat.

Kelebihan utama dari EEPROM dibandingkan EPROM adalah ia dapat dihapus secara elektris tanpa menggunakan cahaya ultraviolet sehingga prosesnya lebih cepat. Jika RAM tidak memiliki batasan dalam hal read-write memori, maka EEPROM sebaliknya. Beberapa jenis EEPROM keluaran pertama hanya dapat dihapus dan ditulis ulang (erase-rewrite) sebanyak 100 kali sedangkan model terbaru bisa sampai 100.000 kali.

AT24C32

Serial EEPROM tipe 24xx adalah merupakan memori serial yang menggunakan teknologi I2C di mana dengan adanya penggunaan teknologi tersebut, hanya membutuhkan jumlah I/O yang digunakan untuk meng-akses memori tersebut semakin sedikit. Hal ini tentunya sangat bermanfaat bagi sebuah sistem yang memerlukan banyak I/O. Penggunaan I/O yang semakin sedikit untuk mengakses memori, akan menyediakan lebih banyak I/O yang dapat digunakan untuk keperluan lain. I2C adalah teknologi komunikasi serial yang ditemukan oleh Philips pada tahun 1992 dan direvisi hingga versi 2.1 yang terbaru pada tahun 2000. Teknologi ini hanya menggunakan 2 buah jalur I/O yaitu SDA dan SCL SDA merupakan jalur data pada komunikasi I2C

SCL merupakan jalur clock di mana sinyal clock akan selalu muncul untuk setiap bit dari pengiriman data. Komunikasi I2C diciptakan oleh Philips bukan hanya untuk Serial EEPROM melainkan juga diperuntukkan bagi komponen-komponen lain yang mempunyai kemampuan untuk diakses secara I2C. Oleh karena itu, untuk membedakan antara Serial EEPROM dengan komponen-komponen yang lain digunakan Slave Address yang menunjukkan identitas dari komponen tersebut. Dalam hal ini Serial EEPROM mempunyai kode 1010.

Berikut table kapasitas EEPROM seri 24C32

Type

Kapasitas

AT24C01

128

byte

AT24C02

256

byte

AT24C04

512

byte

AT24C08

1

Kbyte

AT24C16

2

Kbyte

AT24C32

4

Kbyte

AT24C64

8

Kbyte

AT24C128

16

Kbyte

AT24C256

32

Kbyte

AT24C512

64 Kbyte

Rangkaian dasar EEPROM menggunakan AT24C32

Alat dan bahan :

1. IC AT24C32 I buah.

2. Resistor 10K ohm 2 buah.

3. Konektor IDC single 4 pin.

4. Soket IDC 8 buah.

5. Black housing 8 buah.

6. Kabel IDC.

7. PCB 5x4 cm.

8. Solder.

9. Tenol.

Berikut adalah gambar designnya :

Berikut adalah gambar designnya :

Berikut contoh gambar desain PCB nya :

Berikut contoh gambar desain PCB nya :

Berikut contoh rangkaian yang sudah jadi

Berikut contoh rangkaian yang sudah jadi

Terlebih dahulu buat source baru dan simpan dengan nama I2Croutin.c, berikut adalah kode programnya :

/* ******************************************************************************* write a byte to the EEPROM ************************************************************************* */ void eeprom_write(unsigned int address, unsigned char data)

{

 

unsigned char addrH=address/256; unsigned char addrL=address%256;

i2c_start();

i2c_write(AT24C32_Bus_Addr);

i2c_write(addrH);

i2c_write(addrL);

i2c_write(data);

i2c_stop();

delay_ms(10);

}

/* ************************************************************************** read a byte from the EEPROM ******************************************************************/ unsigned char eeprom_read(unsigned int address)

{

 

unsigned char addrH=address/256; unsigned char addrL=address%256; unsigned char data;

i2c_start();

i2c_write(AT24C32_Bus_Addr);

i2c_write(addrH);

i2c_write(addrL);

i2c_start();

i2c_write(AT24C32_Bus_Addr | 1);

data=i2c_read(0);

i2c_stop();

return data;

}

Berikut contoh kode program pana main.c

/*****************************************************

Project Version Date Author Company Comments Chip type Program type Clock frequency Memory model External RAM size Data Stack size

: Test Memory AT24C32 : 1.0.0 : 09 mei 2010 : Uwiex : Multi-Tech Aji Perkasa : Book Section : ATmega32 : Application : 12.00000000 MHz : Small

:

: 512

0

*****************************************************/

#define AT24C32_Bus_Addr 0xA0

flash unsigned char NoID[]="MGL 789012678ABCDQWERTYASDFGH"; // Max 16 Char

unsigned int DataAddr, Counter;

#asm

 

.equ

i2c_port=0x1B

// Port A

.equ

sda_bit=0

.equ

scl_bit=1

//

.equ

lcd_port=0x18

// PORTB

.equ

lcd_port=0x15

// PORTC

#endasm

#include <mega32.h>

#include <stdio.h>

#include <Delay.h>

#include <string.h>

#include <lcd.h>

#include <i2c.h>

#include <I2C Routine.c>

void main(void)

{

delay_ms(500);

lcd_init(16);

lcd_clear();

lcd_gotoxy( 0,0); lcd_putsf("Mulai 0 Baris 0

/*

eeprom_write(512,'A');

");

// Inisialisasi LCD

// Menulis di Kolom

eeprom_write(513,'B');

eeprom_write(514,'C');

eeprom_write(515,'D');

*/

//

DataAddr=0;

//

for (Counter=0; Counter<strlenf(NoID); Counter++)

//

eeprom_write(DataAddr+Counter,NoID[Counter]);

lcd_gotoxy( 0,1); lcd_putchar(eeprom_read(15));

while (1)

{

}

}

Dalam ilmu komputer dan ilmu telekomunikasi, komunikasi serial adalah proses dari pengiriman data satu bit dalam satu waktu secara sekuensial melalui kanal komunikasi atau bus pada komputer. Hal ini tentunya sangat kontras dengan komunikasi paralel, dimana beberapa bit dikirimkan secara bersamaan pada sebuah jalur yang terdiri dari beberapa kanal berkabel yang tersusun paralel. Komunikasi serial digunakan untuk semua komunikasi long-haul dan kebanyakan jaringan komputer dimana biaya untuk kabel dan kesulitan sinkronisasi membuat komunikasi paralel tidak praktis. Pada jarak yang lebih dekat, bus serial pada komputer menjadi lebih umum digunakan karena kekurangan dari bus paralel, misalnya ketidakcocokan clock dan densitas interkoneksi, mengalahkan kelebihannya, yaitu tidak perlu ada proses serialisasi dan deserialisasi (serializer and deserializer/SERDES). Teknologi yang berkembang untuk memastikan integritas sinyal dan untuk mengirim dan menerima pada kecepatan per jalur yang cukup tinggi telah membuat jalur-jalur serial menjadi kompetitif.

FTDI chip sendiri adalah sirkuit terpadu yang merupakan komponen umum pada perangkat elektronik menggunakan

FTDI chip sendiri adalah sirkuit terpadu yang merupakan komponen umum pada perangkat elektronik menggunakan mikrokontroler. FTDI adalah spesialis dalam mengkonversi peripheral warisan untuk Universal Serial Bus (USB), menawarkan rute termudah ke USB migrasi dengan menggabungkan USB-Serial (USB-RS232) dan USB- FIFO silikon solusi dengan royalti siap-pergi mereka bebas USB driver. Populer FTDI USB solusi konversi menawarkan mengurangi biaya pengembangan dan debug dan waktu yang cepat ke pasar. Para FT232R dan FT245R adalah tambahan terbaru untuk jangkauan tumbuh USB toUART dan USB untuk solusi FIFO konversi.

Rangkaian dasar FTDI FT232

Alat dan bahan :

1. Con USB 1 Pcs.

2. Kapasitor 1 Pcs.

3. FTDI FT232 1 Pcs.

4. Konektor IDC single 4 pin.

5. Pcb 5x3cm.

6. Solder.

7. Tenol.

Contoh gambar desain PCB nya :

Contoh gambar desain PCB nya :

Contoh rangkaian FTDI yang sudah jadi

Contoh rangkaian FTDI yang sudah jadi

Terlebih dahulu buat source baru, simpan dengan nama app USART.c

/*

===================================================================================

Inisialisasi USART Interrupt

Register UCSRA (USART Control and Status Register A):

Bit

-

Description

7

-

RXC

- USART Receive Complete

6

-

TXC

- USART Transmit Complete

5

-

UDRE

- USART Data Register Empty

4

-

FE

- Frame Error

3

-

DOR

- Data OverRun

2

-

PE

- Parity Error

1

-

U2X

- Double the USART Transmission Speed

0

-

MPCM

- Multi-Processor Communication Mode

Register UCSRB (USART Control and Status Register B):

Bit

-

Description

7

-

RXCIE

- RX Complete Interrupt Enable

6

-

TXCIE

- TX Complete Interrupt Enable

5

-

UDREIE - USART Data Register Empty Interrupt Enable

4

-

RXEN

- Receiver Enable

3

-

TXEN

- Transmitter Enable

2

-

UCSZ2

- Character Size

1

-

RXB8

- Receive Data 8 bit

0

-

TXB8

- Transmit Data 8 bit

Register UCSRC (USART Control and Status Register C):

Bit

-

Description

7

-

URSEL

- Register Select

6

-

UMSEL

- USART Mode Select

 

USSEL

Description