Interface pour train électrique

Train Miniature

Voici la maquette sur laquelle j'ai travaillé, le projet était une utilisation du train électrique relativement aisé avec un afficheur lcd et quelques boutons.

Pour répondre à ces problématiques, j'ai conçu une interface qui devait permettre d'utiliser le train de manière manuelle mais également automatique. l'objectif était également de faire circuler plusieurs trains dans le circuit, les faire avancer et reculer, les amener dans différentes voies de garage. Enfin, elle devait aussi être facilement mis à jour en USB.

Je me suis donc pencher sur cette réalisation et je suis donc partie sur un Atmega32 avec 32 kb de code.
Concernant la partie mise à jour en USB,  j'ai utilisé un bootloader USB HID écrit avec la librairie V-USB.
Le programme étant lui écrit en assembleur.

Le schéma :

Le schéma de cette interface est composé de trois parties :

la première la partie micro-contrôleur :

 interface_train_carte_maire

télécharger le shéma en pdf

la deuxieme la partie carte relais puissance :

carte de puissance

télécharger le shéma en pdf

la troisième, la partie afficheur lcd et boutons : 

carte d'affichage

télécharger le shéma en pdf

toue cette partie est réalisé avec kicad.
télécharger le dossier en .zip

Le programme :

J'ai écrit un premier programme en C que j'ai très vite abandonné par manque de place pour tout ce que j'avais à faire. Je l'ai donc réécrit en assembleur. Mais certaines parties du code seraient à revoir, comme la gestion de l'encodeur et la partie auto ...
Je l'ai mis sur github afin de pouvoir le réutiliser si quelqu'un le souhaite.

voici le fichier hex du microcontroleur : modelisme_fero_V3.hex

Le bootloader USB HID:

afin de permettre la programmation et l'évolution de l'interface de manière simple, j'ai utilisé un Bootloader USB HID basé sur une bibiothèque écrite en C pour les microcontroleurs Atmel : V-USB.

je me suis confronté au problème de compilation du code pour l'AtMega32.

  • il faut définir la plage que va utiliser le bootloader,
  • définir les fusibles afin que le contrôleur sache qu'il y a un bootloader.
  • et enfin compiler pour les registres de l'atmega 32

J'ai utilisé pour cela AVRDude qui est un compilateur en ligne de commande.

Les Photos :

voici quelques photos de l'interface réalisée :

interface controlleur

carte comprenant l'AtMega32, l'interface de programmation USB, l'alimentation 5V et les différentes connexions avec les autres cartes.

 

carte relais

carte comprenant les différents relais pour les cantons, les transistors moteurs et l'inversion du sens de déplacement du train.

carte afficheur

carte comprenant l'afficheur lcd 4 lignes 20 charactères, l'encodeur et les 3 boutons. ( l'interface homme / machine )

Les manques :

  • une carte d'optocouplage entre la carte du microcontrôleur et la carte des relais afin d'éviter les interférences.
  • la gestion de l'encodeur n'est pas bonne. J'ai appris après coup les différences qu'il peut y avoir dans les encodeurs. ( entre chaque cran, suivant les encodeurs, il y a 1, 2 ou 4 pas de passés. )

 

N'hésitez pas à me dire si vous voulez des précisions et que je complète l'article.

Add new comment