MODBUS SLAVE MONITOR 1.0
Loading...
Searching...
No Matches
Hardware y Sistema

Macros

#define I2C_SDA_PIN   9
 Pin SDA del bus I2C para comunicación con ADS1015.
#define I2C_SCL_PIN   8
 Pin SCL del bus I2C para comunicación con ADS1015.
#define ADS_ALERT_PIN   10
 Pin de interrupción del ADS1015 para conversiones completadas.
#define RX_PIN   20
 Pin de recepción UART para RS485.
#define TX_PIN   21
 Pin de transmisión UART para RS485.

Functions

void setup ()
 Función de inicialización del sistema.
void loop ()
 Loop principal del sistema.

Variables

Adafruit_ADS1015 ads
 Instancia del convertidor ADS1015.
const int NUM_CHANNELS = 3
 Número de canales ADC a muestrear.

Detailed Description

Resumen

Este módulo implementa la configuración de hardware del ESP32 y el flujo completo de:

  • Configuración de periféricos I2C para comunicación con ADS1015.
  • Configuración de UART RS485 para comunicación Modbus RTU.
  • Inicialización del sistema de interrupciones para conversiones ADC.
  • Configuración de FreeRTOS con tareas distribuidas en núcleos.

Estructura y componentes

  • Configuración de pines y periféricos
    • I2C_SDA_PIN, I2C_SCL_PIN: bus I2C para ADS1015.
    • RX_PIN, TX_PIN: comunicación serie RS485.
    • ADS_ALERT_PIN: interrupción de conversión completada.
  • Objetos de hardware
    • Adafruit_ADS1015: instancia del convertidor analógico-digital.
    • HardwareSerial: puerto serie para Modbus RTU.
    • ModbusServerRTU: servidor de protocolo Modbus.
  • Configuración del sistema
    • NUM_CHANNELS: canales ADC configurados (3 canales).
    • Parámetros de velocidad: 19200 bps UART, 400kHz I2C, 3300 SPS ADC.
    • GAIN_TWOTHIRDS: ganancia del ADS1015 para rango ±6.144V.

API Principal

Uso

Resumen del flujo:

1) Inicialización del hardware

  • Configuración del bus I2C (SDA=9, SCL=8) a 400kHz.
  • Inicialización del ADS1015 con ganancia TWOTHIRDS y velocidad 3300 SPS.
  • Configuración UART (RX=20, TX=21) a 19200 bps, 8N1 para RS485.
  • Registro de interrupción en pin 10 para señal ALERT del ADS1015.

2) Configuración de tareas FreeRTOS

  • task_adquisicion: núcleo 0, prioridad 5, gestión de conversiones ADC.
  • task_procesamiento: núcleo 0, prioridad 3, cálculo RMS con FIFOs.
  • dataUpdateTask: núcleo 0, prioridad 1, actualización de registros Modbus.
  • Servidor Modbus: núcleo 0, manejo de peticiones RTU.

3) Configuración del ADC

  • Modo single-ended en 3 canales (A0, A1, A2).
  • Conversiones por interrupción usando señal ALERT.
  • Secuencia round-robin entre canales gestionada por ISR.

4) Configuración Modbus

  • Servidor RTU con ID=1, timeout=2000ms.
  • Registro de worker para función 03 (lectura de holding registers).
  • Respuesta a descubrimiento (registros 0-7) y datos RMS (registros 10+).

Advertencias y mejores prácticas:

  • Verificar conexiones I2C antes del ads.begin() para evitar bloqueos.
  • Usar pullups externos en líneas SDA/SCL si hay problemas de comunicación.
  • Configurar correctamente la señal ALERT del ADS1015 para interrupciones.
  • Verificar la velocidad del bus I2C según la longitud de cables.
  • Proteger accesos concurrentes a hardware mediante semáforos apropiados.
  • Asegurar alimentación estable para conversiones ADC precisas.

Function Documentation

◆ loop()

void loop ( )

Loop principal del sistema.

Ejecuta tareas de demostración y depuración. Muestra periódicamente valores RMS de ejemplo del historial mantenido por el sistema.

◆ setup()

void setup ( )

Función de inicialización del sistema.

Configura hardware, inicializa periféricos, crea tareas FreeRTOS y registra handlers Modbus. Establece la arquitectura completa del sistema embebido.