PDA

View Full Version : SRF05 and PIC6F877A !


anh_gioi
30-09-2008, 12:07 AM
chào mọi người , đây là em viết chương trình cho cảm biến siêu âm SRF05 + PIC6F877A + LCD1602.

// RC2--ECHO
// RD1 --TRIGGER
#include "F:\NCKH 2009\PIC 16\count_timer2\count_timer2.h"
#include <lcd_lib_4bit.c>
#include <F:\NCKH 2009\PIC 16\count_timer2\def_877a.h>
#define CONVERT_TO_MICROSECONDS (20000000/((4*4)*1000000))
//BOOLEAN CCP1Captured;
int8 tram,chuc,donvi,nghin;
void convert_bcd(int8 x)
{
donvi=x%10; //chia lay phan du, so hang don vi
tram=x/100; //tach hang tram va hang chuc
chuc=x/10%10;
nghin = x/1000;
tram = tram + 0x30;
chuc = chuc + 0x30;
donvi = donvi + 0x30;
nghin = nghin +0x30;
}
/////////

void main()
{
int8 x;
int16 time;
LCD_init();
convert_bcd(x);
trisd = 0x02;
trisc = 0x04;
//---hien thi LCD---
LCD_putchar("anh_gioi");
LCD_putcmd(0xC0);
LCD_putchar("T = ");
LCD_putcmd(0xC9);
LCD_putchar(" uS");
//-- khai bao timer-capture ----
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1); // Setup interrupt on falling edge
enable_interrupts(GLOBAL);
while(true)
{
//---- 10uS cho trgger ----
output_high(pin_d1);
delay_us(10);
output_low(pin_d1);
//-- Wait for senser output to go high ----
while(!input(pin_c2)) {}
set_timer1(0);
convert_bcd(time);//
while(input(pin_c2)) {}
time = get_timer1(); //doc thoi gian
time = time/CONVERT_TO_MICROSECONDS; //chuyen doi ra mcrogiay
convert_bcd(time);
///// hien thi len gia tri LCD//////
LCD_putcmd(0xC4);
LCD_putchar(nghin);
LCD_putcmd(0xC5);
LCD_putchar(tram);
LCD_putcmd(0x6);
LCD_putchar(chuc);
LCD_putcmd(0xC7);
LCD_putchar(donvi);


}
}


chương trình của em muốn hiển thị thời gian mà SRF thu được khi gặp vật cản.
nhưng giá trị time của em không hiển thị lên LCD được. Em nghi lập trình nhưng khi thay tín hiệu ECHO (pin_c2) bằng nút bấm (buttom) thì giá trị được hiểnthị lên LCD.
em không hiểu tại sao ? ---> nên em suy ra không bít có phải do SRF05 mà em mới mua không?
các bác chỉ em với ?????

falleaf
30-09-2008, 03:51 PM
Em viết thế này thì sóng siêu âm đã tắt ngay cái chỗ

convert_bcd(time);//

thì làm sao em đo được giá trị nữa. Hơn nữa, đã có capture thì em đọc giá trị từ capture ra, chứ cần gì phải đặt timer tùm lum như vậy.

Chỉ cần khi có xung lên/xuông em bật capture thì giá trị timer nó nằm trong capture đấy. Chỉ cần kiểm tra khi nào là xung lên, khi nào là xung xuống. Nếu là xung xuống thì lưu lại timer là xong.

Chúc vui

anh_gioi
30-09-2008, 05:32 PM
may quá có anh trả lời, em đang lo ko có ai trả lời em.
anh ạ ,anh xem hộ em lại với ạ, em đã sửa lại:

// RC2--ECHO
// RD1 --TRIGGER
#include "F:\NCKH 2009\PIC 16\count_timer2\count_timer2.h"
#include <lcd_lib_4bit.c>
#include <F:\NCKH 2009\PIC 16\count_timer2\def_877a.h>
#define CONVERT_TO_MICROSECONDS (20000000/((4*4)*1000000))
//BOOLEAN CCP1Captured;
int8 tram,chuc,donvi,nghin;
void convert_bcd(int8 x)
{
donvi=x%10; //chia lay phan du, so hang don vi
tram=x/100; //tach hang tram va hang chuc
chuc=x/10%10;
nghin = x/1000;
tram = tram + 0x30;
chuc = chuc + 0x30;
donvi = donvi + 0x30;
nghin = nghin +0x30;
}
/////////
#int_ccp1
void main()
{
int8 x,s;
int16 t;
LCD_init();
convert_bcd(x);
trisd = 0x02;
trisc = 0x04;

//---hien thi LCD---
LCD_putchar("anh_gioi");
LCD_putcmd(0xC0);
LCD_putchar("S = ");
LCD_putcmd(0xC9);
LCD_putchar(" Cm");

//-- khai bao timer-capture ----
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1); // Setup interrupt on falling edge
enable_interrupts(GLOBAL);
while(true)
{

//---- 10uS cho trgger ----
output_high(pin_d1);
delay_us(10);
output_low(pin_d1);
//-- Wait for senser output to go high ----

if(input(pin_c2)==0)
{
t = 0;
set_timer1(0);
LCD_putcmd(0xCE);
LCD_putchar("NO");
}


else
{

t = CCP_1; //doc thoi gian khi co xung cao
s = t/58;
convert_bcd(s);
//time = get_timer1();
LCD_putcmd(0xCE);
LCD_putchar("CO");
//time = time/CONVERT_TO_MICROSECONDS; //chuyen doi ra mcrogiay
}

///// hien thi len gia tri LCD//////
LCD_putcmd(0xC4);
LCD_putchar(nghin);
LCD_putcmd(0xC5);
LCD_putchar(tram);
LCD_putcmd(0x6);
LCD_putchar(chuc);
LCD_putcmd(0xC7);
LCD_putchar(donvi);
}
}



nhưng trên LCD chỉ hiển thị 4 số 0 ?
em không biết lệnh đọc capture trênc ó đùng không nữa vì em lấy vidu trong help CCS ??

anh_gioi
03-10-2008, 02:02 AM
các bác ơi, giải thích hộ em cái.
mấy ngày hôm nay mò mẫn mà chẳng có kết quả gì, chán quá....

embsys
24-10-2008, 02:13 AM
Bác ơi bác lập trình cái món này sao rồi đã chạy tốt chưa. Em đang tìm hiểu cái này thấy hay quá mà chưa biết thế nào

anh_gioi
25-10-2008, 01:20 AM
tớ đã tạm ổn việc giao tiếp SRF05- PIC- LCD, nhưng hiện giờ SRF05 ko chạy. tó đang nghi nó có vấn đề.
hức..nó mà hỏng thì toi công cốc.
khi phát xung 10us vào trigger thì nó chỉ nháy đúng 1 lần(đã ở trong while()), ko bít tại sao.nếu ko được chắc phải đặt thêm cái nữa..nhưng hiện tại hết tìn rùi ..ai có hảo tâm cho mượn hoặc bán rẻ cho anh em cái phát để em tiếp tục nghiên cứu tiếp ..hức...

falleaf
25-10-2008, 01:39 PM
Chân MODE em đang đặt ở mức nào?

Chúc vui

lion
26-10-2008, 07:59 PM
tìm hiểu cái này rùi , nhưng chưa có money đầu tư . ko biết Hà nội chỗ nào bán hả các bác , giá cả bao nhiêu ???

anh_gioi
26-10-2008, 08:54 PM
Chân MODE em đang đặt ở mức nào?

Chúc vui

vâng, anh ạ.
lúc trước em "gà" quá. nó không nhận tín hiệu từ SRF là do em để mode xuống đất mà em lại dùng ở chế độ 1.
bây giò em để mode treo (không nối), lúc đầu nhận tín hiệu từ SRF nhưng sau khoảng 10 lần nạp cho chip thì SRF có vấn đề như em nạp 10us cho nó đáng ra nó phải nhấp nháy led(trên SRF), nhưng giờ ko nháy nữa ạ--> ko có tín hiệu để đọc ạ.
giờ em ko biết làm sao. em đang nghi nó hỏng ko biết có phải không?
mong anh trả lời giúp em ạ?

anh_gioi
26-10-2008, 08:56 PM
tìm hiểu cái này rùi , nhưng chưa có money đầu tư . ko biết Hà nội chỗ nào bán hả các bác , giá cả bao nhiêu ???

giá à? tớ vừa đưịơc báo giá SRF05 là 550k(gồ phí vận chuyển) --> chắc USD mới tăng ..!

falleaf
27-10-2008, 02:10 AM
Em nối mạch thế nào, gửi lên cho mọi người xem. Bỏ hết code phần LCD đi chỉ viết code cho phần SRF thôi.

Nối một con LED vào chân ECHO. Xuất xung 10us trên chân TRIGGER, xem thử xem con LED trên chân ECHO có nháy không. Nếu nháy thì nó vẫn còn sống.

Quan sát kỹ vì có thể con LED nháy một tí thôi. Nhớ để cảm biến ra khoảng trống để thời gian nháy của LED vào khoảng 30ms (xa nhất). Không cần điện trở nối tiếp LED. Nếu có OSC thì cắm vào chân ECHO đo thử, nếu không có thì mang lên RP test thử.

Trường hợp em nối sai MODE, không đặt ngõ vào và ngõ ra đúng rất nguy hiểm, vì lúc đó cả 2 con PIC đều đặt là ngõ ra, mà một bên đặt mức cao, một bên đặt mức thấp, rất nguy hiểm. Có khả năng con PIC bị toi. Nếu may mắn là con PIC của em toi, còn xui xẻo thì con PIC trên SRF toi.

Con PIC trên SRF toi thì kể như xong phim. Tìm cái OSC để kiểm tra, hoặc mang tới RP để kiểm tra bằng OSC.

Tụi em làm thí nghiệm phải đọc kỹ tài liệu hướng dẫn, và phải làm rất cẩn thận, không thì lãng phí tiền bạc chỉ vì cái "thích vọc" của mình đấy.

Chúc vui.

anh_gioi
27-10-2008, 08:12 PM
Em nối mạch thế nào, gửi lên cho mọi người xem. Bỏ hết code phần LCD đi chỉ viết code cho phần SRF thôi.

Nối một con LED vào chân ECHO. Xuất xung 10us trên chân TRIGGER, xem thử xem con LED trên chân ECHO có nháy không. Nếu nháy thì nó vẫn còn sống.

Quan sát kỹ vì có thể con LED nháy một tí thôi. Nhớ để cảm biến ra khoảng trống để thời gian nháy của LED vào khoảng 30ms (xa nhất). Không cần điện trở nối tiếp LED. Nếu có OSC thì cắm vào chân ECHO đo thử, nếu không có thì mang lên RP test thử.

Trường hợp em nối sai MODE, không đặt ngõ vào và ngõ ra đúng rất nguy hiểm, vì lúc đó cả 2 con PIC đều đặt là ngõ ra, mà một bên đặt mức cao, một bên đặt mức thấp, rất nguy hiểm. Có khả năng con PIC bị toi. Nếu may mắn là con PIC của em toi, còn xui xẻo thì con PIC trên SRF toi.

Con PIC trên SRF toi thì kể như xong phim. Tìm cái OSC để kiểm tra, hoặc mang tới RP để kiểm tra bằng OSC.

Tụi em làm thí nghiệm phải đọc kỹ tài liệu hướng dẫn, và phải làm rất cẩn thận, không thì lãng phí tiền bạc chỉ vì cái "thích vọc" của mình đấy.

Chúc vui.

ôi, cám ơn anh đã chỉ bảo em kiểm tra. em kiểm tra xong rùi, kết quả là SRF05 ko toi, kiểm tra chân PIC cũng ko sao? lạ ghê.. nhưng em thấy nó không sao là em vui lắm rồi. em nạp cho nó đoạn code này ạ, mong anh xem qua giúp em:

#include "F:\NCKH 2009\PIC 16\capture---\cpture----.h"
#bit TMR1IF = 0x0C.0
#include <F:\NCKH 2009\PIC 16\count_timer2\LCD_lib_4bit.c>
int8 tram,chuc,donvi;
int8 count;
int16 CCP1Value; // Gia tri CCP hien tai
int16 CCP1OldValue; // Gia tri CCP truoc do
BOOLEAN CCP1Captured;

void Init_ccp(void)
{
setup_ccp1(CCP_CAPTURE_RE);;
setup_timer_1(T1_INTERNAL); // Start timer 1
CCP1Value = 0;
CCP1OldValue = 0;
CCP1Captured = TRUE;
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
}

#int_CCP1
void CCP1_isr()
{

if(TMR1IF)
{
CCP1Value = CCP_1 +(65535-CCP1OldValue);
CCP1OldValue = CCP_1;
TMR1IF=0;

}
else
{
CCP1Value = CCP_1 - CCP1OldValue;
CCP1OldValue = CCP_1;
}
CCP1Captured = TRUE;

}

void convert_bcd(int8 x)
{

donvi=(((x%1000)%100)%10) + 0x30; //chia lay phan du, so hang don vi
tram=((x%1000)/100) + 0x30; //tach hang tram va hang chuc
chuc=((x%1000)%100)/10 + 0x30;
///// hien thi len gia tri LCD//////
LCD_putcmd(0xC5);
LCD_putchar(tram);
LCD_putcmd(0xc6);
LCD_putchar(chuc);
LCD_putcmd(0xC7);
LCD_putchar(donvi);
}

void main()
{
Init_ccp();
LCD_init();
CCP1_isr();
//---hien thi LCD---
LCD_putcmd(0x85);
LCD_putchar("anh_gioi");

while(1)
{
output_high(pin_d0);
delay_us(10);
output_low(pin_d0);

count = CCP1Value;
convert_bcd(count);
delay_ms(100);
}
}

thì trên LCD của em báo con số từ 230-245 ạ.
khi em di chuyển đầu SRF ra xa hơn(hay gần đi ) thì chỉ số vẫn không thay đổi, không biết em sai chỗ nào ạ?(em dò trên 1 mặt phẳng)
thứ hai: em dùng thạch anh 20MHZ với timer1 (setup_timer_1(T1_INTERNAL); ) thì tính thời gian thế nào ạ? em thấy 1 số đoạn code tính khác nhau nên em chưa hỉu lắm?

falleaf
27-10-2008, 08:18 PM
Dạo này anh rất bận, nên không thể giúp em xem code. Hy vọng rằng các bạn thành viên có thể giúp em về vấn đề coding.

Ý tưởng chỉ đơn giản như vậy. Trước mắt em nên đọc 8 bit, sau đó cho xuất ra LED để xem giá trị thay đổi khi em di chuyển xa và gần.

Cảm biến siêu âm có một điều cần quan tâm, đó là bước sóng của nó, sau khi em tính ra, em sẽ thấy bước sóng của nó bằng bao nhiêu đó.

Em so với chiều dày của tường, nếu bề dày của mặt phản xạ nhỏ hơn chiều dài bước sóng, thì có khả năng bị mất phản xạ. Tính thử đi thì sẽ hiểu hơn về sóng siêu âm, chứ nếu không cứ thấy đo được là được thì .... :D

Đọc tài liệu về cảm biến siêu âm mà anh đã up lên mạng. Tài liệu đó tóm tắt khá nhiều thứ về siêu âm đấy.

Chúc vui

falleaf
27-10-2008, 08:31 PM
CCP1_isr();

Tại sao trong main lại chạy interrupt nhỉ?

Chúc vui

anh_gioi
02-11-2008, 10:23 PM
Dạo này anh rất bận, nên không thể giúp em xem code. Hy vọng rằng các bạn thành viên có thể giúp em về vấn đề coding.

Ý tưởng chỉ đơn giản như vậy. Trước mắt em nên đọc 8 bit, sau đó cho xuất ra LED để xem giá trị thay đổi khi em di chuyển xa và gần.

Cảm biến siêu âm có một điều cần quan tâm, đó là bước sóng của nó, sau khi em tính ra, em sẽ thấy bước sóng của nó bằng bao nhiêu đó.

Em so với chiều dày của tường, nếu bề dày của mặt phản xạ nhỏ hơn chiều dài bước sóng, thì có khả năng bị mất phản xạ. Tính thử đi thì sẽ hiểu hơn về sóng siêu âm, chứ nếu không cứ thấy đo được là được thì .... :D

Đọc tài liệu về cảm biến siêu âm mà anh đã up lên mạng. Tài liệu đó tóm tắt khá nhiều thứ về siêu âm đấy.

Chúc vui
bây giờ nếu xuất ra LED thì em phải dùng 1 chân điều xung ạ?
vì chân điều xung chỉ có thể thay đổi được giá trị thôi ạ.khi có tín hiệu ra, ta sẽ cho qua chân điều xung để xuất ra LED.

anh_gioi
08-11-2008, 11:31 AM
bây giờ nếu xuất ra LED thì em phải dùng 1 chân điều xung ạ?
vì chân điều xung chỉ có thể thay đổi được giá trị thôi ạ.khi có tín hiệu ra, ta sẽ cho qua chân điều xung để xuất ra LED.

cuối cùng cũng hoàn thành cái siêu âm này.

cho em hỏi câu nữa: nếu em dùng 2 SRF05 cùng lúc, thì em chỉ cần dùng 1 timer hay phải dùng 2 timer ạ.

falleaf
08-11-2008, 08:49 PM
1) Em nên post các thiết kế và các kết quả lên cho các bạn tham khảo. Chú ý chỉ ra những gì mà em đã làm sai, đã gặp khúc mắc để giúp các bạn làm sau làm việc nhanh hơn.

2) Khi dùng 2 siêu âm, em nên tìm hiểu bài toán crosstalk mà anh đã post trong mục cảm biến. Việc dùng timer nào không quan trọng. Trên thực tế thì bài toán anh sử dụng nhiều siêu âm anh cũng chỉ dùng 1 timer là đủ, vấn đề chính là em dùng chức năng capture để đọc siêu âm.

Chúc vui.

anh_gioi
09-11-2008, 06:45 PM
1) Em nên post các thiết kế và các kết quả lên cho các bạn tham khảo. Chú ý chỉ ra những gì mà em đã làm sai, đã gặp khúc mắc để giúp các bạn làm sau làm việc nhanh hơn.

2) Khi dùng 2 siêu âm, em nên tìm hiểu bài toán crosstalk mà anh đã post trong mục cảm biến. Việc dùng timer nào không quan trọng. Trên thực tế thì bài toán anh sử dụng nhiều siêu âm anh cũng chỉ dùng 1 timer là đủ, vấn đề chính là em dùng chức năng capture để đọc siêu âm.

Chúc vui.
vừa từ quê lên, mệt ghê.
vâng thưa anh, em đưa code lên sau ạ, cho em hỏi ạ:
nếu bắt buộc dùng capture như anh nói thì nếu em dùng PIC6F877A nó chỉ có 2 chân CCP1 và CCP2 thôi, mà em dùng 2 chân cho 1 SRF rồi, vậy nếu em dùng con nữa thì làm sao dùng capture được ạ?
nếu khi dùng 2 siêu âm, em dự định đặt 2 cảm biến vuông góc với nhau, như vậy bài toán crosstalk chắc em ko cần quan tâm ạ ?

falleaf
10-11-2008, 12:33 AM
Crosstalk không chỉ xảy ra khi hai cảm biến đặt cạnh nhau. Sóng siêu âm bay trong không gian, có thể phản xạ nhiều lần rồi mới quay về cảm biến. Bản thân 1 cảm biến, nếu đặt trong không gian hẹp, cũng có thể xảy ra hiện tượng crosstalk với bản thân nó.

Đó là kỹ thuật sử dụng phần cứng của em. Để bắt một chân SRF05, theo anh hiểu chỉ cần sử dụng một chân CCP là đủ, còn chân Trigger thì em dùng chân I/O nào cũng được. Ko hiểu em dùng 2 chân CCP làm gì.

Tốt nhất em nên post kết quả của em lên thì mọi người mới thảo luận được. Ở đây rất nhiều bạn có thể giúp em phần xử lý này nếu em chia sẻ với các bạn ấy.

Chúc vui

anh_gioi
10-11-2008, 04:19 PM
đây là cod ecura em ạ. em chủ yếu dựa vào code trong CCS là chính:


#include "F:\NCKH 2009\PIC 16\CCP1-2\CCP1-2.h"
#include <F:\NCKH 2009\PIC 16\timer01---\lcd_lib_4bit.c>
#include <F:\NCKH 2009\PIC 16\timer01---\DEFS_16F877A.h>
#define SRF05_IN PIN_D0
///
#define SRF05_OUT PIN_C3
#define CONVERT_TO_MICROSECONDS (20000000/((4)*1000000))
//
long rise,fall,pulse_width;
int16 tram1,chuc1,donvi1;



#int_ccp2
void isr()
{
rise = CCP_1;
fall = CCP_2;

pulse_width = fall - rise; // CCP_1 is the time the pulse went high
} // CCP_2 is the time the pulse went low

void convert_bcd1(int16 x)
{

donvi1=(((x%1000)%100)%10) + 0x30; //chia lay phan du, so hang don vi
tram1=((x%1000)/100) + 0x30; //tach hang tram va hang chuc
chuc1=((x%1000)%100)/10 + 0x30;
///// hien thi len gia tri LCD//////
LCD_putcmd(0xC5);
LCD_putchar(tram1);
LCD_putcmd(0xc6);
LCD_putchar(chuc1);
LCD_putcmd(0xC7);
LCD_putchar(donvi1);
}
void main()
{
LCD_init();
//---hien thi LCD---
LCD_putcmd(0x85);
LCD_putchar("Anh_Gioi");
LCD_putcmd(0xC0);
LCD_putchar("S = ");


setup_ccp1(CCP_CAPTURE_RE); // Configure CCP1 to capture rise
setup_ccp2(CCP_CAPTURE_FE); // Configure CCP2 to capture fall
setup_timer_1(T1_INTERNAL); // Start timer 1
enable_interrupts(INT_CCP2); // Setup interrupt on falling edge
enable_interrupts(GLOBAL);

while(TRUE) {
int16 mm2;
// 10us cho trigger
output_high(SRF05_IN);
delay_us(10);
output_low(SRF05_IN);
//tinh ra quang duong
mm2 = pulse_width/(5*58);
convert_bcd1(mm2);
delay_ms(100);
}
}


cái này em nối 2 chân CCP với nhau.
anh xem em có đúng khong ạ. kết quả hiển thị gần như chính xác ạ.

falleaf
10-11-2008, 05:11 PM
Tại sao em lại cần nối 2 cân CCP với nhau. Tại sao em không dùng 1 chân thôi?

Hãy dành thời gian chút xíu để suy nghĩ. Em vẫn nối hai chân đó với nhau như bình thường. Nhưng ban đầu em set nó là chân output. Sau khi xuất xong xung 10us thì em lập tức chuyển nó lại thành chân input.

Lưu ý rằng, thời gian để chuyển chân từ output phải ngay lập tức sau khi em tạo cạnh xuống của xung 10us. Tất nhiên, cảm biến nó đã thiết kế để thời gian này đủ dài, em đọc trong technical sheet của nó. Tuy nhiên, tốt nhất là phải chuyển ngay lập tức.

Chúc vui

falleaf
10-11-2008, 05:19 PM
Nếu bây giờ anh cho em một con PIC16F887, và yêu cầu em thực hiện lại mạch này một cách hoàn chỉnh, rồi chụp lại hình để đưa lên mạng thành một project (tất nhiên, với yêu cầu em sửa lại cái phần CCP như anh nói), liệu em có làm được không?

Nếu em không có máy chụp hình, hãy mang thiết kế của em tới RP để chụp hình và demo cho các anh ở RP xem. Em có thể tới RP để lấy con PIC16F887, nếu đồng ý thì anh sẽ email cho công ty trước để sẵn cho em.

Lý do anh muốn để tụi em làm quen với dòng PIC rẻ tiền hơn 877A và bỏ thói quen sử dụng 877A như một "bí kíp võ công" đi. Bí kíp nằm ở chỗ rẻ tiền, hiệu quả. Sau này khi em thiết kế các đề tài mới, em sẽ có thể mạnh dạn chuyển sang 887, ít nhất nó rẻ đi cho em 10K/pcs.

Chúc vui

anh_gioi
10-11-2008, 11:56 PM
vâng, có được anh hỗ trợ em thì hay quá ạ. em sẽ làm theo ý của anh ạ.
nhưng :
1.em ở ngoài bắc thì làm sao vào nam lấy được ạ?
2.em hỏi với mạch nạp PG2C thì có thể nạp cho con 887 được ko ạ (vì em chỉ có mỗi mạch nạp này ạ).
em cám ơn anh rất nhiều ạ !

anh_gioi
11-11-2008, 12:02 AM
Tại sao em lại cần nối 2 cân CCP với nhau. Tại sao em không dùng 1 chân thôi?

Hãy dành thời gian chút xíu để suy nghĩ. Em vẫn nối hai chân đó với nhau như bình thường. Nhưng ban đầu em set nó là chân output. Sau khi xuất xong xung 10us thì em lập tức chuyển nó lại thành chân input.

Lưu ý rằng, thời gian để chuyển chân từ output phải ngay lập tức sau khi em tạo cạnh xuống của xung 10us. Tất nhiên, cảm biến nó đã thiết kế để thời gian này đủ dài, em đọc trong technical sheet của nó. Tuy nhiên, tốt nhất là phải chuyển ngay lập tức.

Chúc vui

em vẫn chưa hiểu ý của anh ạ. anh bảo

Em vẫn nối hai chân đó với nhau như bình thường

là nối 2 chân CCP với nhau ạ? như vậy vẫn là theo bài trên của em rồi. như vậy vẫn phải dùng 2 chân CCP cho 1 cảm biến ạ?

namqn
11-11-2008, 05:46 AM
vâng, có được anh hỗ trợ em thì hay quá ạ. em sẽ làm theo ý của anh ạ.
nhưng :
1.em ở ngoài bắc thì làm sao vào nam lấy được ạ?
2.em hỏi với mạch nạp PG2C thì có thể nạp cho con 887 được ko ạ (vì em chỉ có mỗi mạch nạp này ạ).
em cám ơn anh rất nhiều ạ !
2. Bạn xem post #10 của luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1198

Thân,

anh_gioi
12-11-2008, 11:31 PM
sao không thấy anh hiệp đoàn trả lời nhỉ?

anh_gioi
16-11-2008, 01:10 AM
Tại sao em lại cần nối 2 cân CCP với nhau. Tại sao em không dùng 1 chân thôi?

Hãy dành thời gian chút xíu để suy nghĩ. Em vẫn nối hai chân đó với nhau như bình thường. Nhưng ban đầu em set nó là chân output. Sau khi xuất xong xung 10us thì em lập tức chuyển nó lại thành chân input.

Lưu ý rằng, thời gian để chuyển chân từ output phải ngay lập tức sau khi em tạo cạnh xuống của xung 10us. Tất nhiên, cảm biến nó đã thiết kế để thời gian này đủ dài, em đọc trong technical sheet của nó. Tuy nhiên, tốt nhất là phải chuyển ngay lập tức.

Chúc vui

đang thi nên không vào diễn đàn thường xuyên được, nay mở ra đọc lại thì thấy có một số khuất mắc:

Em vẫn nối hai chân đó với nhau như bình thường. Nhưng ban đầu em set nó là chân output. Sau khi xuất xong xung 10us thì em lập tức chuyển nó lại thành chân input.

tại sao lại phải chuyển 2 chân CCp thành output ạ? vì chỉ cần nó là input thì mới nhận được tín hiệu từ SRF được mà?

falleaf
16-11-2008, 03:27 AM
SRF có 2 mode đọc. Cái CCP hiện tại em đang nối 2 chân vào với nhau (hình em gửi). Chả để làm gì cả.

Mode 1, đọc cảm biến vẫn dùng 2 chân CCP và một chân I/O.
Mode 2, chỉ cần dùng 1 chân CCP, ban đầu đặt là Output, xuất xung, sau đó đổi nó thành Input nhận xung.

Đọc bằng cả 2 Mode luôn để xem kết quả. Khi có nhiều cảm biến thì đọc theo mode 2 sẽ tiết kiệm chân của PIC. Anh muốn là em làm thử cả 2 Mode này với PIC16F887.

Việc em ở Hà Nội, muốn lấy PIC thì cũng đơn giản thôi, không có vấn đề gì khó khăn cả. Em cho anh thông tin liên lạc cụ thể, anh sẽ gửi PIC cho em. Quan trọng là em có muốn làm và cung cấp giải pháp của em cho mọi người hay không. Nếu viết lại thành một tutorial đưa lên picvietnam được để lưu trữ như các bạn trước đây học với anh thì tốt. Dạo này anh không có nhiều thời gian để hướng dẫn, nên chủ yếu kêu gọi sự tự giác của các bạn sinh viên, cùng làm, và cùng viết tutorial cho picvietnam thôi.

Trước đây thì anh không có điều kiện hỗ trợ thực tế, bây giờ thì có điều kiện hỗ trợ PIC cho các bạn học tập, thế nhưng thời gian để hỗ trợ, hướng dẫn lại không còn. Cái gì cũng có cái giá của nó mà phải không :)

Chúc vui

anh_gioi
16-11-2008, 10:29 PM
Mode 1, đọc cảm biến vẫn dùng 2 chân CCP và một chân I/O.


nghĩa là 1 chân CCP và 1 chân I/O?
mode2 em xem qua rùi, nếu làm được mode1 thì mode2 ko thành vấn đề ạ.

anh ạ ! em được thế này là nhờ diễn đàn này, nên em rất muốn góp tí công sức cho diễn đàn ạ. nếu được anh nói vậy em cũng sẽ cố gắng hết mình, anh yên tâm khi giao nó cho em.
nếu được anh có thể gửi cho em qua địa chỉ:
Nguyễn thị Hồng Vân
số nhà 37, tổ 43 xóm sở, Phường Mai Dịch. quân Cầu Giấy, Hà Nội.
//
và anh cũng cho em chính xác thời gian nộp bài cho anh luôn ạ, vì bi giờ em đang thi kì cuối (em sắp ra trường rùi) đến hết tháng 12 mới thi xong ạ.

falleaf
17-11-2008, 04:24 AM
Thời gian không quan trọng, em cho anh tên người nhận và số điện thoại cho tiện. Vì anh nhờ người gửi giúp.

Khi nào có thời gian làm xong thì em làm, càng sớm càng tốt cho các bạn thôi.

Em có thể tham khảo thêm về một thí dụ ở đây để làm tài liệu tham khảo khi viết.

http://mdubuc.freeshell.org/Robotics/Tips.html

Chúc vui

anh_gioi
17-11-2008, 09:18 AM
vâng, anh có thể gửi cho em qua địa chỉ:

Nguyễn thị Hồng Vân
số nhà 37, tổ 43 xóm sở, Phường Mai Dịch. quân Cầu Giấy, Hà Nội.
(ở ngoài bìa ghi gửi Đức Giỏi ạ, vì em ở trọ mà !)

Khi nào thi xong em làm ngay, nên anh yên tâm ạ!

quynhpc
11-12-2008, 08:29 PM
chào mọi người , đây là em viết chương trình cho cảm biến siêu âm SRF05 + PIC6F877A + LCD1602.

chương trình của em muốn hiển thị thời gian mà SRF thu được khi gặp vật cản.
nhưng giá trị time của em không hiển thị lên LCD được. Em nghi lập trình nhưng khi thay tín hiệu ECHO (pin_c2) bằng nút bấm (buttom) thì giá trị được hiểnthị lên LCD.
em không hiểu tại sao ? ---> nên em suy ra không bít có phải do SRF05 mà em mới mua không?
các bác chỉ em với ?????

-----------------
Xin chao
minh cung dang can gap may cai SRF05, ban mua hang o dau the ? Minh dang o TPHCM.Co gi ban lien he voi minh nhe! Thanks nhiu. (mr Quynh 0988 414 282 )

anh_gioi
14-12-2008, 02:30 AM
nếu bạn ở trong TPHCM thì dễ mua rồi. bạn liên lạc với công ty RP của anh F ý. tớ khi mua cũng đặt từ trong nam cả mà.

anh_gioi
14-12-2008, 02:43 AM
trước khi tiếp tục bàn luận về siêu âm tiếp cho em hỏi 1 vấn đề thế này ạ, do vấn đề này 1 bạn đã nói ở luồng nào đó nhwung em quên mất.
về đề tài tốt nghiệp: em dùng 2 cảm biến siêu âm SRF05 để dò đường trong khoảng diện tích 200x200(mm).dùng PIC 16F. Robot hoạt hoạt động sao cho nó quét được hết vùng không gian của nó(kiểu như robot hút bụi ạ) em đặt 2 cảm biến siêu âm vuông góc nhau để xác định tọa độ x,y. theo như anh F nói thì phải xác định thêm góc a nào đấy nữa. nhưng theo đề tài của em thì em chỉ cần 2 cảm biến siêu âm để xác định thôi có được không ạ, khi đến điểm cần rẽ thì em sẽ đặt điều kiện cho nó (với khoảng cách x,y là bao nhiêu) thì nó sẽ rẽ.
không biết ý anh là sao ạ?
em cám ơn anh đã cho em thêm ý kiến ạ!

quynhpc
16-12-2008, 09:34 PM
anh F ben RP con con SRF05/SRF08 khong nhi? Khoang bao nhieu 1 con vay anh? em cung dang o gan RP. Lien lac voi anh sao nhay?

falleaf
18-12-2008, 04:03 PM
vâng, anh có thể gửi cho em qua địa chỉ:

Nguyễn thị Hồng Vân
số nhà 37, tổ 43 xóm sở, Phường Mai Dịch. quân Cầu Giấy, Hà Nội.
(ở ngoài bìa ghi gửi Đức Giỏi ạ, vì em ở trọ mà !)

Khi nào thi xong em làm ngay, nên anh yên tâm ạ!

Anh đang bận quá nên quên mất vụ này. Em cho anh cái số điện thoại để nhắn ngoài đó gửi chip cho em thì biết để liên hệ.

Chúc vui

anh_gioi
18-12-2008, 10:58 PM
Anh đang bận quá nên quên mất vụ này. Em cho anh cái số điện thoại để nhắn ngoài đó gửi chip cho em thì biết để liên hệ.

Chúc vui
không sao ạ
vì em cũng đang thi mà, em 26 mới thi xong ạ
vâng, anh có thể liên hệ với em qua số: 0984127001.
xin anh đọc thêm bài viết trên của em và cho ý kiến ạ. em cám ơn anh!

falleaf
19-12-2008, 02:12 AM
trước khi tiếp tục bàn luận về siêu âm tiếp cho em hỏi 1 vấn đề thế này ạ, do vấn đề này 1 bạn đã nói ở luồng nào đó nhwung em quên mất.
về đề tài tốt nghiệp: em dùng 2 cảm biến siêu âm SRF05 để dò đường trong khoảng diện tích 200x200(mm).dùng PIC 16F. Robot hoạt hoạt động sao cho nó quét được hết vùng không gian của nó(kiểu như robot hút bụi ạ) em đặt 2 cảm biến siêu âm vuông góc nhau để xác định tọa độ x,y. theo như anh F nói thì phải xác định thêm góc a nào đấy nữa. nhưng theo đề tài của em thì em chỉ cần 2 cảm biến siêu âm để xác định thôi có được không ạ, khi đến điểm cần rẽ thì em sẽ đặt điều kiện cho nó (với khoảng cách x,y là bao nhiêu) thì nó sẽ rẽ.
không biết ý anh là sao ạ?
em cám ơn anh đã cho em thêm ý kiến ạ!

Em đọc thêm về Dead Reckoning và việc sửa sai cho nó. Thuật toán UMBMark của Borenstein anh cũng đã post ở đâu đó và có làm riêng phần mềm cho nó. Bởi robot có nhiều ảnh hưởng, không bao giờ chính xác, sai càng ngày sẽ càng lớn.

Bài toán của em anh trả lời là không làm được, chỉ nếu như mà dò đường kiểu đi theo biên của đường, thì thực tế chỉ cần 2 cảm biến đặt song song, chỉ vào tường, rồi cứ đi theo đó là xong. Còn lại thì không thể làm được.

Chỉ cần hình dung, trong không gian 2 chiều có 3 tham số: x, y, \theta. Thế thì anh hỏi em có 2 cảm biến thì làm sao em đo được 3 giá trị? Chỉ đơn giản vậy thôi.

Chúc vui

anh_gioi
15-02-2009, 10:01 AM
[quocte]
chỉ nếu như mà dò đường kiểu đi theo biên của đường, thì thực tế chỉ cần 2 cảm biến đặt song song, chỉ vào tường, rồi cứ đi theo đó là xong. Còn lại thì không thể làm được.
[/quote]
Chào mọi người, lâu rồi không vào mạng. bắt đầu từ hôm nay em lại tiếp tục làm đề tài này đây ạ.
Như anh F nói thì em sẽ dò đường theo biên của đường bằng 2 siêu âm, theo ý anh là đặt 2 cảm biến song song. vậy đặt 2 cảm biến vuông góc và song song thì giống nhau hay sao ạ?????
tiện đây em hỏi luôn SRF05 hiện tại giá bao nhiu ạ?
thank!

KENJY
26-02-2009, 05:45 PM
SRF có 2 mode đọc. Cái CCP hiện tại em đang nối 2 chân vào với nhau (hình em gửi). Chả để làm gì cả.

Mode 1, đọc cảm biến vẫn dùng 2 chân CCP và một chân I/O.
Mode 2, chỉ cần dùng 1 chân CCP, ban đầu đặt là Output, xuất xung, sau đó đổi nó thành Input nhận xung.

Đọc bằng cả 2 Mode luôn để xem kết quả. Khi có nhiều cảm biến thì đọc theo mode 2 sẽ tiết kiệm chân của PIC. Anh muốn là em làm thử cả 2 Mode này với PIC16F887.

Việc em ở Hà Nội, muốn lấy PIC thì cũng đơn giản thôi, không có vấn đề gì khó khăn cả. Em cho anh thông tin liên lạc cụ thể, anh sẽ gửi PIC cho em. Quan trọng là em có muốn làm và cung cấp giải pháp của em cho mọi người hay không. Nếu viết lại thành một tutorial đưa lên picvietnam được để lưu trữ như các bạn trước đây học với anh thì tốt. Dạo này anh không có nhiều thời gian để hướng dẫn, nên chủ yếu kêu gọi sự tự giác của các bạn sinh viên, cùng làm, và cùng viết tutorial cho picvietnam thôi.

Trước đây thì anh không có điều kiện hỗ trợ thực tế, bây giờ thì có điều kiện hỗ trợ PIC cho các bạn học tập, thế nhưng thời gian để hỗ trợ, hướng dẫn lại không còn. Cái gì cũng có cái giá của nó mà phải không :)

Chúc vui

Chào anh F. em đã đọc rất kỹ các bài viết của anh về srf05. nhưng em vẫn còn thắc mắc vì em cần xài khoảng 5 cái cảm biến cùng một lúc thì cách nào để nhận được 5 giá trị này trong khi trên pic thì thường chỉ có hai chân ccp. Mong được anh giúp đỡ.

tranhuyky
23-04-2009, 10:03 PM
Cho mình hỏi bạn mua SRF05 ở đâu, giá bao nhiêu vậy?
Mình cũng muốn mua về làm thử, chỉ chỗ cho mình nhe.

tinhgiac_vp
14-08-2009, 10:24 AM
KẸNY: đâu nhất thiết phải sử dụng CCP mới đọc được cảm biến siêu âm đâu. Bạn sử dụng I/O pin + Timer là cũng có thể đọc được rồi. Tùy theo mode bạn định sử dụng để đọc SRF05 mà số chân PIC dùng cho cảm biến có thể là 1 hoặc 2 (Không nhớ cụ thể mode nào dùng 1, mode nào dùng 2).

conglong
15-08-2009, 06:31 PM
KẸNY:. Bạn sử dụng I/O pin + Timer là cũng có thể đọc được rồi..
Bạn nói rõ hơn được không ?
Trân trọng !.

falleaf
15-08-2009, 08:25 PM
Chào anh F. em đã đọc rất kỹ các bài viết của anh về srf05. nhưng em vẫn còn thắc mắc vì em cần xài khoảng 5 cái cảm biến cùng một lúc thì cách nào để nhận được 5 giá trị này trong khi trên pic thì thường chỉ có hai chân ccp. Mong được anh giúp đỡ.

Khi đó cần sử dụng các chân khác để giả lập capture. Hoặc thậm chí ban nối chung các chân đó trên capture qua điện trở, khi đó, bạn kích siêu âm nào thì giá trị đọc về thuộc về siêu âm đó.

Ngoài ra, bạn có thể sử dụng ngắt RB On Change để đọc 4 siêu âm, thêm INT0 để đọc siêu âm còn lại, hoặc sử dụng 2 Capture + 3 onchange,... Rất nhiều giải pháp. Thậm chí bạn dùng 1 chân I/O bình thường + 1 timer cũng có thể đọc được 1 siêu âm. Tất cả xử lý bằng phần mềm.

Chúc vui

falleaf
15-08-2009, 08:26 PM
Cho mình hỏi bạn mua SRF05 ở đâu, giá bao nhiêu vậy?
Mình cũng muốn mua về làm thử, chỉ chỗ cho mình nhe.

Có thể mua tại R&P, R&P là nhà phân phối của Devantech ở Việt Nam về các loại này.

Chúc vui

xin_xin
25-11-2009, 03:41 PM
may a oi??? cho e hoi mua con cam bien srf05 o dau o???? chi cho e voi

xin_xin
25-11-2009, 03:43 PM
may oi???? kim phao xang co do muc nuoc duoc o????

tienchuan
15-06-2010, 10:51 PM
có bác nào chạy thử cảm biến rồi cho em hỏi tí là nó đo có chính xác không ạ ?
trong datasheet thì ghi sai số chỉ có 1cm,em làm theo tut của Bác Fall đưa lên thì sai số nhiều quá !
em đưa lại công thức tính
getvar = get_timer1();
distance = (getvar- 485)/28.3;
Thân chào các bác !

caodungviet
13-12-2010, 11:05 AM
dítance= getvar/58; tính theo cm

stadiumbbc
07-04-2011, 04:54 AM
dítance= getvar/58; tính theo cm

Cho mình hỏi là cách đo khoảng cách bằng SRF05, theo công thức tính của anh F trong tài liệu thì giới hạn đo nhỏ nhất là 34,3um.
Vậy cho mình hỏi khoảng cách đo là chúng ta đếm từ lúc xung echo lên đến lúc xuống rồi lấy giá trị đếm được đó x 34,3um phải ko a.
Bác nào biết cách tính khác trực tiếp qua timer đếm được

tranquoclap
22-04-2011, 10:37 AM
Đang làm một con SRF05 mà sao đo xung cứ nhảy loạn lên, ông anh_gioi cuối cùng cũng ko cho anh em được cái tut nào!Haizzz...

khanhdat
11-05-2011, 11:16 PM
trờiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

nguyenthanhthe
29-06-2011, 04:37 PM
bọn em đang cần tài liệu và code để xử lí về cảm biến, ở đây ai trùm về cảm biến chỉ cho bon em với. nhưng bọn em dùng pic6f887 .
ai có tài liệu cho em xin
mail: nguyenthanhthe1989@yahoo.com.vn

mmiinnh
01-08-2011, 03:24 PM
bọn em đang cần tài liệu và code để xử lí về cảm biến, ở đây ai trùm về cảm biến chỉ cho bon em với. nhưng bọn em dùng pic6f887 .
ai có tài liệu cho em xin
mail: nguyenthanhthe1989@yahoo.com.vn

Vào đây: http://doinodoa.tk/

mmiinnh
01-08-2011, 03:25 PM
Đang làm một con SRF05 mà sao đo xung cứ nhảy loạn lên, ông anh_gioi cuối cùng cũng ko cho anh em được cái tut nào!Haizzz...

Vào đây: http://doinodoa.tk/

vudiepdh1
10-12-2011, 06:54 PM
Vào đây: http://doinodoa.tk/

Tôi vào rồi có thấy gì đâu ?

vinhphucer
10-01-2012, 04:04 PM
cám on bài viết của bạn,mình đang làm đồ án dùng sfr05 để đo khoảng cách,bạn có tài liệu liên quan đến pic và sfr05 mong bạn post lên để mình tham khảo với.

ngoile
17-03-2012, 07:37 PM
Chào các anh
Em mới vào trang "picvietnam" em cũng đang nhận đồ án dùng sfr05 và pic 16f887 ( Mạch đo khảng cách. Nhưng em "gà" quá không biết mua sfr05 ở đâu. Anh em nào biết chỉ em mua với. Em đang học ở sài gòn. Thanks tấc cả mọi người.

BrightFuture
02-04-2012, 02:34 AM
Khi đó cần sử dụng các chân khác để giả lập capture. Hoặc thậm chí ban nối chung các chân đó trên capture qua điện trở, khi đó, bạn kích siêu âm nào thì giá trị đọc về thuộc về siêu âm đó.

Ngoài ra, bạn có thể sử dụng ngắt RB On Change để đọc 4 siêu âm, thêm INT0 để đọc siêu âm còn lại, hoặc sử dụng 2 Capture + 3 onchange,... Rất nhiều giải pháp. Thậm chí bạn dùng 1 chân I/O bình thường + 1 timer cũng có thể đọc được 1 siêu âm. Tất cả xử lý bằng phần mềm.

Chúc vui

bác có thể up 1 đoạn code ví dụ đc ko ạ
thanks

sieutosy
02-04-2012, 02:49 PM
em muốn viết code để nạp cho pic 16F877A dùng CCS mà không biết code cơ bản như nào? Anh chỉ giúp em với ạ .
thank

huyckc
17-04-2012, 09:37 PM
Các bác ơi,bác nào cho 1 đoạn code ví dụ của anh Falleaf khi dùng 1 chân I/O để đọc siêu âm được không ạ
Thân chào

quyenne007
18-09-2012, 03:48 PM
http://www.picvietnam.com/forum/showthread.php?t=30502
đây là ứng dụng của cảm biến siêu âm

toancdt
18-09-2012, 09:22 PM
http://www.picvietnam.com/forum/showthread.php?t=30502
đây là ứng dụng của cảm biến siêu âm

mày dạo này đi lang thang lừa gạt anh em ah

tuantranam
07-11-2012, 05:34 PM
tìm hiểu cái này rùi , nhưng chưa có money đầu tư . ko biết Hà nội chỗ nào bán hả các bác , giá cả bao nhiêu ???
ban neu mua thi pm cho minh, truoc minh mua lam do an tot nghiep ma !

hothienchuon
28-06-2013, 10:14 PM
mình có con SRF05 cần thanh lý với giá 450k, mua mới ở R&P tphcm là 570k.Bảo đảm hoạt động tốt.kèm theo code,demo cho xem khi mua.anh em cần liên hệ mình nhé.(01235558257)

anh_gioi
07-09-2013, 12:25 AM
ôi, thớt này mình lập lâu rồi, giờ vẫn còn hoạt động. Lâu rồi không ghé qua, các bạn vẫn nhộn nhịp như thời sinh viên của mình !

congduc1352
11-06-2014, 07:51 PM
[QUOTE=anh_gioi;
#include "F:\NCKH 2009\PIC 16\CCP1-2\CCP1-2.h"
#include <F:\NCKH 2009\PIC 16\timer01---\lcd_lib_4bit.c>
#include <F:\NCKH 2009\PIC 16\timer01---\DEFS_16F877A.h>


[/QUOTE]

Cho em xin các thư viện này