My Link

Photobucket

Bahasa program untuk Mikrokontroler

Jadi, Anda ingin memulai pemrograman dan mikrokontroler menggunakan dalam proyek Anda, tetapi di mana Anda mulai assembler, BASIC, C atau Pascal. Each of the languages has different strengths and weaknesses which you need to consider before starting out. Setiap bahasa memiliki kekuatan dan kelemahan yang perlu Anda perhatikan sebelum memulai.

Assembler

Assembler is the most obvious language that you'll consider using Assembler adalah bahasa yang paling jelas bahwa Anda akan mempertimbangkan untuk menggunakan
as you probably won't need to buy any other tools to use it. karena anda mungkin tidak perlu membeli alat-alat lain untuk menggunakannya. More Lebih
than likely the manufacturer will provide an assembler for the kemungkinan besar produsen akan menyediakan assembler untuk
chip and you won't need any books as all the instructions are in chip dan Anda tidak akan membutuhkan buku-buku karena semua instruksi berada di
the datasheet and you just start coding. datasheet dan Anda baru saja mulai coding.

This route to programming is very easy but you may be setting Ini rute ke pemrograman sangat mudah, tetapi Anda mungkin pengaturan
yourself up for problems later on as: diri untuk masalah di kemudian hari sebagai:
  1. It is trivial to write short programs. Hal ini sepele untuk menulis program pendek.
  2. It becomes progressively more difficult to write large programs. Hal ini menjadi semakin sulit untuk menulis program besar.
  3. It seems to be the best option as it gives the fastest code. Hal ini tampaknya menjadi pilihan terbaik karena memberikan kode tercepat.
  4. It seems to be the best option as it gives the smallest code. Hal ini tampaknya menjadi pilihan terbaik karena memberikan kode terkecil.

Assembler: Fast & small code Assembler: Cepat & kecil kode

There is no doubt that assembler gives the fastest and most optimized code (your brain is better at optimization than any compiler!) but assembler is difficult – typically you'll spend ten times as long writing assembler as you would writing in a high level language. Tidak ada keraguan bahwa assembler memberikan dan paling optimal kode tercepat (otak Anda lebih baik pada optimasi dari compiler manapun!) Tetapi perakit sulit - biasanya Anda akan menghabiskan sepuluh kali sebagai perakit menulis selama Anda akan menulis dalam bahasa tingkat tinggi .

Assembler / Compiler Trade off Assembler / Compiler Trade off

This is the trade off; to write the fastest most optimized code or to get the task solved more quickly. Ini adalah trade off, untuk menulis kode yang paling optimal tercepat atau untuk mendapatkan tugas diselesaikan lebih cepat.

Another problem with assembler is that to do even the most trivial task you have to think about every aspect of the code and all implications on registers and register flags. Masalah lain dengan assembler adalah bahwa untuk melakukan bahkan yang sepele tugas yang paling Anda harus berpikir tentang setiap aspek kode dan segala implikasinya pada register dan mendaftar bendera.

Even making a microcontroller perform the most trivial task is difficult eg for making a loop in assembler you need to think about which register to use and which instructions all the while thinking about how those registers should not interact with the loop register/other registers etc. Bahkan membuat mikrokontroler melakukan tugas yang paling sepele adalah misalnya sulit untuk membuat sebuah loop dalam assembler Anda harus berpikir tentang yang mendaftar untuk menggunakan dan yang instruksi semua sambil berpikir tentang bagaimana orang-register tidak harus berinteraksi dengan register loop / register lainnya dll

Assembler: Problem - changing the target Assembler: Masalah - mengubah target

Another difficulty is when you change from one microcontroller to another (even in the same device family) the assembler instructions may be changed eg more instructions to improve microcontroller performance. kesulitan lain adalah ketika Anda mengubah dari satu mikrokontroler lain (bahkan dalam keluarga perangkat yang sama) petunjuk assembler dapat berubah misalnya petunjuk lebih lanjut untuk meningkatkan kinerja mikrokontroler. So you will have to learn an entirely different instruction set when moving either to a new target microcontroller or moving to a different device within the same family ie code re-use is not possible unless you stay with one microcontroller (or devices with a similar internal architecture). Jadi, Anda akan harus belajar yang berbeda sama sekali instruksi set ketika pindah baik ke mikrokontroler target baru atau pindah ke perangkat yang berbeda dalam-sama keluarga yaitu menggunakan kode ulang tidak mungkin kecuali Anda tinggal dengan satu mikrokontroler (atau perangkat dengan serupa internal arsitektur).

High level languages Bahasa tingkat tinggi


HLL: target ulang

Retargeting code to another microcontroller is easier since the HLL will know the details of the new target ie instruction set, fuses etc. Retargeting kode untuk mikrokontroler lain lebih mudah karena HLL akan mengetahui rincian set target yaitu instruksi baru, sekering dll All you need to worry about is the specific differences between the different microcontrollers (in the same family this will be setting up the internal peripherals). Yang perlu Anda khawatirkan adalah perbedaan khusus antara mikrokontroler yang berbeda (dalam keluarga yang sama ini akan disiapkan periferal internal).

The important point is that the HLL takes care of the assembler code needed to do the job. Yang penting adalah bahwa HLL menangani kode assembler yang diperlukan untuk melakukan pekerjaan.

HLL: Easy to understand. HLL: Mudah dimengerti.

The most useful aspect of a high level language (HLL) is that the language is written in a form you can easily understand – there are no cryptic assembler commands that you have to remember and most commands are made up of several machine code instructions – saving you coding effort (often there are built in libraries of code eg LCD driver, Serial port driver, I2C driver etc. Yang berguna Aspek yang paling dari bahasa tingkat tinggi (HLL) adalah bahwa bahasa ditulis dalam bentuk Anda dapat dengan mudah mengerti - tidak ada perintah assembler samar bahwa Anda harus ingat dan perintah sebagian besar terdiri dari beberapa instruksi kode mesin - tabungan Anda coding usaha (sering terdapat dibangun di perpustakaan kode misalnya driver LCD, driver port Serial, I2C driver dll

So the HLL makes it easy to write code as it generates the correct assembler for the target microcontroller. Jadi HLL memudahkan untuk menulis kode karena menghasilkan assembler yang benar untuk mikrokontroler target.

HLL : Whitespace HLL: Whitespace

You can also make use of white space (areas of no code) to separate out the various operations within the program – typically assembler code is just one great big list that is really very difficult to read – I know there are comments but you need to comment almost every line so that someone else can Anda juga dapat menggunakan ruang putih (bidang kode tidak) untuk memisahkan berbagai operasi dalam program - biasanya kode assembler adalah salah satu daftar besar besar yang benar-benar sangat sulit untuk dibaca - saya tahu ada komentar tetapi Anda perlu komentar hampir setiap baris sehingga orang lain dapat
understand the code. memahami kode.

HLL: Task splitting HLL: Tugas membelah

One of the best features of a HLL is that you can split tasks into separate functions that you can concentrate on them individually (as the HLL takes care of local variables etc.). Salah satu fitur terbaik dari sebuah HLL adalah bahwa Anda dapat membagi tugas ke dalam fungsi yang terpisah yang dapat Anda berkonsentrasi pada mereka secara individu (sebagai HLL menangani variabel lokal dll). For assembler even when using a call instruction you have to take care of preserving the register state – in the HLL it's all done Untuk assembler bahkan ketika menggunakan sebuah panggilan instruksi Anda harus mengurus melestarikan negara register - di HLL itu semua dilakukan
for you. untuk Anda.

HLL: Code re-use HLL: Kode digunakan kembali

Once you learn the HLL you will find it easy to read code written by other people and you will be able to re-use code that you have already written whereas with assembler you will constantly need to analyze the code to see if it fits in with your new functions. Setelah Anda mempelajari HLL Anda akan merasa mudah untuk membaca kode yang ditulis oleh orang lain dan Anda akan dapat menggunakan kode-ulang bahwa Anda sudah menulis bahwa dengan assembler Anda akan selalu perlu untuk menganalisis kode untuk melihat apakah cocok dengan Anda baru fungsi.

The only decision then is which high level language? Keputusan-satunya kemudian yang bahasa tingkat tinggi? There are really three contenders BASIC, C and Pascal – these are the most popular languages and for popular microcontrollers there will be an HLL compiler for each one. Sesungguhnya ada tiga pesaing BASIC, C dan Pascal - ini adalah bahasa yang paling populer dan untuk mikrokontroler populer akan ada compiler HLL untuk masing-masing. I'll just list the advantages and disadvantages of each Aku hanya akan mencantumkan kelebihan dan kekurangan masing-masing

BASIC Advantages DASAR Keuntungan

  1. Very easy to learn and use. Sangat mudah dipelajari dan digunakan.
  2. A BASIC compiler will produce code that runs fast as a C compiler. Sebuah kompiler DASAR akan menghasilkan kode yang berjalan cepat sebagai kompiler C.
  3. Many in built functions (depending on compiler). Banyak fungsi yang dibangun (tergantung compiler).
  4. Very popular – large user base with many example programs. Sangat populer - besar basis pengguna dengan banyak contoh program.

BASIC Disadvantages DASAR Kekurangan

  1. Non standard language. Non bahasa baku.
  2. If using an interpreted HLL will run very slowly. Jika menggunakan HLL ditafsirkan akan berjalan sangat lambat.

Note: Because the language is not standardized it will be difficult to move code to a new processor target type. Catatan: Karena bahasa tidak standar akan sulit untuk memindahkan kode untuk jenis prosesor baru target.

Pascal Advantages Keuntungan pascal

  1. Easy to learn and use. Mudah dipelajari dan digunakan.
  2. A Pascal compiler will produce code that runs fast as a C compiler. Sebuah kompiler Pascal akan menghasilkan kode yang berjalan cepat sebagai kompiler C.
  3. Many in built functions (depending on compiler). Banyak fungsi yang dibangun (tergantung compiler).

Pascal Disadvantages Pascal Kekurangan

  1. Not as popular as C – so not as many compilers. Tidak sepopuler C - sehingga tidak banyak kompiler.
  2. A bit wordy – it was originally intended as a teaching language. A bit bertele-tele - itu awalnya ditujukan sebagai bahasa pengajaran.
  3. Not as flexible as C. Bukan sebagai fleksibel sebagai C.

C Advantages Keuntungan C

  1. Compiled language - always runs fast. Bahasa Dikompilasi - selalu berjalan cepat.
  2. Standardized language (ANSI)- easier to port to different compilers / target devices. Bahasa standar (ANSI) - lebih mudah untuk port ke compiler yang berbeda / perangkat target.
  3. Many compilers available. Banyak kompiler yang tersedia.
  4. Many in built functions (depending on compiler). Banyak fungsi yang dibangun (tergantung compiler).
  5. Very popular – large user base with many example programs. Sangat populer - besar basis pengguna dengan banyak contoh program.
  6. Used in many different industries. Digunakan dalam berbagai industri.
  7. Usable at the hardware level as well as higher abstraction levels (although C++ is better for very abstracted programming models). Dapat digunakan di tingkat perangkat keras serta tingkat abstraksi yang lebih tinggi (walaupun C + + adalah lebih baik bagi pemrograman model sangat abstrak).

C Disadvantages C Kekurangan

  1. Hard to learn at first. Sulit untuk belajar pada awalnya.
  2. Strong type checking means you spend time pleasing the compiler (although this protects you from making errors). memeriksa jenis kuat berarti Anda menghabiskan waktu menyenangkan compiler (walaupun ini melindungi Anda dari kesalahan pembuatan).

Teori dasar COUNTER JUMLAH PENONTON PADA STADION SEPAK BOLA AUTOMATIS MENGGUNAKAN INTERFACING MOTOR STEPPER DENGAN MICROKONTROLER AT89S51

Berdasarkan cara kerja dan fungsinya,pada alat penghitung jumlah penonton yang masuk pada stadion otomatis ini dibagi atas beberapa bagian/ blok. Berikut ini disajikan diagram blok rancangan penelitian dan penjelasan masing-masing blok:

Blok Diagram Rangkaian

Rangkaian Mikrokontroler AT89S51

Rangkaian ini berfungsi sebagai pusat kendali dari seluruh system yang ada.

Rangkaian mikrokontroler ditunjukkan pada gambar berikut ini:

Rangkaian Mikrokontroller At89s51

Pin 31 External Access Enable (EA) diset high (H). Ini dilakukan karena mikrokontroller AT89S8253 tidak menggunakan memori eskternal. Pin 18 dan 19 dihubungkan ke XTAL 12 MHz dan capasitor 33 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroller AT89S51 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset mikrokontroller ini. Pin 32 sampai 39 adalah Port 0 yang merupakan saluran/bus I/O 8 bit open collector dapat juga digunakan sebagai multipleks bus alamat rendah dan bus data selama adanya akses ke memori program eksternal. Pada port 0 ini masing masing pin dihubungkan dengan resistor 4k7 ohm.

Resistor 4k7 ohm yan dihubungkan ke port 0 befungsi sebagai pull up( penaik tegangan ) agar output dari mikrokontroller dapat mntrigger transistor. Pin 1 sampai 8 adalah port 1. Pin 21 sampai 28 adalah port 2. Dan Pin 10 sampai 17 adalah port 3. Pin 39 yang merupakan dihubungkan sebuah 330 dan sebuah LED. Ini dilakukan hanya untuk menguji apakah rangkaian minimum mikrokontroller AT89S51 sudah bekerja atau belum. Dengan memberikan program sederhana pada mikrokontroller tersebut, dapat diketahui apakah rangkaian minimum tersebut sudah bekerja dengan baik atau tidak. Jika LED yang terhubug ke Pin 39 sudah bekerja sesuai dengan perintah yang diberikan, maka rangkaian minimum tersebut telah siap digunakan. Pin 20 merupakan ground dihubungkan dengan ground pada power supplay. Pin 40 merupakan sumber tegangan positif dihubungkan dengan + 5 volt dari power supplay.

System counter penonton

Sensor counter

Untuk dapat mengcounter penonton yang memasuki stadion, maka alat dilengkapi dengan sebuah sensor. Sensor menggunakan pemancar infra merah dan sebuah potodioda. Sensor ini memanfaatkan pancaran dari pemancar infra merah yang diterima oleh potodioda. Perbedaan intensitas pantulan inilah yang digunakan untuk mendeteksi adanya orang yang melewati sensor atau tidak.

Rangkaian pemancar infra merah tampak seperti gambar di bawah ini:

Pemancar Infra Merah

Dengan besarnya arus yang mengalir ke LED infra merah, maka intensitas pancaran infra merah akan semakin kuat, yang menyebabkan jarak pancarannya akan semakin jauh. Pancaran dari sinar infra merah akan diterima oleh fotodioda, kemudian akan diolah oleh rangkaian penerima agar menghasilkan sinyal tertentu, dimana jika fotodioda menerima pancaran sinar infra merah maka output dari rangkaian penerima ini akan mengeluarkan logika low (0), namun jika fotodioda tidak menerima pancaran sinar infra merah, maka output dari rangkaian penerima akan mengeluarkan logika high (1).

Rangkaian penerima infra merah seperti gambar di bawah ini:

Penerima Sinar Infra Merah

Fotodioda dioperasikan pada bias balik, dimana fotodioda ini akan memiliki hambatan sekitar 15 s/d 20 Mohm jika tidak terkena sinar infra merah, dan hambatannya akan berubah menjadi sekitar 80 s/d 300 Kohm jika terkena sinar infra merah tergantung dari besarnya intensitas yang mengenainya. Semakin besar intensitasnya, maka hambatannya semakin kecil.

Pada rangkaian di atas, output dari fotodioda diumpankan ke basis transistor tipe NPN C945, ini berarti untuk membuat transistor tersebut saturasi maka tegangan yang keluar dari fotodioda harus lebih besar dari 0,7 volt. Syarat ini akan terpenuhi jika fotodioda mendapatkan sinar infra merah.

LED ini akan menyala jika sensor menerima sinar infra merah, dan akan mati jika sensor tidak menerima sinar infra merah.

Display seven segment

Untuk menampilkan jumlah penonton yang masuk ke dalam stadion diperlukan suatu rangkaian display yang dapat menampilkan jumlah penonton yang masuk ke dalam stadion tersebut.

Rangkaian display yang digunakan untuk menampilkan jumlah penonton yang masuk ke dalam stadion terlihat pada gambar berikut:

Rangkaian display seven segment

Display ini menggunakan 3 buah seven segment yang dihubungkan ke IC HEF 4094BP yang merupakan IC serial to paralel. IC ini akan merubah 8 bit data serial yang masuk menjadi keluaran 8 bit data paralel. Rangkaian ini dihubungkan dengan P3.0 dan P3.1 AT89S51. P3.0 merupakan fasilitas khusus pengiriman data serial yang disediakan oleh mikrokontroler AT89S51. Sedangkan P3.1 merupakan sinyal clock untuk pengiriman data serial. Pada rangkaian display ini digunakan dua buah dioda yang berfungsi untuk menurunkan tegangan supply untuk seven segment. Satu buah dioda dapat menurunkan tegangan sekitar 0,6 volt. Jadi, apabila dioda yang digunakan dua buah maka tegangan yang dapat diturunkannya adalah 1,8 volt. Tegangan ini diturunkan agar umur seven segment lebih tahan lama dan karena tegangan maksimum seven segment adalah 3,7 volt

Sistem stadion otomatis

Rangkaian pengendali motor stepper

Rangkaian pengendali motor stepper digunakan agar atap stadion dapat membuka dan menutup secara otomatis. Rangkaian ini menggunakan motor stepper dan driver motor stepper. Motor stepper berfungsi untuk menggerakkan atap dan driver motor stepper berfungsi untuk mengendalikan motor stepper. Rangkaian pengendali motor stepper dapat dilihat pada gambar berikut:

Rangkaian Driver Motor Stepper

Driver ini berfungsi untuk memutar motor stepper searah dengan jarum jam atau berlawanan arah dengan jarum jam. Rangkaian ini akan dikendalikan oleh mikrokontroler AT89S51. Jadi dengan memberikan sinyal high secara bergantian ke input dari rangkaian driver motor stepper tersebut, maka pergerakan motor stepper sudah dapat dikendalikan oleh mikrokontroler AT89S51. Rangkaian driver motor stepper ini terdiri dari empat masukan dan empat keluaran, dimana masing-masing masukan dihubungkan dengan mikrokontroler AT89S51 dan keluarannya dihubungkan ke motor stepper. Rangkaian ini akan bekerja memutar motor stepper jika diberi sinyal high (1) secara bergantian pada ke-4 masukannya.

Rangkaian ini terdiri dari 4 buah transistor NPN TIP122. Masing-masing transistor dihubungkan ke P0.0, P0.1, P0.2 dan P0.3 pada mikrokontroler AT89S51.

Basis dari masing-masing transistor diberi tahanan 10 Kohm untuk membatasi arus yang masuk ke transistor. Kolektor dihubungkan dengan kumparan yang terdapat pada motor stepper, kemudian kumparan dihubungkan dengan sumber tegangan 12 volt dan emitor dihubungkan ke ground.

Jika P0.0 diberi logika high (1), yang berarti basis pada transistor TIP 122 mendapat tegangan 5 volt, maka transistor akan aktip. Hal ini akan menyebabkan terhubungnya kolektor dengan emitor, sehingga kolektor mendapatkan tegangan 0 volt dari ground. Hal ini menyebabkan arus akan mengalir dari sumber tegangan 12 volt ke kumparan, sehingga kumparan akan menghasilkan medan magnet. Medan magnet ini akan menarik logam yang ada pada motor, sehingga motor mengarah pada kumparan yang memiliki medan magnet tesebut.

Jika kemudian P0.0 di beri logika low (0), yang berarti transistor tidak aktip dan tidak ada arus yang mengair pada kumparan, sehingga tidak ada medan magnet pada kumparan. Dan disisi lain P0.1 diberi logika high (1), sehingga kumparan yang terhubung ke P0.1 akan menghasilkan medan magnet. Maka akan beralih kearah kumparan yang terhubung ke P0.1 tersebut. Seterusnya jika logika high diberikan secara bergantian pada input dari driver motor stepper, maka motor stepper akan berputar sesuai dengan arah logika high (1) yang diberikan pada inputnya.

Siang-malam

Sensor ini berfungsi untuk mendeteksi keadaan siang/malam hari Sensor ini terdiri dari sebuah potodioda yang ke rangkaian penguat sinyal. Potodioda memiliki karakteristik berubahnya nilai hambatannya jika ada sinar infra merah yang mengenainya. Matahari sendiri memancarkan sinar infra merah yang cukup besar.

Dengan demikian sensor ini dapat mengetahui ada/tidaknya sinar infra merah dari matahari. Jika terkena sinar matahari, maka hambatan pada potodioda ini akan mengecil, dan sebaliknya jika tidak sinar matahari, maka hambatan pada potodioda ini akan berubah semakin besar. Perubahan inilah yang dijadika sebagai indikasi siang atau malam.

Sensor ini akan dihubungkan ke rangkaian penguat sinyal untuk diperkuat sinyalnya agar dapat memberikan logika high atau low ke mikrokontroler AT89S51.

Gambar hubungan antara sensor ini dengan rangkaian penguat ditunjukkan pada gambar:

Photodioda Dan Rangkaian Penguat

Prinsip kerja dari rangkaian sensor siang/malam sama dengan prinsip kerja rangkaian counter penonton yang telah dijelaskan sebelumnya.Fotodioda dioperasikan pada bias balik, dimana fotodioda ini akan memiliki hambatan sekitar 15 s/d 20 Mohm jika tidak terkena sinar infra merah, dan hambatannya akan berubah menjadi sekitar 80 s/d 300 Kohm jika terkena sinar infra merah tergantung dari besarnya intensitas yang mengenainya. Semakin besar intensitasnya, maka hambatannya semakin kecil.

LED ini akan menyala jika sensor menerima sinar infra merah, dan akan mati jika sensor tidak menerima sinar infra merah.

Rangkaian switch buka dan tutup

Ketika mikrokontroler memerintahkan motor untuk membuka atap, mikrokontroler tidak mengetahui apakah atap sudah terbuka lebar atau belum. Hal yang sama juga terjadi ketika mikrokontroler memerintahkan motor untuk menutup atap, mikrokontroler tidak mengetahui apakah atap sudah tertutup rapat atau belum. Karena itu dibutuhkan sebuah saklar batas yang dapat mengetahui kedua keadaan tersebut.

Dalam hal ini digunakan sebuah saklar batas untuk buka atap, yang berfungsi untuk mengetahui apakah atap sudah terbuka lebar atau belum, dan sebuah saklar batas untuk tutup atap yang berfungsi untuk mengetahui apakah atap sudah tertutup rapat atau belum. Rangkaian saklar batas untuk buka atap hanya terdiri dari sebuah saklar yang dihubungkan ke ground dan ke mikrokontroler AT89S51. Rangkaiannya seperti gambar dibawah ini,

Switch Batas Untuk Buka Dan Tutup Atap

Ketika saklar batas dalam keadaan terbuka, kondisi P1.0 adalah high. Namun jika atap menyentuh saklar, maka P1.0 akan terhubung ke ground, yang menyebabkan kondisi P1.0 akan berubah dari high (1), menjadi low (0). Perubahan kondisi pada P1.0 inilah yang dikenali oleh mikrokontroler sebagai tanda bahwa atap telah terbuka lebar, maka mikrokontroler akan memerintahkan motor stepper untuk berhenti berputar, sehingga atap tidak terbuka lebih lebar lagi .

Saklar batas untuk tutup atap juga mempunyai rangkaian dan cara kerja yang sama dengan rangkaian saklar batas untuk buka atap, perbedaannya hanya terletak pada hubungannya dengan mikrokontroler AT89S51.

Rangkaian lampu

Rangkaian lampu ini berfungsi untuk menghidupkan dan mematikan lampu secaraotomatis, ketika buka dan ditutup. Rangkaiannya seperti gambar di bawah ini:

Rangkaian Lampu

Pada rangkaian ini, lampu yang digunakan adalah lampu LED. Lampu LED ini akan menyala jika positipnya dihubungkan ke sumber tegangan positip dan negatipnya dihubungkan ke ground.

Pada gambar rangkaian , transistor berfungsi sebagai saklar elektronik yang dapat menghidupkan dan mematikan lampu LED. Dari gambar dapat dilihat bahwa negatip lampu LED dihubungkan ke kolektor dari transistor NPN (2SC945), ini berarti jika transistor dalam keadaan aktip maka kolektor akan terhubung ke emitor dimana emitor langsung terhubung ke ground yang menyebabkan tegangan di kolektor menjadi 0 volt, keadaan ini akan mengakibatkan LED menyala. Sebaliknya jika transistor tidak aktip, maka kolektor tidak terhubung ke emitor, sehingga tegangan pada kolektor menjadi 5 volt, keadaan ini menyebabkan LED mati.

Transistor yang digunakan dalam rangkaian atas adalah jenis NPN, transistor jenis ini akan aktip apabila tegangan pada basis lebih besar dari 0,7 volt. Resistor 4,7 Kohm pada basis berguna untuk membatasi arus yang masuk pada basis agar transistor tidak rusak.

PENGUJIAN ALAT DAN PROGRAM

Rangkaian Mikrokontroller AT89S51

Untuk mengetahui apakah rangkaian mikrokontroller AT89S51 telah bekerja dengan baik, maka dilakukan pengujian. Pengujian bagian ini dilakukan dengan memberikan program sederhana pada mikrokontroller AT89S51. Programnya adalah sebagai berikut:

Loop:

Setb P0.0

Acall tunda

Clr P0.0

Acall tunda

Sjmp Loop

Tunda:

Mov r7,#255


Tnd:


Mov r6,#255


Djnz r6,$

Djnz r7,tnd

Ret

Program di atas bertujuan untuk menghidupkan LED yang terhubung ke P0.0 ± 0,13 detik kemudian mematikannya selama ± 0,13 detik secara terus menerus. Perintah Setb P0.0 akan menjadikan P0.0 berlogika high yang menyebabkan LED menyala. Acall tunda akan menyebabkan LED ini hidup selama beberapa saat.

Perintah Clr P0.0 akan menjadikan P0.0 berlogika low yang menyebabkan LED akan mati. Perintah Acall tunda akan menyebabkan LED ini mati selama beberapa saat.

Perintah Sjmp Loop akan menjadikan program tersebut berulang, sehingga akan tampak LED tersebut tampak berkedip.

Tunda:

Tnd:

Mnemonic

MOV Rn,#data

DJNZ

RET

mov r7,#255

mov r6,#255

djnz r6,$

Pengujian Rangkaian Display Seven Segmen

Pengujian pada rangkaian ini dapat dilakukan dengan menghubungkan rangkaian ini dengan rangkaian mikrokontroler, kemudian memberikan data tertentu pada port serial dari mikrokontroler yang terletak pada p3.0 dan p3.1. Seven segmen yang digunakan adalah common anoda, dimana semen akan menyala jika diberi logika 0 dan sebaliknya segmen akan mati jika diberi logika 1.

Pengujian Rangkaian Driver Motor Stepper

Rangkaian driver motor stepper ini terdiri dari empat masukan dan empat keluaran, dimana masing-masing masukan dihubungkan dengan mikrokontroler AT89S51 dan keluarannya dihubungkan ke motor stepper. Rangkaian ini akan bekerja memutar motor stepper jika diberi sinyal high (1) secara bergantian pada ke-4 masukannya.

Rangkaian ini terdiri dari 4 transistor NPN TIP 122. Masing-masing transistor dihubungkan ke P0.0, P0.1, P0.2 dan P0.3 pada mikrokontroler AT89S51.

Basis dari masing-masing transistor diberi tahanan 10 Kohm untuk membatasi arus yang masuk ke transistor. Kolektor dihubungkan dengan kumparan yang terdapat pada motor stepper, kemudian kumparan dihubungkan dengan sumber tegangan 12 volt dan emitor dihubungkan ke ground.

Jika P0.0 diberi logika high (1), yang berarti basis pada transistor TIP 122 mendapat tegangan 5 volt, maka transistor akan aktip. Hal ini akan menyebabkan terhubungnya kolektor dengan emitor, sehingga kolektor mendapatkan tegangan 0 volt dari ground. Hal ini menyebabkan arus akan mengalir dari sumber tegangan 12 volt ke kumparan, sehingga kumparan akan menghasilkan medan magnet. Medan magnet ini akan menarik logam yang ada pada motor, sehingga motor mengarah pada kumparan yang memiliki medan magnet tesebut.

Jika kemudian P0.0 di beri logika low (0), yang berarti transistor tidak aktip dan tidak ada arus yang mengair pada kumparan, sehingga tidak ada medan magnet pada kumparan.

Dan disisi lain P0.1 diberi logika high (1), sehingga kumparan yang terhubung ke P0.1 akan menghasilkan medan magnet. Maka motor akan beralih kearah kumparan yang terhubung ke P0.1 tersebut. Seterusnya jika logika high diberikan secara bergantian pada input dari driver motor stepper, maka motor stepper akan berputar sesuai dengan arah logika high (1) yang diberikan pada inputnya. Untuk memutar dengan arah yang berlawanan dengan arah yang sebelumnya, logika high (1) pada input driver motor stepper harus diberikan secara bergantian dengan arah yang berlawanan dengan sebelumnya.

Program yang diberikan pada driver motor stepper untuk memutar motor stepper adalah sebagai berikut :

mov a,#11h

putar:

mov P0,a

acall tunda

Rl a

sjmp putar

Program diawali dengan memberikan nilai 11h pada pada accumulator (a), kemudian program akan memasuki rutin putar. Nilai a diisikan ke port 0, sehingga sekarang nilai port 0 adalah 11h. ini berarti P0.0 dan P0.4 mendapatkan logika high sedangkan yang lainnya mendapatkan logika low.

Program dilanjutkan dengan memanggil rutin tunda. Lamanya tunda akan mempengaruhi kecepatan perputaran motor. Semakin lama maka tunda, maka perputaran motor akan semakin lambat. Perintah berikutnya adalah Rl a,perintah ini akan memutar nilai yang ada pada accumulator (a).

Nilai pada accumulator (a) yang awalnya 11h, setelah mendapat perintah Rl a, maka nilai pada accumulator (a) akan merubah menjadi 22h. Kemudian program akan melihat apakah kondisi sensor buka pintu dalam keadaan high (1) atau low (0). Jika high (1),

Nilai yang ada pada accumulator (a), akan kembali diisikan ke port 0, maka nilai di port 0 akan berubah menjadi 22h, ini berarti P0.1 dan P0.5 mendapatkan logika high sedangkan yang lainnya mendapatkan logika low.

Sebelumnya telah dibahas bahwa P0.0, P0.1, P0.2, dan P0.3 dihubungkan ke masukan driver motor stepper, dengan program di atas maka P0.0, P0.1, P0.2, dan P0.3 akan mendapatkan nilai high (1) secara bergantian. Hal ini menyebabkan motor stepper akan berputar membuka pintu.Hal yang sama juga berlaku ketika motor berputar kaearah sebaliknya, perbedaannya hanya pada perintah rotate. Jika pada perintah berlawanan arah jarum jam digunakan rotate left ( Rl ), maka pada perintah searah jarum jam digunakan perintah rotate right ( Rr).

Metric Unit

Awalan biasanya disingkat dengan huruf pertama, dengan unit yang lebih besar dari 1 dikapitalisasi (KB, MB, dll). Satu pengecualian adalah kbps untuk kilobits/sec. Dengan demikian, jalur komunikasi 1-Mbps mentransmisikan 106 bits/sec dan psec 100 (100 ps) jam setiap 10-10 detik. Biasanya, “m” digunakan untuk mili dan “μ” (dalam huruf Yunani mu) untuk mikro.
http://blog.ub.ac.id/yufen/files/2010/10/gambar1-39.jpg

Gambar . Prefix untuk metrik utama.

Prefix diperlukan untuk menunjukkan bahwa untuk mengukur memori, disk, file, dan ukuran database, dalam praktiknya unit memiliki makna yang sedikit berbeda. Seharusnya, kilo berarti 210 (1024) bukannya 103 (1000) karena memory selalu kelipatan dari dua. Dengan demikian, memori 1-KB mengandung 1024 byte, bukan 1000 byte. Demikian pula, memori 1-MB berisi 220 (1,048,576) bytes, memori 1-GB berisi 230 (1,073,741,824) byte, dan database 1-TB berisi 240 (1,099,511,627,776) bytes.

Namun, jalur komunikasi 1-kbps mengirimkan 1000 bit per detik dan LAN 10-Mbps berjalan pada 10.000.000 bits / detik karena kecepatan ini tidak kelipatan dari dua.

Penghitung frekuensi Counter berbasis mikrokontroler AT89S52

Prinsip kerja dari frekuensi counter ini adalah dengan mencuplik frekuensi dari sinyal yang masuk selama 1 detik, dari cuplikan tersebut mikrokontoler akan menghitung pulsa yang terjadi dengan memanfaatkan fungsi counter, hasil dari pengukuran frekuensi akan ditampilkan pada display LCD.

Sistem yang dirancang adalah sebagai berikut:

Sinyal Input —–> Buffer/pengkondisi sinyal ——> Mikrokontroler AT89S52 —–> DISPLAY LCD

Masing-masing blok, yaitu sinyal input berupa masukan sinyal segi empat. Lalu diteruskan melalui rangkaian pengkondisi sinyal (buffer) sehingga input ke mikrokontroler stabil yaitu 5 Volt. Output dari buffer diteruskan ke port interrupt timer pada mikrokontroler AT89S52, sinyal masukan pada mikrokontroler dihitung frekuensinya dengan menggunakan program yang mengaktifkan timer/counter dan kemudian hasilnya ditampilkan pada display LCD (liquid crystal display)

Rangkaian Sistem Minimum Mikrokontroler AT89S52


Rangkaian skematik dan layout PCB sistem minimum mikrokontroler AT89S52 dapat dilihat pada di bawah ini:

Pin 18 dan 19 dihubungkan ke XTAL 11,0592 MHz dan dua buah kapasitor 30 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroler AT89S52 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset mikrokontroler ini. Pin 32 sampai 39 adalah Port 0 yang merupakan saluran/bus I/O 8 bit open collector dapat juga digunakan sebagai multipleks bus alamat rendah dan bus data selama adanya akses ke memori program eksternal.

Karena fungsi tersebut maka Port 0 dihubungkan dengan resistor array. Jika mikrokontroler tidak menggunakan memori eksternal, maka penggunaan resistor array tidak begitu penting. Selain digunakan untuk fungsi diatas resistor array digunakan sebagai pull up.

Untuk men-download file heksadesimal ke mikrokontroler, Mosi, Miso, Sck, Reset, Vcc dan Gnd dari kaki mikrokontroler dihubungkan ke RJ45. RJ45 sebagai konektor yang akan dihubungkan ke ISP Programmer. Dari ISP Programmer inilah dihubungkan ke komputer melalui port paralel. Kaki Mosi, Miso, Sck, Reset, Vcc dan Gnd pada mikrokontroler terletak pada kaki 6, 7, 8, 9, 40 dan 20. Apabila terjadi keterbalikan pemasangan jalur ke ISP Programmer, maka pemograman mikrokontroler tidak dapat dilakukan karena mikrokontroler tidak akan bisa merespon.

Rangkaian Pengkondisi Sinyal


Rangkaian skematik pengkondisi sinyal dapat dilihat pada gambar di bawah ini:

Mikrokontroler hanya dapat menghitung pulsa/gelombang dengan puncak gelombang 5 volt dan dasar gelombang 0 volt. Jadi 1 gelombang penuh terdiri dari 1 sinyal 5 V dan 1 sinyal 0 V, oleh karena itu dibutuhkan sebuah rangkaian yang dapat mempertahankan kestabilan tersebut. Pada rangkaian pengkondisi sinyal ini dipergunakan IC 74HC14 yaitu IC inverter yang dimanfaatkan sebagai buffer sinyal input agar sinyal keluaran berupa sinyal/pulsa digital yang stabil.

Rangkaian LCD (Liquid Crystal Display)

Rangkaian skematik konektor yang dihubungkan dari LCD (liquid crystal display) ke mikrokontroler dapat dilihat pada gambar dibawah ini.

Rangkaian skematik konektor yang dihubungkan dari LCD mikrokontroler


Rangkaian skematik konektor yang dihubungkan dari LCD ke mikrokontroler


Rangkaian Power Supply

Rangkaian skematik power supply


Rangkaian power supply berfungsi untuk mensupplay arus dan tegangan ke seluruh rangkaian yang ada. Rangkaian power supply ini terdiri dari dua keluaran, yaitu 5 volt dan 12 volt, keluaran 5 volt digunakan untuk menghidupkan seluruh rangkaian kecuali rangkaian ADC, sedangkan keluaran 12 volt digunakan untuk mensupplay tegangan ke rangkaian ADC, karena rangkaian ADC memerlukan tegangan input sebesar 12 volt agar tegangan referensinya stabil.

Trafo stepdown yang berfungsi untuk menurunkan tegangan dari 220 volt AC menjadi 12 volt AC. Kemudian 12 volt AC akan disearahkan dengan menggunakan dua buah dioda, selanjutnya 12 volt DC akan diratakan oleh kapasitor 2200 μF. Regulator tegangan 5 volt (LM7805CT) digunakan agar keluaran yang dihasilkan tetap 5 volt walaupun terjadi perubahan pada tegangan masukannya. LED hanya sebagai indikator apabila PSA dinyalakan. Transistor PNP TIP 32 disini berfungsi sebagai penguat arus apabila terjadi kekurangan arus pada rangkaian, sehingga regulator tegangan (LM7805CT) tidak akan panas ketika rangkaian butuh arus yang cukup besar. Tegangan 12 volt DC langsung diambil dari keluaran jembatan dioda.

Pengujian Rangkaian Mikrokontroler AT89S52

Untuk mengetahui apakah rangkaian mikrokontroler AT89S52 telah bekerja dengan baik, maka dilakukan pengujian. Pengujian bagian ini dilakukan dengan memberikan program pada IC AT89S52, apabila ada sinyal masukan dari rangkaian pengkondisi sinyal maka sistem minimum akan mengaktifkan interrupt timer 0 dan menghitung pulsa dari sumber gelombang pada port 3.4.

Setelah penghitungan pulsa selesai maka tampilan akan dikirim ke LCD dan hasil counter akan ditampilkan dengan satuan Hz (Hertz). Rangkaian sistem minimum telah sukses dalam menjalankan seluruh operasi tersebut di atas, maka rangkaian dinyatakan bekerja dengan baik.

Pengujian Rangkaian Pengkondisi Sinyal

Rangkaian pengkondisi sinyal ini atau rangkaian buffer yang berfungsi sebagai rangkaian yang dapat mempertahankan kestabilan sinyal yang akan dikirimkan ke sistem minimum AT89S52. Pada rangkaian ini diberi probe untuk mengukur sinyal masukan yang berasal dari sinyal function atau alat yang keluarannya berupa sinyal DC (direct current) dengan kisaran tegangan TTL khususnya segi empat.

Sinyal input akan dikirim ke IC 7414 dan melalui pin 10 maka sinyal dikirim ke sistem minimum melalui port 3.4, apabila pada sistem minimum sudah dapat mengcounter nilai dari pengkondisi sinyal, maka rangkaian ini telah bekerja dengan baik.

Pengujian Rangkaian Power Supply

Pengujian rangkaian ini dengan mengukur tegangan keluaran dari power supply menggunakan multimeter digital. Setelah dilakukan pengukuran maka diperoleh besarnya tegangan keluaran sebesar 5 volt. Setelah itu rangkaian power supply dihubungkan ke sumber arus listrik dan saklar ON/OFF nya diaktifkan ke posisi ON.

Pengujian Rangkaian secara keseluruhan

Setelah seluruh rangkaian dihubungkan menggunakan kabel pelangi sesuai dengan yang telah ditetapkan, lalu diberi arus melalui rangkaian power supply, keluaran dari power supply berupa tegangan sebesar 5 volt diteruskan ke rangkaian system minimum dan rangkaian pengkondisi sinyal. Rangkaian system minimum dibuat dalam keadaan ON. Diberi masukan berupa sinyal masukan yang berasal dari sinyal fuction atau alat yang keluarannya berupa sinyal DC (direct current) dengan kisaran tegangan TTL khususnya segi empat.

Sinyal input akan dikirim ke IC 7414 dan melalui pin 10 maka sinyal dikirim ke sistem minimum melalui port 3.4. Di dalam rangkaian ini masukan dicounter dengan program yang sudah diberikan pada IC AT89S52, setalah pulsa dicounter maka hasilnya akan dikirim melalui P1.1 sampai P1.7 lalu kerangkaian konektor yang dihubungkan ke LCD (liquid crystal display). Pada LCD akan ditampilkan hasil counter yang diperoleh dalam satuan Hertz (Hz).

Setelah hasil dari counter ditampilkan pada LCD berarti alat frequency counter ini telah sukses menjalankan seluruh operasi di atas, dan dapat dinyatakan kalau rangkaian bekerja dengan baik.

Sejarah Mikrokontroler dan jenisnya

Apa Itu Mikrokontroller?

Mikrokontroler adalah sebuah sistem komputer fungsional dalam sebuah chip. Di dalamnya terkandung sebuah inti prosesor, memori (sejumlah kecil RAM, memori program, atau keduanya), dan perlengkapan input output.

Dengan kata lain, mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan menulis data. Sekedar contoh, bayangkan diri Anda saat mulai belajar membaca dan menulis, ketika Anda sudah bisa melakukan hal itu Anda bisa membaca tulisan apapun baik buku, cerpen, artikel dan sebagainya, dan Andapun bisa pula menulis hal-hal sebaliknya. Begitu pula jika Anda sudah mahir membaca dan menulis data maka Anda dapat membuat program untuk membuat suatu sistem pengaturan otomatik menggunakan mikrokontroler sesuai keinginan Anda. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut “pengendali kecil” dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini.

Mikrokonktroler digunakan dalam produk dan alat yang dikendalikan secara automatis, seperti sistem kontrol mesin, remote controls, mesin kantor, peralatan rumah tangga, alat berat, dan mainan. Dengan mengurangi ukuran, biaya, dan konsumsi tenaga dibandingkan dengan mendesain menggunakan mikroprosesor memori, dan alat input output yang terpisah, kehadiran mikrokontroler membuat kontrol elektrik untuk berbagai proses menjadi lebih ekonomis. Dengan penggunaan mikrokontroler ini maka :


· Sistem elektronik akan menjadi lebih ringkas

· Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah perangkat lunak yang mudah dimodifikasi

· Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar menambah jumlah saluran masukan dan keluaran (I/O). Dengan kata lain, mikrokontroler adalah versi mini atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung beberapa periferal yang langsung bisa dimanfaatkan, misalnya port paralel, port serial, komparator, konversi digital ke analog (DAC), konversi analog ke digital dan sebagainya hanya menggunakan sistem minimum yang tidak rumit atau kompleks.

Agar sebuah mikrokontroler dapat berfungsi, maka mikrokontroler tersebut memerlukan komponen eksternal yang kemudian disebut dengan sistem minimum. Untuk membuat sistem minimal paling tidak dibutuhkan sistem clock dan reset, walaupun pada beberapa mikrokontroler sudah menyediakan sistem clock internal, sehingga tanpa rangkaian eksternal pun mikrokontroler sudah beroperasi.

Untuk merancang sebuah sistem berbasis mikrokontroler, kita memerlukan perangkat keras dan perangkat lunak, yaitu:

1. sistem minimal mikrokontroler

2. software pemrograman dan kompiler, serta downloader

Yang dimaksud dengan sistem minimal adalah sebuah rangkaian mikrokontroler yang sudah dapat digunakan untuk menjalankan sebuah aplikasi. Sebuah IC mikrokontroler tidakakan berarti bila hanya berdiri sendiri. Pada dasarnya sebuah sistem minimal mikrokontroler AVR memiliki prinsip yang sama, yang terdiri dari 4 bagian, yaitu :

1. prosesor, yaitu mikrokontroler itu sendiri

2. rangkaian reset agar mikrokontroler dapat menjalankan program mulai dari awal

3. rangkaian clock, yang digunakan untuk memberi detak pada CPU

4. rangkaian catu daya, yang digunakan untuk memberi sumberdaya

Pada mikrokontroler jenis2 tertentu (AVR misalnya), poin2 pada no 2 ,3 sudah tersedia didalam mikrokontroler tersebut dengan frekuensi yang sudah diseting dari vendornya (biasanya 1MHz,2MHz,4MHz,8MHz), sehingga pengguna tidak perlu memerlukan rangkaian tambahan, namun bila ingin merancang sistem dengan spesifikasi tertentu (misal ingin komunikasi dengan PC atau handphone), maka pengguna harus menggunakan rangkaian clock yang sesuai dengan karakteristik PC atau HP tersebut, biasanya menggunakan kristal 11,0592 MHz, untuk menghasilkan komunikasi yang sesuai dengan baud rate PC atau HP tersebut.

Perkembangan ?

Mikrokontroler pertama kali dikenalkan oleh Texas Instrument dengan seri TMS 1000 pada tahun 1974 yang merupakan mikrokontroler 4 bit pertama. Mikrokontroler ini mulai dibuat sejak 1971. Merupakan mikrokomputer dalam sebuah chip, lengkap dengan RAM dan ROM. Kemudian, pada tahun 1976 Intel mengeluarkan mikrokontroler yang kelak menjadi populer dengan nama 8748 yang merupakan mikrokontroler 8 bit, yang merupakan mikrokontroler dari keluarga MCS 48. Sekarang di pasaran banyak sekali ditemui mikrokontroler mulai dari 8 bit sampai dengan 64 bit, sehingga perbedaan antara mikrokontroler dan mikroprosesor sangat tipis. Masing2 vendor mengeluarkan mikrokontroler dengan dilengkapi fasilitas2 yang cenderung memudahkan user untuk merancang sebuah sistem dengan komponen luar yang relatif lebih sedikit.

Saat ini mikrokontroler yang banyak beredar dipasaran adalah mikrokontroler 8 bit varian keluarga MCS51(CISC) yang dikeluarkan oleh Atmel dengan seri AT89Sxx, dan mikrokontroler AVR yang merupakan mikrokontroler RISC dengan seri ATMEGA8535 (walaupun varian dari mikrokontroler AVR sangatlah banyak, dengan masing2 memiliki fitur yang berbeda2). Dengan mikrokontroler tersebut pengguna (pemula) sudah bisa membuat sebuah sistem untuk keperluan sehari-hari, seperti pengendali peralatan rumah tangga jarak jauh yang menggunakan remote control televisi, radio frekuensi, maupun menggunakan ponsel, membuat jam digital, termometer digital dan sebagainya.

Jenis-jenis Mikrokontroller

Secara teknis, hanya ada 2 macam mikrokontroller. Pembagian ini didasarkan pada kompleksitas instruksi-instruksi yang dapat diterapkan pada mikrokontroler tersebut. Pembagian itu yaitu RISC dan CISC.

· RISC merupakan kependekan dari Reduced Instruction Set Computer. Instruksi yang dimiliki terbatas, tetapi memiliki fasilitas yang lebih banyak.

· Sebaliknya, CISC kependekan dari Complex Instruction Set Computer. Instruksi bisa dikatakan lebih lengkap tapi dengan fasilitas secukupnya.

Masing-masing mempunyai keturunan atau keluarga sendiri-sendiri.

Sekarang kita akan membahas pembagian jenis-jenis mikrokonktroler yang telah umum digunakan.

1. Keluarga MCS51

Mikrokonktroler ini termasuk dalam keluarga mikrokonktroler CISC. Sebagian besar instruksinya dieksekusi dalam 12 siklus clock.

Mikrokontroler ini berdasarkan arsitektur Harvard dan meskipun awalnya dirancang untuk aplikasi mikrokontroler chip tunggal, sebuah mode perluasan telah mengizinkan sebuah ROM luar 64KB dan RAM luar 64KB diberikan alamat dengan cara jalur pemilihan chip yang terpisah untuk akses program dan memori data.

Salah satu kemampuan dari mikrokontroler 8051 adalah pemasukan sebuah mesin pemroses boolean yang mengijikan operasi logika boolean tingkatan-bit dapat dilakukan secara langsung dan secara efisien dalam register internal dan RAM. Karena itulah MCS51 digunakan dalam rancangan awal PLC (programmable Logic Control).

2. AVR

Mikrokonktroler Alv and Vegard’s Risc processor atau sering disingkat AVR merupakan mikrokonktroler RISC 8 bit. Karena RISC inilah sebagian besar kode instruksinya dikemas dalam satu siklus clock. AVR adalah jenis mikrokontroler yang paling sering dipakai dalam bidang elektronika dan instrumentasi.

Secara umum, AVR dapat dikelompokkan dalam 4 kelas. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral dan fungsinya. Keempat kelas tersebut adalah keluarga ATTiny, keluarga AT90Sxx, keluarga ATMega dan AT86RFxx.

3. PIC

Pada awalnya, PIC merupakan kependekan dari Programmable Interface Controller. Tetapi pada perkembangannya berubah menjadi Programmable Intelligent Computer.

PIC termasuk keluarga mikrokonktroler berarsitektur Harvard yang dibuat oleh Microchip Technology. Awalnya dikembangkan oleh Divisi Mikroelektronik General Instruments dengan nama PIC1640. Sekarang Microhip telah mengumumkan pembuatan PIC-nya yang keenam

PIC cukup popular digunakan oleh para developer dan para penghobi ngoprek karena biayanya yang rendah, ktersediaan dan penggunaan yang luas, database aplikasi yang besar, serta pemrograman (dan pemrograman ulang) melalui hubungan serial pada komputer

Mengenal mikrokontroler

Prinsip kerja mikrokontroler
Pemrograman mikrokontroler merupakan dasar dari prinsip pengontrolan kerja robot, dimana orientasi dari penerapan mikrokontroler ialah untuk mengendalikan suatu sistem berdasarkan informasi input yang diterima, lalu diproses oleh mikrokontroler, dan dilakukan aksi pada bagian output sesuai program yang telah ditentukan sebelumnya.
Mikrokontroler merupakan pengontrol utama perangkat elektronika saat ini, termasuk robot tentunya. Mikrokontroler yang terkenal dan mudah didapatkan di Indonesia saat ini ialah 89S51, AVR ATmega 8535, Atmega16, Atmega32 dan Atmega128. Beberapa merek lain yang terkenal misalnya PIC 16F877 dan Basic Stamp 2.
Mikrokontroler memiliki beberapa Port yang dapat digunakan sebagai I/O (input/Output). Gambar Berikut ini merupakan susunan kaki standar 40 pin DIP mikrokontroler AVR ATmega 8535. Sedangkan ATmega128 memiliki kemampuan yang lebih besar, yaitu 128 KB ISP Flash Memory, 4K EEPROM, 4K internal SRAM dan memiliki 5 port I/O.


(a) (b)
Gambar Mikrokontroler ATmega8535 (a) dan ATMega128 (b)

Untuk membangun programmer melalui Parallel Port PC dapat dengan mudah dilakukan dengan merangkai beberapa komponen yang ada pada skema pada gambar 5.2, untuk softwarenya dapat digunakan berbagai software gratis ISP yang dapat Anda download di situs penulis.



Gambar Programmer ISP standar untuk 89S51


Arsitektur Mikrokontroler
Untuk mengoptimalkan performa dan paralelisme, mikrokontroler modern umumnya menggunakan arsitektur Harvard (bus untuk memori dan program dan data terpisah). Jika dilihat lebih detail pada bagian pemroses mikrokontroler ini, terdapat unit CPU utama untuk memastikan eksekusi program. CPU juga dapat mengakses memori, melakukan kalkulasi, pengontrolan dan dan penanganan interupsi, sehingga dihasilkan performa yang tinggi. Hal ini dikarenakan instruksi pada memori program dieksekusi dengan single level pipelining, dengan demikian, pada saat sebuah instruksi dieksekusi, instruksi berikutnya dapat diakses dari memori program. Konsep ini memungkinkan instruksi-instruksi dieksekusi pada setiap siklus clock.


Gambar Arsitektur Mikrokontroler AVR

Fast-access Register File berisi 32x8 bit register keperluan umum dengan waktu akses hanya membutuhkan sebuah siklus detak. Teknik ini membuat operasi ALU (Arithmetic Logic Unit) hanya membutuhkan 1 siklus. Lebih dahsyat lagi, 6 dari 32 register dapat digunakan sebagai 3 buah 16 bit indirect address register pointer untuk pengalamatan ruang data. 1 address pointer dapat digunakan sebagai address pointer untuk look up table pada memori flash program. Setiap alamat memori program berisi instruksi sebesar 16 atau 32 bit.
Pada mikrokontroler AVR ATmega 16, pin PD0 dan PD1 digunakan untuk komunikasi serial USART (Universal Synchronous and Asynchronous Serial Receiver and Transmitter) yang mendukung komunikasi full duplex ( komunikasi 2 arah). Gambar berikut ini menampilkan model hubungan antara mikrokontroler dengan PC melalui format serial.



Gambar Model pengkonversi level serial


Untuk mengirimkan data serial menggunakan CodeVision AVR, bisa menggunakan fungsi putchar, puts atau menggunakan I/O register UDR. Konfigurasi yang umum untuk komunikasi dengan baud rate 9600bps (bit per second) menggunakan kristal 4 MHz, seperti contoh berikut:
unsigned char judul[]={"ROBOTIKA"};
//Inisialisassi USART
//Format frame; 8 data, 1 stop bit, no parity
//USART Receiver & Transmitter ON
//USART mode: Asinkron
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0X00; // Baud rate 9600bps, pada kristal 4 MHz
UBRRL=0X19;
puts(judul); //tampilkan pesan dan ganti baris
UDR=’O’;
Jika menggunakan sistem polling, maka flag RXC(USART Receive Complete, UCSRA.7) akan diperiksa. Jika flag RXC =1 berarti ada data pada I/O register UDR yang diterima dan belum dibaca, sebaliknya maka ada data yang diterima sudah dibaca/belum ada data baru. Blok diagram USART dapat dilihat pada gambar di bawah ini:

Gambar Blok diagram USART
Pada gambar di atas, terdapat 3 buah register yaitu UCSRA, UCSRB dan UCSRC. Clock generation logic membangkitkan clock untuk transmitter dan receiver. USART ini mendukung 4 mode operasi clock yaitu Normal Asynchronous, double speed asynchronous, master synchronous dan slave synchronous. Bit UMSEL pada USART Control And Status Register C (UCSRC) memilih operasi asinkron atau sinkron tersebut.

MEMPROGRAM ROBOT LINE FOLLOWER

Ada banyak program yang dapat digunakan sebagai editor dan compiler program mikrokontroler. Yang paling mudah dikenal ialah CodeVision AVR yang berbasis bahasa C. Oleh karena itu pada buku ini menggunakan program tersebut selain Bascom AVR yang jauh lebih mudah. Berikut ini contoh pemrograman dasar mikrokontroler pada robot menggunakan kit mikrokontroler handal ST-8535 USB Version yang mendukung pemrograman melalui USB, silahkan pesan di sini.

Gambar di bawah menampilkan skematik sistem minimum mikrokontroler AVR standar.



Gambar Contoh skema rangkaian sistem minimum AVR (ST 8535 Delta)


Gambar Kit Mikrokontroler AVR (ST-8535 USB version)
Anda perlu memperhatikan kemampuan driver aktuator jika ingin robot Anda memiliki kemampuan gerak yang tinggi, misalnya apakah cukup driver dengan beban maksimal 1A, 2 A atau 5A bahkan lebih, gambar berikut menampilkan contoh driver motor DC L293D dan L298N yang umum digunakan untuk mobile robot.



(a) (b)
Gambar Driver Motor DC 1A(1) dan 2A (b)
Sebagai contoh pertama, cobalah Anda memprogram robot line follower, yaitu robot yang mengikuti garis menggunakan sensor garis berbasis Infra red. Sensor terpasang pada Port C.0 dan C.1, sedangkan driver motor DC dipasang pada Port B.0, B1. B.2 dan B.3. Blok diagram dari robot line follower sederhana dapat dilihat pada gambar di bawah:



Gambar Blok diagram robot line follower dari e-Technology Center

Karena menggunakan motor DC sebagai aktuator, maka diperlukan driver motor DC. Berikut ini data cara menggerakkan motor DC pada kit driver motor DC seperti SPC Driver Motor DC :

Tabel 1. Penggunaan SPC DC Motor
Pin Nama Seting Fungsi
S1 Run 1 Stop /Run Untuk menjalankan atau mematikan motor DC 1
Stop berlogika 1
Run berlogika 0
S2 Dir 1 CW/CCW Untuk arah putaran motor DC 1
CW berlogika 1
CCW berlogika 0
S3 Run 2 Sto/Run Untuk menjalankan atau mematikan motor DC 2
Stop berlogika 1
Run berlogika 0
S4 Dir 2 CW/CCW Untuk arah putaran motor DC 2
CW berlogika 1
CCW berlogika 0

Setelah rangkaian dirakit, isilah program mikrokontroler tersebut menggunakan Codevision AVR, dengan menggunakan kode berikut ini :

Linefollower.c:
// Program Robot Line Follower Berbasis
// AVR Atmega8535 dan sensor Infrared
#include
#include

void main(void)
{
DDRB=255;
PORTB=255;
DDRC=0;
PORTC=0;
while(1)
{
if (PINC.0==0 && PINC.1==0) //maju
{
PORTB.0=0;
PORTB.1=0;
PORTB.2=0;
PORTB.3=1;
delay_ms(20);
}
else if (PINC.0==1 && PINC.1==0)// belok kanan
{
PORTB.0=0;
PORTB.1=0;
PORTB.2=0;
PORTB.3=0;
delay_ms(100);
}
else if (PINC.0==0 && PINC.1==1) //belok kiri
{
PORTB.0=0;
PORTB.1=1;
PORTB.2=0;
PORTB.3=1;
delay_ms(100);
}

else //mundur
{
PORTB.0=0;
PORTB.1=1;
PORTB.2=0;
PORTB.3=0;
delay_ms(20);
}}}

Setelah program diisi ke mikrokontroler, cobalah dijalankan pada jalur berwarna hitam, robot harus mampu mengikuti track tersebut, pengaturan ketinggian sensor sangat mempengaruhi sensitifitas sensor garis tersebut. Untuk mengatur kecepatan putar motor dapat digunakan teknik PWM (Pulse Width Modulation). Hasil robot dapat dilihat pada gambar di bawah :



Gambar Robot line follower yang sukses dijalankan.

MEMPROGRAM ROBOT AVOIDER

Contoh berikutnya ialah penggunaan sensor jarak pada robot. Langkah-langkah perakitan robot avoider ini :
1. Siapkan perangkat yang dibutuhkan :
• System mikrokontroler AVR
• Driver DC Motor
• Roda trolley
• Sensor jarak Sharp GP2D12
Programmer yang digunakan dapat berbasis USB atau Port Paralel dan serial. Hubungkan keluaran sensor Sharp GP2D12 di port A.0. Berikut ini blok diagram sistem :


Gambar Blok diagram robot avoider

RobotAvoider.c:
// Percobaan baca data sensor jarak Sharp GP2D12
// Untuk Robot Avoider (Penghindar halangan)
// SPC DC Motor di Port B.0,B.1, B.2 dan B.3
// Sensor Jarak Sharp GP2D12 di Port A.0
// pasang LCD 2x16 di port C

#include
#include
#include
// include the LCD driver routines
#include

#define ADC_VREF_TYPE 0x60
flash unsigned char string1[]={"data adc: %d; "};
// Baca 8 bit terpenting
unsigned char read_adc(unsigned char adc_input) {
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Mulai konversi ADC
ADCSRA|=0x40;
// Tunggu konversi ADC selesai
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm


void main(void) {
// Inisialisasi Port B dan D sebagai output
PORTB=0xFF;
DDRB=0xFF;
PORTD=0xFF;
DDRD=0xFF;
// initialize the LCD for
// 2 lines & 16 columns
lcd_init(16);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
// ADC initialization
// ADC Clock frequency: 31,250 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: Free Running
// Menggunakan 8 bit data
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA7;
SFIOR&=0x1F;
while (1)
{
PORTD=read_adc(0); // Baca data sensor di
//PA.0
printf(string1,PORTD); //Tampilkan di
// Hyperterminal PC
if (PORTD<100)
{
PORTB=10; // Maju
lcd_gotoxy(0,1);
// tampilkan pesan
lcd_putsf("Maju");
delay_ms(100;
}
else
{
PORTB=0; // Mundur
delay_ms(100);
PORTB=1; //Belok kanan
lcd_gotoxy(0,1);
// tampilkan pesan
lcd_putsf("Belok Kanan");
delay(ms(50);

}
};
}

Sensor jarak mengeluarkan tegangan analog yang sesuai dengan jarak yang terukur, meskipun kekurangan sensor infrared ini ialah tidak linear, oleh mikrokontroler tegangan analog tersebut dirubah menjadi data digital untuk kemudian nilainya dibandingkan dengan program, apakah nanti harus maju, belok atau mundur. Lalu mikrokontroler memberikan sinyal tertentu ke driver motor DC agar menggerakkan motor DC sesuai dengan yang telah kita tentukan di program.

System Clock pada Mikrokontroler AVR

Perlu diketahui bahwa setiap mikrokontroler AVR memiliki fasilitas untuk memilih sumber clock atau detak dengan banyak alternatif pilihan. Berbeda dengan keluarga AT89, keluarga AVR memberikan opsi pilihan sumber clock untuk flkesibilitas penggunaan, bukan untuk menyulitkan penggunaan. Jika siapapun Anda yang saat ini sedang terlibat dengan aplikasi-aplikasi mikrokontroler AVR dan tidak pernah peduli dengan system clock, atau dengan kata lain tidak pernah otak-atik FUSE bit, dipastikan kristal yang Anda pasang berapapun aja nilainya tidak ada gunanya sama sekali! Loch kok bisa? Ya karena default dari pabriknya (http://www.atmel.com) adalah sesuai dengan paragraf yang mereka tulis di datasheet-nya:

The device is shipped with CKSEL = “0001” and SUT = “10”. The default clock source setting is therefore the 1 MHz Internal RC Oscillator with longest startup time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programmer.

Hanya 1 MHz internal saja clock-nya, kalau gak percaya silahkan cabut saja kristal Anda dan biarkan mikrokontroler AVR Anda bekerja dengan baik tanpa kristal (beberapa teman yang saya sarankan hal tersebut sempat kaget juga). Jadi sudah capek-capek ngitung reload, timer dan lain sebagainya ternyata hanya bekerja di 1 MHz saja secara internal. So, bagaimana caranya agar bisa menggunakan kristal eksternal atau internal yang lebih besar dari 1 MHz?

Bagan sumber clock yang ada pada keluarga AVR berikut ini:

Gambar 1. Sumber clock pada AVR

Terlihat bahwa sumber clock untuk AVR berasal dari:

  • External Crystal/Ceramic Resonator
  • External Low-frequency Crystal
  • External RC Oscillator
  • Calibrated Internal RC Oscillator, dan
  • External Clock

Untuk bisa mengatur sumber clock mana yang akan digunakan, Anda perlu tahu cara mengaturnya, untuk itu ada beberapa bit register yang perlu diperhatikan. Perhatikan Tabel 1, ditunjukkan berbagai macam opsi pilihan sumber clock berdasar bit CKSEL3..0.

Tabel 1. Device Clocking Options Select

Pemasangan kristal dilakukan pada pin XTAL1 dan XTAL2 (sebagaimana ditunjukkan pada Gambar 2). FUSE bit CKOPT digunakan untuk memilih satu diantara dua pilihan mode penguat osilator yang berbeda. Untuk lebih jelasnya silahkan perhatikan Tabel 2.

Gambar 2. Rangkaian Crystal Oscillator

Tabel 2. Crystal Oscillator Operating Modes

Sedangkan bit CKSEL0 dikombinasikan dengan bit-bit SUT1..0 digunakan untuk memilih waktu start-up sebagaimana ditunjukkan pada Tabel 3.

Tabel 3.Start-up Times for the Crystal Oscillator Clock Selection

Untuk pilihan Low-frequency Crystal Oscillator, dipilih dengan mengatur CKSEL3..0 = 1001 (lihat lagi Tabel 1). Kristal dipasang sesuai dengan gambar 2. Waktu start-up-nya ditunjukkan pada Tabel 4.

Tabel 4. Start-up Times for the Low-frequency Crystal Oscillator Clock Selection

Sedangkan pilihan External RC Oscillator menggunakan rangkaian yang ditunjukkan pada Gambar 3. Nilai frekuensi-nya ditentukan dengan persamaan f = 1/(3RC), dengan nilai C sekitar 22pF. Mode operasinya ditunjukkan pada Tabel 5, sedangkan waktu start-up-nya ditunjukkan pada Tabel 6.

Gambar 3.Konfigurasi RC eksternal

Tabel 5.External RC Oscillator Operating Modes

Tabel 6. Start-up Times for the External RC Oscillator Clock Selection

Sedangkan untuk pilihan Calibrated Internal RC Oscillator, pilihan mode operasi-nya ditunjukkan pada Tabel 7 dan waktu start up-nya ditunjukkan pada Tabel 8.

Tabel 7. Internal Calibrated RC Oscillator Operating Modes

Tabel 8. Start-up Times for the Internal Calibrated RC Oscillator Clock Selection

Jika memang dikehendaki, Anda bisa juga memasang sumber clock eksternal (External Clock) tanpa menggunakan kristal maupun rangkaian RC dilakukan dengan memberikan nilai CKSEL3..0=000, misalnya sumber clock yang berasal dari generator fungsi atau mikrokontroler lainnya. Rangkaiannya ditunjukkan pada Gambar 4. Sedangkan pilihan waktu start up-nya ditunjukkan pada Tabel 9.

Gambar 4. Konfigurasi penggerak clock eksternal

Tabel 9. Start-up Times for the External Clock Selection

berikut ini rangkumkan semua kemungkinan sumber clock yang bisa diberikan ke mikrokontroler AVR (dalam hal ini saya gunakan acuan ATMega32). Nilai pengaturan dinyatakan dalam High Byte (berkaitan dengan bit-bit OCDEN, JTAGEN, SPIEN, CKOPT, EESAVE, BOOTSZ1, BOOTSZ0 dan BOOTRST) dan Low Byte (berkaitan dengan bit-bit BODLEVEL, BODEN, SUT1, SUT0, CKSEL3, CKSEL2, CKSEL1 dan CKSEL0), yang dicetak tebal merupakan DEFAULT pabrik:

  • Ext. Clock; Start-up time: 6 CK + 0 ms (HIGH: 0xFF dan LOW: 0xCO);
  • Ext. Clock; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xDO);
  • Ext. Clock; Start-up time: 6 CK + 64 ms (HIGH: 0xFF dan LOW: 0xEO);
  • Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC1);
  • Int. RC Osc. 1 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD1);
  • Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE1);
  • Int. RC Osc. 2 MHz; Start-up time: 6 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC2);
  • Int. RC Osc. 2 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD2);
  • Int. RC Osc. 2 MHz; Start-up time: 6 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE2);
  • Int. RC Osc. 4 MHz; Start-up time: 6 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC3);
  • Int. RC Osc. 4 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD3);
  • Int. RC Osc. 4 MHz; Start-up time: 6 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE3);
  • Int. RC Osc. 8 MHz; Start-up time: 6 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC4);
  • Int. RC Osc. 8 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD4);
  • Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE4);
  • Ext. RC Osc. - 0.9 MHz; Start-up time: 18 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC5);
  • Ext. RC Osc. - 0.9 MHz; Start-up time: 18 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD5);
  • Ext. RC Osc. - 0.9 MHz; Start-up time: 18 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE5);
  • Ext. RC Osc. - 0.9 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xF5);
  • Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC6);
  • Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD6);
  • Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE6);
  • Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xF6);
  • Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC7);
  • Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD7);
  • Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE7);
  • Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xF7);
  • Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 0 ms (HIGH: 0xFF dan LOW: 0xC8);
  • Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 4 ms (HIGH: 0xFF dan LOW: 0xD8);
  • Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18 CK + 64 ms (HIGH: 0xFF dan LOW: 0xE8);
  • Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 6 CK + 4 ms (HIGH: 0xFF dan LOW: 0xF8);
  • Ext. Low-Freq. Crystal; Start-up time: 1K CK + 4 ms (HIGH: 0xFF dan LOW: 0xC9);
  • Ext. Low-Freq. Crystal; Start-up time: 1K CK + 64 ms (HIGH: 0xFF dan LOW: 0xD9);
  • Ext. Low-Freq. Crystal; Start-up time: 32K CK + 64 ms (HIGH: 0xFF dan LOW: 0xE9);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 258 CK + 4 ms (HIGH: 0xFF dan LOW: 0xCA);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 258 CK + 64 ms (HIGH: 0xFF dan LOW: 0xDA);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 0 ms (HIGH: 0xFF dan LOW: 0xEA);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 4 ms (HIGH: 0xFF dan LOW: 0xFA);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 1K CK + 64 ms (HIGH: 0xFF dan LOW: 0xCB);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 0 ms (HIGH: 0xFF dan LOW: 0xDB);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 4 ms (HIGH: 0xFF dan LOW: 0xEB);
  • Ext. Crystal/Resonator Low Freq.; Start-up time: 16K CK + 64 ms (HIGH: 0xFF dan LOW: 0xFB);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 258 CK + 4 ms (HIGH: 0xFF dan LOW: 0xCC);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 258 CK + 64 ms (HIGH: 0xFF dan LOW: 0xDC);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 1K CK + 0 ms (HIGH: 0xFF dan LOW: 0xEC);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 1K CK + 4 ms (HIGH: 0xFF dan LOW: 0xFC);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 1K CK + 64 ms (HIGH: 0xFF dan LOW: 0xCD);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 0 ms (HIGH: 0xFF dan LOW: 0xDD);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 4 ms (HIGH: 0xFF dan LOW: 0xED);
  • Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 64 ms (HIGH: 0xFF dan LOW: 0xFD);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 258 CK + 4 ms (HIGH: 0xFF dan LOW: 0xCE);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 258 CK + 64 ms (HIGH: 0xFF dan LOW: 0xDE);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 1K CK + 0 ms (HIGH: 0xFF dan LOW: 0xEE);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 1K CK + 4 ms (HIGH: 0xFF dan LOW: 0xFE);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 1K CK + 64 ms (HIGH: 0xFF dan LOW: 0xCF);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 0 ms (HIGH: 0xFF dan LOW: 0xDF);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 4 ms (HIGH: 0xFF dan LOW: 0xEF);
  • Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms (HIGH: 0xFF dan LOW: 0xFF);

Pilihan-pilihan tersebut secara lengkap saya ambil dari fasilitas downloader AVR ISP MkII dari AVR Studio 4.0, sebagaimana ditunjukkan pada Gambar 5, perhatikan tanda panahnya.

Gambar 5. Jendela pengaturan FUSE pada fasilitas AVR ISP MkII dari AVR Studio 4.0

Semoga bermanfaat dan selamat mencoba, hati-hati dengan pilihan External, karena setelah Anda mengatur pilihan ke External, maka Anda harus menyediakan sumber clock eksternal sesuai dengan pengaturan yang dilakukan, jika tidak, maka AVR Anda tidak dapat di-program lagi (masih berfungsi tetapi seperti mengunci diri, padahal tidak diotak-atik Lock bit-nya).

Prinsip kerja Photocell

Photocell menggunakan prinsip kerja resistor dengan sensitivitas cahaya (LDR=Light Dependent Resistor). Apabila kondisi gelap maka nilai resistansi akan menjadi rendah sehingga arus mengalir dan lampu akan menyala. Sebaliknya pada kondisi terang, nilai resistansi menjadi tinggi sehingga arus tidak dapat mengalir dan lamp akan mati.
Rangkaian photocell banyak digunakan pada instalasi penerangan lampu jalan, mercusuar, atau lampu-lampu yang membutuhkan otomatisasi.

BENTUK FISIK PHOTOCELL DI PASARAN


GAMBAR RANGKAIAN

Inductance meter





Construction...

The circuits may be constructed on a small perf board (Radio Shack dual mini-board (#276-168), or if you prefer, on a PCB (Printed Circuit Board). Layout is non-critical - almost any construction technique will suffice. Wire-wrapping or point-to-point soldering may be used.

Desciption...

The schematic shown below converts an unknown inductance into a voltage that can be displayed on a DVM or VOM. Values between 3uH and 500uH are measured on the L (low) range and from 100uH to 7mH on the H (high) range. NAND gate ICA is a two frequency RC square-wave oscillator. The output frequency (pin 3) is approximately 60 KHz in the L (low) range and 6 KHz in the H (high) range. The square-wave output is buffered by ICB and applied to a differentiator formed by R3 and the unknown inductor; LX. The stream of spikes produced at pin 9 decay at a rate proportional to the time constant of R3-LX. Because R3 is a constant, the decay time is directly proportional to the value of LX. ICC squares up the positive going spikes, producing a stream of negative going pulses, at pin 8 whose width is proportional to the value of LX.

They are inverted by ICD (pin 11) and integrated by R4-C2 to produce a steady dc voltage at the + output terminal. The resulting dc voltage is proportional to LX and the repetition rate of the oscillator. R6 and R7 are used to calibrate the unit by setting a repetition rate that produces a dc voltage corresponding to the unknown inductance. D1 provides a 0.7 volt constant voltage source that is scaled by R1 to produce a small offset reference voltage for zeroing the meter on the L (low) inductance range.

When SW1 is L (low), mV corresponds to uH, and when H (high), mV corresponds to mH. A sensitive VOM may be substituted for the DVM with a sacrifice in resolution.

Test and Calibration...

Short the LX terminals with a piece of wire and connect a DVM set to the 200-mV range to the output. Adjust R1 for a zero reading. Remove the short and substitute a known inductor of approximately 400uH. Set SW1 to the L (low) position and adjust R7 for a reading equal to the unkown inductance. Switch SW1 to the H (high) position and connect a known inductor of about 5mH. Adjust R6 for the corresponding value. For instance, if the actual value of the calibration inductor is 4.76mH, adjust R7 so the DVM reads 476mV.

Inductance Meter Schematic