Integración del Sensor de Agua Phantom YoYo de Alta Sensibilidad con ADC MCP3008 en Raspberry Pi
En esta guía recorremos la conexión del sensor de agua Phantom YoYo de alta sensibilidad al ADC MCP3008 de 8 canales y 10 bits, y la lectura de datos con una Raspberry Pi 2 corriendo Windows 10 IoT Core y C#. El MCP3008 convierte señales analógicas a valores digitales de 10 bits (0–1023) escalables a cualquier voltaje de referencia.
¿Por Qué Usar el MCP3008?
El MCP3008 es un ADC compacto y de bajo coste con interfaz SPI. Su resolución de 10 bits da 1024 niveles discretos, permitiendo discriminación fina de voltaje. Con una referencia de 3.3 V, la salida del sensor se convierte a voltaje usando:
voltaje = (lectura / 1023.0) * Vref
Por ejemplo, una lectura cruda de 523 corresponde a:
523 / 1023 * 3.3 ≈ 1.687 V
Mide siempre el voltaje de alimentación real (ej. 3.301 V en mi Pi) y usa ese valor para Vref para mejorar la precisión.
Visión General del Hardware
- Sensor: Phantom YoYo Water Sensor – 3 pines (–, +, s). Conecta – a tierra Pi, + a 3.3 V (o 5 V), s a canal 1 del MCP3008.
- MCP3008: 8 canales de entrada, pines SPI, Vref, Vdd y AGND. Conecta Vref a 3.3 V, AGND a tierra Pi, Vdd a 3.3 V, y tierra a tierra Pi.
- Potenciómetro: Opcional – usado para demostrar conversión ADC en canal 0.
Diagrama de Cableado
Consulta el esquema incluido para mapeo de pines. Conexiones clave:
- 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) → Salida potenciómetro
- MCP3008 CH1 (Pin 2) → Pin s del sensor de agua
- Líneas SPI (CS, CLK, DO, DI) → Pines SPI de la Pi
Configuración de Software
Tipo de proyecto: Universal Windows Platform. Dos medidores muestran:
- Voltaje crudo del potenciómetro (canal 0).
- Nivel de agua normalizado (0–100) del sensor (canal 1).
Inicializando el MCP3008
private Mcp3008 _mcp3008;
protected override async void OnNavigatedTo(NavigationEventArgs e) {
_mcp3008 = new Mcp3008(0); // Bus SPI 0
await _mcp3008.InitializeAsync();
}
Leyendo un Canal
float voltaje = _mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);
Para medición diferencial, reemplaza Single0 con Differential0. Libera el objeto al navegar fuera:
_mcp3008.Dispose();
_mcp3008 = null;
Calibración y Medición
Usa un multímetro para verificar el voltaje del potenciómetro contra la lectura del MCP3008. Pon el multímetro en voltaje DC; compara ambos valores para validar precisión.
Ejecutando la App
- Compila en configuración ARM, elige Remote Machine.
- Establece la IP de la Pi en propiedades del proyecto y desactiva autenticación.
- Pulsa F5 para desplegar y lanzar.
La app muestra un medidor de 360° para nivel de agua. Nota: la salida del sensor no es estrictamente lineal; valores más altos corresponden a más agua pero la relación es empírica. El medidor es solo ilustrativo.
Código fuente y documentación adicional disponibles en la página del proyecto.
Proceso de manufactura
- Cómo Funcionan los Aspersores de Césped: Diseño, Historia y Fabricación Moderna
- El rodillo de cocina: de los orígenes etruscos a la artesanía moderna
- Tecnología del lavavajillas: historia, diseño e innovaciones futuras
- Cómo Conectar un Termómetro Digital DS18B20 One‑Wire a Raspberry Pi – Guía Paso a Paso
- Conectar sensores analógicos a Raspberry Pi con MCP3008: cableado, configuración SPI y código Python
- Integración del Sensor de Agua Phantom YoYo de Alta Sensibilidad con ADC MCP3008 en Raspberry Pi
- Bombas de Alta Presión de Grado Industrial para Sistemas de Riego Confiables
- Bombas de Agua Automáticas: Cómo Operan y Por Qué Importan
- ON Semiconductor lanza sensor imagen ARX3A0 low‑power, high‑frame‑rate para visión inteligente
- Insight: Sensor Háptico Blando Mejora la Sensibilidad Táctil de los Robots
- ToughMet® 3TS Tubo TS105 (C72900) – Aleación de Alta Resistencia y Resistente al Agarrotamiento para Cargas Extremas