Selasa, 09 Agustus 2011

Kit Pemancar FM 1 Transistor Untuk Pemula

Mau belajar bikin pemancar radio FM sederhana?
Apakah mengalami kesulitan karena bahan-bahan susah dicari?
Mungkin kami bisa bantu kamu menyediakan kompenennya...



KABAR BARU ..TERSEDIA JUGA KIT PEMANCAR AM dengan IC 555

Pemancar FM atau FM transmitter untuk player mp3/mmc umumnya dijual murah, terutama produk dari china..tapi kalau bikin sendiri kenapa tidak? Jika merakit sendiri akan mengasah ketrampilan solder menyolder buat kalian yang baru mengenal dunia elektronika.

Dipasaran ada juga yang menjual KIT pemancar dengan PCB yang sudah jadi , tetapi tidak seru ahh..mending bikin yang seperti ini, lebih klasik dan terlihat sangar! Perlu diketahui jika memakai KIT PCB yang tinggal solder maka kamu akan melewati ilmu "membaca gambar skematik". Tentunya akan mengurangi proses penyerapan ilmu elektronika.

Paket KIT terdiri dari :

1. PCB POLOS 5x10 cm dan PCB lobang 2x3 cm

http://www.blind-summit.co.uk/wp-content/uploads/2006/06/make-your-own-pcb-boards.jpg

PCB polos sebagai "groundplane" atau dasar ground/pentanahan untuk mengurangi interferensi/gangguan, sedangkan PCB lobang untuk menempatkan komponen. PCB lobang akan diletakkan diatas PCB polos

2. Transistor NPN  general purpose seperti 2N3904, 2N2222 dsb

405-454-home.jpg (129×129)

Transistor sebagai penguat sinyal oscillator

3. Kapasitor 10nF, 1uF, 10pF

capacitors.jpg (434×234)
berfungsi sebagai filter sinyal audio dari input

4. Resistor 10K, 27K dan 470 ohm

http://electronicrepairguide.com/four%20band%20resistor.jpg
digunakan untuk penahan arus listrik, dan jika digabung dengan kapasitor dapat berfungsi sebagai osilator

5. Kasitor Trimmer 20pF

http://shop.rabtron.co.za/catalog/images/trimcap.jpg
nilai kapasitansinya dapat diubah-ubah, cocok sebagai penala frekuensi yg akan dipancarkan

6. Lilitan kawat email (induktor)

http://www1.picturepush.com/photo/a/6275074/220/6275074.jpg

Lilitan induktor jika digabungkan dengan kapasitor akan menghasilkan resonansi frekuensi. Lilitan ini digunakan bersama-sama kapasitor untuk menghasilkan frekuensi FM.

7. Konektor Baterai + Baterai 9V

http://www.superdroidrobots.com/images/TE-086-000.jpghttp://www.blasterstool.com/images/products/detail/energizer_9v__67602_std.jpg

8. Skematik & Petunjuk Perakitan


http://anarchy.translocal.jp/radio/micro/howtosimplestx_logo.jpg
Image Hosted by PicturePush - Photo Sharing



Harga



Murah saja ...75 Ribu (belum ongkos kirim)


Cara Transaksi


Melalui Transfer rek Mandiri / BCA (no rek via PM/sms )

Pengiriman Lewat JNE atau Paket Pos

HUBUNGI KAMI


HP: 085733889569 , 087882045949
Mail : ahocool@gmail.com
ym :ahokleng
fb: ahocool1@gmail.com
twiter: @ahocool



Jika Kamu sukses merakit, bisa ngerjain orang serumah...karena pesawat TV bisa keluar suara MP3 dari pemancar yang kamu rakit


Senin, 08 Agustus 2011

PEMANCAR RADIO FM 1 TRANSISTOR

Kali ini kita selingkuh ke Analog dulu yuk , kita bikin Pemancar radio FM paling sederhana. Di inspirasi dari pertanyaan seorang anak SMA yg gagal meniru skematik pemancar FM di sebuah blog, kemudian dia meminta bantuanku untuk memperbaiki. Hasil googling dapet video youtube yg menuntunku menuju website jepang http://anarchy.translocal.jp/radio/micro/

Di salah satu bagian web jadulnya ada petunjuk membuat radio FM sederhana.
Gambar skematik seperti ini :



klik disini untuk gambar skematik lebih jelas

nah..ternyata ketika ku cek di kotak komponen punyaku ada beberapa yg cocok dan yang lainnya aku bikin dengan pendekatan nilai komponen dengan menggabungkan komponen2 berbeda



dari skematik di web asli, aku lakukan beberapa penyesuaian :

- R 27 Kohm aku buat dari gabungan R 10K + R 12 K , jadi nilainya mendekati
- Kapasitor 10pF aku buat dari seri 2 kasitor 22pF, jadi nilai sekitar 11pF
- Transistor yg kupakai transistor NPN umum 2N3904, ga bagus sebenernya respon frekuensi tinggi, tapi ga masalah
- Lilitan / Kumparan dibuat dari kabel jumper atau wrap kabel yang biasanya di gunakan untuk menyambung rangkaian di PCB lubang. Lilitan dibuat dengan melilitkan kabel 4-5 loop di obeng kecil, kemudian ujung2nya diluruskan biar gampang disolder. Kumparan ini bisa dibuat dengan kabel email, kabel dinamo tamiya ato kabel balast lampu neon. Ingat ujung kabel dikupas saat menyolder karena ada lapisannya
- Kapasitor trimmer/Varco aku pake yg ukuran 20 - 50 PF , bisa juga tidak dipergunakan tapi akan kesusahan ketika tuning lilitan
- PCB yang aku gunakan PCB lobang, sedangkan aslinya menggunakan PCB polos, sehingga Ground plane yg lebar akan memperkecil interfrensi. Jadi PCB lobang aku kasi groundplane pake timah yg disolder memanjang
- Batere yg dipake 3 buah AA, jadi tegangannya 4.5 V


Setelah berkutat beberapa lama dan ga suskses, akhirnya aku pikir lebih baik menunggu sape lewat tengah malem, biar siaran radio publik pada off, dan akhirnya berhasil mancar di range 90-102 MHZ. Aku gunakan mp3 player sebagai inputan audio

Trick tuning frekuensi sebagai berikut :

- Lilitan diusahakan lebar / kerenggangan seragam, semakin lebar/renggang maka frek semakin tinggi dan sebaliknya, jika versi tanpa varco / trimmer maka penentuan frekuensi menggunakan pengaturan jarak kerenggangan lilitan. Susah bangett...
- Putar2 varco dengan obeng trimmer, jika pake obeng biasa maka akan terpengaruh tangan yg nge-ground, pilih frek yg kosong di radio penerima, putar varco pelan2 sampe suara muncul. biasanya akan terjadi offset ketika obeng dilepas, kira2 frek turun 0.6 - 1 MHz. Contoh, misal frek yg diingini 94MHZ, maka radio dipanteng frek 95Mhz ketika muter2 varco sampe suara muncul
- Antena pemancar dapat dibuat dari kabel tunggal


dari hasil pemantauan siaran dapat diterima sampe jarak 15 meter (LOS / tanpa halangan)



Kalo agan beruntung , bisa ngerjain orang serumah lho ! TV nya bisa masuk suara dari pemancar nya...seru kan ?

SELAMAT MENCOBA!


Sabtu, 06 Agustus 2011

Macam - Macam Project Elektronika yang dapat dibeli

Kami menyediakan beberapa project elektronika microcontroller atau non micro yang dapat dibeli secara langsung jadi atau dalam bentuk bahan-bahan untuk dirakit sendiri.

1. Jam Digital 4 Digit (Rp 200.000)





2. Jam Digital 6 Digit (Rp. 250.000)






3. Jam + Kalender + Teks Berjalan (Rp. 1.5 juta)




4. Teks Berjalan / Scrolling Teks (Komponen saja + Tutorial Rp. 750.000)





5. TACHOMETER / RPM (Rp. 200.000)




6. Sensor Suhu dan Kelembaban Untuk Penetas Telor / Rumah Walet / Kandang
(Rp 750.000)



7. Dan masih banyak lagi project elektronika lainnya sesuai keinginan Anda seperti : Kontrol Otomasi Rumah lewat SMS, Sistem Antrian, Pendeteksi Kondisi Rumah/ Alarm rumah, Data Logger untuk sensor, dsb


Silahkan Hubungi Kami untuk komunikasi lebih lanjut melalui :




HP: 085733889569 , 087882045949
Mail : ahocool@gmail.com
ym :ahokleng
fb: ahocool1@gmail.com
twiter: @ahocool

Jumat, 05 Agustus 2011

Bermain Dengan Dot Matrix "LoveHurt"


Siapkan bahan-bahan seperti berikut:




Attiny 2313
Led matrix 7x5
R 10K
Diode 4148
PCB lobang
Header 2x5 buat ISP programmer (optional - Bisa diprogram di Breadboard)
Socket 20 untuk ATtiny, dan soket 14 ( dibelah dua ) buat tempat Led matrix

rangkaiannya seperti ini :



Kemudian komponen dirangkai diatas PCB lobang, ato bisa juga memakai bahan lain( disesuaikan dengan tempat yg mau di pake, misale kotak hadiah , papan tripleks dan lain sebagainya)


letakkan LED MATRIX sesuai dengan SOCKET IC yg dibelah tadi


karena ga ada baterai ( punya tempatnya doang) jadi pake adaptor 3 Volt aja



Script code dalam Bahasa C /WinAvr seperti berikut:


#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h> 
#include <string.h>
#include <avr/eeprom.h>

//Progmem simpannya di FLASH memory

const char love1[] PROGMEM =
{
0b0011110,
0b0100001,
0b1000010,
0b0100001,
0b0011110

};

const char love2[] PROGMEM =
{
0b0001100,
0b0010010,
0b0100100,
0b0010010,
0b0001100

};

const char L[] PROGMEM ={0x7f, 0x7f, 0x40, 0x40, 0x20}; 
const char O[] PROGMEM ={0x3e, 0x7f, 0x41, 0x41, 0x3e};
const char V[] PROGMEM ={0x3f, 0x7e, 0x40, 0x20, 0x1f};
const char E[] PROGMEM ={0x7f, 0x7f, 0x49, 0x49, 0x41};
const char H[] PROGMEM ={0x7f, 0x7f, 0x08, 0x08, 0x7f};
const char U[] PROGMEM ={0x3f, 0x7f, 0x40, 0x40, 0x3f};
const char R[] PROGMEM ={0x7f, 0x7f, 0x11, 0x29, 0x46};
const char T[] PROGMEM ={0x03, 0x03, 0x7f, 0x03, 0x02};

const char creature[]={0x4e, 0x31, 0x35, 0x31, 0x4e}; //simpan di memory/RAM aja

uint8_t EEMEM tengkorak[5]= {0x1e, 0x75, 0x61, 0x75, 0x1e}; //simpan di EEPROM

uint8_t EEMEM pacman[5]= {0x26, 0x67, 0x67, 0x7f, 0x3e}; //simpan di EEPROM


char dotnya[5],scrolnya[7];



void tulis(uint8_t lama)
{
  uint8_t a,b;

for(a=0 ; a<lama ; a++)
{
 for(b=0 ; b<5 ; b++)   
  
{

PORTB = ~(1<<b) ;
PORTD = dotnya[b];
            _delay_ms(2);

     
}

}



}


void geser(uint8_t lama)
{
  uint8_t a,b;

 for(a=0 ; a<11 ; a++)   
  
{

  if( a<6) 
   { 
 for(b=0 ; b<(5-a) ; b++)  dotnya[b]=0x80;
              for(b=(5-a); b<5 ;b++) dotnya[b]=scrolnya[b-5+a];
 
 tulis(10);
             
             }
  else if (a==6) tulis(lama);

  else 
             {  for(b=0 ; b<11-a ; b++) dotnya[b]=scrolnya[a-5+b];
   for(b=(11-a); b<11 ;b++) dotnya[b]=0x80;  
 
                tulis(10);
              }

          }
 
   
                
     

 
}

void naik (uint8_t lama)

{
{  uint8_t q,step=0;
  
  
  while(step!=16)
   {
if( step <8)
  {   
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] << (7 - step) ; 

           tulis(10);
        } 
   
    else if (step == 8)
  {    
        tulis(lama); 

       }      
else 
  {   
         for(q=0 ; q < 5 ; q++)  dotnya[q] = scrolnya[q] >> (step - 7) ;  
          
  tulis(10);

     step++; 

}    

}




}


int main(void)
{
DDRD = 0b1111111; // untuk baris
DDRB = 0b11111;  // untuk kolom

PORTD =0; // Set all pins low
PORTB =0b11111; //matikan layar
    
    


while(1)
{
// yang ini nulis langsung 
  
     strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);
strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);
     strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);     

//yang ini pake function geser 

strncpy_P(scrolnya,L,5);
     geser(50);
strncpy_P(scrolnya,O,5);
     geser(50);
strncpy_P(scrolnya,V,5);
     geser(50);
strncpy_P(scrolnya,E,5);
     geser(50);
strncpy_P(scrolnya,H,5);
     geser(50);
strncpy_P(scrolnya,U,5);
     geser(50);
strncpy_P(scrolnya,R,5);
     geser(50);
strncpy_P(scrolnya,T,5);
     geser(50);

//geser ambil dari RAM

strncpy(scrolnya,creature,5);  //tanpa _P karena ambil di RAM
     naik(50);

//ambil dari eeprom ..mengirit..

     eeprom_read_block((void*)&scrolnya,(const void*)&tengkorak, 5); 
naik(50);

     eeprom_read_block((void*)&scrolnya,(const void*)&pacman, 5); 
geser(50);

}

return 0;
}


Script code diatas dibuat dalam mode FLASH, RAM, dan EEPROM, jadi ketika download program ke IC harus memprogram FLASH dulu kemudian dilanjutkan dengan EEPROM.
FLASH extensinya .hex sedangkan isi EEPROM extensinya .eep



hasil akhirnya seperti di video berikut :




SELAMAT MENCOBA

Kamis, 04 Agustus 2011

Hardware Pemrograman AVR

Microcontroller AVR memiliki beberapa mode programming diantaranya parallel, serial dan JTAG. Mode programming paling umum adalah mode serial melalui port SPI (serial peripheral interface). Port SPI berupa MOSI, MISO dan SCK. Untuk programming AVR diperlukan juga control terhadap port Reset dari IC AVR.

STK200/300

STK 200/300 merupakan standar programming paling mudah dari seri AVR, dimana memanfaatkan port parallel/LPT atau serial dari komputer/PC . Biasanya kita akan kesulitan menemukan port ini di PC/Laptop generasi terbaru. Secara umum rangkaian yg digunakan menggunakan komponen sederhana seperti yg dirancang oleh ponyprog berikut :

http://www.lancos.com/e2p/avrisp-siprog.gif

untuk software programmer/downloader file hex menuju chip AVR, dapat menggunakan software umum seperti avrdude, ponyprog, avrisp dsb.

STK200/300 versi USB

Beberapa developer AVR di dunia maya menggratiskan (open source) programmer berbasis usb. Hal hasil ada beberapa programmer yang bisa dibuat sendiri dengan memanfaatkan avr lain sebagai kontroller. Jangan kawatir, ada beberapa yang sudah dijual dan siap pake.

http://www.fischl.de/usbasp/bilder/usbasp_print.jpghttp://arduino-direct.com/sunshop/images/products/detail_114_TinyISP-1.jpg
UsbAsp & TinyAsp


STK500

Seri programmer yang satu ini umum digunakan pada PC yang menggunakan port USB. Keuntungan dari programmer jenis ini adalah kemudahan programming langsung dari AVR STUDIO. Jenis programmer yang paling umum dijual dipasaran seperti seri DT-HiQ buatan innovative.




Secara umum port output dari STK200/300/500 memiliki konfigurasi header ke port spi seperti berikut:

http://www.siphec.com/microcontroller/ISPheader.gif

Image Hosted by PicturePush - Photo Sharing


Jika menggunakan breadboard ada trick yg digunakan untuk menghubungkan header ISP, salah satunya dengan memasukkan kabel jumper ke header isp dan kemudian di isolasi.

Image Hosted by PicturePush - Photo Sharing

cara lain adalah dengan memakai "perantara" pin header 2x5 yg disusun di atas pcb lobang seperti gambar berikut:

Image Hosted by PicturePush - Photo Sharing
ingat : umumnya programmer mendapat suply tegangan dari luar/rangkaian yg mau diprogram
jadi jangan bingung kalo dicolokin tanpa rangkaian dan PC ga detect apa-apa


Dengan cara diatas maka menyusun port ISP ke breadboard bukan menjadi masalah lagi.

Rabu, 03 Agustus 2011

DOT MATRIX


Pada dasarnya DOT matrix adalah Display LED yg disusun sedemikian rupa sehingga untuk menghidupkan led ke (x,x) dibutuhkan kombinasi tegangan antara Pin baris & kolom








Penanda kaki nomer satu adalah tulisan marking, paling kiri no 1....paling kanan no 7
Menyebrang ke kanan atas no 8 sampai ke kiri atas itu nomer 14

Beberapa kaki memang tidak dipakai jadi dibarkan tidak terhubung



Kemudian untuk mempermudah kontrol dan menghemat pin maka diperlukan proses scanning ( biasanya kolom...) sedangkan pada baris diberikan bit sesuai huruf/karakter yang akan ditampilkan yang bersesuaian dengan posisi scanning.

Scanning untuk kolom dimaksud memberikan "1" high ( untuk common katoda) atau"0" untuk common anoda , untuk kolom lainnya diberi nilai negasi dari kolom yg diberi nilai 1 tadi .....begitu selanjutnya untuk kolom berikutnya sampai kolom terakhir dari rangkaian led matrix..dan berulang dari depan lagi. Proses ini dilakukan sangat cepat sehingga mata kita melihatnya tetap sebagai suatu karakter yg diam.

misalnya ingin menampilkan huruf A , secara umum digambarkan sebagai berikut:


0000000
0000000
0000000
0000000
0000000
0000000
0000000


dari gambar diatas logikanya seperti ini :

- saat kolom pertama ( scan kolom 1 = 1 / high/2.4 v) maka bit yg diberi pada baris berupa "1110000", sehingga jika ketemu 1 vs 1 ga ada arus mengalir, jadi LED mati, jika 1 ketemu 0 maka arus mengalir, led menyala

- begitu juga untuk kolom kedua, ketika kolom kedua diberi tegangan maka pada baris bit yg diberikan adalah "1101011"

- Dan seterusnya, ketika kolom nya mencapai ujung maka akan diulang ke kolom 1 lagi

- Untuk melakukan scanning biasanya dilakukan dengan memanfaatkan shift register, atau paling sederhana dengan menggunakan IC 4017 yang di cascade menjadi led berjalan yang panjang. (buka di sini )




Selasa, 02 Agustus 2011

Jam Sederhana Dengan Attiny 2313

Kali ini kita akan menggunakan 4 buah 7 segment untuk membuat jam sederhana


"wahhh..kalo banyak 7 segmentnya, ngabisin banyak port dong ?"



Jangan khawatir, kita pake teknik " SCANNING", artinya kita hidupin segment satu persatu, tiap segment diparalel saja...tp kita hidupin dengan memberikan switch/saklar ke common port 7segment yg dikontrol oleh port micro ..dan scanningnya cepetttt...sehingga mata kita melihatnya seperti nyala biasa aja.

jadi untuk bikin 7-segment 4 buah, diperlukan 7 port display(diparalel) + 4 port control

rangkaiannya seperti berikut :




klik untuk memperbesar gambar

Biasanya untuk display yg agak besar, kita perlu transistor untuk mengatur scanning, tp karena contoh kali ini memakai segment yg kecil maka tidak memerlukan kontrol memakai transistor ( coba pake transistor dijamin nyalanya redup !!)


Prinsip jam kali ini menggunakan prinsip DELAY, jadi tidak terlalu akurat.
Sebenernya mau seh membagi ilmu untuk jam yg super akurat, tapi ntar aja yahh..soalnya memerlukan pengetahuan mengenai "Timer/Counter" dari microcontroller

source code nya sebagai berikut :

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int jam=0, min=0, detik=0; //variable global untuk menyimpan data2 waktu

void segmen (int angka)

{

switch (angka)
{

case 0 : { PORTB =0b1000000; break ; }
case 1 : { PORTB =0b1111001; break ; }
case 2 : { PORTB =0b0100100; break ; }
case 3 : { PORTB =0b0110000; break ; }
case 4 : { PORTB =0b0011001; break ; }
case 5 : { PORTB =0b0010010; break ; }
case 6 : { PORTB =0b0000010; break ; }
case 7 : { PORTB =0b1111000; break ; }
case 8 : { PORTB =0b0000000; break ; }
case 9 : { PORTB =0b0010000; break ; }
case 10 : { PORTB =0b1111111; break ; } //blank biar ga berbayang
}


}


void clock (void) //fungsi penambah waktu

{

detik ++; //jika fungsi dipanggil maka var detik ditambah

if ( detik == 60) // tambahkan menit jika 60 detik
{ detik=0; //untuk kembali ke 0
min++;
}

if ( min == 60) // tambahkan jam jika 60 menit
{ min = 0; //untuk kembali ke 0
jam++ ;
}

if (jam == 24) jam=0; //untuk kembali ke 0


}



int main(void)

{

int counter=0; //variabel delay
int digit; //variabel digit yang ditampilkan


// Port untuk display 7 segment
DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
//port untuk scanning ( PD0-4) dan dot ":" (PD6)
DDRD |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);
//tombol untuk nambah jam/menit
DDRD &= ~(1<<PD4) & ~(1<<PD5) ;

PORTD = (1<<PD6) ; // blink untuk ":"


while(1)

{



counter++ ; //bikin delay nambah terusss

// sesuaikan nilai max counter dengan detik yg pas, tentunya tidak akurat
if(counter == 30) { counter =0 ; clock(); }

// nilai 1/2 dari counter untuk blink ":"
if(counter == 15) PORTD ^=(1<<PD6) ;

else{

segmen(10); // kasi display "mati' agar tidak berbayang

//digit pertama

digit = jam/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 2

segmen(10);
digit = jam%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 3

segmen(10);
digit = min/10;
PORTD |= (1<<PD2); // 7 segment no3 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 4

segmen(10);
digit = min%10;
PORTD |= (1<<PD3); // 7 segment no4 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);



}

if (bit_is_set(PIND, PIND4)) //tombol nambah jam
{
jam++;
if(jam==24) jam =0;
_delay_ms(100);

}

if (bit_is_set(PIND, PIND5)) //tombol nambah menit
{
min++;
if(min==60) min=0;
_delay_ms(100);

}



}

return 0;

}



jika ingin mengetest/kalibrasi delay detik, ganti salah satu digit untuk menampilkan detik

//digit pertama

digit = detik/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 2

segmen(10);
digit = detik%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);




Bagaimana dengan jam akurat ? disini nih kuncinya ...menggunakan xtal 4Mhz

/* ===================
GUNAKAN XTAL 4MHZ dan 2 buah capacitor 22pf
dan sambungkan seperti gambar di petunjuk awal
di bagian menggunakan xtal dan ubah dusebit

rangkaian tetap sama seperti jam_sederhana
hanya tambahan xtal pada kaki 4 dan 5 serta 
masing kaki xtal dihubungkan ke GND oleh
capacitor 22pf

*/

#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

int jam=0, min=0, detik=0;

void segmen (int angka)

{

  switch (angka)        
          {

case 0 :  { PORTB =0b1000000; break ; }
        case 1 :  { PORTB =0b1111001; break ; }
        case 2 :  { PORTB =0b0100100; break ; }
        case 3 :  { PORTB =0b0110000; break ; }
        case 4 :  { PORTB =0b0011001; break ; }
        case 5 :  { PORTB =0b0010010; break ; }
        case 6 :  { PORTB =0b0000010; break ; }
        case 7 :  { PORTB =0b1111000; break ; }
        case 8 :  { PORTB =0b0000000; break ; }
        case 9 :  { PORTB =0b0010000; break ; }
        case 10 : { PORTB =0b1111111; break ; }  //blank biar ga berbayang
 }


}


ISR(TIMER1_COMPA_vect) 




  detik ++;

  if ( detik == 60)  
     {  detik=0;
   min++;
}  

  if ( min == 60)
      { min = 0;
   jam++ ;   
       }
  
  if (jam == 24) jam=0;
          

}



int main(void)

{

int digit;


   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt 
   OCR1A  = 62499; //compare the CTC A 
   TCCR1B |= (1 << CS11)|(1 << CS10); // Start timer at Fcpu/64



DDRB  |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
DDRD  |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);

DDRD  &= ~(1<<PD4) & ~(1<<PD5)  ;


sei();


while(1)

{




if(TCNT1 < 31250) PORTD |=(1<<PD6) ; 
else PORTD &=~(1<<PD6) ; 


segmen(10);
digit = jam/10;
PORTD |= (1<<PD0);
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = jam%10;
PORTD |= (1<<PD1);
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = min/10;
PORTD |= (1<<PD2);
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = min%10;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);




if (bit_is_set(PIND, PIND4))
   {
     jam++;
if(jam==24) jam =0;
     _delay_ms(100);

   }

if (bit_is_set(PIND, PIND5))
   {
     min++;
if(min==60) min=0;
 _delay_ms(100);

   }



}

return 0;

}











hasilnya dapat dilihat seperti berikut :



Senin, 01 Agustus 2011

Perkenalan AVR STUDIO

Untuk melakukan programming ke Chip AVR diperlukan software developer dan juga software downloader. Sedangkan untuk Hardware downloader dibahas di posting sebelumnya. Kali ini kita gunakan software komplit buatan atmel (si empunya avr) plus WINAVR untuk coding dalam bahasa C.

Asumsikan bahwa hardware programmer sudah terpasang dan terinstall driver nya dengan benar. Pada contoh dibawah kita gunakan programmer berbasis STK500 dan Chip yg dipakai ATTiny2313.

Buka AVR studio , pastikan WINAVR sudah terinstall sehingga bisa menggunakan bahasa GCC. Pilih NEW PROJECT sehingga muncul halaman pada gambar dan pilih juga folder yang digunakan, sebab semua file akan ditempatkan di folder tersebut


pilih jenis simulator dan IC yang digunakan
standar yg digunakan adalah AVR SIMULATOR dan sesuai IC yang digunakan yaitu ATTINY2313





untuk mengecek apakah programmer & hardwarenya sudah siap digunakan, pastikan menggunakan com port yg sesuai dengan com port programmer. Kemudian lakukan langkah berikut ini:

Set frekuensi programmer ke frekuensi yang 1/4 lebih rendah dari frek oscillator dari avr.
Dari pabriknya, AVR ( kali ini diambil contoh attiny2313) secara default menggunakan internal oscilator 8 MHZ dan clocknya di bagi 8 (clock div /8) sehingga CPU bekerja di 1MHZ
sehingga set programmer pada setting yg 1/4 lebih kecil yaitu 57.6khz


lakukan "READ SIGNATURE" untuk mengecek koneksi programmer & ATtiny2313

Jika hasil compile script di developer window anda anda sukses, maka lakukan download file HEX ke chip AVR sesuai gambar berikut :

file hex ada di : /folderanda/default/namaproject.hex




Dari pabriknya AVR memiliki setting clock internal sebesar 1 Mhz, jadi jika menggunakan clock external seperti xtal oscilator perlu dilakukan setting fusebit seperti contoh pada gambar berikut:



Mudah bukan ?

BASIC OUTPUT & INPUT dengan ATTINY 2313

Siapkan bahan2 sesuai skematik berikut ini :



dan jangan lupa programmer AVR nya ...

PROJECT 1 LED BLINK

#define F_CPU 1000000UL // frekuensi clock internal
#include <avr/io.h> // definisi standar io port
#include <util/delay.h> // definisi include untuk delay


int main(void)

{



DDRB=0b1 ; // Inisialisasi bahwa port B0 adalah output , jika pake port B5 ya inisialisai jadi DDRB=0b100000;



while(1)

{

PORTB=0b1; //port B0 = 1 atau nyala

_delay_ms(1000); //delay

PORTB=0b0; //port B0 = 0 atau mati

_delay_ms(1000); //delay

}

return 0;




PROJECT 2 LED BLINK

Gunakan 2 LED di port B#0 dan B#5
Kita akan memperkenalkan operasi bit untuk inisialisasi rangkap

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>


int main(void)

{



DDRB |= (1<<PB5)|(1<<PB0) ; // inisialisai menggunakan operasi bit

PORTB |= (1<<PB5) ; // operasi bit PORT B#5 = 1
PORTB &= ~(1<<PB0) ; //operasi bit PORT B#0 =0

while(1)

{

PORTB ^=(1<<PB5) ; // operasi bit toggle atau NEGASI/KEBALIKAN dari posisi bit sebelumnya
PORTB ^=(1<<PB0) ;

_delay_ms(1000);



}

return 0;

}




PROJECT - MEMBACA TOMBOL

kali ini kita akan membaca tombol dan kita gunakan untuk mengatur nyala matinya LED
kita memanfaatkan syntax " if (bit_is_set(PIN#, PIN##)) "

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)

{



DDRB |= (1<<PB5)|(1<<PB0) ; //inisialisasi port B#5 & B#0 sebagai output
DDRB &= ~(1<<PB1) & ~(1<<PB2) ; //inisialisasi port B#1 & B#2 sebagai input

PORTB |= (1<<PB5) | (1<<PB0); //kita SET LED NYALA semuanya

while(1)

{


if (bit_is_set(PINB, PINB1)) // membaca jika port input B#1 di set atau HIGH / 1 ( posisi awal di ground /LOW )
{
PORTB ^=(1<<PB5) ; //TOGGLE LED di PORT B#1
_delay_ms(500);

}

if (bit_is_set(PINB, PINB2)) // membaca jika port input B#2 di set atau HIGH / 1 ( posisi awal di ground /LOW )
{
PORTB ^=(1<<PB0) ; //TOGGLE LED di PORT B#2
_delay_ms(500);

}
}

return 0;

}



 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Hosting