Интеграция высокочувствительного датчика воды Phantom YoYo с ADC MCP3008 на Raspberry Pi
В этом руководстве мы рассмотрим подключение высокочувствительного датчика воды Phantom YoYo к 8-канальному 10-битному АЦП MCP3008, а затем чтение данных на Raspberry Pi 2 под Windows 10 IoT Core на C#. MCP3008 преобразует аналоговые сигналы в 10-битные цифровые значения (0–1023), которые можно масштабировать к любому опорному напряжению.
Зачем использовать MCP3008?
MCP3008 — компактный, дешёвый АЦП с SPI-интерфейсом. Его 10-битное разрешение даёт 1024 дискретных уровня, позволяя точно различать напряжения. С опорным напряжением 3,3 В выход датчика переводится в вольты формулой:
voltage = (reading / 1023.0) * Vref
Например, сырое чтение 523 соответствует:
523 / 1023 * 3.3 ≈ 1.687 V
Всегда измеряйте реальное напряжение питания (у меня 3.301 В на Pi) и используйте его как Vref для повышения точности.
Обзор железа
- Датчик: Phantom YoYo Water Sensor — 3 пина (–, +, s). Соедините – с землёй Pi, + с 3,3 В (или 5 В), s с каналом 1 MCP3008.
- MCP3008: 8 входных каналов, SPI-пины, Vref, Vdd, AGND. Подключите Vref к 3,3 В, AGND к земле Pi, Vdd к 3,3 В, землю к земле Pi.
- Потенциометр: Опционально — для демонстрации АЦП на канале 0.
Схема подключения
Обратитесь к включённой схеме для маппинга пинов. Ключевые соединения:
- MCP3008 Vref (Pin 15) → Pi 3.3 V
- MCP3008 AGND (Pin 14) → Pi GND
- MCP3008 Vdd (Pin 16) → Pi 3.3 V
- MCP3008 CH0 (Pin 1) → Выход потенциометра
- MCP3008 CH1 (Pin 2) → s-пин датчика воды
- SPI линии (CS, CLK, DO, DI) → Pi SPI пины
Настройка ПО
Тип проекта: Universal Windows Platform. Два индикатора (gauge) отображают:
- Сырое напряжение с потенциометра (канал 0).
- Нормализованный уровень воды (0–100) с датчика (канал 1).
Инициализация MCP3008
private Mcp3008 _mcp3008;
protected override async void OnNavigatedTo(NavigationEventArgs e) {
_mcp3008 = new Mcp3008(0); // SPI bus 0
await _mcp3008.InitializeAsync();
}
Чтение канала
float voltage = _mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);
Для дифференциального измерения замените Single0 на Differential0. Освободите объект при уходе со страницы:
_mcp3008.Dispose();
_mcp3008 = null;
Калибровка и измерение
Используйте мультиметр для проверки напряжения на потенциометре против показаний MCP3008. Переведите мультиметр в режим DC voltage; сравните значения для валидации точности.
Запуск приложения
- Соберите в конфигурации ARM, выберите Remote Machine.
- Укажите IP-адрес Pi в свойствах проекта и отключите аутентификацию.
- Нажмите F5 для развёртывания и запуска.
Приложение показывает 360°-гаудж для уровня воды. Примечание: выход датчика нелинеен; более высокие значения соответствуют большему количеству воды, но связь эмпирическая. Гаудж служит для иллюстрации.
Исходный код и дополнительная документация доступны на странице проекта.
Производственный процесс
- Как работают садовые поливальные установки: дизайн, история и современное производство
- Валёк для теста: от этрусских истоков к современному мастерству
- ON Semiconductor представляет низкоэнергопотребляющий высококадровый образовый сенсор ARX3A0 для интеллектуального з…
- Подключение цифрового термометра DS18B20 1-Wire к Raspberry Pi — пошаговое руководство
- Подключение аналоговых датчиков к Raspberry Pi через MCP3008 — сборка, настройка SPI и пример Python-кода
- Интеграция высокочувствительного датчика воды Phantom YoYo с ADC MCP3008 на Raspberry Pi
- Insight: мягкий тактильный сенсор повышает тактильную чувствительность роботов
- ToughMet® 3TS TS105 (C72900) – Высокопрочный, антизадирный сплав для экстремальных нагрузок
- Промышленные высоконапорные насосы для надежных систем орошения
- Автоматические водяные насосы: принцип работы и значение