Skyduino:~#
Articles
arduino, Corrigé, programmation, projet

[Avr/Arduino] Code de test pour chipset YM2612

Bonjour tout le monde !

L’air de rien ça fait quand même pas mal de temps que j’avais pas entrepris un projet électronique vraiment DIY.
Amateurs de musique old school, chiptune et jeux vidéos datant d’une autre époque vous allez être servis 😉
Bonus : pour cet article les cartes Arduino sont autorisés.

YM2612, kés ke cé ?

DSCF0572

Le YM2612 est un joli petit circuit électronique conçu par Yamaha dans les années 1980/1983.
C’est ce circuit qui donnait de la voix à la console de jeu Megadrive à l’époque.

Aujourd’hui bien que la production ait été totalement arrêté depuis des années on peut encore trouver ce genre de circuit sur ebay.
(Ou directement l’extraire d’une console de jeu Megadrive si vous avez la chance d’en avoir une, bande de petit chanceux !)

Seul problème : sur ebay les arnaques sont fréquentes, surtout sur ce genre de produits « old school » plus fabriqués, donc rares.
L’astuce classique consiste à prendre un circuit quelconque ayant un boitier similaire à celui d’origine, de sabler le dessus pour effacer la référence et repeindre une référence par dessus.
C’est tellement bien fait que le seul moyen de savoir si on possède un circuit d’origine ou un simple morceau de plastique est de tester son fonctionnement …

Pour ma part j’avais de (très) gros doutes concernant l’origine de mes YM2612. Finalement après tests il semblerait qu’il s’agisse bien de circuits d’origines, juste en très bon état.
Tant mieux.

Le code de test

Le code de test que j’ai réalisé est basé sur un autre code de test que m’a fourni Furrtek (si vous connaissez pas le site de Furrtek je vous conseille vivement d’y jeter un œil !).
Je l’ai adapté à ma sauce, documenté et bidouillé pour pouvoir fonctionner indifféremment sur breaboard ou avec une carte Arduino UNO (pas mega ou autre).

Ce code de test est très simple : il joue une note de musique avec une voix style « grand piano » … indéfiniment.
Je sais ce n’est pas très impressionnant mais ce n’est pas le but d’un code de test.

Quelques astuces pour savoir rapidement si vous avez un morceau de plastique ou un vrai YM2612 :
– La peinture utilisée pour marquer les circuits est normalement à base d’epoxy qui résiste à l’acétone. Un coup de coton tige sur la référence et vous serez fixé quand à l’origine du circuit.
– Les vrais YM2612 consomment pas mal de courant, de l’ordre de 100mA environ d’après mes mesures.
– Les vrais YM2612 chauffent un peu après quelques minutes d’utilisation.

Le code source est disponible sur mon github ici :
https://github.com/skywodd/avr_vgm_player/tree/master/ym2612_test
(SPOILER: c’est un sous-dossier d’un projet beaucoup plus grand ;))

EDIT :
A) Comment compiler le code source avec l’IDE Arduino puisqu’il s’agit d’un projet « compatible Arduino UNO » ?
1) Allez sur mon projet github
2) Téléchargez le fichier ym2612_test.c
3) Renommez le en ym2612_test.ino et placez le dans un dossier nommé « ym2612_test »
4) Ouvrez le tout avec l’IDE Arduino
5) Enjoy !

B) Ou trouver le câblage des broches ?
1) Allez sur mon projet github
2) Regardez en bas de page. J’ai fait un joli tableau 😉

Pour plus d’informations sur le fonctionnement interne du YM2612 et sur la séquence de test voici la bible du YM2612 :
http://www.smspower.org/maxim/Documents/YM2612

Le montage (version breadboard)

Je n’ai pas eu le courage de refaire le montage en version Arduino, mais c’est exactement la même chose.

DSCF0553

Sur breadboard le montage de test ressemble à … « ça ».
C’est un peu fouillis je vous l’accorde.

À gauche : la partie microcontrôleur (un montage « compatible Arduino » tout ce qu’il y a de plus classique)
À droite : la partie YM2612.
En bas : la partie programmation (j’utilise le port ICSP pour programmer mon ATmega et non un bootloader comme sur une carte Arduino classique).
En haut : vous ne pouvez pas le voir sur cette photo mais c’est la partie analogique pour la sortie audio.

DSCF0561

Le schéma de la partie microcontrôleur :

DSCF0585

Ce magnifique schéma totalement illisible a été réalisé avec le logiciel « PapierStyloCAO 1.0 » 🙂
(oui c’est une blague ce logiciel n’existe pas, j’avais juste pas envie de créer des empreintes Eagle pour faire mes schémas)

DSCF0556

Le schéma de la partie YM2612 :

DSCF0580

Remarque :
Ne pas oublier le gros condensateur de lissage sur AVCC.
Ne pas oublier de tirer la broche TEST (notée parfois NC) à +VCC.

Pour le brochage du YM2612 en format texte :
http://en.wikipedia.org/wiki/Yamaha_YM2612

DSCF0563

Pour la partie ICSP je pense qu’il n’y a pas besoin de schéma 😉

DSCF0567

Le schéma de la partie analogique (très basique, juste le strict minimum) :

DSCF0582

Remarques :
La photo et le schéma diffèrent un peu car j’ai plusieurs montages sur ma breadboard. (cf image en dessous)
Les résistances de tirage à la masse de 1K servent à charger la sortie audio (10x l’impédance de la sortie).
C’est une sortie « ligne » et non haut parleur, brancher un casque là dessus ne sortira pas de son.

Bonus du Week-End

DSCF0551

Bientôt un code de test pour le SN76489.
Je vous laisse chercher sur google pour savoir ce que c’est (et sur mon github pour avoir une idée de ce qui ce prépare) 😉

Discussion

12 réflexions sur “[Avr/Arduino] Code de test pour chipset YM2612

  1. Encore un sujet sympa 🙂

    Par contre le YM2612 est à droite sur la photo 😉

    Bon ok ok je sors … 😀

    Publié par Trigger | 15 septembre 2013, 18 h 23 min
  2. pas facile à trouver, des condensateurs de 10 yocto farads 😀

    Joli montage. Mais j’étriperai pas ma megadrive pour en sortir le chip 😀

    Le sééééégaaaaaa! du début m’impressionnait toujours quand j’étais gamin parce que je me demandais comment une machine aussi simple (elle ne faisait que des sons « électroniques ») arrivait à simuler une « voix » O_o

    Publié par f4grx | 15 septembre 2013, 18 h 46 min
    • C’est pô gentil de se moquer de l’écriture des autres 🙂

      -> ebay + 2€ = YM2612 😉

      Le YM2612 peut générer n’importe quel signal, à mon avis le « sega » au boot doit utiliser le canal PCM pour la lecture.

      Publié par skywodd | 17 septembre 2013, 19 h 10 min
  3. Sympa comme projet 😀 Tu as quoi comme breadboard, elle me parait assez grande

    Publié par Eliobou | 15 septembre 2013, 20 h 54 min
    • « MCP ML-47B »
      Je l’avais acheté chez Selectronic je crois à l’époque.
      J’en ai une bien plus grande fait maison (réservé pour le montage final).

      Publié par skywodd | 17 septembre 2013, 19 h 12 min
  4. Et pour le 2149 de l’Atari ST …
    ;-))

    Publié par pasbel | 16 septembre 2013, 12 h 22 min
    • D’après wikipedia le YM2149 c’est un chipset « PSG » et non un chipset FM de la lignée OPN.
      Faudrait regarder la doc (si il en a une).

      Publié par skywodd | 17 septembre 2013, 19 h 16 min
  5. Tu veux nous faire un système son de Megadrive complet ou quoi ? 😉
    Parce que d’après le wiki(pedia), le SN76489 est utilisé dans le système son des consoles Sega pour sortir des sons (carrés, et autres) …
    Bon tant qu’a faire le système son, autant faire aussi la partie vidéo, contrôles etc. … Vive la Mega-DIY ^^

    Publié par Geeker | 17 septembre 2013, 18 h 40 min

Rétroliens/Pings

  1. Pingback: Adventures with FM sound and the YM2616 | dave's blog of art and programming - 1 novembre 2017

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.