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

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:

Selasa, 03 Juli 2012

Penemuan Xtal quartz sebagai penggerak "clock"






Penemuan xtal (quartz/kuarsa) oscillator pada awal abad 20 menjadi dasar pengembangan jam digital. Dengan berbagai aplikasi yg dapat dikerjakan oleh oscillator yg stabil ini membuat para produsen jam ingin memanfaatkannya sebagai oscillator pada jam.

Xtal Oscillator yg umumnya dipakai pada jam (yg dulunya selalu berlogo quartz) adalah memiliki frekuensi resonansi 32.768 hz. Nilai ini diperoleh dengan kompromi dunia BINER digital, dimana 2 pangkat 15 menghasilkan angka 32768. 

Piezoelektrik ditemukan oleh Jacques dan Pierre Curie pada tahun 1880. Paul Langevin pertama kali meneliti resonator kuarsa untuk digunakan dalam sonar selama Perang Dunia I. osilator kristal yang dikendalikan pertama, menggunakan kristal garam Rochelle, dibangun pada 1917 dan dipatenkan  pada tahun 1918 oleh Alexander M. Nicholson di Bell Telephone Laboratories, meskipun prioritasnya ditentang oleh Walter Guyton Cady . Cady dibangun osilator kristal kuarsa pertama tahun 1921. inovator awal lain dalam osilator kristal kuarsa termasuk GW Pierce dan Louis Essen.

Osilator kristal kuarsa dikembangkan untuk referensi frekuensi stabilitas tinggi selama tahun 1920-an dan 1930-an. Pada tahun 1926 kristal kuarsa digunakan untuk mengontrol frekuensi stasiun radio penyiaran dan populer pada operator radio amatir. Pada tahun 1928., Warren Marrison (dari Bell Telephone Laboratories) mengembangkan jam kristal kuarsa pertama. Penemuan ini menggantikan pelarian dan pendulum (sebagai referensi waktu), mengandalkan hanya pada getaran alami yang terjadi dalam kristal kuarsa sebagai osilator. Ini waktu perbaikan akurasi ke 1 detik dalam 30 tahun (atau 30 ms / tahun)  Memanfaatkan karya awal di Bell Labs, AT & T akhirnya mendirikan divisi Produk Frekuensi Kontrol yang dikenal hari ini sebagai Vectron Internasional.

Sejumlah perusahaan mulai memproduksi kristal kuarsa untuk digunakan elektronik selama ini. Menggunakan apa yang sekarang dianggap metode primitif, sekitar 100.000 unit kristal diproduksi di Amerika Serikat selama 1939. Selama Perang Dunia II, permintaan untuk kontrol frekuensi akurat radio militer dan angkatan laut dan radar mendorong perkembangan pesat industri manufaktur kristal kuarsa. Tipe yang sesuai dari kuarsa menjadi bahan yang langka sebelum ditemukan persedian yg banyak di Brasil.

Pada tahun 1968, Juergen Staudte menciptakan proses untuk pembuatan osilator kristal kuarsa saat bekerja di Amerika Utara Penerbangan (sekarang Rockwell). Staudte dipatenkan penemuannya, yang menggunakan proses photolithographic yang mirip dengan cara sirkuit terpadu yang dibuat. Pada tahun 1970 ia meninggalkan Amerika Utara Aviation untuk memulai perusahaannya sendiri, Statek, di Orange, California. Statek mulai memproduksi dan memasarkan osilator kuarsa pada tahun 1971.
Meskipun osilator kristal masih paling sering menggunakan kristal kuarsa, perangkat yang menggunakan bahan lain menjadi lebih umum, seperti resonator keramik.




(ada 3 part, sangat informatif )


Selanjutnya dengan perkembangan dunia elektronika yg sangat pesat di era 60-70 an , dimana microprocessor & chip semakin kecil dan terjangkau , jam tangan digital pertama diproduksi sekitar tahun 1968


Pada tahun 1972 Jam digital pertama dengan merek "PULSAR" keluar dipasaran dengan display berupa LED 7-segmen dan dinyatakan sebagai " the first all-electronic wristwatch"

 

Pada tahun 1974 Microma LCD wrist watch keluar yang bekerjasama dengan seiko , dan diklaim sebagai "The First System-On-Chip Integrated Circuit LCD watch" 






TIME LINE JAM DIGITAL

sumber : http://invention.smithsonian.org/cen...artz/timeline/


1880 
Pierre Curie discovers piezoelectricity.

1888 
Friedrich Reinitzer and Otto Lehmann discover liquid crystals

1927 
Warren Marrison invents the 1st quartz clock

1954
First watch batteries

1959 
Invention of the integrated circuit

1961-2 
Development of light-emitting diodes.

1967
The Beta 21 is the 1st quartz watch prototype

1968 
Development of Liquid crystal displays

1969 
Seiko introduces the Astron to the Japanese market

1970 
The Pulsar is the 1st digital watch

1976 
The 1st watch under $20

1983 
The Swiss introduce the Swatch
Share:

Selasa, 19 Juni 2012

Membuat Game Pacman "PaKMan" sederhana dengan ATTiny2313

Setelah mendapatkan ilmu yg cukup dari beberapa sumber di internet, akhirnya kesampaian juga untuk membuat game pacman sederhana, dan kita namakan ..

LONELY PAKMAN




Kenapa Lonely ? karena dia memang kesepian, sendirian gerak-gerak di layar TV.

sebaiknya membaca dulu pembahasan dasar televisi di: part#1  part#2

Siapkan Bahan-bahan berikut ini:

1. Micro-AVR ATTiny 2313
2. Breadboard
3. Power suply 5v , atau adaptor 12v dan diregulasi 7805
4. Resistor 10K, 470
5. Tombol push button
6. Xtal 20Mhz + capasitor 22pF
7. Programer AVR
8. Pesawat TV yg nganggur ( jangan sampai bertengkar dengan sodara yg lagi nonton sinetron)

Kemudian skematik yg digunakan seperti gambar berikut :


Klik pada gambar buat memperjelas gambar




Ntar hasilnya seperti berikut ini :








Listing program dari game lonely pakman sebagai berikut :

//==========LONENLY PAKMAN=======
//    by  : ahocool@gmail.com
//   http://aisi555.blogspot.com
//=========== 2012 ===============
#define F_CPU 20000000UL   //xtal yg digunakan
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

#define HSYNC PORTB=0; //H sinkronisasi
#define BLACK PORTB=1; // warna hitem  
//deklarasi variable 
uint8_t textnya,pakline,arah;  
static uint16_t x,y,tick;
char pakman1[12] =  // memory penyimapan data gambar pakman

   {  //kanan mangap
0b00000000,
0b01111100,
0b11001100,
0b11001000,
0b11110000,
0b11100000,
0b11000000,
0b11100000,
0b11110000,
0b11111000,
0b01111100,
0b00000000,
};


char pakman2[12] =
   {    //kanan mingkem
0b00000000,
0b01111100,
0b11001110,
0b11001110,
0b11111110,
0b11111110,
0b11111110,
0b11111110,
0b11000000,
0b11111110,
0b01111100,
0b00000000,
};


char pakman3[12] =

   {  //kiri mangap
0b00000000,
0b01111100,
0b01100110,
0b00100110,
0b00011110,
0b00001110,
0b00000110,
0b00001110,
0b00011110,
0b00111110,
0b01111100,
0b00000000,
};


char pakman4[12] =
   {   //kiri mingkem
0b00000000,
0b00111100,
0b01100110,
0b01100110,
0b01111110,
0b01111110,
0b01111110,
0b01111110,
0b00000110,
0b01111110,
0b00111100,
0b00000000,
};


char pakman5[12] =

   {   //bawah mangap
0b00000000,
0b01111100,
0b11111110,
0b11110010,
0b11110010,
0b11001110,
0b11001110,
0b11000010,
0b10000010,
0b10000010,
0b10000010,
0b00000000,
};


char pakman6[12] =
   {   //bawah mingkem
0b00000000,
0b01111100,
0b11111110,
0b11110010,
0b11110010,
0b11111110,
0b10111110,
0b10111110,
0b10111110,
0b10111110,
0b10111100,
0b00000000,
};

char pakman7[12] =

   {  //atas mangap
    0b00000000,
    0b10000010,
    0b10000110,
    0b10000110,
    0b10000110,
    0b11011110,
    0b10110010,
    0b11110010,
    0b11111110,
    0b01111100,
    0b00000000,
};


char pakman8[12] =
     { //atas mingkem
    0b00000000,
    0b10111100,
    0b10111110,
    0b10111110,
    0b10111110,
    0b10111110,
    0b11110010,
    0b11110010,
    0b11111110,
    0b01111100,
    0b00000000,
};

void timer_init(void){ 
//inisialisasi timer per rasterline 64us (PAL TV) 
TCCR1B |= (1<<WGM12);
TIMSK |= (1<<OCIE1A);
OCR1A = 1280; //64 us dengan xtal 20Mhz, untuk 16Mhz= 1024;
TCCR1B |= (1<<CS10); //full speed
}



//interupt timer untuk menampilkan gambar
ISR (TIMER1_COMPA_vect) {
static uint16_t rasterline=0; //baris
uint16_t a;
uint8_t out=0; // variabel simpan memory byte pakman

HSYNC;
        
//posisi berdasarkan nilai x,y dengan lebar 12 baris
if( rasterline > (18 + y)  && rasterline <= (30 +y) ) { 
_delay_us(4);
BLACK;
_delay_us(7);
        for(a=0;a<x;a++) asm("nop");
      // tampilkan sesuai arah dari pakman
 if(arah==0){
 if(tick<5000)out= pakman1[pakline];
 else out= pakman2[pakline];
      } 
 else if(arah==1){
 if(tick<5000)out= pakman3[pakline];
 else out= pakman4[pakline];
      }       
 if(arah==2){
 if(tick<5000)out= pakman5[pakline];
 else out= pakman6[pakline];
      }
 if(arah==3){
 if(tick<5000)out= pakman7[pakline];
 else out= pakman8[pakline];
      }
//geser bit untuk tampilkan data gambar ke pakman ke TV 
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
      

      pakline++;  //tambahkan index array dari gambar pakman



// Vsync ada disini tanpa membedakan genap ganjil 
else if( rasterline >= 0 && rasterline < 5 ) {
_delay_us(27);
BLACK;
_delay_us(5);
HSYNC;
_delay_us(27);
BLACK;
} else if( (rasterline >= 5 && rasterline <= 10) ) {
_delay_us(2);
BLACK;
_delay_us(28);
HSYNC;
_delay_us(2);
BLACK;
} else if( rasterline >311-6 ) {
_delay_us(2);
BLACK;
_delay_us(28);
HSYNC;
_delay_us(2);
BLACK;
} else { 
_delay_us(3);
BLACK;
pakline=0;
  }

rasterline++;
tick++; //variabel timer untuk mangap & mingkem
    if(tick >10000) tick=0;

if( rasterline > 311 )rasterline = 0; //maksimum baris/raster
}


void tombol(void) // membaca tombol
{
if(bit_is_clear(PIND, PIND3)) 
{x--;
arah=1;
if(x<1)x=125;
_delay_ms(50);
}

else if(bit_is_clear(PIND, PIND4))
{
x++;
arah=0;
if(x>125)x=1;
_delay_ms(50);
}

else if(bit_is_clear(PIND, PIND5))
{y-=3;
arah=3;
if(y<3)y=280;
_delay_ms(50);
}

else if(bit_is_clear(PIND, PIND6))

{y+=3;
arah=2;
if(y>280)y=0;
_delay_ms(50);
}

}
int main() {  //Main Program
x=1;
y=13;
arah=0;
 DDRD &=~(1<<PD3) & ~(1<<PD4) & ~(1<<PD5) & ~(1<<PD6); //tombol
DDRB = (1<<PB7)|(1<<PB0); //PB0=1K, PB7=470 ohm

timer_init();
sei();

for( ;; )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 (14) antares (11) arduino (28) 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 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (76) 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 (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) 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 (8) radio (28) raspberry pi (9) 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) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika