Мой датчик 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 В? Я хотел бы точно знать, что он сломался, а не ошибка с моей стороны, прежде чем покупать новый. Заранее спасибо!
@cr5519, 👍2
1 ответ
Основное функциональное различие между кодом в вашем вопросе и обычным примером датчика пинга заключается в том, что ваш код выполняет повторные измерения настолько быстро, насколько это позволяет ему или потоку вывода.
В отличие от этого, обычный пример имеет задержку (100)
после каждого цикла измерения. Это позволяет 1/10 секунды времени для затухания любого более длинного эха помещения, и таким образом избежать путаницы с новыми измерениями.
Хотя это может быть не вашей непосредственной или единственной проблемой, обычно лучше не пытаться проводить измерения сонара так близко друг к другу во времени, что они могут перекрываться.
Если вашему эскизу также необходимо выполнять другие действия, вместо блокирующего delay()
вы можете проверить прошедшее время и выполнить новое измерение сонара только по истечении определенного времени; в это время ваша программа может продолжать выполнять любые другие критические операции.
- hx711 и датчик нагрузки показывают 0 для калибровки
- Как создать постоянный цикл с событием, которое происходит только один раз?
- Объединение кода для нескольких датчиков в одной программе
- Сколько датчиков может поддерживать один модуль Arduino?
- Какой тип разъема использует система GROVE?
- Нужно ли подавать напряжение 12 В на жесткий диск?
- Программа arduino выдаёт ошибку expected //primary-expression before ')' token error: //expected ';' before '}' token E
- (Код ультразвукового датчика: такого файла или каталога нет)