rf pic haberleşme dc motor sürme

izafe

Üye
Katılım
16 Ağu 2008
Mesajlar
13
Puanları
1
Merhabalar;

Bitirme ödevim ivme sensörüyle araba kontrol etmekti,kodları ccsc de yazdım similasyonunu proteusta yapıyorum doğru çalışıyor.Fakat devreyi kurduğumda çalışmıyor..1haftam var tez sunumuna acil yardımcı olabilecek birilerini arıyorum.

Sensorden alınan analog data dijitale çevriliyor.RF modulle alıcı pice yollanıyor.Alıcı da gelen dataya göre motorların ileri geri gitmesine karar veriliyor.Alıcı kısımda iki tane motor sürmem gerekiyor yanii...

kodları da ekliyorum fikirlerinizi bekliyorum..
alıcı---------------------
#include <16f877A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,Stream=PC)
#use rs232(baud=2400,xmit=Pin_C3,rcv=Pin_c4,stream=RF)

// Giriş ve çıkış pinlerine isim atanıyor
#define sol_y1 pin_b0
#define sol_y2 pin_b1
#define ileri_x1 pin_b2
#define ileri_x2 pin_b3
#define use_portd_lcd TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor#include <16F877.h>
int16 Data;
unsigned long int y,x,a;
float voltaj;
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_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı >
lcd_init(); // LCD hazır hale getiriliyor
for (;;)
{

a = fgetc(RF);
printf(lcd_putc,"\fa:%Lu",a);

if (a==0xcc)
{
y = fgetc(RF);


x = fgetc(RF);
Printf (lcd_putc,"\fy:%Lu",y);
delay_ms(20);
Printf(lcd_putc,"\fx:%Lu",x);


if (120>y>79){ //durdurmak için
output_low(sol_y1);

output_low(sol_y2);
delay_us(20);
}
if (y<80){//geri
output_low(sol_y1); // L298 Input2 girişi lojik-0
output_high(sol_y2); // L298 Input1 girişi lojik-1
delay_us(20);

}
if (y>120){
output_low(sol_y2); // L298 Input2 girişi lojik-0
output_high(sol_y1); // L298 Input1 girişi lojik-1
delay_us(20);

}
//--------------------------------------------------
if (120>x>79){ //durdurmak için
output_low(ileri_x1);
output_low(ileri_x2);
}
if (x<80){//geri
output_low(ileri_x1); // L298 Input2 girişi lojik-0
output_high(ileri_x2); // L298 Input1 girişi lojik-1
delay_ms(x);
output_low(ileri_x2); // L298 Input2 girişi lojik-0
delay_ms(10);
}
if (x>120){ */
output_low(ileri_x2); // L298 Input2 girişi lojik-0
output_high(ileri_x1); // L298 Input1 girişi lojik-1
delay_ms(x);
output_low(ileri_x1); // L298 Input2 girişi lojik-0
delay_ms(10);
}


}
}
}
--------------------------------------------------
verici
#include <16F877A.h>

#device ADC=8
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use rs232(baud=2400,parity=N,xmit=PIN_C4,rcv=PIN_C5,bi ts=8,Stream=RF)
#Define Led Output_Toggle (pin_C0);


#define use_portb_lcd TRUE // LCD B portuna bağlı

#include <lcd.c> // lcd.c dosyası tanıtılıyor


unsigned long int x,y; // İşaretsiz 16 bitlik tam sayı tipinde değişken tanımlanıyor


//********** ANA PROGRAM FONKSİYONU*******

void main()
{
for(;;)
{
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_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32
setup_adc_ports(ALL_ANALOG); // Tüm AN girişleri analog

enable_interrupts(INT_AD); // AD çevrimi bitti kesmesi tanıtılıyor
enable_interrupts(GLOBAL); // Tüm kesmeler aktif

lcd_init(); // LCD hazır hale getiriliyor
while(1) // sonsuz döngü
{

set_adc_channel(5); // RE0/AN5 ucundaki sinyal A/D işlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
x=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
// printf(lcd_putc,"\fDijital=%lu",x); // AN5 ucundaki sinyalin dijital karşılığı LCD'ye aktarılıyo
// delay_ms(250);

set_adc_channel(6); // RE0/AN5 ucundaki sinyal A/D işlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
y=read_adc(); // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
//printf(lcd_putc,"\fDijital=%lu",y); // AN5 ucundaki sinyalin dijital karşılığı LCD'ye aktarılıyo
//delay_ms(250);




//t0=make8(a,0);
//t1=make8(a,1);
putc(0x55,RF);
printf(lcd_putc,"\f85");

putc(0x00,RF);
printf(lcd_putc,"\f0");

putc(0x00,RF);
printf(lcd_putc,"\f0");

putc(0xFF,RF);
printf(lcd_putc,"\f255");

putc(0xFF,RF);
printf(lcd_putc,"\f255");
putc(0xCC,RF);
printf(lcd_putc,"\f204");
putc(x,RF);
printf(lcd_putc,"\fx=%lu",x);
putc(y,RF);

printf(lcd_putc,"\fy=%lu",y);


}
}
}
----------------------------------------------
 

Forum istatistikleri

Konular
128,130
Mesajlar
915,293
Kullanıcılar
449,847
Son üye
AhmetK06

Yeni konular

Geri
Üst