Selasa, 27 November 2012
Pengganti Max232 menggunakan transistor
Jika membutuhkan konverter UART micro (TTL) ke RS232 dapat menggunakan rangkaian sederhana seperti ini ....
Rangkaian diatas memiliki prinsip merubah sinyal High (5v) menjadi sinyal negatif (-3 ~ -15v) dan sebaliknya . Seperti yang kita ketahui format tegangan RS232 memanfaatkan level tegangan + dan - sesuai dengan gambar berikut :
Karena yang kita butuhkan hanya jarak yang pendek, maka dengan memanfaatkan kapasitor 10uF dan dioda 1N4148 dapat diperoleh tegangan negatif. Jika membutuhkan jarak komunikasi serial yang panjang disarankan menggunakan ic yang sudah paten seperti MAX232.
Karena rangkaiannya simple, maka converter ini dapat dimasukkan langsung ke dalam kotak DB9.
Selanjutnya anda bisa mengikuti praktek komunikasi antara micro vs PC seperti yang dibahas di kaskus dan disini
SELAMAT MENCOBA
Senin, 26 November 2012
JOULE THIEF : Menghidupkan LED dengan 1 Baterai 1,5V
Ga mungkin ahh ? kan LED biasanya hidup dengan 2 baterai 1,5v ..
Jangan bingung...rangkai saja seperti gambar skematik berikut
Bahan- bahan mudah didapat, kumparan di peroleh dari bekas lampu hemat energi atau bekas power supply komputer. Kumparan sebelah kanan jumlah lilitannya banyak, sedangkan kumparan sebelah kiri lilitannya kecil. Jadi cara simple nya adalah melilitkan kawat enamel atau kabel tipis diantara lilitan bekas kanibal. Ingat lilitan sebaiknya memiliki inti ferit/ toroida didalamnya. Komponen lainnya cukup mudah didapat, transistor yang digunakan merupakan transistor NPN yang umum dan (BC 327 , 2N2222 dsb)
SELAMAT MENCOBA
Rabu, 14 November 2012
Solusi Bug Pemrograman di DT-HIQ AVR/51 USB versi AVRISP MKII menggunakan AVRDUDE
Setelah beberapa kali mengalami komplain yang tidak mengenakkan dari programmer jenis ini, akhirnya di website Innovative Electronics mengeluarkan patch AVRDUDE yang terbukti sangat ampuh.
Beberapa jenis bug yang umumnya terjadi adalah seperti berikut :
- AVR STUDIO 4 : susahnya programming ATTINY (sering gagal ), ATmega8515 / 16 gagal pada programming EEPROM
- AVR STUDIO 6 : tidak terdeteksi
- AVRDUDE : stk500v2_recv_mk2: error in USB receive
Patch AVRDUDE keluaran Innovative dapat di download di sini
Cara menggunakan AVRDUDE :
1. Install driver Jungo (melalui instalasi avrstudio 4) dan libusb sesuai petunjuk di CD. Libusb dapat didownload disini
2. Hubungkan programmer DT-HiQ AVR USB ke rangkaian target dan PC sebagaimana mestinya
3. Extract file patch AVRDUDE hasil download dimana terdapat 2 file (avrdude.exe & avrdude.conf)
4. Jika sudah siap maka bisa diberikan perintah berikut melalui command prompt
command prompt dibuka dengan mengetik cmd pada menu start => run atau untuk win7 pada kotak search diatas tombol start, kemudian arahkan ke folder dimana file avrdude berada
avrdude.exe -P usb -c avrispmkII -p t2313
t2313 artinya menggunakan attiny2313, jika menggunakan ic yg lain bisa memakai m8 , m16, m8535 dan sebagainya (bisa dibuka di avrdude.conf menggunakan wordpad / text editor). Jika IC dan programmer terhubung benar maka akan tampil seperti berikut :
5. Letakkan file hex dan eep yang akan di program pada folder yang sama dengan AVRDUDE. File hex dan EEP pada AVR STUDIO 4 terletak di folder "default" pada folder tempat menyimpan project.
untuk melakukan programming FLASH digunakan perintah seperti contoh berikut :
dimana humitemp3_4out.hex merupakan file flash yang akan didownload. ilustrasi jika sukses sebagai berikut :
Mudah bukan ? SELAMAT MENCOBA
Beberapa jenis bug yang umumnya terjadi adalah seperti berikut :
- AVR STUDIO 4 : susahnya programming ATTINY (sering gagal ), ATmega8515 / 16 gagal pada programming EEPROM
- AVR STUDIO 6 : tidak terdeteksi
- AVRDUDE : stk500v2_recv_mk2: error in USB receive
Patch AVRDUDE keluaran Innovative dapat di download di sini
Cara menggunakan AVRDUDE :
1. Install driver Jungo (melalui instalasi avrstudio 4) dan libusb sesuai petunjuk di CD. Libusb dapat didownload disini
2. Hubungkan programmer DT-HiQ AVR USB ke rangkaian target dan PC sebagaimana mestinya
3. Extract file patch AVRDUDE hasil download dimana terdapat 2 file (avrdude.exe & avrdude.conf)
4. Jika sudah siap maka bisa diberikan perintah berikut melalui command prompt
command prompt dibuka dengan mengetik cmd pada menu start => run atau untuk win7 pada kotak search diatas tombol start, kemudian arahkan ke folder dimana file avrdude berada
avrdude.exe -P usb -c avrispmkII -p t2313
t2313 artinya menggunakan attiny2313, jika menggunakan ic yg lain bisa memakai m8 , m16, m8535 dan sebagainya (bisa dibuka di avrdude.conf menggunakan wordpad / text editor). Jika IC dan programmer terhubung benar maka akan tampil seperti berikut :
5. Letakkan file hex dan eep yang akan di program pada folder yang sama dengan AVRDUDE. File hex dan EEP pada AVR STUDIO 4 terletak di folder "default" pada folder tempat menyimpan project.
untuk melakukan programming FLASH digunakan perintah seperti contoh berikut :
avrdude.exe -P usb -c avrispmkII -p m16 -U flash:w:humitemp3_4out.hex
dimana humitemp3_4out.hex merupakan file flash yang akan didownload. ilustrasi jika sukses sebagai berikut :
Sedangkan untuk programming EEPROM seperti berikut ini :
avrdude.exe -P usb -c avrispmkII -p m16 -U eeprom:w:humitemp3_4out.eep
Ilustrasinya seperti berikut :
Mudah bukan ? SELAMAT MENCOBA
Senin, 12 November 2012
INTERFACING KEYBOARD ke AVR (ATtiny) & OUTPUT ke DOT MATRIX
- LEVEL : ADVANCE
- BAHAN2 : AVR micro ( ATTINY 2313), KEYBOARD PS-2, DOTMATRIX , R 10K
- DASAR yg PERLU DIKUASAI : Basic I/O, Interupt dan menulis ke DOT MATRIX ( love hurts) silahkan baca disini
Pertama kita perlu mengetahui port keyboard PS2 itu seperti ini :
sedangkan pada input micro , umumnya menggunakan koneksi seperti ini :
dimana input 'clock' masuk ke pin interupt pada microcontroller, sedangkan pin 'data' masuk ke pin biasa dari AVR (bidirect). semua I/O di pull up dengan resistor 10k ke Vcc. Selanjutnya kita bahas dulu format transfer data saat ada penekanan tombol , gambarannya seperti ini :
jadi keyboard dapat mengirim data karakter ke micro, sedangkan micro mengirimkan setting keyboard. sehingga komunikasinya bidirectional
oke, selanjutnya kita perhatikan kode scan/hex dari pencetan tombol keyboard, tabelnya seperti ini :
setelah itu kita susun port ps 2 & port dot matrix dengan susunan I/O seperti ini :
==========potongan script di main(), lengkapi sendiri============== //clock di interupt 0 (pin 6) MCUCR |= (1<<ISC01) | (0<<ISC00); // falling edge int 0 GIMSK |= (1<<INT0); //data keyboard di port PD3 (pin 7) DDRD &= ~_BV(PD3) ; //kolom dot matrix DDRD |= _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5) | _BV(PD6) ; //data / baris dot matrix DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ; // output led buat ngecek ada pencetan keyboard di PA0 (pin 4) DDRA |= _BV(PA0);
kemudian yg ga kalah pentingnya adalah membikin databse/lookup table untuk scan code keyboard menjadi baris data dot matrix. (harap baca dulu cara menulis di dot matrix)
const char h_A[5] PROGMEM = {0x7e, 0x11, 0x11, 0x11, 0x7e}; //A const char h_B[5] PROGMEM = {0x7f, 0x49, 0x49, 0x49, 0x36}; //B const char h_C[5] PROGMEM = {0x3e, 0x41, 0x41, 0x41, 0x22}; //C const char h_D[5] PROGMEM = {0x7f, 0x41, 0x41, 0x22, 0x1c}; //D ...... dst ....
jadi, tiap ada pemencetan tombol, maka pin clock dari keyboard akan menginterupt ( falling / turun dari 1-0) AVR dengan format seperti gambar diatas, sehingga script pada interuptnya berupa
SIGNAL (SIG_INT0) //routinre interupt INT0 { if(clk > 1 && clk <10) //clock yg bermanfaat saja yg dibaca { //pindahkan data dari PIN DATA keyboard ke memory key[(clk - 2)] = ((PIND & _BV(PIND3)) >> PIND3); //nyalakan led penanda ada data dikirim keyboard PORTA |= _BV(PA0); } clk++; // tambahkan nilai variable clk tiap interrupt if(clk == 12) //maksimum clock yg dikirim {clk=1; PORTA &= ~_BV(PA0); //matikan led tanda data kosong } }
selanjutnya kita terjemahkan data dari memory array "key" kedalam bentuk hexa yg kemudian diterjemahkan dengan database metode "lookup"
int a; char hurufnya[5]; //rumus merubah array key ke hexa scan code a= (128*key[7]) + (64*key[6]) + (32*key[5]) + (16*key[4]) + (8*key[3]) + (4*key[2]) + (2*key[1]) + key[0] ; switch (a) { case 0x1C : strncpy_P(hurufnya,h_A,5); break; case 0x32 : strncpy_P(hurufnya,h_B,5); break; case 0x21 : strncpy_P(hurufnya,h_C,5); break; case 0x23 : strncpy_P(hurufnya,h_D,5); break; case 0x24 : strncpy_P(hurufnya,h_E,5); break; case 0x2B : strncpy_P(hurufnya,h_F,5); break; ............dan seterusnya default : strncpy_P(hurufnya,h_43,5); } // selanjutnya ditampilkan di DOTMATRIX ( tampilkan per kolom) //kolom 1 PORTB = 0x80; PORTD &= ~_BV(PD0); PORTD |= _BV(PD1) | _BV(PD4) | _BV(PD5) | _BV(PD6) ; PORTB = hurufnya[0]; _delay_ms(10); //kolom2 PORTB = 0x80; PORTD &= ~_BV(PD1); PORTD |= _BV(PD0) | _BV(PD4) | _BV(PD5) | _BV(PD6) ; PORTB = hurufnya[1]; _delay_ms(10); ......dst.....
Masalahnya jaman sekarang udah jarang yang jual model PS/2 dan yang umum itu versi USB. Tinggal beli adapter nya aja...ehhh ternyata didalemnya ga ada rangkaian tambahannya loo...bikin aja sendiri
Jangan lupa untuk melakukan pull-up clock dan data dengan resistor 10K ke Vcc
hasilnya kalo udah mahir, seperti ini loooo....
code full bisa didapat disini