Archive for Oktober, 2010

Menuliskan dan Mendesain karakter LCD Text pada BASCOM AVR

Untuk sekian kalinya kita telah dimudahkan oleh pemrograman mikrokontroler menggunakan bahasa basic pada BASCOM AVR…untuk menuliskan karakter LCD Text dan mendesain karakter pada LCD Text sangatlah mudah… untuk mendesain karakter LCD Text telah ada tools pendukungnya yang terdapat pada BASCOM AVR yaitu pada bagian tool bar bascom avr ada menu LCD designer seperti gambar dibawah ini…

Nach dari tools ini kita dapat merancang berbagai macam design lcd yang kita inginkan….sebagai contoh kita akan mendesain suatu tanda panah dengan arah pojok kanan atas…nih contoh desainnya…

Setelah selesai didesain klik tombol ok,maka akan tertampil pada listing program sebagai berikut:

Perintah Deflcdchar tersebut alamatnya masih berupa tanda tanya(?)… nach itu kita ubah dengan alamat data… sebagai contoh Deflcdchar 0, 32, 32,15, 3, 5, 9, 16, 32

Nich contoh aplikasinya pada Program proteus…

Nich hasil simulasi dari proteus…

Nich dia prognya pake BASCOM AVR….gampangkan…

Selain mendesain karakter LCD … kita dapat juga menggunakan fasilitas karakter yang telah dimikiliki BASCOM AVR…nach karakter tersebut ialah

Sama halnya saat mendesain karakter lcd…untuk memanggil hasil desain dari tabel ASCII digunakan fungsi

LCD Chr(..alamat..)

Selain mendesain karakter LCD … kita dapat juga menggunakan fasilitas karakter yang telah dimikiliki BASCOM AVR…nach karakter tersebut ialah
Iklan

Mengakses Keypad dengan BASCOM AVR

Dengan pemrograman bascom AVR kita dapat mengakses keypad 4×4…nach sebelumnya baca dulu ye dikit tentang teori dari keypad…(kalo ane salah tolong dikoreksi) ni dia:

Keypad sesungguhnya terdiri dari sejumlah saklar, yang terhubung sebagai baris dan kolom. Agar mikrokontroller dapat melakukan scan keypad, maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris untuk menguji jika ada tombol yang ditekan pada kolom tersebut. Sebagai konsekuensi, selama tidak ada tombol yang ditekan, maka mikrokontroller akan melihat sebagai logika high “1” pada setiap pin yang terhubung ke baris.

Pada BASCOM-AVR program akses keypad  dapat dihandle dengan mudah pada dengan suatu fungsi yaitu:

Proses penyambuangan keypad dengan mikrokontroler ialah sebagai berikut:

Ada 8 sambungan yang diperlukan untuk dihubungakan ke mikrokontroler… jadi kita mebutuhkan satu PORT mikro untuk dapat mengakses 1 buah keypad 4×4.

Nach berikut ini sample deklarasi fungsi dari akses keyboard yang dihubungkan pada PORTB dari suatu mikrokontroler:

Sensor Jarak (SRF04)

Sensor SFR04 adalah sensor ultrasonik yang diproduksi oleh Devantech. Sensor ini merupakan sensor jarak yang presisi. Dapat melakukan pengukuran jarak 3 cm sampai 3 meter dan sangat mudah untuk dihubungkan ke mikrokontroler menggunakan sebuah pin Input dan pin Output.

Sensor Devantech SRF-04 bekerja dengan cara memancarkan sinyal ultrasonik sesaat dan menghasilkan pulsa output yang sesuai dengan waktu pantul sinyal ultrasonik sesaat  kembali menuju sensor. Dengan mengukur lebar pulsa pantulan tersebut jarak target didepan sensor dapat diketahui.

Untuk dapat memhami cara kerja dari sensor SRF04 ini perhatikan timming dari pulsa masukan dan keluaran sensor berikut ini:

Berdasarkan data timming diagram, sensor akan memberikan informasi jarak pembacaan dengan informasi berupa pulsa PWM dengan lebar 100µS sampai dengan 18mS.

Dengan 2 buah pin kontrol, antara lain sebuah pin input triger dan sebuah pin output data. Untuk mengaktifkan sensor maka modul diberi triger pulsa maka sensor akan mengeluarkan sinyal pwm dan duty cycle tersebut sebagai jarak objek dengan sensor .

Mikrokontroller memberikan sinyal pulsa high pada pin triger pulse input dari sensor untuk mengaktifkan sensor ultrasonik. Untuk menghitung lebar PWM mengunakan timer0. Pin echo pulse output terhubung dengan pin-pin pada mikrokontroler. Ketika pin echo pulse output high maka timer0 aktif dan ketika pin echo kembali bernilai low maka timer0 dimatikan dan data TCNT0 diambil sebagai data jarak.

Program  akses Sensor Jarak (SRF04) dengan Bascom AVR

$regfile = “m8535.dat”                   ‘menggunakan Atmega8535 sebagai preprosesor

$crystal = 12000000                         ‘menggunakan crystal clock 12 MHz

‘————————inisialisasi Timer—————————

Config Timer0 = Timer0 , Prescale = 1024

‘————————inisialisasi LCD—————————-

Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.2 , Rs = Porta.0

Config Lcd = 16 * 2

‘———————-konfigurasi pin mikro————————

Config Portc.1 = Output

Config Pinc.0 = Input

Outus Alias Portc.1 ‘trigger

Ultra Alias Pinc.0    ‘aktif srf04

‘———————–deklarasi variabel—————————-

Dim Dae As Integer

Dim Data1 As Integer

Dim Data2 As Integer

Dim A As Integer

‘———————–deklarasi subrutin—————————-

Declare Sub Ultra()

‘———————– main program———————————

Cls

Home

Lcd “Demo srf04”

Lowerline

Lcd “oleh Fahmizal”

Wait 2

Do

Cls

Call Ultra()

Loop

End

‘—————-subrutin baca sensor ultrasonik———————-

Sub Ultra()

Enable Interrupts

Enable Timer0

‘———–kosongkan nilai variabel———————————-

Tcnt0 = 0

A = 0

Data1 = 0

Data2 = 0

Dae = Tcnt0

‘—————-memberi trigger ke srf04—————————-

Reset Outus

Waitus 10                                                ‘tunda sebesar 10 uS

Set Outus

Waitus 10                                                ‘tunda sebesar 10 uS

Reset Outus

‘————————————————————————–

Do

Loop Until Ultra = 1

Start Timer0

Do

Loop Until Ultra = 0

Stop Timer0

Dae = Tcnt0

Data1 = A * 256

Data2 = Data1 + Dae

Cls

Home

Lcd “Data jarak sensor”

Lowerline

Lcd Data2

Disable Interrupts

Disable Timer0

Waitms 10

End Sub

‘———kondisi jika terjadi overflow pada timer——————

Overflow:

A = A + 1

Return

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

ni dia video aplikasi sensor ultrasonik pada Robot-Wall Follower ato yg lebih dikenal dengan robot telusur dinding:

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

ni dia video aplikasi sensor ultrasonik pada Wall Follower ato yg lebih dikenal dengan telusur:

Sensor Jarak [PING))) Paralax]

Sensor PING merupakan sensor ultrasonik yang dapat mendeteksi jarak obyek dengan cara memancarkan gelombang ultrasonik dengan frekuensi 40 KHz dan kemudian mendeteksi pantulannya. Tampilan sensor jarak PING ditunjukkan pada Gambar berikut:

Sensor  ini dapat mengukur jarak antara 3 cm sampai 300 cm. keluaran dari sensor ini berupa pulsa yang lebarnya merepresentasikan jarak. Lebar pulsanya bervariasi dari 115 uS sampai 18,5 mS. 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.

Pin signal dapat langsung dihubungkan dengan mikrokontroler tanpa tambahan komponen apapun. 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.

Untuk penjelasan atau prinsip aksesnya sama kok ma srf04, hanya saja untuk sensor PING hanya memakai 3 pin, pin trigger sama echo digunakan dalam 1 pin, sehingga dengan menggunakan sensor PING kita dapat menghemat penggunaan I/O mikrokontroler. Konfigurasi pin sensor PING sbagai berikut:

Timming akses sensor PING)))

Program  akses Sensor Jarak [ PING))) ]dengan Bascom AVR

$regfile = “m8535.dat”
$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0

Config Timer1 = Timer , Prescale = 64

Sigout Alias Portb.0
Sigin Alias Pinb.0
Dirsig Alias Ddrb.0
Dim Data_timer As Integer
‘==================================================
Inisialisasi:
Waitms 100
Initlcd
Locate 1 , 1
Lcd “demo ping”
Wait 1
Cls
Utama:
Gosub Ambil_datatimer
Locate 1 , 1
Lcd Data_timer
Wait 1
Cls
Goto Utama
‘==================================================
Ambil_datatimer:
Dirsig = 1
Set Sigout                                               ‘bankitkan pulsa
Waitus 10
Reset Sigout

‘terima pulsa ubah dulu jadi input
Dirsig = 0                                               ‘jadi input
Set Sigout                                              ‘pull up internal diaktifkan
Bitwait Sigin , Set
Data_timer = 0
Timer1 = 0
Start Timer1

Do
If Sigin = 0 Then
Data_timer = Timer1
Stop Timer1
Exit Do
End If

If Tifr.2 = 1 Then                                ‘cek register timer1 overflow?
Stop Timer1
Tifr.2 = 1
Data_timer = 0
Exit Do
End If
Loop
Stop Timer1
Return

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

ni dia video aplikasi sensor ultrasonik pada Robot-Wall Follower ato yg lebih dikenal dengan robot telusur dinding:

Sensor Jarak Sharp GP2D12

Sensor sharp GP2D12 digunakan untuk membaca jarak.  Sensor ini menggunakan prinsip pantulan sinar infra merah. Dalam aplikasi ini nilai tegangan keluran dari sensor yang berbanding terbalik dengan hasil pembacaan jarak dikomparasi dengan tegangan referensi komparator.

Rangkaian sistem komparator pembacaan jarak dengan sensor sharp GP2D12 ini disajikan pada Gambar berikut:

Prinsip kerja dari rangkaian komparator sensor sharp GP2D12 pada Gambar diatas adalah jika sensor mengeluarkan tegangan melebihi tegangan referensi, maka keluaran dari komparator akan berlogika rendah. Jika tegangan referensi lebih besar dari tegangan sensor maka keluaran dari komparator akan berlogika tinggi.

Selain menggunakan komparator, untuk mengakases sensor jarak sharp GP2D12 dapat dengan menggunakan prinsip ADC, atau dengan kata lain mengolah sinyal analog dari pembacaan sensor sharp GP2D12 ke bentuk digital dengan bantuan pemrograman. Dalam pemrograman BASCOM-AVR untuk mengakses sensor ini dapat menggunakan fasilitas akses ADC yang cukup mudah. Berikut ini link program akses ADC menggunakan BASCOM-AVR https://fahmizaleeits.wordpress.com/2010/05/01/aplikasi-adc-mikrokontroler-atmega8535/.

Sensor Kompas Elektronik (CMPS-03)

Kompas Elektronik CMPS-03 buatan Devantech Ltd ini menggunakan sensor medan magnet Philips KMZ51 yang cukup sensitif untuk mendeteksi medan magnet bumi. Modul ini bekerja dengan mendeteksi magnetik bumi. Data yang dihasilkan dari kompas elektronik ini berupa data biner. Sebagai contoh jika modul menghadap utara maka data yang dihasilkan adalah data 00H, dan arah selatan data keluarannya adalah 7FH.

Koneksi dari modul ke mikrokontroller dapat dilakukan dengan 2 cara yaitu dengan mengunakan data PWM (Pulse Width Modulation), atau dengan I2C (Inter Intergrated Circuit). Jika menggunakan interface PWM, pulsa keluaran memiliki rentang 1mS untuk 0° atau arah utara sampai dengan 36.99 mS untuk 359.90°. Cara yang kedua mengunakan I2C, metode ini dapat digunakan langsung sehingga data yang dibaca tepat 0° – 360° sama dengan 0 – 255.

Gambar bentuk fisik dan koneksi pin modul kompas CMPS03

Modul kompas CMPS03 membutuhkan kalibrasi untuk menentukan nilai data keluaran dari tiap-tiap arah kompas. Metode kalibrasi dapat dilakukan secara manual, adapun cara kalibrasi sebagai berikut:

1. Modul kompas dihadapkan ke utara, kemudian memberikan pulsa rendah pada pin kalibrasi

2. Kompas diputar perlahan ke arah timur secara perlahan, kemudian pin kalibrasi diberi pulsa rendah

3. Langkah berikutnya memutar modul kompas ke arah selatan secara perlahan, kemudian memberikan pulsa rendah ke pin kalibrasi.

4. Langkah terakhir adalah memutar kompas ke arah barat dan kemudian memberikan pulsa rendah ke pin kalibarasi.

Program  akses Sensor Kompas (CMPS-03) dengan Bascom AVR

$regfile = “m8535.dat”
$crystal = 12000000

Config Scl = Portc.4
Config Sda = Portc.5

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.0

Dim Hi As Byte
Dim Lo As Byte
Dim Posisi As Integer

Cls
Cursor Off
Home
Lcd ”  Compass Demo  ”
Wait 2

Do

I2cstart
I2cwbyte &HC0
I2cwbyte &HC1
I2cstop

I2cstart
I2cwbyte &HC1
I2crbyte Hi , Ack
I2crbyte Hi , Ack
I2crbyte Lo , Nack
I2cstop

Posisi = Makeint(lo , Hi)

Lo = Posisi Mod 10

Posisi = Posisi / 10

Cls
Lcd “POSISI: ” ; Posisi ; “.” ; Lo ; “deg”
Lowerline
Lcd ”  by Fahmizal   ”
Waitms 500
Loop

End

Sensor Thermal TPA 81

Sensor Thermal Array TPA 81 adalah sensor yang membaca radiasi panas. Sensor ini digunakan untuk mendeteksi infra merah pada panjang gelombang  2µM – 22µM, yang merupakan panjang gelombang dari radiasi panas. Sensor ini memiliki 8 buah sensor panas yang tersusun dalam satu baris. TPA 81 dapat mengukur suhu pada 8 titik yang berdekatan secara bersamaan dan dapat mendeteksi api lilin pada jarak 2 meter dengan tidak terpengaruh oleh cahaya luar.  Secara keseluruhan, TPA 81 memiliki range horisontal sebesar 41° dan range vertikal sebesar 6°. Sensor ini dapat mendeteksi api lilin dari jarak sekitar 2 meter. Data yang dihasilkan dari sensor thermal array berupa data biner 8 bit dari masing-masing pixel sensor yang merupakan data suhu yang terukur. Misalkan pada salah satu sensor mendeteksi suhu sebesar 48°C, maka data yang dihasilkan pada sensor tersebut adalah 48 (30H). Sensor thermal array memiliki 10 register yang dapat diakses dengan menggunakan protokol I2C. Data suhu dari tiap-tiap pixel sensor terdapat pada register-register berikut ini.

Modul sensor Thermal Array dengan komunikasi protokol I2C ini sama dengan modul kompas elektronik. Alamat fix dari sensor ini adalah 0xD0.  Selanjutnyamembaca data register dengan mengirimkan nilai alamat register yang diinginkan. Data sensor ada pada alamat register 0×02-0×09 untuk data sensor pixel 1-pixel 8. Untuk sistem komunikasi I2C secara keseluruhan sama dengan modul kompas elektronik, yang berbeda hanyalah alamat dari modul dan register-register yang dibaca. Sedangkan cara-cara komunikasinya sama, yaitu dengan menggunakan sistem komunikasi standard I2C. Data yang terbaca pada register-register yang menyimpan data sensor tiap pixel adalah data 8 bit yang mempresentasikan nilai suhu yang terukur. Secara umum, cara untuk mendapatkan nilai-nilai suhu dari sensor thermal array sama seperti pada kompas elektronik, yang berbeda hanyalah pada alamat register yang akan dibaca dan alamat device-nya. Berikut ini adalah potongan program subrutin pembacaan data sensor  thermal array pada register dengan alamat sesuai input variabel addr menggunakan BASCOM-AVR.

Sub Baca_TPA(byval Pixel As Byte) ‘pixel di idi register 2-9
I2cstart
I2cwbyte &HD0
I2cwbyte Pixel
I2cstart
I2cwbyte &HD1

I2crbyte Data_tpa , Nack
I2cstop
End Sub