Мой датчик HC-SR04 сломался?

Я новичок в Arduino и электротехнике, и проект, который я пытаюсь реализовать, включает ультразвуковой датчик. Я использую HC-SR04 с платой Elegoo Mega2560 Arduino. Несколько дней назад мне удалось правильно распечатать расстояние с помощью библиотеки Arduino, но после добавления h-моста, 2 двигателей и 2 9-вольтовых батареек датчик, похоже, не работал должным образом. Я вернулся к простой схеме только с HC-SR04, и показания расстояния были повсюду. Несмотря ни на что, расстояние оставалось между 90 и 120, в основном оставаясь в районе 110. Эти числа, казалось, не имели никакой корреляции с фактическим расстоянием. Я даже пытался рассчитать расстояние самостоятельно на случай, если что-то не так с библиотекой.

У меня есть вывод VCC на HC-SR04, подключенный к 5v на Arduino, вывод GND, подключенный к выводу GND на Arduino, вывод Trigger, подключенный к выводу 50 на Arduino, и вывод Echo на Arduino, подключенный к выводу 52 на Arduino. Arduino подключен к моему компьютеру через USB.

Вот мой набросок для распечатки расстояния без библиотеки:

const int triggerPIN = 50;  //это цифровые контакты на плате Arduino
const int echoPIN = 52;     //Я уверен, что эти пины не сломаны, потому что я никогда ими не пользовался

long duration;
int distance;

void setup() {
    Serial.begin(9600);

    pinMode (triggerPIN, OUTPUT);
    pinMode (echoPIN, INPUT);

    delay(1000);
}

int getDistance () {                  
    digitalWrite (triggerPIN, LOW);
    delayMicroseconds (2);

    digitalWrite (triggerPIN, HIGH);
    delayMicroseconds (10);
    digitalWrite (triggerPIN, LOW);

    duration = pulseIn (echoPIN, HIGH);
    distance = duration * 0.034 / 2;

    Serial.println (distance);
}

void loop() {
    getDistance ();  //Я попробовал поместить код непосредственно в функцию цикла с тем же результатом
}

Боюсь, что я сломал часть платы Arduino или датчика, когда возился с двумя батареями. Можно ли сломать датчик HCSR04, подключив два больших напряжения к контакту VCC на датчике? Если да, то как мне предотвратить это в будущем? Я знаю, что рабочее напряжение для HCSR04 составляет 5 В, означает ли это, что ему нужно не менее 5 В или не более 5 В? Я хотел бы точно знать, что он сломался, а не ошибка с моей стороны, прежде чем покупать новый. Заранее спасибо!

, 👍2


1 ответ


0

Основное функциональное различие между кодом в вашем вопросе и обычным примером датчика пинга заключается в том, что ваш код выполняет повторные измерения настолько быстро, насколько это позволяет ему или потоку вывода.

В отличие от этого, обычный пример имеет задержку (100) после каждого цикла измерения. Это позволяет 1/10 секунды времени для затухания любого более длинного эха помещения, и таким образом избежать путаницы с новыми измерениями.

Хотя это может быть не вашей непосредственной или единственной проблемой, обычно лучше не пытаться проводить измерения сонара так близко друг к другу во времени, что они могут перекрываться.

Если вашему эскизу также необходимо выполнять другие действия, вместо блокирующего delay() вы можете проверить прошедшее время и выполнить новое измерение сонара только по истечении определенного времени; в это время ваша программа может продолжать выполнять любые другие критические операции.

,