Многоканальный вольтметр

fss4
Offline
Зарегистрирован: 11.12.2013

Всем привет. Делаю многоканальный вольтметр на Arduino Mega 2560, прогу делаю в LabView. Необходимо измерять временные зависимости напряжений. Возник вопрос о том как организовать подключение к аналоговым входам так, чтобы напряжение на одном пине не влияло на напряжения на других. Потыкал разные варианты - все бесполезно. По факту:

1. на пин 0 (Ch1) я подал 5 В через резистор 530 кОм с Arduino (на картинке показометры выделил синим)

2. на пин 1 (Ch2) подал 3,3 В через резистор 530 кОм c Arduino (на картинке показометры выделил зеленым)

3. на пин 2 (Ch3) и 3 (Ch4) ничего не подавал, они "в воздухе" (на картинке показометры выделил желтым)

http://fss4.narod.ru/Arduino.gif

А в результате:

на pin0 вместо 5 В измеряется 4,68 В

на pin1 вместо 3,3 В измеряется 3,58 В

на pin3 и pin4 вместо 0 В 3,22 В и 3,15 В соответственно

При этом если я оставлю напряжение лишь на одном пине (остальные в воздухе), то напряжение на этом пине измеряется вполне корректно. На тех что в воздухе тоже что-то есть отличное от нуля.

Я с Arduino только столкнулся, скажите новичку почему напряжение на одном пине влияет на напряжение на других и как от этого избавиться?

http://fss4.narod.ru/Arduino_2.gif

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

это вы лифой(LIFA) балуетесь?

настройки портов проверьте

 

fss4
Offline
Зарегистрирован: 11.12.2013

Michal пишет:

это вы лифой(LIFA) балуетесь?

настройки портов проверьте

Да, я пользуюсь LIFA, к сожалению в библеотеке LIFA не нашел команд, позволяющих устанавливать режим Read для какого-либо пина. Однако, логично предположить, что инициализация команды Analog Read Pin (из библиотеки LIFA) автоматом настраивает порты в режим чтения, а я именно ей и пользуюсь.

Но решение проблемы было найдено, и я спешу поделиться им с вами. Все что необходимо было сделать - это поставить резисторы, стягивающие пины к земле. Вообще, я полагал, что эти резисторы автоматом должны были включиться в самой плате Arduino, но видимо я ошибался, поэтому пришлось припаять по одному на каждый аналоговый вход. Я взял R=106 кОм. На схеме Ui - это измеряемые величины.

Интересно так же наблюдать за тем как изменяется напряжение на пине, который находится в воздухе, когда происходит стягивание соседнего пина. На рисунке 4 графика напряжения на разных пинах в зависимости от времени. Первый график для pin0, второй для pin1 и т.д. Я последовательно землил пины начиная с pin0 заканчивая pin4. Изначально все пины были в воздухе и на всех было одинаковое фантомное напряженое чуть выше 1,5 В. На первом графике стрелкой показан момент, когда я соединил pin0 с землей через резистор 100 кОм, в этот момент фантомное напряжение на пине конечно пропало. Как видно, в момент заземления нулевого пина происходят изменения напряжения на всех остальных. При этом наиболее значительные изменения проявляются на ближайшем пине pin1, а самые слабые на наиболее удаленном пине pin3.

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

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Цитата:
Вообще, я полагал, что эти резисторы автоматом должны были включиться в самой плате Arduino

Они по умолчанию отключены, но можно их программно активировать в void setup().

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

не получится так, он LIFA использует, программу исполняет ПК, а ардуина как плата расширения В/В.

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

fss4
Offline
Зарегистрирован: 11.12.2013

Michal пишет:

не получится так, он LIFA использует, программу исполняет ПК, а ардуина как плата расширения В/В.

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

Ага. Я в LIFA долго не разбирался, но последовательный просмотр всех компонентов LIFA мне не помог найти специальные способы включения режима Read для аналоговых входов. Там есть лишь инструменты для выставления режимов ШИМ.

Вообще это очень странная ситуация. В лифа есть специальный инструмент Analog Read Pin, который предназначен как раз для считывания напряжения на аналоговой ножке. Почему-то инициализация этого инструмента не приводит к включению стягивающих резисторов, хотя логично, что именно так нужно было поступить разработчикам LIFA. Ну да не мне об судить, впрочем. Скорее всего это я чего-то недосмотрел, как оно бывает в 99% случаев :)

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

а мож прошивку для ардуины надо поновей, там вроде менялась она(покрайней мере в инете видел разные цифры на номера прошивок). Хотя на форуме Labview один из разработчиков на вопрос "чо под новые платы не делаете пошивки(Arduino Due)" ответил что то типа: проетк бесплатный, пипл хавает :)