IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Questions électroniques


Sujet :

Raspberry Pi

  1. #61
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Citation Envoyé par Vincent Petit
    Néanmoins vu les ordres de grandeurs, pas sur qu'un humain voit une différence entre 1ms et 100ms ?
    Je suis d'accord avec toi sur tes propos.
    Sauf que je considère que la gestion des rebonds se fait, pour le pull-up dans la seconde phase, à savoir le déchargement qui est rapide.
    Ou dans ton pull-down, dans la première phase, à savoir au chargement qui est rapide aussi.

    Ce n'est pas plutôt dans la phase lente qu'il faut faire la gestion des rebonds ?

    Si je reprends ton graphique de ton poste #45, et tes propos :
    Citation Envoyé par Vincent Petit
    L'avantage d'avoir une charge exponentielle grâce au condensateur, c'est que la tension met un peu de temps à monter ce qui masque les rebonds.
    c'est bien la lenteur du condensateur et de surcoit la résistance qui est associée, qui provoque ce phénomène, non ?

    Citation Envoyé par Vincent Petit
    Prenons un exemple pour exploiter ce graphique, R = 100k ohms et C = 100nF
    t = (R*C) = 10ms
    Ce n'est pas bizarre d'avoir pour une résistance de pull-up ou pull-down du 10k ohms et de mettre comme résistance de protection du BP du 100k ohms ?

    Si je mets toutes les résistances à 10k ohms, le temps t sera de 1ms.

    Que ce soit 1ms ou 10ms, est-ce un temps de gestion acceptable :
    --> pour la réaction d'un être humain ?
    --> pour la gestion des rebond ?

    Citation Envoyé par Vincent Petit
    Généralement on considère qu'à 5*t la capa est entièrement chargée.
    Pourquoi 5 ?

    Si je reprends le seuil de détection d'un état :
    --> Pour l'état 0, c'est entre 0.0Vcc et 0.9Vcc.
    --> Pour l'état 1, c'est entre 1.6Vcc et 3.3Vcc.

    La détection de l'état 1 se fait déjà à 1 * T, c'est-à-dire à 63.2% :
    --> 0.632 * 3.3Vcc = 2.0856 > 1.6.

    Inversement, la détection de l'état 0 se fait à 2 * t, c'est-à-dire à 86.5% :
    --> (1 - 0.865) * 3.3 = 0.4455 < 0.9

    Est-ce une sécurité dans la détection du changement de l'état ?

    Citation Envoyé par Vincent Petit
    Je n'ai pas répondu entièrement à la question b) mais c'est volontaire car je voudrai savoir avant si tout ce que j'ai écrit paraît clair ?
    On va dire que OUI, mais maintenant, il faut que je digère tout ça.

    Citation Envoyé par Vincent Petit
    Petit bonus ! Je suis tombé sur ça
    J'ai pourtant cherché, et je n'ai pas trouvé ce type de graphique.
    Nous revoilà au cœur de mon problème, le pull-down symétrique du pull-up. C'est-à-dire le condensateur aux bornes du BP.

    J'ai compris tes explications, mais pas le rôle du condensateur.
    Prenons le cas du pull-up (le BP est en bas du graphique).

    Au démarrage, le jus passe dans le câble, et de ce fait, le signal lu par la GPIO est à 1.
    Le condensateur se charge bien et joue le rôle d'un interrupteur ouvert. Cette question est primordiale. Est-ce vrai ou pas ?
    Pourquoi dis-je que son comportement est similaire à un interrupteur ?
    Parce que le signal lu par la GPIO est à 1 quand le condensateur se charge.

    Ce qui me fait dire, depuis le début de cette Q-5) que le condensateur en décharge est un interrupteur fermé.
    Cela se résume au sens pris par le condensateur entre sa phase de chargement et sa phase de déchargement.

    Mais quand est-il de mon pull-down ou si tu veux de celui de "allaboutcircuits".
    Nous sommes d'accord qu'après le démarrage, le fonctionnement est conforme à ce que l'on attend de lui.

    Le problème est au démarrage jusqu'à ce que le condensateur soit pleinement chargé.

    a) Pas de jus, le BP est relâché, le condensateur est vide.

    b) on met le jus, le BP est toujours relâché et le condensateur se charge.
    (je parle bien sûr de la photo du poste #60, partie gauche).
    Oui, mais voilà. Laisse-t-il passer du jus vers la GPIO ?

    Deux cas peuvent se présenter :

    c) le condensateur en charge se comporte comme un interrupteur ouvert et aucun jus (signal à 0) va vers le GPIO.

    d) le condensateur en charge ne se comporte pas comme un interrupteur, et laisse passer le jus (signal à 1) vers la GPIO.

    Comment expliquer si la broche positive du condensateur se trouve vers le haut (coté VCC) et si le BP est relâché, nous ayons un signal à 1 vers la GPIO ?

    Je me pose les questions suivantes :

    e) le condensateur joue-t-il réellement le rôle d'un interrupteur ?
    Je pense que non.

    f) l'anomalie au démarrage du pull-down est aussi présente dans le pull-up, sauf que cela ne se remarque pas.

    g) dans le cas du pull-up, le signal doit être à 1 dès le démarrage.
    Et le chargement du condensateur produit aussi un 1 vers la GPIO.
    Nous sommes en phase et cela ne pose aucun problème.

    h) dans le cas du pull-down, le signal doit être à 0 dès le démarrage.
    Et le chargement du condensateur produit aussi un 1 vers le GPIO.
    De ce fait, 0 et 1 produit un 1 vers le GPIO, ce qui n'est pas bon.
    Nous sommes en opposition de phase.

    i) dans les deux schémas, il manque quelque chose pour faire cette distinction de phase et d'opposition de phase.
    Quand mettre en évidence dans un schéma, le sens du jus dans le chargement qui n'est pas le même sens du jus dans le déchargement.
    Autrement dit, mettre en évidence deux chemins différents.
    Peut-être introduire une diode ?

    Je me répète encore une fois, mais je trouve ce sujet très compliqué, juste pour gérer un BP.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #62
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Je suis d'accord avec toi sur tes propos.
    Sauf que je considère que la gestion des rebonds se fait, pour le pull-up dans la seconde phase, à savoir le déchargement qui est rapide.
    Ou dans ton pull-down, dans la première phase, à savoir au chargement qui est rapide aussi.

    Ce n'est pas plutôt dans la phase lente qu'il faut faire la gestion des rebonds ?
    Oui, et à dire vrai c'est le tout qui fait la gestion des rebonds, charge et décharge.

    Citation Envoyé par Artemus24 Voir le message
    c'est bien la lenteur du condensateur et de surcoit la résistance qui est associée, qui provoque ce phénomène, non ?
    Que ce soit pour la charge ou la décharge, c'est bien l'association R * C qui va rendre la constante de temps plus ou moins longue. Le condensateur tout seul est hyper rapide à se charger ou à se décharger car le R qui lui est associé est minuscule, c'est celui qui est à l'intérieur.

    Citation Envoyé par Artemus24 Voir le message
    Ce n'est pas bizarre d'avoir pour une résistance de pull-up ou pull-down du 10k ohms et de mettre comme résistance de protection du BP du 100k ohms ?

    Si je mets toutes les résistances à 10k ohms, le temps t sera de 1ms.

    Que ce soit 1ms ou 10ms, est-ce un temps de gestion acceptable :
    --> pour la réaction d'un être humain ?
    --> pour la gestion des rebond ?
    Bizarre pas forcément mais il faut faire les calculs ou une simulation car l'impact est grand. Dans tous mes dessins ou dans les exemples que j'ai donné le but était d'améliorer la compréhension. Dans un montage réel peu être que les valeurs prises en exemple ne conviennent pas du tout.

    Citation Envoyé par Artemus24 Voir le message
    Pourquoi 5 ?

    Si je reprends le seuil de détection d'un état :
    --> Pour l'état 0, c'est entre 0.0Vcc et 0.9Vcc.
    --> Pour l'état 1, c'est entre 1.6Vcc et 3.3Vcc.

    La détection de l'état 1 se fait déjà à 1 * T, c'est-à-dire à 63.2% :
    --> 0.632 * 3.3Vcc = 2.0856 > 1.6.

    Inversement, la détection de l'état 0 se fait à 2 * t, c'est-à-dire à 86.5% :
    --> (1 - 0.865) * 3.3 = 0.4455 < 0.9

    Est-ce une sécurité dans la détection du changement de l'état ?
    Dans la littérature on retient 5τ car le condensateur sera à 99% de la valeur de la tension qu'on lui applique.

    Pourquoi 5τ ? La forme exponentielle a la particularité de ne jamais atteindre 100%, même à 100τ on sera à quelque chose comme 99.98% alors pour les calculs il faut se contenter d'une approximation et 5τ en est une très bonne. C'est un peu comme en informatique avec un calcul faisant intervenir π, on est obligé de le tronquer car le nombre de chiffre après la virgule est infinie. Pour le condensateur c'est pareil, arrivé à 5τ on arrêtera de faire des calculs infinitésimaux, on dira que c'est bon il est chargé.

    Je vois que tu fais un lien entre τ et les seuils de détection d'un microcontrôleur, tu as raison mais c'est parce qu'on est dans cas de figure bien précis. Si nous étions dans un autre cas de figure, par exemple une charge lente d'un condensateur jusqu'à ce qu'il fasse d'un coup basculer un transistor à effet de champs, le seuil pourrait être à 10V par exemple.

    5τ c'est juste un point de repère a avoir en tête.

    Citation Envoyé par Artemus24 Voir le message
    On va dire que OUI, mais maintenant, il faut que je digère tout ça.


    Ce n'est pas que je veuille distiller les informations mais il est impossible d'expliquer clairement en quelques messages, 7 à 5 ans de cours d'électronique. J'essaye de trouver des étapes clés qui permettent d'avancer par des "marches" plus grandes et sans qu'elles ne soient insurmontable pour autant. C'est pas facile en réalité

    Citation Envoyé par Artemus24 Voir le message
    Prenons le cas du pull-up (le BP est en bas du graphique).

    Au démarrage, le jus passe dans le câble, et de ce fait, le signal lu par la GPIO est à 1.
    Le condensateur se charge bien et joue le rôle d'un interrupteur ouvert. Cette question est primordiale. Est-ce vrai ou pas ?
    Pourquoi dis-je que son comportement est similaire à un interrupteur ?
    Parce que le signal lu par la GPIO est à 1 quand le condensateur se charge.
    Si j'ai bien compris, oui c'est ça. En 1 tu mets sous tension, en 2 le condensateur se charge au travers des résistances et le GPIO passe à 1. Et oui une fois le condensateur chargé à 5V, il n'y a plus de courant qui passe dedans et un composant traversé par aucun courant est un interrupteur ouvert (qui n'influence aucunement le montage)

    Nom : text27514.png
Affichages : 327
Taille : 14,2 Ko

    Citation Envoyé par Artemus24 Voir le message
    Ce qui me fait dire, depuis le début de cette Q-5) que le condensateur en décharge est un interrupteur fermé.
    Cela se résume au sens pris par le condensateur entre sa phase de chargement et sa phase de déchargement.
    Oui on peut le voir comme ça.
    Un condensateur déchargé est un interrupteur fermé (un court circuit) et un condensateur pleinement chargé est un interrupteur ouvert. On le voit au travers de l'équation du courant. i = C * (ΔV / Δt). Si je prends, un condensateur de 100nF et une tension de 5V aux bornes d'un condensateur déjà chargé à 5V, le ΔV est de 5V - 5V = 0V alors peu importe sur quel Δt je mesure l'équation final sera i = 100nF * 0 = 0 Ampère. Un condensateur chargé est un interrupteur ouvert, il ne consomme rien. A l'inverse si je prends une tension de 5V aux bornes d'un condensateur déchargé 0V, le ΔV est de 5V - 0V = 5V alors si je prends un Δt de 1us i = 100nF * (5/0.000001) = 5 Ampère = un bon courtjus (un fil ou un interrupteur fermé)

    Citation Envoyé par Artemus24 Voir le message
    Mais quand est-il de mon pull-down ou si tu veux de celui de "allaboutcircuits".
    Nous sommes d'accord qu'après le démarrage, le fonctionnement est conforme à ce que l'on attend de lui.

    Le problème est au démarrage jusqu'à ce que le condensateur soit pleinement chargé.

    a) Pas de jus, le BP est relâché, le condensateur est vide.

    b) on met le jus, le BP est toujours relâché et le condensateur se charge.
    (je parle bien sûr de la photo du poste #60, partie gauche).
    Oui, mais voilà. Laisse-t-il passer du jus vers la GPIO ?
    Oui après le démarrage (équivalent à une montage dérivateur) ensuite il se comporte comme un intégrateur donc conforme à ce qu'on attendait.

    Au démarrage le jus arrive sur un condensateur initialement déchargé. i = C * (ΔV / Δt), ΔV est grand puisqu'il sera de 5V - 0V = 5V et donc pendant un court instant le condensateur est vu comme un court-circuit (ralenti par la résistance) mais le GPIO va voir un 1 au démarrage, suivie d'une décharge lente jusque 0V sans avoir appuyer sur l'interrupteur.

    Citation Envoyé par Artemus24 Voir le message
    Comment expliquer si la broche positive du condensateur se trouve vers le haut (coté VCC) et si le BP est relâché, nous ayons un signal à 1 vers la GPIO ?
    Ce 1 dure un cours instant, et seulement au démarrage de l'alimentation ensuite il retombe à 0. Dans ma simulation j'ai lancé l"appuie du bouton 2ms après la mise sous tension donc le 1 n'a pas eu le temps d'aller jusque 0. Dans bien dès cas il est rare d'appuyer sur des boutons 2ms après l'allumage, on serait plutôt dans les secondes après le démarrage.

    Citation Envoyé par Artemus24 Voir le message
    e) le condensateur joue-t-il réellement le rôle d'un interrupteur ?
    Je pense que non.
    Non pas vraiment. Même si pour l'analyse d'un circuit on peut dire que quand un condensateur est complètement chargé et que la tension a ses bornes ne bouge plus d'un poils alors il est comme un interrupteur ouvert, il n'influence plus l'électronique. On peut dire aussi qu'un condensateur complètement déchargé se comporte comme un interrupteur fermé à la mise sous tension

    Citation Envoyé par Artemus24 Voir le message
    f) l'anomalie au démarrage du pull-down est aussi présente dans le pull-up, sauf que cela ne se remarque pas.
    Oui mais sur le pull-up c'est volontaire. Au démarrage, ça charge. Avec le pull-down de AllAboutCircuit au démarrage on a une impulsion à 1, le soucis c'est que le micro peut éventuellement croire qu'on a appuyer sur le bouton juste après le démarrage alors que ce n'est pas du tout ce qu'on a fait.

    Citation Envoyé par Artemus24 Voir le message
    g) dans le cas du pull-up, le signal doit être à 1 dès le démarrage.
    Et le chargement du condensateur produit aussi un 1 vers la GPIO.
    Nous sommes en phase et cela ne pose aucun problème.

    h) dans le cas du pull-down, le signal doit être à 0 dès le démarrage.
    Et le chargement du condensateur produit aussi un 1 vers le GPIO.
    De ce fait, 0 et 1 produit un 1 vers le GPIO, ce qui n'est pas bon.
    Nous sommes en opposition de phase.
    Non, non, rappelle toi les dessins : Pull-up est à 1 au démarrage et si on appuie sur le bouton on envoie un 0 au GPIO. Le pull-down au démarrage on est à 0 (sauf si on mis le condensateur comme dans le circuit de allaboutcircuit) et si on appuie sur le bouton on envoie un 1 au GPIO. Le comportement est le même si on n'avait pas eu de condensateur.





    Citation Envoyé par Artemus24 Voir le message
    i) dans les deux schémas, il manque quelque chose pour faire cette distinction de phase et d'opposition de phase.
    Quand mettre en évidence dans un schéma, le sens du jus dans le chargement qui n'est pas le même sens du jus dans le déchargement.
    Autrement dit, mettre en évidence deux chemins différents.
    Peut-être introduire une diode ?
    Oui la diode est le composant qui laisse passer le courant dans un sens mais pas dans l'autre. On considère R1 et R2. Dans le sens de la charge, la diode va courtcircuiter R2 afin que le condensateur se charge via R1 seulement. A la décharge le condensateur va se décharger via R2. Comme R1 et R2 on la même valeur, la constante de temps est la même (le condo se chargera et se déchargera à la même vitesse). Sans la diode, le condensateur se chargerait au travers de R1 + R2 et se déchargerait que par R2. Les temps de charge et décharge seraient différents.

    Nom : debounceCircuit.png
Affichages : 477
Taille : 8,4 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #63
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Citation Envoyé par Vincent Petit
    Oui, et à dire vrai c'est le tout qui fait la gestion des rebonds, charge et décharge.
    Je parlais uniquement de la pression du BP.

    On peut généraliser l'anti-rebond sur les deux phases, lors de la pression et lors du relâchement du BP.

    Citation Envoyé par Vincent Petit
    il faut faire les calculs ou une simulation car l'impact est grand.
    Justement, je cherche les valeurs types pour une bonne gestion des rebonds d'un BP.
    J'ai des résistances à 300 ohms, 1k ohms et 10k ohms, ainsi que des condensateurs à 100nF.
    Que dois-je me procurer pour gérer des BP sur une raspberry, sachant que c'est du 3.3Vcc ?

    Il y a la constante de temps T. J'ignore quelle valeur pourrait me convenir.
    Tu m'avais parlé de 10ms. Est-ce correcte comme estimation ?

    Citation Envoyé par Vincent Petit
    Dans la littérature on retient 5t car le condensateur sera à 99% de la valeur de la tension qu'on lui applique.
    Juste ça ? D'après ta réponse cela semble être une convention.
    Dois-je comprendre qua ma période doit être au minimum de 5T pour être efficace ?

    Citation Envoyé par Vincent Petit
    La forme exponentielle a la particularité de ne jamais atteindre 100%
    En mathématique, on parle d'une courbe asymptotique, qui tend sans jamais l'atteindre, sauf à l'infini.

    Citation Envoyé par Vincent Petit
    C'est pas facile en réalité
    J'ai compris que c'est un sujet difficile, bien que certains semblent croirent le contraire.

    Citation Envoyé par Vincent Petit
    Si j'ai bien compris, oui c'est ça.
    Je tiens à préciser que le condensateur et la résistance de protection n'interviennent pas dans la formation du signal à 1 que reçoit le GPIO, dans le cas du pull-up.
    En effet, le jus passe par la résistance R1 et aussi R2 et c'est tout.
    Le BP est relâché et le condensateur se charge.
    Sauf que dans le schéma du pull-down, j'ignore comment le condensateur se comporte.
    Il n'intervient pas dans la phase de démarrage.
    Est-ce bien cela ?

    Citation Envoyé par Vincent Petit
    Et oui une fois le condensateur chargé à 5V, il n'y a plus de courant qui passe dedans et un composant traversé par aucun courant est un interrupteur ouvert (qui n'influence aucunement le montage)
    Un condensateur chargé ne laisse passer aucun courant. D'accord.
    Mais en cours de chargement, le composant est traversé par le courant.
    D'où tes explications sur le fait d'avoir un signal à 1, au démarrage, sur l pull-down, alors que l'on s'attent à un signal à 0.

    Citation Envoyé par Vincent Petit
    pendant un court instant le condensateur est vu comme un court-circuit (ralenti par la résistance) mais le GPIO va voir un 1 au démarrage, suivie d'une décharge lente jusque 0V sans avoir appuyer sur l'interrupteur.
    D'accord, je comprends que dans sa phase de chargement, même brève, le condensateur laisse passer un jus qui va se diriger vers la GPIO, d'où ce signal à 1 alors que l'on attend un 0.
    (je précise que je parle bien de mon pull-down, celui aussi de allaboutcircuits).

    Je comprends mal, comment un condensateur qui se charge, peut laisser passer un courant vers la GPIO.
    Donc en phase de chargement, le condensateur est un interrupteur fermé, qui s'ouvre petit à petit, jusqu'à la pleine charge où il se comporte alors comme un interrupteur totalement ouvert.

    Citation Envoyé par Vincent Petit
    Non, non, rappelle toi les dessins
    Quand je parle du pull-up ou du pull-down surtout dans mon poste #61, je parle avec condensateur et résistance de protection du BP.
    Petite précision, je parle toujours de mon pull-down, qui est aussi celui de allaboutcircuits.

    Citation Envoyé par Vincent Petit
    Oui la diode est le composant qui laisse passer le courant dans un sens mais pas dans l'autre.
    Nous sommes dans le cas du pull-up, avec le trigger de Schmitt, je crois.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #64
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Je tiens à nouveau à préciser que je parle bien de pull-up et pull-down avec condensateur et résistance de protection du BP.
    Dans le cas contraire, je parle du pull-up ou pull-down classique, c'est-à-dire sans condensateur.

    En résumé, ce sont ces deux schémas que je dois retenir comme étant conforme à la gestion de l'anti-rebond d'un BP :

    Pièce jointe 575527

    Dans ton poste #53 tu me communiques ceci :

    Citation Envoyé par Vincent Petit
    Dans le schéma ci dessous, D1 court-circuite R2 lors de la charge. Sans la diode la capa se chargerait au travers de R1 + R2 hors, et grâce à la diode, la capa ne se chargera qu'au travers de R1. La décharge, quant à elle, ne se fera qu'au travers de R2 vers la masse.
    Pièce jointe 575866

    Il concerne le pull-up, mais il n'y a pas de BP. Il permet de gérer les deux résistances R1 et R2 séparément.

    Dans le poste #62, tu dis :

    Citation Envoyé par Vincent Petit
    Oui la diode est le composant qui laisse passer le courant dans un sens mais pas dans l'autre. On considère R1 et R2. Dans le sens de la charge, la diode va court-circuiter R2 afin que le condensateur se charge via R1 seulement. A la décharge le condensateur va se décharger via R2. Comme R1 et R2 on la même valeur, la constante de temps est la même (le condo se chargera et se déchargera à la même vitesse). Sans la diode, le condensateur se chargerait au travers de R1 + R2 et se déchargerait que par R2. Les temps de charge et décharge seraient différents.
    Et cette fois-ci tu donnes ce schéma avec le BP :

    Nom : debounceCircuit.png
Affichages : 477
Taille : 8,4 Ko

    Il est inutile de mettre le trigger de schmitt, le signal sera inversé (HIGH = 0 et LOW = 1).
    Sauf que si je désire un signal normal (HIGH = 1 et LOW = 0), je prendrais le pull-down (le tiens, celui du premier schéma ci-dessus).

    En ce qui me concerne, je mettrai à la place du trigger de schmitt, la résistance R3 de protection de la GPIO.

    J'ai du mal à raisonner comme un électronicien.

    Je suis arrivé à accéder à "https://www.digikey.com/schemeit/project/".
    Je ne sais pas pourquoi, il restait bloqué au chargement de la page.

    Coté expérimentation, mes tests ne fonctionnent pas bien.
    Je pars du pull-down, le classique sans le condensateur.
    J'ai mis une résistance pull-down de 10k ohms et une résistance de protection du GPIO, aussi de 10k ohms.
    Dans le cas de mon petit projet "des leds et des interrupteurs", ce montage fonctionne parfaitement.
    J'ai géré les rebonds au niveau logiciel. Quand j'appuie sur le BP, je n'ai aucun rebond de détecté dans le programme 'C'.

    J'ai créé un programme de test pour visualiser les rebonds du BP.
    J'utilise la bibliothèque "linux/gpio.h" afin de gérer les interruptions en rising et falling.
    Avec le pull-down, le classique sans le condensateur, j'ai bien une multitude de rebond.
    J'ai placé mon condensateur aux bornes du BP. J'ai encore des rebonds mais beaucoup moins.
    En plaçant la résistance de protection du BP, j'ai la même chose.
    J'ai utilisé du 300 ohms, du 1k ohms et du 10k ohms.

    Mon but est d'atteindre aucun rebond et je ne sais pas si je peux le faire.
    A moins que cela vienne du calibrage de mes résistances et du condensateur.
    Que sont les valeurs qui conviennent aux résistances et au condensateur pour obtenir aucun rebond ?

    Comme dit plus haut, dans le pull-down classique, j'ai utilisé une résistance de 10k ohms.
    Et j'ai mis une résistance de protection de la GPIO aussi en 10K ohms.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #65
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut,
    Concernant l'image ci dessous :

    Nom : path988.png
Affichages : 312
Taille : 27,8 Ko

    Elle n'est pas de moi et j'avais pensé, à tord, que les indications sous le dessin (que j'ai entouré) étaient clairs mais avec du recul je vois que ce n'est pas forcément le cas surtout quand on est entrain d'étudier un montage électronique. Pour un montage pull-down il faut faire une rotation de 180° à la diode. Cette diode n'a de sens que si la résistance de protection de l'interrupteur à la même valeur que celle de pull-down ou up.

    Pour la porte logique trigger de schmitt elle contribuera grandement au problème de marche d'escalier (temps de charge diffrent du temps de décharge) car ce type de porte logique a des seuils de changement d'état différent. Il y a aussi d'autres manières de réaliser un anti-rebonds hardware plus ou moins complexes (bascule D, bascule RS) qui sont des Latch (verrou de l'état logique même si il y a des rebonds). Ce sont des solutions supers efficaces et indépendantes des rebonds de l'interrupteur.

    A la lumière de tout ce qu'on a écrit depuis le début, la lecture de ceci devrait être plus parlant (j'ai presque envie de dire que de simplement regarder les schémas + graphiques, suffit)

    https://www.eejournal.com/article/ul...bounce-part-3/
    https://www.eejournal.com/article/ul...bounce-part-4/
    https://www.eejournal.com/article/ul...bounce-part-5/


    Citation Envoyé par Artemus24
    Je suis arrivé à accéder à "https://www.digikey.com/schemeit/project/".
    Je ne sais pas pourquoi, il restait bloqué au chargement de la page.
    C'est étrange, sous Chromium ou FireFox je n'ai pas de soucis et je n'ai pas souvenir d'avoir du installer un plugin ou autres choses du genre.


    Citation Envoyé par Artemus24
    J'ai mis une résistance pull-down de 10k ohms et une résistance de protection du GPIO, aussi de 10k ohms.
    Dans le cas de mon petit projet "des leds et des interrupteurs", ce montage fonctionne parfaitement.
    J'ai géré les rebonds au niveau logiciel. Quand j'appuie sur le BP, je n'ai aucun rebond de détecté dans le programme 'C'.
    D'accord, et le condensateur est un 100nF je crois ?
    Ça veut dire que la constante de charge est de 10k * 100nF (τ = 1ms) mais la constante de décharge est de (10k + 10k) * 100nF (τ = 2ms)

    Selon cette source : http://www.ganssle.com/debouncing.htm les rebonds sont typiquement autour de 1.6ms avec quelques maximum autour de 6.2ms. Je ne connaissais pas, personnellement j'ai toujours pris des constantes de temps entre 10ms et 20ms.

    Voici une simulation de ton montage : Je vois un problème immédiat, ça ne charge pas assez vite. La marche d'escalier est du au fait que d'un côté un charge via R2 * C1 et de l'autre on décharge via (R1 + R2) * C1. On pouvait mettre une diode mais ça n'aurait pas résolut le problème de charge pas assez rapide.

    Nom : 005.png
Affichages : 306
Taille : 53,5 Ko

    Essayons avec R2 = 100 Ohms pour accélérer la charge. C'est déjà mieux, la charge est expéditive τ = 100 Ohms * 100nF = 10µs. Comme nous considérons le condensateur est chargé à 5τ, soit 50µs, on sait qu'il est chargé rapidement. Il reste un problème, c'est la décharge qu'il faudrait ralentir encore plus.
    Nom : 008.png
Affichages : 323
Taille : 45,2 Ko

    On va essayer avec R1 = 100k pour voir, C1 va se décharger au travers de la 100 Ohms + 100k. Cela donne (100k + 100) * 100nF = 10ms. Comme nous considérons le condensateur est chargé à 5τ, on sait qu'il est déchargé à 50ms (qui est très grand par rapport à la durée moyenne d'un rebond qui est de 1.6ms).

    Le montage semble ok ! Il faudrait vérifier les seuils de détection du Raspberry et plus particulièrement le seuil minimum d'un High pour voir si il ne faut pas encore augmenter R1.

    Nom : 006.png
Affichages : 308
Taille : 44,3 Ko



    Je lève ici une ambiguïté, qui ne remet rien en cause mais qui a du te tordre les neurones. Je l'explique maintenant car si je l'avais fait avant :
    - Je n'aurai jamais réussi à te montrer que le montage pouvait être découpé en bloc
    - J'aurai été obligé de te répondre des "oui et non" dans plusieurs de tes questions.

    A l'école quand on étudie le montage RC on comprend que plus le couple Rcharge *C est grand et plus le condensateur charge doucement. C se charge au travers de R. Inversement si C trouve une résistance (en parallèle même si parfois il faut redessiner le montage pour s'en apercevoir) pour se décharger dans le 0V alors plus le couple Rdécharge*C est grand et plus le condensateur décharge doucement.

    En partant de ça, j'ai essayé d'expliquer qu'il fallait analyser un montage électronique en bloc fonctionnel, et c'est bien comme ça qu'il faut faire. J'avais dit que parfois il arrivait qu'un composant soit dans deux blocs à la fois ce qui, quand on débute, rend les choses un peu plus difficile à voir. Dans le montage anti-rebond pull-up, plus simple à comprendre, la résistance de charge c'est principalement la résistance de pull-up si on regarde bien. Le montage est certainement plus simple a comprendre dans le principe mais il est bien plus compliqué de le séparer en bloc fonctionnel pour faire des calculs car le moindre changement de la résistance de pull-up va influencer la charge du condensateur. Dans le montage pulldown, c'est celle qui contrôle la décharge.

    Ce qui est compliqué c'est d'arriver à expliquer le comportement du circuit RC (en charge et en décharge) tout seul alors quand dans le circuit complet R se trouve être le pulldown ou up de l'interrupteur. Ce lien n'est pas évident a expliquer dans les tous premiers messages d'explications.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #66
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Il n'est évident de s'exprimer correctement sur un sujet que je ne maitrise pas
    D'autant que il y a parfois des quiproquo. Ce n'est pas bien grave. L'important est d'avancer.

    J'ai deux programmes qui sont totalement différents dans la gestion du BP.

    I) mon petit projet qui consiste à faire un chenillard.
    Sur une breadboard, il y a des leds et deux BP.
    J'ai utilisé le PULL-DOWN classique, sans condensateur et sans résistance de protection du BP.
    Comme je l'ai dit, ce projet fonctionne correctement et je n'ai aucun problème avec les rebonds.3

    Comment j'ai procédé ? Par la gestion des rebonds coté logiciel.
    Ce n'est pas aussi simple que l'on veut croire, mais la grande inconnue reste la lecture du signal.
    Tout ce que nous savons, se résume à un 1 ou un 0.
    On va admettre que la lecture du signal s'effectue au moment où on souhaite le faire.
    Cela peut se passer à n'importe quel moment et obtenir :
    --> un creux entre deux rebonds
    --> une bosse aussi entre deux rebonds
    --> un véritable signal haut
    --> un véritable signal bas.

    La lecture s'apparente à un échantillonage sans se préoccuper de ce qui s'est pas passé avant.
    Il y a même pire, nous ne savons rien de l'aspect du signal électronique.
    Est-il lissé ou pas ? Y-a-t-il des rebonds à gérer ou pas ?

    Pour résoudre ce problème, je pars des hypothèses suivantes :

    a) quand le bouton est en position relâché, je considère que le signal est stable.
    Aucune intervention humaine. Le signal est un 0.

    b) quand le bouton est en position enfoncé, je considère que le signal est instable.
    Une intervention humain est en cours d'exécution. Le signal est un 1.
    Je ne sais pas trop s'il s'agit d'un rebond où si l'action d'enfoncé le BP est terminé.

    Pour résoudre ce problème, j'introduis la notion d'état du BP.
    Il y a l'état précédent et l'état courant.
    De ce fait, je me retrouve avec quatre cas à gérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +-----+------+------+
    | Cas | Prec | Cour |
    +-----+------+------+
    |  1  |   0  |   0  |
    |  2  |   0  |   1  |
    |  3  |   1  |   0  |
    |  4  |   1  |   1  |
    +-----+------+------+
    On peut éliminer les cas 1 et 4 car les deux états sont identiques.
    Reste le cas 2) que je nomme le frond ascendant et le cas 3) le frond descendant.
    Pour ma part, je considère que j'enfonce le BP, et c'est le cas 2) qui m'intéresse.

    c) Pour déterminer s'il y a eu manipulation du BP, je suis obligé de répéter cette lecture.
    Cela se fait périodiquement à l'aide d'un timer afin de ne pas bloquer inutilement la CPU, comme avec la fonction "SLEEP()".
    Qui dit TIMER dit périodicité. La largeur de cette périodicité doit être évalué afin d'être significative.
    Elle correspond à la durée moyenne de l'enfoncement et du relâchement du BP par un être humain.

    De plus, je n'ai pas nécessairement les quatre cas qui se répète périodiquement.
    Comme dit précédemment, je m'intéresse uniquement au cas 2).

    d) Le dernier point est de considérer l'action qui s’enchaîne lors de la pression du BP comme non interruptible. Cela se traduit par un mutex.
    Comme je fais clignoter des leds, ceux-ci sont aussi gérés par un TIMER.

    Pour terminer, la durée de la périodicité de la gestion du BP est de 80ms.
    La durée du traitement du BP est de moins de 1ms : je lis et je compare et je stocke le résultat, rien de plus.

    II) le second programme qui me sert de test pour l'anti-rebond est différent.
    Sur une breadboard, il y a un pull-down avec condensateur et résistance de protection du BP et bien sûr un BP.
    La résistance du pull-down et de la protection du BP sont de 10k ohms. Le condensateur est un 100nF.

    Le programme est basé sur la bibliothèque "linux/gpio.h".
    La lecture du BP se déclenche sur un événement, c'est-à-dire par une interruption.
    Les lectures sont dans une boucle générale.
    Tant qu'il ne se passe rien, la lecture se met en attente.
    Sur un événement, je détecte soit un rising soit un falling.
    J'affiche le résultat ainsi que le timestamp au millionième de seconde.
    Ce programme, à l'inverse du premier, n'a pas pour fonction de gérer les rebonds mais tout au contraire de les détecter.

    J'ai fait différents montages, mais j'ai toujours des rebonds. En fait, avec condensateur et résistance de protection, beaucoup moins.
    Ce n'est pas anormal car je n'ai pas le bon condensateur ni les bonnes résistances et il me manque aussi la diode.

    En lisant les liens, je découvre que le choix retenu pour tau est de 20ms. Pourquoi pas.
    Il est dit aussi que le temps de pression et de relâchement du BP tourne autour des 100ms.
    On peut se poser la question de la manipulation du BP. Est-ce que la pression est brève ou bien il est maintenu avant d'être relâché ?
    Après la lecture de la partie 4, j'ai totalement décroché.

    Citation Envoyé par Vincent Petit
    D'accord, et le condensateur est un 100nF je crois ?
    Résistance pull-down : 10k ohms
    Condensateur : 100nF
    Résistance de protection du BP: 300 ohms, puis 1k ohms et enfin 10k ohms.
    Résistance de protection du GPIO : 10k ohms.

    Citation Envoyé par Vincent Petit
    Selon cette source : http://www.ganssle.com/debouncing.htm les rebonds sont typiquement autour de 1.6ms avec quelques maximum autour de 6.2ms. Je ne connaissais pas, personnellement j'ai toujours pris des constantes de temps entre 10ms et 20ms.
    C'est ce que j'ai découvert en lisant la partie 4 de tes trois liens ci-dessus.

    Je sais que la raspberry utilise des résistances de pull-up/pull-down de 50k ohms sur du 3.3Vcc.
    Si l'on veut atteindre disons 10ms, il faut partir sur une résistance pull-down de 100k ohms, ou bien augmenter la valeur du condensateur.

    Citation Envoyé par Vincent Petit
    Ce lien n'est pas évident a expliquer dans les tous premiers messages d'explications.
    J'ai compris qu'il faut dans un premier temps, choisir pull-up ou pull-down. Ensuite, introduire le circuit RC.
    Evaluer tau pour ce que l'on cherche à faire. Puis jouer sur la valeur des résistances pour au final avoir quelque chose de stable.
    Je pense que sans oscilloscope, surtout pour un débutant, ce n'est pas évident comme paramétrage.
    pour ma part, je suis parti sur un pull-down, ce qui peut-être contestable.
    Ensuite, j'ai pris comme valeur de la résistance pull-down 10k ohms.
    Maintenant, là où ça bloque, c'est de trouver le bon couple résistance et condensateur du circuit RC.
    En fait, c'est plus pour mon futur achat.

    Le montage que je vais retenir est bien anti-rebond pull-down avec diode.
    Comme je ne suis pas sûr de moi, à quoi ressemble ce anti-rebond pull-down avec diode ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #67
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut,
    Tu viens de parler de résistance de pull-up/down dans le Raspberry.

    - Si tu actives la pulldown du RPI et qu'elle fait 50k alors il faudra, retirer celle de la breadboard et probablement augmenter le condensateur à 220nF (valeur normalisée) ou alors tu mets deux 100nF en parallèles pour en faire un de 200nF. Avec une 50k en pulldown et un condo de 220nF ça fait un τ de ~ 10ms

    - Là où il faut faire attention c'est qu'il n'y ait pas une pull-up d'activer, par exemple sur le hardware dont tu n'aurais pas la main de dessus. Sinon la pulldown sur la breadboard va former un pont diviseur avec la pullup (pas dangereux électriquement parlant mais l'anti-rebond ne fonctionnera jamais)


    J'ai un peu de mal à visualiser ton anti-rebond, tu saurais me faire un schéma, même à la main ?


    Concernant la diode :
    R1 peut être la résistance de pulldown interne du RPI pourquoi pas. R2 est la résistance de protection pour l'interrupteur (j'ai fait un énorme zoom à droite pour montrer que grâce à R2 la charge, qu'on croit être hyper rapide sur le graphique de gauche, est en réalité exponentielle et stressera moins l'interrupteur). C1 est le condensateur intégrateur. R3 est une résistance de protection du GPIO mais elle est ici optionnelle, souvent on en met une lorsqu'on a un doute avec le câblage de l'opérateur, par exemple si il connecte deux sorties entres elles, mais dans le cas présent je ne vois pas qu'est ce qui pourrait bien arriver comme problème !? R4 n'est là que pour la simulation, elle représente la résistance d'entrée d'une porte logique ou d'un microcontrôleur. La diode D4 permet de court-circuiter R2 pendant la décharge cependant, comme j'avais dit plus haut, cette diode n'a de sens que lorsqu'on veut un temps de charge = temps de décharge ce qui n'est pas le cas ici. Ici nous voulons une charge rapide et une décharge lente. Bien au contraire, sans être court-circuité R2 aurait contribué à ralentir un peu plus la décharge car elle se serait ajouté à R1. Toute fois, l'avantage de quand même mettre cette diode c'est d'avoir des calculs plus simples.

    τcharge = R2 * C1 (rapide si R2 est petite)
    τdécharge = R1 * C1 (lent si R1 est grande)

    Nom : 009.png
Affichages : 329
Taille : 45,9 Ko

    Maintenant si on regarde le tableau ci dessous, on voit qu'un High - voir la ligne VIH pour une alimentation de 3.3V - c'est une tension au dessus de 1.6V et la simulation montre que la tension reste toujours au dessus de 2.4V.

    ps : avec R1 = 10k Ohms, R2 = 330 Ohms ça ne fonctionne pas. La tension de décharge chute trop bas.




    Citation Envoyé par Artemus24
    Je pense que sans oscilloscope, surtout pour un débutant, ce n'est pas évident comme paramétrage.
    En effet, l'oscilloscope pour l'électronicien c'est un peu le débugeur pour l'informaticien. Sans lui, il arrive un moment où ça se complique puis ça devient simplement impossible de mettre au point.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #68
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Merci pour ton aide, mais je constate que j'ai de grosses lacunes en électronique.
    Il y a des notions de bases que je n'arrive toujours pas à comprendre.
    J'ai beau essayer de comprendre tes schémas sur le pull-down anti-rebond et le pull-up anti-rebond, cela me parait toujours incomprehensible.

    Je vais faire une pose sur la question :
    Citation Envoyé par Artemus24
    Q-5) Dans un pull-up ou un pull-down, quand j'utilise un bouton poussoir, où placer le condensateur ?
    qui s'est transformé dans la gestion des rebonds d'un BP.
    Je reviendrais un peu plus tard quand j'aurai compris ce que je n'arrive pas à comprendre.

    Q-6) notions de bases.

    Deux choses que je ne comprends toujours pas :

    Q-6-a) la notion du sens du courant.
    Il y a deux notions, à savoir :
    --> la notion conventionnelle du sens du courant continue qui va du pôle positif vers le pôle négatif.
    --> et celle du sens des électrons qui va du pôle négatif vers le pôle positif.

    Celle qui m’intéresse est la première que j'interprète ainsi :
    --> la borne VCC est émettrice du courant
    --> la borne GND est réceptrice du courant.
    A priori, elle semble juste en apparence.
    J'ajouterai de part la notation 3.3Vcc et 0Vcc, que c'est du type tout ou rien.
    Je veux dire par là que j'ai soit tout à 3,3Vcc ou bien rien à 3,3Vcc qui st en réalité 0Vcc.
    C'est une autre façon d'interpréter le sens conventionnel du courant.
    On va dire pour l'instant que je comprends !

    Mais là où ça se complique, c'est le résultat de la lecture de la GPIO.
    Le GPIO en en entrée, c'est-à-dire que l'on va faire une lecture.
    Je peux lire soit un 1 soit un 0 . Oui mais voilà, comment doit-je interpréter ce 1 et ce 0 ?

    Ce GPIO me fait penser qu'il y a un sens du courant puisque celui-ci est déclaré soit en entrée (input) soit en sortie (output).
    Or si la GPIO est en lecture, cela signifie que le sens du courant est entrante dans la GPIO.

    Cela semble assez logique quand il s'agit de relier la GPIO à la borne VCC.
    Pourquoi ? Parce que la borne VCC est émettrice du courant.

    Oui, mais voilà, ce n'est plus du tout logique si je relie la GPIO à la borne GND.
    Pourquoi ? Si la GPIO est en entrée, cela signifie que la GND est aussi émettrice.
    Or ce n'est pas le cas, elle est réceptrice du VCC, ce qui signifie alors que le sens du courant va de la GPIO vers la borne GND.
    D'où un contradiction !

    Soit deux choses l'une, cette notion de courant est complètement fausse ou bien je ne comprends pas la notion d'entree ou de lecture de la GPIO.

    Q-6-b) la notion de seuil déterminant ce qui est un 1 ou un 0 dans la lecture de la GPIO.
    Dans un montage, j'utilise du 3.3Vcc. Pour moi, c'est une notion invariable.
    Si j'applique la formule U = R * I, U = 3.3Vcc ne bouge jamais.
    Si j'applique à R : 1k ohms, ce qui va varier, c'est bien l'intensité (les ampères), qui dans ce calcul va donner I = 3.3mA.

    Or d'après ton poste #67, quand je lis les seuils de la raspberry, je retiens surtout :
    --> VIL pour 3.3Vcc, le maximum est de 0,9V.
    --> VIH pour 3.3Vcc, le minimum est de 1,6V.

    Je comprends alors que la notion du signal à 0 se traduit par un tension entre 0V et 0,9V.
    Tandis que la notion du signal à 1 se traduit par une tension entre 1,6V et 3.3V.

    Je veux bien, mais cela est en contradiction avec :
    --> ma première question Q-6-a) qui est le sens du courant.
    --> la formule U=R*I dont l'invariant est la tension.

    Je suis désolé de revenir sur ces notions, mais ce n'est pas du tout logique.
    Je pourrai peut-être comprendre si la tension est en fait une notion de seuil.
    Sauf que dans la raspberry, en entrée, j'ai du 3,3Vcc et du 3A.
    Si je place une résistance de 1k ohms, et que c'est le courant qui est l'invariant, alors c'est la tension qui est modifié.
    Sauf que dans ce cas, la tension serait de : 1000 * 3 = 3000Vcc.

    Q-6-c) je ne comprends pas la notion de court-circuit.
    Je reprends pour mes explications, le pull-up classique qui comprend :
    --> Vcc
    --> GND
    --> résistance pull-up (en haut du schéma)
    --> BP (en bas du schéma)
    --> GPIO en entrée.

    Voici le schéma :



    Il y a un coupe-circuit qui est représenté par le BP.
    Je constate qu'il y a deux chemins dans ce montage :
    --> (C-1) le VCC puis la résistance pull-up, et enfin l'entrée de la GPIO.
    --> (C-2) Le VCC, la résistance pull-up, le BP, le GND.

    Quand ce BP n'est pas enfoncé, la GPIO lit un 1, par l'intermédiaire du chemin (C-1).

    Maintenant, si j'appuie sur le BP, il y a un court-circuit (j'espère que c'est le bon terme).
    Le courant passe par le chemin (C-2). Oui, mais le chemin (C-1) n'a pas disparu pour autant.

    Faisons abstraction de ce qui est commun aux deux chemins, à savoir VCC et la résistance pull-up.
    A partir du point de bifurcation, nous avons soit la GPIO, soit le BP puis le GND.

    Pourquoi la lecture du GPIO donne un 0 quand il y a un court-circuit ?
    Dois-je comprendre que le courant s'écoule encore vers la GPIO ?
    Dois-je aussi comprendre que la GPIO offre une plus grand résistance ?

    Avec la notion de seuil, je comprends que la GPIO lit une tension < 0,9V.
    Cela revient à dire qu'il est arbitraire de dire que la tension est de 3.3Vcc puisque le court-circuit ne fournit plus du 3.3Vcc à la GPIO.

    Q-6-d) comment dois-je interpréter le sens du courant ?
    Que ce soit par le diode ou par la led, je ne peux pas inverser les branchements sinon ça ne fonctionne plus.
    Il y a bien un sens du courant.

    Q-6-e) et la tension ?

    Si la GPIO est bien en entrée, il faut bien faire la distinction entre ce 1 et ce 0.
    Cela revient à dire qu'il existe une notion de seuil.
    Sauf que j'ai cru que la résistance modifie les ampères et non le voltage.

    Q-6-f) je prends conscience que jusqu'à présent, j'ai confondu GND et le signal à 0. J'allai dire 0Vcc mais cela serait trompeur.
    Le signal est à 0 car le courant circule mais avec un seuil minimal.
    Pour la raspberry, c'est entre 0Vcc et 0.9Vcc.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #69
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Je vais faire une pose sur la question
    Tu as raison, il faut parfois laisser du temps aux concepts pour se consolider et devenir plus. C'est tout à fait normal que ça ne soit pas clair immédiatement surtout quand on est pas du métier et en plus, au travers d'explications sur un forum. J'en fais souvent moi même l'expérience sur des sujets compliqués, et parfois je suis obligé de faire un détour par une autre science pour comprendre, car elles sont toutes liées. Les interférences en radio sont plus simples à comprendre par la voie des interférences lumineuses en optique, les oscillateurs en électroniques ont un lien fort avec l'oscillateur harmonique qu'on étudie en mécanique etc... comme il est plus aisé d'aborder la physique quantique par la chimie plutôt que directement par la voie mathématique.

    Je vais donc répondre rapidement et laisse toi du temps aussi pour lire d'autres sources, qui seront peut être plus clairs que ce que j'ai écrit.

    Citation Envoyé par Artemus24 Voir le message
    Q-6-a) la notion du sens du courant.
    En effet, pour l'électronique on ne prend que le sens conventionnel ; qui sort du + et retourne vers le - par tous les chemins qu'il va trouver. Si il y a cinq retour possible, le courant sortant du + va se diviser en 5 (pas forcément en part égale, ça va dépendre si il y a des résistances dans le parcours) pour retourner au -.

    Mais la question que tu te poses obliges à aller regarder à la loupe ce qu'il y a dans une entrée logique pour comprendre ce qu'est le courant de "fuite" à l'état haut (courant entrant IIH) et à l'état bas (courant sortant IIL). Ce n'est pas contre intuitif mais ça nécessite d'aller assez loin dans l'explication car une GPIO en entrée ce n'est pas qu'un courant entrant. C'est aussi un courant sortant.

    Regardons rapidement car ça serait terriblement complexe de détailler simplement l'intérieur (je deviens un bête en infographie ). Tu as raison de voir une entrée comme quelque chose qui consomme du courant mais à la loupe on voit que c'est légèrement plus compliqué. Je crois que nous avions parlé de tout ça dans un sujet parlant des pullup/down.

    Nom : text26517.png
Affichages : 278
Taille : 72,0 Ko

    Nom : text26518.png
Affichages : 302
Taille : 71,1 Ko


    Citation Envoyé par Artemus24 Voir le message
    Q-6-b) la notion de seuil déterminant ce qui est un 1 ou un 0 dans la lecture de la GPIO.
    Je comprends alors que la notion du signal à 0 se traduit par un tension entre 0V et 0,9V.
    Tandis que la notion du signal à 1 se traduit par une tension entre 1,6V et 3.3V.
    C'est tout à fait exacte !

    Citation Envoyé par Artemus24 Voir le message
    Je veux bien, mais cela est en contradiction avec :
    --> ma première question Q-6-a) qui est le sens du courant.
    --> la formule U=R*I dont l'invariant est la tension.
    Tu devrais mieux comprendre avec les schéma. Notamment pour le LOW, deuxième schéma (un courant sortant valant IIL = 5µA d'après la doc du Raspberry). Dans ce schéma si tu mets un pulldown de dingue, par exemple 180kΩ * 5µA = 0.9V on est tout juste.... et le GPIO risque de ne pas voir un 0.


    Citation Envoyé par Artemus24 Voir le message
    Q-6-c) je ne comprends pas la notion de court-circuit.


    Citation Envoyé par Artemus24 Voir le message
    Il y a un coupe-circuit qui est représenté par le BP.
    Je constate qu'il y a deux chemins dans ce montage :
    --> (C-1) le VCC puis la résistance pull-up, et enfin l'entrée de la GPIO.
    --> (C-2) Le VCC, la résistance pull-up, le BP, le GND.

    Quand ce BP n'est pas enfoncé, la GPIO lit un 1, par l'intermédiaire du chemin (C-1).
    Regarde mon second schéma.

    Citation Envoyé par Artemus24 Voir le message
    Maintenant, si j'appuie sur le BP, il y a un court-circuit (j'espère que c'est le bon terme).
    Le courant passe par le chemin (C-2). Oui, mais le chemin (C-1) n'a pas disparu pour autant.
    Regarde mon second schéma.

    Citation Envoyé par Artemus24 Voir le message
    Faisons abstraction de ce qui est commun aux deux chemins, à savoir VCC et la résistance pull-up [...]
    Le second schéma que j'ai posté, avec le courant sortant, devrait répondre à cette question.

    Citation Envoyé par Artemus24 Voir le message
    Q-6-e) et la tension ?

    Si la GPIO est bien en entrée, il faut bien faire la distinction entre ce 1 et ce 0.
    Cela revient à dire qu'il existe une notion de seuil.
    Sauf que j'ai cru que la résistance modifie les ampères et non le voltage.
    Oui il y a des seuils de détection dans les composants électroniques. La tension augmente au fur et à mesure que le courant va baisser et la résistance augmenter.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  10. #70
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Citation Envoyé par Vincent Petit
    C'est tout à fait normal que ça ne soit pas clair ...
    Déjà, en classe de première, je considérais l'électronique (voire la physique) comme des recettes de cuisine.
    C'est du genre, ça fonctionne, mais ne demandez pas plus d'explication parce que je ne saurais vous répondre.

    Inversement, la chimie a toujours été mon truc, parce que je trouve cela logique. Les mathématiques aussi. Et je ne parle même pas de l'informatique.

    Citation Envoyé par Vincent Petit
    ... surtout quand on est pas du métier et en plus, au travers d'explications sur un forum.
    J'ai découvert que chaque métier à sa façon de raisonner.
    Il y a tout un jargon qui est propre au métier, dont le sens des mots n'est pas ceux du courant.
    Parfois, ce sont les conventions qui font les règles, même si elles sont en contradictions avec d'autres sciences.
    Et je découvre aussi que des personnes ayant des années d'expériences croient comprendre.
    En fait, ils savent l'utiliser et c'est tout.
    Du genre, je sais appuyer sur un bouton pour avoir de la lumière chez moi, mais ne me demandez mais comment fonctionne une central nucléaire.

    De plus, je trouve qu'il y a beaucoup de sous-entendus qui sont connus mais pas toujours explicitement énoncés.

    Citation Envoyé par Vincent Petit
    je deviens un bête en infographie
    J'aime ce que tu fais. Je trouve que tu as aussi beaucoup de patientes.
    Je te remercie de prendre du temps pour m'expliquer ce que je ne comprends toujours pas.

    L'écoulement d'un fluide va toujours du point le plus haut vers le point le plus bas.
    Je ne pense pas que cette analogie concerne le courant, même si elle est souvent prise comme exemple.

    Je ne m'intéresse pas à ce qui se passe dans le microcontrôleur.
    Si je prends tes deux schémas, tu indiques pour la branche horizontal R2 et R3 deux sens du courant en opposition.
    Tout ce que je comprends, c'est que la GPIO est en entrée. Je m'attends à lui fournir un courant en entrée, pas en sortie.
    Et si le courant entre, c'est qu'il doit bien sortir quelque part ailleurs. Mais le problème n'est pas là.

    Comment se fait-il que du courant peut en sortir alors que la GPIO est en entré ? Pas logique du tout.
    Ou alors, c'est un abus de langage de définir le sens d'utilisation du GPIO alors que la raison est tout autre.
    Faire un DigitalRead() n'est pas spécifique à une GPIO en entrée, mais se fait aussi sur un GPIO en sortie.

    Il me manque quelque chose pour comprendre cette logique, mais je ne vois pas quoi.
    Si je le savais, je ne poserai pas la question.

    Citation Envoyé par Vincent Petit
    C'est tout à fait exacte !
    Je veux bien mais comment combiner cela avec le sens du courant ?

    Citation Envoyé par Vincent Petit
    Tu devrais mieux comprendre avec les schéma.
    Justement pas. Il y a bien quelque chose que je ne comprends pas, mais je ne vois pas quoi.

    Comme il y a des résistances, le problème vient peut-être de ma compréhension de la résistance.
    Autrement dit, je reviens sur U=R*I que je ne comprends pas dans les faits.
    Oui, je reviens sur ma première question.

    Posons le problème différemment.
    Il y a deux seuils, à savoir 0.9V et 1.6V. Je veux bien.
    Mais si j'ai du 3.3Vcc en entrée d'un montage et que la résistance modifie l'intensité et non la tension, par quel miracle, je peux obtenir du 0V ?
    Il y a quelque chose qui vient modifier cette tension. Je pense que le court-circuit est un modificateur de cette tension.
    Mais je ne comprends pas comment cela se fait.
    Par court-circuit, j'entends le chemin qui passe de Vcc, le BP, la résistance R1 et Gnd.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  11. #71
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Comme je l'ai dit, il m'est difficile de m'exprimer sur ce sujet car je ne sais pas comment montrer ce que je ne comprends.
    Je précise que je ne polémique pas pour le plaisir de vous mettre en défaut, et que c'est bien une véritable question.

    Je considère que le microcontrôleur a un rôle passif. Il est juste là pour effectuer le lecture de la GPIO.
    Au lieu d'un microcontrôleur, on peut mettre à la place une led. J'ai fait le test et j'ai le même résultat.

    Le BP a un rôle actif dans ce montage ! C'est lui qui détermine le résultat de la lecture de la GPIO.
    Sauf que je ne comprends pas son action.

    Ce n'est pas le sens du courant qui me pose problème.
    J'ai bien compris qu'il s'agit d'une convention dont le sens va toujours du pôle positif vers le pôle négatif.
    Quand il y a un fil, je n'ai pas de problème.
    Mais quand il y a une bifurcation, comme dans le pull-up, je ne comprends plus.

    Le VCC est office d'émetteur.
    Il y a une bifurcation avec deux branches, dont l'une est horizontale et va vers la GPIO.
    Le microcontrôleur va effectuer la lecture de la mesure de cette branche.
    Mais il y a aussi la branche verticale et va vers la GND.
    Il y a un coupe-circuit en la présence du BP.

    Quand le BP est relâche, la lecture de la GPIO donne du Vcc.
    Quand le BP est enfoncé, la lecture de la GPIO donne du Gnd.

    C'est ce que j'ai constaté et je ne remets pas en cause ce fonctionnent.
    Autrement dit, quand le BP est enfoncé, il y a un court-circuit.
    A vrai dire, ce n'est pas un véritable court-circuit car il y a la résistance du pull-up.

    Ma question est : Pourquoi ce court-circuit modifie le sens du courant dans la branche horizontale ?

    Il y a bien un phénomène sous-jacent que je ne comprends pas.
    Ce qui revient à dire que je ne comprends pas comment interpréter U=R*I.
    Quand je lis cette formule, je comprends que la résistance est une constante et que c'est l'intensité qui détermine la tension.

    Or je suis parti dans l'idée de ce montage, que nous avons partout la même tension.
    En plaçant une résistance pull-up, seul l'intensité est modifiée.
    Ce qui fait que le GPIO reçoit une intensité qui ne va pas cramer le microcontrôleur.

    Dois-je comprendre que le BP enfoncé provoque la modification de sa résistance (celle aux bornes du BP) ?
    Et de surcroît, modifie aussi la résistance de la branche vers la GPIO ?
    Oui, mais il y a la résistance du pull-up. A quoi sert-elle dans le cas du court-circuit ?

    Que signifie une résistance nulle ?
    Du coup, U=R*I avec R=0 donne U=0, donc pas de tension.

    Je ne comprends pas ce mécanisme du court-circuit.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #72
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut
    C'est très compliqué pour moi de répondre aux questions en cascades car, comme pour toutes sciences, la compréhension s'acquière par "accumulation" de connaissances et s'il y a quelque chose de pas clair à un moment, la suite ne peut pas l'être ou l'est moins.


    Point important à considérer

    Si la physique et par ricochet l'électronique, te semble être de la recette de cuisine c'est parce que contrairement aux mathématiques, la physique nécessite de faire des approximations faute de pouvoir tout maîtriser. Si on commence à prendre en compte l'influence du corps humain sur le montage électronique, et il en a une (voir les écrans tactiles qui utilisent astucieusement le condensateur parasite entre ton doigt et l'écran), alors il faut aussi considérer la table, la chaise, ton voisin, ton chat, la lune, l'ordinateur de ta femme etc.. et on n'y arrive pas. Dans certain champ de l'électronique, les radiofréquences notamment, on sort la loupe et on prend en compte des paramètres bien plus fins (la résistance des fils, les capacités et inductances parasites des résistances) à cause de l'influence de ces toutes petites imperfections.

    En informatique, vous avez à peu près la même chose ; Il y a la programmation informatique classique de M et Mme tout le monde, ensuite on peut aller plus loin en regardant la complexité de l'algorithme et modifier le programme en conséquence (on n'est plus dans la programmation que M et Mme tout le monde fait habituellement, il y a des subtilités qui vont probablement leurs échapper), puis on peut aussi regarder comment paralléliser le programme avec un GPU et modifier le programme en conséquence (si on en arrive là, M et Mme tout le monde vont être complètement largués, alors que pourtant on parle toujours d'informatique)


    Quelques points rapides
    Citation Envoyé par Artemus24
    Dois-je comprendre que le BP enfoncé provoque la modification de sa résistance (celle aux bornes du BP) ?
    Et de surcroît, modifie aussi la résistance de la branche vers la GPIO ?
    Oui, mais il y a la résistance du pull-up. A quoi sert-elle dans le cas du court-circuit ?

    Que signifie une résistance nulle ?
    Du coup, U=R*I avec R=0 donne U=0, donc pas de tension.
    La phrase en rouge est excate ! La résistance aux bornes d'un court-circuit (un fil, un interrupteur fermé) est de 0Ω et comme U = R*I, oui la tension est de 0V.

    Pour la pullup, elle a un double rôle :
    - Si on la retire est qu'on ferme l'interrupteur, alors on court-circuite le +3.3V avec le 0V et on risque de casser le régulateur 3.3V. Elle est là pour que ça n'arrive pas. Notons que si le régulateur était équipé d'une protection contre les court-circuits alors on peut s'en passer.
    - Elle est là pour que quand l'interrupteur est ouvert, la GPIO voit 3.3V et ne se retrouve pas en l'air. Donc il faut quand même bien la mettre même si le régulateur était équipé d'une protection contre les court-circuits.

    Citation Envoyé par Artemus24
    L'écoulement d'un fluide va toujours du point le plus haut vers le point le plus bas.
    Je ne pense pas que cette analogie concerne le courant, même si elle est souvent prise comme exemple.
    Si, si on peut prendre cette analogie pour comprendre beaucoup de chose mais comme toute analogie si on descend trop loin dans les détails on la mettra en défaut. Pour le moment on peut prendre cette analogie pour comprendre ce qui se passe. Notamment sur cette histoire de courant qui sort d'une entrée.

    Citation Envoyé par Artemus24
    Ma question est : Pourquoi ce court-circuit modifie le sens du courant dans la branche horizontale ?
    Parce que l’intérieur d'une entrée, et aussi d'une sortie, est plus complexe qu'il n'y parait et sans avoir bien maîtrisé les transistors, je ne pourrai pas l'expliquer. Néanmoins je vais simplifier tout ça un peu plus bas.


    Quelques rappels

    Je voudrais que tu te remémores ces messages (juste ces messages, inutiles de tout relire et j'ai presqu'envie de dire juste les schémas car je pense qu'ils parlent d'eux mêmes), aussi pour voir que dans une sortie, le courant peut aussi rentrer (premier lien ci dessous) :
    https://www.developpez.net/forums/d1.../#post10914839
    https://www.developpez.net/forums/d1.../#post10918243
    https://www.developpez.net/forums/d1.../#post10919706


    ps : dans un de ces sujets, je me suis aperçu que j'avais donné comme exemple, un circuit anti-rebond de mauvaise conception en structure pour le pulldown. Même si il est de mauvaise conception uniquement au démarrage, ensuite il fait l'affaire. Arf, j'aurai du y penser et je n'aurai pas du montrer ça


    Je reviens plus tard le temps que tu te remémores tout ça.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  13. #73
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Citation Envoyé par Vincent Petit
    La phrase en rouge est excate !
    Quand je regarde le schéma lorsque le bouton est enfoncé, le court-circuit se fait aux bornes du BP.

    Si je place entre ces bornes un voltmètre, vais-je lire 0Vcc ?
    Ce qui va s’interpréter comme ayant une résistance nulle.

    Et si maintenant, je place un ampèremètre, vais-je lire :
    --> 3.3Vcc * 10 000 ohms
    --> 0.33mA ?

    Une résistance nulle ne modifie pas l'ampérage mais donne une tension = 0V. Ca, il faut le savoir !

    En résumé :
    --> tension : 0Vcc.
    --> intensité : 3.3mA.

    Citation Envoyé par Vincent Petit
    La résistance aux bornes d'un court-circuit (un fil, un interrupteur fermé) est de 0 ohms et comme U = R*I, oui la tension est de 0V.
    D'accord !

    Mais si maintenant je m'intéresse à l'autre branche, celle qui va vers le GPIO.
    Si je prends le point faisant office de bifurcation dans le montage pull-up.
    La somme des tensions des deux branches en sortie est égale à la tension total en entrée.
    Comme nous venons de le voir, suite à la résistance nulle, la branche contenant le BP a une tension nulle.
    Je peux déduire que la tension dans la branche vers la GPIO est de 3.3Vcc.

    Dans ce cas, la branche vers la GPIO est exactement l'inverse de la branche du BP, c'est-à-dire :
    --> tension : 3.3Vcc.
    --> intensité : 0mA.

    Je déduis la résistance qui est de :
    --> R = U / I
    --> R = 3.3Vcc / 0A

    Dois-je comprendre que la résistance est infinie ?

    Comme la luminosité de la led depend de l'intensité (les ampères) qui la traverse et que celle-ci est nulle, par voie de conséquence elle ne brille pas.

    Remarque : Je croyais qu'une résistance qui ne modifie rien est R=1.

    Si mon raisonnement est juste alors j'ai découvert le fonctionnement du court-circuit.
    Et par voie de conséquence un moyen de modifier la tension dans un circuit.

    J'ai besoin de faire un gros effort de compréhension sinon je m'embrouille la tête.

    Citation Envoyé par Vincent Petit
    Pour la pullup, elle a un double rôle :
    C'est son rôle dans le court-circuit qui m'intéresse.

    Et ta réponse est :
    Citation Envoyé par Vincent Petit
    on risque de casser le régulateur 3.3V.
    si l'on n'utilise pas la résistance de pull-up.

    Ce qui signifie que le régulateur fonctionne dans un intervalle de tension et d'intensité.
    Cela me rappelle les explications au sujet de mon régulateur de tension fixe :
    --> https://www.gotronic.fr/art-alimenta...w-bb-25638.htm
    celui qui ne fonctionne plus très bien en 12Vcc.

    Citation Envoyé par Vincent Petit
    Notamment sur cette histoire de courant qui sort d'une entrée.
    Là aussi, ce point n'est pas clair.

    Dans le premier lien, il est question du voltage en entrée.
    Si je comprends bien, il s'agit de transformer un signal analogique en un signal numérique.
    Et son fonctionnement est de dire :
    --> signal à HIGH quand 3.3Vcc >= lecture >= 1.6Vcc.
    --> signal à LOW quand 0.9Vcc >= lecture >= 0.0Vcc.

    Dans ce message, tu me dis :
    Citation Envoyé par Vincent Petit
    Citation Envoyé par Artemus24
    *) intensité minimal dans le cas d'un court-circuit afin de ne pas griller le GPIO
    Je pense que tu parles du courant maxi en cas de court circuit ?
    Je parlais bien de l'intensité minimale.
    Si je n'ai pas répondu, c'est que j'ai eu ma réponse en lisant l'image du "compute module 3+ datasheet".

    Je détaille mon raisonnement.
    J'utilise une résistance de pull-up (ou de pull-down). Il s'agit du montage sans la gestion des rebonds, juste la résistance et le BP.
    Je vais utiliser cette résistance pull-up avec une certaine valeur.
    Le but est de faire en sorte que la GPIO ne soit plus flottante.
    Si je mets une résistance trop importante, disons 1g ohms, la résistance aura le même effet que si ma GPIO est flottante.
    Quelle est l'intensité minimale qui doit passer par la GPIO afin que la raspberry soit capable de lire un HIGH et un LOW ?

    Il semblerait que c'est 5uA (IIL d'après "compute module 3+ datasheet").
    Ce qui donnerait comme valeur de la résistance :
    --> 3.3Vcc = R * 5uA.
    --> 3.3Vcc / 0.000005
    --> 660k ohms.

    A moins de me tromper, 100k sera un valeur correcte pour un pull-up (ou pull-down).

    Ce qui me fait dire que la lecture fonctionne correctement si I > 5uA.

    Je n'avais pas fait attention que dans le "compute module 3+ datasheet", la résistance pull-up ou pull-down est de 65k ohms.
    Le "module compute" n'est pas la raspberry mais ceci :
    --> https://www.kubii.fr/cartes-raspberr...496014848.html
    Dans la raspberry la résistance interne du pull-up est de 50k ohms.

    Dans le deuxième lien, tes explications me donnent les intervalles du fonctionnement de la GPIO en entrée ou en sortie.
    Pour l'entrée, mes explications sont ci-dessus.

    Pour la sortie, j'ai
    --> signal à HIGH quand 3.30Vcc >= lecture >= 3.0Vcc.
    --> signal à LOW quand 0.14Vcc >= lecture >= 0.0Vcc.

    Comment expliquer que pour la sortie, les intervalles sont plus étroits ?

    Je pense qu'il y a des erreurs dans tes explications. Par exemple :
    Citation Envoyé par Vincent Petit
    la sortie est à High on sait qu'elle peut débiter un IOH maxi de 17mA
    En lisant le datasheet, c'est plutôt un mini de 17mA, non ?

    Citation Envoyé par Vincent Petit
    mais finalement seulement IIH de l'entrée va être demandé
    Tu le sors d'où ce IIH car il n'est pas dans le datasheet.

    Même après relecture, ce n'est pas très clair.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  14. #74
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Quand je regarde le schéma lorsque le bouton est enfoncé, le court-circuit se fait aux bornes du BP.

    Si je place entre ces bornes un voltmètre, vais-je lire 0Vcc ?
    Oui

    Citation Envoyé par Artemus24 Voir le message
    Ce qui va s’interpréter comme ayant une résistance nulle.

    Et si maintenant, je place un ampèremètre, vais-je lire :
    --> 3.3Vcc * 10 000 ohms 3.3Vcc / 10 000 ohms
    --> 0.33mA ?
    Oui c'est ça, 330µA.

    Citation Envoyé par Artemus24 Voir le message
    Une résistance nulle ne modifie pas l'ampérage mais donne une tension = 0V. Ca, il faut le savoir !

    En résumé :
    --> tension : 0Vcc.
    --> intensité : 3.30.33mA.
    Attention, une résistance modifie bien le courant, si tu refais le même calcul avec un résistance de 1000Ω au lieu de 10 000Ω ça va donner 3.3mA au lieu de 0.33mA.

    Ce qu'il faut retenir c'est qu'un courant, peu importe sa valeur 3A, 300mA, 30mA, 3mA, etc..., qui traverse un court-circuit comme un interrupteur fermé donne une tension nulle. Comme l'interrupteur fermé est équivalent à un simple fil de résistance 0Ω la loi d'Ohm dit que la tension U qui apparaît aux bornes d'une résistance vaut R * I.

    Cette formule est linéaire et peut être retourner ; Le courant I qui traverse une résistance est égale à U à ses bornes * R. C'est ce que tu as fait dans ton calcul au dessus. Tu as fermé l'interrupteur, que tu as schématisé par un fil puis tu as regarder quelle tension tu avais aux bornes de la résistance. L'une des bornes est au 3.3V et l'autre s'avère être au 0V via l'interrupteur fermé. Enfin si un jour tu as affaire à une résistance où tu n'arrives plus à lire le code couleur, tu peux mesurer la tension a ses bornes et mesurer le courant qui la traverse (un ampèremètre juste avant ou juste après) ; R = U / I.


    Citation Envoyé par Artemus24 Voir le message
    Mais si maintenant je m'intéresse à l'autre branche, celle qui va vers le GPIO.
    Si je prends le point faisant office de bifurcation dans le montage pull-up.
    La somme des tensions des deux branches en sortie est égale à la tension total en entrée.
    Comme nous venons de le voir, suite à la résistance nulle, la branche contenant le BP a une tension nulle.
    Je peux déduire que la tension dans la branche vers la GPIO est de 3.3Vcc.
    Oui !

    Citation Envoyé par Artemus24 Voir le message
    Dans ce cas, la branche vers la GPIO est exactement l'inverse de la branche du BP, c'est-à-dire :
    --> tension : 3.3Vcc.
    --> intensité : 0mA.

    Je déduis la résistance qui est de :
    --> R = U / I
    --> R = 3.3Vcc / 0A

    Dois-je comprendre que la résistance est infinie ?
    Je ne suis pas sur du schéma sur lequel nous discutons mais j'imagine que c'est le montage pulldown. La résistance n'est pas parfaitement infinie mais oui elle est très très grande.
    En prenant le courant IIH de la datasheet quelque µA (c'est pas terrible comme spécification, sur beaucoup d'autres composants on parle de nA voir de pA), on peut refaire ton calcul :
    R = U / I
    R = 3.3V / 0.000005A
    R = 660kΩ

    Ce n'est pas l'infinie mais c'est très grand et pour l'analyse du schéma, dire qu'une entrée à une résistance infinie et ne consomme pas de courant est largement suffisant pour faire de l'électronique.


    Citation Envoyé par Artemus24 Voir le message
    Tu le sors d'où ce IIH car il n'est pas dans le datasheet.
    IIH a quasiment toujours la même valeur que IIL, se sont les petits courants fuites et de polarisation dont l'entrée à besoin pour son propre fonctionnement.

    La datasheet du Raspberry tout comme celles des composants exotiques chinois (ESP-32 & compagnie) sont des exceptions en électronique, tous les autres grands fabricants (les fondeurs) donnent ces infos. Exemple, le 74H595 de chez On Semiconductor (voir page 4, paramètre Iin https://www.onsemi.com/pub/Collateral/MC74HC595-D.PDF) le fabricant dit qu'il a alimenté son composant en 6V et qu'a des températures variant de -55°C à +25°C il a mesuré un Iin de +/- 100pA.

    Pour les composants exotiques, souvent quand tu ne trouves pas l'info c'est parce que ce n'est pas terrible, mais en contre partie le prix est terriblement bas !




    Pour le reste de ton questionnement je regarde pour voir si je peux expliquer autrement mais je crains avoir atteint mes limites pédagogiques (pas de patiente) je ne peux pas me substituer à un livre d'électronique par exemple. Je peux t'en conseiller un pas mal si tu veux ? Il a une approche assez pratique, largement assez pour que tu reproduises les montages sur une breadboard, mais il n'y a pas d'exemple d'interfaçage avec Raspberry ou autres quoi que ce n'est pas forcément un problème puisque tu sais déjà faire ce lien. Au vu de ce que tu expérimentes, je pense que ce livre pourrait t'apporter beaucoup de réponses, méthodes et d'émancipation dans tes projets.

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  15. #75
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Tes confirmations confirment que j'ai enfin compris comment fonctionne ce BP, je devrais dire ce court-circuit.

    Citation Envoyé par Vincent Petit
    Ce qu'il faut retenir c'est qu'un courant, peu importe sa valeur 3A, 300mA, 30mA, 3mA, etc..., qui traverse un court-circuit comme un interrupteur fermé donne une tension nulle.
    Je ne le savais pas. D'où mon incompréhension !

    Citation Envoyé par Vincent Petit
    Je ne suis pas sur du schéma sur lequel nous discutons mais j'imagine que c'est le montage pulldown.
    C'est un pull-up. Pourquoi ? Car dans ce que j'ai dit, quand le BP est enfoncé, la led s'éteint ou encore la GPIO lit 0.
    Si c'était un pull-down, la led s'allumerait et la GPIO aurait lu 1.

    Citation Envoyé par Vincent Petit
    dire qu'une entrée à une résistance infinie et ne consomme pas de courant est largement suffisant pour faire de l'électronique.
    D'accord.

    Je pense par tes derniers commentaires, avoir compris comment fonctionne le pull-up (ou le pull-down).
    Ce n'est pas évident de comprendre ce mécanisme qui laisse passer le courant et empêche la tension de circuler au bornes du BP quand il est enfoncé.
    Je ne pensais pas que l'on pouvait avoir un courant sans tension, et vice-versa.

    Citation Envoyé par Vincent Petit
    Pour le reste de ton questionnement je regarde pour voir si je peux expliquer autrement mais je crains avoir atteint mes limites pédagogiques (pas de patiente)
    Ce n'est pas nécessaire. J'ai assez abusé de ta patience et de ta gentillesse.
    Merci pour ton aide car cela m'a permis de mieux comprendre ces mécanismes pas du tout évident pour le prosélyte que je suis.

    Citation Envoyé par Vincent Petit
    Je peux t'en conseiller un pas mal si tu veux ?
    Je veux bien. Merci.

    Pour les anti-rebonds, je pense que j'ai tout.
    J'ai le schéma avec condensateur et résistance de protection du BP.
    Et j'ai le schéma avec la diode.
    Bien sûr, pour le pull-up et le pull-down.

    Je conserve aussi le pull-down symétrique du pull-up (celui de allaboutcircuits), même si au démarrage, il n'est pas correcte.

    J'aime bien la bascule (ou trigger) de Schmitt. Par contre, je n'ai pas compris comment l'identifier (ou le trouver) chez GoTronic.
    A quoi cela ressemble une bascule de Schmitt ? Est-ce un boitier ? Ou un simple composant comme une résistance ou une diode ?

    Je vais continuer à travailler sur ces anti-rebonds et procéder à d'autres lectures sur le net.
    Ce fut très pédagogique pour moi car j'ai appris plus de choses !

    Encore merci de ton aide M. Vincent Petit. Tu es un bon pédagogue.
    Merci aux autres pour leur participation.
    Ben, merci à tout le monde !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  16. #76
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut
    Je te recommande :

    Principes d'électronique - 8e éd. - Cours et exercices corrigés: Cours et exercices corrigés, de Albert Paul Malvino et David J. Bates. Dunod (2016) https://www.amazon.fr/Principes-d%C3...6890545&sr=8-1

    Je t'envoie un message privé.
    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  17. #77
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    J'ai un peu progresser sur mon fameux pull-down. J'ai trouvé un montage qui me satisfait :

    1) Il y a deux chemins, l'un pour le chargement du condensateur et l'autre pour son déchargement.
    2) Il y a donc deux résistances, l'une R1 et l'autre R2.
    3) on peut prendre R1 = R2 = 100k ohms.

    4) Au démarrage, le condensateur se charge. C'est la résistance R1 qui limite le chargement.
    5) Au démarrage, la GPIO lit un état bas (ou zéro). La Résistance R2 joue le rôle de résistance pull-down.

    6) Il n'y a pas de diode dans ce montage, puisque c'est le BP qui fait office de diode.
    7) Tant que le BP n'est pas enfoncé, la GPIO ne peut pas passer à l'état haut (ou 1).

    8) Quand j’appuie sur le BP, le condensateur se décharge. C'est la résistance R2 qui limite le déchargement.
    9) Quand je relâche le BP, le condensateur se recharge. C'est la résistance R1 qui limite le chargement.

    10) La position stable est celle où le BP est relâché.


    Nom : pull-down.png
Affichages : 246
Taille : 11,4 Ko


    Qu'est-ce que tu penses de ce montage ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  18. #78
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut Vincent Petit.

    Pour le calcul, je me suis basé sur cette formule :

    Nom : debouncevcap.png
Affichages : 236
Taille : 24,1 Ko

    Je prends :
    --> Vcap = 1.7
    --> Vinitial = 3.3Vcc

    Je me suis fait un petit programme pour calculer :
    --> la résistance à partir du condensateur et du temps.
    --> le condensateur à partir de la résistance et du temps.
    --> le temps ) partir de la résistance et du condensateur.

    J'ai pris 20mS comment temps. Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Temps          :     20.00 mS
    Résistance     :    100.00 kOhms
    Condensateur -->    301.53 nF
    
    Temps          :     20.00 mS
    Condensateur   :    330.00 nF
    Résistance   -->  91371.31 Ohms
    
    Résistance     :    100.00 kOhms
    Condensateur   :    330.00 nF
    Temps        -->     21.89 mS
    
    Appuyez sur une touche pour continuer...
    Là où il y a un flèche, c'est le résultat du calcul.

    Est-ce raisonnable comme résultat ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  19. #79
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut Artemus24
    Citation Envoyé par Artemus24
    8) Quand j’appuie sur le BP, le condensateur se décharge. C'est la résistance R2 qui limite le déchargement.
    9) Quand je relâche le BP, le condensateur se recharge. C'est la résistance R1 qui limite le chargement.
    Tout le raisonnement est bon en première approximation, les chemins de charges et décharges sont bien ceux que tu décris, mais il reste un problème et tu as introduit une subtilité qui va influencer fortement le résultat final.


    La subtilité
    Dans ton schéma, quand tu fermeras l'interrupteur tu vas te retrouver avec un pont diviseur de tension https://fr.wikipedia.org/wiki/Diviseur_de_tension et si les deux résistances sont les égales, alors la tension aux bornes du condensateur (qui sera la même aux bornes de la résistance de pulldown et qui sera aussi la même aux bornes de l'entrée du GPIO) sera de Vcc / 2

    Nom : path826.png
Affichages : 700
Taille : 17,6 Ko

    Donc la tension aux bornes du condensateur va varier de Vcc à Vcc/2 lors de la décharge et de Vcc/2 à Vcc lors de la charge. Sauf à la mise sous tension où le condensateur est complètement déchargé. Pour te montrer ça en simulation je vais prendre un petit condensateur pour accélérer la charge et la décharge, comme ça nous verrons le plancher causé par le pont diviseur. Ci dessous on voit Vcap en vert, comme tu le disais il est à 3.3V après le démarrage et ci tôt qu'on appuie sur l'interrupteur, la décharge commence, mais si regarde bien on voit la décharge ne va pas jusque 0, on voit un plancher à VCC/2 soit 1.65V à cause du pont diviseur.

    Nom : capture12.png
Affichages : 214
Taille : 38,7 Ko

    Si je remets le condensateurs que tu as calculé voici ce qu'on obtient, On voit bien la décharge lente, puis la charge lente. Si on voit la courbe descendre tout doucement c'est parce que la situation est complexe en réalité, quand l'interrupteur se ferme, de prime abord on peut se dire que le condensateur sa décharge dans la résistance de pulldown sauf que le pont diviseur de tension impose lui aussi une tension à ses bornes. On se retrouve avec un application du théorème de superposition de deux tensions sur une même résistance. La première tension est imposée par le pont diviseur formé par les deux résistances et la seconde tension c'est celle du condensateur. Il y a deux courants qui vont passer dans la pulldown et c'est assez couillu à calculer.

    Nom : capture13.png
Affichages : 222
Taille : 37,3 Ko

    Le problème
    Comme tu l'as dit, quand l'interrupteur est ouvert, la GPIO voit un 0V et quand l'interrupteur est fermé elle voit un 3.3V, qui descend au fil du temps. Mais finalement, on va simplement alterner 0V - 3.3V - 0V - 3.0V - 0V - 2.7V et ainsi de suite. C'est ce que la simulation montre. En bleu c'est Vout qu'on regarde maintenant.

    Nom : capture14.png
Affichages : 227
Taille : 37,3 Ko

    Voilà voilà.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  20. #80
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par Vincent PETIT
    Donc la tension aux bornes du condensateur va varier de Vcc à Vcc/2 lors de la décharge et de Vcc/2 à Vcc lors de la charge. Sauf à la mise sous tension où le condensateur est complètement déchargé.
    Et dans ce cas (tout dépend de la technologie du composant branché sur R2, voir ViH, ViL, VoH, VoL dans les datasheet), le contrôleur pourrait ne pas voir ce changement d'état. Sauf s'il y a un convertisseur analogique numérique. Ensuite, le condensateur ne pourra pas absorber les rebonds de l'interrupteur (si c'était le but).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. carte fox-lx832, question électronique
    Par IgiXphp dans le forum Embarqué
    Réponses: 4
    Dernier message: 23/02/2010, 09h34
  2. Divers questions
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 06/08/2002, 21h57
  3. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo