En effet.
C'est en lisant ceci que j'ai eu un doute : https://www.microchip.com/forums/FindPost/622734 (la deuxième intervention du membre qui s'appel Pacer) en gros il dit que dans la norme USB un périphérique non utilisé doit avoir une conso propre inférieure à 500µA mais ici avec les AOP ce ne sera jamais le cas car on est au dessus. D'un autre côté avec des potards il y a peu de chance qu'on soit ok de ce côté là sauf si le PIC coupe le 5V qui alimente les potards quand on ne cause pas avec le module BU0836A ????
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
Si la communication était coupée, je ne verrai pas mon joystick dans le système Windows. Il est bien présent. Vu les résultats que j'obtiens, je m'oriente de plus en plus vers un bug logiciel.
[edit]
j'ai lu trop rapidement le commentaire de Vincent : si mes voies analogiques n'était pas câblées (sans potar), Windows ne les référencerait pas. Or que je mette un potentiomètre ou mon circuit, Windows les voit, elles sont bien affichées dans le système. Ensuite, quand je fais un câblage, une modification sur le circuit, je débranche le contrôleur puis je le rebranche. Windows voit bien les changements.
[/edit]
J'ai testé avec des potentiomètres. Au delà de 5 potentiomètre, le software ne voit plus rien contrairement au système windows. J'ai utilisé un autre contrôleur du même fournisseur (mais le PIC utilisé est différent), et même problème.
Donc je pense qu'il s'agit plus d'un bug logiciel. Je vais envoyer un mail à l'éditeur pour avoir un avis.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)
C'est une excellente question.
Qu'est ce que tu regardes sous Windows, je ne comprends pas ? Windows voit un joystick avec 'x' entrées connectées ?Envoyé par Auteur
Pour préciser mon idée sur la conso des AOP suite à la lecture du forum Microchip ; si vraiment un périphérique avec lequel on ne cause pas (branché mais qu'on n'interroge pas) doit baisser sa conso à moins de 500µA là ce n'est pas possible avec les AOP et au delà d'un certain nombre de potard ça ne sera plus possible non plus. Il n'y aurait pas un plantage à cause de ça ? Pas un bug, juste un problème car on sort du standard.
Si tu connectes des potards plus gros, est ce que tu arrives a dépasser la limite de 5 ? Quelles étaient les valeurs des potards ?
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
pareil, je me pose la question.Envoyé par Guesset
panneau de configuration puis périphériques et imprimantes. Là, tu peux voir le joystick connecté et ses propriétés. Donc si windows voit mes signaux, mon logiciel doit les voir aussi.
10k pour les potar, conformément à la doc qui conseille des potentiomètres entre 1ko et 100ko :
What to do with unused inputs?
Unconnected buttons will appear as not pressed - just ignore them
Unused analog inputs are automatically disabled. They will appear as soon pots are connected and BU0836A is powered up. In other words, if they are not connected - you will not see them.
Which pots are the best?
Any value from 1kOhm to 100kOhm will work fine. If you don't know where to start, get 10kOhm ones
Use linear pots (taper B.) Avoid non-linear, log pots with tapers A, D or Y used in audio level controls
Any pot would work but the best ones are industrial quality Spectrol (Vishay) and Bourns. They have life expectancy of few million shaft revolutions.
Good wiring helps. For ultimately clean signal use shielded wires and ground the pot's case if it's metal
Try to use as much of pot travel range as possible.
Bonjour Auteur,
Peut être que cela n'a pas d'importance, mais R1 décale le point de fonctionnement. L'écart maximal étant à mi course, il est de 1/(2 + P/2R1) pour 1/2. Si on veut éviter que ce décalage ne soit trop important, il faut que P/2R1 soit petit devant 2. Avec R1 = 30k, j'éviterais de dépasser 10k pour P.
Pour la détection de l'existence ou non d'un potentiomètre je ne vois que deux solutions :
- Une valeur hors gamme en cas d'absence (par exemple en mettant une diode passante au pied du potentiomètre il ne descendrait jamais en dessous de la tension de seuil de la diode alors que R1 forcerait à 0 en cas d'absence de potentiomètre). Mais encore faut il que cela soit compris par le reste de la chaîne.
- Une détection du courant impliqué par la charge du potentiomètre.
J'aurais tendance à supposer ce dernier cas, d'où ma proposition de charger le + des entrées (vers le contrôleur) par une résistance fixe à la masse simulant la présence d'un potentiomètre avec l'inconvénient de toujours répondre "oui y'en a un!". Mais le nouveau montage ne capte pas l'absence/présence d'un potentiomètre (et quand bien même le ferait-il il faudrait transmettre cette information avec un optocoupleur pour conserver l'isolation galvanique) donc cette information est perdue.
Je suppose que tant qu'une entrée lue est significative, le contrôleur ne vérifie pas la connexion et qu'il ne s'en inquiète que si celle-ci apparaît problématique (ici 0). En langage plus Courant : isPxConnected = [PxVal > 0) || (PxCurrent > 0); en évaluation optimisée.
Salut
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)
Bonjour,
J'ai pensé à une autre approche de détection des non connectés tellement simple que j'ai un peu honte de ne pas y avoir pensé plus tôt.
Si le contrôleur lit une valeur nulle (ou quasi nulle) il fait une deuxième lecture après avoir activé la résistance de pullup ! Si le potentiomètre est effectivement à 0 la résistance de pullup n'y changera pas grand chose. En revanche s'il n'y a pas de potentiomètre la valeur sera proche du maxi.
Il y a cependant quelques hypothèses. Comme le contrôleur supporte des potentiomètres de valeurs élevées (au moins 100 k) on peut supposer que la numérisation utilise un échantillonneur bloqueur et présente donc une impédance d'entrée élevée (1 MOhm par exemple) même durant la mesure (contrairement à certains ). Une forte résistance de permanente de pull down (par exemple 250k) altérera peu les mesures (10% quand même avec P =100k à ùi course)
Si ça fonctionne comme cela, notre ampli op se voit balancer une résistance de quelques kOhms au plus 5V s'il a le malheur de présenter au contrôleur une valeur 'quasi) nulle. Si son impédance de sortie est assez faible (ce qui doit être le cas mais je n'ai été voir la datasheet) cela ne devrait pas trop le perturber (quoique deux sorties en concurrence...) et garantir une valeur par défaut à 0.
Salutations
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)
Bonjour Auteur,
S'il n'y a pas besoin de gain, j'aurais mis la même résistance que R2 ce qui en l'occurrence supprime la résistance variable R6 puisque R5 égale déjà R2..
S'il y a besoin de gain, je l'aurais mis dans la boucle du premier ampli-op en ajoutant une résistance r2' (R2 restant relié à l'entrée - de l'ampli-op) entre r2 et la photodiode pour avoir un gain 1 + R2'/R2 (décalé par la diode mais on s'en moque car sa consœur fera le décalage inverse) et de l'autre coté du photo-coupleur j'aurais remplacé R5 + R6 par R2 + R2'. Bien sûr le gain doit être calculé pour éviter tout risque de saturation. Ce n'est pas la peine de tenter de linéariser d'un coté si on écrête de l'autre .
Remarque, par principe même, le 5 volt ne peut être atteint en sortie au cause de la photodiode.
Mais je ne sais pas si ce souci de linéarité est si important que cela pour des joysticks.
Salut
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)
Guesset
R2 = R5 normalement on devrait être très linéaire.
Si R2 = R5 = 55kΩ, IF devrait être de 10mA
Si R2 = R5 = 25kΩ, IF devrait être de 20mA
Avec 30kΩ on est bon !
Si mes calculs sont bons d'après la note d'appli https://www.vishay.com/docs/83708/appnote50.pdf (page 11, figure 19)
Concernant le gain, je pense qu'il suffit de baisser R2 dans le schéma de Auteur, la contre réaction de l'AOP va réagir en envoyant plus de courant dans la photodiode et de ce fait R5 va être traversée par plus de courant donc plus de tension à ses bornes
La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
Richard Feynman
Bonjour Vincent,
Oui mais il y a un autre problème avec R1 = R2 = 30 k. Si les potentiomètres ont une valeur élevée, 100 k par exemple, alors les 30 k sont non négligeables et à P/2 au lieu des 2.5V théorique on aura environ 1.36V. Comme les extrêmes restent inchangés on voit que, là encore la linéarité, cède devant l'adversité.
Oui, la relation entre R2 et R5 (y compris l'éventuel R6) peut définir le gain. Auteur augmente R5 avec R6 et tu proposes de diminuer R2. En fait c'est la même démarche. Mais si on est soucieux de linéarité (ce qui n'est pas nécessairement un besoin absolu pour des manettes de jeu) il faut éviter cela. Les deux diodes auront le même courant si leurs caractéristiques de tension sont identiques ce que l'on remet en cause avec cette dissymétrie, c'est pourquoi j'ai proposé une alternative. Mais dans tous les cas, la gamme ne peut couvrir 0..5V à cause de la tension de seuil des diodes.
Seul Auteur peut nous dire les exigences exactes en matière de gamme et de linéarité. Peut être nous cassons nous la tête sans objet à cause d'un montage qui incite à supposer un besoin fort de linéarité ?
Salut
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)
Bonsoir,
je vais utiliser ce joystick comme une carte d'acquisition de signaux analogiques. Comme je l'ai indiqué précédemment, le potentiomètre sert simplement à régler un gain de 1 environ (grâce à un oscillo et un voltmètre). Une fois fait, je n'y toucherai plus.
R6 me sert donc à régler le gain, R5 me sert de protection car si R6=0, ma sortie se retrouve à la masse Il faudrait que je regarde combien vaut R6 une fois mon réglage fait.
C'est la 1ère fois que j'utilise l'IL300 et j'ai sans doute choisi de manière un peu maladroite mes résistances.
Bonjour,
Oublions les potentiomètres et supposons avoir une source linéaire à basse impédance. Avec les valeurs choisies pour R2 et et R5, comme l'a vérifié Vincent, le gain unitaire et la linéarité devraient être garantis.
L'ajustement ne saurait alors qu'être très marginal pour compenser des différence de valeurs effectives, un appairage pas si parfait des photodiodes etc. A priori cet ajustement peut être en plus comme en moins. C'est pourquoi je proposerais une R5 à 27k et une résistance ajustable de seulement 5k pour R6.
Bon, tout ça ne règle pas le coté pas vu pas pris des entrées.
Contrairement à ce que j'avais supposé, la détection ne semble pas se faire sur la consommation des 5 Volts propres à chaque entrée. Quand on regarde la photo de la carte contrôleur on voit que 5V et masse sont à touche-touche pour l'ensemble des entrées ce qui semble indiquer qu'elles ne sont pas individualisées. De plus le microcontrôleur utilisé n'est pas très riche en broches ce qui n'incite pas à utiliser 2 broches par entrée. Je crois que la solution d'une double mesure sans et avec une résistance de pull-up permet de vérifier si l'entrée est face à une haute impédance (rien => z = oo) ou pas (même un P de 100k ne présence qu'un impédance maxi de 25 k). Ceci étant l'implémentation fine m'échappe.
Comme le montage envisagé ne détecte pas s'il y a une entrée active, il faudra faire un choix : tout le monde actif par défaut, une activation manuelle, une activation automatique (plus dur). Mais comment passer l'information au contrôleur ?
J'aurais tendance à surveiller la sortie du montage à l'oscillo. Si le contrôleur charge de temps en temps la sortie avec une charge active cela doit se voir (même si c'est court et assez peu répétitif). Avec un peu de chance (et une capture d'événement ) on pourra peut être en déduire si la réaction de l'ampli op de sortie est conforme à ce qu'attend le contrôleur (a priori une variation mais une variation faible).
J'aurais bien également tendance à supposer un problème logiciel mais avec le vague sentiment de passer lâchement la main
Salutations
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)
Salut,
Guesset, il ne faut pas perdre de vue que le coeur du module est un microcontrôleur et que derrière il y a un micrologiciel qui tourne. Sauf à avoir le code source, il faut composer avec et non pas faire comme s'il n'existait pas. Après que Auteur eut confirmé que les pins +5V sont sur un seul rail, que le fabricant préconise de laisser les pins non utilisés en l'air, cela ne m'a pas étonné car de souvenir sur eevblog (?) était expliquer comment en faire la détection. Cela se fait au démarrage du microcontrôleur avec un échantillonnage et les pins qui correspondent sont désactivés logiciellement. Si tu forces le potentiel des pins, alors ils seront considérés comme utilisés. Aussi, le fabricant fournit un utilitaire de configuration qui je suppose offre la possibilité de désactiver explicitement telle ou telle entrée, sans parler du fait que généralement une manette de jeu peut se régler très finement sur PC et ici le cas n'est pas très différent.
Bonjour à tous
N'ayant pas forcement beaucoup de temps à consacrer au forum. J'ai suivi cette discussion mais j'avais toujours un temps de retard pour y mettre une réponse.
Ce qui me parait bizarre, et m'a fait longtemps hésité sur le fait qu'il est possible d'y injecter une tension DC*, c'est les recommandations pour la connexion des potentiomètres, beaucoup trop précises. Ou alors c'est juste pour recommander un branchement en étoiles du VCC/GND depuis les deux rails qui sont directement aux bornes d'un condensateur de découplage (ce serait donc le premier fabricant de module grand-public que je vois et qui fait attention à comment ses utilisateurs non-expérimentés utiliseront les modules).
Le fait que même avec 6 potentiomètres cela produit le même problème doit venir comme tu le supposes d'un problème logiciel. Voir d'un problème spécifique à de ce module joystick avec ce logiciel (et là bonne chance pour résoudre le problème).
Est-ce qu'avec Windows tu peux lire l'états des 6 canaux, ou c'est juste l'info du nombre de canaux qui est disponible ?
Bonne suite
Delias
*Certaines anciennes méthodes de lecture de résistance variable se passant de convertisseur A/D, comme les Joystick en DB15, ne sont pas compatible avec autre chose qu'une résistance variable. Là ce n'est clairement pas le cas.
Je pensais également que seul un potentiomètre pouvait être connecté aux entrées. J'ai été surpris que je puisse directement injecter une tension sur une entrée. Et c'est plutôt une bonne nouvelle. Après tout c'est un microcontrôleur avec des entrées analogiques.
Mais la méthode de détection d'une voie utilisée ou non reste un mystère entier pour moi. kaitlyn apporte un début de réponse, mais ce n'est pas très clair dans mon esprit.
dans le panneau de configuration de windows, je peux non seulement connaître le nombre de canaux utilisés mais aussi lire leur valeur. Donc si je modifie la tension d'entrée, je peux voir le curseur de la voie en question se déplacer. Il faut que je fasse attention à rester scrupuleusement dans la plage 0-5V.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager