LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 6 décembre 2022

65 visiteurs en ce moment

Ma première manette DCC (1)

. Par : msport

DIFFICULTÉ :

Ca y est : Ma première centrale DCC fonctionne, elle a été testée, elle a pu lire l’adresse d’une locomotive et même faire démarrer cette locomotive depuis le Moniteur Série de l’IDE de l’Arduino. Vous avez eu envie de la faire fonctionner avec JMRI mais cela mobilise un ordinateur ou un Raspberry.
Cet article se propose de décrire les éléments d’une manette basique pour utiliser Ma première centrale DCC en autonomie, sans ordinateur ou Raspberry. Manette simplissime, elle reste liée à la patte de sa centrale.
Le sans fil (radio) est prévu dans un deuxième temps mais c’est plus compliqué.

Dans le cahier des charges,

  • l’utilisation d’un programme tout fait, sans modification.
  • un coût minimal
  • pas de fer à souder, et donc pas de soudures
  • du matériel que l’on trouve facilement
  • pas d’intervention sur le matériel
  • un montage qui prend 30 mn
  • et qui fonctionne en autonome sans ordinateur
  • mais filaire de base. (radio à venir)

Prérequis :

  • connaître les bases de la gestion des fichiers de votre ordinateur
  • savoir télécharger des fichiers et les décompresser
  • et donc savoir les placer au bon endroit
  • savoir utiliser l’IDE Arduino pour charger un programme sur une carte Arduino
  • savoir installer une bibliothèque
  • savoir lire un schéma simple.
  • et quand même avoir entendu parler de DCC, de DCC++ et de ses avatars.

Principe de fonctionnement

Cet article est la reprise d’un article de Dave Bodnar (datant du 16 juin 2016) qui a eu la gentillesse de répondre au message lui indiquant qu’on adaptait son montage.
http://trainelectronics.com/DCC_Arduino/DCC++/Throttle/
Nota : en anglais, throttle veut dire accélérateur (mettre les gaz)
Voir l’adaptation de ce projet à la figure 1. Un Nano remplace le Pro Mini, ce qui permet la connexion directe du clavier.

Comme indiqué dans l’article Ma première centrale DCC la mini centrale en question peut être pilotée par n’importe quel dispositif envoyant les codes DCC++ sur l’entrée RX de l’Arduino UNO.

C’est le cas du présent montage qui utilise un Arduino Nano pour générer les codes correspondant aux commandes créées à partir d’un encodeur pour la vitesse et le sens, et à partir d’un clavier 12 touches (3x4) pour les fonctions (de 0 à 9) et les envoyer à la centrale.

Possibilités de cette manette :

Cette manette permet de conduire au choix de une à quatre locomotives. On peut en modifier l’adresse à tout moment (donc piloter entièrement votre parc de 200 locomotives). Ces adresses sont stockées dans l’Arduino Nano et sont donc conservées après coupure de l’alimentation.
Les adresses des locomotives sont saisies avec le clavier 3x4. (Noter qu’on ne modifie pas les CV des locomotives)

L’écran LCD permet d’afficher la vitesse de la locomotive en cours, sa direction, son adresse DCC, et l’état de ses fonctions.

Trois fils relient la manette au contrôleur DCC++ : Vin, GND et données :
Les Vin et GND sont reliés respectivement et le RX du Nano va au TX du UNO.

Matériel nécessaire :

Un Arduino Nano (broches soudées avec ICSP)
Un écran LCD 16x2 avec interface I2C
Un module codeur rotatif + bouton
Un clavier 3x4 en matrice
9 câbles DuPont femelle / femelle 10 cm
3 câbles DuPont femelle / mâle 20 cm

JPEG - 153.1 ko
JPEG - 154 ko

Notez le circuit d’interface I2C au dos de l’afficheur LCD et le potentiomètre (cube bleu) pour ajuster le contraste.

Réalisation :

Figure 1
Figure 1

On câble :

DuPont femelle / femelle sauf pour l’alimentation depuis le UNO de la centrale : mâle / femelle

le clavier : Pour éviter d’inverser le connecteur du clavier, il faut que le coté du connecteur repéré par un minuscule triangle (correspondant au contact 1 de la nappe) soit enfiché broche 5 et que le coté opposé soit enfiché broche 11. Le coté du contact 1 correspond aux touches 1, 4, 7 et *. (voir Figure 1)

le codeur rotatif : juste à coté SW → 4, puis DT → 3 et CLK → 2
Le guide de la nappe plate du codeur peut gêner un peu pour la pin 4, l’incliner légèrement pour la mise en place.
Comme on manque de broches, on utilise les broches VCC et et GND du connecteur ICSP :
Le VCC, broche 2 de l’ICSP est du coté du Vin, et le GND broche 6 de l’ICSP est du coté du TX, les deux sont sur la rangée de trois broches coté intérieur du Nano.

Connecteur ICSP sur Nano
Connecteur ICSP sur Nano

l’afficheur LCD : on peut utiliser la rangée de pins du Nano avec les entrées analogiques (A0 .. A7) puisqu’il y a 5V et GND au bout. Donc GND → GND, VCC → 5V, SCL → A5, SDA → A4.

l’alimentation : on alimente le Nano via son Vin à partir du Vin du UNO.
Donc GND → GND, Vin → Vin, TX (Nano)→ RX(UNO)

JPEG - 135.7 ko

Programmation :

Vous avez déjà installé l’IDE Arduino avec l’article Ma première centrale DCC
et savez Installer une bibliothèque.
Vous placez le répertoire du programme décompressé dans votre répertoire de sketches. (ci-dessous) et vous double-cliquez sur throtlle00.ino.
Télédeversez le dans votre Nano.

Programme Throttle

Vous devez avoir installé les bibliothèques :

  • Wire
Wire.zip
  • LiquidCrystal2
LiquidCrystal.zip

qui contiennent :

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

Vous pouvez constater un conflit causé par la liaison série entre le Nano et le UNO. Si vous avez ce problème qui se traduit par l’échec du téléversement du sketch, il faut débrancher la liaison série vers le UNO avant de le lancer.

Dave Bodnar propose à ceux qui ont des difficultés avec les bibliothèques nécessaires pour ce montage le téléchargement de celles qu’il a utilisées avec succès, dont sont extraites celles ci-dessus.

Utilisation :

Allumez l’alimentation et vous verrez l’écran d’accueil :

JPEG - 171.3 ko

Bon, si vous ne voyez rien, c’est peut-être normal. Regardez l’écran légèrement incliné et vous devinerez éventuellement le texte. Il s’agit simplement du réglage du contraste avec le petit ajustable au dos de l’écran. Essayez de le régler. De toute manière, c’est à faire pour avoir une lecture optimale.
Si vous n’avez vraiment pas de chance, il se peut que l’adresse I2C de votre écran ne soit pas 0x3F prévue dans le programme mais 0x27. Vous pouvez faire la modification vous-même en recherchant 0x3F et en le remplaçant par 0x27.

Ce premier écran est suivi de cet autre :

JPEG - 193.5 ko

La manette peut gérer jusqu’à 4 locomotives. On utilise la touche # pour changer la locomotive contrôlée. Si vous n’utilisez que 2 locomotives, il peut devenir fastidieux d’appuyer plusieurs fois sur le bouton # pour ignorer les adresses de locomotive inutilisées. Pour éviter ce problème, vous pouvez limiter le nombre de locomotives que la manette contrôlera à 4, 3, 2 ou 1. Pour effectuer ce changement, appuyez sur le bouton de l’encodeur rotatif lorsque vous allumez la manette. Le nombre d’adresses actives s’affichera et il vous sera demandé d’appuyer sur 1, 2, 3 ou 4 sur le clavier pour définir le nouveau nombre de locomotives. Le nombre d’adresses actives que vous choisissez sera stocké dans la manette et sera conservé jusqu’à ce que vous le changiez.

Appuyez sur le bouton # à droite pour sélectionner l’une des 4 adresses de locomotives qui peuvent être stockées. Sur la photo ci-dessous, la locomotive 4 a été choisie. Avant utilisation, les adresses stockées valent 255.

JPEG - 230.6 ko

Appuyez sur le bouton * à gauche pour entrer l’adresse de la locomotive à 4 chiffres. Notez que les 4 chiffres doivent être entrés. Par exemple pour l’adresse 12 appuyez sur 0 puis 0 puis 1 puis 2.

JPEG - 186.4 ko

Tournez le bouton du codeur vers la droite (dans le sens des aiguilles d’une montre) pour augmenter la vitesse vers l’avant ou vers l’arrière. Appuyez sur le bouton du codeur pour inverser le sens de la locomotive.

JPEG - 162.1 ko

Cet écran montre que la vitesse V est de 0 et la direction > est vers l’avant. La locomotive est la n°4 et son adresse est 12

JPEG - 174.4 ko

Ici la locomotive #1, avec l’adresse 68, avance > à une vitesse de 0 (à l’arrêt).

Appuyer sur le bouton * éteindra le contrôleur en arrêtant tous les trains. Dès que vous démarrerez un train avec le codeur, le courant sera rétabli.

Les fonctions sont commandées par le clavier avec un décalage :
F0 par 1 jusqu’à F8 par 9. La rangée de 0 sur le LCD reflète la position des fonctions.

Où acheter :

Où acheter ? une liste de fournisseurs, et ci-dessous des liens directs :

Problèmes potentiels et limites :

On utilise ici des câbles DuPont. Ils ont la fâcheuse tendance à sortir de leur logement sans prévenir surtout si ils sont utilisés plusieurs fois. Il faut donc les surveiller de près.
Par ailleurs du fait de l’utilisation de la liaison série, on ne dispose que d’une manette.

Un exemple d’intégration :

L’ensemble pourra être mis dans un boitier 145x68x35, découpe et perçage requis.
La face inférieure du clavier est adhésive.

JPEG - 95.7 ko
JPEG - 127.6 ko

Évolution de cette manette :

Vous reconnaitrez le principe de cette manette dans Une manette simple et autonome pour LaBox, plus élaborée, mais tout à fait capable de fonctionner avec Ma première centrale DCC. Vous aurez peut-être envie de la réaliser.

Les difficultés que vous pouvez rencontrer :

  • les fils DuPont qui ne tiennent pas bien lors des manipulations.
  • les bibliothèques qui ont évolué.
  • l’adresse de votre écran oled qui diffère de celle du programme.

15 Messages

Réagissez à « Ma première manette DCC (1) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Résistances, kézako ?

Les cartes Teensy

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servomoteur

Les encodeurs en quadrature

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (2)

Le microcontrôleur ATtiny45 (3)

Le microcontrôleur ATtiny45 (4)

Le microcontrôleur ATtiny45 (5)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (7)

Le microcontrôleur ATtiny45 (8)

Le microcontrôleur ATtiny45 (9)

Le microcontrôleur ATtiny45 (10)

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Choisir sa carte Arduino

Salade de broches

Une station DCC complète, polyvalente et économique avec JMRI.

Écran couleur tactile Kuman

Capteurs à effet Hall

Programmation des ATtiny Digispark

Une station DCC minimale avec boutons de commande et écran Oled

Le Raspberry Pi Pico

Signalisation et sonorisation du va-et-vient pour deux trains

Configurateur de CV sur base de la station DCC minimale

Les derniers articles

Configurateur de CV sur base de la station DCC minimale


msport

Signalisation et sonorisation du va-et-vient pour deux trains


msport

Une station DCC minimale avec boutons de commande et écran Oled


Dominique, msport

Le Raspberry Pi Pico


Jean-Luc

Ma première manette DCC (2)


msport

Ma première manette DCC (1)


msport

Ma première centrale DCC


msport

Programmation des ATtiny Digispark


Dominique, msport

Salade de broches


Thierry

Capteurs à effet Hall


Christian

Les articles les plus lus

Commande de moteur à courant continu

Une station DCC complète, polyvalente et économique avec JMRI.

Programmation des ATtiny Digispark

Ma première manette DCC (1)

Capteurs à effet Hall

Les diodes classiques

La carte Arduino Uno

Le Raspberry Pi Pico

Ma première manette DCC (2)

Ma première centrale DCC