Adaptateur de souris PC PS/2 pour THOMSON TO8/9/9+

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

Donc c'est bon pour les déplacements verticaux :D

Il reste justement les derniers réglages sur les mouvements de la souris à terminer.

Ce que j'ai prévu mais pas encore eu le temps de tester :
Calculer un déplacement proportionnel à celui de la souris PS/2

Code : Tout sélectionner

Timing entre Xa et Xb inversement proportionnel au déplacement X de la souris PS/2 =
 TimingX=(limiteX PS/2)-X
 TimingY=(limiteY PS/2)-Y
Ce qui devrais permettre d'avoir un déplacement rapide ou lent :wink:

Et pour le mode Turbo j'avais pensé trouver la limite minimum du timing possible pour avoir des déplacements très rapide, si ce n'est pas possible je supprime cette option :?

Cette semaine je devrais avoir un peu plus de temps pour tout ca ...

Daniel ce midi je vais essayer de terminer les tests et trouver les meilleurs timings, si tu veux je t'enverrais le code mise à jour pour test de ton côté ;)
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

J'ai recâblé la version PS/2 pour tests, mais un petit problème de contact m'a fait perdre du temps :twisted:

Sinon pour que j'émule au mieux la souris Thomson, je voudrais être sur de bien comprendre son fonctionnement.

D'après ce que j'ai compris :

Si il y a un déplacement en X vers la droite (+):

Code : Tout sélectionner

Xa0V (délai) Xb0V (délai) Xa+5V (délai) Xb+5V


Si il y a un déplacement en X vers la gauche(-):

Code : Tout sélectionner

Xb0V (délai) Xa0V (délai) Xb+5V (délai) Xa+5V
Si je veux appliquer la vitesse de déplacement, je dois jouer sur les délais, mais est ce que cela dois ressembler à ca :

Code : Tout sélectionner

Xa0V (délai 1)  Xb0V  (délai 2)   Xa+5V  (délai 3)  Xb+5V

-Varier délai 1,2,3 selon la vitesse désirée
-Ou varier délai 1 uniquement selon la vitesse désirée
-Ou un autre schéma ?
Si on diminue tous les délais la pulsation seras plus courte, mais est ce que l'on doit varier la longueur des créneaux ?


Sinon pour la souris PS/2 dans les infos que j'avais glané à droite et à gauche les valeurs de coordonnées sont comprises entre -127 et +127, plus on est proche de 0 moins le déplacement est rapide !
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
bilbo

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par bilbo »

Pour USB sur arduino il y a un shield max3421e

Existe aussi pour mini twinee
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par __sam__ »

6502man a écrit : Si je veux appliquer la vitesse de déplacement, je dois jouer sur les délais, mais est ce que cela dois ressembler à ca :

Code : Tout sélectionner

Xa0V (délai 1)  Xb0V  (délai 2)   Xa+5V  (délai 3)  Xb+5V

-Varier délai 1,2,3 selon la vitesse désirée
-Ou varier délai 1 uniquement selon la vitesse désirée
-Ou un autre schéma ?
Autre schéma!

Garde les délais d'origine et regarde ce que fait la roue crantée quant tu déplace lentement ou rapidement la souris. Les durées des délais sont proportionnels à la longueur des crans. Leur proportion relative est fixe indépendamment de la vitesse de déplacement. Donc delai1/delai2 et delai2/delay3 et delai1/delai3 (etc) sont constant tout simplement parce que les crans sont de taille fixe.

La seule chose qui varie c'est la fréquence du passage 0 à 1, c'est à dire la durée absolue des délais (i.e. le temps que met un cran pour passer devant la photodiode).

Bref tu prends les délais qui vont bien pour la vitesse lente puis tu les divises tous par une même valeur. Par exemple si tu divise tous tes délais par 2, alors la souris thomson ira 2x plus vite. Donc en résumé le schéma à utiliser c'est de diviser tous tes délais par une même valeur dépendant de vitesse de la souris:

Code : Tout sélectionner

Xa0V (délai 1 * cte/vit)  Xb0V  (délai 2 * cte/vit)   Xa+5V  (délai 3* cte/vit)  Xb+5V
cte = une constante choisie pour que cte/vit varie entre 1 et 0.1 quand vit = vitesse min et vit = vitesse max.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

Merci pour les infos Sam, en faite c'est ce que je voulais dires dans le 1er choix, mais mal décrit :roll:

Mais ca ne fonctionne pas, je viens de faire les tests dans tous les sens, je peux varier les délais de toutes les façons possible la vitesse est toujours constante :?

Donc du coup j'ai tenté avec une autre approche (technique que j'avais pensé pour le mode Turbo), et du coup cela fonctionne bien comme ca :

Code : Tout sélectionner

Lire info PS/2

délai = 120;
Vitesse = (MX/20) (MX=X de la souris PS/2  [limite -127/ +127])

 de 0 à ABS(Vitesse)  
  {
   Xa0V (délai)  Xb0V  (délai)   Xa+5V  (délai)  Xb+5V
   (délai)
  }
C'est pas encore parfait il faut juste trouver le bon compromis entre délai et boucle de répétition ...

C'est pas très scientifique comme développement plutôt pyfometrique, mais sans infos technique c'est pas évident.

En tout cas ca m'amuse bien d'agiter mes cellules grises pour trouver des solutions :lol:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17319
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par Daniel »

L'idée d'envoyer un nombre de pulsations proportionnel à la valeur absolue du déplacement est excellente, mais il faut aussi une durée de pulsation inversement proportionnelle à la vitesse de déplacement.

Si tes essais n'ont pas marché, c'est parce que les délais sont mal calculés. La durée d'une pulsation n'a aucune raison d'être égale au décalage entre deux pulsations. Vraisemblablement les deux pulsations (par exemple xa et xb) se chevauchent, et le premier front de la deuxième doit être très voisin du premier front de la première.

Pour reconstituer des signaux conformes à ceux de la souris Thomson, il faut établir un chronogramme précis. A défaut de mesure à l'oscilloscope on peut le reconstituer par une étude géométrique, en fonction de la vitesse de la souris, du diamètre des axes, et enfin du nombre et de la dimension des trous sur le disque occultant le faisceau lumineux.

Le principe est simple : avec le diamètre des axes, on calcule la vitesse de rotation des disques (tours/minute) en fonction de la vitesse de déplacement, puis on multiplie par le nombre de trous pour obtenir le nombre de pulsations par minute. La durée précise du créneau est fonction du rapport entre la partie pleine du disque et la partie trouée. Le décalage entre les deux pulsations, à mon avis, n'est qu'une petite partie de la durée de la pulsation : peut-être 1/4, peut-être moins...
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

Merci Daniel pour ces information très scientifique :D

Effectivement par cette approche la solution la plus proche de la réalité pourrait être trouvé.

Il faudrait que je prenne le temps de démonter la souris et prendre les mesures ..

Dans un premier temps je vais tester en intégrant la durée proportionnelle des pulsations dans les boucles, on seras un peu plus proche de la réalité sans être identique peut être.

La suite demain après les tests...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
__sam__
Messages : 7924
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par __sam__ »

Daniel a écrit :L'idée d'envoyer un nombre de pulsations proportionnel à la valeur absolue du déplacement est excellente, mais il faut aussi une durée de pulsation inversement proportionnelle à la vitesse de déplacement.
En effet. Du coup le train de pulsations est sensiblement de durée constante.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17319
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par Daniel »

Dernière version du programme transférée sur l'Arduino et testée.

On peut dire que la faisabilité est démontrée, en ce sens que l'on peut déplacer le curseur où on le souhaite et cliquer. Au cours actuel de l'Arduino Pro Mini (1,70 €) + un connecteur DB9 + un connecteur PS/2 + quelques fils et de la soudure, ça fait une interface à moins de 3€, largement compétitive par rapports aux modèles Atari et Amiga du commerce :D

Ceci dit, il faut étudier scientifiquement la durée et le décalage des pulsations, sinon la mise au point par essais empiriques risque de durer des mois. Dans la version actuelle les déplacements du curseur sont irréalistes. Ils ne sont pas proportionnels aux déplacements de la souris et ne réagissent pas bien aux changements de vitesse.

Il y a aussi un point que je n'explique pas : les déplacement latéraux (sens des X) sont presque bons, par contre les déplacements verticaux (sens des Y) sont très mauvais : très rapides si la souris va lentement, mais le curseur se bloque (ou pire : revient en haut de l'écran) si on accélère. Pourtant les mêmes axes, les mêmes roues et les mêmes détecteurs sont utilisés pour les deux axes, les signaux devraient être identiques. Il y a peut-être un problème soft, selon que l'on donne priorité au déplacement en X ou en Y. Il ne faut pas privilégier l'un par rapport à l'autre, en particulier pour permettre des déplacements "en diagonale", et pas en "escalier".

Autre point : la résolution de la souris PS/2. Elle peut varier d'un modèle à l'autre, en particulier les modèles optiques modernes ont souvent une meilleure résolution que les modèles à boule plus anciens. Je ne sais pas si la librairie Arduino prend en compte ce paramètre. Si ce n'est pas le cas, il faudrait l'ajouter dans le programme.

:idea: J'ai une idée pour le mode Turbo : pas besoin de faire compliqué, il suffit de doubler le nombre de pulsations et de diminuer leur durée de moitié. Le troisième bouton de la souris n'étant pas exploitable par l'ordinateur Thomson, on pourrait l'utiliser pour basculer du mode normal au mode turbo et inversement.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
irios
Messages : 3396
Inscription : 04 nov. 2007 19:47
Localisation : Rochefort du Gard (30)
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par irios »

Le capteur installé dans une souris mesure une position angulaire et je pense que c'est dans ce sens qu'il faudrait se focaliser pour le calcul du déplacement de la souris. :wink:
Si çà peut vous aider : http://www.rennes.supelec.fr/ren/fi/ele ... is_ps2.htm :mrgreen:
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Daniel
Messages : 17319
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par Daniel »

Très approximativement et sans rien mesurer :

Si les axes ont 1cm de circonférence et que la souris se déplace de 1cm/s les roues tournent d'un tour par seconde.
S'il y a 10 trous dans le disque, et l'espace d'un trou entre deux trous successifs, il y a 10 fronts montants et 10 fronts descendants par seconde, également espacés. Soit des pulsations de 50 ms espacées de 50 ms. Ca donne à peu près ça :

Code : Tout sélectionner

 50ms  50ms  50ms  50ms  50ms  50ms  50ms  50ms  50ms
      _____       _____       _____       _____
     |     |     |     |     |     |     |     |
     |     |     |     |     |     |     |     |
     |     |     |     |     |     |     |     |
xa___|     |_____|     |_____|     |_____|     |_____  

       _____       _____       _____       _____
      |     |     |     |     |     |     |     |
      |     |     |     |     |     |     |     |
      |     |     |     |     |     |     |     |
xb____|     |_____|     |_____|     |_____|     |____  

Reste à déterminer le décalage entre xa et xb. Il faut essayer. Je partirais sur des valeurs de 5 à 10 ms, à ajuster par approximations successives.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

Daniel a écrit :On peut dire que la faisabilité est démontrée, en ce sens que l'on peut déplacer le curseur où on le souhaite et cliquer. Au cours actuel de l'Arduino Pro Mini (1,70 €) + un connecteur DB9 + un connecteur PS/2 + quelques fils et de la soudure, ça fait une interface à moins de 3€, largement compétitive par rapports aux modèles Atari et Amiga du commerce :D
C'est un des gros avantage de cette solution, et c'est pour cela que je voulais la proposer :wink:

Daniel a écrit :Ceci dit, il faut étudier scientifiquement la durée et le décalage des pulsations, sinon la mise au point par essais empiriques risque de durer des mois. Dans la version actuelle les déplacements du curseur sont irréalistes. Ils ne sont pas proportionnels aux déplacements de la souris et ne réagissent pas bien aux changements de vitesse.
Oui tout à fait il fait réussir à être le plus réaliste possible par rapport aux comportements de la vraie souris THOMSON.
C'est pour ca que je ne publie pas encore le code,..
Daniel a écrit :Il y a aussi un point que je n'explique pas : les déplacement latéraux (sens des X) sont presque bons, par contre les déplacements verticaux (sens des Y) sont très mauvais : très rapides si la souris va lentement, mais le curseur se bloque (ou pire : revient en haut de l'écran) si on accélère. Pourtant les mêmes axes, les mêmes roues et les mêmes détecteurs sont utilisés pour les deux axes, les signaux devraient être identiques. Il y a peut-être un problème soft, selon que l'on donne priorité au déplacement en X ou en Y. Il ne faut pas privilégier l'un par rapport à l'autre, en particulier pour permettre des déplacements "en diagonale", et pas en "escalier".
Alors j'ai constaté que le comportement des déplacements en Y avec le montage nécessité de rallonger les délais par rapport au axe X, mais je ne sais pas pourquoi.
par contre je ne comprenais pas au départ pourquoi les diagonales se faisait en "escaliers", mais cette après midi en y repensant j'ai compris (je pense) et c'est tout bête: en modifiant le code pour gérer la vitesse de déplacements j'ai mis des boucle de répétitions, mais le problème c'est que j'envoi XX fois Xa et Xb et après XX fois Ya et Yb, mais il faudrait plutot envoyer XX fois en cadence Xa,Xb,Ya,Yb , non ?
Et je pense que ca va résoudre les problèmes de vitesse aussi :roll:

Daniel a écrit :Autre point : la résolution de la souris PS/2. Elle peut varier d'un modèle à l'autre, en particulier les modèles optiques modernes ont souvent une meilleure résolution que les modèles à boule plus anciens. Je ne sais pas si la librairie Arduino prend en compte ce paramètre. Si ce n'est pas le cas, il faudrait l'ajouter dans le programme.
Si tu regarde dans le code dans la partie Setup, j'ai rajouté toute la partie configuration avec la fixation à 200 échantillons par secondes et 8 counts/mm , juste après la détection du type de souris (2 / 3 boutons) ;)
Daniel a écrit ::idea: J'ai une idée pour le mode Turbo : pas besoin de faire compliqué, il suffit de doubler le nombre de pulsations et de diminuer leur durée de moitié. Le troisième bouton de la souris n'étant pas exploitable par l'ordinateur Thomson, on pourrait l'utiliser pour basculer du mode normal au mode turbo et inversement.
Au départ j'y avait pensé, mais si jamais on utilise une souris 2 boutons ou si plus tard on veux gérer le 3eme boutons on est bloqué ?
Après on peut l’implémenter comme ca pour faire simple, par rapport à ce que j'ai implémenté !!!
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

Daniel a écrit :..... Reste à déterminer le décalage entre xa et xb. Il faut essayer. Je partirais sur des valeurs de 5 à 10 ms, à ajuster par approximations successives.
Tu parles de front de 50ms (millisecondes) ca me parait lent, je me suis basé sur des front en μs (microsecondes) :roll:
Mais tu as peut être raison les délais sont peut être trop court !!!

Demain je peux faire l'essai en passant les délais en ms (millisecondes).

Pour les décalages entre Xa et Xb c'est un des points noirs du problème, et de plus il faut que je prévois le délai entre les X et Y ...

ce qui pourrait donner ca :

Code : Tout sélectionner

50ms  50ms  50ms  50ms  50ms  50ms  50ms  50ms  50ms
      _____       _____       _____       _____
     |     |     |     |     |     |     |     |
Xa___|     |_____|     |_____|     |_____|     |_____  
| 50 |5| 50|5|50 |5| 50|5| 50|5| 50|5| 50|5| 50|5| 50   TIMING
        _____       _____       _____       _____
       |     |     |     |     |     |     |     |
Xb_____|     |_____|     |_____|     |_____|     |____
    55 |5| 50|5|50 |5| 50|5| 50|5| 50|5| 50|5| 50|5| 50  TIMING
         _____       _____       _____       _____
        |     |     |     |     |     |     |     |
Ya______|     |_____|     |_____|     |_____|     |____
     60 |5| 50|5|50 |5| 50|5| 50|5| 50|5| 50|5| 50|5| 50  TIMING
          _____       _____       _____       _____
         |     |     |     |     |     |     |     |
Yb_______|     |_____|     |_____|     |_____|     |____
      65 |5| 50|5| 50|5| 50|5| 50|5| 50|5| 50|5| 50|5| 50  TIMING
désolé pour le schéma pas très orthodoxe :oops:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par 6502man »

Alors mise en application de ce que nous avons étudié précédemment et cela fonctionne beaucoup mieux, par contre pour les timing je suis resté sur des valeurs en µs car en ms cela était vraiment trop lent :roll:

Donc ca fonctionne très bien même en diagonale, ce n'est peut-être pas encore parfait mais c'est très largement exploitable dans une application ou un jeu.
Il faudrait encore peaufiné les réglages pour être parfait ...

Voici en vidéo ce que cela donne avec déplacements rapides, lents, ligne droite, diagonales..

J'ai modifier pour prendre en compte aussi les mouvements très lent.

Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17319
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Souris PC sur TO8/9/9+ pour remplacer les souris THOMSON

Message par Daniel »

Testé à l'instant sur TO8 : les progrès par rapport à hier sont considérables. Tu n'es pas loin du but.

En déplacement lent ou normal le fonctionnement est très satisfaisant : on contrôle parfaitement le mouvement du curseur. Il y a toujours le même problème : la vitesse de déplacement du curseur n'est pas proportionnelle à la vitesse de la souris, mais ce n'est pas une très grosse gêne. Juste un peu dommage.

En déplacement trop rapide ça décroche (le curseur ne suit pas). J'ai comparé avec la vraie souris Thomson : elle décroche aussi si on va très très vite, mais la souris émulée décroche beaucoup plus tôt. Ce n'est pas gênant dans la pratique courante, par contre les joueurs acharnés feront la différence.

En conclusion l'émulation actuelle est très satisfaisante. On peut certainement l'améliorer encore en ajustant un peu les paramètres.

Dès que j'aurai reçu les pièces commandées (Arduino Pro Mini et connecteurs) je réaliserai un prototype.
Il ne devrait pas dépasser 4 x 2 x 1 cm et pourrait presque tenir dans le boîtier d'un connecteur DB9 comme celui-ci :

Image
Daniel
L'obstacle augmente mon ardeur.
Répondre