vendredi 18 novembre 2016

Il va falloir finir par sous-traiter!

Petit post 'vite fait' parce que le travail ne manque pas par ailleurs... Raison du titre de ce billet.
Je ne trouve plus assez de temps en soirée pour mener à bien comme je le souhaiterais mes développements en cours. Au fur et à mesure des avancées je finirai bien par retrouver l'équilibre, mais pour l'instant c'est un peu la course tous les soirs, surtout quand je me retrouve confronté à des petits problèmes qui consomment gentiment leur paire d'heures.

Dans la série nouveau circuit imprimé à monter et à tester, j'ai nommé le switch M.I.D.I. :


Ici encore, ce n'est pas du circuit imprimé de haute qualité (le design, pas la fabrication), mais cela devrait suffire pour effectuer les premiers tests. Le processeur de ce montage est cette fois-ci un membre de la famille PIC32 ainsi qu'un circuit externe contenant 4 ports série. Chaque switch comportera donc 5 ports série dont un dédié à un fonctionnement particulier...

Le projet de circuit de diagnostic pour la boîte à rythme Drumulator avance bien. Le plus gros des tests est implémenté. J'en ai encore d'autres à intégrer. Le développement sur ce système ne pose plus de problème depuis que ma carte électronique a été corrigée (voir post précédent) et que l'environnement de développement et de programmation du processeur fonctionne bien. La majorité des routines de bases étant écrites, l'écriture de code s'en trouve simplifiée. Un petit aperçu :

Présenté comme cela, ça n'est pas obligatoirement très parlant. Tout juste sait-on quel switch de la Drumulator a été appuyé. Mais je vous assure, tous les tests fonctionnent ;-)

Parallèlement je 'tente' de démarrer une 'copie' de la Drumulator dans un FPGA. Parce qu'à étudier la machine comme je le fais, il me devient possible d'en tenter l'implémentation en logique programmable. Pour l'instant j'ai traduit une Drumulator 'very' minimum dans le FPGA mais l'affichage ne démarre pas sur son sempiternel 'Bad', ce qui pour une fois m'arrangerait bien, malgré la nature du message ;-)

21 novembre 2016 : un petit pas pour... moi ;-) 
Après quelques difficultés à donner vie au 'cœur' processeur de la Drumulator sur une carte FPGA, le dernier caractère de la chaine 'bad', le 'd', s'affiche enfin. Pourquoi le dernier? Je pense que la personne ayant programmé la routine d'interruption de gestion de l'affichage à utilisé le mode décrément plutôt qu'incrément. Je soupçonne fort que le système a été développé en assembleur et non pas en 'C'. Et les 'habitués' se rappelleront qu'il est plus facile de faire un test sur zéro, que de tester une valeur. C'est une soustraction de moins à coder! Ce qui n'empêche que j'ai des problème de réarmement de l'interruption sur les routines que je code en VHDL pour émuler le CTC. Mais bon, je vais y arriver ;-)

22 novembre 2016 : pas difficile, en fait.
J'avais effectivement un petit problème de réarmement des interruptions sur l'émulation du CTC que je code en VHDL. Une relecture de la doc de ce composant m'a permis de comprendre mon erreur. Et puis aussi un petit souci sur le code de retour des touches 'virtuelles' appuyées, ou plutôt non appuyées étant donné que je n'ai pas encore codé cet élément et qu'il me faut donc émuler le bon code au bon moment pour signifier au programme qu'aucune touche n'est appuyée. Et comme les concepteurs de la Drumulateur n'ont pas hésité à ajouter une petite gâterie, forcément, je suis tombé dans le panneau ;-) Mais bon, malgré la difficulté que représente toujours la première mise en service d'un 'corps' étranger dans un fpga puisqu'on fonctionne pour beaucoup à l'aveugle, le cœur de cette boîte à rythme fonctionne à priori correctement dans ce gros circuit Altera : 

Message d'invite lorsque la RAM n'es pas sauvegardée...
22 novembre 2016 : Code::blocks
Petite réflexion du jour : histoire de tester quelques algorithmes avant de passer à leur programmation dans ma carte de test (circuit prenant la place du Z80) de la Drumulator, j'ai voulu utiliser le PC pour exécuter quelques lignes de code C. Parce que moi, le C++ ou le C#, en programmation micro-contrôleur, ça ne m'est pas bien utile. J'ai donc tenté la version gratuite du C 'crosoft'. Le constat est toujours le même : des gigas de téléchargement, des possibilités infinies, et au final, impossible de faire du C en mode console. Évidemment, il n'est pas de l'intérêt de 'crosoft' de permettre encore ce genre de chose sous leur système, bien que 'crosoft' soit en train de permettre l'utilisation d'Unix sous windowsx!!! Mais bon, une fois de plus, je constate que l'intérêt de l'utilisateur passe au ixième plan dans la stratégie commerciale de 'crosoft'. J'ai donc supprimé l'installation de cette chose énorme (près de 10Go de fichiers et pas loin de 50 'programmes' devant être désinstallés à la main : serveur web, serveur sql, serveur de déploiement, x versions du .net, etc etc. Une totale invasion. Comme d'aucuns peuvent le dire, un super méga virus, en fait! Chance, après avoir 'à peu près' tout désinstallé, le système fonctionne toujours, et pas un message d'erreur : INCROYABLE!) et inutile pour passer à Code::blocks. 75Mo à télécharger, du C en mode console de façon tout à fait normale, du débogage temps réel bien fait, bref, tout ce qu'il faut pour être opérationnel en quelques minutes seulement sans contraintes matérielles ou logicielles. Un outil fait pour ceux qui ont besoin de se prendre la tête avec leur code, et pas avec une stratégie commerciale douteuse et pénible depuis des... décennies!
Tout ça, pour implémenter le DUMP mémoire de la ROM. Et oui, comme mon système comporte sa propre ROM programme puisqu'il s'agit de la flash du processeur Atmel, il n'y a plus besoin de ROM externe pour le fonctionnement du système de diags. Du coups comme les bus sont libres, cela permet de lire la ROM au même titre que n'importe quel composant de la carte de la Drumulator. Il m'est donc possible de calculer en même temps le checksum de la ROM et donc d'en vérifier l'intégrité de son contenu. Petite fonctionnalité impossible avec le système de diag originel de chez E.M.U.
Je vais mettre maintenant en pause ce travail autour de la Drumulator parce que j'en suis arrivé au moment ou il est nécessaire de comprendre et j'espère émuler le fonctionnement du micro-séquenceur de génération sonore de la machine. Je n'ai pas trouvé d'infos à ce sujet sur le net, et les explications fournies par E.M.U. dans sa donc est forcément... succincte! Quelques tests à l'analyseur logique s'imposent donc..... 


En ce qui concerne la perte de 'paires d'heures' qui arrive parfois, voici une petite mésaventure survenue lors de la ré-écriture du code de test des afficheurs de la Drumulator. Les afficheurs d'origine, des TIL312, ne sont pas très lumineux. Comprendre que pour obtenir un 'éclairage' suffisant, il est nécessaire de leur injecter un certain courant. Je n'ai pas mesuré ceux présents sur la Drumulator, peu importe, seule le principe compte (2,8W sous 10V quand même, affiché sur mon alimentation de laboratoire, pour un afficheur allumé au complet à 20% du temps).
Ce courant, vu la taille des résistances de limitation est de toute façon important, puisque ces résistances  sont au moins des 5W. Retenir que ce courant est potentiellement dangereux pour les afficheurs. Or, le système d'affichage étant multiplexé, chaque afficheur, et LEDs puisque le groupe de LEDs est traité comme un afficheur, n'est allumé QUE 20% du temps. Donc, pas de problème.

SAUF que pendant mes développements, il m'est arrivé de stopper le processus de test alors qu'un afficheur était alimenté, en l’occurrence l'afficheur de droite. Et au bout 'd'un certain temps', une odeur de chaud puis une légère fumée s'est dégagée de la carte de la Drumulateur. J'ai tout éteint immédiatement évidemment, et ai tenté de trouver l'origine du problème. L'odeur venait effectivement de la zone d'affichage. Je suspectait peut-être le 'claquage' d'un transistor de commande.

Au lancement du test suivant, je m'aperçus de suite que le segment horizontal du bas de l'afficheur de droite ne s'allumait plus, le segment D. Pas normal.... mais... logique! Moins logique par contre, le segment B du même afficheur s'allumait alors que ma fonction de test des afficheurs/LEDs allumait les LEDs, justement, et pas l'afficheur de droite : très étrange.

Après quelques instants de réflexion, le test de la résistance du segment D de l'afficheur de droite m'indiquait une résistance inférieur à 10Ohms, donc pratiquement en court-circuit. Et l'explication de l'allumage du segment B devint évidente :

Les flèches rouges indiquent le sens du courant.

Or donc, quand le segment B des LEDs est commandé (bien qu'il n'y ait pas de LED branchée sur ce segment), les autres segments sont éteints, donc à '1'. Le courant part donc du signal CATH0 (correspondant au segment D), traverse le segment D défectueux de l'afficheur de droite et alimente donc l'ensemble de l'afficheur. L'afficheur ainsi alimenté par une alimentation 'fantôme', est en mesure d'alimenter le segment B du même afficheur, lorsque le signat CATH4 est à '0', signal correspondant au potentiel segment B des LEDs. La raison pour laquelle cela n'arrive qu'avec le segment B est que justement, il n'y a pas de LED branchée sur ce segment. Le courant ne trouve donc pas un chemin 'plus facile' pour s'évacuer, et passe donc par le segment B de l'afficheur de droite.

Depuis, j'ai non seulement remplacé l'afficheur défectueux, mais aussi fait en sorte que le signal CATH4 correspondant au segment B soir toujours à '1' lors que j'adresse les LEDs. Parce que lors du remplacement de l'afficheur, je me suis rendu compte que le transistor de d'alimentation de commande de l'afficheur de droite n'était pas totalement bloqué, et qu'une très légère lueur apparaissait sur le segment B de ce nouvel afficheur lors que j'adresse les LEDs. Je n'ai pas changé le transistor de commande, qui fonctionne bien cependant. Ses caractéristiques auraient-elles changées par un excès de courant? Possible!


Sur cette photo, l'afficheur de gauche est un modèle neuf, celui de droite est celui retiré de la Drumulator. Effectivement, ça a chauffé vers le bas de l'afficheur. Alors pourquoi uniquement ce segment, alors qu'il y en avait plusieurs d'allumés? Pas d'explication.

Et pendant que j'y suis, une petite pub gratuite pour Nikolay Nikilov de Bulgarie qui tient la boutique Electron-pv sur eBay, ou je me suis procuré quelques exemplaires de TIL312. Parce que ces TIL312 ont une particularité utilisée sur la Drumulator, les deux points décimaux. Deux point décimaux qu'il est très difficile de trouver sur des équivalents, et spécialement le point de gauche.

Scratch 2 : j'ai été sollicité pour le développement d'une solution adaptée à l'utilisation de ma carte compatible Arduino. Après m'être documenté sur le sujet, et notamment la façon dont la communication entre Scratch2 et la carte Arduino était réalisée, j'ai décidé de ne pas perdre mon temps avec ce sujet, bien que cela m'ait pris quelques heures pour pousser un peu le bouchon et 'tenter' une première approche avec ma carte.

Avis très personnel :
A mon sens, ce système est amusant, je parle de Scratch2, et totalement inutile, j'assume. D'ailleurs cela ne m'étonnerait pas que dans très peu de temps ce système ne soit plus utilisé, une fois que le buzz 'algorithme pour tous' dans l'éducation nationale sera retombé. Je ne développerait pas mes arguments. Tout juste rajouterais-je que les personnes 'vraiment' intéressées par la programmation et la réalisation d'objets autonomes sauront bien mieux atteindre leur objectif avec l'IDE Arduino, et qu'il y a un âge minimum pour cela qui n'est pas 8 ans, mais qui se situe entre 14 et 15 ans (hors cas exceptionnel et sous réserve d'un réel intérêt pour la chose), ou jamais, selon la très grande majorité des personnes... Mais bon, le 'numérique' est la boutique à rêves ("l'opium du peuple") contemporain : bien piètres objectifs!

Histoire de continuer sur ma lancée, certains établissements ont choisi l'utilisation de petits robots comme les Blue-Bot pour initier les 'jeunes' à algorithmie, c'est bien. J'ai personnellement mis à la poubelle au début des années 2000 (je vous rassure, je ne le ferais plus maintenant, et à mon grand regret je n'en ai pas conservé une seule!), un stock de tortues LOGO fabriquées par Jeulin. C'était la même chose, dans le même contexte, à une autre époque. On reprend (presque) les même et on recommence : Logo et sa tortue

L'enfumage politico-médiatique, j'avoue qu'à la longue, ça lasse ;-)

vendredi 21 octobre 2016

C'est la reprise!

Mis à part quelques sujet sur des réparations/modifications d'instruments électronique de musique, je n'ai rien publié à la suite du MakerFaire de Nantes qui s'est déroulé début juillet.

Parce-que finalement, je n'avais rien de spécial à publier. Pratiquement quatre mois après ce MakerFaire, et malgré l'enthousiasme affiché par les 'passants' sur mes présentations, force est de constater que la multitude de contacts échangés à cette occasion n'a rien donné de particulier. Reste malgé tout cet incroyable moment passé à la rencontre de personalités très variées et intéressantes.

Je continue donc, seul, mes développements et diverses expérimentations électroniques.

Lors de ce MakerFaire nantais, j'ai présenté deux thématiques principales :

- l'automatisme dédié à l'habitation, basé sur l'environnement Arduino. Le matériel exposé se composait d'un automate commercial de type Controllino, d'une carte Arduino de type UNO de ma composition, mais possédant DEUX vrais ports série, et d'un écran graphique tactile permettant de commander le tout :


Les évolutions de ce système consistent en une carte d'interface que je développe actuellement pour la carte automate Arduino. Cette interface comportera un circuit industriel capable de gérer la commande de signaux numériques en 24V, ainsi qu'un certain nombre d'entrées analogiques acceptant du 10V et du 5V. tout ceci devant permettre de sécuriser la carte Arduino vis à vis du monde extérieur et permettra de se passer de l'automate commercial Controllino.
Quelques passages en FabLab à titre de conseil en développement de solutions électroniques m'ont permis de constater à quel point il est facile de détruire les entrées/sorties du processeur quand les 'expérimentateurs/trices" ne possèdent qu'une vague notion des grandeurs physiques utilisées.

D'autre part, le type d'écran tactile utilisé à subi une évolution. Ces écrans sont maintenant plus réactifs en affichage du fait d'un système à processeur intégré plus rapide. Ils possèdent aussi une plus grande capacité mémoire, ce qui permet une montée en 'raffinements' d'affichage. Ils possèdent aussi directement l'heure temps réel. Ce qui permet de libérer le port d'extension dédié de ma carte Arduino.

Le schéma théorique de l'interface industrielle est terminé. Il reste encore à créer le circuit imprimé, ce qui sera fait dans les semaines à venir.

- L'électronique dédié aux instruments numériques était la deuxième thématique présentée au MakerFaire. Avec deux présentations matérielles. D'une part un système permettant de prendre le contrôle d'une machine pour y effectuer des diagnostiques et réparations éventuelles. En l’occurrence ce système prend la forme d'un 'émulateur' de processeur Z80, utilisé en lieu et place du processeur d'origine d'une Drumulator :



Cet émulateur de Z80 n'émule pas réellement un Z80, évidemment, mais est en mesure de prendre le contrôle des différents bus du système, et ce, dans le but de commander les différents organes de la machines afin d'en évaluer le comportement. Le gros avantage de cette solution est qu'elle ne nécessite aucun composant externe pour fonctionner. Par le fait, il devient alors possible d'effectuer un DUMP de la ROM d'origine de la machine, et même de tester le bon fonctionnement des mémoires RAM.
Mon étude initiale comportait quelques 'bugs'. Afin de la finaliser, j'ai donc corrigé les erreurs et en ai aussi profité pour changer le connecteur mini-usb en optant pour un modèle vertical. De cette façon, l'émulateur n'occupe que la place d'origine du Z80 et ne déborde plus. Je pourrai remettre en place le potentiomètre que j'avais du retirer.

La nouvelle version est à gauche!
 
Côté pile.

Côté face.
La nouvelle version est bien plus 'propre' que l'ancienne et va me permettre de continuer à développer sereinement les algorithmes de test de la Drumulator.

Autre sujet développé dans cette thématique instruments numérique de musique, une 'nouvelle' liaison M.I.D.I. :


Ces deux modules relient mon clavier maitre K250 et un expandeur sur lequel j'utilise différents sons de piano depuis quatre mois maintenant. Je n'ai constaté aucune erreur de communication malgré une certaine 'rapidité' des notes jouées (je prends par ailleurs des cours de clavier, histoire de me servir aussi de ce que je fabrique!). La topologie de ma liaison M.I.D.I. n'étant plus la même que celle d'origine, je développe en ce moment un switch qui me permettra de non plus faire un simple point à point, mais de créer un vrai réseau de machines. Le PCB de ce switch est créé et ne requiert 'plus' que sa fabrication puis la programmation du système.

Le principe de mise en place de ce nouveau réseau devrait être assez 'ludique', agréable, et pratique, tout en conservant l'existant. Non? si si....

Cerise sur le réseau, avec tous ces développements et matériels disponibles, j'en profite pour développer un petit système de commande pour le Juno 2 que j'ai dépanné récemment. Ce système se comportera comme un PG300 mais à partir d'un des écrans tactiles évoqués plus haut. Il permettra aussi de faire l'interface entre le nouveau réseau M.I.D.I. et les 'anciennes' prises M.I.D.I. de la machine. L'interface graphique ressemblera à ceci :


Et d'ailleurs voici ce à quoi ressemble le circuit imprimé tout fraîchement arrivé de fabrication :


Pour ce montage j'ai choisi de passer sur un processeur de type ARM de chez ST. D'une part ces processeurs sont rapides, mais surtout l'ensemble des logiciels disponibles pour ces circuits est vraiment 'facile' à utiliser. CubeMX permet en effet de configurer de façon graphique les processeurs ST puis de générer le projet contenant toutes les initialisations nécessaires. Projet qu'il suffit d'ouvrir avec System Workbench for STM32 d'AC6 par exemple pour commencer à développer le code dans un environnement Eclipse. Cela fonctionne très bien, une très grande partie du travail fastidieux d' initialisation du processeur devenant automatique.

Carte montée : 28/10/2016

Pas du grand art, mais pour du prototype, ça ira bien!
Carte partiellement testée : 05/11/2016


Pour tester mon montage, j'ai réutilisé une petite carte d'affichage réalisée en 1992 il me semble. Cet affichage faisait parti d'un système de filtrage des canaux M.I.D.I. à destination d'un JX3P.
Insérée directement sur un port d'extension de la carte ARM, elle me servira à afficher des indications sommaires lors du développement logiciel de cette carte.

Et pendant que j'y suis : publicité gratuite pour ST. Je m'empresse de suite de préciser que mon intention n'est pas de dénigrer d'autres fondeurs proposant des processeurs compatibles ARM certainement très intéressants mais je n'ai jamais poussé les essais, la plupart du temps non pas à cause des circuits heux même, mais du fait du manque de logiciels de développement 'faciles d'installation/d'utilisation'. Ce qui m'a fait pencher pour les micro-contrôleurs ST est en tout premier lieux l'application CubeMX ou plus exactement STM32cubeMX. Ce logiciel permet tout simplement de configurer tous les aspects matériels du micro-contrôleur utilisé. Pour qui souhaite développer rapidement une petite application, cet outil est indispensable. Ensuite, vient évidemment la chaîne de développement Système Workbench for STM32 d'AC6. Il s'agit d'un IDE basé sur l'incontournable Eclipse. A ceci près, que l'installation complète de la chaîne de développement se fait de façon extrêmement simple. Ce qui n'était pas encore le cas mi-2015! Je rajouterai à cela que les processeur ST sont complets, rapides et d'un prix très faible. Inutile de plus d'acquérir un programmateur au prix exhorbitant. Pour ma part, j'utilise le STlink2 présent sur une carte Nucleo, qui me permet aussi d'effectuer du deboggage en temps réel : carrément le luxe!

Système quasi fonctionnel : 14/12/2016

Il m'aura fallu un peu plus d'un mois pour arriver à mes fins mais ça y est, l'afficheur graphique me permet de modifier en temps réel les paramètres du Juno 2. Pour l'instant je n'ai pas encore testé la connection au 'vrai' standard M.I.D.I. puisque j'en ai équipé ma carte processeur, mais 'me suis contenté' de faire transiter les informations par mon réseau compatible M.I.D.I. avec la mise en place d'un convertisseur vers l'ancien système M.I.D.I., directement connecté au synthétiseur. Pour imager la chose, je suis maintenant en mesure de modifier les paramètres du son du Juno en live avec l'écran tactile, tout en étant distant de presque 10m, longeur du câble qui relie l'écran au synthé. Et cela fonctionne superbement bien :-)
La fonctionnalité du système étant validée, il 'ne me reste plus' qu'à programmer l'ensemble de l'application et à trouver un boitier adéquate pour loger le tout! 

Je n'ai pas précisé, mais l'émulateur de Z80 est basé sur un processeur Atmel ATmega328pb, ainsi que les modules M.I.D.I. personnels, et évidemment la carte automate compatible Arduino. Pour le switch M.I.D.I. je vais utiliser un microcontrôleur de chez Microchip de la famille PIC32MX.

S'il est possible de débuter la programmation en 'jouant' de l'IDE Arduino sur les cartes du même nom, l'étape suivante qui consiste à programmer tel ou tel type de microprocesseur avec l'IDE du 'constructeur' et un programmateur dédié n'est finalement pas beaucoup difficile, à partir du moment ou les bons outils et le bon environnement informatique est utilisé.
  
Voilà, c'est tout pour l'instant. Encore que... D'autres sujets sont plus ou moins en cours d'étude, qui aboutiront peut-être... ou pas!

mercredi 7 septembre 2016

Encore un STUDIO 440 remis en service!

Pour bien entamer la reprise, quoi de plus intéressant que la remise en service d'un STUDIO 440?

Il y a quelques semaines de cela, j'ai été contacté par le 'malheureux' propriétaire d'un 440 en fâcheuse posture.
La machine reçue pour dépannage:

Machine en bel état malgré son âge.

Ce 440 présente deux problèmes majeurs. Tout d'abord l'alimentation à découpage ne fonctionne plus du tout. Et puis surtout, même avec une alimentation fonctionnelle, le 440 ne démarre pas :

Fâcheux comme 'fonctionnement'

Je possède certaines pièces de 440, heureusement, parce que je ne savais pas du tout ou je mettais les pieds en acceptant le dépannage de la machine. Depuis le dernier dépannage de 440 effectué en septembre de l'année dernière, je me suis équipé d'une alimentation de laboratoire conséquente parce que je m'étais rendu compte que les différentes cartes d'un 440 consomment au final une certaine énergie. Energie que n'était pas capable de fournir les 'petites' alimentations que je possédais. Et pour dépanner un 440, quand toutes les cartes sont à plat sur le plan de travail, ça n'est pas simple de jongler avec plusieurs alimentations. J'ai donc acquis ceci :

Une DP832A
Cette alimentation est précise, puissante et autant que je peux en dire, fiable. Mais bruyante quand même. Elle remplit parfaitement sa fonction et me permet maintenant d'alimenter des cartes 'sensibles' sans problème.

C'est ce que j'ai donc fait avec la carte processeur de ce Studio 440. Après un certain nombre d'heures de sondage à l'oscilloscope, j'ai acquis la certitude que la carte mère fonctionne, mal, mais elle fonctionne. En fait, le programme principal reste 'planté' en accès sur l'afficheur. De plus aucune interruption n'est servie. J'ai fini par en conclure que la carte était tout simplement 'plantée' dans les routines d'initialisation du système. Comme à ce moment du démarrage, c'est vraiment le système minimum à 68000 qui fonctionne, et que visiblement le processeur, la ROM ainsi que la glue logique 'semblait' fonctionner, il ne me restait plus qu'à suspecter la RAM dynamique.

Après comparaison avec une machine fonctionnelle j'ai pu détecter qu'un des deux circuits qui gèrent la RAM dynamique avait un problème, en l'occurrence le plus petit des deux circuits dédiés à cette tâche :

Des circuits pas facile à trouver dans le commerce!

Et effectivement après remplacement du plus petit des deux circuits, l'afficheur s'initialise correctement et les diags se lancent sans problème : grosse avancée.

Le passage des tests m'indique qu'un circuit de mémoire dynamique est défectueux. Ha!, la voilà la raison peut-être originelle du dysfonctionnement de ce 440. Et la commence une partie de cache-cache avec les concepteurs de la machine. Parce que si à l'affichage la 'position' de la RAM défectueuse est bien signalée, il s'agit d'une indication 'graphique' sans plus d'information. La documentation étant elle aussi muette sur ce sujet. J'ai donc tout essayé en logique informatique. Il y avait quatre possibilité, évidemment ce fût la dernière la bonne car la moins logique, informatiquement parlant :

Les quatre DRAM mises sur support. Une seule était défectueuse.
A l'allumage suivant ces opérations, le 440 s'est allumé tout à fait normalement. Le problème était en fait tout simple. Mais pour en arriver à cette conclusion, et en faisant attention de ne pas dégrader plus l'état de la carte mère par des tests hasardeux, il m'a fallu quand même un petit nombre d'heures de recherche, de tests et de modifications. Une autre méthode consiste à ne pas trop se poser de question et à changer tout ce qui peut l'être, en espérant 'tomber' sur le problème. Je ne pratique jamais cette méthode, il est très rare que cela fonctionne. C'est pourtant la méthode utilisée par le propriétaire de ce 440, qui à mis sur support un bon nombre de circuits logiques dont le processeur :

Tous les circuits logiques autour du processeur ont été changés par le propriétaire de la machine.
Et malgré ce gros travail de remplacement des circuits logiques, l'état de la machine n'avait pas progressé du tout. Au moins, il n'y a pas eu de dégradation, le propriétaire sachant visiblement manier le fer à souder!

Ce Studio 440 présentait aussi un des quatre circuits custom défectueux, je l'ai remplacé par un circuit neuf, acquis il y a quelques années auprès de Wine Country. La mise en place du disque dur sur lequel je possède des sons de 440 m'a permis de valider le fonctionnement global de la machine. Pas de problème en ce qui concerne la DRAM d'échantillonnage, pas plus que sur les circuits analogiques de sortie.

Il ne restait donc plus qu'à s'occuper de l'alimentation à découpage d'origine de la machine. En fait, son dépannage a été très simple. Le fusible d'origine n'ayant pas brûlé, il y avait donc de fortes chances pour que rien ne soit en court-circuit sur cette alimentation, et notamment pas le transistor de commutation du primaire du transformateur haute tension. Cette alimentation, une fois connectée au réseau n'émettait pas le moindre bruit haute fréquence caractéristique du hachage du primaire. J'en ai vite conclu au dysfonctionnement de l'oscillateur de commande du transistor de puissance. Chance, ce sont deux transistors classiques qui s'occupent de cela, un 2N2222 et un 2N2907. En test sur la carte, j'ai déterminé que seul le 2N2907 était en erreur. Comme je possédait ces deux transistors classiques en stock, je les ai changé tous les deux. Le résultat fût immédiat :

Alimentation branchées sur une carte personnelle pour présenter un minimum de consommation.
Une alimentation à découpage ne fonctionne pas à vide puisque s'il n'y a aucune demande en courant, il n'y a pas de raison de fournir d'énergie. La boucle d'asservissement est alors à un point critique, hors régulation, l'alimentation ne démarre pas.

Voici ou se trouvent les deux transistors changés sur cette alimentation :


Au final, tous les composants changés sur ce Studio 440 :


Pas grand chose en fait. Mais pour en arriver à ce résultat, cela présente presque une journée complète de travail.

Que reste-t-il à faire sur cette machine? Plus grand chose, techniquement, mais présentant quand même un bon potentiel de temps à passer.

Le propriétaire de la machine devra trouver un lecteur de disquette compatible avec le 440. Celui mis en place est totalement incapable de formater, lire ou écrire une disquette d'origine Sequential Circuits, ou pas. J'ai pu tester le bon fonctionnement du circuit de la carte mère à l'aide d'un lecteur de disquette d'origine.

Il faudra aussi passer au dernier OS disponible, sinon il reste impossible de gérer un lecteur SCSI externe comme les 'vieux' disques 20Mo Apple, identiques à celui dont je me sers régulièrement.

Enfin, je n'ai pas testé l'échantillonnage. De toute façon, s'il y a un problème de ce côté, le nombre de composants mis en jeu est très faible et se situe dans l'environnement immédiat du convertisseur analogique/numérique. Par contre, traiter ce problème demande aussi beaucoup de temps en démontage et remontage de la machine qui, à ce niveau, n'est pas du tout ergonomique.

Bref, voilà encore un Studio 440 sauvé. Même si ce type de machine est totalement dépassé, mal conçue, pas fiable, cela reste un monument de l'épopée de la musique électronique. A conserver donc!

samedi 20 août 2016

Petit dépannage et modification d'un Roland Alpha Juno 2.

Les Alpha Juno 1 & 2 sont de petits synthétiseurs que personnellement je trouve assez amusants. Ce sont des claviers très bas de gamme mais en mesure de procurer des sons variés notamment des graves assez 'gras' très typés analogique avec pourtant un seul DCO par voix, même si mis à part la section VCF, le reste de l'architecture est digitale.

Deux versions : 49 touches pour le modèle 1, 61 pour le modèle 2. Plus d'informations ici.



Ayant visité il y a quelques années le musée de la Poste à Paris, j'avais découvert à cette occasion à la 'rubrique' dessins animés et bruitages, un Alpha Juno 1 exposé en vitrine. Je m'étais dit, à l'occasion....

Et l'occasion s'est présentée. Une petite annonce d'un Alpha Juno 2 à prix très bas pour cause de clavier présentant quelques dysfonctionnement de touches.

Ce petit synthétiseur m'a été, la aussi, expédié par la poste. A la réception j'ai pu découvrir les dégâts infligés à l'appareil par cette 'médiocre institution'. Les bords inférieurs gauche et droit étaient enfoncés, la tôle de l'appareil carrément emboutie malgré un empaquetage très correcte. A l'évidence, le paquet à subi une chute, sinon des chutes, d'une hauteur certaine. J'ai cependant pu rétablir à peu près la situation, il ne subsiste qu'une légère trace de plastique cassé sur le bord droit.

La réparation du clavier n'a présenté aucune difficulté. Il s'agit d'un problème bien connu qui nécessite le démontage complet de toutes les touches et le nettoyage du système de contact, avec remise en bonne place de la bande de caoutchouc.

http://studiorepair.com
Et c'est tout?

Effectivement, quel intérêt de présenter un tel sujet disponible à l'envie sur Internet! Et bien parce que l'histoire continue...

Et l'histoire, c'est celle de la pile. Parce qu'elle ne semble pas avoir été remplacée. Et après 30 années de service, il n'est pas incongru de penser qu'il se pourrait bien qu'une fuite d'électrolyte ne vienne perturber, à terme, le bon fonctionnement de l'appareil. Je la retire donc :

Le côté visible ne semble pas....

Alors que l'autre face présente de belles traces blanches de début de fuite.
Avec ce genre d'appareil électronique, c'est souvent la même histoire. Une pile conserve la mémoire de donnée, présente sous la forme d'une ou de plusieurs RAM statiques de 2, 8 ou 32Koctets. Ici, c'est un seul boîtier RAM de 2Koctets :

Une TC5517APL de 2Koctets de Toshiba.
Évidemment, il 'serait' simple de remplacer cette pile. Je pense que lorsqu'il est possible de faire mieux, autant le faire. Je décide donc de remplacer cette RAM de 2Koctets par une version auto-sauvegardée et totalement compatible avec le type de mémoire d'origine. Pour cela j'ai développé il y a déjà quelques mois, un ensemble de circuits de substitution :

Version 2 et 32Ko.
Pour commencer, il convient donc de retirer le circuit RAM d'origine et de le remplacer par un support de circuit :


Ça, c'est fait!
Puis, d'y placer le circuit de RAM auto-sauvegardée :

Il n'y a plus qu'à tester...
Tester de suite? Pas encore. La RAM statique de substitution réclame réellement une alimentation de 5V pour fonctionner correctement. Plus exactement, et du fait du système de sauvegarde employé sur cette nouvelle RAM, pour effectuer sa sauvegarde. La présence de deux diodes sur le circuit imprimé suggère un système classique d'alimentation par deux sources, la batterie OU l'alimentation principale de 5V, ce que confirme le schéma :


J'ai donc relié la patte d'alimentation de la RAM directement au 5V, en court-circuitant la diode D14. Et voilà!

Après avoir rechargé la RAM avec un PC en sysex, j'ai retrouvé les sonorités précédemment sauvegardées de cet Alpha Juno 2.

Note possiblement importante :  Chaque démarrage de l'Alpha Juno avec la nouvelle RAM fraîchement installée, et donc vierge, provoque le message suivant sur son afficheur : "Check Battery". Un RESET du système doit être effectué. L'opération consiste en (copié des commentaires du site de Jim Atwood) :

1) The Alpha Juno 2 must be powered off.
2) The Memory Protect switch must be off.
3) While holding down the PORTAMENTO and DATA TRANSFER buttons, turn on the power.
4) Release the buttons.
5) The display will show something like “Initlz Funct RAM”
6) Turn the power off.
7) Turn the power on.

Une traduction en français ne s'impose pas j'imagine ;-)

Au remontage physique de l'Alpha Juno : pas de chance, la nouvelle RAM installée sur le support de circuit intégré dépasse la hauteur de la ROM de 2 à 3mm. Ce qui provoque non seulement le contact entre les broches du circuit imprimé de la RAM et le châssis métallique du clavier, mais aussi une flexion du circuit imprimé.

Une solution simple pour remédier à ce problème eût été de coller un bout de carton sur le circuit additionnel. J'ai préféré dessouder le support de circuit intégré de la carte du Juno et y souder directement le circuit de la nouvelle RAM. Dès lors le remontage s'est effectué normalement.

Que reste-t-il à faire sur ce synthé? Le changement de son afficheur. Le rétro-éclairage d'origine ne fonctionne plus. J'ai donc commandé le même type d'afficheur, mais à rétro-éclairage LED. 'Normalement' ce nouvel afficheur 'devrait' être compatible avec l'ancien. Sinon, il risque d'y avoir le même problème que celui rencontré par Jeroen Oldenhauf lors du remplacement de l’afficheur d'origine pas un modèle OLED en principe compatible!

Et pour finir ce billet :  les machines développées jusque pendant les années 80 étaient habituellement fournies AVEC le schéma du système l'électronique et mécanique. Heureusement car aujourd'hui il serait souvent bien difficile de les maintenir en état de marche. Et pourtant, le concept même d'Open Hardware n'existait pas. Tout pouvait donc être copié. Des idées étaient certainement reprises mais est-ce un mal? non sans doute parce que cela oblige à toujours plus d'inventivité. Les constructeurs qui ont fermé leur porte ont été poussés à la sortie certainement pour d'autres raisons qu'une copie illicite ayant cassé leur marché.

Plus significatif encore, le fait d'avoir publié les schémas et parfois les caractéristiques des systèmes logiciels à permis et permet toujours à des passionnés de créer des modifications matérielles et/ou logicielles dont le but est d'améliorer les caractéristiques d'origine des appareils. Et oui, tout cela à bien changé. Que faire de ce super téléphone acheté fort cher, dont la batterie n'est même pas remplaçable sans détérioration de l'appareil? Il ne s'agit même plus d'obsolescence programmée mais de fabrication et donc d'achat de déchets neuf! Quelle valeur peut avoir un déchet neuf, hein, monsieur Apple ou monsieur Samsung?...

A suivre pour la mise en place du nouvel afficheur...

Quelques jours plus tard...

J'ai reçu un 'certain nombre' d'afficheurs en version 1 ligne de 16 caractères. Afin de tester un de ces exemplaires sur l'Alpha Juno 2, il bien il convient de commencer par retirer 'l'ancien' système d'affichage.

Il faut donc retirer l'afficheur, évidemment, mais aussi la partie génération de la haute tension du rétro-éclairage par film qui ne sera plus nécessaire puisque le nouvel afficheur possède un rétro-éclairage à LED, ainsi que la résistance qui fixe la tension de polarisation du LCD. Une fois le tout retiré, cela donne tout d'abord ceci :


Sur cette image est aussi présent le transistor oscillateur nécessaire à la mise en fonction du transformateur haute tension. Je lui ai pris deux pattes pour effectuer un pont sur la carte d'alimentation. En partie basse, le nouvel afficheur.

J'ai dessoudé aussi de l'ancien afficheur le connecteur pour câble plat, et l'ai ressoudé sur le nouvel afficheur. Ce qui m'a permis de monter le nouvel écran directement sur l'Apha Juno puisque les quotes sont identiques. Sauf l'épaisseur. Le rétro-éclairage LED demande plus de place que celui par film. J'ai donc du trouver quatre vis un peu plus longues pour fixer l'écran :


Il est juste nécessaire de ne pas visser trop fort les vis. Le modèle choisi, auto-taraudeuse, se bloque sans risque de dévissage : parfait. J'ai aussi réutilisé le câble du rétro-éclairage pour le connecter au nouvel afficheur. Sur l'alimentation, les modifications nécessaires sont peu nombreuses et faciles à réaliser :


Le transformateur haute tension a disparu, ainsi que son transistor de commande, situé juste en dessous. Accessoirement, le Juno ne produira plus non-plus ce bruit strident d'alimentation à découpage. Ça n'est pas un mal! Le connecteur CN2 ne transporte plus la haute tension, mais le 5V. Pour des raisons de commodité, le fil noir véhicule le +5V alors que le blanc est maintenant la masse. En fait, la broche du fil blanc est déjà connectée à la masse sur l'alimentation. Je me suis juste servi des deux pattes du transistor pour relier le +5V passant à proximité à la deuxième broche du connecteur, celle ou s'enfiche le fil noir.

Vient le moment tant attendu : le test...


Quasiment comme l'original! Et du plus bel effet sur ce synthétiseur. En fait je triche un peu. Le 'vrai' premier test s'est soldé par un afficheur n'affichant rien. Avant de soupçonner une erreur de ma part (j'avais quand même bien tout vérifié avant), ou un problème de protocole, j'ai décidé de m'occuper de la tension de polarisation. J'avais dans l'idée qu'elle ne devait pas être correcte pour ce nouvel afficheur. Voici ce que dit le schéma de l'appareil :


C'est une résistance de 5,6KOhms qui règle la tension de polarisation du système d'origine. Système un peu 'baroque' puisque c'est en fonction de l'intensité réclamée par le système de polarisation de l'ancien afficheur, que la résistance a été calculée. Bref, pour faire simple, j'ai ôté cette résistance, référencée R66 sur le circuit imprimé, et l'ai remplacée par un trimer 10 tours de 10KOhms. Une des pattes de ce trimmer est directement relié au pad GND ou était auparavant la résistance, le 'curseur' du trimmer relié lui, à l'autre côté de la résistance d'origine, directement à la patte 55 du connecteur LCD de la carte mère. Quant au +5V, je l'ai pris sur la patte d'alimentation d'un circuit intégré logique, et l'ai relié à la troisième patte du trimmer, comme ceci :


Le système n'est pas inesthétique et la vis du trimmer m'a permis de régler avec précision le contraste du nouvel afficheur. En fonctionnement normal, il n'y a aucun problème d'affichage. cet afficheur semble donc parfaitement compatible avec celui d'origine :


Voilà, tout simplement! ATTENTION : la source lumineuse de la LED sur le côté droit de l'afficheur ne se distingue absolument pas en utilisation normale. L'effet d'intensité sur l'image est du au capteur de l'appareil photo.

En résumé, sur cet Alpha Juno 2 les opérations effectuées ont été les suivantes :

- Effacement (réussi) des dégâts infligés à la caisse par la poste (~30mn).
- Nettoyage du clavier, ce qui implique son démontage/remontage total (~90mn).
- Remplacement (démontage/remontage) de la RAM statique d'origine et suppression de la pile (~90mn).
- Remplacement de l'afficheur (~90mn en comptant aussi le temps passé sur Internet pour trouver un modèle adéquate).
- Démontage/remontage de la machine (~25mn).

Cela représente plus de cinq heures de travail sur la machine, et 'thanks to' le système redistributif dont est pourvu le pays et les ponctions obligatoires auquel le travail est sujet pour proroger sa survie, cela revient à un coût 'réel' de 300 à 400€ pour une rétribution net d'à peu près 15€ de l'heure. La cote d'un tel Alpha Juno est d'environ 250€ en état de fonctionnement. Seule la réparation des touches défectueuses du clavier et le simple remplacement de la pile semblent donc être des opérations pertinentes. Les améliorations apportées, bien que très intéressantes ne sont clairement pas rentables d'un point de vue économique. Dommage, la machine est maintenant plus 'robuste' qu'avant, et ce doublement de temps de travail pourrait générer des emplois. Question de choix de société!

30 Août 2016 : Après quelques jours d'utilisation, je trouve ce petit synthétiseur vraiment sympa à utiliser, et capable de produire des son très intéressants. Mais, comme souvent avec ce que je considère être la 'mauvaise' utilisation du numérique, programmer cet appareil n'est vraiment pas pratique. Trouver un PG300 à prix 'raisonnable' n'étant pas simple non plus, j'ai décidé de tenter la création d'un programmateur externe dédié à l'aide d'un afficheur graphique tactile. L'interface graphique devrait ressembler à ça :


J'ai déjà pu transférer cette interface dans l'afficheur et tester le fonctionnement des différents curseurs avec succès. Il me faut maintenant développer une petite carte processeur d'adaptation pour convertir les données de cette interface en Sysex sur liaison M.I.D.I. Peut-être l'occasion d'utiliser un processeur ARM équipé d'un nombre suffisant de ports série.

Touche finale : je possède quelques afficheurs neufs pour ce type de synthés. Si un exemplaire vous intéresse :

jeudi 14 juillet 2016

Un Alesis QS6 revient à la vie, mais avec de grosses séquelles : La Poste et le 100% médiocrité!

Quelques exercices d'assouplissement après pratiquement deux mois de travail intensif pour préparer les sujets que j'ai présenté au MakerFaire de Nantes ce week-end du 9-10 juillet. Je reviendrai sur cet évènement dans un prochain billet...

Quoi de mieux pour se détendre que d'entreprendre le sauvetage d'une machine sans intérêt, mais... à la signature sonore intéressante. Je viens d'acquérir ce QS6 au prix astronomique de 80€, frais de port compris, avec un gros problème de génération sonore.

le QS6 en image :

Image récupérée sur le Web.
Le symptôme est assez simple. L'appui d'une touche du clavier génère une espèce de séquence de divers instruments à diverses fréquences. J'ai simplement pressé une note aigüe et plus grave pendant environ 30s chaqu'une :



Intéressant n'est-ce pas?

Serait-ce le processeur de la machine qui perd les pédales?
Sans doute pas, le fonctionnement général du panneau de contrôle ne présente aucun problème.
Il convient alors d'étudier de près la carte électronique du synthé :


Rien de compliqué sur cette carte. Les différentes sections sont très faciles à identifier. A noter que la section 'génération sonore' comporte la batterie de ROM d'échantillons sur l'autre face, juste sous le connecteur de carte d'extension.

Récapitulatif :

  • La section effet fonctionne. Le rajout d'effet rajoute des effets, et c'est tout!
  • La partie processeur fonctionne. Je ne la met pas en cause.
  • La section de gestion des 'organes de commande' fonctionne aussi.
  • Et de toute façon si c'est le gros circuit avec sa pastille rouge qui est en cause, je ne pourrai rien faire de plus. Mais je ne pense pas. Les circuits de chez AMI sont 'forcément' fiables.

Ne reste donc plus que la génération sonore à tester. Les soudures de la banque de ROM ont déjà été refaites. Je ne mets de toute façon pas ces circuits en cause, le rendu sonore serait différent :

Belle couche de décapant!
Que reste-il à vérifier?

Et oui, un 'vulgaire' décodeur logique de type 138 en version AC, un 74AC138 de chez Fairchid :



Un rapide coup d'œil aux différents signaux confirme mes doutes :

Entrée E3

Au repos, la seule patte active de ce 138 est la patte n°6 nommée E3 :


Pour faire simple : toutes les sortie Y0 à Y7 sont à '1' quand AU MOINS une des entrées de sélection de ce circuit est INACTIVE. E1 et E2 sont câblés à '0', ces entrées sont actives. C'est alors E3, seul, qui sert de signal de validation des sorties. E3 est très majoritairement à '0' donc inactive, avec de très petits pics de sélection à une fréquence de 48KHz (voir image du signal au dessus).

En conséquence de quoi, je devrais avoir toutes les sorties à '1' sauf une d'entre elles qui devrait présenter le même genre de pic, mais vers le '0'. Les entrées à décoder A0 à A2 sont stables et à '0'. Il ne devrait donc y avoir que la sortie Y0 à changer d'état à une fréquence de 48KHz.

En réalité, toutes les sorties restent à '1' SAUF la sortie Y1 'scotchée' irrémédiablement à '0'. Or, les sorties de ce décodeur servent à sélectionner les ROM d'échantillon. Le doute n'est plus permis, je retire ce composant :


En tout les cas, cela confirme bien le fait que ce circuit 74AC138 sélectionne les ROM d'échantillons.

Ne reste plus qu'à le remplacer. J'ai retrouvé sans problème le même type de circuit chez Farnell au prix de 0,342€HT à l'unité (code commande : 2453170). J'en ai profité pour acquérir aussi d'autres composants, histoire de rentabiliser les frais de commande chez Farnell.

Une fois ce circuit remplacé, cela donne cici :


Forcément : c'est beaucoup mieux!

Que reste-il à faire sur cette machine?
En fait plus grand chose au niveau électronique. Nettoyer les traces précédentes d'intervention et remettre en place une pile de sauvegarde de 3V.

Le panneau de commande du synthé est en bon état, il ne requiert qu'un léger nettoyage.

LA POSTE :

Par contre j'en profite pour adresser un niveau 100% médiocrité à la poste. J'ai reçu très récemment un Alpha Juno2 en panne, lui aussi à prix très bas. Les angles de la caisse étaient bien abîmés. J'ai pu redresser le tout avec un résultat visuel très satisfaisant. Évidemment, sur ce genre de synthé, 'bas de gamme', la tôle de la caisse ne ressemble pas a celle d'une machine de chez Séquential, mais quand même... Pour ce QS6, j'ai eu droit à une partie du clavier explosée :

Joli travail La Poste!!!
J'ai bien noté aussi le petit commentaire du livreur : l'expéditeur à effectué un très bon emballage!
Ce qui pour moi raisonnait de suite comme grosse source de problèmes à venir, je n'ai pas été déçus!!!

LA POSTE : NE PRENEZ PAS EN CHARGE DES ENVOIS QUE VOUS N'ETES PAS CAPABLES DE GÉRER CORRECTEMENT!!!

Arguons qu'il s'agit certainement d'un problème de manque de personnel ou de chaîne de tri vétuste!!!
En sachant, évidemment, que les centres de tris actuels sont sur-équipés en matériels modernes et en personnels disons, hyper motivés et impliqués :


Je vais tenter une opération de sauvetage du clavier de ce QS6. Je verrai bien si ça aboutit. Toujours est-il que le générateur sonore fonctionne parfaitement, c'était quand même ça le 'jeu', à la base.

Le clavier est forcément difficilement utilisable, mais heureusement il reste la solution M.I.D.I.
Et maintenant que j'ai réalisé des convertisseurs me permettant la mise en place d'une liaison M.I.D.I. beaucoup plus pratique, je peux 'planquer' ce synthé un peu à l'écart...