On peut utiliser aussi comme booster un module avec le cirtcuit LMD18200 que l'on peut trouver facilement sur eBay.
Ce module peut fournir un courant de 3 ampères avec des pointes de 6 ampères.
4.1 Description du booster réalisé avec un module de pilotage de moteur L298
La photo du module est donnée ci-dessous.
Voici le cablage à réaliser pour obtenir une ou deux sorties DCC
Le bornier à vis bleu (3 pins) :
VMS --> Tension VMS de l'alim de puissance de 15 à 20 Volts (sur la source de puissance).
GND, --> Relié à la masse de l'alimentation de puissance et à la masse de l'ARDUINO
+V --> Sortie du régulateur de la carte L298N en +5V. Permet d'alimenter des composants externes éventuels (Intensité de 0 à 36 mA), sinon non connecté.
Les 2 borniers à vis verts (2 x 2 pins)
Le signal DCC est disponible sur les 2 sorties MotorA et MotorB
Signaux de commande sur les 6 pins (logique TTL : 5V = high, 0V = low).
Pour avoir une sortie DCC sur Motor A:
L' entrée EnA est à relier au +5V de l'ARDUINO
Les entrées In1 et In2 sont à relier aux sorties numérique de l'ARDUINO qui délivrent le signal DCC
Pour avoir 2 sorties DCC sur Motor A et motor B, il faut relier ensemble IN1 et IN3, IN2 et IN4, ENA et ENB
L'amplitude du signal DCC dépend de la tension d'alimentation continue appliqué sur l'entrée VMS du module. Avec une alim de 16 Volts, on obtient un signal DCC de 16 Volts efficaces environ.
qui est suffisant pour faire fonctionner un décodeur DCC.
Remarque importante
Le L298 est parfait pour piloter un moteur pas à pas mais pose des problèmes pour l'amplification d'un signal DCC. Le LMD 18200 est préférable.
En effet, les retards entre le changement d’une entrée du L298 et le changement correspondant de la sortie sont asymétriques. C’est à dire que les retards ne sont pas les même selon que le signal d’entrée passe de 0 à 1 ou de 1 à 0 (ce qui entraine une forte distorsion du signal DCC). Le signal obtenu n'est pas apprécié de certains décodeurs (en particulier les décodeurs LENZ). Le LMD 18200 ne présente pas ce défaut
4.2 Description du booster réalisé avec un module LMD18200
On peut aussi utiliser comme booster un module avec le cirtcuit LMD18200 dont la photo est donnée ci-dessous.
L'entrée GND est à relier à la masse de l'ARDUINO
L'entrée PWM est à relier au +5V
L'entrée DIR est à relier à la sortie DCC de l'ARDUINO ( pin 13)
L'entrée BRAKE est à relier à la masse.
Le signal DCC amplifié est disponible sur les sorties OUT1 et OUT2
L'amplitude du signal DCC dépend de la tension d'alimentation continue appliqué sur l'entrée V+ du module. Avec une alim de 16 Volts, on obtient un signal DCC de 16 Volts efficaces environ.
qui est suffisant pour faire fonctionner un petit réseau.
On peut voir sur la figure ci-dessous l'allure du signal DCC en sortie du booster.
4.3 Protection du booster contre les court-circuits
Sur un réseau de trains miniatures, un déraillement provoquant un court-circuit est toujours possible et il faut absolument que le booster soit protégé contre les court-circuits.
Or les modules L298 et LMD 18200 n'ont pas de protection contre les court-circuits et peuvent être détruits au bout de quelques millisecondes.
Il est donc absolument nécessaire d'ajouter un circuit de protection contre les court-circuits.
Un montage possible est représenté sur la figure ci-dessous.
Ce montage utilise un opto-coupleur 4N33 ou 4N35. qui détecte la tension en sortie du booster et envoie la valeur à l'ARDUINO sur l'entrée analogique A0. En fonctionnement normal, la diode émettrice de l'optocoupleur est traversée par un courant et l'on obtient une tension de 2 à 3 Volts sur la sortie 5 reliée à A0. En présence d'un court-circuit, la diode ne conduit plus et on a une tension de 5 Volts sur la sortie 5.
Le programme de l'ARDUINO mesure la tension reçue sur A0 et coupe la sortie du booster si la tension est supérieure à 4,5 Volts.
Pour le module LMD 18200, il faut mettre l'entrée BRAKE à +5 Volts (HIGH)
Pour le module L298, c'est l'entrée ENA qu'il faut mettre à la masse (LOW).
La mesure de la tension est effectuée lors d'une alternance positive d'un zéro du signal DCC. Ce montage permet de couper la sortie du booster en moins de 100 µsec et d'éviter ainsi une détérioration.
Il faut prévoir une commande par bouton poussoir pour réactiver la sortie du booster lorsque le court-circuit a été supprimé.
A titre d'exemple, voici le programme ARDUINO qui permet de couper le signal d'un module LMD 18200.
L'entrée BRAKE du module est reliée à la sortie 5 de l'ARDUINO.
Un bouton poussoir est relié à l'entrée 7 de l'ARDUINO.
Le programme qui mesure la tension DCC (vt) pendant l'émission d'un zéro est le suivant
Le programme qui coupe la sortie du module en cas de court-circuit et qui permet de rétablir la sortie DCC est le suivant:
4.4 Autres solutions
Il est aussi possible d'utiliser un ampli audio comme booster, comme expliqué ici.
On peut utiliser par exemple un ampli audio à base d'un circuit TM 3886 qui peut délivrer une puissance de 60 Watts. Cet ampli est disponible ici.
Voici un exemple de programme pour ARDUINO UNO qui permet la commande d'un servo qui passe de la position 30 à la position 150 en 12 secondes. La sortie servo est 11 et l'entrée 4 est utilisée pour la commande par un interrupteur.
#include
Servo myservo;
int valservo;
int valservomin=30;
int valservomax=150;
long tservo=millis();
int ac0=0;
int pinac0=4;
if (valservo
if (ac0 ==1 && millis()>tservo + 100 ) {
valservo=valservo+1;
tservo=millis();
myservo.write(valservo);
}
if (valservo>valservomax) valservo=valservomax ;
}
5.4 Génération d'un paquet de commande d'accessoires
Les décodeurs d'accessoires sont utilisés pour commander des fonctions simples comme les aiguillages, feux, etc...
Ils comportent en général 8 sorties qui sont groupées en 4 groupes de 2 (1A, 1B, 2A, 2B, 3A, 3B, 4A, 4B) Ainsi, un décodeur permet de commander 4 aiguilles.
Le décodeur d’adresse 1 commande les aiguilles dont les numéros vont de 1 à 4, le décodeur d’adresse 2 commande les aiguilles dont les numéros vont de 5 à 8, le décodeur d’adresse 3 commande les aiguilles dont les numéros vont de 9 à 12, etc
Dans la norme NMRA, cette adresse peut prendre une valeur allant de 1 à 511, et chaque décodeur permettant la commande de 4 aiguilles, il est possible de commander jusqu’à 2044 aiguilles.
Dans le programme que j'ai écrit pour l'ARDUINO, le nombre d'adresses est limité à 63, ce qui permet de commander 252 accessoires.
Le format d'un paquet est le suivant:
{préambule} 0 10AAAAAA 0 1111CDDF 0 EEEEEEEE 1
Les bits A transmettent l'adresse ( 63 adresses possibles)
Le bit C permet d'activer ou de désactiver la sortie.
Les bits D permettent de sélectionner le groupe de sortie (00 correspond au groupe 1, 01 correspond au groupe 2, etc...
Le bit F permet de sélectionner la sortie A ou B dans chaque groupe: F=0 correspond à la sortie A et F=1 correspond à la sortie B.
Un paquet destiné à un décodeur d'adresse 3 s'écrit:
"préambule" 0 10000011 0 1111CDDF 0 EEEEEEEE 1
Dans le programme pour l'ARDUINO, un aiguillage est défini par son numéro (numag) et par sa position (posag): posag=0 ==> aiguille en position directe, posag=1 ==> aiguille en position déviée.
L'adresse du décodeur s'obtient par la relation:
adresse = Int((numag - 1) / 4) + 1
les bits D0 et D1 sont donnés par la relation:
d = numag - 1 - 4 * int((numag - 1)/4)
Si d=0 alors D0=0 et D1=0
Si d=1 alors D0=1 et D1=0
Si d=2 alors D0=0 et D1=1
Si d=3 alors D0=1 et D1=1
F = posag
MSComm32
Ce contrôle est le plus facile à utiliser. Il marche avec VB6 et VBA avec Windows XP mais il ne fonctionne pas toujours avec les versions plus récentes de Windows (il peut être nécessaire de modifier la base de registre)
On trouvera un mode d'emploi complet en Français sur le site Developpez.com
NETComm
Ce contrôle marche avec VB6 et VBA avec toutes les versions de Windows depuis XP jusqu'à Windows 10
C'est le contrôle que je recommande.
Ce contrôle est à télécharger sur le site suivant (il y a une version pour Windows XP et une version pour Windows 7 à 10) http://www.hardandsoftware.net/NETCommOCX.htm
Quand vous arrivez sur la page d'accueil du site, cliquez sur Updated installer for Windows 7 pour télécharger la version de NETComm pour Windows 7, 8 et 10.
Ce site donne aussi les caractéristiques du contrôle.
API Windows Serial Port Software
Cette méthode marche avec VB6 et VBA avec WinXP mais elle ne marche pas avec Windows 7 et elle est est plus compliquée à utiliser que les autres méthodes.
Vous trouverez une description de cette méthode sur le site ci-dessous http://www.pencomdesign.com/support/relay_software/vba_software_example_api.htm
Communication en VB6 et VBA avec NETComm
Voici comment insérer le controle NETComm dans un projet VB6
Cliquer sur projet puis composants puis sur parcourir et indiquer le dossier où se trouve le composant NETComm.ocx et l'ouvrir
Une fois le contrôle rajouté, son icône apparaît dans la barre des contrôles. Il suffit d’en placer une instance sur la feuille pour pouvoir l’utiliser. Par défaut, ce contrôle s’appellera NETComm1, et on utisera ce nom pour la suite de l’application
Les nombres entiers sont envoyés en utilisant les caractères ASCII pour chaque chiffre avec l'instruction Format(N)
Exemple transmission du chiffre 9: NETComm1.output = Format(9)
Transmision du nombre 59: NETComm1.output = Format(5) + Format(9) ou NETComm1.output = Format(59)
Les caractères et les chaînes sont transmis tels que entre guillemets
Exemple. Transmission du caractère A: NETComm1.output = "A"
La réception des données en provenance de l'ARDUINO utilise l'instruction NETComm1.InputData
Voici le programme pour recevoir un nombre entier N à 1 ou 2 chiffres (0 à 99) en provenance de l'ARDUINO (envoyé avec l'instruction Serial.print(N,DEC))
DoEvents
tampon = NETComm1.InputData
n = Len(tampon)
Label3.Caption = n
DoEvents
If n = 1 Then
octet1 = Asc(Mid(tampon, 1, 1))
nombre = octet1 - 48
Label4.Caption = nr
DoEvents
End If
If n = 2 Then
octet1 = Asc(Mid(tampon, 1, 1))
octet2 = Asc(Mid(tampon, 2, 1))
nombre = 10 * (octet1 - 48) + octet2 - 48
Label4.Caption = nombre
DoEvents
End If
7.3 Exemple à télécharger
Cet exemple montre la transmission d'un nombre entre 0 et 99.entre l'ARDUINO et le PC avec Visual Basic.
Ce programme permet d'allumer la LED sur le module ARDUINO correspondant à la sortie 13.
L'envoi par le PC du chiffre 9 ou du nombre 15 allume la LED et l'envoi du chiffre 9 ou du nombre 25 éteint la LED.
Vous pouvez télécharger cet exemple en cliquant ici.
Ce programme gére les adresses entre 3 et 99, la vitesse avec 28 crans et les fonctions F0 à F8.
Il est utilisable avec JMRI DecoderPro et aussi avec CARTO-DCC que vous pouvez télécharger dans la rubrique consacrée aux logiciels installés sur le PC.
Il faut noter que ce programme simplifié ne gère pas la commande d'accessoires.
A titre d'exemple, j'ai écrit avec cette librairie les progammes de deux décodeurs:
- un décodeur de fonction qui délivre un signal 0-5V sur les sorties numériques correspondant à la fonction sélectionnée ainsi qu'une sortie servo
- un décodeur d'accessoires qui délivre un signal 0-5V sur les sorties numériques suivant l'adresse de l'accessoire sélectionné
J'ai également écrit un programme de décodage DCC pour locomotive qui transmet sur la sortie série les commandes de la loco (adresse, sens de marche, vitesse, fonctions F0 à F8). Ce programme intitué "decodeur_dcc_traindejardin" est utilisé dans le récepteur de radiocommande.
Le signal DCC est appliqué entre l'entrée 2 de l'ARDUINO UNO et la masse en insérant un circuit d'adaptation qui permet de réduire l'amplitude du signal DCC issu d'une centrale avec une amplitude de 14 à 16 volts.
Le schéma du circuit est représenté ci-dessous.
Les sorties numériques de l'ARDUINO sont les sorties 3 à 10 (8 sorties).
Le servo utilise la sortie 11 pour le signal de commande.
Le décodeur de fonction a l'adresse 3 que l'on peut évidemment changer dans le programme ARDUINO.
La fonction F0 active le servo
La fonction F1 active la sortie 3 (F1 ON correspont à la sortie HIGH et F1 OFF correspond à la sortie LOW)
La fonction F2 active la sortie 4
La fonction F3 active la sortie 5
La fonction F4 active la sortie 6
La fonction F5 active la sortie 7
La fonction F6 active la sortie 8
La fonction F7 active la sortie 9
La fonction F8 active la sortie 10
Le décodeur d'accessoires est programmé pour les numéros 1 à 4 (adresse1).
Vous pouvez télécharger ces deux exemples ainsi que le décodeur DCC de locomotive et la librairie en cliquant ici.
Le dossier "NmraDcc" qui contient la librairie doit être plaçé dans le dossier "librairies" de l'ARDUINO.