Thông báo

Collapse
No announcement yet.

Xin hỏi về cảm biến siêu âm đo khoảng cách

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Xin hỏi về cảm biến siêu âm đo khoảng cách

    Xin chào mọi người,
    Mình dùng 1 module thu phát sóng siêu âm, Nguồn: 5V, dòng 30mA.
    Vậy để đo được khoảng cách tối đa trong vòng 2m thì nên cho module phát trong thời gian bao nhiêu là vừa đủ? 1ms được không mọi người.
    Ai biết làm ơn chỉ giúp em.

  • #2
    Bạn nghiên cứu đoạn code sau: họ dùng có 20us thôi!
    #include <16F877.h>
    #device adc=8
    #FUSES NOWDT, HS, NOPUT, PROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
    #use delay(clock=20000000)


    /************************************************** **********************************************
    / Used sonar - HC-SR04 & DYP ME007
    / If you are using DYP ME 007 or any other 5 pin sonar, Please note that not to take the
    / pin named 'out'. Take echo instead.
    / Pin configuration (5 pin)- VCC(+5) TRIG(Trigger pin) ECHO(Output pin) OUT(Not needed) GND (Ground)
    / Pin configuration (4 pin)- VCC(+5) TRIG(Trigger pin) ECHO(Output pin) GND (Ground)
    /
    / Code by Bhanu Watawana
    / 0778111887
    / Uva Wellassa University - Sri Lanka
    / Mechatronics
    */////////////////////////////////////////////////////////////////////////////////////////////////



    #define LCD_TYPE 2
    #include <lcd.c>

    int16 distance, time; // Defining variables


    // Defining the pins

    #define trig pin_B1 // Change as you wish, can use any pin in the MCU
    #define echo pin_B0 // Change as you wish, can use any pin in the MCU

    void main()
    {
    lcd_init(); // initiating the LCD

    printf(LCD_PUTC, "\f Sonar test \n Code by Bhanu ");// for LCD & MCU restart troubleshooting

    delay_ms(1000); // Boot-up delay, for troubleshooting

    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); // initiating timer



    while(true)
    {

    output_high(trig); // ping the sonar
    delay_us(20); // sending 20us pulse đây chỗ này
    output_low(trig);

    while(!input(ECHO)) // wait for high state of echo pin
    {}

    set_timer1(0); // setting timer zero

    while(input(ECHO)) // Wait for high state of echo pin
    {}

    time=get_timer1(); // Getting the time

    distance=time*0.028 + 1.093 ; // Calculating the distance


    printf(LCD_PUTC, "\fTime :%Lu \nDistance = %Lu",time,distance); // Putting the time and
    //distance to the LCD
    delay_ms(1000);


    }
    }

    Comment


    • #3
      hay quá. cám ơn bạn nhiều nha.

      Comment


      • #4
        Mình có đọc datasheet của con SRF05 thì trong đó có đoạn là: Trước hết, ta tạo ra 1 xung có độ rộng ít nhất 10us trên chân trigger. Sau đó module sẽ tạo ra 8 xung để phát ra sóng siêu âm.
        Vậy cho mình hỏi, 8 xung nó tạo ra có độ rộng mỗi xung tương ứng với độ rộng xung mình khởi tạo trên chân trigger không? Hay là nó băm xung của mình khởi tạo ra làm 8 xung nhỏ hơn? Và nếu độ rộng xung thay đổi thì nó sẽ có gì khác nhau?

        Comment


        • #5
          tần số của máy phát là 40kHz, mỗi chu kỳ la 25us, vi vậy 8 xung đấy la 8 xung có độ rộng 12,5us bạn à!

          Comment

          Về tác giả

          Collapse

          gnouc195 Tìm hiểu thêm về gnouc195

          Bài viết mới nhất

          Collapse

          Đang tải...
          X