seri port motor sürme sorunu

elb03

Üye
Katılım
31 Ağu 2009
Mesajlar
3
Puanları
1
Yaş
35
Arkadaşlar klavyeden oyuncak bi arabayı kontrol edicektim bilgisayarla bağlantı kurdum harfleri okuyup motor ileri gidiyor filan yazıyor devre ama motorlarda hiç bir hareket yok :( bayada uğrastım sorunu bulamadım nerden kaynaklanabilir acaba bilen var mı ?



/******************************************************
PIC16F877 İle Bilgisayar İle Step Motor Uygulaması
******************************************/
#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)

char islem=0;
unsigned long int bilgi;
float voltaj,sicaklik;
int i;


void main ()
{
setup_psp(PSP_DISABLED); // PSP 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ışı
set_tris_b(0x00);
output_b(0x00);
set_tris_a(0x01);

/****************MENÜ**********************************/

printf("\n\r*********************************************************");
printf("\n\r Motor Surme Programi ");
printf("\n\r*********************************************************");
printf("\n\r--------------------------------------------------------");
printf("\n\r\tMotorun ileri gitmesi icin W ya basin");
printf("\n\r\tMotorun geri gitmesi icin S ye basin");
printf("\n\r\tMotorun sag ileri gitmesi icin D ye basin");
printf("\n\r\tMotorun sol ileri gitmesi icin A ya basin");
printf("\n\r\tMotorun sag geri gitmesi icin C ye basin");
printf("\n\r\tMotorun sol geri gitmesi icin Z ye basin");
printf("\n\r\tMotorun durdumasi icin R ye basin");
printf("\n\r\tSicaklik olcumu yapmak icin O ya basin");
printf("\n\r--------------------------------------------------------");

output_high(enable_a);
output_high(enable_b);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
while(1)
{
islem="null";
islem=getchar();
printf("\n\r");
while(islem=='w'||islem=='W'){
printf("\n\rMotor ileri gidiyor...");
break;
}
while (islem=='w'||islem=='W')
{
output_b(0x01);
if(kbhit()) break;
}


while (islem=='s'||islem=='S')
{
printf("\n\rMotor geri gidiyor...");
break;
}
while (islem=='s'||islem=='S')
{
output_b(0x02);
if(kbhit()) break;
}


while (islem=='E'||islem=='e')
{
printf("\n\rMotor sag capraza gidiyor...");
break;
}
while (islem=='E'||islem=='e')
{
output_b(0x05);
if(kbhit()) break;
}


while (islem=='q'||islem=='Q')
{
printf("\n\rMotor sol capraza gidiyor...");
break;
}
while (islem=='q'||islem=='Q')
{
output_b(0x09);
if(kbhit()) break;
}


while (islem=='a'||islem=='A')
{
printf("\n\rMotor sol geri gidiyor...");
break;
}
while (islem=='a'||islem=='A')
{
output_b(0x0A);
if(kbhit()) break;
}


while (islem=='d'||islem=='D')
{
printf("\n\rMotor sag geri gidiyor...");
break;
}
while (islem=='d'||islem=='D')
{
output_b(0x06);
if(kbhit()) break;
}


while (islem=='r'||islem=='R')
{
printf("\n\rMotor durdu");
break;
}
while (islem=='r'||islem=='R')
{
output_b(0x00);
if(kbhit()) break;
}
while (islem=='o'||islem=='O')
{
set_adc_channel(0);
delay_us(20);
bilgi=read_adc();
voltaj=(0.0048828125*bilgi)*4000;
sicaklik=(voltaj/10);
printf("\n\rortam sicakligi=%f C",sicaklik);
output_high(pin_a1);
delay_ms(200);
output_low(pin_a1);
break;
}
}
}
 
Motor sürücü entegresinin Application Notelarına bak. Motor sürmede hata yapmış olabilirsin.
 
Merhaba
Haberleşme RF ile mi yoksa direk seri kablo ile mi?
 

Forum istatistikleri

Konular
128,133
Mesajlar
915,304
Kullanıcılar
449,849
Son üye
cagan20

Yeni konular

Geri
Üst