lundi 23 juillet 2007

Go/Nogo 16c57

En furetant sur le ouaibe ce week end, j'ai appris que le 16c57 ne se programmait pas du tout comme son remplaçant, le 16f57, dont il partage cependant les mnémoniques, la connectique, et autres caractéristiques (j'aime bien les rimes en "ique").
En effet, alors que presque tous les pics se programment grâce à une interface série (je parle ici de l'interface du pic, pas de celle reliant le programmateur à l'ordinateur), les 16c5x se programment en parallèle. Et les programmateurs de PIC les plus courant ne gèrent pas ce mode de programmation du PIC.

J'ai donc 2 solutions:
  • Trouver un programmateur de PIC en mode parallèle
  • Abandonner mes 147 16c57, et choisir un autre modèle de PIC
1) trouver un programmateur de PIC parallèle.
2 programmateurs sont recommandés par Microhip:
- le PicStart plus, que l'on trouve encore sur les sites de commerce de matériel électronique (autour de 330€!!! ouch).
- Le ProMate II, que je n'ai pas réussi à trouver.

A ceux là, on peut ajouter le PIC-02, que l'on trouve autour de 60€, et qui se programme via IC-Prog. Problème: si le PIC-02 indique bien que le 16c57 est supporté, IC-Prog ne semble pas le supporter.

2) Abandonner le 16c57
Cette solution a des avantages et inconvénients.
Au rang des "Pour", le fait que je n'aie pas investi une fortune dans les 16c57 (11€ port compris). De plus, cela me permettra de vraiment choisir le PIC qui correspondra à l'application que je veux en faire...
Au rang des "Contre", le fait que pour remplacer mes nombreux 16c57, j'aurai du mal à retrouver un prix aussi concurrenciel... quoique ;)

Je me laisse encore quelques jours pour décider...

Mise à jour du 24 juillet 2007: sur eBay, on trouve un grand nombre de programmateurs "Top2004" qui sont universels, et permettent de programmer les 16C57 (et plein d'autres milpapattes sympathiques tels ques des eproms, des µcontrôleurs Atmel, etc.). Je verrai à mon retour de vacances si j'investis...

vendredi 20 juillet 2007

Fonction des cantons

Le cantonnement permet de découper le réseau en sections, qui ont pour but d'empêcher les trains de se rattraper les uns les autres.

Les modules de pilotage de chaque canton devront assurer les fonctions suivantes:
  • Alimentation en énergie du canton, avec modulation pour faire varier la vitesse du train (alimentation de type PWM)
  • Récupération des informations des 2 cantons suivants, pour afficher la bonne signalisation (carré, avertissment, libre)
  • Fourniture aux 2 cantons précédents de l'état d'occupation du canton
  • Détection d'un train aux entrées du canton
  • Identification de ce train par lecture de code à barre
  • Routage automatique du train des N entrées vers les M sorties du canton, en positionnant correctement les aiguillages du canton (la table de routage du canton sera stockée en local sur le module de pilotage du canton, le routage des trains sera fourni par le module de contrôle principal - MCP -, la "centrale" de notre système)
  • Affichage de la signalisation locale du canton (sémaphores aux sorties)
Et tout cela, si possible, avec un unique 16C57...

La "gravure" des 16{C|F}57

Le programmateur de PIC dont nous disposions à la maison ne permettait d'écrire que sur des 16C84. Nous avons donc décidé d'acheter un programmateur plus évolué, permettant de graver à peu près n'importe quel PIC.

Notre choix s'est porté sur l'easyPic4 de chez mikroElektronica. Ce matériel nous permettrait à la fois de programmer nos PICs, et de les tester grâce à une platine de test très complète (boutons pour les entrées, LEDs, afficheurs 7 segments et LCD pour les sorties).

Le 16C57 est un DIP28. C'est à dire qu'il s'agit d'un circuit intégré enchassé dans un boitier plastique rectangulaire, et dont sortent 28 "pattes". Un premier problème apparait: le boitier du 16C57 est un boitier large (0.600"), alors que le support tulipe présent sur l'easyPic4 est un boitier étroit (0.300"). Il me fallait donc un adaptateur pour pouvoir connecter physiquement mon CI sur le programmateur.
Mon choix s'est porté sur un adaptateur DIL/DIL 28 broches de référence BE9116. Malheureusement (ou heureusement, nous le verrons par la suite), ce composant semble très difficile à trouver, les détaillants ne le référencent pas ou l'annoncent "épuisé", tandis que les grossistes ou semi-grossistes, tels radiospares, refusent de ne vendre qu'un exemplaire de l'adaptateur.
Puis, en feuilletant la datasheet du 16C57, je me suis aperçu que le brochage du composant est totalement différent de celui d'un autre PIC 28 broches plus récent. Il nous a fallu donc réaliser un adaptateur plus compliqué, avec plein de fils partout...

Les microcontrôleurs, OK, mais lesquels ?

Il a donc fallu faire un choix de microcontrôleurs à utiliser.

J'avais déjà un programmateur de PIC (µcontrôleur de la société Microchip) à la maison, datant d'une époque où j'avais envie de "m'y mettre". Et il devait même me rester un 16F628... La décision était prise, ce sera du PIC.

Quelques jours plus tard, je gagnais et reçus un lot de près de 150 PIC 16C57 sur eBay, pour un prix dérisoire. La plupart des fonctions électroniques du réseau devront donc être réalisées à la base de ce composant. Pour les fonctions demandant des caractéristiques différentes (nombre d'E/S plus important, communications RS232 ou USB, etc.), il nous faudra trouver un autre composant.

Voici la liste des pics dont je dispose déjà:
  • pic 12F675 (2)
  • pic 12F683 (1)
  • pic 16C57 (147)
  • pic 16F57 (3) - les 16C57 n'étant programmables qu'une fois, il me fallait des F (Flash) pour le développement.
  • pic 16F84 (1)
  • pic 16F628 (1)
  • pic 16F877 (1)
  • pic 16F877A (4)
  • pic 18F4550 (2)
Bref, le choix est déjà relativement important, et permettra de nombreuses possibilités.

Les premiers choix électroniques

Pour le pilotage automatisé de notre réseau, plusieurs possibilités s'offrent à nous:
  • Acheter des modules et systèmes tout faits
  • Créer nos modules et les interfacer avec un ordinateur
  • Créer nos modules, totalement indépendants
La première solution ne nous satisfait pas. En effet, tant qu'à investir dans du matériel, et dans l'électronique, autant que cela nous serve à quelque chose, et notamment à raffraichir nos connaissances électronique datant de l'école, et apprendre à nouveau.

La deuxième solution s'approche déjà un peu plus de nos envies. Mais les ordinateurs, nous travaillons dessus toute la journée. De plus, Cela ne nous enthousiasmait pas de mobiliser un ordinateur très consommateur de courant pour piloter le réseau. En passant, un de nos rèves serait de pouvoir alimenter tout le réseau en énergie "propre" (solaire photovoltaïque sur batteries)...

Naturellement, c'est sur la dernière solution que notre choix s'est porté. Nous utiliserons donc des modules de notre conception, à base de microcontrôleurs, pour gérer l'électronique de notre train.

Au commencement...

Les premiers contacts que j'eus avec un petit train électrique datent de ma plus tendre enfance, lorsque mon père sortit son train à l'échelle O, un vénérable Hornby que je devrais récupérer un jour ;)

Ensuite, j'ai du avoir un jouef... je ne me souviens plus que du transformateur bleu qui a longtemps trainé dans un des placards de ma chambre.

En voyage chez mes correspondants allemands, j'y ai découvert le formidable réseau du père de mon correspondant, qui avait aménagé dans sa maison une cave pour assouvir sa passion. Là encore, mes souvenirs sont très vagues, et je me souviens juste que son réseau me paraissait immense, et des batteries de boutons noirs et rouges qui permettaient d'actionner les aiguillages.

Plus tard...
Beaucoup plus tard...
Beaucoup, beaucoup plus tard...
Mon beau-frère, Jacques, nous emmena, mon épouse et moi-même, au salon du modélisme. Là, nous prîmes la décision de construire un petit réseau chez nous. La place étant restreinte - nous étions en appartement - notre choix se porta sur l'échelle N.

Il y a quelques mois, lorsque nous avons décidé l'aménagement du grenier, nous avons émis l'idée d'y installer enfin un réseau, certainement en configuration "tour de pièce".

Et puis, nous voulions avoir un contrôle intelligent des trains, tout en continuant à pouvoir piloter ces trains de façon manuelle. L'échelle N nous interdisait quasiment d'ajouter des décodeurs numériques aux motrices, et de toute façon, nous préférions créer notre système de toute pièce. Notre petit train sera donc un "petit train électronique" à notre sauce.

Préface

Bonjour !

Cela fait quelques années que, dans mes tiroirs, sommeillent quelques locomotives, ouagons, rails, aiguillages, etc. de petits trains à l'échelle N.

Depuis l'aménagement des combles, nous avons enfin une place pour créer notre réseau.

Ce blog est là pour enregistrer au fur et à mesure les idées, réalisations, états d'avancement de ce projet.