Ada
banyak metode dalam mengukur kecepatan putaran motor, salah satunya
adalah yang digunakan pada Aplikasi ini, yaitu dengan menggunakan
optocoupler tipe slot dan sebuah piringan derajat yang diintegrasikan
pada mekanik motor. Piringan derajat yang telah diberi lubang-lubang
berjarak sama persis akan ikut berputar saat motor berputar, dan
lubang-lubang tersebut akan membuat optocoupler menghasilkan pulsa-pulsa
akibat dari terbuka-tertutup-nya slot di antara LED-IR dan
phototransistor pada optocoupler.
DI-REV1
(DI-Rotary Encoder Versi #1) adalah modul produksi DEPOK INSTRUMENTS
yang terdiri atas dua bagian: Piringan derajat, dan rangkaian
optocoupler tipe slot. Modul ini sangat cocok digunakan untuk menghitung
putaran motor. Modul inilah yang menjadi sensor utama yang digunakan
dalam Aplikasi ini. Untuk CPU (Central Processing Unit) –nya
digunakan Smart AVR System yang adalah sistem mikrokontroler yang
berbasis ATmega8535(L). Dan untuk menampilkan hasil dari perhitungan
kecepatan digunakan Smart LCD16X2 Board, yaitu modul LCD yang dapat
menampilkan karakter ASCII sebanyak 16 kolom x 2 baris.
Hasil dari perhitungan kecepatan putaran motor dalam Aplikasi (Seri Pemantauan Kecepatan [I]) – Pengukur Keceptan Putaran Motor ini adalah dalam satuan meter per detik.
- DI-Smart AVR System (Sistem Minimum Mikrokontroler AVR ATMEGA8535)
- DI-Smart Extension Board
- DI-Smart LCD16X2 Board
- DI-REV1 (DI-Rotary Encoder Versi #1)
Flowchart:
Instalasi:
- Pasangkan Piringan Derajat pada motor yang akan diukur kecepatan putarannya.
- Posisikan Piringan Derajat pada slot sensor optocoupler rangkaian sensor REV1.
- Hubungkan data keluaran modul sensor REV1 pada terminal D0 Smart Extension Board.
- Hubungkan modul Smart Extension Board pada Port-B Smart AVR System (PORTB.0 = Data Sensor).
- Hubungkan modul Smart LCD16X2 Board pada Port-D Smart AVR System.
- Hubungkan sumber tegangan 9-12 VDC pada terminal power Smart AVR System.
- Unduh skrip program di bawah ini.
- Selamat mencoba.
I. BASCOM AVR:
$regfile = “m8535.dat”
$crystal = 8000000
Config Lcd = 16 * 2 $lib “lcd4busy.Lbx”
Const _lcdport = Portd
Const _lcdddr = Ddrd
Const _lcdin = Pind
Const _lcd_e = 2 Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off
Cls Const
N = 56
Const R = 2.2
Const Dua_pi = 6.28
Dim Rps As Single
Dim V As Single
Dim Buffs As String * 16
Config Timer1 = Counter , Edge = Falling , Prescale = 1
Stop Timer1
Do
Timer1 = 0
Start Timer1
Wait 1
Stop Timer1
Rps = Timer1 / N
V = Rps * Dua_pi
V = V * R
Buffs = Fusing(rps , “#.##”)
Cls
Lcd Buffs ; ” rps”
Buffs = Fusing(v , “#.##”)
Lowerline
Lcd Buffs ; ” cm/s”
Loop
II. Code Vision AVR:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 8/12/2010
Author :
Company :
Comments:
Chip type : ATmega8535
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 128
*****************************************************/
#include <mega8535.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×12 ;PORTA
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
unsigned char sbuff[16];
#define r 2.2
#define n 56
#define dua_pi 6.28
float v,rps;
void main(void)
{
TCCR1A=0×00;
TCCR1B=0×00;
TCNT1H=0×00;
TCNT1L=0×00;
ACSR=0×80;
// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_putsf(“Jml Pulsa/detik”);
while (1)
{
TCNT1H=0×00;
TCNT1L=0×00;
TCCR1B=0×06;
delay_ms(1000);
TCCR1B=0;
rps=(float) TCNT1/n;
v=rps*dua_pi*r;
ftoa(rps,2,sbuff);
lcd_clear();
lcd_puts(sbuff);
lcd_putsf(” rps”);
ftoa(v,2,sbuff);
lcd_gotoxy(0,1);
lcd_puts(sbuff);
lcd_putsf(” cm/s”);
};
}
0 komentar:
Posting Komentar