Sabtu, 08 Juni 2013

Menampilkan data dengan 7 segment



Bingung nch mau ngapain minggu-minggu menunggu seminar skripsi akhirnya teringat ada temen kampus yang tanya tentang 7 segment mulai dech membongkar file-file di komputer tentang 7 segment yang udah sy buat dulu. ok sebelumnya kita harus tahu dulu apa itu seven segment. Ringkasnya 7 segment merupakan komponen yang berfungsi sebagai penampil karakter angka dan karakter huruf. 7 segment tersusun atas led-led. lihat gambar dibawah ini untuk lebih jelasnya.

Dari gambar diatas ada 2 jenis 7 segment yaitu common cathode dan common anode. perbedaanya cuma cara  menghidupkan 7 segment tersebut. Untuk common cathode pin kaki a b c d e f g harus diberi tegangan vcc dan pin gnd di hubungkan ke ground agar 7 segment menyala. Sedangkan untuk common anode pin a b c d e f g harus dihubungkan ke ground dan pin vcc di hubungkan ke vcc agar 7 segment menyala (lihat gambar diatas).


1. Project 1 (Menampilkan angka 0 - 9) 

Pada project 1 ini kita mengendalikan 7 segment ini menggunakan mikrokontroller. Buat rangkaian berikut ini bisa langsung menggunakan real mikrokontroller atau menggunakan proteus sebagai simulasi.



Komponen yang dipakai ATmega 8535 dan 7 segment jenis common cathode. pin a b c d e f g pada 7 segment dihubungkan di PORTC sedangkan pin gnd dihubungkan di PORTD 3 (port yang dipakai ini bisa anda rubah sesuai kebutuhan).

Selanjunya kita akan menuliskan angka 0 - 9 pada 7 segment dengan 7 segment berjumlah satu. Bagaimana caranya..? lihat skematik isi dari 7 segment pada gambar diatas. Untuk angka 1 maka yang perlu dihidupkan adalah pin b dan c pada 7 segment sehingga di mikrokontroller kita perlu mengeset PORTB 1 dan PORT B 2 dengan nilai 1 dan PORT D3 dengan nilai 0 ( PORTD 3 sebagai grn maka diberi nilai 0) , angka 2 yang perlu dihidupkan adalah pin a b  g e d pada 7 segment. demikian seterusnya sampai angka 9. program di CAVR sebagai berikut :
Spoiler :
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 07/01/2013
Author  : Bayu Sasongko
Company : Teknik Elektro UNILA
Comments: 


Chip type               : ATmega8535
Program type            : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 128
*****************************************************/

#include <mega8535.h>
#include <delay.h>


void main(void)
{
PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0xFF;

while (1)
      {
        PORTC=0b00111111; //angka 0  
        delay_ms(100);
        PORTC=0b00000110; // angka 1
        delay_ms(100);
        PORTC=0b01011011; //angka 2
        delay_ms(100);
        PORTC=0b01001111; // angka 3
        delay_ms(100);
        PORTC=0b01100110; //angka 4
        delay_ms(100);
        PORTC=0b01101101; // angka 5
        delay_ms(100);
        PORTC=0b01111101; //angka 6
        delay_ms(100);
        PORTC=0b00000111; // angka 7
        delay_ms(100);
        PORTC=0b01111111; //angka 8
        delay_ms(100);
        PORTC=0b01101111; // angka 9
        delay_ms(100);
      }
}


Tampilannya


download project coding dan proteus disini
(login dulu ke account google anda untuk mendownload)

2. Project 2 (menampilkan angka sampai ribuan)

Pada project ini kita menggunakan 4 buah 7 segment yang mampung menampilkan nilai pada variabel tertentu. Buat rangkaian seperti dibawah ini :


Dari gambar diatas terlihat bahwa 7 segment terhubung paralel antara yang satu dengan yang lain. Dalam menampilkan data dengan susunan 7 segment seperti ini kita perlu menggunakan teknik scaning. apa itu teknik scaning...? kita kembali dulu pada project 1, pada project tersebut seandainya kita ingin menambah 7 segment tapi dilain port misal PORTD memang bisa tetapi hal itu tentu sangat boros. Bayangkan seandainya kita perlu menambah 4 seven seven segment, berapa port banyaknya yang kita butuhkan...? tentu banyak khan....karena 1 seven segment membutukan 8 PORT pada mikrokontroller. Maka untuk menghemat PORT kita menggunakan teknik scaning ini. Pada teknik ini sebenarnya yang kita kendalikan adalah kolom mana yang hidup. Ok lihat gambar diatas misal kita ingin menampilkan nilai 4657 maka pertama-tama kita kirimkan nilai 7 pada PORTC, maka dapat dipastikan bahwa keempat seven segment menunjukkan angka 7. namun yang kita inginkan adalah nilai satuannya maka kita kendalikan kolomnya yaitu dengan mengatur PORTD. Lihat seven segment yang kita ingin hidupkan hanya yang paling kanan (satuan) maka PORTD0 kita beri nilai 0 dan PORTD1,PORTD2,PORTD3 diberi angka 1 sehingga hanya seven segment yang paling kanan yang hidup. Begitu seterusnya untu seven segment yang menunjukkan angka puluhan maka PORTD1 diberii nilai 0 sedangkan PORTD yang lain 1. Untuk coding lengkapnya silahkan lihat dibawah ini :
Spoiler :
#include  <mega8535.h>
#include  <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp;

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
data=4657;

PORTA=0x00;
DDRA=0xFF;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

while (1)
      {
      ambil_data();
      tampilkan_seven_segment();             
      };
}


variabel data merupakan variable yang nilainya akan ditampilkan ke 7 segment. Silahkan anda coba ubah-ubah sesuai kebutuhan. Berikut tampilan screenshootnya:
download coding lengkapnya disini (Login ke account google anda terlebih dahulu sebelum men-downlod).
3. Project 3 (Counter up dan Counter down)

Sekarang rangkaian kita modif untuk counter up dan counter down. Tambah switch push button misal pada PORTB. Rubah DDRB menjadi intput (DDRB=0x00;) aktifkan internal pull up (PORTB=0xFF;). buat rangkaian seperti dibawah ini :


programnya sebagai berikut :

Spoiler :
#include  <mega8535.h>
#include  <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp,x;   

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
data=0;

PORTA=0xFF;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

while (1)
      {
      for(x=0;x<50;x++)   
        {
        ambil_data();
        tampilkan_seven_segment(); 
        }  
       
      if (PINB.0==0)
        {
        data++;
        if (data>9999)
            {
            data=0;
            }
        } 
      
      if (PINB.1==0)
        {
        data--;
        if (data<=0)
            {
            data=0;
            }
        }
           
      };
}

Screenshootnya seperti dibawah ini:



Download projectnya lengkap disini.

4. Project 4 (Menampilkan data ADC)

Selanjutnya kita modif rangkaian diatas untuk menampilkan data ADC ( analog to digital konverter). Dalam percobaan ini menggunakan potensiometer untuk mendapatkan tegangan output yang akan dirubah menjadi nilai digital. Buat rangkaian seperti dibawah ini :


Programnya sebagai berikut :


Spoiler :
#include  <mega8535.h>
#include  <delay.h>
unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp,x; 

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int 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);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}  

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
PORTA=0xFF;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;

while (1)
      {
      
      data=read_adc(0);
      
      for(x=0;x<50;x++)   
        {
        ambil_data();
        tampilkan_seven_segment(); 
        }  
      };
}

Screenshoot hasilnya sebagai berikut:


Download Poject lengkap disini.

5. Project 5 (Menampilkan data sensor suhu LM35)

Setelah kita dapat menampilkan data ADC, sekarang kita naik lagi yaitu membuat termometer digital dengan sensor suhu LM35 dan menampilkannya dengan seven segment. Buat rangkaian seperti dibawah ini:


Programnya sebagai berikut :

Spoiler :
#include  <mega8535.h>
#include  <delay.h>

unsigned char angka[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int satuan,puluhan,ratusan,ribuan,data,data_temp,x;

#define ADC_VREF_TYPE 0x40

// Read the AD conversion result
unsigned int 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);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}  

void ambil_data()
{
data_temp=data;
satuan=data_temp%10;
puluhan=(data_temp/10)%10;
ratusan=(data_temp/100)%10;
ribuan=(data_temp/1000)%10; 
}

void tampilkan_seven_segment()
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[satuan];
delay_ms(1);
           
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTC=angka[puluhan];
delay_ms(1);
             
PORTD.0=1;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTC=angka[ratusan];
delay_ms(1);
            
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;;
PORTC=angka[ribuan];
delay_ms(1); 
}

void main(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0xFF;
DDRD=0xFF;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;

while (1)
      {
                
      data=read_adc(0)*0.488;

      for(x=0;x<100;x++)   
        {
        ambil_data();
        tampilkan_seven_segment(); 
        }  
      
      };
}

Hasilnya seperti dibawah ini :


Download project lengkap disini.

Membuat Pencuri Energi (Thief Joule)


Coba anda hubungkan baterai 1,5 V ke LED (bisa LED biasa atau LED yang super bright), kira-kira LED tadi menyala tidak.....? pasti jawabannya tidak menyala, kenapa? karena voltase baterai belum mampu mendrive tegangan LED. Lantas gimana caranya kita bisa menghidupkan lampu LED tadi hanya dengan 1 baterai 1,5 V....?
Tennang hal itu dapat kita atasi dengan rangkaian joule thief. Joule thief, apa itu ...? Joule thief bekerja seolah-olah kita mampu "merampok" energi dari baterai sehingga kita mendapatkan energi yang besar hanya dari baterai 1,5 V sehingga mampu membuat LED tadi hidup. OK langsung aja kita persiapkan alat-alatnya yaitu:
1. Resistor 1K
2. LED (super bright)
3. Transistor NPN (untuk jenisnya bisa apa aja misal 2N3904
4. Ferrid bundar ( buka lampu hemat energi yang sudah rusak, lihat didalamnya ada ferid berbentuk lingkaran, ambil juga kabel yang melingkarinya).
5. Kabel secukupnya atau bisa menggunakan project board
Rangkaian seperti gambar berikut :
Untuk Kumparan lihat gambar dibawah ini :





Setelah selesai, hubungkan rangkaian dengan baterai 1,5 V dan TAAADAAA.....lampu LED sekarang dapat hidup. Rangkaian diatas saya buat 2 dan ternyata mampu menyalakan 2 LED dengan sangat terang. silahkan anda kreasikan sendiri, anda bisa membuatnya untuk lampu emergency yang hemat.

Membuat Sistem Minimum Atmega8535



Apa itu sistem minimun ???
sistem minimum adalah rangkaian minimal dimana chip mikrokontroler dapat bekerja. Mikrokontroler Atmega8535 telah dilengapi dengan osilator internal, sehingga tidak diperlukan kristal atau resonator ekternal untuk sumber clock CPU.
Namun osilator ini maksimal 8Mhz jadi saya sarankan untuk tetap memakai kristal eksternal. Osilator internal oleh pabriknya disetting 1 Mhz , dan untuk merubahnya kita perlu merubah setingan Fuse bit, untuk pengaturan fuse bit perlu berhati-hati, sebab pengaturan ini begitu rawan  karena bila salah menyetingannya bisa menyebabkan mikrokontroler rusak, saya telah merusakkan 1 mikrokontroler. 


Sistem minimum AVR sangat sederhana dimana hanya menghubungkan VCC dan AVCC ke +5V dan GND dan AGND ke ground serta pin reset tidak dihubungkan apa-apa (diambangkan) . Chip akan reset jika tegangan nol atau pin RST dipaksa nol. ini merupakan sistem minimum tanpa memakai kristal. Untuk yang memakai kristal rangkaian diatas ditambah kristal pada pin XTAL1 dan XTAL2. Berikut sistem minimum yang memakai kristal(saya sarankan membuat yang pakai kristal)



rangkain diatas merupakan sistem minimum yang dipakai untuk mengendalikan LED. rangkaian diatas tinggal di trace bisa menggunakan deeptrace, eagle, proteus, atau program lainnya yang anda kuasai. Bagi yang malas bisa download trace buatan saya, softrware yang saya pake deeptrace 2009, silahkan download disini 

downloadernya dapat menggunakan downloader yang saya posting sebelumnya
berikut tampilan sistem minimum dalam deeptrace


Untuk prgram dan cara pengisian program saya jelaskan pada postingan berikutnya.

Menampilkan data dari mikrokontroler ke LCD 2x16


Adapun keterangan kaki LCD 2x16 yaitu sebagai berikut:




Untuk hubungan ke mikrokontroler, dalam hal ini kita menggunakan mikrokontroler Atmega8535, kita bisa menggunakan semua PORT baik PORT A, PORTB, PORTC maupun PORTD. Sekarang kita akan menghubungkan LCD ini ke PORTC dari mikrokontroler, berikut ini gambar koneksi antara mikro ke LCD 2x16

Disini kita menggunakan koneksi data 4 bit antara LCD dan mikro. Setelah selesai, membuat rangkaian diatas selanjutnya code program. kita terlebih dahulu membuat file header-nya. berikut file headernya. simpan dengan nama file lcd.h

/* ================================================================

 nama file = lcd.h
 pembuat = Bayu Sasongko, teknik elektro 2008
 deskripsi = file header LCD 4 bit

 file header ini digunakan untuk menampilkan karakter
 ke dalam lcd. copykan file lcd.c dan lcd.h ke dalam
 folder tempat proyek anda berada. untuk konektor LCD
 ke mikrokontroler ikuti aturan berikut ini:

  
  PIN LCD   PIN MIKRO

R/W  (5)   - Ground
VEE   (3)   -  Vcc
   
  RS   (4)     - 0
  EN  (6)  - 1  
  D4  (11) - 4  
  D5 (12) - 5  
  D6  (13) - 6 
  D7 (14) - 7  



  pin R/W hubungkan saja ke ground, karena hanya menggunakan mode
  write saja.
================================================================
*/

#define LCD_PORT PORTC // PORT yang digunakan untuk data
#define LCD_DDR DDRC

// bit used (low(D3-D0) or high nibble(D7-D4)
#define HIGH_NIBBLE // uncomment this if low nibble pin used

#define LCD_RS_PORT PORTC // control RS PORT pin

#define LCD_RS_DDR DDRC // control RS DDR pin

#define RS 0 // RS Pin


#define LCD_E_PORT PORTC // control E PORT pin

#define LCD_E_DDR DDRC // control E DDR pin

#define E 1 // E Pin



void lcd_init (void); // inisialisasi LCD

void goto_xy (uint8_t row,uint8_t column); // koordinat tempat karakter

void clrscr (void); // membersihkan display



Setelah itu kita juga perlu membuat file lcd.c, berikut ini codenya: 

#include <avr/io.h>
#include <stdio.h>
#include "lcd.h"

// used for printf operation
static int lcd_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(lcd_putchar, NULL,
                                             _FDEV_SETUP_WRITE);
// delay
void delay_us(uint8_t us);

void clock_e (void)
{
LCD_E_PORT |= (1<<E);
delay_us(5);
LCD_E_PORT &= ~(1<<E);
delay_us(3);
}

void write_command(uint8_t command)
{
// clear RS pin
LCD_RS_PORT &= ~(1<<RS);
#ifdef HIGH_NIBBLE
LCD_PORT = (LCD_PORT&0x0f)|(command&0xf0);
clock_e();
LCD_PORT = (LCD_PORT&0x0f)|((command&0x0f)<<4);
clock_e();
#else
LCD_PORT = (LCD_PORT&0xf0)|((command&0xf0)>>4);
clock_e();
LCD_PORT = (LCD_PORT&0xf0)|(command&0x0f);
clock_e();
#endif
uint8_t i;
for(i=0;i<20;i++)
delay_us(100);
}

void lcd_init (void)
{
uint8_t i;
// delay 15 ms for LCD to power up
for(i=0;i<150;i++)
delay_us(100);
// set all data and control port as output
#ifdef HIGH_NIBBLE
LCD_DDR |= 0xf0;
#else
LCD_DDR |= 0x0f;
#endif
LCD_RS_DDR |= (1<<RS);
LCD_E_DDR |= (1<<E);
// clear RS pin
LCD_RS_PORT &= ~(1<<RS);

// 4 bit mode write squence
#ifdef HIGH_NIBBLE
LCD_PORT = (LCD_PORT&0x0f)|0x30;
#else
LCD_PORT = (LCD_PORT&0xf0)|0x03;
#endif
clock_e();
// 4.1 ms delay
for(i=0;i<41;i++)
delay_us(100);
clock_e();
// 100 delay
delay_us(100);
clock_e();
// 40 us delay
delay_us(40);
// 4 bit mode setting
// 4 bit 2 line 5 X 7 dot matrix
write_command(0x28);
// increment cursor after write byte
write_command(0x06);
// display on cursor off
write_command(0x0C);
clrscr ();
// set function for printf
stdout = &mystdout;
}

void goto_xy(uint8_t row,uint8_t column)
{
if (row == 1)
write_command (0x80 + column - 1);
else
write_command (0xC0 + column - 1);
}

void clrscr (void)
{
write_command(0x01);
}

static int lcd_putchar(char c, FILE *stream)
{
// set RS pin
LCD_RS_PORT |= (1<<RS);
#ifdef HIGH_NIBBLE
LCD_PORT = (LCD_PORT&0x0f)|(c&0xf0);
clock_e();
LCD_PORT = (LCD_PORT&0x0f)|((c&0x0f)<<4);
clock_e();
#else
LCD_PORT = (LCD_PORT&0xf0)|((c&0xf0)>>4);
clock_e();
LCD_PORT = (LCD_PORT&0xf0)|(c&0x0f);
clock_e();
#endif
// 2 ms delay
uint8_t i;
for(i=0;i<20;i++)
delay_us(100);
return 0;
}

void delay_us(uint8_t us)
{
TCNT0 = 257-us;
TCCR0 |= (1<<CS01);
loop_until_bit_is_set(TIFR,TOV0);
TIFR |= (1<<TOV0);
TCCR0 &= ~(1<<CS01);
}


atau silahkan download file lcd.h dan file lcd.c disini . kalau anda ingin merubah PORT nya misalnya mau ke PORTA ganti saja file lcd.h menjadi PORTA. Setelah file lcd.h dan lcd.c sudah jadi maka selanjutnya kita perlu me-load file tadi ke program avr studio


Selanjutnya di program utama kita perlu meng-include kan file header lcd.h kita ladi. kurang lebih begini tampilan program penampil teks ke LCD

Membuat USB Downloader untuk Mikrokontroler AVR Atmega8/16/32/8535



Setelah pada  postingan sebelumnya yaitu membuat sendiri downloader AVR atmega8/16/32/8535, sekarang saatnya kita membuat downloader yang menggunakan USB. Downloader yang menggunakan port paralel ( yang pinnya 25 buah) memang hanya membutuhan sedikit biaya, namun sekarang kebanyakan orang sudah beralih ke laptop dimana port paralel sudah sudah jarang ditemui lagi kecuali untuk laptop versi lama , bahkan
ada beberapa komputer pc yang saya temui sudah tidak port paralelnya lagi. Alternatifnya yaitu menggunakan port serial (port yang jumlah pinnya 9, sering disebut db9) atau menggunakan port USB. Port serial pun saya rasa juga sudah mulai jarang ada pada laptop-laptop terbaru, maka langsung aja kita membuat downloader menggunakan port yang universal yaitu port USB. USB downloader dibuat dengan komponen utama yaitu atmega8,Sebelumnya membuatnya sediakan berikut ini:

Software:
  • Deeptrace ( untuk membuat pcb atau kalau malas buat pcb pake pcb bolong)
  • PonyProg ( untuk mendownload program)
  • Downloader yang menggunakan port paralel
  • Download Drivernya disini
Komponen elektronik
  1. AVR atmega8
  2. kristal 12 MHz
  3. kapasitor 22pF
  4. konektor USB dan kabel USB
  5. soket IC 14pin 2 buah
  6. resistor 10k, 68ohm atau 100 ohm, 2k2, 1K
  7. elko 10 uF/16 V dan kapasitor 100nF
  8. LED 3 buah
  9. housing 5 pin dan 4 pin
  10. Dioda zener 3.6 volt 2 buah
Rangkai komponen diatas sesuai rangkain berikut ini:
rangkaian di pcbnya:


C1, C2       =  22pF        
C3              = 10µF          
C4              = 100nF       
D1, D2       =  Z-Diode 3V9           
IC1             =  ATMEGA8                        
LED1          =  LED               
LED2          =  LED              
Q1              = 12Mhz   
R1, R2        = 68 Ohm       
R3              = 2,2 kOhm        
R4, R5        = 470 Ohm          
R6              = 10 kOhm             
R7              = 1 kOhm                     
X1              = USB     

Rangkai komponen elektronik sessuai rangkaian diatas, setelah selesai program terlebih dahulu Atmega8 dengan program yang  didownload disini,  menggunakan downloader paralell. Karena menggunakan kristal 12 Mhz ganti setinga fuse bit Atmega8nya seperti berikut:


Jika men-downloadnya sudah, pasangkan ATMEGA 8 ke soket, kemudian masukan tancapkan kabel usb ke komputer. Jika benar akan muncul tampilan seperti ini.
Sebentar lagi akan minta driver, next next next aja, kemudian pilih folder tempat win-driver berada.


Kemudian tinggal menunggu finish.Jika sudah finish, lepas kembali kabel usbnya,sesudah itu, masukan kembali kabel usb. Ketika dimasukan akan ada suara, seperti suara ketika kita memasukkan flash disk. Lihat led, led ada yang hidup (led power) dan ada yang mati (led untuk tanda busy).Sekarang USB downloader sudah jadi langka selanjutnya kita memerlukan software untuk menggunakan downloader ini, salah satu yang bisa digunakan yaitu Khazama, khazama saya pilih karena software ini memiliki ukuran yang kecil, dan kecepatan ketika memprogram mikrokontroler lebih tinggi daripada software yang lain seperti extreme burner avr, ataupun avrdude. Anda pun bisa menggunakan semua software tersebut untuk downloader USB ini. Untuk mendownload Khazama klik disini. Berikut Tampilan khazama




Menurut pengalaman saya mikrokontroler yang akan kita program menggunakan downloader USB ini harus menggunakan kristal external (misalnya kristal 12 Mhz) dan fuse bitnya diatur agar mikrokontroler mengunakan external clock (pengaturannya sama seperti diatas tadi). Ketika saya coba tanpa memkai kristal, USB downloader ini ternyata tidak bisa dipakai. Sedangkan untuk pengaturan fuse bit ini dilakukan dengan menggunakan downloader paralel menggunakan software ponyprog. 

Cara menggunakannya:
  • Hubungkan USB downloader yang kita buat tadi kekomputer
  • Hubungkan downloader dengan mikrokontroler
  • Buka khazama, pilih file, klik load flash file to buffer, 
  • pilih file hex yang akan diisikan ke mikro, 
  • setelah itu klik command dan pilih write flash buffer to chip, jika berhasil akan muncul seperti ini:


Jika mikrokontroler yang akan didownload menggunakan usb downloader ini tanpa memakai kristal, terlebih dahulu ubah setingan fuse bit pada mikrokontroler target dengan setingan fuse bit seperti dibawah ini



Selamat Berkreasi .....
get this widget here

LinkWithin

Related Posts Plugin for WordPress, Blogger...
Total Posts: 49
Total Comments: 0
get this
get this widget here
\
leo candra Puisi
by: leo coolz


SAHABAT

    Sahabat
    Walau kini kita tak slalu bersama
    Aku ingin kita selalu dekat

      Sahabat
      Walau kini kita jauh
      Aku ingin kita saling menghubungi

        Sahabat
        Kau tau betapa berharganya dirimu?
        Kau lebih berharga dari sebongkah emas

    Sahabat
    Kau tau kenapa?
    Karena mencari seorang sahabat seperti kau bukanlah hal yang gampang

      Sahabat
      Kini ku ucapkan “Aku akan selalu menjadi sahabatmu”
      Kini kau ucap juga di sana

By: leo candra situmorang


Read more...
Free Music Online
Free Music Online

free music at divine-music.info
eakNewLine]> Sumber : http://rahman-ciblog.blogspot.com/2013/05/cara-membuatmemasang-burung-twitter.html#ixzz2WGSrkig3
Sumber : http://rahman-ciblog.blogspot.com/2013/05/cara-membuat-komentar-admin-berbeda.html#ixzz2WGTOrIEB
Sumber: http://leo-coolz.blogspot.com/2013/05/cara-membuat-dan-mengubah-halaman-blog.html#ixzz2WFvvNdnz
Catatan: Sumber : http://leo-coolz.blogspot.com/2013/04/cara-membuatmemasang-kotak-like-fb-dan.html#ixzz2WGXaRQWU

Sumber : http://rahman-ciblog.blogspot.com/2013/04/cara-membuat-judul-blog-bergerak-dan.html#ixzz2WGUTweln

Make your own

English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified
Loading TOC. Please wait....


Loading TOC. Please wait....


Sumber : http://rahman-ciblog.blogspot.com/2013/06/cara-memasang-google-translate-di-blog.html#ixzz2WGRpBtI2

apa yang membuat anda terkesan setelah melihat http://leo-coolz.blogspot.com tinggalkan komentar anda !!!!!!

Leo Coolz Gembel © 2008 Template by:
SkinCorner
k
t
.
n
a
h
k
i
t
m
I
.
w
w
w
k
t
.
n
a
h
k
i
t
m
I
.
w
w
w
z
l
o
o
c
a
r
d
n
a
c
o
e
l