pic_loader, evet encoder'ın çıkışından 1(+5v) ve 0(
gnd) şeklinde lojik çıkış geliyor ya ben ssiteme tam iyi bakmamaışım kusura bakma ben encoder motor üstünde zannediyordum encoder ze_tr hocamın dediği gibi A ve B diye iki çıkışı var bir puls diğeri yön bilgisini veriyor ve senin burda her iki çıkışıda kullanman gerek çünkü kol aşağı veya yukarı çıktığınıda bilmen gerek yani yön bilgisini bu nedenle iki ucuda kullanırsın ve bu encoder çıkışlarını daha düzgün sinyaller almak için lm339 komparatöründen geçirebilirsin ya ben şimdi sana örnek birde program vereyim bu program encoder dan alınan bilgilerle devir ve yön bilgilerini veriyor ccs c ile
**********************************
#INCLUDE <16F877A.H>
#USE DELAY (CLOCK=20000000)
#use fast_io (b)
#use fast_io (c)
#define use_portb_lcd true
#INCLUDE <LCD420.c>
int16 tur=0;
float tur_metre=0.15;//cm
//
#int_timer1
void timer1_kesmesi ()
{
set_timer1(65500);
if(input(pin_c7))
tur--;
else
tur++;
printf(lcd_putc,"\ftur sayisi:%ldtur\n",tur);
printf(lcd_putc,"metre:%0.2fm",tur*tur_metre);
}
void main()
{
set_tris_c(0x81);
output_c(0x00);
lcd_init();
setup_timer_1(t1_div_by_1|t1_external);
enable_interrupts(int_timer1);
enable_interrupts(global);
printf(lcd_putc,"\ftur sayisi:%ldtur\n",tur);
printf(lcd_putc,"metre:%0.2fm",tur*tur_metre);
set_timer1(65500);
while(1);
}
*********************************
bu program fikir vermek için eksik yönleri olabilir
ze_tr, hocam şu aşağıdaki mesaja kısaca neden böyle olduğuna dair bize bilgi veririmisiniz.
teşekkür ederim
"PID yerine PI kontrol algoritması daha iyi olabilir. Kol yatayda hareket ediyor olsa PID kullanmak zoundasın derdim"