1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Mạch đo khoảng cách dùng pic 16f887 và cảm biến siêu âm sfr05

Thảo luận trong 'ĐỒ ÁN' bắt đầu bởi ngoile, 17 Tháng ba 2012.

  1. ngoile New Member

    Số bài viết: 5
    Đã được thích: 0
    Điểm thành tích: 0
    Em xin chào các anh.
    Em đang nhận đồ án "Mạch đo khoảng cách dùng pic 16f887 và cảm biến siêu âm sfr05" các anh nào đã làm qua xin giúp em ít tài liệu. do em hoc hệ liên thông nen rất mong sự giúp đỡ của các anh. Cảm ơn các anh đã đọc bài của em.
  2. ngoile New Member

    Số bài viết: 5
    Đã được thích: 0
    Điểm thành tích: 0
  3. ngoile New Member

    Số bài viết: 5
    Đã được thích: 0
    Điểm thành tích: 0
  4. cindar New Member

    Số bài viết: 105
    Đã được thích: 0
    Điểm thành tích: 0
    Mình có vài chia sẻ mong giúp được bạn. Cái này ko phức tạp lắm đâu.
    LCD <---> PIC16F887 <----> SRF05 <----> Vật Thể


    Sử dụng tính năng capture của PIC để đo lường khoảng thời gian rồi suy ra khoảng cách.
    SRF05 là cảm biến siêu âm đo khoảng cách được đóng gói thành module nên dễ sử dụng.
    Tầm đo: 4cm – 4m .
    Cảm biến siêu âm có hai chế độ hoạt động, tương ứng với hai chế độ hoạt động đó ta có cách sử dụng khác nhau.
    Đễ cho dễ bạn nên sử dụng chế độ 1 (Mode 1), ở chế độ này Trigger và Echo nằm trên 2 chân khác nhau.

    Ở chế độ này ta bỏ trống chân mode, không kết nối với gì cả. Đối với SRF05, chân mode này đã kết nối với một điện trở kéo bên trong. Chân trên vi điều khiển nối với chân trigger của cảm biến được set làm output để xuất xung 10us kích cảm biến hoạt động, các chân nối với echo của cảm biến được set làm input dể nhận tín hiệu trả về từ cảm biến(chân CCP1 và CCP2 trên vi điều khiển).
    Tính toán khoảng cách như sau:
    Sau khi xuất xung 10us vào trigger kích cảm biến hoạt động thì cảm biến sẽ tự đông xuất 8 xung với tần số 40kHz, sau đó tạo xung cạnh lên trên chân echo với mode1 (đưa chân này lên mức cao), sóng siêu âm đi từ cảm biến truyền vào môi trường và phản xạ trở lại khi có vật cản. Khi có tín hiệu phản xạ về cảm biến thì cảm biến sẽ tạo xung cạnh xuống trên chân echo đối với mode1(đưa chân này về mức thấp). Để xác định khoảng cách từ cảm biến đến vật cản thì ta thực hiện việc đo khoảng thời gian từ lúc có xung cạnh lên đến lúc có xung cạnh xuống trên chân echo đối với mode1.

    Trường hợp vật ở xa hơn so với khoảng cách đo lường của cảm biến sẽ tự động tạo xung cạnh xuống sau 30ms kể từ lúc tạo xung cạnh lên. Trong tính toán ta phải chú ý trường hợp này để tránh lỗi cho kết quả sai khi vật nằm ngoài tầm đo lường của cảm biến.


    Config Timer 1 with Ts = (1/5MHz)*Pre = 0.8uS (Prescaler = 4); //có thể chọn tỉ lệ chia khác

    Mã:
    void interrupt isr()
    {
        if(CCP1IE && CCP1IF)
        {
            CCP1IF = 0;            // reset bit flag
            if(!trg)           // chưa kích trigger thì canh cạnh lên, kích rồi thì canh cạnh xuống.
            {
                /* detect echo rising edge */
                TMR1L=TMR1H=0;
                CCP1CON = 0x04;    // switch to detect falling edge
                trg = 1;        //set bit flag
            }
            else
            {
                /* detect echo falling edge */
                tmr_value = TMR1L;                        // doc gia tri chua trong timer 1
                tmr_value |= (unsigned int)TMR1H << 8;    // gia tri 16 bit
                distance = (tmr_value*0.8)/58;
                GIE = 0;                                // disable globle interrupt
            }
        }
    }
    Distance ở đây tính bằng Centimeter.
    Chi tiết hơn thì bạn nên xem datasheet, nó rất đầy đủ, cái trên chẳng qua là dịch lại ý chính của nó thôi.
    Chúc bạn được điểm cao!
    Ps: Code trên là viết trên HiTech Pic trong MPLab
  5. ngoile New Member

    Số bài viết: 5
    Đã được thích: 0
    Điểm thành tích: 0
  6. ngoile New Member

    Số bài viết: 5
    Đã được thích: 0
    Điểm thành tích: 0
  7. ngocthanhdtvt New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 0
  8. bao New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    bạn cho mình hỏi bạn có mở rộng tính năng gì về giao tiếp với pic 16f887 ko?góp ý cho mình với
  9. quoctuan_prtc New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    chào anh. a đã có [h=2]Mạch đo khoảng cách dùng pic 16f887 và cảm biến siêu âm sfr05[/h]em dang lam do an mon hoc.....gio nay chua biet j..xin may anh chỉ giáo và em kham khảo them......có j gui email cho e nhe.cam on may a chi nhieu lam quoctuan_prtc@yahoo.com
  10. lydainghiep Moderator

    Số bài viết: 149
    Đã được thích: 0
    Điểm thành tích: 16
    Đọc cái này sẽ hiểu
    http://www.robot-electronics.co.uk/htm/srf05tech.htm
    Nếu ko hiểu thì học lại vđk.
    Theo mình, nếu chia cho đúng với tài liệu (If the width of the pulse is measured in uS, then dividing by 58 will give you the distance in cm, or dividing by 148 will give the distance in inches. uS/58=cm or uS/148=inches) thì khoảng cách ko đúng cho lắm nên mình tự chế ra cách làm cho chính xác, có bạn nào bị giống mình ko?
    http://youtu.be/ooskQP0SHDc

Chia sẻ trang này