Senin, 14 September 2015

Tachometer (Alat ukur kecepatan putar) Digital menggunakan AT89S51

Proyek ini memperkenalkan Digital tachometer tiga digit menggunakan mikrokontroler 89S51 yang dapat digunakan untuk mengukur putaran / detik dari putaran roda, disc, poros atau sejenisnya. Tachometer dapat mengukur sampai maksimal 255 rev / detik pada akurasi 1  rev / detik. Teknik yang diperlukan adalah  melakukan untuk menyelaraskan sensor yang diletakkan berdekatan dengan strip reflektif (aluminium foil, kertas putih atau sejenisnya) ditempelkan pada permukaan yang berputar dan meter menunjukkan rev / detik pada layar. Diagram rangkaian dari tachometer digital ditampilkan di bawah.



Tachometer digital menggunakan AT89S51



Bagian pertama dari rangkaian tersebut adalah pickup optik berdasarkan foto transistor Q4 dan merah LED D1. Setiap kali garis reflektif pada objek berputar lewat di depan rangkaian sensor, cahaya yang dipantulkan jatuh pada foto transistor yang membuatnya bereaksi dan akibatnya tegangan kolektor turun menuju nol. Bila dilihat melalui oscilloscope gelombang kolektor dari Q4 foto transistor (2N5777) akan terlihat seperti ini:


Bagian berikutnya adalah unit pengkondisian sinyal berdasarkan  opamp (IC1) LM324. Hanya satu opamp dalam quad LM324 digunakan dan pembanding tegangan referensi ditetapkan pada 3.5V (menggunakan resistor R14 dan R15). Tugas unit pembanding ini adalah untuk mengkonversi bentuk gelombang kolektor runcing menjadi rangkaian pulsa rapi persegi sehingga dapat diterapkan ke mikrokontroler. Setiap kali tegangan kolektor dari foto transistor berjalan di bawah 3.5V, output dari komparator pergi ke saturasi negatif dan setiap kali tegangan kolektor dari transistor foto berjalan di atas 3.5V, output komparator menuju ke saturasi positif menghasilkan bentuk gelombang seperti ini:


Output pikap tachometer optik

Dari atas dua grafik Anda dapat melihat bahwa gelombang pulsa negatif menunjukkan bagian reflektif melintasi sensor dan itu berarti satu revolusi. Jika diukur jumlah pulsa negatif yang terjadi dalam satu detik, maka itulah rev / sec dari objek berputar dan itulah yang diukur oleh mikrokontroler.

AT89S51 mikrokontroler sini melakukan dua proses, yaitu:
1) Hitung jumlah pulsa berlangsung negatif tersedia di pin T1 nya (pin15).
2) Melakukan prthitungan matematika dan menampilkan hitungan pada 3 digit 7 segmen.

Untuk penghitungan kedua timer dari AT89S51 (Timer0 dan Timer1) yang digunakan. Timer 1 dikonfigurasi sebagai 8 bit auto reload counter untuk menghitung jumlah pulsa nol yang masuk dan Timer0 dikonfigurasi sebagai timer 16 bit yang menghasilkan diperlukan 1 detik rentang waktu untuk hitungan Timer1.

Program.
ORG 000H
MOV DPTR,#LUT              // moves the addres of LUT to DPTR
MOV P1,#00000000B          // Sets P1 as an output port
MOV P0,#00000000B          // Sets P0 as an output port
MAIN: MOV R6,#14D
      SETB P3.5
      MOV TMOD,#01100001B  // Sets Timer1 as Mode2 counter & Timer0 as Mode1 timer
      MOV TL1,#00000000B   //loads initial value to TL1
      MOV TH1,#00000000B   //loads initial value to TH1
      SETB TR1             // starts timer(counter) 1
BACK: MOV TH0,#00000000B   //loads initial value to TH0
      MOV TL0,#00000000B   //loads initial value to TL0
      SETB TR0             //starts timer 0
HERE: JNB TF0,HERE         // checks for Timer 0 roll over
      CLR TR0              // stops Timer0
      CLR TF0              // clears Timer Flag 0
      DJNZ R6,BACK
      CLR TR1              // stops Timer(counter)1
      CLR TF0              // clears Timer Flag 0
      CLR TF1              // clears Timer Flag 1
      ACALL DLOOP          // Calls subroutine DLOOP for displaying the count
      SJMP MAIN            // jumps back to the main loop
DLOOP: MOV R5,#100D
BACK1: MOV A,TL1           // loads the current count to the accumulator
       MOV B,#100D
       DIV AB              // isolates the first digit of the count
       SETB P1.0
       ACALL DISPLAY       // converts the 1st digit to 7 seg pattern
       MOV P0,A            // puts the pattern to Port 0
       ACALL DELAY         // 1mS delay
       ACALL DELAY
       MOV A,B
       MOV B,#10D
       DIV AB              // isolates the secong digit of the count
       CLR P1.0
       SETB P1.1
       ACALL DISPLAY       // converts the 2nd digit to 7 seg pattern
       MOV P0,A
       ACALL DELAY
       ACALL DELAY
       MOV A,B             // moves the last digit of the count to accumulator
       CLR P1.1
       SETB P1.2
       ACALL DISPLAY       // converts the 3rd digit to 7 seg pattern
       MOV P0,A
       ACALL DELAY
       ACALL DELAY
       CLR P1.2
       DJNZ R5,BACK1       // repeats the subroutine DLOOP 100 times
       RET

DELAY: MOV R7,#250D        // 1mS delay
 DEL1: DJNZ R7,DEL1
       RET

DISPLAY: MOVC A,@A+DPTR    // gets 7 seg digit drive pattern for current value in A
         CPL A             //  (See Note 1)
         RET
LUT: DB 3FH                // Look up table (LUT) starts here
     DB 06H
     DB 5BH
     DB 4FH
     DB 66H
     DB 6DH
     DB 7DH
     DB 07H
     DB 7FH
     DB 6FH
END

Catatan.

Sumber: http://www.circuitstoday.com/digital-tachometer-using-8051

Tidak ada komentar:

Posting Komentar