Tampilkan postingan dengan label Mikrokontroler. Tampilkan semua postingan
Tampilkan postingan dengan label Mikrokontroler. Tampilkan semua postingan

Selasa, 06 Maret 2012

Tutorial Pemrograman CodeVision AVR Part I

cover

Artikel kali ini akan saya bahas mengenai Tutorial Pemrograman CodeVision AVR Part I, Akan saya bagi menjadi beberapa part, karena tutorial nya agak panjang, dan nanti di akhir tutorial CodeViision AVR akan saya share tutorial lengkap nya dalam file .Pdf. Oke, sekarang kita mulai aja nih. 

jendela
Jendela Codevision AVR

Nah pada gambar jendela CodeVision AVR, dapat dilhat itu merupakan contoh printscreen Codevison AVR.

Compiler Codevision AVR merupakan compiler untuk mikrokontroler AVR, dengan bahasa pemrograman C. Dari Codevision AVR ini akan didapatkan file .hex untuk diprogram ke mikrokontroler nya,

Penulisan Program Dalam Bahasa C


#include <mega32.h>
#include <delay>
#define Sensor PINB.0

//variable Global
unsigned int u;

void main()
{
//variable lokal
DDRB=0x00;
PORTA=0XFF;

While(1)
{
.........
.........
};
}

Penjelasan nya :
Preprocessor (#), digunakan untuk memasukkan (include) sebuah text dari file lain, mendefinisikan macro yang dapat mengurangi beban kerja.

#define : untuk mendefinisikan sebuah macro
contoh : #define Sensor PINB.0

menulis sebuah komentar :


//komentar komentar    digunakan untuk menulis komentar untuk satu baris

/* komentar
komentar
*/                                       digunakan untuk menulis komentar untuk lebih dari 1 baris.

Identifiers :


adalah nama yang diberikan pada sebuah label, fungsi, variable, atau yang lain. Identifier mengandung karakter ( 0 sampai 9) ( A - Z, a - z ) . Untuk Codevision AVR, menggunakan case sensitif ( besar kecil tulisan sanngat diperhatikan, tak seperti BASCOM AVR). identifier maksimal 32 karakter saja.

Tipe Data 


tipe
Ukuran Bit
range
bit                        
1
0,1
char                        
8
-128 to 127
unsigned char
8
0 to 255
signed char
8
-128 to 129
int
16
32768 to 32767
short int
16
32769 to 32767
unsigned int
16
0 to 65535
signed int
16
32769 to 32767
long int
32
-2147483648 to 2147483648
unsigned long int
32
0 to 4294967295
signed long int
32
-2147483648 to 2147483648


 Operator

Operator
Operator digunakan untuk pengolahan data pemrograman.
1. Operator aritmatika
     +  untuk  operasi penjumlahan
     -  untuk  operasi pengurangan
     *  untuk  operasi perkalian
     /  untuk  operasi pembagian
     %  untuk  operasi sisa pembagian

2. Operator kondisi
==     untuk operator samadengan 
!>   untuk operator tidak samadengan
>     untuk operator lebih besar dari  
<     untuk operator lebih kecil dari
>=   untuk operator lebih besar atau sama dengan
<=   untuk operator lebih kecil atau sama dengan

3. Operator Logika
&&   untuk operasi AND
||      untuk operasi OR
!   untuk operasi NOT 


4. Operator  bitwise
~  untuk  operasi komplemen bitwise
&  untuk  operasi bitwise AND
|   untuk  operasi bitwise OR
^  untuk  operasi bitwise XOR
>>  untuk  operasi right shift
^  untuk  operasi left shift



5. Operator  Assignment



=    untuk memasukkan nilai
+=  untuk menambah nilai dari keadaan semula
-=   untuk mengurangi nilai dari keadaan semula
*=   untuk mengalikan nilai dari keadaan semula
/=    untuk melakukan pembagian terhadap bilangan semula
%= untuk memasukan nilai sisa bagi dari pembagian bilangan semula
<<=  untuk memasukan shift left
>>=  untuk memasukkan shift right

&=    untuk memasukan bitwise AND
^=    untuk memasukan bitwise XOR
\=    untuk memasukan bitwise OR


Nah, sekian dulu yaa Tutorial Pemrograman CodeVision AVR Part I, nanti saya posting part part berikut nya. 


Terimakasih.


Kunjungi Artware electronics yaaa, dan beli komponen maupun keperluan elektronika disana.








Jumat, 17 Februari 2012

Mengenal Mikrokontroler PIC 16F877

Mikrokontroler PIC 16F877 merupakan mikrokontroler keluaran dari Microchip . Pada artikel Mengenal Mikrokontroler PIC 16F877 kali ini saya akan mengenalkan mikrokontroler PIC 16f877.
Salah satu kelebihan dari mikrokontroler PIC 16F877 ini mempunyai operating speed sampai 20Mhz. Yang berarti mikrokontroler PIC ini akan mengeksekusi setiap perintah dalam 200nS, dan program akan mengeksekusi 5 juta instruksi per detik nya. Hebat bukan??

Mengenal Mikrokontroler PIC 16F877
Untuk Anda yang belum mengenal apa itu mikrokontroler, bisa di baca dulu disini

Berikut fitur mikrokontroler nya :


• High performance RISC CPU
• Only 35 single word instructions to learn
• All single cycle instructions except for program
branches which are two cycle
• Operating speed: DC - 20 MHz clock input
DC - 200 ns instruction cycle
• Up to 8K x 14 words of FLASH Program Memory,
Up to 368 x 8 bytes of Data Memory (RAM)
Up to 256 x 8 bytes of EEPROM Data Memory
• Pinout compatible to the PIC16C73B/74B/76/77
• Interrupt capability (up to 14 sources)
• Eight level deep hardware stack
• Direct, indirect and relative addressing modes
• Power-on Reset (POR)
• Power-up Timer (PWRT) and
Oscillator Start-up Timer (OST)
• Watchdog Timer (WDT) with its own on-chip RC
oscillator for reliable operation
• Programmable code protection
• Power saving SLEEP mode
• Selectable oscillator options
• Low power, high speed CMOS FLASH/EEPROM
technology
• Fully static design
• In-Circuit Serial Programming (ICSP) via two
pins
• Single 5V In-Circuit Serial Programming capability
• In-Circuit Debugging via two pins
• Processor read/write access to program memory
• Wide operating voltage range: 2.0V to 5.5V
• High Sink/Source Current: 25 mA
• Commercial, Industrial and Extended temperature
ranges
• Low-power consumption:
- < 0.6 mA typical @ 3V, 4 MHz
- 20 μA typical @ 3V, 32 kHz
- < 1 μA typical standby current

Mengenal Mikrokontroler PIC 16F877
Berikut Pin diaram Mikrokontroler PIC 16F877 :

Pin Out
Pin Out
Mengenal Mikrokontroler PIC 16F877
Bagaimana cara menggunakan/ mengaplikasikan nya?? 

Untuk Menggunakan nya kita harus membuat minimum system untuk PIC 16F877 nya terlebih dahulu, sesuai dengan kebutuhan sistem yang sedang dibutuhkan. 
Untuk mendownload program ke PIC 16F877 dapat menggunakan PICKIT namun harga PICKIT nya yang relatif mahal. Ataupun dapat menggunakan bootloader sehingga kita dapat memprogram nya dengan jalur serial.

Untuk editor dan compiler nya dapat menggunakan CCS C compiler dengan bahasa C, versi demo bisa di downbload disini

Atau dapat juga menggunakan bahasa basic, dengan PIC Basic Pro compiler, untuk info nya bisa di cek disini

Untuk Anda yang belajar mikrokontroler AVR, dapat membaca beberapa artikel pemrograman BASCOM AVR disini

Anda juga dapat membeli produk-produk kami disini

Sekian artikel Mengenal Mikrokontroler PIC 16F877, terima kasih sudah berkunjung, semoga bermanfaat.

Sabtu, 11 Februari 2012

Pemrograman Bascom AVR Termometer Digital Dengan LM35 Berbasis Mikrokontroler ATMega32

Sore temen-temen, artikel Pemrograman Bascom AVR Termometer Digital Dengan LM35 Berbasis Mikrokontroler ATMega32 kali ini saya ingin sharing mengenai aplikasi termometer digital dengan LM35. Program yang dibuat dengan menggunakan BASCOM AVR dengan bahasa BASIC.

LM35 merupakan sensor suhu low cost yang sensitif dan presisi dengan satuan celcius, dengan keluaran tegangan analog yang sudah linier sehingga sensor ini sudah terkalibrasi. Jangkauan suhu yang dapat dideteksi oleh LM35 diantara -55 derajat sampai 150 derajat celcius. Keluaran analog nya linier 10.0 mV/ derajat celcius.
Berikut penampakan nya :

lm35
symbol lm35


Package
Untuk informasi lebih mengenai L35 ini, Temen-temen bisa download Datasheet LM35 DISINI

Berikut Rangkaian termometer digital nya :

Rangkaian

Kemudian untuk program dengan BASCOM AVR nya sebagai berikut :

'**********************************************************************************

Pemrograman Bascom AVR Termometer Digital Dengan LM35 Berbasis Mikrokontroler ATMega32
' program termometer digital
' http://goes-open.blogspot.com
' mirza dhanu sulistya
' tutorial

$regfile = "m32def.dat"
$crystal = 11059200

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.7
Config Lcdbus = 4
Config Lcd = 16 * 2              ' lcd 16x2 karakter
Cursor Off                             ' menonaktifkan cursos LCD
Deflcdchar 0 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32

Config Adc = Single , Prescaler = Auto , Reference = Internal

Dim A As Word , Volt As Word , Volt_d As Byte
Start Adc          ' memulai ADC

Cls                    'clear screen
Do                    ' memulai program

Locate 1 , 1      ' menempatkan karakter di LCD pada baris 1 kolom 1
Lcd "termometer Dgtal"       ' menampilkan tulisan
A = Getadc(0)
Volt = A * 5
Volt_d = Volt Mod 10
Volt = Volt / 20
Locate 2 , 1
Lcd Volt ; "," ; Volt_d

Locate 2 , 6
Lcd Chr(0) ; "C"
Loop

'**********************************************************************************
Pemrograman Bascom AVR Termometer Digital Dengan LM35 Berbasis Mikrokontroler ATMega32
Penjelasan :

$regfile = "m32def.dat" merupakan konfigurasi pustaka mikrokontroler yang digunakan (ATMega32)
$crystal = 11059200 crystal yang digunakan sebesar 11059200 Hz
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.7  merupakan konfigurasi pin LCD yang digunakan dan dihubungkan ke PORTC
Deflcdchar 0 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 merupakan sebuah karakter 'derajat' pada LCD yang dibuat dengan LCD designer
Config Adc = Single , Prescaler = Auto , Reference = Internal merupakan konfigurasi ADC nya

A = Getadc(0)
Volt = A * 5
Volt_d = Volt Mod 10
Volt = Volt / 20
merupakan perhitungan data dari ADC

Lcd Chr(0) ; "C" merupakan pemanggilan karakter 'derajat' yang dibuat dengan LCD designer
Loop                  looping program

Pemrograman Bascom AVR Termometer Digital Dengan LM35 Berbasis Mikrokontroler ATMega32
Mungkin di postingan berikut nya saya akan memberikan tutorial untuk membuat karakter tertentu dengan fasilitas LCD designer pada BASCOM AVR. hehehee

Sekian artikel Pemrograman Bascom AVR Termometer Digital Dengan LM35 Berbasis Mikrokontroler ATMega32 Terimakasih sudah berkunjung mohon maaf jika ada kesalahan hehe semoga bermanfaat. 

Rabu, 08 Februari 2012

Komunikasi Serial ATMega32 dengan USB to serial TTL Converter

Artikel Komunikasi Serial ATMega32 dengan USB to serial TTL Converter kali ini, saya akan mengulas tentang komunikasi serial dengan mikrokontroler ATMega32. Protokol komunikasi yang sering digunakan untuk mengkomunikasikan sebuah piranti dengan komputer adalah komunikasi serial.

Artikel Komunikasi Serial ATMega32 dengan USB to serial TTL Converter, digunakan USB to Serial TTL converter untuk mengkomunikasikan antara mikrokontroler dengan komputer/laptop. input dari laptop/PC dengan USB sedangkan untuk menghubungkan ke mikrokontroler menggunakan PIN TX,RX dan GND.
Berikut penampakan nya :

Usb To Serial TTL Converter
Usb to serial TTL converter

Kenapa memakai Usb to serial TTL converter?? hehe
Tegangan komunikasi serial untuk mikrokontroler diantara 0V-3,3V akan tetapi untuk tegangan komunikasi serial komputer sekitar -15 sampai 15V. Untuk kedua piranti itu dapat berkomunikasi sehingga diperlukan sebuah converter agar level tegangan nya setara dan sama-sama dapat berkomunikasi.
Salah satu converter yang dapat digunakan adalah dengan menggunakan IC MAX232 dan dihubungkan dengan komputer lewat DB9. atau dapat juga dengan menggunakan kabel USB to serial converter.
usb+to+serial+kabel

microcontroller_uart_max232_circuit

Akan tetapi kedua piranti itu memiliki beberapa kelemahan, seperti kabel usb to serial yang relatif mahal, piranti yang lebih besar, ribet harus membuat rangkaian apabila akan menggunakan converter dengan DB9 dan IC max232.

Komunikasi Serial ATMega32 dengan USB to serial TTL Converter
Berikut hasil percobaan nya dengan hyperterminal:
serial 9600

serial 57600

Komunikasi Serial ATMega32 dengan USB to serial TTL Converter
Sudah teruji untuk Baudrate 300 - 57600
Berikut source code dengan Bascom AVR nya :
$regfile = "m32def.dat"
$crystal = 11059200
$baud = 300

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.7
Config Lcdbus = 4
Config Lcd = 16 * 2
Cursor Off
Cls
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim A As Word
Do
A = Getadc(1)
Locate 1 , 1
Lcd "akses ADC -EVA-"
Locate 2 , 1
Lcd "datanya=" ; A
Print "datanya=" ; A
Loop

Perintah yang paling utama untuk komunikasi serial dengan Bascom AVR :
$baud = 'kecepatan baudrate'   , digunakan untuk mengatur kecepatan baudrate
dan perintah Print" " untuk menampilkan data di PC/Laptop.

Kelebihan dari USB to Serial TTL Converter ini adalah :
- mudah penggunaan nya.
- praktis
- ekonomis
- kabel UpTo 1 meter.
- Baudrate teruji 300-57600

Bagi yang berminat untuk membeli USB TO SERIAL TTL CONVERTER ini dapat menghubungi saya di :
email : mirzadanu@ymail.com
atau Facebook : Mirza Dhanu/mirzadanu@gmail.com
atau juga COD disekitar area UGM Yogyakarta

DIJUAL MURAH MERIAH HANYA Rp. 40.000,- saja. Belum termasuk Ongkir.
Untuk pembelian 5 pcs atau lebih HANYA Rp. 35.000, - /Pcs.
Anda akan mendapatkan :
1 unit USB to Serial TTL Converter
1 unit CD berisi Driver, Tutorial Penggunaan, source code komunikasi serial.
1 Kemudahan untuk melakukan komunikasi serial untuk Tugas, Proyek, DLL.
hehehehee

Bagi yang memakai windows 7, dapat mendownload hyperterminal DISINI
Sekian Artikel Komunikasi Serial ATMega32 dengan USB to serial TTL Converter, mohon maaf apabila ada kesalahan semoga bermanfaat.
Bagaimana menurut Anda? Silahkan berkomentar.

Selasa, 07 Februari 2012

Akses EEPROM internal ATMega32 dengan BASCOM AVR

Oke temen-temen, Akses EEPROM internal ATMega32 dengan BASCOM AVR kali ini saya akan menbagi pengetahuan seputar EEPROM, tentang bagaimana cara penggunaan nya, mulai dari menulis di EEPROM sampai Membaca di EEPROM.

Seperti yang kita tahu, ATMega32 memiliki fasilitas EEPROM internal sebesar 1024 byte, walaupun terbatas kapasitas memory nya akan tetapi sudah cukup untuk menyimpan data-data (dalam byte) tanpa harus mengkhawatirkan hilangnya data meskipun mikrokontroler tidak mendapatkan catu daya, atau mikrokontroler dalam keadaan non-aktif (mati).

Pada artikel Akses EEPROM internal ATMega32 dengan BASCOM AVR ini, akan saya bahas bagaimana cara menulis dan membaca data dalam EEPROM. Akses EEPROM internal ATMega32 dengan BASCOM AVR menggunakan LCD untuk menampilkan data yang akan masuk/dituliskan ke EEPROM dan data yang akan dibaca melalui EEPROM, sehingga kita akan mengetahui data yang ditulis dan dibaca EEPROM.

Data yang ditulis ke EEPROM merupakan data acak, dengan perintah/syntax dalam BASCOM AVR menggunakan ' RND( ) ' untuk menghasilkan data acak. 
misalkan RND(10) maka akan diperoleh data acak dari bilangan <=10.

Gambar 'Rangkaian', merupakan konfigurasi dari LCD yang saya gunakan : 

Rangkaian
Rangkaian
Untuk listing program nya sebagai berikut :


'******************************************************************************
' Program tutorial akses EEPROM READ AND WRITE
' Mirza dhanu
' http://Goes-open.blogspot.com
'******************************************************************************

$regfile = "m32def.dat"
$crystal = 11059200

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

Dim A As Byte , I As Byte , B As Byte

Cls
Locate 1 , 1
Lcd "goes-openblogspot"
Locate 2 , 1
Lcd "Visit us..."

Wait 3
Cls
Locate 1 , 1
Lcd "Tutorial EEPROM "
Locate 2 , 1
Lcd "Akses EEPROM"

Wait 3

Cls
Locate 1 , 1
Lcd "Write EEPROM.."
Locate 2 , 1
Lcd "Datanya="

For I = 0 To 9
Locate 2 , 9
B = Rnd(100)
Lcd B
Writeeeprom B , I
Wait 1
Next I

Locate 2 , 1
Lcd "write finish"
Wait 2

Locate 1 , 1
Lcd "Read EEPROM.."
Locate 2 , 1
Lcd "data ke-"

For I = 0 To 9
Locate 2 , 9
Readeeprom A , I
Lcd I ; "=" ; A
Wait 1
Next I

End
'-------------------------------------------------------------------------------------------------------------

Penjelasan listing :

Akses EEPROM internal ATMega32 dengan BASCOM AVR, disini saya akan mejelaskan hal-hal yang pokok saja karena sebagian penjelasan sudah saya jelskan pada postingan2 sebelumnya, terutama yang LCD karena disini LCD digunakan sebagai interface nya.

Pada bagian berikut ini

For I = 0 To 9
Locate 2 , 9
B = Rnd(100)
Lcd B
Writeeeprom B , I
Wait 1
Next I


I adalah variabel yang digunakan untuk menuliskan data dari 0 sampai 9, dari dara acak dalam perintah Rnd(100) yang kemudian ditampilan pada LCD dalam variabel B. 
Writeeeprom B , I : merupakan perintah untuk menulis ke EEPROM, B adalah variabel data, dari data acak sedangkan I adalah alamat masing-masing data tadi. 


For I = 0 To 9
Locate 2 , 9
Readeeprom A , I
Lcd I ; "=" ; A
Wait 1
Next I
program ini untuk pembacaan data-data yang sudah dituliskan pada EEPROM ( 10 bilangan acak dari 0 sampai 9). Readeeprom A , I membaca variabel data yang telah dituliskan pada alamat2 I.



Gampang bukan??? hehheehe

Download Artikel Disini
Download rangkaian dengan Simulasi Proteus Disini
Download Program dengan Bascom AVR disini


Sekian artikel Akses EEPROM internal ATMega32 dengan BASCOM AVR, mohon maaf apabila ada kesalahan, semoga bermanfaat. 
Bagaimana menurut Anda? silahkan beri komentar.

Sabtu, 04 Februari 2012

Akses PWM dengan menggunakan Bascom AVR

PWM (Pulse Width Modulation), menggunakan bentuk gelombang kotak dengan duty cycle tertentu. Pada artikel Akses PWM dengan menggunakan Bascom AVR ini akan saya bahas tentang PWM yang saya aplikasikan ke dalam sebuah led dan ditampilkan pada CRO dengan simulasi proteus. Untuk PWM aplikasi yang sederhana dapat digunakan untuk mengendalikan kecerahan lampu led dan mengatur kecepatan motor. contoh bentuk pulsa PWM pada gambar PWM.

pwm
PWM
Pada gambar PWM, ditunjukkan contoh PWM dengan duty cycle 50%, jika pulsa tersebut diberikan ke LED atau motor DC maka kecerahan led 50% atau kecepatan motor nya 50%. Duty cycle 50% berarti lebar pulsa HIGH dan LOW nya sama.

Duty cycle dapat diatur dengan menggunakan fasilitas timer pada mikrokontroler. Pada atmega32 memiliki luaran PWM yang tersambung ke Timer1 melalui port : OC1A pada PortD.4 dan OC1B pada portD.5
Luaran PWM tersebut memiliki pengeturan terpisah (masing2 duty cycle nya berbeda) walaupun akan bekerja pada frekuensi yang sama. Terdapat 3 mode yaitu mode 8,9,10 bit.
mode 8 bit, mencacah dari 0 sampai 255
mode 9 bit, mencacah dari 0 sampai 511
mode 10 bit, mencacah dari 0 sampai 1023

bentuk pulsa
Bentuk Pulsa
Akses PWM dengan menggunakan Bascom AVR
Berikut listing pemrograman dengan BASCOM AVR nya :
'program akses PWM
' mirza dhanu s
$regfile = "m32def.dat"
$crystal = 11059200
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1024 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up
Pwm1a = 51
Pwm1b = 51

Akses PWM dengan menggunakan Bascom AVR
dengan rangkaian sebagai berikut :
rangkaian
Rangkaian PWM

Config Timer1 = Pwm , Pwm = 8 , Prescale = 1024 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up
perintah diatas merupakan syntax untuk configurasi timer1 untuk pWM pada Bascom AVR. digunakan TImer1, dengan PMW mode 8 bit, Prescale 1024, Compare A PWM = clear down maksutnya PWM dengan mode inverting, dapat dilihat pada gambar bentuk pulsa. dan Compare A PWM = clear up dengan mode non inverting atau berkebalikan dengan nilai nya.


Pwm1a = 51
Pwm1b = 51
perintah ini digunakan untuk mengeluarkan sebuah nilai pulsa sebesar 51. Dilihat pada gambar Bentuk Pulsa, nilai maksimum pada program ini adalah 255 karena menggunakan mode 8 bit. nilai tertentu makstnya nilai dari PWM nya. pada program nilai PWM nya sebesar 51 maka hasilnya seperti berikut :


hasil


Akses PWM dengan menggunakan Bascom AVR Hasilnya led akan seolah-olah berkedip dalam simulasi nya dan terbentuk gelombang kotak pada CRO, gelombang yang atas menggunakan mode inversi sedangkan gelombang yang bawah menggunakan mode non-inversi masing-masing dengan duty cycle 20%.

untuk simulasi dengan proteus nya dapat didownload disini
dan program nya disini

Sekian dulu artikel Akses PWM dengan menggunakan Bascom AVR, semoga bermanfaat.
Bagaimana menurut Anda? silahkan beri komentar...

Jumat, 20 Januari 2012

Akses Keypad Matrix 4x4 dengan Bascom AVR Menggunakan Mikrokontroler Atmega32

Pada artikel Akses Keypad Matrix 4x4 dengan Bascom AVR Menggunakan Mikrokontroler  Atmega32, kita akan membahas tentang keypad matri
Keypad matrix merupakan sekumpulan tombol-tombol yang disusun secara matrix, yaitu dengan adanya baris dan kolom. Kelebihan dari keypad matrix ini adalah dapat menghemat Port mikrokontroler yang digunakan, misal pada mikrokontroler Atmega 32 digunakan PORTB untuk keypad matrix maka 4 port digunakan sebagai baris dan 4 lain digunakan sebagai kolom. Keypad matrix 4x4 yang artinya terdapat 4 baris dan 4 kolom tombol, dimana semua nya terdapat 16 tombol
Salah satu cara yang digunakan untuk mengakses keypad matrix adalah dengan cara scanning . Kenapa dengan cara scanning? karena dalam satu port digunakan untuk beberapa tombol secara bersamaan, dan tidak memungkinkan untuk mengecek dua atau lebih tombol dalam waktu bersamaan.
Proses scanning, adalah sebuah proses pengecekan yang dilakukan dengan cara memberikan pengumpanan data dan pengecekan umpan balik. Dalam hal ini umpan data menggunakan kolom dan umpan balik pada baris. Oleh karena itu untuk melakukan proses scanning maka mikrokontroler mengeluarkan 4 dari 8-bit dengan logika '0' dalam rangkaian keypad matrix pada gambar yaitu baris, dan lainnya untuk menguji jika ada tombol yang ditekan. Maka dalam rangkaian gambar keypad matrix selama tidak ada tombol yang ditekan maka mikrokontroler akan melihat logika '1' pada setiap port yang terhubung pada kolom.

Berikut rangkaian keypad matrix nya :

Keypad matrix
Keypad Matrix

Berikut listing program menggunakan BASCOM AVR :
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Created by Mirza Dhanu Sulistya
' posting on 20 january 2012

$regfile = "m32def.dat"
$crystal = 11059200

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

Config Kbd = Portd , Debounce = 20[ , Delay = 100]
Dim Keypad As Byte

Cls
Main:
Do
Keypad = Getkbd()
Locate 1 , 1
Lcd "Keypad Matrix"
Locate 2 , 1
Goto Label_tombol
Loop

Label_tombol:
Select Case Keypad
Case 0 : Lcd "tombol 0 ditekan"
Case 1 : Lcd "tombol 1 ditekan"
Case 2 : Lcd "tombol 2 ditekan"
Case 3 : Lcd "tombol 3 ditekan"
Case 4 : Lcd "tombol 4 ditekan"
Case 5 : Lcd "tombol 5 ditekan"
Case 6 : Lcd "tombol 6 ditekan"
Case 7 : Lcd "tombol 7 ditekan"
Case 8 : Lcd "tombol 8 ditekan"
Case 9 : Lcd "tombol 9 ditekan"
Case 10 : Lcd "tombol 10 ditkan"
Case 11 : Lcd "tombol 11 ditkan"
Case 12 : Lcd "tombol 12 ditkan"
Case 13 : Lcd "tombol 13 ditkan"
Case 14 : Lcd "tombol 14 ditkan"
Case 15 : Lcd "tombol 15 ditkan"
Case 16 : Lcd "Keypad blm dtekn"
End Select
Goto Main
-----------------------------------------------------------------------------------------------------------------------------------

Akses Keypad Matrix 4x4 dengan Bascom AVR Menggunakan Mikrokontroler  Atmega32 Sedikit penjelasannya program nya:
Karena beberapa syntax dan fungsi-fungsi sudah dijelaskan di beberapa postingan sebelumnya, maka disini aku tidak bahas lagi di Akses Keypad Matrix 4x4 dengan Bascom AVR Menggunakan Mikrokontroler  Atmega32.



Config Kbd = Portd , Debounce = 20[ , Delay = 100]
untuk mengkonfigurasi fungsi KBD pada portD, dan nilai debouncing sebesar 20 dengan tundaan sebesar 100 milisekon.
fungsi umum Confid KBD dalam BASCOM AVR sebagai berikut :
CONFIG KBD = PORTx , DEBOUNCE = value [, DELAY = value]
PORTx dimana letak port yang digunakan, untuk nilai debounce, default nya sebesar 20, untuk nilai maksimum nya 255, Delay, tundaan ini optional, bisa dipakai maupun tidak. parameter yang optional yang menyebabkan fungsi GETKBD() untuk menunggu waktu tertentu saat setelah keypad ditekan ( kurang lebih begitu penjelasan dari INDEX nya BASCO AVR hehheeehe )


Dim Keypad As Byte , mendeklarasikan variabel Keypad dengan tipe data BYTE.

Keypad = Getkbd() , berfungsi untuk scan keypad matrix dan mengembalikan nilai dari tombol yang ditekan.

Goto Label_tombol , untuk melompat ke label tertentu, dalam hal ini melompat ke label Label_tombol

Label_tombol: , label Label_tombol
Select Case Keypad, adalah instruksi operasi bersyarat menggunakan SELECT..CASE, yang diakhiri dengan END SELECT . Untuk mengetahui operator dalam BASCOM AVR, disini


Goto Main, lompat ke label MAIN


Untuk hasil simulasi pada proteus sebagai berikut :
Hasil
Hasil
Sekian dulu artikel Akses Keypad Matrix 4x4 dengan Bascom AVR Menggunakan Mikrokontroler  Atmega32, mohon koreksi nya apabila ada salah kata, semoga bermanfaat buat semuanya. Terimakasih sudah berkunjung.

Kamis, 19 Januari 2012

Akses Servo Menggunakan Button dengan Mikrokontroler Menggunakan BASCOM AVR

Pada artikel Akses Servo Menggunakan Button dengan Mikrokontroler Menggunakan BASCOM AVR , pada kesempatan kali ini kita akan membahas tentang servo, yang dikendalikan dengan sebuah button, dengan menggunakan mikrokontroler Atmega32.
Apa itu servo? Motor servo merupakan kombinasi dari motor DC dengan rangkaian impan balik elektronik. Servo merupakan sebuah sistem kendali otomatis yang dipakai untuk mengatur kecepatan sebuah motor DC.
Motor servo dapat dibedakan menjadi dua jenis yaitu motor servo yang berputar secara kontinyu dengan kecepatan tertentu dan motor servo yang bergerak mennujukkan sudut tertentu, atau dapat disebut dengan RC SERVO. Komponen yang ada dalam RC servo adalah : motor, gearbox, potensiometer, umpan balik, rangkain control, dan driver untuk motor dc. Motor RC servo membutuhkan tiga kabel yaitu 2 kabel daya dan 1 kabel data. Lebih tepatnya 1 kabel untuk VCC 1 kabel untuk GND dan 1 kabel untuk Data.

Heheehee, cukup deh untuk teori nya, langsung ke rangkainnya :

akses servo
akses servo


Dan ini untuk program nya :

‘mirza dhanu s
‘goes-open.blogspot.com
$regfile = "m32def.dat"
$crystal = 12000000
Config Servos = 1 , Servo1 = Portd.7 , Reload = 20
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
Config Lcdbus = 4
Config Lcd = 16 * 2
Cursor Off
Config Portd.7 = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
Set Portb.0
Set Portb.1
Kurang Alias Pinb.0
Tambah Alias Pinb.1
Dim Nilai As Byte , I As Byte
Nilai = 0
Enable Interrupts
Cls
Utama:
Do
Locate 1 , 1
Lcd " Akses Servo"
Locate 2 , 1
Lcd "Nilai = " ; Nilai ; " "
If Tambah = 0 Then
Incr Nilai
Waitms 20
End If
If Kurang = 0 Then
Decr Nilai
Waitms 20
End If
Loop
______________________________________________________________________________


Akses Servo Menggunakan Button dengan Mikrokontroler Menggunakan BASCOM AVR Penjelasannya program nya:

Mungkin untuk beberapa syntax dari program ini telah dijelaskan dibeberapa postingan sebelumnya, disini aku jelasin yang intinya saja heheehe

Config Servos = 1 , Servo1 = Portd.7 , Reload = 20

perintah ini untuk mengkonfigurasi servo, servos = 1 yang berarti servo yang digunakan sebanyak satu servo. Servo1 = PORTD.7 berarti servo dihubungkan pada PORTD.7.
Reload = 20 adalah nilai dari ISR dalam satuan uS, 20 yang artinya ISR internal akan dieksekusi dalam setiap 20uS, ISR dibuat oleh TIMER0.
Set Portb.0, perintah set digunakan untuk memberikan suatu logika HIGH pada sebuah PORT
Nilai = 0 , Nilai merupakan variable yang pada program ini untuk mengatur posisi putaran
Enable Interrupts, mengaktifkan interupsi
Incr Nilai, perintah ini digunakan untuk menambah value dari Nilai.
Jika tombol ditekan atau PORT mendapatkan logika Low, karena dalam rangkaian menggunakan button aktif low, maka value dari variable Nilai akan ditambah, begitu juga dengan Decr untuk mengurangi value dari variable Nilai.

Berikut video percobaannya, Akses Servo Menggunakan Button dengan Mikrokontroler Menggunakan BASCOM AVR menggunakan servo dari tower pro dan menggunakan evaluation board produk dari artware-electronics



Cukup sekian dulu artikel Akses Servo Menggunakan Button dengan Mikrokontroler Menggunakan BASCOM AVR ini, semoga bermanfaat untuk teman-teman semuanya, mohon maaf apabila ada salah kata dan mohon dikoreksi. terimakasih.

Selasa, 17 Januari 2012

Akses Buzzer dengan Mikrokontroler Menggunakan Bascom AVR

Setelah kemarin sempat mengulas LCD dan Tombol Push button dengan mikrokontroler, artikel Akses Buzzer dengan Mikrokontroler Menggunakan Bascom AVR ini kita akan mengulas tentang akses buzzer dengan menggunakan mikrokontroler. Buzzer dapat di aplikasikan sebagai sirine yang digunakan sebagai tanda peringatan maupun dapat digunakan untuk membuat bunyi tone. langsung aja berikut pemrograman buzzer dengan menggunakan Bascom AVR 

-------------------------------------------------------------------------------------------------------------

$regfile = "m32def.dat"
$crystal = 11059200
Config Portd.0 = Output
Speaker Alias Portd.0
Do
Sound Speaker , 124 , 675
Sound Speaker , 110 , 758
Sound Speaker , 248 , 675
Waitms 125
Sound Speaker , 165 , 1011
Loop
-----------------------------------------------------------------------------------------------------------------------------------


Penjelasan nya :


$regfile = "m32def.dat"        " merupakan pustaka mirkokontroler yang dipakai "
$crystal = 11059200               " crystal yang dipakai sebesar 11059200 Hz "
Config Portb.0 = Output         " mengkonfigurasi PORTB.0 sebagai output/keluaran"
Speaker Alias Portb.0            " deklarasi PORTB.0 dengan nama lain 'speaker' "
Do                                            " mulai program utama"
Sound Speaker , 124 , 675      " akan dijelaskan dibawah "
Sound Speaker , 110 , 758
Sound Speaker , 248 , 675
Waitms 100                             " delay 100 ms"
Sound Speaker , 165 , 1011   
Loop                                        " looping program "


Untuk Sound Speaker , 124 , 675 , dalam bascom AVR perintah SOUND digunakan untuk mengirim pulsa ke port pin, dengan syntax sebagai berikut :

Sound pin, duration, pulses
pin : IO dari mikrokontroler yang dihubungkan ke buzzer, misal PORTD.0
Durasi : Sejumlah pulsa yang dikirimkan, Byte, Word atau constant
Pulses : pulsa nya.

kemudian untuk simulasi dengan proteus nya sebagai berikut : 

Skema rangkaian
Skema Rangkaian

Untuk tutorial proteus mungkin di artikel selanjutnya akan aku bahas deh. heehe.
Untuk simulasi dengan proteus, sumber clock atau crystal nya menggunakan crystal internal sehingga pada rangkaian tidak menggunakan crystal. sama dengan beberapa artikel mikrokontroler di postingan sebelumnya.
OK, cukup sekian dulu artikel Akses Buzzer dengan Mikrokontroler Menggunakan Bascom AVR, mohon maaf apabila ada salah kata dan mohon dikoreksi apa bila ada kesalahan, terimakasih semoga artikel Akses Buzzer dengan Mikrokontroler Menggunakan Bascom AVR bermanfaat untuk para pembaca semua nya. 

Senin, 16 Januari 2012

Akses LCD 16x2 dan ADC dengan Bascom AVR

Wah jumpa lagi nh, akhir nya bisa update postingan lagi nih.
OK,pada artikel Akses LCD 16x2 dan ADC dengan Bascom AVR aku mau bercerita tentang LCD dan fasilitas ADC pada mikrokontroler. apa itu LCD?
LCD atau Liquid Crystal Display, merupakan suatu display ( penampil ) berbahan cairan kristal yang dioperasikan menggunakan sistem dotmatriks. LCD banyak ditemui dibeberapa alat elektronik, seperti meltitester digital, kalkulator, jam digital, dan lain-lain. Nah, pada artikel Akses LCD 16x2 dan ADC dengan Bascom AVR, yang aku bahas menggunakan LCD 16x2 karakter. dengan maksud 16 kolom dan 2 baris pada LCD.

nah ini dia si LCD nya (gambar 1) :

LCD
Gambar 1. LCD display 16x2

Pin DB0 - DB7 merupakan Data bit dari LCD, DB0 merupakan data bit ke-0 (LSB) dan DB7 data bit ke-7 MSB. E merupakan enable, R/W : Read/Write untuk memilih mode baca atau tulis. RS : Register Select jika 0: Register instruksi 1:data instruksi, VEE : untuk mengatur kontras LCD, VDD suplay tegangan untuk LCD 5volt. VSS : GND.

Kemudian untuk ADC, ADC merupakan fasilitas dari mikrokontroler untuk mengkonversi dari data analog menjadi data digital. Untuk pembacaan data analog apa mikrokontroler Atmega32 menggunakan PORT A, yang mempunyai 8 channel ADC internal.
Langsung saja ke contoh aplikasi pembacaan ADC menggunakan display LCD :

tes data ADC
Gambar 2. tes data ADC
ADC, dibaca pada PORTA.0 atau ADC channel 0, dari keluaran potensiometer 1K dan data yang telah diolah ditampilkan pada display LCD 16x2. untuk listing program nya dibawah ini :


$regfile = "m32def.dat"
$crystal = 12000000

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

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim Dataadc As Word

Cls
Do

Dataadc = Getadc(0)
Locate 1 , 1
Lcd "Tes Nilai Adc"
Waitms 100
Locate 2 , 1
Lcd "Data ADC=" ; Dataadc

Loop

Akses LCD 16x2 dan ADC dengan Bascom AVR, penjelasan nya :


Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
pada baris ini digunakan untuk menghubungkan LCD ke port mikrokontroler


Config Lcdbus = 4        : baris ini digunakan untuk mendeklarasikan pin LCD yang tak terpakai
Config Lcd = 16 * 2     : baris ini digunakan untuk mendeklarasikan LCD yang dipakai yaitu 16X2
Cursor Off                    : menonaktifkan cursor pada LCD



Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Adc= single merupakan mode yang digunakan yaitu single. Prescaler = Auto, Sebuah konstanta numerik untuk pembagi jam, Gunakan AUTO untuk membiarkan kompilator menghasilkan nilai terbaik tergantung pada XTAL, hehee begitu penjelasan dalam index bascom AVR
start adc yang berarti memulai adc.


Dataadc = Getadc(0), baris ini merupakan pemanggilan nilai adc dari channel tertentu, dalam baris ini menggunakan chanel 0. dengan variabel dataadc yang dedeklarasikan sebagai WORD. untuk penjelasan mengenai tipe data dari Bascom AVR dapat dilihat disini


Locate 1 , 1                             : menampilkan karakter di lcd pada, baris 1 dan kolom 1
Lcd "Tes Nilai Adc"                 : menampilkan tulisan "Tes Nilai Adc"
Waitms 100                             : delay 100 ms
Locate 2 , 1                             : menampilkan karakter di lcd pada baris 2 kolom 1
Lcd "Data ADC=" ; Dataadc   : menampilkan data adc

Nahh, sekian dulu nih artikel Akses LCD 16x2 dan ADC dengan Bascom AVR . semoga bermanfaat dan mohon maaf apabila ada yang salah, dan mohon koreksi nya, heheehee


Site Search