Rabu, 05 Agustus 2015

Mau Tahu Bagaimana TRANSISTOR ditemukan ?




Dunia baru saja kembali ke periode damai setelah WW II berkecamuk dengan kemenangan ada dipihak Sekutu. Sepertinya peperangan menjadi salah satu unsur penting dalam perkembangan teknologi dunia dimana para ilmuwan dipaksa menciptakan sesuatu benda yang berguna untuk kepentingan perang dan pada akhirnya lebih membantu manusia saat di waktu damai. Perkembangan dunia telekomunikasi saat perang mendorong negara maju ber inovasi membuat perangkat telekomunikasi yang lebih ringkas. Salah satu pelopor dunia telekomunikasi yang saat itu berperan besar adalah Bell Laboratories di Amerika Serikat.



Untuk dapat menyampaikan pesan telepon melalui jarak yang jauh maka dibutuhkan perangkat amplifier sebagai penguat suara. Pada awalnya digunakan prinsip percepatan elektron pada tabung hampa yang kemudian lebih dikenal dengan TUBE AMPLIFIER. Tapi tabung ini seperti halnya bohlam lampu memiliki waktu pakai terbatas yang akan rusak setelah beberapa jam pakai. Begitu juga dengan daya listrik yang diperlukan sangat boros dengan efisiensi kecil karena banyak panas yan dihasilkan. Sehingga ketika perang dunia berakhir para ilmuwan pada Bell Laboratories  melakukan percobaan menciptakan penguat sinyal yang lebih handal dan "SOLID STATE".



Ilmuawan yang dikenal sebagai pelopor dan penemu dari transistor adalah John Bardeen, William shockley dan Walter Bratain. Para ilmuwan lainnya juga berperan karena penciptaan transistor meliputi banyak bidang keilmuwan diantaranya elektro, kimia, fisika, material dan mesin. Kerjasama berbagai bidang sains ini menghasilkan suatu alat yang pada awalnya tanpa nama yang sampai perlu diadakan voting untuk memilih nama yang sesuai.





Seperti yang ditulis pada gambar diatas kata transistor merupakan gabungan trans konduktasi dan resistansi variabel. Jadi alat ini dapat diatur tingkat konduktansi dan resistansinya dengan pengaturan sedemikian rupa, Secara lebih mudah dapat dibahas pada penjelasan berikut :


PRINSIP SEMIKONDUKTOR


Kristal yang menjadi perhatian para ilmuwan bell adalah GERMANIUM setelah ilmuwan bell berhasil menciptakan alat pemurni kristal Ge. Sifat dari germanium memiliki konduktivitas yang berbeda dengan konduktor dan isolator. Sifat lainnya meliputi reaksinya terhada panas dan cahaya.

Ketika germanium dipanaskan maka konduktivitasnya meningkat

 Bandingkan dengan kawat tungsten yang konduktivitasnya menurun saat dipanaskan


Efek cahaya terhadap konduktivitas Germanium



PRINSIP PENYEARAH KRISTAL


Gambar diatas merupakan radio "CRYSTAL" jaman dulu kala dimana terdapat alat yang bernama "CAT WISHKER" sebagai detektor sinyal RADIO menjadi AUDIO. Frekuensi tinggi dari modulasi AM akan di searahkan oleh gabungan kristal silikon dan kawat halus sehingga yang tertinggal hanya gelombang audio yang kemudian bisa didengarkan melalui earphone.



Ketika prinsip ini diterapkan pada kristal Germanium yang dihubungkan dengan tembaga maka prinsip penyearah dapat dilihat dari experimen diatas. Ilmuwan kemudian memanfaatkan prinsip ini untuk membuat RADAR yang membuat sekutu menang perang pada WW II. Pada masa damai ilmuwan Bell laboratories berusaha melakukan kontrol terhadap prinsip ini sehingga dapat melakukan penguatan sinyal kecil. Pada awalnya para ilmuwan berfokus pada efek medan dilapisan luar dari germanium (field efect) seperti halnya perlakuan pada tube amplifier. Akan tetapi percobaan ini kurang berhasil menghasilkan penguatan yang dapat diatur.

Percobaan field efek pada semikonduktor



EFEK TRANSISTOR



Gambar diatas menjadi salah satu "EUREKA MOMENT" dari trio penemu transistor. Jika anda sering menonton acara Ancient Aliens di History ch, mungkin saja akan dipercayai (oleh si rambut jeprak) bahwa trio ini mendapat bisikan dari mahluk ekstrateresterial. Tapi entahlah ... yg mereka temukan ini merupakan loncatan besar bagi seluruh dunia. Penemuan ini terjadi pada bulan desember 1947.

Pada gambar diatas terlihat kristal germanium diberikan 2 buah koneksi ke sumber tenaga. Yang sebelah kiri tembaganya langsung menyentuh ke kulit kristal Ge, sedangkan pada sebelah kanan salah satu ujung kawat tembaga diberikan isolator berupa lilin. Tambahan elektrolit berupa tetesan air diberikan diantara sambungan . Yang terjadi adalah kemudian dinamakan "TRANSISTOR EFFECT" dimana secara ajaib ketika rangkaian sebelah kiri diberikan sumber arus maka efek pada sebelah kanan (yang sebelumnya tidak nyambung) menjadi teraliri arus listrik.




Tentu saja air tidak bertahan lama karena menguap dan kemudian dipilihlah emas sebagai pengganti air, sedangkan isolatornya hanya diberikan jarak antara kawat dan permukaan kristal Ge. Transistor jenis ini selanjutnya disebut POINT-CONTACT Transistor.


Transistor pertama yg berhasil berfungsi pada Bell Laboratories





Perkembangan selanjutnya william shockley menemukan yang dinamakan junction transistor setelah kemajuan  pada proses pembentukan kristal Germanium.



Akhirnya transistor menjadi semakin kecil dan karakteristiknya semakin bagus . Penggunaan pada frekuensi2 tinggi pun dapat dicapai dengan daya yang kecil dan efisiensi panas sangat bagus dibandingkan amplifier tabung.

 Alloy Transistor bekerja pada frekuensi tinggi

Silikon transistor 

Wafer silikon yg dapat diproduksi masal




COURTESY




SUMBER



Jumat, 31 Juli 2015

Pewaktu Sholat dan Display Informasi Untuk Usaha Anda



PRODUK TERBARU DARI AISI555

SOFTWARE DISPLAY INFORMASI DENGAN PEWAKTU SHOLAT




FITUR :
  • Sebagai media informasi untuk ruang tunggu di berbagai lokasi. 
  • Memanfaatkan TV layar lebar sebagai media selain menampilkan siaran TV
  • Menampilkan TV/Video, Gambar , Text Berjalan dan Waktu
  • Keunggulan software pada Timer (pewaktu sholat) yang akan memberi informasi waktu sholat secara otomatis
  • 10 Menit sebelum Azan maka pewaktu akan hitung mundur dan akan stop (layar hitam) jika mencapai waktu sholat, dan akan kembali hidup setelah waktu yang ditentukan
  • Semua kontrol layout / posisi display dilakukan melalui software editor yang tersedia
  • Dapat di broadcast ke TV KABEL / CATV Hotel / TV Komunitas


KEBUTUHAN :

  • Komputer / PC , sebaiknya PC MINI sehingga bisa ditempel di bracket TV
  • TV tuner sebagai input saluran TV / TV KABEL / SATELIT
  • TV Layar lebar dengan input HDMI / VGA






contoh konfigurasi display (klik gambar untuk lebih jelas)




contoh software editor


 DEMO :


Silahkan download demo TV DISPLAY INFORMASI pada posting terdahulu :  klik disini



KONTAK :

Untuk informasi harga dan penawaran silahkan hubungi kami :

 HP : 085733889569
 WA : 08155737755
 Mail : ahocool@gmail.com


Rabu, 15 April 2015

[ROBOTIS KIDSLAB] Memanjakan Anak atau Ikut Tren Mainan High-Tech ?


Hari dimana saya menyerah pada hobby elektronika yang super praktis akhirnya tiba. Saya membelikan anak teman saya "Robot Rakitan Mahal !" Padahal jika diteliti lagi pada tulisan-tulisan saya terdahulu maka dapat dilihat betapa bencinya saya kepada platform elektronika siap pakai, saya sangat menyarankan untuk selalu membuat sesuatunya dari "SCRATCH" ......yahh sudahlah, toh kali ini faktanya saya yang teracuni oleh robot mahal ini, padahal budget awal yang disepakati jauh dari kenyataan. Jadinya saya sedikit memaksa teman saya untuk upgrade budget...maafin saya ya...tapi ini WORTHED !

LEGO .....Kemahalan !  Line Tracer Lokal ......Keterlaluan ! (manualnya mungkin hanya dimengerti oleh yang buat). Robot Tamiya ...hanya mekanik saja.... Jadi apa yang sesuai keinginan agar anak SD-SMP mampu menyerap ilmu Elektronika + Mekanikal + Komputer ? Mungkin Produk dari ROBOTIS asal korea ini menjadi pilihan yang tidak terlalu mahal untuk ukuran sekarang.





Apa sih yang spesial ? Ini saya tunjukkan gambar buku petunjuknya yang seperti LKS ....Lego lewat brooo....






Paket robotik merek OLLO ini berbasiskan microcontroller yang diberi label CM-100 dimana dapat dioperasikan secara stand alone (8 buah project yang ter-install langsung) dan selanjutnya bisa di programkan sesuai keinginan melalui downloader dan console script.




Jadi endingnya....senanglah teman saya itu karena berhasil saya racuni setelah beberapa "approaching" dan akhirnya setuju melakukan upgrade budget setelah mendapat approval dari ibu negara.

Sayangnya karena paket robot ini sudah saya kirim jadinya saya tidak terlalu lama bermain-main ini...tapi ga apa lah..toh di youtube banyak yang sudah upload video nya..seperti yang ini ..







Ada yang berminat beli ? nitip saya boleh kok....heheheheh...

Kamis, 20 November 2014

INDOTECH TELECOM - ONE YEAR AFTER




This is the logo that we use since a year ago as a company, but you should know also that we almost thrown away an opportunity which handed over to us from a big (but out of business in east java) Korean company, since the severance package was quite interesting. The last six warriors was dare to take the chance by dreaming of owning a company after the laid off. And why not ? The resource , the knowledge and the know how is available. So then, here we are  a year after.


WHO WE ARE ..


Mr. Ferdy is the leader of the group since he is the eldest  and also the most experienced compared to others. He has great project managerial skills ranged from electrical project to telco business. He is a self taught entrepreneur and no doubt will inspire the others to follow his footsteps. 



Pak Cik Andri , as we called him, is a RF/BTS engineer specialist. He has experience in many fields related with BTS such as site survey, installation, commissioning, troubleshooting and many more. Don't worry of his focused mind because it is an advantage in project which needed an accurate time table.  



Dedy "Dejo" Joko is an expert in UNIX based system. If you have your Iphone cannot play video then he is the one to be called  first. Telco VAS system is also his expertise which include the HLR, SMSC, Soft Switch , and that kind of stuff. Best known for his lightning speed for server troubleshooting and he will guaranteed you with 100% network availability.



Kurniawan Hakim is the human resource expert in the group. Actually he is an RNC-BSS engineer but because of his good human approach then he is the best one to be in the position. Unix scripting is also his specialization so one day he might create a better communication between human and machine. And don't forget that he is a good photographer with his digital camera.


Sofyan "upank" is our top expert in telecommunication switching. He had been handling traditional wireless switching like the back of his hand so the soft switching is might be considered as a piece of cup cake for him. He also own his "digital era" business as a freelance IT-WEB developer and manage indotech company website www.indotechtelecom.co.id .




Nyoman "Nyo" Yudi . You know me well if you following this blog, yes i'm this blog writer. More about me please read this posting.


Winarno 'R-win' , he is the original starter of this company few years ago. He is expert in tower installation for BTS , including mechanical/electrical and microwave .  He has experience in Huawei / NSN / Samsung installation for many years. It is a great experience to join business with mr. R-win.



WHAT WE DO ..




Wireless Network Maintenance ranging from Core Network, Switching, VAS, BSS, BTS and RF. We offer an Integrated Solution for Service Level Agreement project. All-in-one online network monitoring and trouble ticketing will ease the job for better network performance.




RF optimization, drive test and evaluation. With the latest tools we can provide you the best performance for GSM-CDMA-LTE network.






Network Installation and commissioning is the foundation of all Telco business , so if we say that we can install faster and commissioning with the best result possible then no other choice other than choose us !


Yes....we can repair Telco equipment. What a complete company huh ? One service stop for all your Telco needs ...



WHERE TO FIND US ..




Please visit our wokshop at  Jalan Dukuh Kupang Barat III / 12 - Surabaya -  East Java
Phone : +62-31-5665309
e-mail : marketing@indotechtelecom.co.id



SEE YOU SOON ......

Rabu, 19 November 2014

[TUTORIAL & SCRIPT BREAKDOWN] RPM - TACHOMETER HONDA dengan ATTINY2313




Akhirnya balik lagi ke blog ini setelah beberapa waktu vakum. Dan kali ini menjawab beberapa request yang masuk untuk membahas lebih lanjut mengenai RPM - TACHOMETER untuk sepeda motor yang pernah dibahas disini . Sebenernya jika selalu mengikuti perkembangan blog ini maka tidak terlalu susah asal dasar pengetahuan timer dan interupt nya lengkap. 

Intinya pada project ini adalah mendeteksi RADIASI pulsa CDI ke BUSI dan dimasukkan ke PIN INTERRUPT dan kemudian dihitung jumlah pulsa yang muncul vs waktu. Dan didapatkanlah RPM yang diinginkan. Kali ini kita juga akan membuat animasi graph / level sehingga tidak bosan dengan angka-angka saja.

Perhatikan skematik dibawah ini dan bahan2nya bisa dilihat dari gambar berikut (klik untuk gambar lebih jelas)



Jangan lupa juga untuk menyediakan motor yang akan di "HIAS" yang kali ini meminjam motor anak buah saya yaitu HONDA SUPRA VIT. Saya memiliki pengalaman jika bebek honda lebih bocor sinyal CDI nya ketimbang motor lain. Jadi jika menggunakan motor lain maka disesuaikan pemilihan resistor sebelum transistor pembaca pulsa (2N3904) dan pengalaman lainnya ketika menggunakan sepeda motor Yamaha Vega maka transistor yg digunakan adalah PNP 2N3906 dengan tanpa menggunakan resistor pada basis dan VCC ke EMITOR sedangkan INTERUPT ke COLECTOR (dibalik).





Langsung aja kita bahas script nya biar ga bingung, agak panjang tapi ga rugi kok



>>>HEADER<<

Attiny 2313 yang digunakan adalah default yg memiliki clock 1MHz. 

#define F_CPU 1000000UL // sesuaikan clock yang digunakan !!
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <inttypes.h>
#include <avr/interrupt.h>

// ini untuk animasi kata awal, ubah sesuai keinginan atau hapus jika tidak mau
uint8_t angka1=16 ;
uint8_t angka2=17 ;
uint8_t angka3=20 ;
uint8_t angka4=15 ;


uint8_t segstep=0; // untuk pindah segmen

uint8_t kalibrasi=3; // kalibrasi awal

uint8_t valid=0; // variabel untuk mengatasi noise ke tombol

int number=0; // variabel menyimpan jumlah counter



>>>PENERJEMAH ANGKA ke SEGMEN<<

7 segmen yang digunakan merupakan common Anoda sehingga untuk menyalakan segmen dibutuhkan logic "LOW" atau 0 volt / Ground. Untuk animasi dan huruf dapat dikreasikan sendiri dengan kombinasi "LOW" untuk segmen menyala dan "HIGH" untuk segmen mati.

void conv_segmen(uint8_t digit)
// Rutin ini merubah angka dan animasi ke segmen
{
    switch (digit)        
          {
//angka biasa
  case 0 :  
     {
         PORTB &= ~_BV(PB0) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5); //PORT YG NYALA
         PORTB |= _BV(PB6) ; //PORT YG MATI 
      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 : //kosong
     {
    PORTB |= _BV(PB0) | _BV(PB1) |  _BV(PB2) |  _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;
      break;
           }
 //11 - 14 khusus untuk animasi level       
  case 11 : 
     {
         PORTB &= ~_BV(PB4); 
               PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB5) | _BV(PB6);
      break;
           } 
   
   case 12 : 
     {
         PORTB &= ~_BV(PB4) & ~_BV(PB2); 
               PORTB |= _BV(PB0) | _BV(PB1)  | _BV(PB3) | _BV(PB5) | _BV(PB6);
      break;
           }
  case 13 : 
     {
         PORTB &= ~_BV(PB4) & ~_BV(PB2) & ~_BV(PB5); 
               PORTB |= _BV(PB0) | _BV(PB1)  | _BV(PB3) | _BV(PB6) ;
         break;
           } 
   
   case 14 : 
     {
         PORTB &= ~_BV(PB4) & ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB5); 
               PORTB |= _BV(PB0) | _BV(PB3) | _BV(PB6) ;
         break;
           }
// kebetulan nama pemilik motor seperti ini, ubah sesuai keinginan
   case 15 : //r
     {
         PORTB &= ~_BV(PB6)  & ~_BV(PB4) ; 
                       PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB3) | _BV(PB2) | _BV(PB5) ;
         break;
           }  

   case 16 : //i
     {
         PORTB &= ~_BV(PB4); 
               PORTB |= _BV(PB0) | _BV(PB1) | _BV(PB3) | _BV(PB2) | _BV(PB5) | _BV(PB6)  ;
         break;
           }   
   
   case 17 : //b
     {
         PORTB &= ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB5) & ~_BV(PB2) & ~_BV(PB6); 
               PORTB |= _BV(PB0) |_BV(PB1)  ;
         break;
           }   

   case 18 : //y
     {

         PORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB5) & ~_BV(PB6);
               PORTB |= _BV(PB4)| _BV(PB0);
      break;
           } 

   case 19 : //u
     {

         PORTB &= ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) ;
               PORTB |= _BV(PB1)| _BV(PB0) | _BV(PB5) | _BV(PB6);
      break;
           } 

   case 20 : //0
     {
         PORTB &= ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB2) & ~_BV(PB6); 
               PORTB |= _BV(PB0) |_BV(PB1) |_BV(PB5)  ;  
      break; 
     }


}

}




>>>ANIMASI LEVEL RPM<<

Nilai RPM akan diterjemahkan dari angka menjadi level / bar graph

void animasi(uint8_t posisi)

{

switch(posisi)  {  
       case 0 :{ angka4=10; angka3=10 ; angka2=10; angka1=10;
              break; }
       case 1 :{ angka4=11; angka3=10 ; angka2=10; angka1=10;
              break; }
       case 2 :{ angka4=12; angka3=10 ; angka2=10; angka1=10;
              break; }
       case 3 :{ angka4=12; angka3=11 ; angka2=10; angka1=10;
              break; }
       case 4 :{ angka4=12; angka3=12 ; angka2=10; angka1=10;
              break; }
       case 5 :{ angka4=12; angka3=12 ; angka2=11; angka1=10;
              break; }
       case 6 :{ angka4=12; angka3=12 ; angka2=12; angka1=10;
              break; }
       case 7 :{ angka4=12; angka3=12 ; angka2=12; angka1=11;
              break; }
       case 8 :{ angka4=12; angka3=12 ; angka2=12; angka1=12;
              break; }
       case 9 :{ angka4=13; angka3=12 ; angka2=12; angka1=12;
              break; }
       case 10 :{ angka4=14; angka3=12 ; angka2=12; angka1=12;
              break; }
       case 11 :{ angka4=14; angka3=13 ; angka2=12; angka1=12;
              break; }
       case 12 :{ angka4=14; angka3=14 ; angka2=12; angka1=12;
              break; }
       case 13 :{ angka4=14; angka3=14 ; angka2=13; angka1=12;
              break; }
       case 14 :{ angka4=14; angka3=14 ; angka2=14; angka1=12;
              break; }
       case 15 :{ angka4=14; angka3=14 ; angka2=14; angka1=13;
              break; }
       case 16 :{ angka4=14; angka3=14 ; angka2=14; angka1=14;
              break; }
       default :{ angka4=14; angka3=14 ; angka2=14; angka1=14;
              break; }
         }

}



>>>INISIALISASI COUNTER<<

Counter 0 adalah counter 8 bit, sedangkan Counter 1 adalah 16 bit. Silahkan membaca terlebih dahulu penjelasan mengenai counter dan timer disini.

void init_ctr(void) //COUNTER 0 8 BIT untuk pindah kolom 7 segmen
{
  
   
   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 1 untuk penghitung pulsa saat 600ms
{
   
   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

}




>>>INTERRUPT TIMER<<


ISR(TIMER1_COMPA_vect) //interrupt timer 1 (16 bit)  untuk capture jumlah pulsa 

{ uint16_t rpm,anime; //variabel

anime=0;
rpm=0;

switch(kalibrasi) {  //Pemilih 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; }
      
   case 6 :{ 
          anime=1;
    break; }
      
   case 7 :{ 
          anime=2;
    break; }

    }

  //Pemilih antara angka rpm atau animasi level
switch(anime) { 

case 0 : { //ANGKA RPM

OCR1A  = 586;
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;
  
break ; }

case 1 : {  //ANIMASI MODE 1
OCR1A  = 100;
animasi(number/10);
  
break ; }
         
case 2 : {  //ANIMASI MODE 2
OCR1A  = 100;
animasi(number/50);

break ; }

  }


number=0;

}

ISR(TIMER0_COMPA_vect) // timer 0 (8 bit) untuk pindah kolom 7 segmen
{

//tiap segmen yg akan dinyalakan akan diberikan logic High

segstep++;

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

                 }


}


>>>COUNTER INTERRUPT dari BUSI<<

SIGNAL (SIG_INT0) //INTERRUPT 0 menghitung pulsa dari radiasi CDI vs BUSI
{
number++;

}



>>>TOMBOL<<

void tombol(void)
{


if(bit_is_clear(PIND, PIND3)) //pembacaan pada pin D3

{ valid++;  //validasi penekanan
_delay_ms(10);
}

if( valid >= 50) //jika melebihi noise motor/getaran, ubah suai nilai ini
{ 

valid=0;
kalibrasi++; //ubah kalibrasi



if (kalibrasi >= 8) kalibrasi=1;

conv_segmen(10);


//Menulis nilai kalibrasi ke EEPROM 
eeprom_write_byte((uint8_t*)20, kalibrasi); 
_delay_ms(500);


  }
}


>>>MEMBACA EEPROM  nilai KALIBRASI<<

void baca_eeprom(void)
{

kalibrasi = eeprom_read_byte((uint8_t*)20);

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


}



>>>MAIN PROGRAM<<

int main(void)
{

//Inisialisasi Interrupt
        GIMSK |= (1<<INT0) ; // inetrupt untuk hitung pulsa busi
   MCUCR |= (1<<ISC01)| (1<<ISC11); //fall edge 
//Inisialisasi PIN ATTINY2313 
 DDRD |= _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5)  ; // segmen select / common scans
 DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ; // seg a,b,c,d,e,f,g
    
 DDRD &= ~_BV(PD3) ; // Input kalibrasi

init_ctr(); //hidupkan COUNTER0
sei();

_delay_ms(1000);


//tampilan kata ke 2, sesuaikan dengan kebutuhan atau hapus jika tidak mau

angka1=16 ;
angka2=1 ;
angka3=19 ;
angka4=18 ;


_delay_ms(1000);

init_ctr1(); //hidupkan COUNTER 1

baca_eeprom(); // baca nilai kalibrasi 



//muter terussssss
while(1)

{
tombol();

}


}




videonya....seperti dibawah ini





tips: Tegangan pada lampu depan/ langsung dari coil bisa berlebih jika akimu rusak/habis. Jadi usahakan mencari sumber tegangan yg tidak merusak regulator 7805


 Selamat Mencoba

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