Gampang membuat frequency counter dengan ATmega8535.

Pada program berikut kita akan membuat frequency counter atau penghitung frekuensi memakai counter 1 pada ATmega8535, walaupun tipe AVR lain dapat juga dipakai.

Bahasa pemrogramannya kita pakai yang simple, BASCOM-AVR.

Aplikasi Mikrokontroler

 $regfile = “m8535.dat”                                                                                                            $crystal = 16000000                                                                                                                Config Lcdpin=Pin,Rs=PORTC.0,E=PORTC.2 , Db4 = PORTC.4 , Db5 = PORTC.5 , Db6 = PORTC.6, Db7 = PORTC.7                                                                                                         Config Lcd = 16 * 2                                                                                                                      Cursor Off                                                                                                                                         Cls                                                                                                                                                 Config Timer1 = Counter , Edge = falling                                                                                  Lcd ”  Freq Counter  ”                                                                                                                  Lowerline                                                                                                                                         Lcd “Freq=”
Do
Start Counter1
Wait 1
Stop Counter1
Locate 2,6
Lcd Counter1 ; ” Hz   ”
Counter1 = 0
Loop
End

Jalannya Program.

Sebagaimana peralatan frequency counter, maka pulsa yang masuk ke pin T1 akan dihitung dan kemudian ditampilkan setiap 1 detik, sehingga dapat diberi satuan Hz. Berikan inputan pulsa misalnya dari function generator dengan output gelombang kotak, kemudian atur frekuensinya misalnya 100 Hz, maka pada LCD akan tampil “Freq=100Hz”.

Penjelasan program.

Config Timer1=Counter,Edge=falling
Timer 1 difungsikan sebagai counter dengan sinyal deteksi falling edge.
Start counter1
Wait 1
Stop counter1
Frekuensi artinya jumlah pulsa selama 1 detik, sehingga counter 1 diaktifkan selama 1 detik, kemudian dimatikan.
Locate 2,6
Lcd counter1 ; ” Hz   “
Menampilkan hasil cacahan counter 1 di baris 2 kolom 6, disebelah “Freq=”. Titik koma (;) digunakan untuk menampilkan ke LCD pada alamat/posisi sesudahnya, sehingga disebelah kanan tampilan nilai counter1, akan tampil “Hz”, anda bisa juga menulis programnya sebagai berikut:
Lcd counter1
Lcd “Hz  “

Master Mikrokontroler

Kalau mau pakai bahasa C (dengan CodeVisionAVR) juga gampang :

#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
unsigned int counter1;
unsigned char buffer[10];
void main(void)
{
lcd_init(16);
lcd_clear();
lcd_putsf(”  Freq Counter”);
lcd_gotoxy(0,1);
lcd_putsf(“Freq=”);
while (1)
      {
      TCCR1B=0x06;
      delay_ms(1000);
      TCCR1B=0x0;
      counter1=(256*TCNT1H)+TCNT1L;   
      sprintf(buffer,”%d Hz “,counter1);
      lcd_gotoxy(5,1);
      lcd_puts(buffer);
      TCNT1H=0;
      TCNT1L=0;
      }
}

Jangan lupa untuk menghubungkan pin RW (LCD) ke PORTC.1 dan mengatur konfigurasi library LCD pada CodeVisionAVR !!.

 

31 thoughts on “Gampang membuat frequency counter dengan ATmega8535.

  • April 13, 2012 at 11:32 am
    Permalink

    wah mas mohon bantuannya,,
    maksud dari script ini apa ya?
    TCCR1B=0×06;
    delay_ms(1000);
    TCCR1B=0×0;
    counter1=(256*TCNT1H)+TCNT1L;
    sprintf(buffer,”%d Hz “,counter1);
    lcd_gotoxy(5,1);
    lcd_puts(buffer);
    TCNT1H=0;
    TCNT1L=0;
    }

    counter1=(256*TCNT1H)+TCNT1L;
    mohon penjelassannya mas

    Reply
    • April 13, 2012 at 3:42 pm
      Permalink

      TCCR1B=0×06; //timer 1 sebagai counter, falling edge
      delay_ms(1000);//tunda 1 detik, ini untuk mencacah 1 detik (freq=jml pulsa dlm 1 detik)
      TCCR1B=0×0; //matikan timer/counter
      counter1=(256*TCNT1H)+TCNT1L; //hasilnya ada di 2 byte : TCNT1H+TCNT1L, shg data frek ada disini
      sprintf(buffer,”%d Hz “,counter1); //counter1 tipe datanya integer, shg harus diconvert ke string
      lcd_gotoxy(5,1); //posisikan cursor pada baris ke 2 kolom ke 6
      lcd_puts(buffer); //tampilkan nilai freq
      TCNT1H=0; //kosongkan register timer krn mo dipake utk nyacah lagi
      TCNT1L=0;
      }

      counter1=(256*TCNT1H)+TCNT1L;

      Reply
  • December 31, 2012 at 6:14 pm
    Permalink

    kalo mau baca tiga input frekuensi gimana mas, trus klo mau dibatasi semisal 50hz dan lebihnya dari 50hz kita buang kesalah satu port bagaimana mas , mohon bantuanya !!

    Reply
    • January 2, 2013 at 5:44 am
      Permalink

      programnya cukup panjng mas kalau untuk itu..

      Reply
  • February 9, 2013 at 5:50 pm
    Permalink

    Mas mau nanya, kalo port PB1 dimasukkan input berupa sinus bertegangan kecil apa bisa??

    Reply
    • February 11, 2013 at 7:45 am
      Permalink

      Signal yang masuk harus kotak mas, TTL. Bukan sinus.

      Reply
  • April 18, 2013 at 10:54 am
    Permalink

    kalo outputnya pake 4 buah LED matrix, terus satuannya bisa Hz, KHz, dan MHz itu skematik dan pemrogramannya gimana yah? makasih

    Reply
  • August 22, 2013 at 11:19 am
    Permalink

    kalau nilai frekuensi yg ingin ditampilkan bilangan pecahan gimna acaranya?

    Reply
    • August 30, 2013 at 10:23 am
      Permalink

      Tinggal ubah tipe variabelnya menjadi single

      Reply
  • October 6, 2013 at 12:02 pm
    Permalink

    kalau frekuensi yang diukur 50.01 bisa ditampilkan g mas?

    Reply
    • October 22, 2013 at 10:10 am
      Permalink

      Bisa saja mas.

      Reply
  • October 6, 2013 at 2:49 pm
    Permalink

    kalau membuat frekuensi meter dengan sensitifitas 0.01 HZ bgman programnya gan?

    Reply
    • October 7, 2013 at 3:35 pm
      Permalink

      Kalau program panjang mas, tapi prinsipnya bacanya tidak per-detik, bisa diperkecil waktunya

      Reply
  • March 8, 2014 at 2:08 pm
    Permalink

    mas, permisi mau tanya
    kalau program untuk kendali dimmer lampu bagaimana cranya mas?
    jadi ketika diberi input pwm sekian nyala lampu redup. itu caranya bagaimana mas ya?
    terima kasih

    Reply
    • March 12, 2014 at 9:41 am
      Permalink

      Lampu DC tinggak konek outnya dengan PWM (kalau perlu kasih driver). Lampu AC perlu tambahan zero crossing detector

      Reply
  • March 25, 2014 at 2:32 am
    Permalink

    mas, kalau deteksi warna pakai sensor TCS dengan atmega 8535 gimana caranya ya???

    Reply
    • March 25, 2014 at 8:25 am
      Permalink

      agak rumit itu mas, pelajari datasheetnya dulu

      Reply
  • June 24, 2014 at 9:01 am
    Permalink

    Start counter1
    Wait 1
    Stop counter1
    Frekuensi artinya jumlah pulsa selama 1 detik, sehingga counter 1 diaktifkan selama 1 detik, kemudian dimatikan.

    program diatas sudah saya coba, tapi waktunya kok gak pas selama 1 detik ya mas?
    gmana caranya agar waktunya akurat selama 1 detik?

    Reply
    • June 26, 2014 at 6:20 am
      Permalink

      Kalau gak pas kemungkian frekuensi clock tidak sama. Cek crystalnya, harus sama dengan program, kalau beda tinggal samakan saja programnya di bagian $crystal=…..

      Reply
  • June 25, 2014 at 6:37 pm
    Permalink

    mas bagaimana kalau inputan berupa gelombang sinus? dan range yang dihasilkan dari program di atas berapa?
    terima kasih sebelumnya.

    Reply
    • June 26, 2014 at 6:12 am
      Permalink

      Untuk gelombang sinus harus dibuat menjadi kotak dulu dg level TTL.

      Reply
  • August 9, 2014 at 10:20 am
    Permalink

    Mas, kalau pakai bahasa C bagaimana? minta tolong ya…sbb saya gak biasa pake bascom, matur suwun…

    Reply
    • August 11, 2014 at 8:27 am
      Permalink

      Lain kali kita posting mas Taufik. Insya Allah..

      Reply
  • November 18, 2014 at 11:49 pm
    Permalink

    mas moho bantuan bisa share interface antara mikrokontroler dengan speaker gak??pake tambahan ic apalagi ya??mksh

    Reply
    • March 12, 2015 at 1:27 pm
      Permalink

      Kalau sekedar membunyikan seperti alarm (tidak keluar suara seperti poliponik) kan tinggal tambah driver pakai transistor saja mas.

      Reply
  • November 18, 2014 at 11:51 pm
    Permalink

    mas mohon share interface antara mikro dengan speaker dong,,tpi pake bahasa C,,itu perlu tambahan ic apa??

    Reply
    • December 15, 2014 at 1:16 pm
      Permalink

      Kalau secara teknis nyambung dari mikro ke speaker hanya perlu transistor sebagai switch saja mas.

      Reply
  • March 19, 2015 at 12:26 am
    Permalink

    mas untuk waktu tunda 15 detik,untuk mencacah 15 detik (freq=jml pulsa dlm 15 detik) itu tinggal mengubah delay_ms nya menjadi 15 ya..
    tpi saya menggunakan mikro atmega8 kok mikro nya engga pas 15 detik ya ?
    terima kasih.

    Reply
    • March 19, 2015 at 9:11 am
      Permalink

      Kalau harus tepat sampai benar2 pas agak susah kalau pakai fungsi delay. Kalau mau mendekai tepat pakai timer mas.

      Reply
  • July 26, 2015 at 6:49 pm
    Permalink

    Mas mohon bantuannya, kalau keluaran frekuensi di LCDnya mau koma gimana ya? misal 10.3 Hz untuk bahasa CVAVR? Terimakasih..

    Reply
    • July 29, 2015 at 3:38 pm
      Permalink

      Silakan cek postingan tanggal 29 Juli 2015 mbak Mira..

      Reply

Leave a Reply to aryo Cancel reply

WhatsApp chat
%d bloggers like this: