Есть решение проблемы, получающее стабильный результат? Оказался горе обладателем 10 таких глючных датчиков.
Подтягивающий питание резистор к конденсатору реально помогает или фигня все это (из поста №14)?
И если делать сброс питания перед измерением, то какие характеристики транзистора выбрать (я так понял можно просто включать датчики на момент измерения, после чего гасить)? Из минусов такого метода - используется лишний вывод для управления.
Есть решение проблемы, получающее стабильный результат? Оказался горе обладателем 10 таких глючных датчиков.
Подтягивающий питание резистор к конденсатору реально помогает или фигня все это (из поста №14)?
И если делать сброс питания перед измерением, то какие характеристики транзистора выбрать (я так понял можно просто включать датчики на момент измерения, после чего гасить)? Из минусов такого метода - используется лишний вывод для управления.
Подтягивающий резистор не помогает. Конденсатор на питание тоже не помогает.
Вот здесь выложена уже готовая библиотека, которая устраняет баг с датчиком. http://forum.arduino.cc/index.php?topic=55119.15
Если датчик завис, то сбросить его можно, переведя EchoPin в режим OUTPUT, обнулить его и снова перевести в режим INPUT.
Максимальный предел не выявлял - меня интересовал диапазон до 2-2,5 метров, в нем работал нормально. С проверкой большего расстояния у меня были некоторые организационные проблемы =). При потере эха датчик возвращает 0, как и раньше, вместо дистанции "0" видим "Out of range", который благополучно уходит после возвращения в нормальный диапазон, и мы снова видим адекватные значения, т.е. датчик сбрасывается, как и положено. Я бы еще доработал библиотеку, чтобы вместо "Out of range" выводилось последнее адекватно измеренное значение, тогда вообще красота будет. Я использовал библиотеку SRF05.ZIP
Заказывал недавно. тоже зависает. Когда трогаешь кондёры начинает мельтешить. Кстати виснет не только на дальних, но и на критично близких расстояниях. Ну потому что эхо в любом случае потеряно.
Кстати, работает нормально, если по питанию помеха есть. Я когда первоначально воткнул его в макетку, прогу написал под этот соник(я не ардуинщик- я на Си под 8 атмегу библиотеку накатал по даташиту) так у меня прекрасно работало всё. потом перенёс на норм плату раз и не работает!
Проверил осциллом - проблема описанная выше. Залез в интернет - нашёл эту ветку - всё понял. НО! На макетке то всё работало ровно. Поставил обратно - работает. О_о . Чудес в электронике не бывает, я осциллом в питание меги и соника, а там помеха в 50 мВ частота около мегагерца ну или кто этот шум разберёт. Я кондёр туда поствил,- Оп - питание ровное, соник зависает =). Кондёр вынимаю - работает как нужно.
Китайцу претензию выставил из принципа, со ссылкой на ютуб(выше было ссылко) и на эту ветку - принял сразу.45 рублей не жалко, Был бы рабочий я и за 100 бы взял, экономисты хреновы.
А секунду терять на сброс питания тоже жалко. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.
Заказал новые - зависал, когда хотел. Кварц на борту. Плесень:)
Не очень долго искал проблему от зависаний. Спасибо за ваш форум. Бонусом мой скейтч рабочий в 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);
}
прошу прощения я начинающий , а немогли бы вы произвести изменения в програмее чтобы светодиод при определённом расстоянии загорался LED 13 например меньше 50 см
werter, тут обсуждаютя аппаратные проблемы с данным датчиком, а не примеры импользования. То, что с вашим всё хорошо, это радует, но к сожалению не всем так повезло.
Okmor, к сожалению проблема в программе микроконтроллера, контроллер одноразовый, вытащить из него бинарник нет возможности, да и смысла особо нет, так-как и таких контролеров в продаже нет толком. Единственное решение програмное, и оно приведено выше в данной ветке. А самый лучший способ, это открыть спор с продавцом, вернуть свои деньги и купить нормальный сенсор, ссылки тоже тут оставляли на проверенных продавцов.
Я так понял, что прблема в программе модуля. Ее изменить не удастся. Пока на руках нет модуля с нормальной прошивкой, пришлось пожертвовать одним выходом и Mosfet транзистором. При задержке сигнала менее 100Мкс, перегружаю модуль по питанию.
От стандартной библиотеки отказался в виду задержек в программе. Отклик с датчика повесил на пин прерывания и задержку считаю сам.
Я заказывал эти датчики под свой проект у разных продавцов и от себя могу сказать, что датчики эти- полное фуфло. Они неплохо работают на определения наличия чего либо крупного, но вот там, где нужны хоть какие то измерения, они бесполезны.
У некоторых часто проскакивает максимальное или минимальное значение. Я сначала не мог понять, почему мой мотор в ненужный момент останавливается, но когда я сделал тестер с экраном все стало ясно
Я заказывал эти датчики под свой проект у разных продавцов и от себя могу сказать, что датчики эти- полное фуфло. Они неплохо работают на определения наличия чего либо крупного, но вот там, где нужны хоть какие то измерения, они бесполезны.
У некоторых часто проскакивает максимальное или минимальное значение. Я сначала не мог понять, почему мой мотор в ненужный момент останавливается, но когда я сделал тестер с экраном все стало ясно
Я пробовал стандартную библиотеку и отказался от нее. Расчет задержки сигнала за счет полной остановки программы не есть коректно. Итого перешол на использование прерывания. Возможно ваши глючи изза этого.
Китайцу претензию выставил из принципа, со ссылкой на ютуб(выше было ссылко) и на эту ветку - принял сразу.45 рублей не жалко, Был бы рабочий я и за 100 бы взял, экономисты хреновы.
Не подскажите, какой текст лучше написать китайцу, тоже 3шт не работают.
HawkDoom пишет:
. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.
Можно тоже поподробнее, полный новичок, можно ли ардуинкой обойтись ( управлять с ик пульта двигателем (вперед-назад и скорость) + этот датчик
. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.
Можно тоже поподробнее, полный новичок, можно ли ардуинкой обойтись ( управлять с ик пульта двигателем (вперед-назад и скорость) + этот датчик
#include "arhat.h" вам в помощь. Есть работа с этим датчиком на прерываниях и в автоматном стиле управления (без delay). Код комментирован весь, так что разобраться проблем не должно быть. Тут где-то есть тема со ссылками на гихаб.
Претензию так делал -- открыть спор, в текст забил только ссылку , потом мышкой далее, далее и т.д.
Полную сумму требовали возвратить, или половину?
У меня вообще датчик мой не показывает, пока палец не приложишь и держишь сзади. Программные способы из этой темы вообще не помогают ( пробовал и библиотеку newping, аналогично). Можно как-то хоть на первое время заставить работать? Может что-то допаять/удалить?
Покупал здесь . У кого ещё, кроме Mega Semiconductor CO., Ltd. (у него заказывал некоторые товары в тот же день, ещё не приехало - долго отправлял) нормальные датчики?
А вот другой продавец прислал вместо преобразователя напряжениятини85 Написал ему, что мол не то (товар пока не подтверждал, что получил), написал типа смотри картинку (то ли под дурачка, то ли не понял). Тини то дороже, но, что с ней делать, не знаю.. Как лучше поступить, согласиться, типа все получил?
Вообще задумка былать заменить сломанный контроллер в лего дупловском поезде на ардуинку (правда, в оригинале ещё звук паровоза играет, не знаю, как это в ардуино впихнуть, хотя даже слот под карту памяти купил, хочется попроще), видел ролик просто с этим датчиком https://www.youtube.com/watch?v=NK9jH1OX3CI
Если в коде пины меняли - то не припципиально. Но я бы попробовал код пока не трогать и подключить как я написал выше. Странно, что все три не работают. Вечером гляну. Напряжение пять вольт или 3.3?
Периодически работает, например, если держать палец слева внизу, или держать макетку на руках ( но и это не всегда помогает). Напряжение мультиметр показывает 4.6В приходит на датчик (питание нано от юсб компа)
Подключил внешний линейный блок питания к датчику, показывает постоянно либо ноль, либо какое-то значение, причем прикладыване пальца уже вовсе не помогает.
Вообщем, все три датчика заработали, причем как на приведенном скетче, так и с библиотекой newping. На обоих имеющихся ардуинах. Все дело было в макетке, когда подключил проводки с питанием прямо к ногам датчика, стало показывать (от 328 приходит 4.7В, от 32u4 4.62В, от внешнего линейного источника питания не работает вовсе, несмотря на честные 5В), питать отдельно ардуино пока не пробовал.
PS: с 32u4 работает только при заливке скетча, потом, если передернуть usb перестает((
Есть "емкость" находящаяся в 5 метрах от ардуины, вот и вопрос с помощью чего (как) подключить датчик, чтобы померять уровень метариала (корма) в "емкости" ?
То-же самое, купленные года 4 назад прекрасно работают до четырёх метров.
А новые просто валяются , полтора-два еле-еле....
Написал продавану, жду что ответит.
Как правило продавцы возвращают деньги без вопросов, репутация дороже.
И берите вот эти HC-SR04+ с ними как показала практика всё хорошо работает....
Всех приветствую !
Такая проблема :
На ECHO постоянно висит в 5В, несмотря на все старания: я перепробовал все выходы дурино,
исходник - как в http://research.andbas.com/2011/12/hc-sr04.html (и возможные вариации).
Осциллографа у меня нет, триггер на ECHO делать не хочется - уверен: там постоянный +5В.
Я отпаивал R1 и притягивал ECHO к нулю - то же самое.
Грешу на датчик.
Есть иные мнения?
Поделитесь пож-ста.
Есть решение проблемы, получающее стабильный результат? Оказался горе обладателем 10 таких глючных датчиков.
Подтягивающий питание резистор к конденсатору реально помогает или фигня все это (из поста №14)?
И если делать сброс питания перед измерением, то какие характеристики транзистора выбрать (я так понял можно просто включать датчики на момент измерения, после чего гасить)? Из минусов такого метода - используется лишний вывод для управления.
Есть решение проблемы, получающее стабильный результат? Оказался горе обладателем 10 таких глючных датчиков.
Подтягивающий питание резистор к конденсатору реально помогает или фигня все это (из поста №14)?
И если делать сброс питания перед измерением, то какие характеристики транзистора выбрать (я так понял можно просто включать датчики на момент измерения, после чего гасить)? Из минусов такого метода - используется лишний вывод для управления.
Подтягивающий резистор не помогает. Конденсатор на питание тоже не помогает.
Значит остается только использовать третий пин для управления питанием. Можно использовать простой не мощный транзистор? Какой выбрать?
Киньте ссылку где покупали датчики hc-sr04+
Вот здесь выложена уже готовая библиотека, которая устраняет баг с датчиком.
http://forum.arduino.cc/index.php?topic=55119.15
Если датчик завис, то сбросить его можно, переведя EchoPin в режим OUTPUT, обнулить его и снова перевести в режим INPUT.
Это датчику не повредит?
Это датчику не повредит?
Судя по многочисленным отзывам, нет. Сегодня попробую на своем датчике )
Сегодня попробую на своем датчике )
Как успехи?
Сегодня попробую на своем датчике )
Как успехи?
Работает на ура!
Сегодня попробую на своем датчике )
Как успехи?
Работает на ура!
в каких пределах работает на ура?
Сегодня попробую на своем датчике )
Как успехи?
Работает на ура!
в каких пределах работает на ура?
Максимальный предел не выявлял - меня интересовал диапазон до 2-2,5 метров, в нем работал нормально. С проверкой большего расстояния у меня были некоторые организационные проблемы =). При потере эха датчик возвращает 0, как и раньше, вместо дистанции "0" видим "Out of range", который благополучно уходит после возвращения в нормальный диапазон, и мы снова видим адекватные значения, т.е. датчик сбрасывается, как и положено. Я бы еще доработал библиотеку, чтобы вместо "Out of range" выводилось последнее адекватно измеренное значение, тогда вообще красота будет. Я использовал библиотеку SRF05.ZIP
Заказывал недавно. тоже зависает. Когда трогаешь кондёры начинает мельтешить. Кстати виснет не только на дальних, но и на критично близких расстояниях. Ну потому что эхо в любом случае потеряно.
Кстати, работает нормально, если по питанию помеха есть. Я когда первоначально воткнул его в макетку, прогу написал под этот соник(я не ардуинщик- я на Си под 8 атмегу библиотеку накатал по даташиту) так у меня прекрасно работало всё. потом перенёс на норм плату раз и не работает!
Проверил осциллом - проблема описанная выше. Залез в интернет - нашёл эту ветку - всё понял. НО! На макетке то всё работало ровно. Поставил обратно - работает. О_о . Чудес в электронике не бывает, я осциллом в питание меги и соника, а там помеха в 50 мВ частота около мегагерца ну или кто этот шум разберёт. Я кондёр туда поствил,- Оп - питание ровное, соник зависает =). Кондёр вынимаю - работает как нужно.
Китайцу претензию выставил из принципа, со ссылкой на ютуб(выше было ссылко) и на эту ветку - принял сразу.45 рублей не жалко, Был бы рабочий я и за 100 бы взял, экономисты хреновы.
А секунду терять на сброс питания тоже жалко. Ладно я на Си всё сделал на таймерах с прерываниями, у меня во время отправки и ожидания эха остальной код выполняется прозрачно,- ИКашки успевают опросится и сигнал с пульта принять можно, и на экран что нибудь выкинуть(а если в это время происходит экстренное торможение по линолеуму =) нужно от энкодеров на колёсах сигнал посчитать и АБС сэмулировать! - иначе занос! да да ). А для ардуинок с их PulseIn() это ж вообще потеря потерь.
HawkDoom, все верно...
Заказал новые - зависал, когда хотел. Кварц на борту. Плесень:)
Не очень долго искал проблему от зависаний. Спасибо за ваш форум. Бонусом мой скейтч рабочий в Arduino 1.0.5 (реализовал сброс на ноге триг, если приходит ноль), подходит для новых дальномеров:
Заказал у этого продавца -- http://ru.aliexpress.com/store/808897
Работает как положено.
прошу прощения я начинающий , а немогли бы вы произвести изменения в програмее чтобы светодиод при определённом расстоянии загорался LED 13 например меньше 50 см
Легко - берем последний код и добавляем 2 строчки:
не компилируется что то АААААА!!!!! всё заработало!!! спасибо ДОРОГОЙ !!!!!
а то я уже второй день бъюсь как рыба об асфальт!!!!
а не подскажете почему сенсор обманывает т е срабатывает не при 50 см а при 38 см?
Значит перевод единиц работает неправильно. Проверьте коэффициент.
Кто то решил проблему с зависанием датчика?
Я при зависании отключаю еге на 5мс, но мне это не нравится.
Есть ли решение оживить датчик?
Кто то решил проблему с зависанием датчика?
Я при зависании отключаю еге на 5мс, но мне это не нравится.
Есть ли решение оживить датчик?
Значит перевод единиц работает неправильно. Проверьте коэффициент.
werter, тут обсуждаютя аппаратные проблемы с данным датчиком, а не примеры импользования. То, что с вашим всё хорошо, это радует, но к сожалению не всем так повезло.
Okmor, к сожалению проблема в программе микроконтроллера, контроллер одноразовый, вытащить из него бинарник нет возможности, да и смысла особо нет, так-как и таких контролеров в продаже нет толком. Единственное решение програмное, и оно приведено выше в данной ветке. А самый лучший способ, это открыть спор с продавцом, вернуть свои деньги и купить нормальный сенсор, ссылки тоже тут оставляли на проверенных продавцов.
Я так понял, что прблема в программе модуля. Ее изменить не удастся. Пока на руках нет модуля с нормальной прошивкой, пришлось пожертвовать одним выходом и Mosfet транзистором. При задержке сигнала менее 100Мкс, перегружаю модуль по питанию.
От стандартной библиотеки отказался в виду задержек в программе. Отклик с датчика повесил на пин прерывания и задержку считаю сам.
Схема:
Я заказывал эти датчики под свой проект у разных продавцов и от себя могу сказать, что датчики эти- полное фуфло. Они неплохо работают на определения наличия чего либо крупного, но вот там, где нужны хоть какие то измерения, они бесполезны.
У некоторых часто проскакивает максимальное или минимальное значение. Я сначала не мог понять, почему мой мотор в ненужный момент останавливается, но когда я сделал тестер с экраном все стало ясно
Не стыдно такое писать? Вы, хотя бы с теорией ознакомьтесь, по принципу работы УЗ сенсоров.
Вытекает оттуда-же, пишите правильный код.
Я заказывал эти датчики под свой проект у разных продавцов и от себя могу сказать, что датчики эти- полное фуфло. Они неплохо работают на определения наличия чего либо крупного, но вот там, где нужны хоть какие то измерения, они бесполезны.
У некоторых часто проскакивает максимальное или минимальное значение. Я сначала не мог понять, почему мой мотор в ненужный момент останавливается, но когда я сделал тестер с экраном все стало ясно
Я пробовал стандартную библиотеку и отказался от нее. Расчет задержки сигнала за счет полной остановки программы не есть коректно. Итого перешол на использование прерывания. Возможно ваши глючи изза этого.
Китайцу претензию выставил из принципа, со ссылкой на ютуб(выше было ссылко) и на эту ветку - принял сразу.45 рублей не жалко, Был бы рабочий я и за 100 бы взял, экономисты хреновы.
Не подскажите, какой текст лучше написать китайцу, тоже 3шт не работают.
Можно тоже поподробнее, полный новичок, можно ли ардуинкой обойтись ( управлять с ик пульта двигателем (вперед-назад и скорость) + этот датчик
можно ли ардуинкой обойтись
Можно конечно. Изучать - изучать - и больше практики. Потом на СИ переходить по желанию.
Претензию так делал -- открыть спор, в текст забил только ссылку , потом мышкой далее, далее и т.д.
Можно тоже поподробнее, полный новичок, можно ли ардуинкой обойтись ( управлять с ик пульта двигателем (вперед-назад и скорость) + этот датчик
#include "arhat.h" вам в помощь. Есть работа с этим датчиком на прерываниях и в автоматном стиле управления (без delay). Код комментирован весь, так что разобраться проблем не должно быть. Тут где-то есть тема со ссылками на гихаб.
Претензию так делал -- открыть спор, в текст забил только ссылку , потом мышкой далее, далее и т.д.
Полную сумму требовали возвратить, или половину?
У меня вообще датчик мой не показывает, пока палец не приложишь и держишь сзади. Программные способы из этой темы вообще не помогают ( пробовал и библиотеку 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 (непонятно, в чем разница, кроме цвета текстолита) - надеюсь, хватит мощности.
Сплошные вопросы((
Попробуйте залить мой скейтч, приведенный Выше. Я про датчики....
Вы один заказали?
Проверьте подключение (ECHO - D9, TRIG - D8, Vcc - +5v, Gnd - замля)
Внимательно осмотрите плату датчика на непропаи.
Завтра свои достану, подумаю может че...
А вообще - я не доволен их работой. Ожидал лучшего... Но что поделать - такая уж технология измерения расстояния...
Три шт. Подключал к ногам d12 и d13 на нано и к d4 d7 на про микро -разве это принципиально? В коде поменял пины на соотвт.
Если в коде пины меняли - то не припципиально. Но я бы попробовал код пока не трогать и подключить как я написал выше. Странно, что все три не работают. Вечером гляну. Напряжение пять вольт или 3.3?
Периодически работает, например, если держать палец слева внизу, или держать макетку на руках ( но и это не всегда помогает). Напряжение мультиметр показывает 4.6В приходит на датчик (питание нано от юсб компа)
Попробуйте подать качественное питание. Вполне может быть не хватает для излучателя.
Подключил внешний линейный блок питания к датчику, показывает постоянно либо ноль, либо какое-то значение, причем прикладыване пальца уже вовсе не помогает.
Сведи длину проводов к минимуму. Между атмегушкой и датчиком.
У меня не мега, а 328 и 32u4. На фото вроде видно, что проводки короткие, см 12...
Необходимо установить датчик на расстоянии 5 метров от контроллера. Что можно придумать для устойчивой и безопастной работы ?
Вообщем, все три датчика заработали, причем как на приведенном скетче, так и с библиотекой newping. На обоих имеющихся ардуинах. Все дело было в макетке, когда подключил проводки с питанием прямо к ногам датчика, стало показывать (от 328 приходит 4.7В, от 32u4 4.62В, от внешнего линейного источника питания не работает вовсе, несмотря на честные 5В), питать отдельно ардуино пока не пробовал.
PS: с 32u4 работает только при заливке скетча, потом, если передернуть usb перестает((
Практически во всех Ардуинах стоят Атмеги, вы же сами написали. Arduino Nano v3 - Atmega328P.
С пятью метрами не понял прикола...
Прикола никакого нет :)
Есть "емкость" находящаяся в 5 метрах от ардуины, вот и вопрос с помощью чего (как) подключить датчик, чтобы померять уровень метариала (корма) в "емкости" ?
Передовать сигнал заранее преобразованный по цифре. Больше никак.