# Introduction Ce projet permet de réaliser un programmateur pour des décodeurs DCC. Coté matériel, il est constitué d'un ARDUINO NANO, un pont en H LM18220 et un mesureur de courant Coté logiciel, il utilise platform.io, et est très simple, il permet uniquement de programmer les décodeurs de locomotive ou d'accessoires à partir d'une commande via le port série de l'arduino. ## Prérequis - Arduino Nano avec câble USB - Pont en H LM18220 - Module de mesure de courant (ex : ACS712 ) - Rails DCC pour test - Décodeurs à programmer - Platform.io (CLI ou extension VS Code) - Python 3.6+ ## Mise en oeuvre matérielle ### Schéma de connexion 1. **Arduino Nano vers Pont en H LM18220** - Pin 9 → IN1 (direction) - Pin 10 → IN2 (direction) - Pin 11 → PWM (vitesse/amplitude) 2. **Mesureur de courant** - Connecter en série dans le circuit de puissance - Sortie analogique vers Pin A0 de l'Arduino - Prévoir des condensateurs de découplage (100nF) 3. **Alimentation** - Tension de programmation : 12-18V DC - Courant max : adaptez l'alimentation aux spécifications du pont en H - Prévoir un fusible de protection (2-3A recommandé) ### Points importants - **Masse commune** : Connecter la masse de l'Arduino et du circuit de puissance - **Condensateurs de découplage** : Ajouter des 100nF près des broches d'alimentation - **Câblage** : Minimiser les boucles, utiliser un écran pour les signaux analogiques - **Connecteur** : Prévoir un connecteur facilement débrochable pour les rails de test ## Mise en oeuvre logicielle ### Installation ```bash # Cloner le projet git clone cd DCC-Prog # Installer les dépendances platform.io pio lib install # Compiler pio run ``` ### Configuration port série - **Baud rate** : 115200 par défaut - **Format** : 8N1 (8 bits, pas de parité, 1 bit de stop) - **Port** : `/dev/ttyUSB0` (Linux), `COM3` (Windows), `/dev/cu.usbserial` (macOS) ## Conseils d'utilisation ### Programmation des décodeurs 1. **Préparation** - Placer le décodeur seul sur les rails de programmation - Respecter les délais entre les commandes (attendre la confirmation) 2. **Commandes typiques** - Lire un CV : `READ_CV ` - Écrire un CV : `WRITE_CV ` - Configurer l'adresse : `SET_ADDR ` 3. **Vérification du courant** - Surveiller le courant pour détecter les dysfonctionnements - Valeur normale : 50-300mA selon le décodeur - Dépasser 500mA indique un court-circuit probable ### Flux de programmation recommandé 1. Interroger le décodeur pour vérifier la réponse 2. Programmer les CVs une à une 3. Vérifier chaque écriture en relisant 4. Terminer et tester sur les rails principaux ## Dépannage | Problème | Cause probable | Solution | |----------|----------------|----------| | Pas de réponse du décodeur | Décodeur absent ou défectueux | Vérifier la connexion, tester avec un décodeur différent | | Courant trop élevé | Court-circuit ou décodeur défectueux | Couper l'alimentation immédiatement | | Écriture sans confirmation | Décodeur bloqué en lecture seule | Vérifier le type de décodeur, réinitialiser si possible | | Port série introuvable | Pilote USB manquant | Installer les pilotes CH340 ou FTDI selon le câble | ## Notes de sécurité ⚠️ **Important** - Ne jamais dépasser 18V sur les rails DCC - Prévoir un arrêt d'urgence (bouton sur l'alimentation) - Utiliser une alimentation stabilisée - Vérifier l'absence de court-circuit avant mise sous tension - Porter attention au courant appelé lors de la programmation - Laisser refroidir le pont en H s'il chauffe excessivement ## Support et ressources - Documentation NRMA DCC : https://www.nmra.org/dcc - Spécifications Arduino : https://www.arduino.cc - Pont en H LM18220 : Consulter la fiche technique du fabricant