Gamoover

[move]Vous aimez le couscous-boulettes, le chorizo, la Force 4, et la mimolette ? 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

Maitre_Poulpi

Alors j'ai pas tout suivi et je ne comprends pas tout mais bravo pour ton travail sur ce sujet  ^-^

Pas simple de pouvoir remettre en route des jeux en vectoriel.
Le seul que je connaisse et qui fonctionne encore c'est la Vectrex (j'adore cette console). D'ailleurs, j'ai acheté un "pitrex" pour utiliser un pi zero avec l'écran de la Vectrex via le port cartouche. Je l'ai reçu mais pas encore testé. Il y a un wiki d'ailleurs à ce sujet que je n'ai pas lu encore. Je ne sais pas s'il peut y avoir des infos intéressantes dont tu pourrais te servir.
May the Gamooforce be with you !
À partir du moment où un fou sait qu'il l'est, peut-on toujours le nommer ainsi ?
Boulot, rétro, dodo... et un peu (beaucoup) de TATC© (Touche A Tout Compulsif)...
Le WIP en slip et le hack Sega en Pijama !

english2

If at first you don't succeed...

gc339

Citation de: english2 le Jeudi 14 Avril 2022, 17:56:26 PMAprès un peu d'optimisation de code, j'arrive à obtenir jusqu'à 64 niveaux d'intensité par couleur.
Il y a t-il besoin d'autant de couleurs? CosmicChasm, l'ultime jeu en couleur de Cinematronic ne comportait que 16 niveaux (4 bits) par couleur soit 4096 couleurs possibles au total.

Dans tous les cas, pour un nombre de bits par couleur inférieur à 12 (cas d'un DAC MCP7922),  il faut toujours utiliser les bits de poids fort (MSB) et ignorer les bits restants (LSB) en les forçant à zéro.

Chaque signal RGB est essentiellement positif, chacun évolue entre 0 volt (le niveau du noir) et une tension positive maximale qui correspond à la couleur saturée. La masse virtuelle (2,5 volts) est inutile car la référence des amplis vidéo est la vraie masse (0 volt).

Citation de: english2 le Jeudi 14 Avril 2022, 17:56:26 PMPeut-être qu'il faut rajouter un 2ème 2n3904 ... (GC339 - Help!) ?
Voici ce que je propose:
• Ajout d'un troisième double DAC MCP4922 car il n'y a pas assez de DAC disponibles pour les 3 couleurs.
• Remplacement du MAX6102 et de IC3B par un TLE2425 "2.5-V Virtual Ground for 5-V/GND Analog Systems" dans le but de récupérer IC3B.
• On dispose ainsi de 3 amplis OP: IC3B, IC3C et IC3D qui vont servir à amplifier et bufferiser les signaux vidéo issus des DAC RGB. Le schéma est identique à celui des préamplificateurs des canaux X et Y (IC9A et IC9D), le gain de chacun est fixé à 2 par les résistances de 10k.



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





english2

Tout d'abord, merci beaucoup à gc399 d'avoir pris le temps d'apporter cette réponse très utile.

En ce qui concerne les niveaux d'intensité, je voulais voir ce que cela donne en affichant autant sur un écran vectoriel (car on n'en voit pas sur les jeux habituels alors que cela est techniquement possible). J'ai bien conscience qu'au-delà de 16 niveaux il y a peu de jeux qui les exploitent. D'ailleurs le seul auquel je pensais est Sundance qui a 64 niveaux de gris (je crois). Comme la carte fonctionnera aussi sur les écrans en n&b, il peut être intéressant de gérer 64 niveaux pour tenir compte de cette exception. Le code d'Advancemame qui fournit ces données prévoit un octet par couleur, donc 256 niveaux yc le noir. Comme il s'agit que de choix au niveau du code sur le Teensy, cela peut être décidé plus tard (notamment s'il y a un impact négatif sur les performances).

Par rapport à la proposition de modification du schéma :

- sur la carte actuelle j'ai en effet rajouté un 3ème MCP4922 afin d'avoir suffisamment de canaux pour gérer les 3 couleurs + X/Y. Je confirme que cela marche bien. 
- le MAX6102 est remplacé par un MCP1525 et le MAX6105 par un LP2950-5, tous les deux en TO92 (ce qui évite de souder des composants minuscules !). J'ai lu la fiche descriptive du TLE2425 qui me semble tout à fait adapté, mais je ne suis pas suffisamment expert pour discerner les avantages/inconvénients des deux composants. Au niveau prix, le LP2950 est à 1,21€ HT, le TLE2425 à 2,45€ HT (références Mouser) donc ce n'est pas un critère discriminant comme on n'est pas sur une production industrielle. Vaut-il mieux alimenter le régulateur 2.5V en 12V ou 5V ou peu importe ?
- j'avais prévu un emplacement sur la carte pour un op amp (encore un TL3474) comme suggéré, mais j'ai eu un doute car pour le X/Y on produit une tension de +/- 12V, et la plage recherchée pour le RVB est de 0 à 4V. Au final j'ai laissé l'emplacement du TL3474 libre, et à la place j'avais rajouté un 2N3904 qui monte à 3,8V. Est-ce que IC3 doit vraiment être alimenté par +/- 12V ou autre chose (juste un +5V ...) pour obtenir de 0 à 4V ? J'avais prévu des potentiomètres pour varier le gain, mais je ne sais pas si cela est utile (car sur la carte de déflection cela est également prévu).
- est-il nécessaire de passer VREF5 par l'op amp plutôt que directement en sortie du LP2950 ?

Aujourd'hui le circuit est entièrement alimenté par les 5V qui entrent via le port USB du Teensy. Je me demande si le RB-0512D est capable de supporter la charge, et s'il ne vaut mieux pas séparer les circuits afin d'alimenter le Teensy uniquement par le câble provenant du Raspberry Pi, et puis avoir une alimentation arcade de type "switching" à côté qui fournit un +5V et un +12V à des régulateurs de la série 78xx/79xx pour alimenter les op amps (et les DAC ?). De plus, comme le Teensy 4.1 tourne à 600Mhz au lieu de 120 pour le Teensy 3.2, j'imagine qu'il va consommer plus et peut-être trop pour l'alim actuelle via USB. Je n'ai pas (encore) les compétences pour estimer/calculer/mesurer les exigences en matière d'alimentation. Je ne suis pas certain d'avoir prévu tout ce qu'il faut en matière de condensateurs, car les vecteurs produits par la carte actuelle ne sont pas stables contrairement à la carte v.st d'origine.

Pour passer du Teensy 3.2 au 4.1, j'ai compris que toutes les sorties doivent désormais être à 3,3V max au lieu de 5V. Je ne maitrise pas encore tous les impacts sur le schéma. J'ai juste retenu qu'il faut rajouter des résistances 10K "pull up" sur les CS (chip select) des DAC. J'ai adapté mon code pour le Teensy 4.1 en mode SPI, et je l'ai branché à la place du 3.2, mais cela ne donne rien (les DAC produisent des mV). Je n'ai pas encore eu le temps d'investiguer plus, mais je sens bien qu'il va falloir passer sur le 4.1 pour avoir un résultat utile qui permette de jouer.

N'hésitez pas avec vos commentaires, cela m'aide à avancer ! Voici le schéma de ma carte actuelle, sauf que que IC1 est remplacé par un 2N3904.

If at first you don't succeed...

gc339

Bonjour à tous, bonjour Robin.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
En ce qui concerne les niveaux d'intensité, je voulais voir ce que cela donne en affichant autant sur un écran vectoriel (car on n'en voit pas sur les jeux habituels alors que cela est techniquement possible). J'ai bien conscience qu'au-delà de 16 niveaux il y a peu de jeux qui les exploitent. D'ailleurs le seul auquel je pensais est Sundance qui a 64 niveaux de gris (je crois). Comme la carte fonctionnera aussi sur les écrans en n&b, il peut être intéressant de gérer 64 niveaux pour tenir compte de cette exception. Le code d'Advancemame qui fournit ces données prévoit un octet par couleur, donc 256 niveaux yc le noir. Comme il s'agit que de choix au niveau du code sur le Teensy, cela peut être décidé plus tard (notamment s'il y a un impact négatif sur les performances).
Tout d'abord quand je parlais de 16 niveaux, c'était par couleur, cela représente donc 4096 couleurs possibles dont 16 niveaux de gris qui correspondent au cas particulier où les 3 signaux RGB sont de même amplitude.
Donc pour conserver 64 niveaux de gris pour certains jeux, cela impose 6 bits par couleur donc 218 couleurs possibles.
De toutes façons, quelque soit le nombre de niveaux choisis, on ne gagne rien sur les durées de transmission puisque les trames à destination des DAC's doivent respecter une longueur fixe de 16 bits.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
sur la carte actuelle j'ai en effet rajouté un 3ème MCP4922 afin d'avoir suffisamment de canaux pour gérer les 3 couleurs + X/Y. Je confirme que cela marche bien.
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 Dimanche 17 Avril 2022, 12:24:26 PM
le MAX6102 est remplacé par un MCP1525 et le MAX6105 par un LP2950-5, tous les deux en TO92 (ce qui évite de souder des composants minuscules !). J'ai lu la fiche descriptive du TLE2425 qui me semble tout à fait adapté, mais je ne suis pas suffisamment expert pour discerner les avantages/inconvénients des deux composants. Au niveau prix, le LP2950 est à 1,21€ HT, le TLE2425 à 2,45€ HT (références Mouser) donc ce n'est pas un critère discriminant comme on n'est pas sur une production industrielle.
Le TLE2425 apparait être meilleur que le MCP1525, précision de 8‰ contre 1%, dérive 20ppm par °C contre 50, peut fournir jusqu'à 20mA au lieu de 2. On peut aussi utiliser le TLE2426 mais dans ce cas il faut l'alimenter en +5 volts pour obtenir les 2,5 volts requis car c'est un "Rail Slitter" qui fournit sur sa sortie une tension moitié de sa tension d'entrée.

Ces composants sont aussi disponibles chez RS particuliers, les prix sont TTC et en principe les frais de livraison sont gratuits si l'on commande le week-end.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
Vaut-il mieux alimenter le régulateur 2.5V en 12V ou 5V ou peu importe ?
• En 5 volts:
Pour: Meilleur filtrage et/ou régulation puisque le 5 volts est déjà régulé par le LP2950-5.
Contre: Le LP2950-5 fournira un surplus de courant, par contre le MCP1525 dissipera moins de puissance.

• En +12 volts:
Pour: Pas de surplus de courant à fournir pour le LP2950-5.
Contre: Plus de puissance à dissiper pour le MCP1525, filtrage/régulation probablement moindre vu l'abscence du pré-régulateur.

Vu les faibles courants absorbés, l'une où l'autre solution ne doit pas élever significativement la température interne de ces composants. Par contre un meilleur filtrage/régulation du 2,5 volts est appréciable puisque c'est la référence ou masse virtuelle des canaux X et Y et que la source primaire, le ± 12 volts, est issu d'un convertisseur RB-0512D dont l'ondulation résiduelle peut atteindre 100mVp-p.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
j'avais prévu un emplacement sur la carte pour un op amp (encore un TL3474) comme suggéré, mais j'ai eu un doute car pour le X/Y on produit une tension de +/- 12V, et la plage recherchée pour le RVB est de 0 à 4V. Au final j'ai laissé l'emplacement du TL3474 libre, et à la place j'avais rajouté un 2N3904 qui monte à 3,8V.
Oubliez le 2N3904 et remplacez le par un des 4 amplis OP d'un TL3474 ou un des 2 d'un TL3472 à 8 pattes!
Qui peut le plus peut le moins, donc un TL347x alimenté en ± 12 volts est tout à fait apte à délivrer une tension essentiellement positive comprise entre 0 et 4 volts.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
Est-ce que IC3 doit vraiment être alimenté par +/- 12V ou autre chose (juste un +5V ...) pour obtenir de 0 à 4V ?
On peut très bien n'avoir qu'une seule tension d'alimentation pour les ampli OP's à la suite des 3 DAC's RGB mais il y a des contraintes à respecter surtout avec une alimentation en 5 volts, ceux-ci doivent impérativement être du type "rail to rail" intégral, aussi bien pour leurs entrées que leur sortie vu que la tension minimale en sortie des DAC's (0 volt) est celle du rail d'alimentation AGND et que la tension maximale (4 volts) fleurte avec celle du rail 5 volts.

Exemple avec le MAX4386E du J-PAC ou le TSH73CPT du JammaASD, quoique leurs entrées ne soient pas strictement "rail to rail".

Bien que cela soit très peu utilisé avec des amplis OP ordinaires, on peut tricher en les alimentant asymétriquement, par exemple +6 volts/-1,5 volt encore faut-il faire attention aux caractéristiques en mode commun de leurs entrées.

Conclusion: il est plus simple et moins onéreux d'utiliser des amplis OP comme les TL347x alimentés en ± 12 volts, même s'il sont sous-employés en ne délivrant qu'une tension de sortie essentiellement positive dont l'amplitude maximale ne vaut que le tiers du rail d'alimentation concerné.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
J'avais prévu des potentiomètres pour varier le gain, mais je ne sais pas si cela est utile (car sur la carte de déflection cela est également prévu).
Il vaut mieux éviter les redondances, inutile de rajouter des réglages de gain ou de centrage s'il existent déjà! D'ailleurs la carte v.st originale du dépot Github n'en comporte pas.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
est-il nécessaire de passer VREF5 par l'op amp plutôt que directement en sortie du LP2950 ?
On peut soutirer jusqu'à une centaine de mA du LP2950, donc l'ampli OP à sa suite est inutile.
Le MCP1525 est limité à 2mA, étant donné que le courant consommé sur cette référence de tension est insignifiant, l'ampli OP à sa suite est tout aussi inutile. En cas de doute il reste les TLE2425 ou 2426 avec leur 20 mA délivrables.

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
Aujourd'hui le circuit est entièrement alimenté par les 5V qui entrent via le port USB du Teensy. Je me demande si le RB-0512D est capable de supporter la charge, et s'il ne vaut mieux pas séparer les circuits afin d'alimenter le Teensy uniquement par le câble provenant du Raspberry Pi, et puis avoir une alimentation arcade de type "switching" à côté qui fournit un +5V et un +12V à des régulateurs de la série 78xx/79xx pour alimenter les op amps (et les DAC ?).
Alimenter les DAC's et leur amplificateurs via le 5V du Teensy  (Vin?) qui lui même est alimenté par l'USB du Raspberry Pi me semble être la pire des solutions.
La source primaire peut rester commune (9 ou 12 volts par exemple), dans ce cas on peut prévoir un régulateur au plus proche de chacun pour l'alimenter avec la tension adéquate. Il faut éviter de les relier "en cascade" comme c'était le cas avec l'USB et plutôt les alimenter en "étoile" à partir de la source primaire et bien sûr il faut soigner les masses (Ground).

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
De plus, comme le Teensy 4.1 tourne à 600Mhz au lieu de 120 pour le Teensy 3.2, j'imagine qu'il va consommer plus et peut-être trop pour l'alim actuelle via USB. Je n'ai pas (encore) les compétences pour estimer/calculer/mesurer les exigences en matière d'alimentation. Je ne suis pas certain d'avoir prévu tout ce qu'il faut en matière de condensateurs, car les vecteurs produits par la carte actuelle ne sont pas stables contrairement à la carte v.st d'origine.
D'après ce que j'ai pu lire sur le net, le Teensy 4.0 ou 4.1 consommerait ≈100 mA (alimentation 3,3 Volts) à 600 MHz et le Teensy 3.2 ≈45 mA à 120 MHz.
L'instabilité est probablement la conséquence de l'alimentation "en cascade" du Teensy et de la carte v.st.
Le convertisseur RB-0512D de cette dernière carte devrait pouvoir être conservé puisque la carte originale du dépot Github fonctionne correctement

Citation de: english2 le Dimanche 17 Avril 2022, 12:24:26 PM
Pour passer du Teensy 3.2 au 4.1, j'ai compris que toutes les sorties doivent désormais être à 3,3V max au lieu de 5V. Je ne maitrise pas encore tous les impacts sur le schéma. J'ai juste retenu qu'il faut rajouter des résistances 10K "pull up" sur les CS (chip select) des DAC. J'ai adapté mon code pour le Teensy 4.1 en mode SPI, et je l'ai branché à la place du 3.2, mais cela ne donne rien (les DAC produisent des mV). Je n'ai pas encore eu le temps d'investiguer plus, mais je sens bien qu'il va falloir passer sur le 4.1 pour avoir un résultat utile qui permette de jouer.
Le MCP4922 peut s'alimenter de 2,7 à 5,5 volts, est donc compatible avec une alimentation en 3,3 volts. L'amplitude maximale sur sa sortie en sera réduite d'autant et il faudra amplifier le signal ≈1,5 fois plus.
Sinon il existe le circuit TXS0108E, translateur de niveau bidirectionnel sur 8 bits:




Disponible sur AliExpress ou RS composants:


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





gc339

J'ai observé trois court-circuits (traits rouges) sur les amplificateurs du vert et du bleu du dernier schéma produit, ainsi que celui du rouge qui est en partiellement occulté par la capture d'écran. Dommage que le schéma ne soit pas entier!

CitationSous Kicad (Version 6 et même les antérieures), on peut sauvegarder le schéma sous forme d'image:

Fichiers(File) ---> Exporter(Export) ---> Tracé dans Presse Papier(Drawing to Clipboard).

Il ne reste plus qu'à coller l'image dans MSpaint par exemple et la sauvegarder au format PNG (éviter le format JPEG car il floute les traits).



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





english2

Merci pour cette réponse point par point, très appréciée.

1) Le Teensy 4.0 ou 4.1 peut gérer 3 bus SPI, alors pourquoi ne pas différencier les DAC 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 X et Y dans des boitiers MCP4922 différents.

-> oui, bonne idée, il faut que je creuse la programmation du Teensy 4. Toutefois la carte sera forcément limitée par l'envoi séquentiel des données par Advancemame, mais autant avoir un traitement optimal par le v.st.

2) Le TLE2425 apparait être meilleur que le MCP1525 ...

-> je suis convaincu, j'ai mis à jour le schéma avec ce composant

3) Ces composants sont aussi disponibles chez RS particuliers, les prix sont TTC et en principe les frais de livraison sont gratuits si l'on commande un week-end.

-> merci pour ce tuyau, je ne savais pas du tout

4) Vaut-il mieux alimenter le régulateur 2.5V en 12V ou 5V ou peu importe ? ...

-> du coup, j'ai modifié le schéma afin que le régulateur 2.5V et les DAC soient alimentés par les 5V issus du LP2950

5) Oubliez le 2N3904 et remplacez le par un des 4 amplis OP d'un TL3474 ...

-> j'ai donc conservé le TL3474

6) Est-ce que IC3 doit vraiment être alimenté par +/- 12V ou autre chose (juste un +5V ...) pour obtenir de 0 à 4V ? ...

-> j'ai laissé +/- 12V

7) Les réglages de gain X/Y étaient déjà sur la carte v.st d'origine, j'avais rajouté des potentiomètres de centrage sur la v.st couleur v1 qui se sont avérés très utiles selon la carte de déflection utilisée. En revanche, j'ai supprimé les potentiomètres de gain pour les couleurs.

8) Alimentation : j'ai donc laissé la possibilité d'alimenter le tout par USB, ou chaque élément séparément par un 5V ou un 12V externe (en omettant le RB-0512D). Je ferai des tests avec différentes combinaisons par curiosité.

9) Merci pour la suggestion de regarder le TXS0108E pour le 3.3V. J'ai trouvé des vidéos sur Youtube que je vais regarder pour mieux comprendre la mise en oeuvre.

Cela me fait penser que je vais rajouter des boutons de contrôle, mais en faisant des tests avec le Teensy 3.2 il fallait alimenter le GPIO en 5V de façon permanente, puis en appuyant sur bouton le Teensy détectait la mise à la terre. Si je passe en Teensy 4.1, il va falloir une source de 3.3V et non de 5V, sauf qu'il n'y en a pas (car la sortie 3.3V est désactivée sur le Teensy 4.1 quand on alimente en 5V si j'ai bien compris; en tout cas je n'ai pas de tension en sortie du 3.3V...). Je me demande s'il ne faut pas rajouter un 2ème LP2950 en 3.3V du coup ?

Enfin, j'ai remplacé le Teensy 3.2 par un 4.1 sur le schéma, en prévoyant des sorties sur la carte pour tout ce que je n'utilise pas afin de pouvoir changer ou rajouter des broches en cas de besoin.

J'espère pouvoir envoyer la nouvelle PCB en fabrication d'ici ce weekend, afin qu'elle soit livrée d'ici la fin des vacances scolaires qui approchent à grands pas !

Voici le schéma du jour (merci pour le conseil d'export, j'essayais de faire une simple copie d'écran tout en restant lisible, pas facile...)

If at first you don't succeed...

gc339

Bonjour à tous, bonjour Robin.

En préambule, voici ce qui est dit sur cette page au sujet des ports I/O du Teensy 4.1:
Citation• Digital Input Pins
Digital pins may be used to receive signals. Teensy 4.1 pins default to INPUT most with a "keeper" resistor. Teensy 4.1 pins accept 0 to 3.3V signals. The pins are not 5V tolerant. Do not drive any digital pin higher than 3.3V.

• Digital Output Pins
All digital pins can act at output. The pinMode function with OUTPUT or OUTPUT_OPENDRAIN must be used to configure these pins to output mode. The digitalWrite and digitalToggle functions are used to control the pin while in output mode. Output HIGH is 3.3V. The recommended maximum output current is 4mA.

Et ce qui est aussi dit au sujet de son alimentation:
Citation• USB Power
Normally Teensy is powered by your PC or USB hub, through a USB cable. The USB power arrives at the VUSB pin, which is connected VIN and powers the entire board.
• VIN Pin
When USB power is not used, 5V power may be applied to the VIN pin. Because VIN & VUSB are connected, power should not be applied to VIN while a USB cable is used, to prevent the possibility of power flowing back into your computer. Alternately, a pair of pads on the bottom side may be cut apart, to separate VUSB from VIN, allowing power to be safely applied while USB is in use. (TODO: VUSB-VIN pads photo, right side)
• 3.3V Power
Teensy 4.1 has a voltage regulator which reduces the 5V VUSB / VIN power to 3.3V for use by the main processor and most other parts. Additional circuitry may be powered from the 3.3V pin. The recommended maximum for external 3.3V usage is 250mA. Teensy 4.1 is not meant to receive power on its 3.3V pin, but this can be done with special modificaton.
• USB Host Hot Plugging
Power to USB devices connected on the USB host port is provided through a current limited switch and a large capacitor. The current limit lessens the disruption to Teensy's power when a USB device is hot plugged and needs a sudden inrush current to charge up all its capacitors.
• Power Consumption
When running at 600 MHz, Teensy 4.0 consumes approximately 100 mA current. Reducing CPU speed to 528 MHz or lower reduces power consumption.

Conclusions:
• Les niveaux logiques sur les ports du Teensy 4.1 (ou 4.0) sont essentiellement de 3,3 volts.
• Le teensy 4.x peut être alimenté soit par l'USB soit par une alimentation + 5 volts extérieure raccordée sur sa pin "Vin", il faut alors couper un cavalier (une piste) prévu à cet effet dans ce dernier cas.
• Le teensy 4.x peut délivrer du 3,3 volts à l'extérieur, jusqu'à 250 mA sur sa pin "3.3V"




Alimentation des DAC's MCP4922:

Soit ils sont alimentés en 3,3 volts (Vdd=pin1) pour être directement compatibles avec les ports I/O du Teensy 4.x:
• Pas besoin de translateur de niveau pour les fils du bus SPI.
• Les MCP4922 pourraient éventuellement être alimentés par la sortie "3.3V" du Teensy 4.x plutôt que par un régulateur 3,3 volts indépendant (chaque MCP4922 consomme 0,5 mA sous 3 volts ou 0,7 mA sous 5 volts).
• La tension de la masse virtuelle doit être de 1,65 volt au lieu de 2,5 volts. Je ne sais pas s'il existe des régulateurs délivrant cette tension, mais à défaut le 6ème DAC inemployé pourrait générer cette tension qui serait bufférisée par le dernier ampli OP inutilisé.
• Le gain des amplificateurs devra être augmenté pour compenser l'amplitude maximale moindre en sortie des DAC's, théoriquement 1,52 fois plus.

Soit les alimenter en 5 volts comme précédemment, ce qui nécessite d'insérer des translateurs de niveaux sur le bus SPI:
• J'avais mentionnés les translateurs de niveau TXS0108E, mais comme dans le cas présent le bus SPI n'est pas bi-directionnel mais unidirectionnel, on peut faire plus simple avec des petits transistors MOSFET.
La sortie "3,3V" du Teensy 4.x sera utilisée pour délivrer le 3,3 volts nécessaire à l'alimentation des translateurs.
• Hormis les translateurs de niveau à insérer, pas de modifications du schéma existant.




Existe sous forme de plaquette au pas de 2,54 (4 translateurs ). Voir AliExpress, Sparkfun...



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





gc339

Voici une suggestion de schéma avec les DAC's MCP4922 alimentés en 3,3 volts à partir de la pin "3.3V" du Teensy 4.x. A eux trois, ils devraient consommer moins de 2 mA.

Le 1,65 volt de la masse virtuelle est généré par le 6ème DAC qui devra être initialisé avec cette consigne à la mise sous tension du Teensy (et peut-être même rafraichi régulièrement). Le 1,65 volt est bufférisé par le dernier ampli OP disponible (IC1D).

Les valeurs des couples de résistances R29/R16, R28/R12, R30/R15, R4/R7 et R6/R8 devront être recalculés pour que le gain des amplificateurs impactés soit multiplié par ≈1,5 (1,515 théorique) pour compenser la moindre amplitude maximale délivrée par les DAC's.

Les résistances en série avec les pins CS des MCP4922 ont été supprimées (R27 et les autres) car elles n'existent pas sur le schéma original du dépot Github.

J'ai constaté une erreur: il y a un court-circuit entre les fils CS des circuits IC4 et IC5 au niveau des pins du Teensy.



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





gc339

Voici une nouvelle suggestion de schéma avec les DAC's MCP4922 alimentés en 5 volts et une translation de niveau avec transistors MOSFET.

Le 3,3 volts nécessaire aux translateurs est prélevé sur la sortie "3.3V" du Teensy 4.x.

Les résistances en série avec les pins CS des MCP4922 ont été supprimées (R27 et les autres) car elles n'existent pas sur le schéma original du dépot Github.

J'ai constaté une erreur: il y a un court-circuit entre les fils CS des circuits IC4 et IC5 au niveau des pins du Teensy.



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





english2

Bonjour !

Encore merci pour ces remarques judicieuses. J'ai intégré les modifications proposées, ainsi que la correction du court circuit.

J'ai bien noté l'intolérance du Teensy 4.1 face à des tensions > 3.3V, j'espère ne pas avoir déjà grillé le mien en faisant des tests avec la PCB actuelle.

Les 3.3V en sortie du Teensy serviront pour les boutons de contrôle, j'en ai donc rajouté 5. De ce que je comprends, les broches sélectionnées recoivent 3,3V en permanence, et le Teensy détecte la mise à la terre lors de l'appui sur le bouton.

Pour les résistances sur les broches CS, je viens de trouver l'article auquel je pensais, mais je me rends compte qu'il ne fallait pas les insérer en série mais a priori les connecter à VCC. Elles me semblent superflues compte tenu de l'ajout des MOSFET et les résistances 10K reliées au 5V : https://www.pjrc.com/better-spi-bus-design-in-3-steps/

J'ai lu des articles sur les BSS138 et 2N7000 pour la conversion de niveaux, si possible j'aimerais éviter de rajouter les petites PCB de conversion de tension (j'en ai tout de même commandé quelques uns sur Aliexpress au cas où), ainsi que les composants "surface mount". J'avais en tête d'utiliser le 2N7000, mais les expériences des uns et des autres sont mitigées apparemment (certains disent que ça marche sans problème, d'autres non ...). A terme, l'idée est de mettre tout le projet sur Github et que ce soit facile à trouver les composants et à souder la PCB pour n'importe qui. Y a-t-il un risque à utiliser les 2N7000 au format TO-92 à la place des BSS138 ?

Voici le schéma ainsi modifié. Je vais attaquer la conception de la PCB demain, en essayant de respecter les consignes quant au placement des composants (et en espérant rester sur les 2N7000 ou un composant TO-92 similaire), notamment les condensateurs. Je vais essayer de rester dans un format 10cm2 car le coût de production est bien moins cher.

If at first you don't succeed...

gc339

Bonsoir à tous, bonsoir Robin.

Citation de: english2 le Mardi 19 Avril 2022, 20:06:14 PM
Les 3.3V en sortie du Teensy serviront pour les boutons de contrôle, j'en ai donc rajouté 5. De ce que je comprends, les broches sélectionnées recoivent 3,3V en permanence, et le Teensy détecte la mise à la terre lors de l'appui sur le bouton.
Vous n'avez pas besoin de résistances extérieures pour polariser les boutons, le Teensy dispose de résistances internes "Pull up" et "Pull down" que l'on met en service logiciellement en activant le bit correspondant dans le registre interne qui va bien.
Si les boutons ont leur commun à la masse (0 volt), il faut activer les résistances "pull up" des pins raccordées à ces boutons. Si le commun et connecté au rail d'alimentation 3,3 volts, hé bien il faudra valider les résistances "pull down".
Citation de: https://www.pjrc.com/store/teensy41.html
• Input Pullup / Pulldown / Keeper Resistors
All digital pins have optional pullup, pulldown, or keeper resistors. These are used to keep the pin at logic HIGH or logic LOW or the same logic level when it is not being actively driven by external circuity. Normally these resistors are used with pushbuttons & switches. The pinMode function with INPUT_PULLUP or INPUT_PULLDOWN must be used to configure these pins to input mode with the built-in resistor.
• Pin Change Interrupts
All digital pins can detect changes. Use attachInterrupt to cause a function to be run automatically. Interrupts should only be used for clean signals. The Bounce library is recommended for detecting changes on pushbuttons, switches, and signals with noise or mechanical chatter.




Citation de: english2 le Mardi 19 Avril 2022, 20:06:14 PM
J'ai lu des articles sur les BSS138 et 2N7000 pour la conversion de niveaux, si possible j'aimerais éviter de rajouter les petites PCB de conversion de tension (j'en ai tout de même commandé quelques uns sur Aliexpress au cas où), ainsi que les composants "surface mount".
Il faut considérer ces petites PCB comme des DIL10 au pas de 2,54 et les implanter comme si c'étaient des circuits intégrés standards à moins que la place soit restreinte sur la surface de PCB envisagée.

Citation de: english2 le Mardi 19 Avril 2022, 20:06:14 PM
J'avais en tête d'utiliser le 2N7000, mais les expériences des uns et des autres sont mitigées apparemment (certains disent que ça marche sans problème, d'autres non ...).
Le seul souci à mon avis pourrait être la vitesse de transfert des données sur le bus SPI (qui m'est pour l'instant inconnue). Dans ce cas on peut diminuer la résistance de tirage au +5 volts pour améliorer la forme des signaux. On peut réduire sa valeur de 10 kΩ jusqu'à 1,5 kΩ mais pas au delà car on dépasserait la limite de courant de 4 mA par pin du Teensy.
Sinon avec le TXS0108E, pas de problème de vitesse puisqu'il peut transférer les données jusqu'à 110Mbps.

Citation de: english2 le Mardi 19 Avril 2022, 20:06:14 PM
Y a-t-il un risque à utiliser les 2N7000 au format TO-92 à la place des BSS138 ?
Aucun risque, le BSS138 est la version CMS du BS170 (TO92), et le 2N7000 est l'équivalent du BS170.
Vous pouvez aussi utiliser le VQ1000J avec ses 4 MOSFET's en boitier DIL14.
Sinon il reste la solution du TSX01108E avec ses 8 translateurs si vous avez de meilleurs echos à son sujet.




Voici le dernier schéma avec le câblage des boutons, les résistances extérieures de tirage au rail 3,3 volts sont inutiles si on déclare logiciellement les résistances de "pull up" sur les pins raccordées aux boutons.
Vaut mieux pas laisser les entrées d'un ampli Op inutilisées en l'air, donc celles de IC1D sont à connecter à AGND.



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





english2

Pour le fonctionnement des boutons à base de résistance 10K et alimenté par 3.3V/5V, j'avais tout simplement suivi l'exemple fourni avec le Teensy. J'ai une nette préférence pour cette solution plus classique (à mes yeux) qui détecte la connection à la masse en utilisant la résistance interne. J'ai fait un petit test, ça marche bien !



If at first you don't succeed...

gc339

Bonjor à tous, bonjour Robin.

Une nouvelle proposition avec un translateur de niveau TXS0108E:




La masse des boutons devrait être GND plutôt que AGND.
A ce sujet, même sur le schéma original du dépot Github, je n'ai pas vu de connection entre la masse (GND) et la masse analogique (AGND). Je vais aller vérifier comment ça été fait sur le PCB original.
Le repos, c'est fait pour les jeunes. Ils ont toute la vie devant eux. J. Gabin/M. Audiard





english2

La solution avec la TXS0108E est effectivement plus élégante. J'en ai commandé sur Aliexpress, et je vais mettre à jour le schéma en conséquence. Le BOM (liste des composants) est réalisé, mais j'ai eu du mal à trouver les références avec RS (qui ne semble plus évoquer le port gratuit le weekend en ce moment).

Voici le BOM qui ne tient pas encore compte du changement vers un TXS0108E (prix issus de mouser.fr) ... il y a sans doute des optimisations possibles pour baisser le total.



If at first you don't succeed...

Little_Rabbit

Salut,

Juste un petit mot pour vous dire qu'il ne faudrait pas croire que ce sujet se limite à des échanges entre vous english2 et gc339 ;).

Je suis tout ça avec le plus grand intérêt, comme beaucoup d'autres j'imagine, et le moins que l'on puisse dire c'est que cela prend sacrément forme !  :-)=

Bravo à vous deux !  ^-^

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