Pages

"Engineering Visual Basic Code" Most Wanted

Kamis, 20 Agustus 2009
"Engineering Visual Basic Code" Most Wanted

Bagi yang masih suka mengutak atik Program Visual Basic (walaupun sekarang sudah tergolong pemrograman Jadoel – tapi masih banyak juga yang masih menggunakannya) berikut ada beberapa contoh source code yang cocok digunakan didunia engineering terutama elektronika. Bagi yang suka menginterfacekan computer dengan perlatan lain diluar computer juga bisa menggunakan source code berikut. Untuk teknik interfacenya baik menggunakan parallel port, serial port, atupun USB bisa membaca dibagian lain di website ini.

Berikut ada beberapa source code yang bisa anda download:

Analog Meter

Anda dapat membuat analog meter seperti halnya ordometer pada mobil dengan menggunakan picture editor software. Anda bisa menggunakan contoh subroutine yang sudah ada untuk mengolah bentik gambar dan menskala ukuran gambar sesuai yang anda inginkan. Selain itu anda juga bisa mengubah lebar, warna dan panjang meter.

Anynumbase

Pada contoh source code yang berikut ini anda dapat mempelajari teknik untuk mengubah bilangan dari biner, hexa dan juga desimal

Calculator

Pada contoh source code untuk calculator ini anda bisa membuat program mirip seperti calculator di windows dengan menggunakan Visual Basic. Selain penjumlahan, pengurangan perkalian dan pembagian anda juga dapat melihat teknik perhitungan Sinus, Cosinus, Tangen dan juga perhitungan yang lainnya.

Digitbox

Pada template ini disediakan contoh untuk menampilkan bilangan digital (Seven Segment pada GUI Visual Basic. Anda bisa menggunakan contoh source codenya sesuai kebutuhan yang anda perlukan.

Oscilloscope

Sebuah tampilan mirip dengan oscilloscope dilengkapi dengan data logger yang bisa menyimpan sampai dengan 5 jam. Anda bisa mengedit source code yang diberikan untuk memberikan stimulus sesuai yang anda inginkan. Stimulus bisa berasal dari Serila port, parallel port atupun USB tergantung bagaimana anda bisa mengoprek source code yang sudah ada.

PID Simulator

Pada PID simulator ini menjelaskan secara gamblang bagaimana sebenarnya PID controller itu bekerja, anda bisa coba mengubah parameter parameternya, misalnya Konstanta Proportionalnya, Kostanta Integralnya, dan juga Konstanta Derivativnya. Kemudian amati respon output yang diperlihatkan.

Resistor

Bagi penggemar elektronika pasti tidak asing lagi dengan komponen Resistor, cara menhitung nilai resistansi sesuai dengan warna gelangnya bisa dihitung. Pada contoh source code berikut ini anda bisa menghitung warna gelang resistor dengan menggunakan program Visual Basic.

TCP IP

Pada contoh source code TCP-IP ini anda bisa melihat bagaimana cara membangun komunikasi dengan protocol TCP-IP dengan menggunakan Visual Basic.

Download Section

Read more ...

Coding Coding Unik dan Menarik Pada VB 6.0

Kamis, 20 Agustus 2009
Coding Coding Unik dan Menarik Pada VB 6.0
Written by Mujahidin
Saturday, 21 February 2009

 Setelah sekian lama tidak membuka buka dokumen lama, akhirnya saya temukan lagi beberapa file yang mungkin masih bisa dimanfaatkan untuk dipakai. Berikut ada beberapa coding - coding unik yang terdapat pada VB 6.0 sehingga akan membuat program VB yang anda buat mempunyai style dan gaya yang maksimal. Jika anda lebih kreatif lagi anda bisa meng-edit lagi dari program yang sudah ada sesuai keinginan anda. Semua source code bisa anda download dalam bentuk file RAR.

Beberapa list coding unik yang bisa anda download adalah sebagai berikut :

  1. Menampilkan Seluruh Font System
  2. Form Transparan
  3. Explode Form
  4. Animasi Form Keluar
  5. Alphablend Form
  6. Validasi Tombol Keyboard
  7. Tombol ENTER Sebagai Tombol TAB
  8. Pointer Mouse Dengan Gambar
  9. Pointer Auto Fokus Pada Objek
  10. Pointer Animasi
  11. Nilai Ascii Tombol Keyboard
  12. Menyembunyikan Pointer Mouse
  13. Membatasi Ruang Gerak Mouser
  14. Animasi Tooltip
  15. Chat Antar Lan
  16. Efek Form Gradasi
Read more ...

Memahami Sistem Komuniksi Data Serial Menggunakan Protocol I2C

Kamis, 20 Agustus 2009
Memahami Sistem Komuniksi Data Serial Menggunakan Protocol I2C
Written by Mujahidin
Thursday, 07 May 2009

 Mengatasi terbatasnya jumlah kaki IC prosesor, berapa perusahaan IC mengembangkan teknik transfer data secara seri untuk menghubungkan IC prosesor ke IC pendukungnya, transfer data secara seri antar IC ini tidak ada hubungannya dengan transfer data seri yang biasa dipakai untuk modem.

Sebuah IC memori dengan kapasitas 2 KiloByte yang dibentuk dengan teknik transfer data secara pararel paling tidak mempunyai 24 kaki, yaitu :

  • 8 kaki untuk jalur data,
  • 11 kaki untuk jalur penomoran memori (jalur alamat),
  • 3 kaki untuk jalur kontrol,
  • 2 kaki untuk catu daya.

Memori yang sama kalau dibentuk dengan teknik transfer data secara seri mempunyai 8 kaki, dan hanya 2 atau 3 kaki yang perlu dihubungkan ke prosesor. Dengan demikian IC dengan teknik transfer data secara seri banyak dipakai dalam rancang bangun peralatan berbasis prosesor.

Teknik transfer data secara seri antar IC dikembangkan oleh 3 perusahaan IC, yang pertama adalah teknik I2C (Inter Integrated Circuit) yang dikenalkan oleh Philips, teknik SPI (Serial Peripheral Interface) dari Motorola dan teknik MicroWire ciptaan National Semiconductor.

Teknik I2C 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.

Konsep I2C

I2C termasuk jenis komunikasi serial dengan tipe protokol Synchronous, dimana setiap bit data masuk atau data keluar seirama atau sinkron dengan perubahan clock.

Hal ini sangat beda dengan RS-232 dan tipe potrocol asynchronous yang lain yang tidak mempunyai clock, akan tetapi pada tipe asynchronous data masuk dan data keluar berdasarkan pada kecepatan tertentu yang konstan.

I2C versi 1.0 dikenalkan oleh Philips pada tahun 1992, direvisi menjadi versi 2.0 pada tahun 1998, setahun kemudian direvisi lagi menjadi versi 2.1

Komunikasi data secara I2C dilakukan melalui dua saluran, masing-masing adalah

  • saluran data secara seri (SDA) = Serial Data
  • saluran clock (SCL) = Serial Clock

kedua saluran ini dikenal sebagai I2C Bus yang dipakai menghubungkan banyak IC I2C untuk berbagai macam keperluan.

IC-IC I2C itu dibedakan menjadi induk (master) dan anak buah (slave), yang dimaksud dengan induk adalah peralatan I2C yang memulai transfer data dan yang membangkitkan clock (SCK).

Yang bertindak sebagai master adalah Mikrokontroler / Komputer yang bertugas mengendalikan I2C Bus.

Contoh koneksi I2C Bus pada Gambar dipakai untuk menghubungkan 2 IC AT24C02 dan 1 IC PCF8574, I2C bus ini dikendalikan oleh microcontroller yang berfungsi sebagai master.

Agar data dari master bisa didistribusikan ke semua slave dengan tepat, menurut konsep I2C semua jenis IC I2C diproduksi dengan nomor group tersendiri yang diatur oleh Philips, sehingga pabrik IC lain yang memproduksi IC I2C harus mendaftarkan produknya ke Philips untuk mendapatkan nomor group.

Dalam contoh di Gambar terlihat nomor group IC Serial EEPROM adalah 1010 biner, nomor group dari IC Remote 8 bit I/O Expander adalah 0111 biner.

Di samping itu saat ini di pasar beredar cukup banyak IC I2C, misalnya IC untuk MPEG2 encoder (SAA6750, nomor group 0100 biner), IC untuk radio mobil AM (TEA6821/2 nomor group 1100 biner) sampai IC untuk Universal Serial Bus (PDIUSB11 nomor group 0011 biner).

Karakteristik Sinyal I2C

Mengingat hanya 2 saluran saja yang dipakai I2C Bus, pada hal I2C Bus diharapkan bisa dipakai membentuk jaringan kecil dengan banyak peralatan I2C.

Maka dalam konsep I2C ditentukan sinyal dan tatacara dasar untuk memperlancar komunikasi antar peralatan I2C tersebut.

Signal Level I2C


Jalur I2C hanya mempunyai 2 keadaan (Secara Electrical) yaitu Float High dan Drive Low. I2C bekerja dengan Resistor Pull-up. Jika tidak ada device yg terkoneksi maka jalur ini menjadi “Float High”, oleh karena itu diperlukan resistor pull-up pada I2C.

I2C Pull-up Resistor Setting Suggestion


Anda bisa memilih bebas nilai resistor pull-up yang akan dipasang. Namun direkomendasikan seperti tabel gambar diatas.

Sinyal dasar I2C meliputi sinyal

  • START
  • STOP
  • RESTART
  • DATA TRANSFER
  • DATA STATES
  • ACK Condition
  • NACK Condition

A. START CONDITION

  • Initializes I2C Bus
  • SDA is pulled low while SCL is High


Elemen yang pertama adalah “START”. Kondisi START mengindikasikan bahwa devais akan memulai transfer data pada bus I2C. Pertama SDA menjadi LOW diikuti kemudian SCL.

B. STOP CONDITION

  • Releases I2C Bus
  • SDA is released while SCL is high


Elemen berikutnya yaitu “STOP” condition. STOP mengindikasikan bahwa devais telah selesai melakukan transfer data dan akan release dari bus.

Signal yang dibentuk dari STOP ini pertama adalah jalur SCL release diikuti dengan SDA yang juga release. Perlu diingat bahwa ketika jalur release berarti driver dalam keadaan OFF sehingga pada jalur tinggal resistor pull-up, dan akhirnya masuk kedalam keadaan “Float High”.

Setelah STOP, jalur I2C semua menjadi HIGH dan disebut dg kondisi idle. Pada saat idle ini kondisi START dapat dimulai lagi untuk memulai mengirim data.

C. RESTART CONDITION

  • Reinitializes I2C Bus
  • Used when START does NOT follow STOP



Kondisi RESTART mengindikasikan bahwa devais ingin mengirimkan data lebih banyak lagi.
Biasanya kondisi RESTART dilakukan ketika START telah terkirim tetapi kondisi STOP tidak kunjung terjadi.

Sebagai contoh misalnya Jika anda berkomunikasi dengan suatu devais misalnya serial EEPROM, anda mungkin tidak menginginkan terjadi interupsi ketika mengirimkan sejumlah data ke serial EEPROM tsb, RESTART bisa membantu anda untuk menghandle permasalahan ini.

Kondisi RESTART bisa di simpulkan bahwa mula mula jalur I2C pada kondisi STOP kemudian diikuti kondisi START.

  • STOP = SDA goes high while SCL is high
  • START = SDA pulled low while SCL is high


D. DATA TRANSFER

  • 8 bits of data is sent on the bus
  • Data valid when SCL is high


Blok data disini merepresentasikan proses transfer informasi data sebanyak 8 bit. Data dikirim melalui jalur SDA, sedangkan SCL tetap menghasilkan clock sebagai pendorong pergerakan setiap bit data.

Data pada jalur SDA valid dan boleh dibaca ketika jalur clock SCL high. Karena pada saat SCL tidak high (LOW) data bisa berubah sesuai dengan nilainya.

Data byte ini digunakan untuk mentransfer semua jenis informasi data, bisa jadi data tersebut sebagai control code, addres code atau data code itu sendiri tergantung dari protocol yang anda bentuk

E. DATA STATES

Sebuah blok data disini bisa anda lihat, bahwa sebuah data valid boleh dibaca hanya ketika SCL transisi dari LOW ke HIGH, Dan masih valid sampai SCL high.

F. ACK CONDITION

  • Acknowledges a data transfer
  • ACK is when the recipient drives SDA low

Sebuah devais dapat mengirimkan sinyal “ACK” (Sebagai tanda bahwa data telah diterima dengan sempurna) dengan cara men-drive jalur SDA menjadi Low pada clock yang ke-9 dari SCL.

F. NACK CONDITION

  • Negatively Acknowledges a data transfer
  • NACK is The recipients does Not drive SDA Low

Kebalikan dari ACK, NACK merupakan tanda bahwa data tidak bisa diterima oleh devais, sehingga tidak ada respon dari devais yang membuat SDA dibiarkan dalam kondisi “Float High”.

Metode Penomoran I2C

Karena IC I2C hanya dikendalikan lewat kaki SDA dan SCK saja, tidak ada sarana lainnya dari master yang bisa dipakai untuk mengendalikan I2C, maka alamat yang dipakai untuk memilih isi IC I2C dikirimkan secara serial pula, persis seperti halnya pengiriman data.

Pengalamat dasar IC I2C dilakukan dengan Nomor Group dan Nomor Chip.

  • Nomor Group adalah nomor yang diberikan oleh Philips (sebagai pencipta I2C) pada kelompok-kelompok IC I2C. Sebagai contoh nomor group untuk Serial EEPROM adalah 1010 (biner).
  • Nomor Chip adalah nomor yang diberikan pada masing-masing chip lewat kaki A0,A1 dan A2 dari masing-masing IC. Dalam IC I2C tertentu, A0..A2 tidak dihubungkan ke kaki IC, tapi dipakai didalam IC untuk menomori register/memori di dalam IC bersangkutan.

Setelah master I2C mengirimkan sinyal START, byte pertama yang dikirim berisi nomor Group; nomor Chip dan 1 bit lagi sebagai Penentu Arah Data, seperti yang digambarkan di Gambar.

Mekanisme kerja byte pertama tersebut bisa dijelaskan sebagai berikut:

  1. IC-IC pada I2C Bus yang mempunyai Nomor Group sama dengan Nomor Group dalam byte partama tersebut akan terpanggil
  2. Berikutnya IC-IC dengan Nomor Group sama tersebut akan membandingkan Nomor Chip dalam byte pertama, nomor chip tidak mungkin sama.
  3. Bit Penentu Arah Data dipakai untuk memberi tahu IC I2C arah data yang dikehendaki, apakah master akan mengirim data atau master menghendaki kiriman data.
IC Serial EEPROM Buatan ATMEL

Atmel memproduksi Serial EEPROM jenis I2C dengan kode AT24Cxx, AT merupakan kode pabrik Atmel, 24 menandakan bahwa IC tersebut adalah Serial EEPROM, sedangkan xx merupakan angka yang mengindikasikan kapasitas Serial EEPROM itu dalam satuan KiloBit, sebagai contoh AT24C08 merupakan IC SEEPROM I2C berkapasitas 8 KiloBit (1 KiloByte).


Kaki SDA (kaki nomor 5) dan kaki SCK (kaki nomor 6) merupakan kaki baku IC jenis I2C, kedua kaki inilah yang mebentuk I2C Bus.

Kaki nomor 7 (WP – Write Protect) merupakan kaki yang dipakai untuk melindungi isi yang disimpan di dalam IC Serial EEPROM, jika kaki ini diberi tegangan ‘1’ maka IC dalam keadaan ter-proteksi, isinya tidak dapat diganti. Agar bisa menuliskan informasi ke dalam IC ini, kaki ini harus diberi tegangan ‘0’.

Kaki nomor 1 sampai dengan nomor 3 (A0, A1 dan A2) merupakan fasilitas untuk penomoran chip, hal ini diperlukan kalau dalam satu rangkaian dipakai lebih dari satu IC SEEPROM sejenis. Misalnya dalam satu rangkaian dipakai 3 chip AT24C02, SDA dan SCK ketiga IC ini masing-masing dihubungkan jadi satu membentuk I2C Bus, agar ketiga IC ini bisa dipakai secara terpisah kaki A0..A2 (kaki nomor 1 sampai nomor 3) masing-masing AT24C02 diberi level tegangan seperti terlihat pada Tabel dibawah.


Proses Menulis Pada Serial EEPROM

Secara umum proses pengisian / penulisan data digambarkan pada ilustrasi dibawah ini :

Control in = 1010 0000

Secara lebih detail gambar dibawah memperlihatkan komunikasi data antara Master dan AT24Cxx dalam proses pengisian / penulisan data ke AT24Cxx. Gambar dibawah menggambarkan proses pengisian data ke AT24CXX dengan metode pengalamatan 8 bit.

Dalam satu proses pengisian data SEEPROM sinyal START dan sinyal STOP masing-masing cukup dikirim satu kali saja, yakni sinyal START dipakai untuk mengawali proses dan sinyal STOP dipakai untuk mengakhiri proses. Kedua sinyal itu bukanlah awalan dan akhiran dari pengiriman data 1 byte!

Setelah mengirimkan alamat SEEPROM yang akan diisi, Master mengirim data yang diisikan ke AT24Cxx, setiap kali selesai menyimpan data AT24Cxx dengan sendirinya menaikkan alamat SEEPROM yang disimpannya, dengan demikian kiriman data selanjutnya akan disimpan ke memori berikutnya, proses pengisian ini akan berhenti setelah master menutup komunikasi ini dengan sinyal STOP.

Gambar dibawah menggambarkan proses pengisian data ke AT24CXX dengan metode pengalamatan 16 bit.

Proses Membaca Pada Serial EEPROM

Proses pembacaan data dari AT24Cxx dilakukan seperti Gambar. Mula-mula Master mengirimkan alamat EEPROM yang akan dibaca isinya, proses ini mirip dengan bagian awal pengisian EEPROM yang dibahas di atas, setelah itu Master mengirim sinyal START sekali lagi, disusul dengan perintah untuk membaca isi EEPROM dan selanjutnya disusul dengan pembacaan isi EEPROM yang sesungguhnya.

Selesai membaca isi SEEPROM Master menutup komunikasi dengan mengirimkan sinyal STOP.

Read more ...

belajar menggunakan LCD

Kamis, 06 Agustus 2009

Belajar menggunakan LCD dengan ATMega8535 tidaklah sulit, dengan menggunakan bahasa Bascom AVR hal ini menjadi mudah dilakukan terutama bagi pemula. Berikut adalah rangkaian konfigurasi pin pada mikro ATMega8535 dan contoh program yang dapat dicoba. Selamat Mencoba.

Gambar Rangkaian.

lcd

Contoh Program dengan Bascom AVR.

$regfile = "m8535def.dat"
$crystal = 4000000

Config Portd = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portd.4 , E = Portd.5 , Db4 = Portd.0
Config Lcdpin = Pin , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3

Do
Locate 1 , 1
Lcd "Selamat Datang"
Locate 2 , 1
Lcd "Mahasiswa Baru"

Loop
End

Read more ...

SECUROTRACK™ GROUND VEHICLE

Kamis, 06 Agustus 2009

SECUROTRACK™ GROUND VEHICLE

Description

The Securotrack™ is an electrically powered high-speed propulsion unit intended mainly for remotely controlled vehicles and robots.

The three most distinctive features are its maximum speed of 10Kph (6Mph) afforded by the flexible Kevlar reinforced construction of the rubber tracks, its ramped front enabling easy stair climbing and descent and its self-containment that includes batteries and proportional speed controllers with integral regenerative braking.

The Securotrack™ features a fixed radius configuration that ensures the tracks cannot come off nor can the drive lugs jump whatever the operating conditions. In addition, the contact section of the tracks feature intermediate rollers pivoted in pairs to spread the load and are height adjustable to optimise the Turnability Index on all surface shapes.

Its width of 685mm makes it narrow enough to fit through doorways and its length of 990mm allows it to carry out a zero-turning circle U-Turn in passageways of 1219mm (~4’) width or greater.

It can be provided in a variety of body/chassis materials, including T6 Aluminium, if weight is and issue, Steel if strength and fire resistance are priorities, or Fibreglass with steel frame.

The Securotrack™ is sealed to allow it to run through shallow water and if fitted with a sealed top, would have a design IP rating of 66. This would allow it to be hosed down with a pressure washer of used on a ship’s deck without the electrical system suffering from water damage.

Suggested Applications

The Securotrack™ can be used as a platform for:

  • Security Robotics
  • Remote Firefighting (e.g. miniature version of the Firemote™)
  • Telepresence Applications
  • EOD (Bomb Disposal) - The Securotrack™ can move slowly and accurately
  • CBRN (Chemical Biological Radiological and Nuclear) monitoring, washdown, etc.
  • Defence - perimeter patrol
  • Tracked Wheelchair - For adventure wheelchairing
  • Inhospitable location remote vehicle usage - Antarctic, Arctic, Desert,
  • Danger area usage - mines, demolition sites, disaster areas, poisonous gas leakage areas, active volcanic areas
  • Film Industry - Remote camera mount or prop moving
  • Factory Workpiece movement
  • Emergency Service Support
  • Agricultural

HOME CONTACT US VIDEOS


Securotrack with steel body for miniature version of Firemote™

PROTOTYPE DURING TESTING
CLICK ON PICTURES BELOW FOR FULL SIZE VERSIONS

NEGOTIATING STAIRS

FITTING THROUGH A STANDARD DOORWAY

AVAILABILITY: Build-to-order basis with 10 week

lead timeDATA SHEET
VIDEO

Read more ...

Ping))) Parallax Ultrasonic Range Finder "Plus Source Code"

Kamis, 06 Agustus 2009
Ping))) Parallax Ultrasonic Range Finder Print E-mail
Written by Administrator
Saturday, 28 February 2009 11:37

Ping))) Parallax Ultrasonic Range Finder "Plus Source Code"

  1. Tentang Ping))) Parallax

Ultrasonik, sebutan untuk jenis suara diatas batas suara yang bisa didengar manusia. Seperti diketahui, telinga manusia hanya bisa mendengar suara dengan frekuensi 20 Hz sampai 20KHz. Lebih dari itu hanya beberapa jenis binatang yang mampu mendengarnya, seperti kelelawar dan lumba-lumba. Lumba-lumba bahkan memanfaatkan ultrasonik untuk mengindera benda-benda di laut. Prinsip ini kemudian ditiru oleh sistem pengindera kapal selam. Dengan cara mengirimkan sebuah suara dan mengitung lamanya pantulan suara tersebut maka dapat diketahui jarak kapal selam dengan benda tersebut. Mula-mula suara dibunyikan, kemudian dihitung lama waktu sampai terdengar suara pantulan. Jarak dapat dihitung dengan mengalikan kecepatan suara dengan waktu pantulan. Kemudian hasilnya dibagi 2. Misalnya lama waktu pantulan adalah 1 detik, maka jaraknya adalah (344,424m/detik x 1 detik)/2 = 172m.

Ping))) Ultrasonic Range Finder, adalah modul pengukur jarak dengan ultrasonic buatan Parallax Inc. yang didesain khusus untuk teknologi robotika. Dengan ukurannya yang cukup kecil (2,1cm x 4,5cm), sensor seharga 300 ribu rupiah ini dapat mengukur jarak antara 3 cm sampai 300 cm. Keluaran dari Ping))) berupa pulsa yang lebarnya merepresentasikan jarak. Lebar pulsanya bervariasi dari 115 uS sampai 18,5 mS.

Gambar 1. Ping))) Parallax Ultrasonic Range Finder

Pada dasanya, Ping))) terdiri dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan sebuah mikropon ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz menjadi suara sementara mikropon ultrasonik berfungsi untuk mendeteksi pantulan suaranya. Pada modul Ping))) terdapat 3 pin yang digunakan untuk jalur power supply (+5V), ground dan signal. Pin signal dapat langsung dihubungkan dengan mikrokontroler tanpa tambahan komponen apapun. Ping))) mendeteksi objek dengan cara mengirimkan suara ultrasonik dan kemudian “mendengarkan” pantulan suara tersebut. Ping))) hanya akan mengirimkan suara ultrasonik ketika ada pulsa trigger dari mikrokontroler (Pulsa high selama 5uS). Suara ultrasonik dengan frekuensi sebesar 40KHz akan dipancarkan selama 200uS. Suara ini akan merambat di udara dengan kecepatan 344.424m/detik (atau 1cm setiap 29.034uS), mengenai objek untuk kemudian terpantul kembali ke Ping))). Selama menunggu pantulan, Ping))) akan menghasilkan sebuah pulsa. Pulsa ini akan berhenti (low) ketika suara pantulan terdeteksi oleh Ping))). Oleh karena itulah lebar pulsa tersebut dapat merepresentasikan jarak antara Ping))) dengan objek. Selanjutnya mikrokontroler cukup mengukur lebar pulsa tersebut dan mengkonversinya dalam bentuk jarak dengan perhitungan sebagai berikut

Jarak = (Lebar Pulsa/29.034uS) /2 (dalam cm)

atau

Jarak = (Lebar Pulsa x 0.034442) /2 (dalam cm)

Karena 1/29.034 = 0.34442

Gambar 2. Pulsa Ping))) Parallax Ultrasonic Range Finder

Satu hal yang perlu diperhatikan adalah bahwa Ping))) tidak dapat mengukur objek yang permukaannya dapat menyerap suara, seperti busa atau sound damper lainnya. Pengukuran jarak juga akan kacau jika permukaan objek bergerigi dengan sudut tajam (meruncing).

  1. Contoh Aplikasi Pengukur Jarak

Pada aplikasi ini mikrokontroler akan membaca lebar pulsa dari Ping))), dihitung kemudian

ditampilkan ke LCD. Pastikan !!! : pin Signal (SIG) terhubung ke PINB.0 Tanpa resistor pullup.

Gambar 3. Rangkaian Aplikasi Ping))) Parallax

Berikut adalah langkah percobaannya :

  • Buka Aplikasi CodeVisionAVR C Compiler
  • Klik File -> New muncul seperti gambar di bawah ini

  • Pilih project OK

  • Klik Yes
  • Lakukan Settingan Seperti pada gambar, “Gunakan Generate,Save and Exit”

NB: Untuk Chip dan Clock Sesuaikan Dengan Yang Anda Gunakan

Simpan sesuai nama yang anda inginkan

Example : Ping.c (untuk file source C)

Ping.prj (untuk file project)

Ping.cwp (untuk file Code Wizard Project)

  • Klik Project >> Configure >> C Compiler, pada pilihan (s)printf Feature pilih float, width, precision. Seperti pada gambar dibawah ini.

  • Kemudian Tuliskan Tambahan Program Seperti Di bawah ini:

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

This program was produced by the

CodeWizardAVR V1.24.4 Standard

Automatic Program Generator

© Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

e-mail: office@hpinfotech.comThis e-mail address is being protected from spambots. You need JavaScript enabled to view it

Project : Ping))) Parallax Ultrasonic Range Finder

Version : v1.0.0

Date : 28/02/2009

Author : Didox MPX 2

Company : Mechanical MPX 2

Comments : Tutor AVR

Chip type : ATmega8535

Program type : Application

Clock frequency : 4,000000 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 128

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

#include
#include delay.h>
#include

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include

// Declare your global variables here

#define SigOut PORTB.0

#define SigIn PINB.0

#define DirSig DDRB.0

unsigned int counter;

float distance;

unsigned char Baris1[16];

unsigned char Baris2[16];

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

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

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// LCD module initialization
lcd_init(16);

While (1) {
// Place your code here
counter=0;
//Initial value
DirSig=1;
//Set as output
SigOut=1;
delay_us(5);
SigOut=0;
DirSig=0;
//Set as input
SigOut=1;
//Pullup activated
while (SigIn==0)
{}
while (SigIn==1)
{counter++;}
// V=344.424m/s
distance=(counter*0.034442);
//Untuk clock 4,0000 Mhz
//distance=(counter*0.034442)/2; //Untuk clock 11,0592 Mhz
sprintf(Baris1,
"Counter=%5d uS",counter); //%5d ->area 5 kolom LCD
sprintf(Baris2,"Jarak: %3.2f cm",distance); //%3,2f->2angk_decimal
lcd_gotoxy(0,0);lcd_puts(Baris1);
lcd_gotoxy(0,1);lcd_puts(Baris2);

delay_ms(200);
lcd_clear();
};

}

  • Foto Hasil Pengujian dengan menampilkan ketelitian 2 desimal

Foto 1

Foto 2

Foto 3

Seperti tampak pada gambar, pengukuran jarak pada LCD menampilkan angka sesuai dengan pergeseran objek pada penggaris, dan mempunyai ketelitian tinggi dan bisa membaca data dibawah millimeter

Foto 1 menampilkan 10,50 cm = 105 mm

Foto 2 menampilkan 7,30 cm = 73 mm

Foto 3 menampilkan 7,27 cm = 72,7 mm (data antara 1 mm dapat terbaca)

Download File Lengkap Format PDF
Download Source Code Format ZIP

Read more ...