PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Công nghệ robot (http://www.picvietnam.com/forum/forumdisplay.php?f=50)
-   -   Xe dò đường Pic 16f877A (http://www.picvietnam.com/forum/showthread.php?t=32065)

chinhan_92 05-04-2013 11:16 AM

Xe dò đường Pic 16f877A
 
Em đang làm đề tài môn học về xe dò đường theo vạch trắng bằng pic 16f877A.Xe đơn giản là chỉ chạy theo vạch thôi ạ,khi nào gặp 1 vạch ngang thì xe dừng lại.Em đã vẽ mạch,code và làm mạch thực tế nhưng em nó quyết tâm không chạy,mong các bác giúp đỡ ạ.

đây là code và mạch
http://www.mediafire.com/?fd5y7b6ntd0i44p

#include <16F877A.h>
#device adc=10

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES WRT_50% //Lower half of Program Memory is Write Protected

#use delay(clock=20000000)

#define dc_t(x) set_pwm1_duty(x)
#define dc_p(x) set_pwm2_duty(x)


int8 sensor=0;
int1 left=0,right=0;

VOID scan()

{

int8 k;
sensor=0;
for(k=0;k<=5;k++)
{
set_adc_channel(k);
delay_ms(10);
if(read_adc()>700) bit_set(sensor,k);

}

}

VOID TU_DONG_TIEN()
{
if (sensor==0b00100000){dc_t(0);dc_p(70);left=0;right =1;}
if (sensor==0b00010000){dc_t(0);dc_p(60);left=0;right =1;}
if (sensor==0b00001000){dc_t(0);dc_p(50);left=0;right =1;}
if (sensor==0b00001100){dc_t(60);dc_p(60);}
if (sensor==0b00000100){dc_t(50);dc_p(0);left=1;right =0;}
if (sensor==0b00000010){dc_t(60);dc_p(0);left=1;right =0;}
if (sensor==0b00000001){dc_t(70);dc_p(0);left=1;right =0;}
if(sensor==0)
{
if(right){dc_t(0);dc_p(50);}
if(left){dc_t(50);dc_p(0);}

}
if(sensor==0xff){dc_t(0);dc_p(0);}
}

void main()
{

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,100,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(0);
set_pwm2_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
while(1)
{
scan();
//sensor=0b00001100;
tu_dong_tien();

}
}

chinhan_92 05-04-2013 11:59 AM

sao mình không đính kèm file đươc,hic

sai.vn 11-04-2013 07:42 PM

Hiện tại bạn đã làm xong chưa, có cần nữa k !

chinhan_92 11-04-2013 10:48 PM

Hiện tại mình làm vẫn chưa chạy bạn ạ.Lại còn bị triệu chứng chạm hoặc để tay gần mới có tín hiệu ra chân pwm,mình thử nạp code điều khiển led thì có triệu chứng như thề này:led ko sáng,để tay gần thì led sáng mờ,còn chạm vào chân cấp xung thì led sáng mãi,không nhấp nháy(mình dùng thạch anh 20Mh,tụ 22p).Mình đọc ở 1 số diễn đàn thì thấy bảo lổi này là do thạch anh,nếu như vậy thì ai giúp mình config thạch anh với,mình đã thử dùng thạch anh nội nhưng vẫn bị.

chinhan_92 11-04-2013 10:49 PM

1 tuần nữa là mình phải nộp mạch rồi,đây là file mô phỏng và mạch thực tế,thông cảm tại mình ko đính kèm được,hic
http://www.mediafire.com/?fd5y7b6ntd0i44p

5landvn 15-05-2013 07:17 PM

cái này hnay mình cũng vừa mới có được đề tài như thế này :(

pdkpro 30-08-2013 02:24 AM

mấy a có cái mạch điều khiển động cơ nào cụ thể k cho e xin với


Múi giờ GMT. Hiện tại là 03:01 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam