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!