Ma première manette pour les aiguillages DCC

. Par : msport. URL : https://www.locoduino.org/spip.php?article317

Vous avez réalisé Ma première manette DCC (1) elle fonctionne, vous en maitrisez les principes. Vous avez même pu en réaliser plusieurs qui fonctionnent ensemble grâce aux modules radio de Ma première manette DCC (2).
Mais le DCC ce n’est pas seulement pour piloter des locomotives.
Ce nouvel article se propose de décrire les éléments d’une manette simple pour utiliser Ma première centrale DCC et commander des aiguillages à solénoïdes (bobines).
Et ce, également en sans fil (radio).
Cette série d’articles se voulant avant tout pratique, le programme sera donné tout fait et commenté en anglais. Si des questions apparaissent, le forum permettra d’échanger.

Les réseaux dans les clubs sont généralement équipés d’aiguillages à servomoteur car plus silencieux, plus discrets (le moteur est sous la table) mais l’amateur dispose souvent d’un matériel hérité qu’il aimerait bien aussi utiliser maintenant qu’il a découvert le numérique. Les deux articles qui viennent seront l’occasion de commander ces aiguillages à partir d’une petite manette qui enverra ses ordres à un décodeur dédié via le DCC généré par une centrale.

Ma première manette
Ma première manette

Dans le cahier des charges,

  • Une réalisation mono fonction, donc simple à comprendre.
  • en utilisant un programme déjà fait.
  • un coût minimal, en test sur table puis avec un circuit imprimé
  • du matériel que l’on trouve facilement
  • un montage sur table qui prend 30 mn (suivant standard IKEA)
  • autonome sur batterie en version circuit imprimé
  • sans fil (radio)
  • trois versions possibles :
    1. une expérimentale sur table avec un bread board (sans soudures)
    2. une en boitier donc fiable avec fils soudés. (avec batterie et radio)
    3. une sur circuit imprimé à intégrer en boitier.

Prérequis :

  • comme pour les articles précédents :
  • 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 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 une adaptation de l’article de Dave Bodnar (datant du 16 juin 2016) qui a déjà servi pour Ma première manette DCC (1)
Voir l’article de Dave Bodnar
Le schéma de ce projet se trouve à la figure 1. Un Nano remplace le Pro Mini, ce qui évite le circuit interface pour la programmation d’un Pro Mini.

Cette manette transmet ses ordres à la mini centrale de l’article Ma première centrale DCC en envoyant les codes DCC++ sur l’entrée RX de l’Arduino UNO via un module radio HC12.

Le présent montage utilise un Arduino Nano pour générer les codes correspondant aux commandes créées et sélectionnées à partir d’un encodeur et les envoyer à la centrale.
Cet encodeur permet de choisir l’adresse de l’aiguillage et puis par appui sur son bouton d’envoyer la commande.

Greg E. Berman a codifié les commandes pour les aiguillages de la manière suivante
< a ADDRESS SUBADDRESS ACTIVATE >.
Sont donc nécessaires :
pour l’adresse 1 : <a 1 0 0> pour normal puis <a 1 0 1> pour dévié.
pour l’adresse 2 : <a 1 1 0> pour normal puis <a 1 1 1> pour dévié.
pour l’adresse 3 : <a 1 2 0> pour normal puis <a 1 2 1> pour dévié.
pour l’adresse 4 : <a 1 3 0> pour normal puis <a 1 3 1> pour dévié.
pour l’adresse 5 : <a 2 0 0> pour normal puis <a 2 0 1> pour dévié.
pour l’adresse 6 : <a 2 1 0> pour normal puis <a 2 1 1> pour dévié.
pour l’adresse 7 : <a 2 2 0> pour normal puis <a 2 2 1> pour dévié.
pour l’adresse 8 : <a 2 3 0> pour normal puis <a 2 3 1> pour dévié.
pour l’adresse 9 : <a 3 0 1> pour normal puis <a 3 0 1> pour dévié.
Etc.
En effet, la commande directe correspond à l’envoi d’un 0 à la sous-adresse et la commande déviée à l’envoi d’un 1 à la sous-adresse.
Ces ordres vont être proposés alternativement sur l’afficheur en les faisant défiler par rotation du codeur.
Par appui sur le bouton du codeur, la manette va envoyer la commande affichée à la centrale via le lien série, centrale qui les traduira en bits DCC sur la voie.
On trouvera le détail de cette commande particulière dans :

Commandes pour DCC++

Possibilités de cette manette :

Cette manette permet de commander les aiguillages suivant le standard NMRA (avec adresse / sous-adresse) : l’adresse de l’aiguillage puis normal / dévié sont choisis avec l’encodeur.
Le bouton de l’encodeur lance la commande.

L’écran Oled permet d’afficher l’adresse de l’aiguillage et de choisir si on le commande en normal ou en dévié.

En complément, une batterie 3,7 V dispose d’un chargeur et d’un step up (module élévateur) à 5V pour l’alimentation de l’Arduino Nano.

Le module HC12 est alimenté en 3,3 V par le Nano comme recommandé par la notice constructeur.

Matériel nécessaire :

Un Arduino Nano (broches soudées y compris l’ICSP si montage sur table)
Un écran Oled 0,96" avec interface I2C
Un module codeur rotatif + bouton
des câbles DuPont femelle / femelle 10 cm
un module radio HC12

JPEG - 109.9 kio

Réalisation sur table :

Fig1 : Schéma
Fig1 : Schéma

On câble avec des fils DuPont femelle / femelle :

montage sur table
montage sur table

le codeur rotatif : juste à coté SW → 4, puis DT → 3 et CLK → 2
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 Oled : on utilise la rangée de pins du Nano avec les entrées analogiques (A0 .. A7), il y a 5V et GND au bout. Donc GND → GND, VCC → 5V, SCL → A5, SDA → A4.

coté pins analogiques
coté pins analogiques
détail coté pins analogiques
détail coté pins analogiques

le module radio HC12 :

Donc GND → GND, 3V3 → VCC, TX (Nano)→ RX(HC12)

coté pins digitaux
coté pins digitaux

L’alimentation : on alimente le Nano par l’USB pour les tests (ensuite via son 5 V).

Programmation :

Vous avez déjà installé l’IDE Arduino avec l’article Ma première centrale DCC

Vous placez le répertoire du programme décompressé dans votre répertoire de sketches. (ci-dessous) et vous double-cliquez sur throttle_encoder_Aiguillages01a.ino.
Téléversez le dans votre Nano.

Throttle_encoder_aiguillages01a.zip

Vous devez disposer des bibliothèques voir : Installer une bibliothèque

  • Wire
  • SSD1306ascii
  • Encoder
  • Bounce2

Utilisation :

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

Accueil
Accueil

Ce premier écran est suivi de cet autre :

Version
Version

Tournez le bouton du codeur vers la droite (dans le sens des aiguilles d’une montre) pour augmenter l’adresse ou à l’inverse pour la diminuer. On fait alterner Direct ou Dévié pour chaque adresse.

JPEG - 52.3 kio

Appuyez sur le bouton du codeur pour lancer la commande. "COMMAND" s’affiche.

Commande
Commande

Il ne vous reste plus qu’à vérifier que l’ordre est bien exécuté par Mon premier décodeur pour les aiguillages DCC

Mise en boitier :

Vous remplacerez les fils DuPont par du fil à souder.
Matériel à prévoir :

  • un boitier 100x60x25mm,
  • une prise 3,5 mm
  • un interrupteur 8x8 mm avec bouton
  • un module chargeur pour accus
  • un module step up (élévateur) de 3,7 à 5 V.
  • ou un module combinant les deux.
  • une batterie 3,7V de 500 à 1000 mAh
  • du fil (le 24AWG convient bien) et soudure (1 mm p.e.)
  • un câble USB A vers fiche 3,5 mm pour la recharge.
  • de la gaine thermorétractable autant que de besoin.

Intégration :

L’ensemble sera mis dans le boitier que vous aurez découpé et percé.
On mettra une goutte de colle chaude (genre Pistocolle) à chaque coin de l’Oled placé en face de la découpe du boitier.
Perçage au diamètre 7 mm pour le passage du canon de l’encodeur.
Perçage au diamètre 7 mm pour le passage de la prise 5 V.
Perçage au diamètre 7 mm pour le bouton de l’interrupteur.
Perçage au diamètre 4 pour la fiche 3,5 mm.
La prise 5V sera collée au fond du boitier avec de la Loctite
De même pour l’interrupteur.
Le Nano sera immobilisé sur le couvercle par un petit morceau d’adhésif double face.
Vous utiliserez de la gaine thermorétractable pour isoler le module HC12 et son antenne.

JPEG - 284.1 kio
JPEG - 195.5 kio

Circuit imprimé :

Bon, vous n’aimez les spaghettis qu’à la bolognaise ? Vous pouvez utiliser le circuit imprimé ci-dessous avec seulement les composants qui servent pour ce montage (en particulier les boutons poussoirs ne seront pas montés). Le montage est expliqué dans l’article Une manette simple et autonome pour LaBox, manette qui est similaire. Il y a deux sockets pour l’oled, car on trouve deux types avec VCC et GND inversés. Choisissez le bon socket en fonction de votre modèle d’oled.
On a réutilisé le circuit imprimé d’une manette simple parce que les commandes chez JLCPCB conduisent à la livraison de 5 exemplaires. Donc chacun dispose des circuits nécessaires même après avoir dépanné d’autres modélistes.

Circuit imprimé pad66
Circuit imprimé pad66

Montage du circuit imprimé

Pour avoir l’affichage de la tension de la batterie au démarrage, il faut faire un pont à la place de R2.

R2
R2

On commence par les composants les plus bas pour terminer par les plus hauts. Et donc terminer par les supports du Nano, pour faciliter la soudure des composants qui sont placés en dessous. Le condensateur en dessous doit faire moins de 10 mm de haut.
Le circuit chargeur est soudé en l’air (2 mm) avec des queues de résistance en six points.
Avant d’installer le Nano et l’oled, vérifiez que vous avez 5 V entre les broches 5 V et GND du support du Nano - en fermant l’interrupteur.
Si le bouton du codeur ne fonctionne pas, il faut souder une 10 Kohm sur R4.
On soudera deux fils de couleur au dos du circuit sur les pads pour la batterie et utilisera un header mâle deux points comme connecteur.
On utilisera trois positions de support tulipe pour rehausser l’interrupteur. (deux fois).
Le mini step-up sera soudé verticalement à l’aide d’un header coudé trois points.

Le matériel au complet
Le matériel au complet
Boitier ouvert
Boitier ouvert
Version
Version
Dévié
Dévié
Normal
Normal

Ma première manette

Perçage pour la prise chargeur
Perçage pour la prise chargeur

Question d’encodeur rotatif

Vous trouverez des précisions sur leur fonctionnement dans l’article Les encodeurs en quadrature.

Il existe différents encodeurs rotatifs. Vous choisirez d’abord celui dont la tige de commande correspond au bouton que vous avez choisi (cannelé ou à méplat) et à la longueur dépassant au dessus du couvercle.

De plus, le nombre d’impulsions délivré à chaque cran peut être simple ou double. Avec le modèle à méplat de la photo des composants, le programme ci-dessous est bien adapté. Si l’affichage Normal / Dévié nécessite deux crans, utilisez le programme proposé en début d’article.

throttle_encoder_Aiguillages03

Les fichiers gerber

Ces fichiers vous permettent de commander le circuit imprimé chez jlcpcb.com (par exemple). Vous aurez cinq exemplaires en une quinzaine de jours pour environ 6€ en faisant le choix de PostLink Registered Mail.

Fichiers gerber pad66

Le schéma du circuit imprimé

Nota : L’interrupteur est mal représenté, c’est un défaut de la librairie.

Schéma du pad66
Schéma du pad66

Découpe du boitier

On imprimera à l’échelle 1 le circuit imprimé pour positionner les perçages du codeur et de l’interrupteur en les marquant à travers le papier. La découpe pour l’afficheur dépendra du modèle retenu, donc de la position de son connecteur. Celui qui a GND à gauche utilise le support du bas. Perçage à 4 mm pour le connecteur du chargeur de batterie. Je recommande de souder un jack de 3,5 mm plutôt qu’un jack de 5,5 mm pour éviter de griller le chargeur avec une alimentation 12 V. Mais cela reste possible si vous avez le gout du risque.
On utilisera le circuit imprimé comme gabarit pour percer les trous dans le fond du boitier pour des vis M3 x 10 à têtes fraisées. Ce qui permettra d’éviter de les faire dépasser après fraisage du trou à 90°. Des vis en nylon sont bien adaptées. Les trous correspondants dans le circuit imprimé seront taraudés à M3. Quatre petites entretoises de 3 mm d’épaisseur (pas plus) sous le circuit imprimé permettront la fermeture du boitier, avec le couvercle en contact avec la prise USB du Nano.

Où acheter :

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

Option mise en boitier :

Problèmes potentiels :

On utilise dans la version sur table 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.
Le fer à souder est donc conseillé pour la réalisation.

A noter que certains Nano ne parviennent pas à détecter le contact du poussoir de l’encodeur. Probablement à cause d’une résistance de pull-up interne inadaptée.
Dans ce cas, si votre module encodeur n’en dispose pas ou si vous utilisez un encodeur en solo, il faut en mettre une résistance de pull-up en plus. Il s’agit d’une résistance de rappel de 10 Kohm au +5 V telle que l’on voit sur la photo du boitier ouvert.

Codeur
Codeur

Les modules codeur qui comportent trois résistances de 10 Kohms ne posent pas de problèmes. (photo Codeur) D’autres ont un emplacement libre pour cette résistance de 10 Kohm CMS. On pourra donc l’ajouter (code 103, taille 1206) ou y placer une 1/8W plus facile à manipuler. Une telle résistance traversante a été prévue sur le circuit imprimé pour éviter la soudure d’un CMS.

Évolution de cette manette :

Vous reconnaitrez le principe de cette manette décrit 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.

La suite :

Mon premier décodeur pour les aiguillages DCC

Le programme de cette manette est petit. Il fonctionne très bien sur un Nano équipé d’un ATmega 168, moins cher qu’un ATmega 328.