Вопрос про НЕ подключенный analorRead

Чечако
Offline
Зарегистрирован: 15.06.2018

Приветствую!

Суть в следующем - использую следующую конструкцию для чтения данных с аналогового датчика 0-5 вольт

 int an0 = analogRead(A0);

Когда датчик подключен - вопросов нет, все работает. Но если он физически отключен, т.е. вход висит в воздухе - функция считывает случайные значения.

Это можно как-то программно исправить? 

b707
Offline
Зарегистрирован: 26.05.2017

да, можно программно, можно аппаратно. Гуглить INPUT_PULLOUT

Чечако
Offline
Зарегистрирован: 15.06.2018

b707 пишет:

да, можно программно, можно аппаратно. Гуглить INPUT_PULLOUT

 

Я про нее читал, да. Но вот эти строки в доке крайне смущают:

Подключение резистора повлияет на величину сообщаемую функцией analogRead() при использовании некоторых датчиков. Большинство пользователей использует подтягивающий резистор при применении вывода аналогового входа в его цифровом режиме.

Как именно оно повлияет?  Работаю с датчиками давления резистивного типа, на входе у них 5 вольт, на выходе от 0.5 до 4.5 в зависимости от показаний.

b707
Offline
Зарегистрирован: 26.05.2017

Чечако пишет:

Я про нее читал, да. Но вот эти строки в доке крайне смущают:

Подключение резистора повлияет на величину сообщаемую функцией analogRead() ....

Как именно оно повлияет? 

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Чечако пишет:

Но если он физически отключен, т.е. вход висит в воздухе - функция считывает случайные значения.

Это можно как-то программно исправить? 

Исправить можно только то, что неисправно. А то, что Вы описали - нормальное поведение. Так и должно быть.

Чечако
Offline
Зарегистрирован: 15.06.2018

andriano пишет:

Исправить можно только то, что неисправно. А то, что Вы описали - нормальное поведение. Так и должно быть.

Да, я уже понял. :( Черт с ней, плясок с бубном с коррекцией сопротивления не хочется. Самой ардуине такое не вредно?

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

1. Поставьте мегаом привязки если внутренний 20-40 ком сильно влияет.
2. Поставьте операционник повторителем.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Чечако пишет:

Самой ардуине такое не вредно?

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

ВН
Offline
Зарегистрирован: 25.02.2016

А вот просто взять подключить подтягивающий резистор, а потом отключить и сравнить показания видно не судьба 

Datak
Offline
Зарегистрирован: 09.10.2014

Подключить PULLUP резистор, чтобы определить наличие или отсутствие датчика.

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

-------

И ешё, если сигнал изменяется медленно, не повредит входной фильтр - хотя бы просто небольшой конденсатор. Тогда, даже при отсутствии датчика и подтяжки, значения не будут "прыгать". Хотя, конечно, вполне могут "плавать".

Чечако
Offline
Зарегистрирован: 15.06.2018

Datak пишет:

если сигнал изменяется медленно, не повредит входной фильтр - хотя бы просто небольшой конденсатор. Тогда, даже при отсутствии датчика и подтяжки, значения не будут "прыгать". Хотя, конечно, вполне могут "плавать".

Идея о подключении и отключении интересная, спасибо. Попробую. По конденсатору - а что в Вашем понимании "медленно"? Я их опрашиваю от 10 до 30 раз в секунду, зависит от задачи.

Пока фильтрую показания программным фильтром.

P.S. Конденсатор ставится между сигнальным проводом на вход ардуино и землей, правильно понимаю?

Чечако
Offline
Зарегистрирован: 15.06.2018

ВН пишет:

А вот просто взять подключить подтягивающий резистор, а потом отключить и сравнить показания видно не судьба 

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

P.S. В теории - да, сопротивление подтягивающего резистора - величина постоянная. А вот как оно на практике будет влиять - тут только пробовать. :)

SLKH
Offline
Зарегистрирован: 17.08.2015

Чечако пишет:

ВН пишет:

А вот просто взять подключить подтягивающий резистор, а потом отключить и сравнить показания видно не судьба 

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

P.S. В теории - да, сопротивление подтягивающего резистора - величина постоянная. А вот как оно на практике будет влиять - тут только пробовать. :)

она даже в теории ненормированная.

Datak
Offline
Зарегистрирован: 09.10.2014

Чечако пишет:

... По конденсатору - а что в Вашем понимании "медленно"? Я их опрашиваю от 10 до 30 раз в секунду, зависит от задачи.

Для каждого случая по-своему - зависит от того, что этот датчик измеряет. И ещё от того, кем или чем результаты измерения считываются/обрабатываются.

Чечако пишет:

P.S. Конденсатор ставится между сигнальным проводом на вход ардуино и землей, правильно понимаю?

Да, всё так. Строго говоря, ещё и входной сигнал нужно подавать через резистор (см. RC-фильтр). Но реально всё зависит от параметров датчика, и от требований к устройству в целом. Так что, всё как и по первому вопросу - надо пробовать. ))

ВН
Offline
Зарегистрирован: 25.02.2016

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

P.S. В теории - да, сопротивление подтягивающего резистора - величина постоянная. А вот как оно на практике будет влиять - тут только пробовать. :)

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

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