Archive for Mei, 2010

Sistem Minimum AVR

Mei 23, 2010

Download Skematik

Kompas Magnetik

Mei 19, 2010
Kompas merupakan alat untuk navigasi untuk penunjuk arah, dalam blog ini menyajikan kompas magnetik sebagai penunjuk arah yang biasa di gunakan pada robot KRCI sebagai navigasi robot pada arah mana. Penggunaan kompas CMPS03 menggunakan jalur I2C. Mikrokontroller yang saya gunakan adalah AVR ATmega16 dan bahasa C.

Beberapa komponen saya tambahkan dalam kompas ini untuk komunikasi kompas dengan mikrokontroller AVR ATmega16.
modul kompas membutuhkan tegangan 5 V pada nominal 15mA karena menggunakan I2C kita menggunakan 5 jalur sajah yaitu :

  1. VCC + 5 V pada pin 1
  2. SCL dengan Full_Up resistor 10 K
  3. SDA dengan pull_Up resistor 10 K
  4. Calibrate pada PIN 6 yang terhubung swicth tactile
  5. Ground pada PIN9

untuk melihat hasil pembacaan di tampilkan pada LCD 2×16 carakter pada PORT C.
nah jika sudah terhubung semuanya coba masukan program berikut ini :

#include <mega16.h)
// I2C Bus functions
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h)
// LM75 Temperature Sensor functions
#include <lm75.h)
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h

void convertToLCDStr(unsigned char inByte)
{
unsigned char data;

data = inByte / 100;
data+=0x30;
lcd_putchar(data);

inByte%=100;
data = inByte / 10;
data+=0x30;
lcd_putchar(data);

inByte%=10;
data = inByte + 0x30;
lcd_putchar(data);
}

void main(void)
{
// I2C Bus initialization
i2c_init();

// LCD module initialization
lcd_init(16);

while (1)
{

lcd_gotoxy(0,0);
i2c_start();
i2c_write(0xC0); // alamat CMPS03 & operasi tulis
i2c_write(1); // register 1 yang ingin diakses untuk bearing byte
i2c_start();
i2c_write(0xC1); // alamat CMPS03 & operasi baca
convertToLCDStr(i2c_read(0)); // baca tanpa sinyal ACK
i2c_stop();
};
}

Compile download kan ke Mikro AVR ATmega16 anda, lihat hasil yang di tampilkan pada LCD anda jika kurang cocok anda calibrate kompas dengan cara :
jalibarasi CMPS03, agar benar sesuai dengan sudut data sheet maka arahkan pada utara

Tekan swcth tictale dengan 4 arah yaitu Utara, Timur, selatan dan barat. masing dapat 1 kali swcith sajah. hasil kalibrasi akan di simpan di EEPROM kompas itu sendiri.
begitulah kira untuk bahasan sederhana kali ini untuk aplikasi pada robot agar lebih kompleks lagi akan saya bahas berikutnya.

ADC 

Mei 19, 2010

(ADC) Analog Digital Converter
kita langsung aja ya kita bahas tentang ADC dengan aplikasinya kalo mau tiori” di browsing aja di gogle banyak koq. sekarang kita akan membuat ADC pake potensio aja dengan tampilan LCD.

Nah kalo udah di buat kayak gini hubungkan dech di PORT ADC nya si mikro. kalo udah kita buat programnya pake codevision AVR :

1. Setting ADC nya dulu

Setting di CV AVR kayak gini ya..
trus kita buat tampilan LCD di PORTC aja seperti ini :

nah kalo udah kedua tab itu di setting kita buat program nya alias nambahin doank sih..soalnya CV avr udah nyediain library yang cukup buat kita tambahin dikit doang :
begini kira-kira prgramnya

/********************************
//ADC pake Potensio
*********************************/
#include (mega16.h> // tandanya buka kurungnya di ganti ya.. jadi < #include (stdio.h>
#include (delay.h>

#asm
.equ __LCD_port=0x15
#endasm
#include (lcd.h>

#define ADC_VREF_TYPE 0x00
unsigned int read_adc (unsigned char adc_input)
{
ADMUX=adc_input|ADC_AREF_TYPE;
ADCSRA|=0x40;
while ((ADCSRA & 0x01) = =0);
ADCSRA|=0x01;
return
}
void main (void)
{
char lcd_buffer[33]
float Technokit;
unsigned int temp;
ACSR=0x81;
SFIOR=0x00;
ADMUX=ADC_AREF_TYPE;
ADCSRA=0x87;
lcd_init (16);

while (1)

{
temp=read_adc(0);
Technokit=((float)temp*0,000488 // perhitungan dengan kristal yang di hunakan
lcd_gotoxy(0,0);
sprintf(lcd_buffer,”Analog:%0.001f”,Technokit”);
lcd_puts(lcd_buffer);
temp=read_adc(0);
Technokit=((float) temp*1);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,”DIGITAL:%f”,Technokit”);
lcd_puts(lcd_buffer);
delay_ms(1000);
};
}

selesai dech, kalo gitu coba compile trus downloadkan dech ke mikro bis tu coba di puter-puter potensio tadi yang udah ke hubung ke mikro dan VCC 5 volt.
jadi program itu kita pake 8 bit nah kalo ada kita inputkan tegangan 0 volt makan hasil konversinya menjadi 0 sajah nah kalo pake tegangan 5 volt maka akan menjadi 1023, sebenernya sih 1024. tapi kan kita ngitungnya dari 0 – 1023.. gitu ceritanya.