Ардуино аналоговый вход плавает

Arduino.ru

Плавающие пины

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

Доброго времени суток. У меня следующая проблема: есть Uno, к ней подключен пьезо-датчик для распознавания стука. Датчик подключен через аналоговый пин и заземлен через 1мОм резистор. При подключении через USB порт, либо с помощью батареек (4.5В, 9В) через Vin, все работает прекрасно. Но как только я пытаюсь подключить на Vin блок питания 12V 1.25А, то получаю плавающий аналоговый пин(к которому подключен датчик) на котором постоянные помехи. При дополнительном заземлении через 2кОм резистор прямо с аналогового пина на GND получалось убрать помехи, но работает нестабильно. Пробовал уменьшать напряжение до 6 вольт, но не помогло. Подскажите с чем может быть связано такое поведение, у самого опыта в электронике мало. Спасибо.

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

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

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

Заменить блок питания (загляни внутрь и ужаснись — там никаких фильтров нет, поэтому он жутко фонит).
Резистор на GND надо 10-30 кОм.
Забудь про слово «заземление», тут не силовая электроника и тебя не поймут.

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

Внесу свою лжку дегтя, на ардуино подключение питания аналоговой части сделано отвратительно. Обосную, откройте любой даташит и посмотрите как запитывются эти цепи. Atmel жестко рекомендует ставить LC фильтр по этои цепи питания, чего нет на ардуино и в помине. Вот и получается что при подаче «идеального» питания(USB, батарейка) все вроде как нормально, а при питании с помехами последнии вносят сбой в работу ADC. Так что без дороботки использовать ардуино как «точный» измерительный прибор невозможно. Так же рекомендую использовать функцию плавающего среднего, что стабилизирует измеряемое значение и повысит тосность.

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

Заменить на какой? Возмжно ли поставить фильтр отдельно между БП и ардуиной?

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

alex.d.morozov, по Вашему описанию схему составить не смог.

Если измепрять предполагается постоянные (а не быстро меняющиеся) величины, хорошим решением будет зашунтировать вход АЦП конденсатором.

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

Так что без дороботки использовать ардуино как «точный» измерительный прибор невозможно.

Так а какая доработка нужна, подскажите

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

Считать пин несколько раз и усреднить значение в коде?

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

alex.d.morozov, по Вашему описанию схему составить не смог.

Если измепрять предполагается постоянные (а не быстро меняющиеся) величины, хорошим решением будет зашунтировать вход АЦП конденсатором.

Несколько стуков подряд подпадает под быстроменяющиеся изменения?)

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

alex.d.morozov, конденсатор имеет смысл ставить тогда, когда максимум спектра полезного сигнала существенно ниже максимума спектра помех. Если сигнал постоянный, это условие выполняется всегда. Если сигнал переменный (как у Вас), нужно иметь представление, где находится максимум спектральной мощности. Как полезного сигнала, так и помсех. Если у Вас основная помеха от импульсного блока питаня, можно попытаться с ней побороться, если эе основная наводка — сетевая (50 Гц), боюсь, что ее подавить таким образо не удастся.

Но в любом случе Вам дали полезный совет: раз проблемы возникают при подключении другого блока питания, значит, проблемы связаны именно с этим блоком питания и его нужно заменить. Иногда помогает зашунтировать выход БП двумя конденсаторами: электролитическим большой емкости (от 100 мкФ и выше) и керамическим (скажем, 0.1 мкФ). Конденсаторы следует располагать вблизи Ардуино.

Источник

Arduino.ru

почему плавает напряжение на аналоговом порту.

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

Помогите разобраться в чем проблема пож.

собрал 4 балансира для свинцовых батарей.

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

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

Поправил коэффициент пересчета. Через неделю опять поплыли показания.

в плечах резисторы 4,7 и 10 кОм. конденсаторы 47 мФд 65 вольт.

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

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

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

Потому что АЦП измеряет сравнивая с опорным напряжением.
А у вас что им является?

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

я думал сравнивает с внутренним источником опорного напряжения.

1 что сделаю наверно заменю резисторы и конденсаторы, может керамические или пленочные поставлю маленькой емкости.

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

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

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

Я искал по поиску, похожих тем нет

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

я думал сравнивает с внутренним источником опорного напряжения.

Вы ошиблись. По умолчанию сравнивает с напряжением питания. Чтобы сравнивал с внутренним ИОН, это нужно явно прописать в коде, у Вас это не прописано.

Но с внутренним ИОН свои грабли. Во-первых он всего 1.1В, а во-вторых точность 10%. Правда воторое решаемо — можно замерить реальное напряжение у конкретного чипа и использовать, оно почти не плавает.

Ну, или (если не хочется до 1.1 опускаться) можно при каждом измерении, сначала измерять свое питание (через внутренний ИОН), а потом измерять напряжение от питания.

Источник

Arduino.ru

Почему аналоговый вход выдает напряжение (1V) ?

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

Для считывания напряжения с индуктивного датчика приближения (SN04-N) решил использовать аналоговый вход А0. Если вкратце то датчик выдает 1 V в нейтральном положении и 0 V при приближении метала. При собранной схеме на коленке все работало замечательно, но когда начал тестировать такой-же подход на работающем стенде — обнаружил конфликт: сам порт А0 выдает напряжение в районе 1V и ломает всю работу стенда. 1) почему аналоговый вход выдает напряжение? 2) как этого избежать?/возможно нужен другой подход.

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

без кода и схемы говорить не о чем

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

Вам помог мой ответ?

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

Вангую, что вместо analogRead используется digitalRead ))

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

Для считывания напряжения с индуктивного датчика приближения (SN04-N) решил использовать аналоговый вход А0. Если вкратце то датчик выдает 1 V в нейтральном положении и 0 V при приближении метала

Нет, не выдает. Он выдает напряжение своего питания, которое не меньше 6 вольт.

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

уже между А0 и гнд есть 1 вольт

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

А0 — gnd .. что не так?

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

вопрос: а зачем мерять напряжение на A0? т е вы понимаете что это вход, этот вход меряет напряжение и analogRead вам выдает значение?

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

красный провод к земле. черный на сигнал? :)

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

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

А почему по вашему там не должно быть 1в ?

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

А0 — gnd .. что не так?

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

«Для того чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное. » ))

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

уже между А0 и гнд есть 1 вольт

Т.е. Вы измеряете сигнал на болтающемся в воздухе входе? И что Вы надеетесь там увидеть?

Попробуйте убрать мультиметр, а просто печатать значения из скетча и поднесите к ардуине работающий утюг (провод от него), увидите много интересного. Попробуйте также подносить (поближе к пину) и убирать руку — тоже забавно.

Это называется «антенна», погуглите что это такое.

Запомните, там может быть ВСЁ, ЧТО УГОДНО . Если ко входу ничего не подключено, то «analogRead(A0);» используется для получения случайного числа!

Источник

Arduino.ru

Скачут показания. Пин аналоговый. Пьезо. Разные компьютеры.

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

Эта проблема меня чуть не свела с ума.

На одном ПК все хорошо, на другом показания меняются синусоидно. от 0 до 80-120.

Подключение пьезо пищалки(датчик стука)как обычно. Пин А7, Gnd. Между ними 1МОм. arduino nano.

В скетче задаю A7,INPUT_PULLUP.

Смотрим данные с пина 7.

На 1 ПК: В терминале идут Нули. Красота. Стучим по пьезо, идут цифры и опять нуля. Хорошая работа.

На 2 ПК: Не подключаем пьезо, идут Нули. При подключении пьезы начинаются волны. Плохая работа.

Скетч из примера. Самый простой, вывод в терминал данных с аналога.

Подключение обычное. Перепроверял 150 раз. На разных (двух) компах разный результат.

Оставлю здесь для истории.

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

ban78, какой МК? На меге328 пин A7 не имеет PullUP. Подтягивайте резистором. Без подтяжки вход работает как антенна.

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

В скетче задаю A7,INPUT_PULLUP.

С какой целью? Оно так не работает.

Давайте сюда скетч и схему.

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

на норм ПК. Без пуллап, без подключенного пьезо идут стабильно рандомные цифры в диапозоне 55-65

пишу пуллап, идут норм 0.

Так же и на другом ПК. Без пуллап цифры 200-300. с пуллап 0.

Конечно я попробую А0.

да, 328. Попробую другую МК взять. Мини. Но мне кажется дело в ПК.

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

раньше даже не писал pinMode(A7, INPUT_PULLUP);

без него на норм ПК все работало.

Шли цифры 50-60 в терминал без пьезо. При подключении пьезо становилось 0. И реагировал на постукивания пьезо.

А на дурацком ПК. шли цифры, а при подключении пьезо цифры от 0 до 300 волнами.

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

У А7 нет цифрового буфера и нет пулапа

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

не знаю тогда к чему он там подтягивается.

но на входе стабильно 0. с пулапом. без него рандом цифры. Это факт. Глазками это вижу.

но пулап тут ни при чем. И без него не работает.

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

в моем случае это А7 и нано

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

ban78, разница в том, что с одного компьютера идёт наводка 50 Герц а с другого нет. Где не идёт -либо гальваноразвязан от сети, либо заземлен.

Кстати PullUp там не нужен. Была темка, про пьезодатчики, там в посте #60 есть правильная схема включения.

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

вот, мудрый человек. скорее всего наводка.

У меня и ПК странно работает. Не выключается(все работы закончит, экран погаснет, а куллер крутится). После принудительно отключения работает вся переферия USB.

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

Подскажите лекарство от этих волн в показаниях?

Напряжение в сети должно быть любым и с заземлением и без.

Возможно к схеме что-то добавить, чтобы волны эти не влияли на показания. 7.

После нескольких дней тестов дома:

1. Пробовал 2 блока питания подключать поочереди:

ОДин напрямую к миниUSB, Мега мини, вроде показания стабильно 0.

Другой блок питания к пину 5V, показания плавают волной.

2. Подключаю UNO к USB ПК, волны.

3. Подключаю от LiPo с преобразователем на 5 V и к пину 5V на ардуино, мега мини, все супер, стабильно 0.

3.1. Если включить от батарейки и. штекером USB (земля)(от миниUSB от меги) слегка дотронутся до USB на ПК(земля), все. волны.

3.2. Иногда при размыкании земли с ПК идет стабильно 0. НО иногда волны продолжаются. стабильно пока не выключишь батарейку.

И это все на простой схеме на простой UNO с пьезо + мегаОм резистором между (GND+А0).

И это все дома. На работе все работает зашибись в разных вариациях, ни разу не волны.(только если один кабель разомкну).

Источник

Adblock
detector