lundi 3 avril 2017

Arduino, ATmega328pb, Raspberry Pi et le propjet Arbalet (suite).

Suite des expérimentations sur ma carte compatible Arduino, équipée d'un processeur ATmega328pb.

L'avantage de ce processeurs est de posséder un peu plus de périphériques que le modèle 'p' équipant de base les Arduino Uno, notamment, un deuxième port série et SPI, etc...

Pour rendre cette carte 'pleinement' utilisable sous l'environnement IDE Arduino, il est 'juste' nécessaire d'importer la définition de la carte R4 d'Elektor avec laquelle ma carte est compatible.

Dès lors, il suffit 'presque' d'utiliser une bibliothèque de gestion de bandeaux de LEDs pour arriver très rapidement à un résultat probant :



Contrairement à beaucoup de projet utilisant les bandeaux de LEDs, je n'ai pas utilisé la bibliothèque développée par Adafruit mais plutôt une version plus performante à même de gérer différents types de LEDs de façon très efficace, la librairie Fastled.

Cette librairie est d'autant plus intéressante qu'elle est développée non seulement pour les cartes de type Arduino Uno à base de processeur 328p, mais aussi pour d'autres plateformes comme l'ARM.

Et cela tombe bien parce que le signal envoyé aux LEDs n'utilise pas une patte reconnue sur les cartes Arduino UNO. J'ai voulu conserver un maximum de possibilité pour cette carte ARPI-MINI, alors j'ai connecté la commande des LEDs sur le deuxième port SPI offert par le processeur 328pb.

Se faisant, j'ai du modifier quelque peu la librairie pour lui faire reconnaitre le port utilisé par mon montage. Quelques recherches dans son source m'ont permis de la configurer pour lui faire prendre en compte la patte du processeur.

Au delà du clignotement de quelques LEDs du bandeau, il est très facile avec cette librairie, d'obtenir un effet plus... dynamique :


L'essai est concluant. Il reste maintenant à tester la communication série entre la carte Raspberry PI et la carte compatible Arduino.

Je ne l'ai peut-être pas indiqué (je pense même que non), mais l'objet (principal) de cette carte Arduino est d'initialiser et de 'faire jouer' les LEDs pendant la phase de boot de la carte Raspberry. Une fois ce boot effectué, la Raspberry 'devra' envoyer une instruction série à la carte Arduino pour lui demander de 'switcher' le signal de commande du bandeau de LEDs de la carte Arduino VERS la carte Raspberry et ainsi donner la main à l'application tournant sur la Pi!

24 juin 2017 : Le sujet a été quelques peu en 'stand-by' depuis deux mois, mais je viens de tester avec succès les deux bus 'fond de panier' destinés à grandement faciliter le montage des Strips LEDs sur la table. Ces bus comportent quelques légers bugs qui ont été corrigés à la main sur l'exemplaire présenté ci-après, ainsi que dans les fichiers de CAO, avec aussi quelques améliorations :



A suivre...

mardi 21 mars 2017

SONDAGE!


Bonjour,

Cela fait maintenant presque trois années que j'ai 'ouvert' ce blog dédié plus généralement à ma passion pour l'électronique. J'y traite de différents sujets, disons au fil de l'eau, sur mes thématiques favorites.

Cependant je trouve que tout cela manque un peu d'interactivité. Je présente un sujet et 'vous' le regardez... ou pas.

Or, force est de constater que les statistiques d'accès à ce blog sont en constante évolution depuis sa création, et que je ne suis que très peu en mesure de 'vous' connaître. Je ne possède pas d'informations sur vos motivations, vos envies d'articles, etc etc...

Il me semble donc opportun de vous proposer le petit sondage que vous trouverez en haut de la colonne de droite. Je le 'lance' à partir d'aujourd'hui, le 21 mars 2017, pour une période d'un mois. Je n'ai aucun idée sur sa pertinence tel que je le présente, et sur ce qui pourra en sortir.

J'espère juste que vous serez nombreux à y participer, et vous en remercie par avance.

24 avril 2017 : Pas grand chose à dire sur ce sondage. 5 votes en un mois complet ne permettent absolument pas de tirer une quelconque conclusion. Même avec la meilleur volonté, Poisson n'y peut rien!

Je vais donc continuer à publier des sujets, au fil de mes intérêts. Par contre je ne publierai (en principe) plus sur les dépannages. La raison majeur est que je n'en pratique plus. Le dépannage d'ancien synthétiseurs est beaucoup trop consommateur de temps. J'en ai suffisamment pratiqué ces cinq dernières années pour me rendre compte que cela ne m'apporte plus grand chose en terme de savoir. Je préfère tenter l'aventure de la re-création d'anciennes machines comme le Prophet VS, ou le développement de nouveaux matériels.

La mise à disposition de nouveaux composants analogiques de synthèse (cela reste à confirmer dans les faits), permettent d'entrevoir de nouvelles réalisations avec, espérons-le, autant de fun que dans les années 70-80.

Même réflexion en ce qui concerne le rétro-computing.  La scène redevient dynamique et créative, après presque 3 décennies de muselage et de totalitarisme de la finance. La aussi, la puissance des petits processeurs 'facilement' utilisables permettent d'espérer des développements amusants, accessibles, créatifs, et au prix abordable.

A suivre...

dimanche 19 mars 2017

Arduino, ATmega328pb, Raspberry Pi et le projet Arbalet.


Durant ma participation au MakerFaire de Nantes en juillet de l'année dernière (2016), j'avais Yoan Mollard en voisin de 'stand'.

Yoan est l'initiateur d'une surface pixelisée interactive opensource :





Il est bien-sûr possible de trouver de multiples sources de présentation de ce type d'étude sur Internet, mais le grand intérêt du travail de Yoan est que son projet est en cours d'industrialisation, ce qui permettra d'ici quelques mois d'offrir un kit de montage complet, et le plus simple possible.

Et moi, dans cette affaire? Et bien Yoan m'a contacté il y a quelques semaines pour développer certaines parties du projet et notamment une carte compatible Arduino directement insérable sur une carte Raspberry Pi. La carte Arduino qui se présente pour l'instant sous la forme d'une carte standard, sert à interfacer les commandes entre la Raspberry et les rubans de LEDs.

J'ai donc repris mon étude précédente à base de processeur ATmega328pb pour l'adapter aux nouveaux impératifs. En fait c'est assez simple, il a 'suffit' de retirer ce qui n'est pas utilisé comme le port RS485, l'alimentation à découpage etc etc... et d'adapter le PCB pour un assemblage sur une Pi. Après plusieurs réflexions sur la meilleur façon de faire, le résultat donne ceci : 

La carte 'Arduino' montée sur une Pi.
Tout le challenge de cette étude a consisté à implémenter le juste nécessaire de composants et de fonctionnalités pour répondre au cahier des charges, tout en permettant d'éventuelles extensions. Contrairement à ce que j'ai pu découvrir comme sujets équivalents sur le net, je ne me suis pas servi d'un des ports série de la Pi pour programmer l'Arduino de la carte d'extension.
  • D'une part parce que dans le projet Arbalet, les deux ports séries de la Pi sont utilisés. Le port série matériel est utilisé par le module BlueTooth et le port série 'logiciel', devenu le port série 'standard' de la Pi, est présenté sur son connecteur d'extension.
  • D'autre part parce que le port 'software' de la Pi, utilisé pour la communication avec la carte Arduino, impose de ne pas toucher à la fréquence de fonctionnement du processeur de la Pi. Sans compter qu'il aurait fallu aussi jongler avec les paramétrages de ce port pour tantôt programmer la carte Arduino, tantôt servir de lien de communication entre les deux systèmes.
Ayant eu par le passé, la possibilité d'expérimenter la programmation d'une carte Arduino en se basant sur un circuit d'interface FTDI FT230x très bon marché et de petite taille, j'ai choisi cette option pour simplifier les développements logiciels. 

D'autre part, cette carte d'extension comporte un connecteur de type industriel qui permet d'alimenter non seulement une partie de la carte Arduino, mais aussi la Raspberry Pi, ce qui règle le problème parfois épineux d'un branchement d'alimentation 'solide'.

De plus, pratiquement tous les ports non utilisées du processeur ATmega sont 'servis' sur deux connecteurs d'extension (dont je n'ai pas équipé la carte puisque inutiles dans le projet Arbalet initial), ce qui permettra d'utiliser ces 'extensions' pour d'autres projets.

Enfin, la simplicité de cette carte Arduino provient essentiellement de la disponibilité des DEUX ports série sur le processeur ATmega328pb. L'un d'entre eux est dédié à la programmation Arduino, via l'adaptation USB, l'autre sert de pont de communication avec la Raspberry.

Après le 'flashage' du bootloader compatible Arduino, le téléversement du 'fameux' sketch Blink fonctionne comme prévu. A la seule différence que je n'ai pas connecté la LED utilisateur sur la même broche du processeur que sur les cartes Arduino Uno, mais sur la pin n°7. Ce qui ne change rien à l'affaire...

mercredi 1 mars 2017

Kurzweil K250 et ampoules à LED.

Oui, quel lien peut-il bien y avoir avec un K250

et ceci :

???

J'ai acquis il y a quelques années un K250 à prix modique dans un état, hum, très mauvais. Bon, il a une petite histoire. A l'origine cette machine a été acquise par Jean Felix Lalanne dans les années 80, de ce que m'a dit le guitariste qui me l'a vendu. Je n'ai pas vérifié ;-)

Inutile de préciser qu'un K250 non fonctionnel, peut se comparer à une armoire normande encombrante, 'moche' et... inutile, d’où j'imagine la décision pour l'ancien propriétaire de s'en séparer. Il m'a fallu quelques temps pour le réparer mais j'y suis arrivé (le déroulé du processus de réparation serait un vrai roman), et m'en sert depuis maintenant plus d'un an quotidiennement.

Alors forcément un tel appareil qui ne fonctionne pas durant une longue période et que l'on recommence à connecter quelques heures par jour au secteur, fini par se rappeler aux bons souvenirs d'un réparateur à force bruits et odeurs nauséabondes.

Rien de grave cependant, juste le condensateur de filtrage de la tension secteur qui a explosé. Un composant de l'époque :


Je l'ai remplacé par un modèle MKT plus fiable récupéré sur une alimentation usagée, conservée... parce que ça sert toujours!

Et ce condensateur de filtrage se trouve dans l'alimentation du K250 :


Belle pièce aussi que cette alimentation! Je ne rentrerai pas dans les détails, ce n'est pas l'objet de cet article, mais elle ne contient que des composants de haute qualité (de l'époque) et sa construction est exemplaire tout du moins du point de vue électronique. Cependant elle chauffe et donc elle possède un ventilateur.

Or ce ventilateur est (était) très bruyant. Beaucoup trop bruyant en fait, si bien que durant toute la période de dépannage de la machine je l'avais enlevé et laissé l'alimentation ouverte. Et puis quand le K250 fût réparé, j'ai tout refermé en ne remettant pas en place ce ventilateur. A l'époque en fait, je ne jouais pas vraiment de clavier donc pas de problème de chauffe. Or, la situation a changé. Maintenant ce 'power pod' fonctionne beaucoup plus souvent et surtout sur des périodes pouvant aller jusqu'à trois heures d’affilé (si si). Cela ne 'semblait' pas poser de problème, j'ai donc laissé faire.

Les montées en température étant assez néfastes pour les condensateurs en général, il ne serait pas étonnant que cela ait précipité la destruction du condensateur de filtrage. J'ai joué, j'ai perdu!

Donc, il me fallait 'aussi' remettre un ventilateur. Celui d'origine était en 220V et fonctionnait à plein régime, mode de fonctionnement inacceptable car beaucoup trop bruyant. Le boitier de cette alimentation étant assez petit (c'est relatif), le volume intérieur est faible. Il suffit donc d'une 'légère brise' pour éviter la stagnation de l'air et sa montée en température. En général, j'utilise un ventilateur 12V sur lequel je connecte un potentiomètre me permettant de régler la vitesse de rotation.


Un ventilateur typique.
Le problème est donc de trouver du +12V dans cette alimentation. La seule solution consiste en fait à utiliser le +15V de la partie analogique. C'est ce que j'ai fait et cela fonctionne très bien.

Sauf que cette solution ne me plait pas du tout. Ce type de ventilateur pollue totalement l'alimentation. Donc ce faisant j'introduis des parasites directement sur l'alimentation analogique en direction de la partie 'analogique' du K250, en anéantissant tous les efforts de filtrage effectués en amont par les concepteurs : insupportable, un peu de respect tout de même!

La meilleur solution à mon sens consistait donc à trouver une petite alimentation à découpage capable de transformer la tension secteur en basse tension. Or ces alimentations sont en général assez volumineuses, même s'il en existe de petites mais quand même à minima pour 25W de puissance. Ici il ne me faudrait que 2,5W au maximum.

Et la question : ou trouver une telle 'petite' alimentation?

La réponse est : ici


Bon ça y est, le lien entre le K250 et cette ampoule LED est fait. Il était temps!

Inutile de faire un grand discours, l'alimentation de cette lampe 'récupère' le 230V alternatif du secteur et le transforme en 9V (théorique) continu.

La petite histoire : j'ai récupéré cette ampoule par un collègue l'ayant fait venir 'gratuitement' de Chine pour un prix d'environ 10% de ce que proposent les 'enseignes locales'. Parce que, forcément après quelques heures de fonctionnement : fin de service.

J'ai donc été tenté de vérifier quelle pouvait être la cause de cet arrêt de fonctionnement. L'ensemble des LEDs est en fait constitué de 12 LEDs  rassemblées en deux branches parallèles de 6 en série. Après quelques tests il s'est avéré que sur chacune des branches, une d'entre elles était passée en haute impédance. L'ampoule fonctionnait mais émettait à peu près l'intensité lumineuse d'un bout incandescent de cigarette!

Afin de 'pousser' la logique jusqu'au bout, j'ai court-circuité les deux LEDs défectueuses et ai remonté l'ampoule. Elle a très bien fonctionné une trentaine d'heures. Ce qui est 'inespéré' puisque je faisais fonctionner les LED restantes forcément en dehors des spécifications. J'ai 'joué' volontairement, pour voir...

Et ce que j'ai constaté c'est une élévation très forte de la empérature de cette ampoule en fonctionnement. Très mauvais et pour les LEDs, et surtout pour le condensateur chimique de filtrage de la tension secteur de la petite alimentation à découpage. Je reviendrai la-dessus...

Il ne me restait plus qu'à tester l'alimentation à découpage de cette ampoule, plus pour en connaitre les caractéristiques que pour vérifier son fonctionnement :


L'alimentation est de type 4W telle que l'on peut en trouver sur la 'Bay'  à environ 1€ :



A noter le nom inconnu marqué sur le condensateur chimique, gage très certainement de très basse fiabilité!

Vérification effectuée, l'alimentation de l'ampoule délivre 20V à vide. Il ne me restait plus qu'à y brancher un ventilateur 12V afin de vérifier le bon fonctionnement de l'ensemble :

J'ai revissé l'ampoule sans son alimentation, pour la photo!
La tension aux bornes du ventilateur est tombée à 12V ce qui me semble normal étant donné la puissance que réclame ce ventilateur. Tout fonctionne correctement sans montée en température de l'alimentation. Pour l'instant je ne l'ai pas mise en place dans celle du K250 par manque de temps. Je vais cependant le faire dès que possible et en profiterai pour publier une petit photo de l'ensemble.

Quant à cette ampoule LED, il s'agit d'une magistrale idiotie, telle que nos sociétés basées uniquement sur le profit à très court terme savent le faire. Je ne pense pas seulement au pays producteur de ce produit, mais surtout à ceux qui, dont la 'france' bien évidemment, par des normes partisanes favorisent cet état de fait.
  • Quel coût représente réellement une telle ampoule? Il est exorbitant si l'on considère ce qui suit :
  • Temps moyen de fonctionnement? moins de 100h.
  • Matières premières? Verre et surtout un gros culot en aluminium usiné, plastique non auto-recyclable, le cuivre du transformateur, les matières premières nécessaires pour fabriquer les semi conducteurs.
  • Pollution? Énorme. En énergie tout d'abord pour façonner le verre, et surtout le culot en aluminium et le plastique. L'énergie pour fabriquer les semi-conducteurs. Bien évidemment toute la pollution des transports. Et ne parlons pas de la nature certainement contaminée par tous les résidus de fabrication de l'aluminium et des semi-conducteurs.
  • Et pour la santé de l'utilisateur? N'oublions pas qu'il s'agit d'une alimentation à découpage générant donc des hautes fréquences non filtrée par l'aluminium! Ne parlons pas non plus du condensateur de marque très bas de gamme et qui, aux températures auquel il est exposé, va voir son électrolyte s'évaporer au nez de l'utilisateur en lui chatouillant les narines avec des substances polluantes de toutes sortes.
  • La sécurité? Dois-je l'évoquer? Pas le moindre fusible. Le jour ou le condensateur part en court-circuit, c'est coupure générale ;-) Pourtant cette ampoule a été réceptionnée en 'france' sans le moindre problème!
Le tout pour 3 à 4€, frais de port compris! Ça n'est même pas de la honte, c'est de l'auto destruction, mais... 'pour votre confort et votre sécurité'. Alors bon, ça ne se discute pas!

Alors qu'une bonne vieille ampoule à filament (ou mieux avec les halogènes) de 30W aurait fait l'affaire. La réflexion sur les économies d'énergies devant se faire sur son utilisation à bon escient! Elle pourrait en penser quoi de ça, la 'ségolène royal'?

Quant à moi, au moins je recycle l'alimentation à découpage, enfermée quelle sera dans un boitier en bon vieux métal.
Et finalement, j'ai aussi recyclé ce K250 qui fonctionne et qui sert tous les jours, pour mon plus grand plaisir!

mercredi 22 février 2017

STUDIO 440 Sequential Circuits : non mais, n'importe quoi!

J'ai acquis mon Studio 440 en 2006 il me semble, du côté de Lille. La machine proposée avait du vécu, et un fonctionnement parfois 'erratique'. Mais bon, la démonstration faite, qui avait consisté à charger une séquence et des sonorités depuis un disque dur externe m'avait convaincu.


Présenté comme cela, c'est une bien belle machine. De retour chez moi avec une jolie collection de samples sur disque dur, je me suis bien 'amusé'. Assez rapidement cependant, il m'a fallu ouvrir la bête pour corriger des défauts de fonctionnement. Et me rendre compte à ces différentes occasions que je n'avais pas été le premier à l'ouvrir. J'ai remis en état quelques autres 440 depuis, quelques sujets sur ce blog en relatent les déroulements.

Et puis très récemment, je me suis décidé à tenter l'échantillonnage. Aussi invraisemblable que cela puisse paraître, je n'avais jamais tenté le coup. Très rapidement, lors de la procédure de configuration de l' enregistrement, la machine s'arrête et semble carrément plantée. Je lance donc les auto-diagnostics et me rends compte que le lancement du test de rafraichissement de la RAM d’échantillonnage ne se lance pas. Test lancé après celui d'écriture/lecture dans cette même RAM qui lui, se déroule correctement.

Je fais bref : Je suspect donc un plantage de la carte processeur. Après quelques heures, de recherches intensives, j'en conclue que cela ne vient pas de la carte mère, mais de la carte de la face avant. Je suspecte le système électronique de gestion des switchs d'être en cause. Après moult tests et retrait de certains circuits intégrés pour les remplacer ou tout simplement faire fonctionner la machine sans, je n'arrive toujours pas à trouver la cause du problème.

Et puis, en fin de soirée, lors d'un ultime test, je décide de 'valider' les switchs, on ne sait jamais. Pas de raison particulière étant donné que le lancement des fonctions ne pose jamais pas de problème. L'appui sur les différents switchs me donne bien une valeur différente. SAUF QUE, lorsque je relâche un quelconque switch, le chiffre 44 apparaît systématiquement à l'affichage.


Et qu'est-ce donc que le bouton qui se cache derrière le code 44? Le TAP contrôle. Le bouton qui sert à imposer un BPM à la machine.

Incroyable!!! J'avais déjà eu à l'époque bien des soucis avec la procédure de lecture sur disque SCSI qui plantait alors qu'il fallait appuyer sur ENTER pour la lancer! La réponse est là! Mais alors, pour quelle raison ce bouton génère ces problèmes? Tout simplement parce qu'il est en court-circuit!

Je retire ce bouton du circuit imprimé de la machine, et lui enlève la tête dans le but de vérifier l'état de la mécanique :


E là, c'est édifiant. la barre métallique (borne n°1 du switch) tangente au gros ressort n'est pas clipsée dans l'endroit prévu à cet effet et se retrouve du coup très (trop) proche du gros ressort. Ce gros ressort maintien en hauteur le capuchon du bouton ET la barre métallique horizontale (borne n°2 du switch). Et que ce passe-t-il? Et bien le gros ressort est 'flottant' dans son logement. Lors de l'appui et le relâchement du switch, il 'peut' ainsi se retrouver en contact avec les deux bornes et donc continuer à simuler l'appui du bouton. Le côté aléatoire du sujet ne permettant pas, bien évidemment, un diagnostic fiable de la panne!

je ne sais pas de quelle façon doit fonctionner ce switch, mais ce qui est sur, c'est que si la borne n°1 est bien clipsée, lors de l'appui du capuchon du bouton, le gros ressort s'écrase mais n'entraine pas la borne n°2 avec lui. Il n'y a donc pas contact.

Et on en arrive à la raison pour laquelle la borne n°1 n'était pas clipsée. En fait elle a été déclipsée volontairement pour permettre de la souder un peu en hauteur, de façon à ce que le capot du bouton, fasse quand même entrer les deux bornes en contact. Ça, ça fonctionne. Mais au relâchement, le gros ressort n'étant pratiquement plus du tout en pression, il se 'promène' tranquillement et, 'de temps en temps' vient court-circuiter les deux bornes sans qu'une quelconque action extérieur soit nécessaire : amusant non?
Plutôt que d'avoir essayé à l'époque de remplacer ce switch défectueux pendant qu'il était facile d'en trouver un remplaçant. Mais non, la personne étant intervenue a préféré faire du mauvais bricolage!

J'ai donc ressoudé correctement la borne n°1, à sa place initiale, et suffisamment loin du gros ressort, puis j'ai 'enroulé ce gros ressort sur la borne n°2 de façon à ce qu'il l'entraine avec lui  vers le bas et que le contact s'établisse correctement en fin de course :


Je ne pense pas que cela fonctionnait de la sorte à l'origine, mais bon, ça ira bien. J'ai pu tester le fonctionnement correct de ce switch après remontage. Evidemment j'ai remonté ce bouton dans le sens inverse du départ (parce qu'en plus deux positions sont possibles sur le circuit imprimé), ce qui a donnée ceci au remontage de la carte :



Démontage, déssoudage, ressoudage et remontage de la carte obligatoire : hum!!!!

Enfin la récompense : 


Le deuxième test de la mémoire se lance correctement, sélection du bouton n°0 après avoir lancé le test d'écriture/lecture de la RAM avec le bouton n°2.

CONCLUSION : j'espère vraiment être arrivé au bout des problèmes de cette machine, environ 10 ans après l'avoir acquise!

Cela ne fait que renforcer mon sentiment de matériel tendance 'piece of shit' que celui de Sequential sur cette période. Et... je sais de quoi je parle, je possède un Prophet VS, un Studio 440 et un Prophet 3000. Tous ces produits présentent les mêmes symptômes : études mal réalisées avec des erreurs grossières de conception, design et mise en boîte avec des solutions technique des plus 'merdiques', systèmes bugués comme dans le cas de ce studio 440 (même pas capable de 'pondre' une routine de gestion de touches correcte) ou pas finies comme sur le Prophet 3000. Composants de mauvaise qualité etc etc... et la liste est longue.

Et pourtant quand ça fonctionne, ça fonctionne bien, et c'est vraiment autre chose. C'est sans doute la raison pour laquelle ces machines sont toujours recherchées. Mais attention, je n'hésite pas à dire qu'il faut posséder une bonne dose de compétences et de patience pour les maintenir en état. Et malgré cela, il reste possible de se faire piéger 'comme un bleu' par une 'double erreur' donnant l’impression d'un fonctionnement correct!

J'ai corrigé pas mal de bugs de mon Prophet 3000. Dont notamment le gros circuit fourni par Yamaha pour gérer correctement l'extension mémoire. Sauf que cela ne fonctionne pas parce qu'il y a des erreurs sur les bits d'adresse de cette extension. Heureusement, j'ai fini par avoir les bonnes infos et les corrections à effectuer sur la carte mère du 3000 mais n'ai pas encore tenté de les mettre en application. Le ferais-un jour? Je ne sais pas. Essayer de faire fonctionner un Prophet 3000 serait comme, hum... Ou alors l'exposer dans un musée, comme une espèce de dinosaure nouvellement découverte ;-)

mardi 14 février 2017

PROGRAMMATEUR DE 27C160 27C800 27C400

La naissance de ce petit projet est due au désir d'upgrader le synthétiseur Yamaha EX5 que je possède. En fait il y a déjà quelques mois, je lui ai adjoint une carte SCSI sur laquelle je n'ai pour l'instant rien connecté, j'ai aussi complété la machine par deux barettes EXFLM2 de 8MB pour un total de 16MB de mémoire Flash : 



Ces barrettes de Flash sont disponibles chez Sector101.

Je n'ai pour l'instant pas upgradé la RAM disponible qui est pour l'heure actuelle de 16MB également. Par contre, il me reste éventuellement à mettre en place le dernier firmware de cette machine. Et la, ça n'est pas simple. Les fichiers binaires sont facilement trouvables sur le Net, par contre il reste à programmer les EPROM de type 27C160. Et ces 'bestioles' ressemblent à ça :

Reçues d'eBay ce jour même :-)
C'est du 44 pins. Autant dire que les programmateurs 'standards' ne sont pas en mesure de programmer ce type de composants. Pour ma part, je possède un Genius 540 :


Ce type de programmateur fonctionne 'à peu près bien' mais la communication USB est, disons, non fiable. De fait, dès que ce programmateur est connecté à un PC récent, il devient impossible de lire ou d'écrire une PROM. Donc, au delà du fait que ce G540 est lui aussi incapable de prendre en charge un composant à 42 broches (40 broches max), il ne reste plus que deux solutions. Acheter un matériel capable de programmer ces PROMs ou alors le fabriquer.

Parce que acquérir un programmateur pour du 42 broches et plus coute très cher. Compter dans les 400€ minimum. Forcément, parce que pour 42 pins ou plus, ces programmateurs sont en mesure de programmer des milliers de composants, le prix à payer est donc en conséquence. Surtout si l'on considère que le nombre d'utilisation potentielles d'un tel programmateur est rare, voir très rare. Donc, il ne reste plus qu'à 'tenter' de fabriquer soi-même l'appareil.

C'est ce que j'ai fait. Le but étant qu'il soit quand même simple à utiliser et d'un cout minimum. Mon programmateur possède donc un port USB qui permettra un dialogue minimal avec un PC, ainsi que la réception du fichier à programmer. Je compte utiliser un protocole de communication dit 'connecté', ce qui permettra la réception de trames, le traitement et la vérification de la programmation, avant d'autoriser les trames suivantes du PC.

Cette façon de faire permet l'utilisation d'un microprocesseur minimal, sans beaucoup de RAM interne, et donc un cout de réalisation minimal.

En gros, le montage se compose de:
  • Un port USB pour la communication avec un PC.
  • Un processeur ATmega328pb pour 'l'intelligence' de l'appareil.
  • Des extensions de port de type MCP23S17 pour la génération des adresses/données.
  • Une alimentation élévatrice pour fournir les tensions de programmation nécessaires.
  • Une batterie de diodes et autres transistors pour gérer les différents signaux de commande vers la PROM.

Le programmateur est prévu pour être alimenté directement par le port USB sans recours à une alimentation externe. Après avoir étudié le schéma de base, j'ai réalisé le circuit imprimé à l'aide de Kicad :

Côté composants : des cms pour une taille réduite.
La face 'cachée' du circuit.
Le Silk Screen du programmateur.
Sur ce montage, je n'ai pas prévu de bouton marche/arrêt ou la mise en/hors alimentation du composant à programmer. Il faudra donc débrancher le programmateur pour insérer ou retirer une PROM. Ce type de matériel étant censé servir peu souvent, cela ne pose pas de problème.

A noter que bien que ce programmateur ait été prévu pour programmer des 27C160, il peut de la même façon programmer des 27C800 et des 27C400 puisque ces circuits partagent le même brochage.

Il ne me reste plus qu'à attendre le 'retour' des PCBs réalisés, à monter un programmateur, à développer le programme et à réaliser les divers tests fonctionnels. Evidemment cela va me prendre un peu de temps. Mais je n'ai jamais réalisé ce type de montage, voilà donc ne bonne occasion de s'y frotter. Et puis ce programmateur pourra peut-être servir à d'autres personnes, notamment celles qui développent des circuits en rétro-computing. Je proposerai peut-être ce montage à la vente s'il fonctionne bien.

03/03/2017 : le PCB est arrivé.


Et hop, encore du travail de programmation en perspective!