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

Forum istatistikleri

Konular
128,159
Mesajlar
915,546
Kullanıcılar
449,912
Son üye
mavilacivert11

Yeni konular

Geri
Üst