Bonsoir Bagou91,
Le principe du détecteur est simple : il fait passer le signal DCC destiné aux rails dans 2 diodes en série pour provoquer une chute de tension de 1V environ qui est convertie en courant par un transistor pour charger un condensateur. Le condensateur se décharge dans la diode émettrice d'un optocoupleur dont le transistor en collecteur ouvert est relié à l'Arduino. Il n'a pas le temps de se décharger avant la période suivante du DCC. Ça retarde un peu la détection (quelques ms) mais ce n'est pas gênant.
Les 2 fils venant de la centrale DCC courent tout le long du réseau et une paire de fils prélève ce signal pour chaque zone où il faut détecter un train. Les arrivées DCC sont donc branchées sur 1 et 3 de K3 et les rails sur 2 et 3. La borne 3 est commune et les diodes sont en série entre 1 et 2. Il y a 2 séries de diodes en sens inverse car le DCC est du courant alternatif.
L'Arduino se branche sur K4 : La broche 3 doit être reliée à la masse (GND) et la broche de l'Arduino sur 1 ou 2 (c'est pareil). La broche de l'Arduino doit être configurée en INPUT_PULLUP sinon ça ne marche pas !
Il n'est pas nécessaire d'avoir 2 optocoupleurs, un seul suffit.
ATTENTION, il faut bien protéger le réseau contre les court-circuits sinon les diodes ne vont pas supporter (ici 2A mais j'ai remplacé les SB260 par des 1N5819 qui ne supportent qu'1A) : la centrale doit couper le courant immédiatement en cas de dépassement de seuil de courant. C'est la raison d'être des capteurs Max471 dans les centrales DCC++.
Pour le PWM, j'ai seulement mentionné qu'une autre version de détecteur est possible pour le PWM avec un lien vers le Forum où il y a un schéma. Mais ce montage n'a pas de filtrage (le condensateur) et délivre un signal haché à l"Arduino qui ne peut pas être utilisé tel quel : il faut un filtrage qui est une simple intégration (filtrage passe bas logiciel) qui peut se faire en additionnant plusieurs mesures et en prenant la moyenne.
J'espère que j'ai bien répondu à tes questions