Arduino [индикатор влияет на показания дальномера]

markyzz

Субж.
Странная неведомая хрень. Вижу впервые.
схема: ардуинка + ультразвуковой дальномер + индикатор.
Индикатор - стандартная 64-х диодная платка (со своим контроллером внутри).
От УЗ-дальномера до стены 110 сантиметров.
следующий код(вкратце):

void loop(void)
{
int distance = дальномер_сколько_сантиметров_до_стены;
Serial.println(distance);
}

Дает 110 сантиметров, как и должно быть.
а такой код:

void loop(void)
{
int distance = дальномер_сколько_сантиметров_до_стены;
индикатор_зажги_столько_светодиодов_сколько_сантиметров(distance);
Serial.println(distance);
}

дает 43 сантиметра.
В чем может быть подвох? никто не сталкивался с чем-то подобным?

katrin2201

Напряжение от диодов не просядает?
Либы по пинам не пересекаются?

markyzz

Напряжение от диодов не просядает?
хз... я тож об этом задумался, но как проверить - хз.
То есть просто тестером на ардуинке между GND и VCC? или параллельно на сам дальномер?
Вообще это нормальная ситуция, что при меняющейся нагрузке дальномер начинает творить хуйню?
Просто - у него же смысл - послать несколько импульсов, принять их и вычислить время и потом расстояние. Как мощность может повлиять на его работу? в общем, я хз.... :(

markyzz

Напряжение от диодов не просядает?
не меняя скетча высунул из разъемов ардуинки индикатор, и дальномер стал показывать то, что нужно....
как с этим бороться? тестировать робота удобнее с индикацией на борту :confused:
и какие гарантии, что задействовав больше моторчиков, я не получу снова некорректно работающий дальномер?

katrin2201

А что за дальномер-то? Как подключен к ардуинке? На роботе как питание организовано? Светодиоды, дальномер, ардуинка - все от одной шины питаются?
Если там обычный аналоговый вход, то в идеале напряжение на инпут пине померять и выяснить, что в качестве AREF используется.
Еще хорошая идея в параллель светодиодам, как можно ближе, воткнуть кондер эдак на 100-500uF.
Моторчики могут от другой шины питаться.

margadon

для передачи данных на индикатор не требуется таймер? может быть там тот же таймер, что и в функции определения расстояния сонара? и он например что-то там внутри сбрасывает

markyzz

На роботе как питание организовано?
Конкретно сейчас все питание от самой ардуинки, которая питается от usb от компа. А вообще это важно на дальномер питание отдельно от самой ардуинки посылать?

markyzz

А что за дальномер-то?
Ну, вот такой - самый обычный

katrin2201

Важно, чтоб оно было стабильным. У тебя светодиоды могут помеху вносить (там PWM с большой вероятностью). В результате ответный pulseIn от датчика может получиться прерывистым.
Кондер был бы первым, что я бы попробовал в твоем случае.
Стоит понимать, что по стандарту usb емкость девайса питаемого от усб не может превышать 10uF. Нарушение этого требования не всегда приводит к видимым\плохим последствиям, но хорошей практикой является подключать все такие штуки к компу через отдельно питаемый усб хаб.

tokuchu

А если другое расстояние измерить, то как поменяются показания? Может светодиодная панель звук какой издаёт "фонящий"?

markyzz

У тебя светодиоды могут помеху вносить
я попробовал другую нагрузку дать (а именно - моторчик)
и снова начало неверные результаты давать. Правда, не так сильно, как от светодиодной панели, но на 1 метр расстояния -5..-10 см есть.

markyzz

А если другое расстояние измерить
все что ближе к датчику, чем 40 см - норм, правильно.
все что дальше - становится 43-44 см, даже если больше метра.

markyzz

Может светодиодная панель звук какой издаёт "фонящий"?
может быть... но, с другой, стороны, она расположена даже не на одной платформе с датчиком.
Склоняюсь к мнению, что дело в питании... хотя, странно, что в инете на это не наткнулся.
PS спасибо всем за мысли! буду экспериментировать дальше :)

0000

Присоединяюсь к вышесказанному:
1. Светодиодному индикатору свое питание подай с источника, а не с Arduino.
2. Добавь кондеры между линиями питания индикаторной платы, как напр. делают для MAX7219

nemec2707

А попробуй-ка поставить резистор на 1-10 кОм между GND и Echo, желательно поближе к контроллеру, т.е. не на дальномере, а на ардуине.

markyzz

Завтра-послезавтра попробую все и отпишусь :)
спасибо :)
Оставить комментарий
Имя или ник:
Комментарий: