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.
#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.