Здравствуйте. Разъясните пожалуйста по поводу analogReference() Имеется аналоговый вход (например А0) на который генерируется сигнал от 0 до 5 V. Микроконтроллер Atmega328. Питание от USB. Если я задам функцию analogReference(INTERNAL), то значения должны расчитываться относительно 0-1.1V. Вопросы: 1) Можно ли подавать на пины больше 1.1V? (но меньше 5V при этом) 2) Если да, то все что больше 1.1V будет обозначаться как значение 1023? 3) В каком месте кода указывать функцию? Непосредственно перед функцией analogRead или можно в теле void setup()?
Понятно. При отсутствии сигнала аналоговый пин выдает значение 52 (от 0 до 1023). То есть значения принимают вид от 52 до 1023. Меньше 52 никак не удается получить. Это шумы самой платы? Возможно ли это устранить?
Что значит отсутствие сигнала? Вход просто висит в воздухе или подключен к цепи GND? При референсе 1,1 В, значение 52, будет равно 0,05 В. Как у вас сделаны входные цепи? Желательно входной сигнал отфильтровать низкочастотным фильтром (резистор + конденсатор на землю).
а также ( в мини, нано и , возможно, еще каких версиях) и к пинам ADС6 и ADС7, AD6 и AD7 чтобы увидеть весь диапазон, подключите выход потенциометра к аналоговому пину. Или , при измерении , подключите вольтметр к пину - увидите честный 0.
Зачем? Неточность 5 V как референс даст гораздо большую ошибку в 99.99% ситуаций. А когда питают от слабого бп или от usb - тут вообще о точности говорить не приходится, каждый включенный светодиод даст пару (а может и пять ) % погрешности, а мы тут фнч городить будем, да не мешает еще его рассчитать, а потом скорректировать показания, поскольку увх мк имеет емкость и последовательное сопротивление? Кроме того, неидеальность увх мк приводит к тому, что при некоторых условиях фнч даст дополнительную погрешность даже на постоянном токе. Напишите дифф. уравнение зарядки емкости увх с дополнительными емкостью и последовательным резистором, и получив решение вы увидите что НЕ ВСЕГДА.
У меня источник сигналов (сейсмодатчик) подключен к аналоговому входу и к земле, так же есть стабилитрон (5V). Помимо него так же есть LCD-экран, который так же подключен к той же земле и цифровым пинам.
Предлагаю не начинать дискуссию о том как нужно подключать АЦП, как рассчитывать входные фильтры и при чем здесь теорема Котельникова или Шенона. TeaMoor могу порекомендовать для повышения точности использовать дифференциальное подключение АЦП. Для этого использовать два входа АЦП. Один вход подключаете к цепи GND, либо к цепи относительно которой вы меряете ваш сигнал, а на второй вход АЦП подаете сигнал. Истинное значение сигнала будет разность между вторым и первым входами АЦП.
нет, не надо. У него не дифференциальный сигнал, а несимметричная схема земля- сигнал. А наличие напряжение на входе говорит лишь о неидеальности сенсора, либо о наличии каких-либо колебаний. Если подключить gnd сенсора к одному входу, а выход сенсора к другому входу - куда мы подключим землю сенсора? И всесто "истинного значения" мы получим разницу двух наводок. Сенсор ведь неидеален, и 52 - это шум сенсора либо уровень колебаний, которые сенсор честно преобразует в напряжение. Тестером можете проверить напряжение на выходе сенсора без подключенной ардуины? Если будет ноль, то надо будет разбираться в схеме, возможно где петля по земле или другие траблы.
Конечно, это абсолютная истина. Но при дифференциальном подключении должно быть три провода или 4- земля, возможно отдельно экран, и сигнал + и сигнал -. У тс только земля и сигнал. Если бы мы были уверены, что 52 - это наводки, то достаточно было бы просто пустить сигнал в экранированном проводе, в сложных случаях- в экранированном проводе плюс отдельно земля, в еще более сложных - земля, экран, и два провода в экране, в виде витой пары, с соединением экрана и земли в одной точке и с другими тонкими материями грамотного заземления. Но имхо у нас (у тс) не тот случай. В случае тс мы имеем 5 см провода и непонятной (по причине недостаточности информации) нам природы показания 52. С чего начать? Померять тестером напряжение на выходе сенсора с отключенной ардуиной.
Проверил средствами самой Arduino через монитор порта следующим кодом: Код (C++): void setup() { analogReference(INTERNAL); Serial.begin(9600); } void loop() { float voltage = analogRead(A0); Serial.println(voltage); } При отсоединенном от всех пинов, земли и 5V LCD-экране значения 0 всегда, когда на сейсмодатчик не воздействуешь. А в случае же когда LCD-экран подключен то значений 0 уже нету, и минимальное уже другие значения начиная от 50. При чем заметил, что когда шевелю соединительные провода от LCD-экрана на макетке, то минимальное значение меняется возрастая вплоть до 100. Ну то есть, если наклонил проводок вправо (пазы на макетке позволяют наклонять штырьки проводов до 1-2 мм во все стороны), то минимально значение скажем 50, наклонил этот же проводок влево, то минмиальное значение уже 80 например. И так со всеми проводами. Так что мне кажется тут как-то LCD-экран влияет на это.
Да, это однозначно наводка. Есть какие- либо данные по выходному сопротивлению сенсора? Неплохо согласовать его выходное сопротивление с входным сопротивлением ардуины, влепив резистор между gnd и входом A0, соответсвенно наводки снизятся. Но очень малым сопротивление быть не может - уменьшится чувствительность преобразования. Даташит на сенсор есть?
Даташита на него найти не смог. Есть только общая информация: Сопротивление катушки 395 Ом. И еще, выяснил что дает помехи - это подсветка LCD-экрана. Когда отключаю подсветку (отсоединяю проводок с пина 15 экрана отвечающий за подсветку), то сразу значения становятся "чистыми", равным 0.
вот она -то помехи и ловит. Попробуйте пару приемов, если не поможет будем дальше смотреть 0. отключите подсветку lcd 1 включите между контактами gnd и analog1 сопротивление 410 (или около того ) Ом. 2 дайте вибросигнал сенсору и посмотрите, какое значение с этим сопротивлением и какое без него. Cигнал должен отличаться в два раза. 3 включите подсветку lcd и посмотрите, сколько он навел. дальше, если наводки большие - 1 экранировать катушку и соединить экран с gnd. экраном может быть металлическая (лучше из магнитного материала,не нержавейка) кружка, баночка и пр. Подключить параллельно питанию подсветки Lcd конденсаторы электролит и керамику, соответсвенно 2000 ÷ 5000 uF, и керамику 0,1÷0.47 мкф. Не поможет - будем дальше думать. Но помочь должно. Еще - возьмите провод пару метров и отнесите катушку подальше от lcd и ардуины. Наводка уменьшилась?
о, смотрите, катушку можно зашунтировать резистором 1÷ 1,47 кОм, а не 410 Ом, как я писал выше. Попробуйте.