Construyendo un Sistema de Ventilación Temporizado por GPS para Barcos: Ventilador Operado por Relé con PIC16F628A
Construya un ventilador confiable controlado por GPS para ventilar humedad de una cabina de barco. El sistema usa un microcontrolador PIC16F628A, relés, una batería de 12V y una pantalla LCD.
La ventilación es esencial en espacios estrechos y húmedos. Sin flujo de aire adecuado, la humedad puede acumularse, creando un caldo de cultivo para moho y hongos. En mi barco, donde abundan las superficies de madera, diseñé una solución simple pero efectiva: un ventilador operado por relé que funciona en un horario fijo, alimentado por una batería de auto y gestionado por un módulo GPS para temporización precisa.
Por Qué Importa la Ventilación Controlada
En habitaciones pequeñas, el aire estancado conduce a condensación. Con el tiempo, esta humedad fomenta el crecimiento de moho, que puede dañar la madera y degradar la calidad del aire. Si bien la limpieza regular puede mitigar el problema, automatizar la ventilación ofrece un enfoque más consistente y de bajo mantenimiento.
Descripción General del Sistema
El ventilador debe:
- Circular aire eficientemente.
- Operar automáticamente en un horario constante.
- Obtener energía de una batería de auto de 12V.
- Cargar la batería mediante un cargador dedicado cuando el ventilador está apagado.
- Mostrar la hora actual y el estado en una pantalla LCD.
Componentes clave incluyen:
- Ventilador 12V 4.5A
- Microcontrolador PIC16F628A
- Batería de 12V y cargador
- Dos relés (control de ventilador y control de cargador)
- Módulo GPS (serie Skylab SKM53)
- Pantalla LCD
- Fusibles (12V, 8A)
- Resistores, capacitores y conectores varios
El ventilador funciona durante cinco minutos cada hora —un valor codificado en el firmware. Cuando el ventilador está activo, el relé del cargador se desenergiza para evitar sobrecarga. Cuando el ventilador se detiene, el relé del cargador se re-energiza, manteniendo la batería cargada.
Temporización GPS con Skylab SKM53
El SKM53 proporciona sentencias NMEA por UART cada segundo. Uso la sentencia RMC para extraer la hora UTC actual. Ejemplo:
$GPRMC,075747.000,A,2233.89990,N,11405.3368,E,3.9,357.8,260210,,,A*6ALos primeros seis dígitos (075747) representan 07:57:47. El campo de estado (la letra después de la tercera coma) indica una fijación válida ("A") o inválida ("V"). Mi firmware verifica esta bandera antes de usar la marca de tiempo.
Para comunicación serial confiable, la hoja de datos recomienda un pull-up de 10 kΩ en tanto RXD como TXD y capacitores de desacoplamiento (10 µF electrolítico + 0.1 µF cerámico). Usé un solo capacitor cerámico de 0.1 µF en la protoboard y no observé inestabilidad.
Captura de pantalla de la hoja de datos de Skylab (PDF).
Diagrama de Bloques
Visualizar el sistema como bloques discretos simplifica la resolución de problemas y la creación del esquemático.

Diseño de Hardware
El esquemático sigue el diagrama de bloques y muestra las conexiones de cada componente.

Elegí el regulador lineal LM7805 por simplicidad, añadiendo capacitores de suavizado adicionales para prevenir oscilación. Aunque un regulador conmutado moderno mejorar la eficiencia, la fiabilidad del LM7805 y los componentes que tenía a mano lo hicieron una opción práctica.
Todos los componentes están montados en un PCB robusto, con un fusible de 12V 8A en ambos circuitos de ventilador y cargador por seguridad.

Estructura del Firmware
El código fuente en C está bien comentado y sigue una estructura clara:
- Incluir bibliotecas y establecer bits de configuración.
- Definir constantes (frecuencia de cristal, asignaciones de puertos).
- Declarar variables globales.
- Prototipar funciones.
- Implementar funciones con comentarios en línea.
- Entrar en el bucle principal, que lee datos GPS, gestiona temporizadores y conmuta relés.
Ejemplo: Inicialización UART.
// FUNCIÓN PARA INICIALIZAR EL PUERTO UART
void uart_init(void) {
TXSTAbits.BRGH = 0; // Alta velocidad de baudios deshabilitada
TXSTAbits.SYNC = 0; // Modo asíncrono
TXSTAbits.TX9 = 0; // Transmisión de 8 bits
RCSTAbits.CREN = 1; // Habilitar recepción continua
/*
* Cálculo de baudios (cristal 16 MHz, 9600 bps):
* SPBRG = (16 MHz / 9600) / 64 - 1 = 25
*/
SPBRG = 25;
PIE1bits.RCIE = 1; // Habilitar interrupción de recepción UART
RCSTAbits.SPEN = 1; // Habilitar puerto serial
TXSTAbits.TXEN = 1; // Habilitar transmisión
}
Descargue el código fuente completo aquí: jc_lettheairflow.c.zip.
Conclusión
Al integrar un módulo GPS para temporización precisa, relés para gestión de energía y una batería de 12V para portabilidad, este sistema mantiene una cabina de barco seca y libre de moho. El diseño es modular —fácilmente extensible para mostrar la fecha o integrar sensores adicionales.
Imágenes

¡Pruebe este proyecto usted mismo! Descargue la lista de materiales y el código.
Equipo industrial
- Construye un Prototipo Ganador: Guía Paso a Paso para Desarrollo Rápido de Productos
- Mejore la Eficiencia de sus Sistemas de Compresores de Aire: Consejos y Estrategias Comprobadas
- Cómo Funcionan los Secadores de Aire: Manteniendo el Aire Comprimido Limpio y Eficiente
- Guía completa para eliminar contaminantes del aire comprimido
- Guía Paso a Paso para Reemplazar una Manguera Hidráulica en Maquinaria Pesada
- Guía Profesional para Construir un Plato de Torno Metálico
- Secadores por Calor de Compresión Explicados: Garantizando Aire Comprimido Seco y de Alta Calidad
- Entendiendo el Compresor de Dientes Rotativos: Cómo Funciona
- Renueve su Sistema de Aire Comprimido: Compromiso de Año Nuevo con Seguridad y Eficiencia
- Cómo el aire comprimido impulsa el rendimiento élite en drag racing
- La guía completa de producción de fibra de vidrio