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
Senin, 01 Oktober 2012
DTMF - lebih lanjut dengan BCD to Decimal decoder
Untuk menghasilkan output yang lebih spesifik terhadap tombol maka diperlukan IC tambahan berupa decoder BCD ( kode desimal dalam biner ) yang akan mengeluarkan 1 output sesuai input binner yg di berikan. Output dari decoder 8870 adalah 4 bit binner dan selanjutnya dapat langsung di berikan ke input decoder BCD. Untuk 10 output ic yang digunakan adalah 74LS145 sedangkan untuk 16 output digunakan ic 74LS154.
(klik untuk memperbesar)
Dari truth table didapatkan bahwa output dari Q0 - Q9 adalah aktif LOW, dan memiliki susunan yang berbeda dengan truth table dari IC 8870. Angka 0 dari ic 8870 diterjemahkan sebagai angka desimal 10 (biner 1010) sehingga Q0 tidak akan pernah mengeluarkan output , sedangkan angka 1 yang diterjemahkan sebagai binary BCD "0001" akan mengaktifkan output Q1. Jadi maksimum output dengan 74LS145 adalah 9, sedangkan untuk 74LS154 dapat menghasilkan output yang lebih.
Kondisi output secara default dari ic 8870 adalah ter "kunci" atau LATCH pada posisi tombol terakhir yg diinputkan. Jadi jika ingin mendapatkan output yang TOGGLE atau momentary/ sementara semisal jika digunakan pada penekanan remote maka diperlukan suatu mekanisme seperti pada rangkaian skematik selengkapnya berikut :
(klik untuk memperbesar)
Dari rangkaian diatas, kita akan memanfaatkan output dari ic 8870 di pin 15 (StD) yang akan aktif high ketika ada input DTMF dan kembali low ketika tidak ada input. Pin 15 ini akan mengatur transistor NPN untuk ON atau OFF sehingga ketika tidak ada input maka sumber tegangan relay akan diputus . Saklar S1 merupakan saklar yang dapat digunakan untuk memilih mode LATCH atau TOGGLE.
Ada yang tertarik membeli yang atas ? Box diatas merupakan remote jarak jauh via HP yang dipesen oleh rekan dari Kep. Riau dan digunakan untuk melakukan remote terhadap tombol receiver TV KABEL. Berbagai macam aplikasi lain juga dapat menggunakan alat ini. Jika tertarik silahkan kontak pemilik blog deh ....
SELAMAT MENCOBA
KONTAK :
HP: 085733889569 , 087882045949
Mail : ahocool@gmail.com
ym :ahokleng
fb: www.facebook.com/nyoman.yudi
twiter: @ahocool
lokasi: SURABAYA
PIN : 321477A8
DTMF - Praktek decoder 8870
Persiapkan bahan-bahan berikut:
1. Handphone atau pesawat telepon yg memiliki audio out/jack/headset out
2. IC decoder DTMF 8870
3. xtal 3.58Mhz atau yang mendekati
4. Resistor 100k (2), 1K (1) dan 300k (1)
5. Capacitor 100nF (2)
6. Transistor NPN (2n3906/2n2222/BC547/BD139)
7. Relay 5v/12v atau diganti Led
8. Sumber tegangan 5v , bisa menggunakan charger HP bekas atau bisa juga dengan menggunakan regulator 5v (liat pada skematik)
Sebelum menuju ke rangkaian kita perhatikan gambar rangkaian dasar dekoder DTMF dari datasheet ic 8870 seperti berikut:
Bagian sebelah kiri kapasitor 0,1uF (100nF) merupakan input dari speaker/headset pesawat telpon (handphone). Jika terdapat sinyal audio yg sesuai dengan standar DTMF maka output Q4 - Q1 akan mengeluarkan 4bit BCD (binary coded decimal) yang sesuai. Output ini akan LATCH atau tersimpan sampai ada perubahan nada DTMF. Output pin 15 (StD) akan memberikan nilai 1/high jika ada nada DTMF yg di berikan dan akan menjadi 0/low kembali jika tidak ada input. Berikut ini adalah tabel kebenaran dari ic CM8870:
Kita lanjutkan ke praktek , setelah bahan-bahan terkumpul maka kita akan menghubungkan komponen ke atas breadboard atau menyoldernya ke atas pcb lubang. Output dari percobaan ini bisa menggunakan relay atau pun hanya LED saja.
(klik untuk lebih jelas)
Hubungkan input dengan jack audio ke port headset handphone dan kemudian di "call " dari pesawat telpon lainnya. Jika ingin menjadikannya remote otomatis, maka aktifkan fungsi "AUTO ANSWER" yang hampir dimiliki oleh semua pesawat handphone. Untuk HP merek CROSS dapat disetting melalui MENU => USER PROFILE => HEADSET => CUTOMIZE => ANSWER MODE => AUTO.
Sesuai dengan truth table diatas, jika output yg kita gunakan adalah Q1 maka relay akan menyala jika keypad yang dipencet adalah 1,3,5 dst. Relay akan ON terus dan akan OFF jika tombol 2,4,6 dst dipencet. Pada pembahasan selanjutnya akan kita bahas decoder DTMF dengan memanfaatkan ic TTL BCD - Decimal sehingga dapat membedakan tiap dial/tombol yang dipencet.
SELAMAT MENCOBA
DTMF - dasar signalling tombol telepon
DTMF ( Dual Tone Multi Frequency ) merupakan suatu cara pengiriman sinyal penekanan tombol telepon (Dial) dengan cara kombinasi penggabungan 2 nada. Sistem yg digunakan sama seperti prinsip scanning keypad dengan mengkombinasikan matrix baris dan kolom, dimana tiap penekanan dial akan menggabungkan 2 buah nada yg berbeda. Matrix baris dan kolom yang dipakai seperti berikut :
1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz | |
---|---|---|---|---|
697 Hz | 1 | 2 | 3 | A |
770 Hz | 4 | 5 | 6 | B |
852 Hz | 7 | 8 | 9 | C |
941 Hz | * | 0 | # | D |
Contohnya ketika menekan tombol 1 maka akan keluar gabungan nada 679 Hz dan 1209 Hz.
Selanjutnya sinyal suara ini dikirimkan ke sentral telepon dan kemudian diterjemahkan melalui perangkat telephony. Dengan semakin berkembangnya dunia elektronika maka sekarang ini dapat diperoleh chip decoder DTMF dengan harga yg sangat murah. Beberapa site di google juga memberikan cara untuk membuat DTMF decoder dengan perangkat elektronika diskrit OP-AMP sehingga banyak hobbier's elektronika menggunakan DTMF decoder sebagai remote jarak jauh.
Jika ingin melihat penjelasannya melalui video dibawah ini :
* courtesy of wikipedia