Вопрос про НЕ подключенный analorRead
- Войдите на сайт для отправки комментариев
Втр, 03/07/2018 - 19:53
Приветствую!
Суть в следующем - использую следующую конструкцию для чтения данных с аналогового датчика 0-5 вольт
int an0 = analogRead(A0);
Когда датчик подключен - вопросов нет, все работает. Но если он физически отключен, т.е. вход висит в воздухе - функция считывает случайные значения.
Это можно как-то программно исправить?
да, можно программно, можно аппаратно. Гуглить INPUT_PULLOUT
да, можно программно, можно аппаратно. Гуглить INPUT_PULLOUT
Я про нее читал, да. Но вот эти строки в доке крайне смущают:
Подключение резистора повлияет на величину сообщаемую функцией analogRead() при использовании некоторых датчиков. Большинство пользователей использует подтягивающий резистор при применении вывода аналогового входа в его цифровом режиме.
Как именно оно повлияет? Работаю с датчиками давления резистивного типа, на входе у них 5 вольт, на выходе от 0.5 до 4.5 в зависимости от показаний.
Я про нее читал, да. Но вот эти строки в доке крайне смущают:
Подключение резистора повлияет на величину сообщаемую функцией analogRead() ....
Как именно оно повлияет?
Конечно повлияет. Насколько - зависит от соотношения сопротивлений подтяжки и датчика. Но тут уж надо выбирать - если вам необходимо распознавать ситуацию, что датчик не подключен - миритесь с резистором, вводите поправки к показаниям датчиков. А если вы уверены, что датчик будет подключен всегда - можно и без подтяжки.
Но если он физически отключен, т.е. вход висит в воздухе - функция считывает случайные значения.
Это можно как-то программно исправить?
Исправить можно только то, что неисправно. А то, что Вы описали - нормальное поведение. Так и должно быть.
Исправить можно только то, что неисправно. А то, что Вы описали - нормальное поведение. Так и должно быть.
Да, я уже понял. :( Черт с ней, плясок с бубном с коррекцией сопротивления не хочется. Самой ардуине такое не вредно?
1. Поставьте мегаом привязки если внутренний 20-40 ком сильно влияет.
2. Поставьте операционник повторителем.
Самой ардуине такое не вредно?
Если не подключен - не вредно. А если подключен длинный провод, то и с датчиком на конце могут быть неприятности.
А вот просто взять подключить подтягивающий резистор, а потом отключить и сравнить показания видно не судьба
Подключить PULLUP резистор, чтобы определить наличие или отсутствие датчика.
При наличии датчика - читать значения, временно отключая PULLUP, чтобы исключить влияние на результат.
-------
И ешё, если сигнал изменяется медленно, не повредит входной фильтр - хотя бы просто небольшой конденсатор. Тогда, даже при отсутствии датчика и подтяжки, значения не будут "прыгать". Хотя, конечно, вполне могут "плавать".
если сигнал изменяется медленно, не повредит входной фильтр - хотя бы просто небольшой конденсатор. Тогда, даже при отсутствии датчика и подтяжки, значения не будут "прыгать". Хотя, конечно, вполне могут "плавать".
Идея о подключении и отключении интересная, спасибо. Попробую. По конденсатору - а что в Вашем понимании "медленно"? Я их опрашиваю от 10 до 30 раз в секунду, зависит от задачи.
Пока фильтрую показания программным фильтром.
P.S. Конденсатор ставится между сигнальным проводом на вход ардуино и землей, правильно понимаю?
А вот просто взять подключить подтягивающий резистор, а потом отключить и сравнить показания видно не судьба
Тут надо будет во всем рабочем диапазоне сравнивать, дабы сюрпризов не было. На столе без какого-то спец оборудования это несколько затруднительно, в боевых условиях чуть проще, но тоже не щелчком пальцев. Но тоже вариант, да.
P.S. В теории - да, сопротивление подтягивающего резистора - величина постоянная. А вот как оно на практике будет влиять - тут только пробовать. :)
А вот просто взять подключить подтягивающий резистор, а потом отключить и сравнить показания видно не судьба
Тут надо будет во всем рабочем диапазоне сравнивать, дабы сюрпризов не было. На столе без какого-то спец оборудования это несколько затруднительно, в боевых условиях чуть проще, но тоже не щелчком пальцев. Но тоже вариант, да.
P.S. В теории - да, сопротивление подтягивающего резистора - величина постоянная. А вот как оно на практике будет влиять - тут только пробовать. :)
... По конденсатору - а что в Вашем понимании "медленно"? Я их опрашиваю от 10 до 30 раз в секунду, зависит от задачи.
Для каждого случая по-своему - зависит от того, что этот датчик измеряет. И ещё от того, кем или чем результаты измерения считываются/обрабатываются.
P.S. Конденсатор ставится между сигнальным проводом на вход ардуино и землей, правильно понимаю?
Да, всё так. Строго говоря, ещё и входной сигнал нужно подавать через резистор (см. RC-фильтр). Но реально всё зависит от параметров датчика, и от требований к устройству в целом. Так что, всё как и по первому вопросу - надо пробовать. ))
P.S. В теории - да, сопротивление подтягивающего резистора - величина постоянная. А вот как оно на практике будет влиять - тут только пробовать. :)
давайте начнем с того, что заявлено, - датчик резистивный, но вход ацп потенциальный, т.е. чтобы о чем-то с толком глаголить нужна реальная схема включения.
подключить подтяжку и измерить или без нее, это ну хоть как-то позволяет оценить выходное сопротивлене той хрени о которой ничего так еще и не рассказано.