Высокочувствительный датчик воды на MCP3008
Используйте Phantom YoYo High Sensitivity Датчик воды на 8-канальном 10-разрядном АЦП MCP3008 с интерфейсом SPI.
Введение
Фон
В следующем проекте я использую MCP3008 для мониторинга нескольких датчиков. В этом проекте я хочу подробно рассказать об использовании высокочувствительного датчика воды Phantom YoYo на 8-канальном 10-разрядном АЦП MCP3008 с интерфейсом SPI с Raspberry Pi 2, Windows 10 IoT Core и C #.
Использование MCP3008
АЦП - это аналого-цифровой преобразователь. Аналоговый сигнал преобразуется в число и считывается в вашем приложении. MCP3008 - это 10-битный АЦП, что означает, что он использует 10 бит для представления значения на канале. Значение будет представлено в виде числа от 0 до 1023 (всего 1024 возможных значения). Затем это число преобразуется в значимое значение. Например, предположим, что я хочу измерить напряжение на одном из каналов, и значение, считываемое с канала, равно 523. Я знаю, что максимальное напряжение составляет 3,3 В. Напряжение на канале рассчитывается по формуле
Значение / максимальное значение * Vref
решение для моего напряжения, которое я получаю
523/1023 * 3,3
, что дает значение 1,687 В . . Я рассчитал это значение, сначала нормализовав показания, а затем умножив нормализованное значение показаний на известное максимальное значение 3,3 В.
Когда важно получить точное измерение напряжения, я настоятельно рекомендую измерить фактическое напряжение Raspberry Pi и использовать это значение в своих расчетах, чтобы получить более точное преобразование с АЦП. Когда я измерил свой, я обнаружил, что выходное напряжение составляет 3,301 В (значение, указанное в исходном коде). Однако не так далеко от реальности другие типы плат могут отличаться больше.
Конечно, это имеет смысл, когда я хочу рассчитать напряжение, но каждый датчик имеет разное значение. Для каждого датчика, подключенного к каналу на MCP3008, мне нужно знать конкретные детали и соответствующим образом интерпретировать показания.
Подключить MCP3008 несложно. Сам чип отмечен выемкой на одном конце, которая представляет контакты 1 и 16 (см. Технические данные здесь).
Контакты с 1 по 8 - это восемь входных контактов, которые называются каналами с 0 по 7. Канал 0 - это контакт 1. Контакт 16 - это Vdd и подключается к источнику напряжения (3,3 В или 5 В на Raspberry Pi). Контакт 9 подключается к контакту заземления на Raspberry Pi. Контакты 15 и 14 используются для ссылки на аналоговую схему. Контакт 15 имеет обозначение Vref и используется MCP3008 для определения максимального напряжения на одном из каналов. В моем примере я подключил этот вывод к источнику 3,3 В на Raspberry Pi. Когда напряжение подается на один из каналов, MCP регулирует показания так, что 1023 соответствует 3,3 В, а 0 соответствует 0 В. Это позволяет использовать расчет, который я использовал выше. Контакт 14 - аналоговый контакт заземления. В моем примере я подключил его к контакту заземления на Raspberry Pi. Если необходимо изолировать аналоговую цепь от цифровой, этот вывод должен быть подключен к земле аналоговой цепи. Остальные четыре контакта с 10 по 13 - это контакты последовательного интерфейса SPI, используемые для связи с Raspberry Pi. На схеме подключения, которую я включил в этот проект, показано, как подключить эти контакты к Raspberry Pi.
В этот проект я включил простое измерение напряжения, чтобы продемонстрировать эту концепцию. Показания датчика воды продемонстрируют альтернативную интерпретацию значения, считанного с канала.
Обзор проекта
Датчик
В этом проекте я соединил две схемы в одну. Первый - это простой потенциометр, который позволяет изменять напряжение на одном из выводов MCP3008 (канал 0). Это просто демонстрация того, как работает MCP3008. Второй контур - это датчик воды, подключенный ко второму каналу (канал 1) на MCP3008.
Датчик воды Phantom YoYo имеет три контакта. Первый контакт - это земля (обозначен на устройстве «-»), который будет подключен к контакту заземления на Raspberry Pi. Следующий вывод - это питание (обозначено на устройстве «+»), и он будет подключен к выводу 3,3 В на Raspberry Pi (устройство также может быть подключено к 5 В). Третий и последний вывод - это сигнал (на устройстве помечен буквой s. Этот вывод имеет сигнал напряжения, который будет изменяться в зависимости от количества воды на устройстве. Обратите внимание, что это устройство НЕ является датчиком уровня воды. Оно просто определяет изменение количество воды, которое контактирует с устройством. Вывод источника будет подключен к одному из входов MCP3008.
Схема
Схема поддержки датчика очень проста. Устройство подключается напрямую к плате Raspberry Pi без необходимости использования каких-либо дополнительных компонентов.
Программное обеспечение проекта
Приложение
Приложение, которое я создал для этого проекта, является универсальным приложением для Windows . и показывает два метра на главном экране. Первый измеритель показывает текущее напряжение, измеряемое в цепи потенциометра. Второй показывает показания датчика воды, нормализованные до значения от 0 до 100. Программное обеспечение также позволяет калибровать датчик воды. Ссылку на исходный код можно найти внизу страницы.
Библиотека MCP3008
Программный проект также содержит отдельный проект для взаимодействия с MCP3008. Этот код можно использовать в вашем приложении для простой интеграции микросхемы MCP3008 в ваши проекты.
Чтобы использовать его, сначала объявите объект класса следующим образом:
частный Mcp3008 _mcp3008 =null;
В OnNavigatedTo событие добавьте следующий код:
_ mcp3008 =new Mcp3008 (0);
await_mcp3008.Initialize ();
Чтобы считать напряжение с канала 0, используйте следующую строку кода:
float Voltage =_mcp3008.Read (Mcp3008.Channels.Single0) .AsScaledValue (3.3f);
Обратите внимание на использование Channel.Single0, который указывает, что значение считывается из одного канала. Можно указать, что устройство считывает разницу между двумя контактами. Это может быть указано как Mcp3008.Channels.Differential0, что указывает на то, что измерение должно проводиться как разное между каналом 0 и каналом 1, где канал 0 положительный, а канал 1 отрицательный. Исходный код является документированным и содержит всплывающие подсказки, объясняющие каждое значение.
Когда вы закончите использовать объект, обычно в своем OnNavigatedFrom событие удаления объекта.
_ mcp3008.Dispose ();
_ mcp3008 =null;
Начало работы
Соберите схему
Используйте это руководство для сборки схемы, используя схему, расположенную в нижней части страницы, в качестве руководства (обратите внимание, что цвета проводов не являются обязательными и были выбраны, чтобы упростить отслеживание схемы. когда он будет построен).
Примечание. В этом проекте используется дополнительный мультиметр для измерения напряжения на потенциометре. Это делается для сравнения значения со значением, считываемым MCP3008. Обратите внимание, это необязательно. Если у вас нет мультиметра, вы не сможете сравнить это напряжение. Это сделано для того, чтобы показать, что значение, считываемое MCP3008, совпадает со значением, считываемым мультиметром. Настройте мультиметр для измерения постоянного напряжения, как показано на изображении ниже (ваш мультиметр может выглядеть иначе).
Мультиметр Fluke 87
- Поместите Т-образного сапожника на левый конец барда (где цифры начинаются с 1). Два крайних левых контакта будут в E3 . и F3 на борту. Два крайних правых контакта будут на E22 . и F22
- Поместите потенциометр 50 кОм в позиции J56, J58 и J60 так, чтобы ручка регулировки была обращена к стороне 5 В на макетной плате.
- Поместите резистор 10 кОм между I58 и I53
- Поместите MCP3008 в E31 . на E38 и F31 на F38 (угол микросхемы с заштрихованным кружком будет помещен в E31 )
- Необязательно: Поместите один конец черной перемычки между мужчинами и женщинами в положение G60 . (если вы используете мультиметр, подключите к этому проводу черный провод)
- Необязательно: Поместите один конец красной перемычки между мужчинами и женщинами в положение G58 . (если вы используете мультиметр, подключите красный провод к этому проводу)
- Подключите синий штекер к штекеру перемычки между F60 . и Земля
- Подключите оранжевый штекер к штекеру перемычки между F58 . и C31 (канал 1 MCP3008)
- Подключите оранжевый штекер к штекеру перемычки между F53 . и 3,3 В +
- Подключите красный штекер к штекеру перемычки между J31 . и 3,3 В
- Подключите красный штекер к штекеру перемычки между J32 . и 3,3 В
- Подключите черный штекер к штекеру перемычки между J33 . и Земля
- Подключите зеленый штекер к штекеру перемычки между J34 . и A14
- Подключите желтый штекер к штекеру перемычки между J35 . и A13
- Подключите белый штекер к штекеру перемычки между J36 . и A12
- Подключите зеленый штекер к штекеру перемычки между J37 . и J14
- Подключите черный штекер к штекеру перемычки между J38 . и Земля
- Подключите женский конец синей женщины к мужской перемычке к S штифт на датчике воды. Подключите штекерный конец к C32 . (канал 1 на MCP3008)
- Подсоедините женский конец красной розетки к мужской перемычке к контакту на датчике воды. Подключите вилку к 3,3 В .
- Подключите женский конец черной розетки к мужской перемычке к - штифт на датчике воды. Подключите штекерный конец к заземлению .
- Необязательно: Подключите черный провод, указанный на шаге 5, к общей клемме мультиметра (для достижения наилучших результатов используйте соединитель с зажимом с крючком).
- Необязательно: Подключите красный провод из шага 6 к клемме напряжения на мультиметре (для достижения наилучших результатов используйте соединитель с зажимом с крючком)
- Подключите ленточный кабель между Raspberry Pi и сапожником.
Запуск приложения
Выберите Отладка . , ARM конфигурация и Удаленный компьютер . Теперь щелкните проект правой кнопкой мыши и выберите Свойство, а затем нажмите Отладка тег. Затем введите IP-адрес Raspberry Pi 2 в поле «Удаленный компьютер» и снимите флажок Использовать аутентификацию . .
Нажмите F5 . . Приложение будет развернуто на устройстве, что в первый раз может занять несколько минут.
Видео ниже демонстрирует работу приложения:
Примечание. Приложение использует линейный датчик на 360 ° для отображения количества воды. Я должен отметить, что этот датчик не имеет какой-либо линейной корреляции или какой-либо другой корреляции, о которой я знаю, между количеством воды и показаниями датчика. Он дает меньшие значения, когда есть несколько капель, по сравнению с более высокими значениями, когда присутствует больше воды. Я больше использую линейный датчик, чтобы лучше понять концепцию АЦП. Можно подключить датчик воды аналогично тому, как я подключил свой оптоизолированный датчик напряжения переменного тока, чтобы генерировать высокий или низкий сигнал, который может быть захвачен контактом GPIO. Это устройство может быть подключено, чтобы обеспечить влажный или сухой сигнал. Сказав это, я прикрепляю этот датчик воды к АЦП, потому что я хочу обнаружить разницу между небольшим количеством воды и большим количеством воды, и подход, изложенный в этом проекте, позволяет достичь этой цели.
Источник: Высокочувствительный датчик воды на MCP3008
Производственный процесс
- Дождеватель лужайки
- Скалка
- Датчик изображения имеет низкое энергопотребление и высокую частоту кадров
- Цифровой датчик термометра Raspberry Pi 1-Wire (DS18B20)
- Вход аналогового датчика Raspberry Pi с использованием MCP3008:подключение / установка / базовая программа
- Высокочувствительный датчик воды на MCP3008
- Мягкий датчик повышает чувствительность кончиков пальцев роботов
- Трубка ToughMet® 3TS TS105 (C72900)
- Насосы высокого давления для ирригации
- Что такое автоматический водяной насос?