HC-SR04 не работает на расстоянии более 70см

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем EvgenyG, 20 апр 2015.

  1. EvgenyG

    EvgenyG Нуб

    Добрый день.
    Подскажите что делаю не так?
    Есть 10 датчиков HC-SR04. Покупал года 2-3 назад для одного проекта, который так и не был реализован.
    Сейчас решил попробовать датчики с Arduino.
    Все датчики выдают разные данные. Некоторые вообще отказываются работать на расстоянии более 20 см.
    Один работает на 1.5м.
    По характеристикам должны работать до 4м.
    Запускаю с помощью библиотеки Ultrasonic
    Результат смотрю через монитор порта.
    Вот сам скетч:

    //
    // Ultrasonic HR-SC04 sensor test
    //
    // http://robocraft.ru
    //

    #include "Ultrasonic.h"

    // sensor connected to:
    // Trig - 12, Echo - 13
    Ultrasonic ultrasonic(8, 9);

    void setup()
    {
    Serial.begin(9600); // start the serial port
    }

    void loop()
    {
    float dist_cm = ultrasonic.Ranging(CM); // get distance
    Serial.println(dist_cm); // print the distance
    delay(100); // arbitary wait time.
    }
     
  2. elctpo

    elctpo Нерд

    Попробуй вместо библиотеки написать код для дальномера
     
  3. Arduinщик

    Arduinщик Нерд

    попробуйте этот

    // ---------------------------------------------------------------------------
    // Example NewPing library sketch that does a ping about 20 times per second.
    // ---------------------------------------------------------------------------

    #include <NewPing.h>

    #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
    #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
    #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

    void setup() {
    Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
    }

    void loop() {
    delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
    unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
    Serial.print("Ping: ");
    Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
    Serial.println("cm");
    }

    ссылка на библиотеку:

    http://playground.arduino.cc/Code/NewPing#.UzGBePl_sXw
     
    EvgenyG нравится это.
  4. EvgenyG

    EvgenyG Нуб

    Спасибо.
    Интересный результат получается:
    [​IMG]

    Если смотреть по нижней границе графика, то почти точно определяется расстояние.
     
  5. EvgenyG

    EvgenyG Нуб

    Может у меня датчики старые и у них прошивка старая.
     
  6. Arduinщик

    Arduinщик Нерд

    В библиотеках есть примеры. Так что посмотрите в NewPing какой-нибудь другой пример.
     
  7. EvgenyG

    EvgenyG Нуб

    Посмотрел.
    Не разобрался.
    Результат такой же.