PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   ai giUp em css đIều khiển tỐc đỘ động cƠ hiỆn thi lên led 7 thanh vOi :(( (http://www.picvietnam.com/forum/showthread.php?t=9668)

kiepcodon9111 04-06-2011 10:36 PM

ai giUp em css đIều khiển tỐc đỘ động cƠ hiỆn thi lên led 7 thanh vOi :((
 
1 Attachment(s)
em đang làm bài tập lớn môn vxl vỚi cOn pic16f877a em đã viết code mà chỉ điều khiển được tốc động cƠ . à em sử dụng đỘng cƠ có enconder để đọc xung rồi hiện thị lên led nhƯng khi chạy thì khÔng hiện thị được tốc đỘ ai giúp em vơi :((:((
đây là hình

http://i1234.photobucket.com/albums/...1/untitled.jpg

còn đây là code ạ



#include <16f877a.h>
#fuses noprotect,nowdt,nolvp,xt,put
#device pic16f877a*=16adc=10
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(c)
#use fast_io(b)
#byte portc=0x07
#byte porta=0x05
#byte portb=0x06
#byte option_reg=0x81
#byte timer0=0x01
#bit c2=portc.2
#bit a1=porta.1
#bit a2=porta.2
#bit p5=option_reg.5
#bit p4=option_reg.4
#bit p3=option_reg.3
int x,i,chuc,dv;
int a[10]={129,207,146,134,204,164,160,143,128,132};
void doc_adc();

void xuat_xung();
void hienthi();
void main()
{
set_tris_a(0b10001);
set_tris_c(0);
set_tris_b(0);
while(true)
{
doc_adc();
x=read_adc();
xuat_xung();

p5=1;
p4=1;
p3=1;

chuc=timer0/10;
dv=timer0%10;
timer0=0;
for(i=0;i<=49;i++)
{
a2=0;
a1=1;
portb=a[chuc];
delay_ms(10);
a2=1;
a1=0;
portb=a[dv];
delay_ms(10);
}
}
}
void doc_adc()
{
setup_adc(adc_clock_div_4);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_ms(5);
}
void xuat_xung()
{
setup_ccp1(ccp_pwm);
set_pwm1_duty(x);
setup_timer_2(t2_div_by_16,255,1);
}



em gƯởi kèm cả file rồi mong các bac giúp cho khÔng là em bay mÔn vxl :((

kiepcodon9111 05-06-2011 09:44 AM

dien dan toan bzO saO khOng ai jup em vay :((:((:((

elvies 20-06-2011 12:18 AM

Bạn nên đi chầm chậm, học cái nào chắc cái đấy!
 
Gợi ý:
+ Bạn đọc ADC để điều xung, tốt.
+ Bạn dùng chân counter để đếm xung, tốt với đồ án bạn làm, nhưng nếu muốn phát triển thành điều khiển PID thì nên dùng ngắt ngoài để đếm xung và kiểm tra chiều.(3 chân gần nhau của motor encoder là 3 chân xung x, y, z chứ ko phài một chân nguồn và một chân mass như bạn nghĩ nha.)
+Giá trị timer bạn đọc về mình chưa bao giờ làm nhưng theo lí thuyết của bạn thì hình như là giá trị couter đọc được, tuy nhiên hàm quét led của bạn là ko ổn, cũng như cách bạn viết chương trình khá là cẩu thả.
Nếu có hứng thú thì bạn có thể email cho mình, mình sẽ hướng dẫn bạn cụ thể hơn.

quangkhuon01g@gmail.com
08DTD-Hutech
Y!m: elviestran


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

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