PDA

View Full Version : ai giUp em css đIều khiển tỐc đỘ động cƠ hiỆn thi lên led 7 thanh vOi :((


kiepcodon9111
04-06-2011, 10:36 PM
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/ff417/kiepcodon911/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
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