Construction d'un système de ventilation chronométré par GPS pour bateaux : ventilateur commandé par relais avec PIC16F628A
Construisez un ventilateur fiable, commandé par GPS, pour évacuer l'humidité d'une cabine de bateau. Le système utilise un microcontrôleur PIC16F628A, des relais, une batterie 12 V et un afficheur LCD.
La ventilation est essentielle dans les espaces exigus et humides. Sans flux d'air adéquat, l'humidité s'accumule, créant un terrain propice aux moisissures et champignons. Dans mon bateau, où les surfaces en bois sont nombreuses, j'ai conçu une solution simple mais efficace : un ventilateur commandé par relais qui fonctionne selon un horaire fixe, alimenté par une batterie de voiture et géré par un module GPS pour une synchronisation précise.
Pourquoi une ventilation contrôlée est importante
Dans les petites pièces, l'air stagnant entraîne de la condensation. Avec le temps, cette humidité favorise la croissance de moisissures, qui peuvent endommager le bois et dégrader la qualité de l'air. Si un nettoyage régulier peut atténuer le problème, l'automatisation de la ventilation offre une approche plus constante et nécessitant peu d'entretien.
Vue d'ensemble du système
Le ventilateur doit :
- Faire circuler l'air efficacement.
- Fonctionner automatiquement selon un horaire stable.
- Puiser son énergie dans une batterie 12 V de voiture.
- Recharger la batterie via un chargeur dédié quand le ventilateur est arrêté.
- Afficher l'heure actuelle et l'état sur un LCD.
Composants clés :
- Ventilateur 12 V 4,5 A
- Microcontrôleur PIC16F628A
- Batterie 12 V et chargeur
- Deux relais (commande ventilateur & commande chargeur)
- Module GPS (série Skylab SKM53)
- Afficheur LCD
- Fusibles (12 V, 8 A)
- Résistances, condensateurs, connecteurs divers
Le ventilateur fonctionne cinq minutes par heure — une valeur codée en dur dans le firmware. Quand le ventilateur est actif, le relais du chargeur est désactivé pour éviter la surcharge. Quand le ventilateur s'arrête, le relais du chargeur se réactive, maintenant la batterie chargée.
Synchronisation GPS avec le Skylab SKM53
Le SKM53 fournit des trames NMEA via UART chaque seconde. J'utilise la phrase RMC pour extraire l'heure UTC courante. Exemple :
$GPRMC,075747.000,A,2233.89990,N,11405.3368,E,3.9,357.8,260210,,,A*6ALes six premiers chiffres (075747) représentent 07:57:47. Le champ de statut (la lettre après la troisième virgule) indique une fixation valide (« A ») ou invalide (« V »). Mon firmware vérifie ce drapeau avant d'utiliser l'horodatage.
Pour une communication série fiable, la fiche technique recommande une résistance de pull-up de 10 kΩ sur RXD et TXD et des condensateurs de découplage (10 µF électrolytique + 0,1 µF céramique). J'ai utilisé un seul 0,1 µF céramique sur plaque d'essai et n'ai observé aucune instabilité.
Capture d'écran de la fiche technique Skylab (PDF).
Diagramme de blocs
Visualiser le système comme des blocs distincts simplifie le dépannage et la création du schéma.

Conception matérielle
Le schéma suit le diagramme de blocs et montre les connexions de chaque composant.

J'ai choisi le régulateur linéaire LM7805 pour sa simplicité, en ajoutant des condensateurs de lissage supplémentaires pour éviter les oscillations. Bien qu'un régulateur à découpage moderne améliorerait le rendement, la fiabilité du LM7805 et les composants dont je disposais en ont fait un choix pratique.
Tous les composants sont montés sur un PCB robuste, avec un fusible 12 V 8 A sur les circuits ventilateur et chargeur pour la sécurité.

Structure du firmware
Le code C est bien commenté et suit une structure claire :
- Inclure les bibliothèques et définir les bits de configuration.
- Définir les constantes (fréquence quartz, affectations ports).
- Déclarer les variables globales.
- Protyper les fonctions.
- Implémenter les fonctions avec commentaires en ligne.
- Entrer dans la boucle principale, qui lit les données GPS, gère les temporisateurs et bascule les relais.
Exemple : initialisation UART.
// FONCTION D'INITIALISATION DU PORT UART
void uart_init(void) {
TXSTAbits.BRGH = 0; // Taux de baud élevé désactivé
TXSTAbits.SYNC = 0; // Mode asynchrone
TXSTAbits.TX9 = 0; // Transmission 8 bits
RCSTAbits.CREN = 1; // Réception continue activée
/* Calcul du baud rate (quartz 16 MHz, 9600 bauds) :
* SPBRG = (16 MHz / 9600) / 64 - 1 = 25 */
SPBRG = 25;
PIE1bits.RCIE = 1; // Activer l'interruption de réception UART
RCSTAbits.SPEN = 1; // Activer le port série
TXSTAbits.TXEN = 1; // Activer la transmission
}
Téléchargez le code source complet ici : jc_lettheairflow.c.zip.
Conclusion
En intégrant un module GPS pour une synchronisation précise, des relais pour la gestion de l'énergie et une batterie 12 V pour la portabilité, ce système maintient une cabine de bateau sèche et sans moisissure. La conception est modulaire — facilement extensible pour afficher la date ou intégrer des capteurs supplémentaires.
Images

Essayez ce projet vous-même ! Téléchargez la nomenclature et le code.
Équipement industriel
- Le Guide Complet de la Production de Fibre de Verre
- Construire un Prototype Gagnant : Guide Étape par Étape pour le Développement Rapide de Produits
- Booster l'efficacité de vos systèmes de compresseurs d'air : Astuces et stratégies éprouvées
- Comment fonctionnent les sécheurs d'air : garder l'air comprimé propre et efficace
- Guide complet pour éliminer les contaminants de l'air comprimé
- Guide Étape par Étape pour Remplacer un Tuyau Hydraulique sur Engins Lourds
- Guide Professionnel pour Construire un Mandrin de Tour à Métal
- Sécheurs à chaleur de compression expliqués : garantir un air comprimé sec et de haute qualité
- Comprendre le compresseur à dents rotatives : principe de fonctionnement