Motor devir sayısı gösterme

umutozkans

Üye
Katılım
7 Ağu 2008
Mesajlar
78
Puanları
1
Yaş
40
Merhaba motor devir sayısını göstermek için aşağındaki kodu buldum.
#include<pic.h>
#include<delay.c>
#include<stdio.h>
#include<Lcd.c>
unsigned char sayac=0;
unsigned char sayim=0;
unsigned char hiz;
unsigned char sn=0;
unsigned char ilk=0;
unsigned char goster[]=" ";
void interrupt motor_hizi(void)
{
if(ilk==0)lcd_init();
ilk=1;
sayac++;
sn++;
if(sayac==2)
{
tmr0=61;
sayac=0;
hiz=sayim+sayim/4;
sayim=0;
}
if(sn>=20)
{
sn=0;
lcd_clear();
sprintf(goster,"%d",hiz);
lcd_puts(goster);
}

t0ıf=0;
}
main(void)
{
trısb=0;
trısa=1;
t0cs=0;
psa=0;
ps0=1;
ps1=1;
ps2=1;
tmr0=61;
t0ıe=1;
t0ıf=0;
ei();
for(;;)
{
while(ra0==0);
sayim++;
while(ra0==1);
}
}

Devre ve yapıyı komple kurdum. Motor dönüyor enkoder çıkışı pals veriyor. Ama kod devir/sn olarak yazılmış. Ben de "hiz=sayim+sayim/4; " satırını 60 ile çarptım RPM oldu ama LCD 60, 120,180 RPM gibi değerler gösteriyor ve 3. hane abuk subuk çıkıyor.Ara değerler yok yani.

1.
Programda her 100 ms'de (50 ms 'de kesme oluşuyor sayaç =2 olunca 100 ms) bir kesme ile hız hesaplanıyor. Ben bunu her 50 ms'de yapmayı düşünüyorum. Ama nasıl? (En iyisi her pals geldiğinde olmalı ama kod komple değişmeli galiba, onu bilmiyorum.)

2.
LCD ekranda 3. hane çıkmıyor bunu nasıl halledicem. (örn. 180 yerine 18|| çıkıyor)

yardımcı olursanız sevinirim.
 
Bu konuda bu sitede kimse bişey bilmiyo mu acaba??
 
Lcd ekrana yazı yazdırmak için pic basic kullanıyorum. komut olarak
LCDOUT $FE,$80,"ekrana cıkmasını istediğin yazı",DEC4 değişken ismi. ekrana yazılacak sayı 22 ise
ekranda 0022 görünür. sayımız 2222 ise, ekranda 2222 görünür.
 

Forum istatistikleri

Konular
129,847
Mesajlar
930,728
Kullanıcılar
452,702
Son üye
hsyn35

Yeni konular

Geri
Üst