çizgi izleyen robot yardım

bay_momoli

Üye
Katılım
8 Mar 2010
Mesajlar
1
Puanları
1
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NOCPD,NOLVP
#use delay(clock=4000000) //osilatör frekansını tanıtıyoruz
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#use fast_io(d) //Port yönlendirme komutları D portu için geçerli

#byte portD=8 // Bu komutla portd kelimesi denetleyicinin D portu kaydedicisi adresiyle eşleştirilmiştir

int giris; // 8 bitlik tamsayı tipinde değişkenler tanımlanıyor void main()

void main()

{

setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_adc(ADC_OFF); // ADC birimi devre dışı

set_tris_b(0xff);
set_tris_c(0x00);
set_tris_d(0x00);

output_c(0x00); //C portunun tüm pinlerini sıfırladık
output_d(0x00); //D portunun tüm pinlerini sıfırladık

setup_ccp1(CCP_PWM); //CCP1 modülünden PWM'i seçiyoruz
setup_ccp2(CCP_PWM); //CCP2 modülünden PWM'i seçiyoruz

setup_timer_2(T2_DIV_BY_16,255,1); //PWM frekansını ve çevrim süresini ayarlıyoruz



while(true) //sonsuz döngü oluşturuyoruz

{

giris=input_b(); //LED'lere CNY70'in bilgisi vermek için B portundaki bilgiyi D portuna veriyoruz
giris=giris&0b00011111;
portd=giris;

if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==0 && input(pin_b4)==1) //1.sensör çizgiyi algılayınca
{
set_pwm1_duty(64); //1.motora 255 çevrim süresinden 64 verip yaklaşık %25 güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==1 && input(pin_b4)==0) //2.sensör çizgiyi algılayınca
{
set_pwm1_duty(128); //l.motora 255 çevrim süresinden 128 verip yaklaşık %50 güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==0 && input(pin_b2)==1 && input(pin_b3)==0 && input(pin_b4)==0) //3.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(255); //2.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
}
if (input(pin_b0)==0 && input(pin_b1)==1 && input(pin_b2)==0 && input(pin_b3)==0 &&input(pin_b4)==0) //4.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(128); //2.motora 255 çevrim süresinden 128 verip yaklaşık %50 güç veriyoruz
}
if (input(pin_b0)==1 && input(pin_b1)==0 && input(pin_b2)==0 && input(pin_b3)==0 &&input(pin_b4)==0) //5.sensör çizgiyi algılayınca
{
set_pwm1_duty(255); //1.motora 255 çevrim süresinden 255 verip tam güç veriyoruz
set_pwm2_duty(64); //2.motora 255 çevrim süresinden 64 verip yaklaşık %25 güç veriyoruz
}
}
}

arkadaşlar proje ödevim için yaptığım çizgi izleyen robot enerji verilince 2 motorda sürekli çalışıyor.sensör devresi düzdün çalışıyor pic e okuduğu sensörden 5V gönderiyor fatar motorlar buna göre çalışmıyor.proğramında bir eksik mi var acaba.şimdiden teşekkürler.
 
ya aynı programı bende kullandım ve3 .sensor gordugunde motorlar esit hızda calısmalıyken biri digerinden %25 ya da %50 yavas calısıyor ...sizde de aynı problem mi var acaba
 
ya yok mu cizgi izleyen bi robot yapmak isteyene yardım edebilecek kimse:)
lütfen yaa isis ve ares te 16f877a ile tasarlanmıs devreleri yollayabilecek birileri olsun ...
 

Yeni mesajlar

Forum istatistikleri

Konular
128,158
Mesajlar
915,525
Kullanıcılar
449,904
Son üye
teknikbilimlers31

Yeni konular

Çevrimiçi üyeler

Geri
Üst