Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label project. Tampilkan semua postingan
Tampilkan postingan dengan label project. Tampilkan semua postingan

Rabu, 12 Desember 2012

BELAJAR ACCESS SD CARD CARA SIMPLE DENGAN ATTINY2313 - PART1


Disclaimer : collected from various source on Google, writer read and modify for educational purpose only. Free to use !


SD card merupakan media penyimpanan data yang sering dijumpai, memiliki flash memory yang di format sesuai dengan standar FAT dari microsoft. Jadi cara accesnya hampir mirip dengan acces floppy disk ataupun hardisk dengan standar yg cocok kita pakai untuk interfacing dengan AVR adalah FAT16.


PINOUT




cara access hardware menggunakan cara SPI 3 wire, dimana microcontroller 8bit sekelas AVR memiliki fasilitas ini. Ingat Level tegangan yang digunakan adalah 3,3 volt, jadi memerlukan regulator seperti AIC 1722-33 untuk merubah ke vcc 3,3 v. Untungnya ATTINY masih bisa disupply dengan tegangan 3,3v sehingga tidak butuh logic converter 5 vs 3,3

FILE SYSTEM

Gunakan software winhex untuk membuka SD card yang diformat FAT, sehingga muncul tampilan image dari sebuah SD card



waduh pusing ya liatnya ....TS saja berpikiran seperti itu, tapi google memberikan banyak resource untuk belajar seperti disini dan penjelasan melalui artikel BUS PIRATE

Kali ini tidak akan membahas pembacaan nama file, awal dan akhir file dan sebagainya, mengingat memory ATTiny2313 yang lumayan mini, jadi kita akan membaca secara mentah data yang ada di SD CARD


oke kita berpatokan pada penjelasan di BUS PIRATE, dan singkat saja jika kita ingin melakukan akses ke sebuah SD card melalui SPI mengikuti aturan seperti berikut :

inisialisasi SPI:

1. Pull CS high (deselect)
2. Read 10 bytes (basically sends CLK pulse 80 times to give SD card time to initialize)
3. Pull CS low (select)
4. Send 0×40 (“go to SPI mode” command, CMD0)
5. Send four zero bytes (SD protocol has 4-byte arguments)
6. Send 0×95, the CRC checksum of the command and argument just sent
7. Read eight bytes and print them out (while sending 0xFF to the card)
8. Pull CD low (deselect)

inisialisasi kartu :

1. Pull CS low (select)
2. Send 0×41
3. Send 0x00 4kali
4. Send 0×FF
5.Baca data yg dikirim 8 kali (sambil kirim 0xFF ke kartu)
6. Pull CD low (deselect)

Inisialisasi besar transfer data / sector:

1. Pull CS low (select)
2. Send 0×50
3. Send 0x00000200 (desimal 512 , dikirim per byte)
4. Send 0×FF
5. Baca data yg dikirim 8 kali (sambil kirim 0xFF ke kartu)
6. Pull CD low (deselect)

Selanjutnya adalah proses pembacaan data (dibahas berikutnya)

jika benar, maka response dari SDcard seharusnya seperty ini :



wahh kok bisa keluar sepeti itu ? sebaiknya kumpulkan bahan-bahan seperti berikut ini dulu :





Ada yang aneh dari ATTiny2313 , dimana ic ini tidak mempunyai fungsi SPI yang murni, sehingga memanfaatkan fungsi USI (unifersal serial Interface) sesuai Datasheet maka pin MOSI itu DI = Data Input ( MISO di SPI asli) dan MISO itu DO = Data Output (MOSI di SPI asli). Jadi perhatikan koneksi MISO - MOSI yang silang (kalau terbalik gpp, hanya data nya ga kebaca...tinggal dibalik saja GAN !!)

untuk konektor ke SD card, dapat menggunakan SDcard - micro SD adapter yang kemudian disolder




atau jika sayang adapternya rusak, pake cara TS aja dengan menggunakan Header 2 baris, kemudian salah satu baris kaki ditekuk kedalam, kemudian Adapter SD card di selipkan dan pastikan pin header yang ditekuk menyentuh pad SDcard dengan baik




Lanjut Ke Post Berikut disini
Share:

Kamis, 06 Desember 2012

DOWNLOADER IC EEPROM 24CXX


IC EEPROM serial 24CXX merupakan IC eeprom bebasis I2C yang umum digunakan dipasaran, terutamanya pada peralatan seperti memory TV atau gambar background VCD/DVD player buatan china. Jenis EEPROM yang serupa juga digunakan pada ECU pada mobil generasi EFI , dimana setting untuk utak-atik RPM maksimum disimpan pada EEPROM jenis ini. Bahan-bahan cukup mudah didapat dengan harga tidak lebih dari 50 rb.



BAHAN- BAHAN :



1. 3x Zenner 5,1V
2. 3x Diode 1N4148
3. 2x Resistor 4k7, 1x 100 ohm
4. 1x cap 100nF , 1x Elco 22uF
5. Socket ic 8 DIL atau bisa juga header Through Hole
6. Konektor DB-9 + Casing
7. PCB kecil, LED dan kabel kecil (wrap cable)


skematiknya aku edit dari berbagai sumber , dan rata-rata berasal dari programmer berbasis JDM / Serial PonyProg




kemudian susun komponen diatas pcb kecil, dengan menempatkan socket diluar . Kalo tanpa PCB soket harus di lem pada casing db-9 yang sebelumnya dibor. Untuk header through hole bisa menggunakan PCB karena kakinya cukup panjang. Komponen disolder sedemikian rupa sehingga pas pada socket dan tidak short antar kaki yg tidak diinginkan. Jika kesulitan, boleh saja dirangkai diatas PCB yg lebih besar


Ground (skematik paling bawah) sebaiknya disolderkan ke body DB9


Jika sudah, maka bisa menggunakan software downloader yang bisa didownload di website ponyprog (www.lancos.com) atau juga bisa menggunakan IC-Prog (http://www.ic-prog.com/index1.htm)

Berdasarkan pengalaman, ponyprog memerlukan port Serial MURNI ...artinya langsung nancep di motherboard seperti yang ada pada PC-Desktop. Untuk pemakaian laptop yg ga ada serialnya maka digunakan usb to Rs232 converter dan disarankan menggunakan software IC-PROG yang lebih pelan pogrammingnya. Sepertinya ponyprog mensetting clock lebih cepat sehingga tidak mampu dikendalikan oleh usb to serial converter.

Langkah pertama setelah download adalah melakukan setting comport sehingga nilainya tidak lewat dari com4 , caranya jika comportmu gede seperti gambar berikut :


ubah saja pada comport4 yang biasanya kosong.


Setelah download software IC-Prog selesai, maka lakukan setting hardware seperti pada gambar berikut :




selanjutnya mudah....tinggal mengikuti langkah-langkah pada GUI, yaitu pilih IC, LOAD FILE EEPROM, WRITE, dan tinggal tunggu sampai verified selesai




paling seneng kalo muncul beginian :







SELAMAT MENCOBA
Share:

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 :

File:Rs232 oscilloscope trace.svg 


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
Share:

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
Share:

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
Share:

Senin, 01 Oktober 2012

DTMF - lebih lanjut dengan BCD to Decimal decoder

74LS154.jpg (500×500)
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
Share:

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 
Share:

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 Hz1336 Hz1477 Hz1633 Hz
697 Hz123A
770 Hz456B
852 Hz789C
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


Share:

Sabtu, 14 Juli 2012

Pemancar AM mini dengan IC 555

wew...ic 555 ternyata bisa digunakan sebagai pemancar AM juga looo
Prinsipnya adalah menumpangkan audio ke fungsi osilator dari rangkaian 555
Dari hasil googling menuntunku menuju ke  instructable.com dan memperoleh rangkaian sederhana seperti berikut ini :

Transistor bisa menggunakan 2N2222, 2N3904, BC317 dsb


Ternyata setelah dirangkai cukup susah menentukan frekuensi yg digunakan, karena yg dicari adalah harmonics dari rangkaian. Jadi putar tombol pesawat penerima pada frek MW 600khz kemudian di puter2 potensio/trimpot di pemancar sampe muncul suara tuitt tuitt....nah..saat ini boleh dimasukkan audio input. Berbeda dengan audio input pemancar fm 1 transistor, suara bas harus dikecilin, sebab prinsip AM adalah modulasi suara menjadi amplitudo (puncak) dari gelombang carier, jadi jika suara bas nya yg dominan, maka tedengar hanya suara puncak bas nya saja (brekk..brekk..jelek ).




Untuk memaksimalkan output dapat menggunakan antena yang lumayan panjang ( 2 meter cukup) yang dihubungkan dari kaki EMITER transistor, kemudian boleh dicoba menambahkan resistor <50 ohm (watt gede ) dan dihubungkan ke ujung antena yg satunya dan menuju ground. Dengan pengaturan yg pas, dan menjaga transistor tidak kepanasan, maka dapat diperoleh jangkauan lebih dan suara yg lebih jernih.

Sesuai prinsip harmonics dari osilator, maka siaran radio akan "meracuni" gelombang dengan jarak antara sekitar 1Mhz. Jadi jika Radiomu memiliki band SW1,2,3 dst  maka siaranmu dapat didengar diberbagai tempat.



Jika menginginkan pemancar AM yang lebih bagus dapat menggunakan rangkaian yang saya dapat di video youtube :





SELAMAT MENCOBA !


nb: kalo ada yg mau KIT & Komponennya bisa membeli ke yg punya blog 


Share:

Jumat, 06 Juli 2012

Menghitung RPM (TACHOMETER) dari Radiasi Kabel busi



RPM ( round per minute ) adalah angka yang menunjukkan banyaknya putaran suatu system dalam 1 menit. Biasanya dimanfaatkan sebagai penunjuk putaran mesin pada kendaraan bermotor, sehingga mempermudah dalam pengaturan tenaga dan bahan bakar. Alat pengukur ini lazim disebut TACHOMETER.

Pada sebuah kendaraan roda 2, putaran mesin dapat diperoleh dengan menghitung pulsa pada dinamo, tetapi hal ini susah karena harus membuka blok mesin. Cara paling mudah adalah dengan memanfaatkan radiasi dari CDI ke BUSI yang dapat dihitung jumlah pulsanya. Jadi dengan menggunakan prinsip radiasi elektromagnet, cukup dengan melilitkan kawat tembaga/email/enamel/kabel dinamo  ke kabel di dekat ujung tutup busi, maka tegangan yang konstan (pulsa) dapat diperoleh. Jumlah lilitan tidaklah penting, cukup dikira-kira saja sampai tegangan yg dihasilkan dapat mengaktifkan transistor sebagai switch penghitung.

Tidak perlu menunggu 1 menit untuk mengeluarkan nilai RPM, dengan memanfaatkan fasilitas counter pada microcontroller maka nilai RPM dapat diperoleh. Semisal kita melakukan sampling pengambilan data RPM per 1 detik. Maka RPM didapat melalui rumus :


RPM = Jumlah Pulsa  x 60

jika ingin lebih cepat, semisal 0,5 detik, maka nilai RPM didapat dengan mengalikan jumlah pulsa yg terjadi dengan angka 120.










Skematik dibawah ini memanfaatkan microcontroller attiny2313, dan menggunakan transistor sebagai switch pulsa.



klik biar lebih jelas




sedangkan scriptnya seperti berikut ini  (revised version):

#define F_CPU 1000000UL // frek clock internal
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h> 

uint8_t angka1=10 ;
uint8_t angka2=10 ;
uint8_t angka3=10 ;
uint8_t angka4=10 ;
uint8_t segstep=0;

uint8_t kalibrasi=3;

int number=0;

void conv_segmen(uint8_t digit)//nampilin segmen

{
switch (digit) 
{

case 0 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5);
PORTB |= _BV(PB6) ;
break;
}
case 1 :
{
PORTB &= ~_BV(PB1) & ~_BV(PB2) ;
PORTB |= _BV(PB0) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;
break;
}
case 2 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB6) ;
PORTB |= _BV(PB2) | _BV(PB5) ;
break;
}
case 3 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB6) ;
PORTB |= _BV(PB4) | _BV(PB5) ;
break;
}
case 4 :
{
PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB5) & ~_BV(PB6) ;
PORTB |= _BV(PB0) | _BV(PB3) | _BV(PB4) ;
break;
}
case 5 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6) ;
PORTB |= _BV(PB1) | _BV(PB4) ;
break;
}
case 6 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB6) ;
PORTB |= _BV(PB1) ;
break;
}
case 7 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) ;
PORTB |= _BV(PB3) | _BV(PB4) | _BV(PB5)| _BV(PB6) ;
break;
}
case 8 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB6);
break;
}
case 9 : 
{
PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6);
PORTB |= _BV(PB4) ;
break;
}
case 10 :
{
PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;
break;
}
}
}



void init_ctr(void) //counter tampilan
{
TCCR0A |= (1 << WGM01); // Configure timer 0 for CTC mode
TIMSK |= (1 << OCIE0A); // Enable CTC interrupt
OCR0A = 50; // Set CTC compare value till blink disapear at 1MHz AVR clock, with a prescaler of 64
TCCR0B |= (1 << CS01)|(1 << CS00); // Start timer at Fcpu/64
}


void init_ctr1(void)//counter perhitungan 600ms sampling
{
TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
TIMSK |= (1 << OCIE1A); // Enable CTC interrupt 
OCR1A = 586; //compare the CTC A = 600ms =586
TCCR1B |= ((1 << CS10) | (1 << CS12)); // Start timer at Fcpu/1024
}


ISR(TIMER1_COMPA_vect) //timer capture RPM counter

{ uint16_t rpm;
switch(kalibrasi) { 
case 1 :{ 
rpm=number/100;
break; }

case 2 :{ 
rpm=number/10;
break; }

case 3 :{ 
rpm=number;
break; }

case 4 :{ 
rpm=number*10;
break; }

case 5 :{ 
rpm=number*100;
break; }
default: rpm=0;
}

angka1 = rpm%10;

if(rpm>9) angka2 = ((rpm%100) - (rpm%10)) /10 ;
else angka2=10;

if(rpm>99) angka3 = ((rpm%1000) - (rpm%100)) /100 ;
else angka3=10;

if(rpm>999) angka4 = ((rpm%10000) - (rpm%1000)) /1000 ;
else angka4=10;


number=0;
}

ISR(TIMER0_COMPA_vect) // timer pindah kolom
{
segstep++;
switch(segstep) { 
case 1 :{ conv_segmen(10);
PORTD |= _BV(PD0);
PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5) ;
conv_segmen(angka1);
break;
}

case 2 :{ conv_segmen(10);
PORTD |= _BV(PD1);
PORTD &= ~_BV(PD0) & ~_BV(PD4) & ~_BV(PD5) ;
conv_segmen(angka2);
break;
}
case 3 :{ conv_segmen(10);
PORTD |= _BV(PD4);
PORTD &= ~_BV(PD1) & ~_BV(PD0) & ~_BV(PD5) ;
conv_segmen(angka3);
break;
}
case 4 :{ conv_segmen(10);
PORTD |= _BV(PD5);
PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD0) ;
conv_segmen(angka4);
segstep=0;
break; 
}
}
}


SIGNAL (SIG_INT0)
{
number++;

}

void tombol(void)
{

cli();
conv_segmen(10);

kalibrasi++;

if (kalibrasi == 6) kalibrasi=1;

eeprom_write_byte((uint8_t*)10, kalibrasi);


 _delay_ms(200); 
              sei();
}


void baca_eeprom(void)
{

kalibrasi = eeprom_read_byte((uint8_t*)10);

if(kalibrasi == 0xFF) kalibrasi=3;


}

int main(void)
{

GIMSK |= (1<<INT0); 
MCUCR |= (1<<ISC01)| (1<<ISC11); //fall edge 

DDRD |= _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5) ; // seg select
                    DDRD &= ~_BV(PD3) ; // tombol
DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ; // seg a,b,c,d,e,f,g


init_ctr();
init_ctr1();
baca_eeprom();
sei();
while(1)

{
                    if(bit_is_clear(PIND, PD3) )
              {tombol;
                      } 
}
}


SELAMAT MENCOBA 
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (26) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika