Gamoover

[move]Pour vous aussi la chipo ne sera jamais qu'un bootleg de merguez (c)sushy18 ? Alors soyez les bienvenus sur Gamoover ! [/move]

Adaptation platine chinoise pour Asteroids, Star Wars et autres jeux vectoriels

Démarré par english2, Lundi 10 Mai 2021, 19:11:41 PM

english2

Bonsoir gc339, bonsoir à tous.

La commande de la nouvelle PCB "v.st Colour Mod v2" est partie ! J'ai hâte de les recevoir, et d'en monter une pour commencer à tester. Il reste l'étape potentiellement complexe de ré-écriture des lignes de code pour le Teensy 4.1 avant de pouvoir la tester. J'ai commencé mais ça sera plus facile une fois la carte reçue.

Compte tenu des frais de port élevés vs le prix des PCB, j'en ai profité pour passer une commande supplémentaire de cartes de déflection Amplifone (utiles dans Star Wars et d'autres jeux vectoriels en couleur). J'ai réalisé deux petites modifications supplémentaires par rapport à l'origine :
- le dédoublement des emplacements de certains transistors d'origine avec des pattes dans l'ordre EBC (devenus quasi obsolètes, difficiles à trouver et chers) afin de permettre d'utiliser optionnellement des pattes BCE à la place, ce qui ouvre le champ de possibilités et évite de devoir croiser les pattes BCE pour les faire rentrer dans les emplacements d'origine.
- le remplacement des fils W1 à W9 par des traces de cuivre, dans un objectif de fiabilisation

Au passage, il me reste 4 cartes de déflection vierges de la 1ère série (qui comportent des emplacements pour des diodes de protection par rapport à l'origine). Si cela intéresse quelqu'un, faites-moi signe par MP.

Voici deux petites images pour la route qui montre les emplacements des transistors qui ont été dédoublés. De retour dans 15 jours pour la suite de l'aventure !




If at first you don't succeed...

Little_Rabbit

Salut,

Super pour le lancement de la fabrication des PCB !  ^-^

Très bonne idée que de prévoir deux implantations pour ces brochages de transistor, EBC ou BCE sur tes cartes Amplifone !

Citation de: english2 le Vendredi 22 Avril 2022, 19:37:32 PM
- le remplacement des fils W1 à W9 par des traces de cuivre, dans un objectif de fiabilisation

Je n'ai pas compris ce passage : quels sont ces fils W1 à W9 ? Pourquoi étaient-ils sous forme de fils s'ils pouvaient être des pistes ? :)

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

english2

La PCB Amplifone d'origine n'a qu'une face en cuivre. J'imagine que lors de la conception il était plus facile ou moins couteux (car cela évite une 2ème face en cuivre) de mettre des fils apparents. Ces fils sont la source de beaucoup de problèmes avec les Amplifone, donc sauf à vouloir une carte vraiment identique à l'origine, cela me semblait une bonne idée de les éliminer (en gardant les vias). 
If at first you don't succeed...

Little_Rabbit

Salut,

Merci pour tes explications.

Ah OK, c'est ce qu'on appelle en jargon d'électroniciens des "straps" : router une partie du circuit avec des straps permet en effet de réduire le coût du circuit imprimé en optant pour une fabrication "simple face" :).

Mais personnellement, j'aurais attribué la même note de fiabilité à un circuit "simple face + straps" qu'à un "double face + via". Dans l'électronique grand public, il est (ou était) très fréquent d'avoir recours à des circuit imprimés "simple face", sans que cela nuise à la fiabilité de l'appareil :).

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

english2

Bonjour ! Merci de m'avoir donné le terme habituel en français, je ne connaissais pas le mot "strap" dans ce contexte (pourtant c'est un mot en anglais). En anglais on parle plutôt de "jumper".

Par rapport au choix de mettre des traces de cuivre à la place des straps, je me suis basé sur les documents bien connus qui décrivent la réparation de cartes Amplifone :

- "HOW TO DIAGNOSE, REPAIR AND UPGRADE YOUR AMPLIFONE AND WELLS-GARDNER COLOR VECTOR (XY) MONITORS version 6.1 (4-6-96) by Gregg Woodcock" qui dit "Zero-Ohm Resistor Jumpers - Problem:  The *brown* zero-ohm jumpers (W1 or W2) on the Deflection PCB open up on the High-Voltage PCB.  Zero-ohm resistors look like regular resistors, but are marked on the PCB assembly and the schematic with a W followed by a number. Solution:  Replace the jumpers with pieces of wire."
- "Amplifone HV and Deflection FAQ and Guide by Michael Kelley Version 1.2 March 28, 2002" avec de multiples références aux pannes provoquées par les straps

Enfin, j'ai une carte Amplifone d'origine, et je peux confirmer que tous ces straps avaient besoin d'être remplacés pour faire fonctionner la carte. Au bout de 40 ans, la corrosion les avaient bien attaquées, ce qui ne devrait pas être un problème avec du cuivre recouvert.

J'ai laissé les vias simplement au cas où quelqu'un veuille rajouter tout de même des fils pour avoir un look d'origine, mais les traces de cuivre sur la 2ème face devraient être une garantie de bon fonctionnement sur le long terme, à mon avis. En tout cas, ça ne fera pas de mal !
If at first you don't succeed...

english2

De retour de vacances, les PCB ont été livrées ainsi que quelques composants. Le montage va pouvoir commencer ...

If at first you don't succeed...

english2

If at first you don't succeed...

english2

Résultats des premiers tests avec une adaptation rapide du code pour Teensy 4.1 en mode SPI :

- comme prévu, rien ne marche avec une alimentation unique par USB de la Teensy 4.1 (sans doute la consommation plus élevée à 600Mhz que la v3.2 à 120Mhz), une alimentation 5V supplémentaire a donc été rajoutée à l'emplacement prévu, ce qui permet d'obtenir les tensions attendues : +/-12V, 5V et 2.5V
- la bonne nouvelle est qu'une image de la mire de test apparaît ! La vitesse de rafraichissement est beaucoup plus élevée qu'avec la Teensy 3.1, et l'image est bien plus nette, très prometteur !
- en revanche, les axes sont inversés, et je n'arrive pas à les corriger pour le moment
- le bleu et le vert fonctionnent, pas le rouge : ce problème et celui au-dessus est peut-être un problème d'adressage des canaux des DAC qui diffère pour cette version de Teensy
- les niveaux de luminosité ne fonctionnent pas encore
- la carte de déflection se met à fumer rapidement - les tensions des couleurs sont parfois trop élevées, et bizarrement sont parfois négatives : est-ce que le fait de débrancher l'alimentation -12V du TL3474 qui alimente les couleurs permettrait d'éviter cette situation (en attendant de comprendre pourquoi cela arrive) ?

Les tests continueront après un peu de réflexion, et le temps de dépanner la carte de déflection Amplifone ;-)

If at first you don't succeed...

english2

Un peu de progrès ce matin : le problème d'axes inversés est corrigé, de même que l'absence de rouge et les niveaux de luminosité (bien visibles dans la photo ci-dessous avec la sonde branchée sur le canal rouge et l'oscilloscope réglée sur 5v par division). Le problème qui reste est la tension générée par chaque canal de couleur - 12.5V max au lieu de 4V. Il serait possible de corriger cela par programme, mais il faudrait que la carte ne soit pas capable de générer de telles tensions par accident car cela endommage la carte de déflection.

Avec la sonde sur le pin 10 d'IC5 (sortie du DAC qui génère le rouge en amont du op amp), on voit exactement les mêmes tensions, donc les recherches se poursuivent pour savoir d'où vient la surtension ...

If at first you don't succeed...

gc339

Citation de: english2 le Samedi 07 Mai 2022, 13:07:09 PM
Un peu de progrès ce matin : le problème d'axes inversés est corrigé, de même que l'absence de rouge et les niveaux de luminosité (bien visibles dans la photo ci-dessous avec la sonde branchée sur le canal rouge et l'oscilloscope réglée sur 5v par division).
Peut-on savoir quels étaient les problèmes et comment ils ont été corrigés?

Citation de: english2 le Samedi 07 Mai 2022, 13:07:09 PM
Avec la sonde sur le pin 10 d'IC5 (sortie du DAC qui génère le rouge en amont du op amp), on voit exactement les mêmes tensions, donc les recherches se poursuivent pour savoir d'où vient la surtension ...
Bizarre une telle amplitude en sortie des DAC's. Serait-ce un problème de masse avec l'oscilloscope? Sur quoi est raccordé la masse de la sonde? 0 volt logique? 0 volt analogique?
Pour vérifier que les DACs sont OK, la solution la plus simple serait de courber leur pin 10 pour qu'elle ne fasse pas contact avec la lyre du support et de connecter la sonde de l'oscillo directement dessus, A pleine échelle, la tension de sortie ne devrait pas être supérieure à celle d'alimentation.
Le repos, c'est fait pour les jeunes. Ils ont toute la vie devant eux. J. Gabin/M. Audiard





english2

Les premiers problèmes constatés étaient les suivants :

1/ Non fonctionnement de la carte avec une alimentation uniquement USB de la Teensy 4

Diagnostic : l'hypothèse est que le port USB n'arrive pas à alimenter le circuit entier, et les tensions diminuent au point où la Teensy ne démarre pas
Solution : ajout d'une alimentation 5V 1A externe sur le port J6 (la Teensy étant alimentée pour le moment par du 5V 3A externe par USB, le strap sur la Teensy n'est pas coupée car il n'y a pas encore de régulateur LM2940 à l'emplacement U5)

2/ Impossible d'inverser les axes XY quand le flag SWAP_XY était positionné :

Diagnostic : il n'y avait plus de test du flag d'inversion "SWAP_XY", donc les canaux n'étaient jamais inversés
Solution : ajout de code de type IF SWAP_XY THEN DAC_X = 1, DAC_Y = 0 ELSE DAC_X = 0, DAC_Y = 1

3/ Absence de rouge sur l'écran vectoriel :

Diagnostic : erreur sur le schéma par rapport à la v1 de la PCB ; le DAC rouge était raccordé au pin 10 de la Teensy 3.2, sur la v2 il est sur le pin 8
Solution : Modification du programme pour utiliser le pin 8

4/ Absence de niveaux de luminosité avec la carte connectée à l'écran vectoriel

Diagnostic : l'oscilloscope montre qu'ils sont bien présents - l'hypothèse étant que les tensions correspondantes s'étalent de 0 à 12V environ au lieu de 0 à 4V.
Solution : non applicable

5/ la carte de déflection se met à fumer quand la carte est branchée, pas toujours tout de suite

Diagnostic : Trois hypothèses pour le moment :-

a) les tensions semblent s'étaler de 0 à 12V environ au lieu de 0 à 4V. Des tensions négatives sont parfois observées. Ces premiers tests ont été menés avec un multimètre. Le passage sur oscilloscope ne montre pas de tension négative, mais semble confirmer la surtension.
b) autre hypothèse, la carte de déflection est fatiguée par le stress des différents tests, et nécessite le changement de certains composants
c) le régulateur LP2950 laisse passer du 12V à certains moments ???

Solution : pour le moment, les résistances R12, R15 et R16 de 10K ont été changées pour du 68R (changées par curiosité afin de voir l'impact sur la tension en sortie, elles seront rechangées pour du 10K)

La sonde de l'oscilloscope est connectée à la masse RE_GND1 (donc AGND) et la sonde en elle-même sur RE_SIG1, 5V par division (cf. photo ci-dessous).

Je viens de refaire les tests pour la n-ième fois et pour le moment l'oscilloscope montre un échelonnement correct de 0 à 4V (1V par division dans la photo ci-dessous). Selon les moments les tensions obtenues ne sont pas les mêmes avec l'oscilloscope, et je soupçonne un problème de sensibilité du sélecteur de tension/div (peut-être à nettoyer). Je n'explique pas encore le fait que des tensions à 12V ont été mesurées à certains moments avec le multimètre. Pour le moment la PCB a l'air de fonctionner, je vais vérifier la carte Amplifone avant de refaire un test.



If at first you don't succeed...

english2

Fusible changé sur l'Amplifone, et on obtient ça (décidément, je n'arrive pas à prendre une bonne photo avec mon téléphone de l'écran, y a-t-il un réglage en particulier à utiliser ? l'image est très belle en réalité)

Donc tout fonctionne pour le moment. Je vais réintégrer dans le programme l'interface avec AdvanceMAME afin de tester un jeu (Star Wars par exemple car c'est le plus complexe et fait un bon stress test).



If at first you don't succeed...

english2

L'interface avec AdvanceMAME fonctionne désormais, y compris pour les jeux en n&b. Le Raspberry Pi affiche parfois un message "under voltage" au démarrage quand la Teensy est branchée. Du coup le régulateur LM2940 a été commandé afin de le soulager.

Globalement les performances avec la Teensy 4.1 en SPI sont meilleures que la Teensy 3.2 en DMA, mais il va falloir chercher encore à optimiser le code (peut-être du côté d'AdvanceMAME également).

Un premier test des boutons n'a pas fonctionné, il va falloir creuser ce sujet pour comprendre pourquoi: sans doute un problème lié au code encore.











If at first you don't succeed...

gottlieb

C"est beau comme rendu  :-* La couleur en vectoriel, cela change du trait blanc  ^-^
Le projet avance bien  ^-
A la maison  ;)
bornes: racecab speed up Gaelco et Ridge racer, table cocktail Taito SI part II ,cockpit Sega Space tactics, 1 borne Karateco, 3 bornes Jeutel, tactile megatouch , Naomi 1, Naomi 2, title fight sega, Time crisis 2 et 3 DX, HOTD2 et 1 mini borne enfant
flipper: silver slugger, pin bot, Whitewater,Indianapolis 500 Earth wind and fire
Billard: superleague diplomat
dart: Lowen royaldarts ...
Pashislot: Hokuto no ken
Jukebox jupiter mirage 120 et Atari Hit Parade 144
babyfoot Roberto sport
Ma gaming room :-*

gc339

Bonjour à tous, bonjour Robin.

Citation de: english2 le Samedi 07 Mai 2022, 23:24:45 PM
L'interface avec AdvanceMAME fonctionne désormais, y compris pour les jeux en n&b. Le Raspberry Pi affiche parfois un message "under voltage" au démarrage quand la Teensy est branchée. Du coup le régulateur LM2940 a été commandé afin de le soulager.
J'ai donc bien fait de vous suggérer l'adjonction de ce régulateur optionnel.

Citation de: english2 le Samedi 07 Mai 2022, 23:24:45 PM
Globalement les performances avec la Teensy 4.1 en SPI sont meilleures que la Teensy 3.2 en DMA, mais il va falloir chercher encore à optimiser le code (peut-être du côté d'AdvanceMAME également).
Pour rappel, ce que j'avais écrit dans un message précédent:
Citation de: gc339 le Dimanche 17 Avril 2022, 22:34:29 PM
Le Teensy 4.0 ou 4.1 peut gérer 3 bus SPI, alors pourquoi ne pas différencier les DAC's MCP4922 en attribuant un bus à chacun? Il serait ainsi possible de transférer 3 informations simultanément, ce qui devrait participer à améliorer les temps de traitement, qui plus est en affectant les DAC's X et Y dans des boitiers MCP4922 différents.

Citation de: english2 le Samedi 07 Mai 2022, 23:24:45 PM
Un premier test des boutons n'a pas fonctionné, il va falloir creuser ce sujet pour comprendre pourquoi: sans doute un problème lié au code encore.
Comme je n'ai pas vu de boutons sur l'ancienne carte "v.st"avec le Teensy 3.2, je suppose que l'adjonction de ces boutons est de votre fait.
Le problème avec les boutons, c'est le rebond de leur contacts, il existe une méthode logicielle dite "des compteurs verticaux" pour les traiter simultanément: "Vertical counters allow for an elegant, compact and efficient debouncing algorithm which can debounce multiple inputs concurrently"

Le repos, c'est fait pour les jeunes. Ils ont toute la vie devant eux. J. Gabin/M. Audiard





english2

Bonjour gc339, bonjour à tous

CitationJ'ai donc bien fait de vous suggérer l'adjonction de ce régulateur optionnel.

Oui, tout à fait. J'ai réessayé avec un câble USB plus court et de meilleure qualité, et le message de sous-tension disparaît, mais le câble long est préférable pour faire des tests.

CitationLe Teensy 4.0 ou 4.1 peut gérer 3 bus SPI, alors pourquoi ne pas différencier les DAC's MCP4922 en attribuant un bus à chacun? Il serait ainsi possible de transférer 3 informations simultanément, ce qui devrait participer à améliorer les temps de traitement, qui plus est en affectant les DAC's X et Y dans des boitiers MCP4922 différents.

Je ne suis pas suffisamment calé en programmation de Teensy pour démarrer plusieurs transferts simultanés vers les DAC. J'ai une expérience, vieille de 30 ans, de création de "threads" indépendants exécutés par un OS multitâche pré-emptive de type OS/2 et Windows NT. J'ai vu que le Cortex-M7 dans le Teensy 4.1 peut gérer le mode thread (https://www.sciencedirect.com/topics/engineering/thread-mode), mais cela reste à étudier, et imposerait de tout ré-écrire. S'il y a un spécialiste sur ce forum qui peut aider, qu'il n'hésite pas à faire signe !

L'approche actuelle se passe en deux étapes : 1/ réception d'un paquet généré par AdvanceMAME composé de X, Y, R, V, B via USB depuis le Raspberry Pi et 2/ envoi séquentiel de chacun de ces 5 données vers un canal d'un des DAC. Je ne sais pas si le fait de séparer les canaux dans des DAC différents aménerait un gain de performance, si un envoi simultané est mis en oeuvre, mais si cela est effectivement le cas il serait intéressant de mettre 5 x MCP4921 à la place des 3 x MCP4922 sur la PCB.

Si j'arrive à comprendre comment faire fonctionner le DMA spécifique au Teensy 4, cela permettrait d'exécuter en simultané les deux étapes décrites ci-dessus. Le gain de cette approche sur Teensy 3.2 était très perceptible.

L'autre facteur limitant est le Raspberry Pi. J'utilise un Pi 3 model B+. Sans doute qu'un Pi 4 permettrait de gagner encore en performances, mais les prix sont astronomiques à l'heure actuelle. J'ai commandé un Orange Pi 3 LTS pour un prix beaucoup plus raisonnable sur Aliexpress, et je ferai un test comparatif.

CitationComme je n'ai pas vu de boutons sur l'ancienne carte "v.st"avec le Teensy 3.2, je suppose que l'adjonction de ces boutons est de votre fait.

Oui, il y a beaucoup de paramètres qui nécessite des réglages en "live" pour mettre au point l'image, et cela est vite fatigant de changer à répétition un paramètre dans un script, relancer la programmation du Teensy et de tout rebrancher. L'idée est d'utiliser ces boutons pour modifier les paramètres sur un écran ad hoc, et ensuite de les sauvegarder sur une carte SD ou en mémoire flash (encore un sujet non étudié ...). Lors des tests des boutons, je me suis aperçu qu'en touchant les contacts sur le dos de la PCB, un appui de bouton était bien détecté. Il faut que je prenne le temps de trouver la solution (problème de PCB, de montage des boutons à 90°, de code, ... ?).

CitationLe problème avec les boutons, c'est le rebond de leur contacts, il existe une méthode logicielle dite "des compteurs verticaux" pour les traiter simultanément: "Vertical counters allow for an elegant, compact and efficient debouncing algorithm which can debounce multiple inputs concurrently"

J'ai constaté ce problème en faisant mes tests sur la version précédente de la PCB. Merci pour le lien, je vais tenter de le mettre en oeuvre.
If at first you don't succeed...