HC-SR04 аппаратные проблемы.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

То-же самое, купленные года 4 назад прекрасно работают до четырёх метров.
А новые просто валяются , полтора-два еле-еле....

vodyanov
Offline
Зарегистрирован: 16.02.2015

keefa пишет:

Написал продавану, жду что ответит. 

Как правило продавцы возвращают деньги без вопросов, репутация дороже.

И берите вот эти HC-SR04+ с ними как показала практика всё хорошо работает....

vv40in
Offline
Зарегистрирован: 19.09.2015

Всех приветствую !

Такая проблема :

На ECHO постоянно висит в 5В, несмотря на все старания: я перепробовал все выходы дурино,

исходник - как в  http://research.andbas.com/2011/12/hc-sr04.html (и возможные вариации).

Осциллографа у меня нет, триггер на ECHO делать не хочется - уверен: там постоянный +5В.

Я отпаивал  R1 и притягивал ECHO к нулю - то же самое.

Грешу на датчик.

Есть иные мнения?

Поделитесь пож-ста.

nevkon
Offline
Зарегистрирован: 20.01.2015

Есть решение проблемы, получающее стабильный результат? Оказался горе обладателем 10 таких глючных датчиков.

Подтягивающий питание резистор к конденсатору реально помогает или фигня все это (из поста №14)?

И если делать сброс питания перед измерением, то какие характеристики транзистора выбрать (я так понял можно просто включать датчики на момент измерения, после чего гасить)? Из минусов такого метода - используется лишний вывод для управления.

keefa
Offline
Зарегистрирован: 19.06.2015

nevkon пишет:

Есть решение проблемы, получающее стабильный результат? Оказался горе обладателем 10 таких глючных датчиков.

Подтягивающий питание резистор к конденсатору реально помогает или фигня все это (из поста №14)?

И если делать сброс питания перед измерением, то какие характеристики транзистора выбрать (я так понял можно просто включать датчики на момент измерения, после чего гасить)? Из минусов такого метода - используется лишний вывод для управления.

Подтягивающий резистор не помогает. Конденсатор на питание тоже не помогает.

nevkon
Offline
Зарегистрирован: 20.01.2015

Значит остается только использовать третий пин для управления питанием. Можно использовать простой не мощный транзистор? Какой выбрать?

goon77772
Offline
Зарегистрирован: 12.10.2015

Киньте ссылку где покупали датчики hc-sr04+

searcher13
Offline
Зарегистрирован: 05.11.2015

Вот здесь выложена уже готовая библиотека, которая устраняет баг с датчиком.
http://forum.arduino.cc/index.php?topic=55119.15
Если датчик завис, то сбросить его можно, переведя EchoPin в режим OUTPUT, обнулить его и снова перевести в режим INPUT.

nevkon
Offline
Зарегистрирован: 20.01.2015

Это датчику не повредит?

searcher13
Offline
Зарегистрирован: 05.11.2015

nevkon пишет:

Это датчику не повредит?

Судя по многочисленным отзывам, нет. Сегодня попробую на своем датчике )

vodyanov
Offline
Зарегистрирован: 16.02.2015

searcher13 пишет:

Сегодня попробую на своем датчике )

Как успехи?

searcher13
Offline
Зарегистрирован: 05.11.2015

vodyanov пишет:

searcher13 пишет:

Сегодня попробую на своем датчике )

Как успехи?

Работает на ура!

keefa
Offline
Зарегистрирован: 19.06.2015

searcher13 пишет:

vodyanov пишет:

searcher13 пишет:

Сегодня попробую на своем датчике )

Как успехи?

Работает на ура!

в каких пределах работает на ура?

searcher13
Offline
Зарегистрирован: 05.11.2015

keefa пишет:

searcher13 пишет:

vodyanov пишет:

searcher13 пишет:

Сегодня попробую на своем датчике )

Как успехи?

Работает на ура!

в каких пределах работает на ура?

Максимальный предел не выявлял - меня интересовал диапазон до 2-2,5 метров, в нем работал нормально. С проверкой большего расстояния у меня были некоторые организационные проблемы =). При потере эха датчик возвращает 0, как и раньше, вместо дистанции "0" видим "Out of range", который благополучно уходит после возвращения в нормальный диапазон, и мы снова видим адекватные значения, т.е. датчик сбрасывается, как и положено. Я бы еще доработал библиотеку, чтобы вместо "Out of range" выводилось последнее адекватно измеренное значение, тогда вообще красота будет. Я использовал библиотеку SRF05.ZIP

HawkDoom
Offline
Зарегистрирован: 06.11.2015

Заказывал недавно. тоже зависает. Когда трогаешь кондёры начинает мельтешить. Кстати виснет не только на дальних, но и на критично близких расстояниях. Ну потому что эхо в любом случае потеряно.

Кстати, работает нормально, если по питанию помеха есть. Я когда первоначально воткнул его в макетку, прогу написал под этот соник(я не ардуинщик- я на Си под 8 атмегу библиотеку накатал по даташиту) так у меня прекрасно работало всё. потом перенёс на норм плату раз и не работает!

Проверил осциллом - проблема описанная выше. Залез в интернет - нашёл эту ветку - всё понял. НО! На макетке то всё работало ровно. Поставил обратно - работает. О_о .  Чудес в электронике не бывает, я осциллом в питание меги и соника, а там помеха в 50 мВ частота около мегагерца ну или кто этот шум разберёт. Я кондёр туда поствил,- Оп - питание ровное, соник зависает =). Кондёр вынимаю - работает как нужно.

Китайцу претензию выставил из принципа, со ссылкой на ютуб(выше было ссылко) и на эту ветку - принял сразу.45 рублей не жалко, Был бы рабочий я и за 100 бы взял, экономисты хреновы.

А секунду терять на сброс питания тоже жалко. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.

vodyanov
Offline
Зарегистрирован: 16.02.2015

HawkDoom, все верно...

Electronik83
Offline
Зарегистрирован: 06.12.2015

Заказал новые - зависал, когда хотел. Кварц на борту. Плесень:)

Не очень долго искал проблему от зависаний. Спасибо за ваш форум. Бонусом мой скейтч рабочий в Arduino 1.0.5 (реализовал сброс на ноге триг, если приходит ноль), подходит для новых дальномеров:

#define ECHO_PIN 9
#define TRIG_PIN 8

int max_distance;
  
void setup()  {
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

void loop()  {
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  int distance = pulseIn(ECHO_PIN, HIGH, 10000); // возможно нужно больше 10к...
  if (distance == 0)  { 
    pinMode(ECHO_PIN, OUTPUT); 
    digitalWrite(ECHO_PIN, 0); 
    pinMode(ECHO_PIN, INPUT); 
    Serial.println("Out of range!"); 
  } else {
    if (distance > max_distance) max_distance = distance;
    Serial.print(distance/58);  
    Serial.print(" CM, max=");
    Serial.print(max_distance/58);
    Serial.println(" CM");
  }
  delay(100);
}

 

HawkDoom
Offline
Зарегистрирован: 06.11.2015

Заказал у этого продавца --  http://ru.aliexpress.com/store/808897

Работает как положено.

werter
Offline
Зарегистрирован: 15.01.2016

прошу прощения я начинающий , а немогли бы вы произвести изменения в програмее чтобы светодиод при определённом расстоянии загорался LED 13 например меньше 50 см

nevkon
Offline
Зарегистрирован: 20.01.2015

Легко - берем последний код и добавляем 2 строчки:

#define ECHO_PIN 9
#define TRIG_PIN 8

int max_distance;
  
void setup()  {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

void loop()  {
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  int distance = pulseIn(ECHO_PIN, HIGH, 10000); // возможно нужно больше 10к...
  if (distance == 0)  { 
    pinMode(ECHO_PIN, OUTPUT); 
    digitalWrite(ECHO_PIN, 0); 
    pinMode(ECHO_PIN, INPUT); 
    Serial.println("Out of range!"); 
  } else {
    if (distance > max_distance) max_distance = distance;
    Serial.print(distance/58);  
    Serial.print(" CM, max=");
    Serial.print(max_distance/58);
    Serial.println(" CM");
    if (distance/58<50) {digitalWrite(13, HIGH);} else {digitalWrite(13, LOW);}
  }
  delay(100);
}

 

werter
Offline
Зарегистрирован: 15.01.2016

не компилируется что то АААААА!!!!! всё заработало!!! спасибо ДОРОГОЙ !!!!!

 а то я уже второй день бъюсь как рыба об асфальт!!!!

werter
Offline
Зарегистрирован: 15.01.2016

а не подскажете почему сенсор обманывает т е срабатывает не при 50 см а при 38 см?

nevkon
Offline
Зарегистрирован: 20.01.2015

Значит перевод единиц работает неправильно. Проверьте коэффициент.

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Кто то решил проблему с зависанием датчика?

Я при зависании отключаю еге на 5мс, но мне это не нравится.

Есть ли решение оживить датчик?

werter
Offline
Зарегистрирован: 15.01.2016

Okmor пишет:

Кто то решил проблему с зависанием датчика?

Я при зависании отключаю еге на 5мс, но мне это не нравится.

Есть ли решение оживить датчик?

У меня всё работает 'не зависает

 

werter
Offline
Зарегистрирован: 15.01.2016

nevkon пишет:

Значит перевод единиц работает неправильно. Проверьте коэффициент.

коэффициент я другой поставил 65- так точнее будет

vodyanov
Offline
Зарегистрирован: 16.02.2015

werter, тут обсуждаютя аппаратные проблемы с данным датчиком, а не примеры импользования. То, что с вашим всё хорошо, это радует, но к сожалению не всем так повезло. 

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

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Я так понял, что прблема в программе модуля. Ее изменить не удастся. Пока на руках нет модуля с нормальной прошивкой, пришлось пожертвовать одним выходом и Mosfet транзистором. При задержке сигнала менее 100Мкс, перегружаю модуль по питанию.

От стандартной библиотеки отказался в виду задержек в программе. Отклик с датчика повесил на пин прерывания и задержку считаю сам.

Схема:

Megawollt
Offline
Зарегистрирован: 06.12.2015

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

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

vodyanov
Offline
Зарегистрирован: 16.02.2015

Megawollt пишет:
от себя могу сказать, что датчики эти- полное фуфло

Не стыдно такое писать? Вы, хотя бы с теорией ознакомьтесь, по принципу работы УЗ сенсоров.

 

Цитата:
У некоторых часто проскакивает максимальное или минимальное значение. Я сначала не мог понять, почему мой мотор в ненужный момент останавливается...

Вытекает оттуда-же, пишите правильный код.

 

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

Megawollt пишет:

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

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

Я пробовал стандартную библиотеку и отказался от нее. Расчет задержки сигнала за счет полной остановки программы не есть коректно. Итого перешол на использование прерывания. Возможно ваши глючи изза этого.

Rossi25
Offline
Зарегистрирован: 08.02.2016

HawkDoom пишет:

Китайцу претензию выставил из принципа, со ссылкой на ютуб(выше было ссылко) и на эту ветку - принял сразу.45 рублей не жалко, Был бы рабочий я и за 100 бы взял, экономисты хреновы.

Не подскажите, какой текст лучше написать китайцу, тоже 3шт не работают.

HawkDoom пишет:
. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.

Можно тоже поподробнее, полный новичок, можно ли ардуинкой обойтись ( управлять с ик пульта двигателем (вперед-назад и скорость) + этот датчик

HawkDoom
Offline
Зарегистрирован: 06.11.2015

можно ли ардуинкой обойтись

Можно конечно. Изучать - изучать - и больше практики. Потом на СИ переходить по желанию.

Претензию так делал -- открыть спор, в текст забил только ссылку , потом мышкой далее, далее и т.д.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Rossi25 пишет:

HawkDoom пишет:
. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.

Можно тоже поподробнее, полный новичок, можно ли ардуинкой обойтись ( управлять с ик пульта двигателем (вперед-назад и скорость) + этот датчик

#include "arhat.h" вам в помощь. Есть работа с этим датчиком на прерываниях и в автоматном стиле управления (без delay). Код комментирован весь, так что разобраться проблем не должно быть. Тут где-то есть тема со ссылками на гихаб.

Rossi25
Offline
Зарегистрирован: 08.02.2016

HawkDoom пишет:

Претензию так делал -- открыть спор, в текст забил только ссылку , потом мышкой далее, далее и т.д.

Полную сумму требовали возвратить, или половину?

У меня вообще датчик мой не показывает, пока палец не приложишь и держишь сзади. Программные способы из этой темы вообще не помогают ( пробовал и библиотеку newping, аналогично). Можно как-то хоть на первое время заставить работать? Может что-то допаять/удалить?

Покупал здесь . У кого ещё, кроме Mega Semiconductor CO., Ltd. (у него заказывал некоторые товары в тот же день, ещё не приехало - долго отправлял) нормальные датчики?

А вот другой продавец прислал вместо преобразователя напряжения тини85  Написал ему, что мол не то (товар пока не подтверждал, что получил), написал типа смотри картинку (то ли под дурачка, то ли не понял). Тини то дороже, но, что с ней делать, не знаю.. Как лучше поступить, согласиться, типа все получил?

Вообще задумка былать заменить сломанный контроллер в лего дупловском поезде на ардуинку (правда, в оригинале ещё звук паровоза играет, не знаю, как это в ардуино впихнуть, хотя даже слот под карту памяти купил, хочется попроще), видел ролик просто с этим датчиком https://www.youtube.com/watch?v=NK9jH1OX3CI

Вопрос ещё с питанием, накупил кучу преобразователей MT3608, думал ардуино и мотор питать, но боюсь просадят аккумуляторы (3 посл NiMh). Теперь думаю об http://www.aliexpress.com/store/product/FREE-SHIPPING-5pcs-lot-DC-DC-Boost-Module-0-9V-5V-to-5V-600MA-USB-Mobile/808897_1095301257.html или http://www.aliexpress.com/store/product/Free-Shipping-5PCS-0-9V-5V-to-5V-600MA-USB-Output-charger-step-up-Power-Module/808897_1977167787.html (непонятно, в чем разница, кроме цвета текстолита) - надеюсь, хватит мощности.

Сплошные вопросы((

 

Electronik83
Offline
Зарегистрирован: 06.12.2015

Попробуйте залить мой скейтч, приведенный Выше. Я про датчики....

Rossi25
Offline
Зарегистрирован: 08.02.2016
Пробовал, постоянно нули. если держать пальцы на датчике, то периодически проскакивает расстояние - это на 
 
Nano V3.0 (ATmega328P), на  Pro Micro (ATmega32U4) вообще всегдя нули
Electronik83
Offline
Зарегистрирован: 06.12.2015
 

Вы один заказали?

Проверьте подключение (ECHO - D9, TRIG - D8, Vcc - +5v, Gnd - замля)

Внимательно осмотрите плату датчика на непропаи.

Завтра свои достану, подумаю может че...

А вообще - я не доволен их работой. Ожидал лучшего... Но что поделать - такая уж технология измерения расстояния...

Rossi25
Offline
Зарегистрирован: 08.02.2016

Три шт. Подключал к ногам d12 и d13 на нано и к d4 d7 на про микро -разве это принципиально? В коде поменял пины на соотвт.

Electronik83
Offline
Зарегистрирован: 06.12.2015

Если в коде пины меняли - то не припципиально. Но я бы попробовал код пока не трогать и подключить как я написал выше. Странно, что все три не работают. Вечером гляну. Напряжение пять вольт или 3.3?

Rossi25
Offline
Зарегистрирован: 08.02.2016

Периодически работает, например, если держать палец слева внизу, или держать макетку на руках ( но и это не всегда помогает). Напряжение мультиметр показывает 4.6В приходит на датчик (питание нано от юсб компа)

nevkon
Offline
Зарегистрирован: 20.01.2015

Попробуйте подать качественное питание. Вполне может быть не хватает для излучателя.

Rossi25
Offline
Зарегистрирован: 08.02.2016

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

Electronik83
Offline
Зарегистрирован: 06.12.2015

Сведи длину проводов к минимуму. Между атмегушкой и датчиком.

Rossi25
Offline
Зарегистрирован: 08.02.2016

У меня не мега, а 328 и 32u4. На фото вроде видно, что проводки короткие, см 12...

nuomo
Offline
Зарегистрирован: 27.05.2015

Electronik83 пишет:
Сведи длину проводов к минимуму. Между атмегушкой и датчиком.

Необходимо установить датчик на расстоянии 5 метров от контроллера. Что можно придумать для устойчивой и безопастной работы ?

Rossi25
Offline
Зарегистрирован: 08.02.2016

Вообщем,  все три датчика заработали, причем как на приведенном скетче, так и с библиотекой newping. На обоих имеющихся ардуинах. Все дело было в макетке, когда подключил проводки с питанием прямо к ногам датчика, стало показывать (от 328 приходит 4.7В, от 32u4 4.62В, от внешнего линейного источника питания не работает вовсе, несмотря на честные 5В), питать отдельно ардуино пока не пробовал.

PS: с 32u4 работает только при заливке скетча, потом, если передернуть usb перестает((

Electronik83
Offline
Зарегистрирован: 06.12.2015

Rossi25 пишет:
У меня не мега, а 328 и 32u4.

Практически во всех Ардуинах стоят Атмеги, вы же сами написали. Arduino Nano v3 - Atmega328P.

С пятью метрами не понял прикола...

nuomo
Offline
Зарегистрирован: 27.05.2015

Прикола никакого нет :)

Есть "емкость" находящаяся в 5 метрах от ардуины, вот и вопрос с помощью чего (как) подключить датчик, чтобы померять уровень метариала (корма) в "емкости" ?

Electronik83
Offline
Зарегистрирован: 06.12.2015

Передовать сигнал заранее преобразованный по цифре. Больше никак.