Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire un télérupteur avec un bouton + bascule D

    10 mai 2021 à 9:09:34

    Bonjour,

    J’essaie de faire un système qui me permettrait de faire un bouton ON/OFF pour tout un système de carte électronique. Le MCU doit donc être alimenté, et rester alimenté lorsque l'utilisateur appuie une fois sur le bouton poussoir. A l'inverse, l'alimentation doit être coupée lorsque l'utilisateur reclique sur le bouton poussoir.

    Ce qui me semble le plus simple et le moins encombrant est d'utiliser une bascule D.

    J'ai fait quelques simulations sur LTspice qui ont donnée ça :

       

    Voilà mes interrogations :

    Savez-vous pourquoi j'ai 1V et non 3V en sortie de simulation ?

    Cette config vous semble-t'elle être réalisable et fonctionelle ?

    Que dois-je faire des broches SET / RESET (GND ou bien 3V ?)

    Merci d'avance pour votre aide,

    • Partager sur Facebook
    • Partager sur Twitter
      11 mai 2021 à 8:09:34

      Par défaut, les circuit logique de LTspice ont une logique 0/1V donc c'est normal que tu ai 1V en sortie.

      En pratique, lorsque tu alimenteras ta bascule en 3V, elle te donnera 3V en sortie.

      Pour ce qui est des proches SET/RESET, tu peux t'en servir pour initialiser ta bascule à la mise sous tension.

      Par exemple, si tu veux que ton montage soit OFF par défaut à la mise sous tension, il va falloir faire en sorte que le RESET soit actif pendant un petit moment après la mise sous tension.

      Tu peux faire cela en connecteur SET au 3.3V ainsi que le RESET au 3.3V avec une résistance de pull-up et un condensateur au GND.

      Le temps que la résistance charge le condensateur qui sera vide à la mise sous tension, le reset sera actif.

      Pour le reste du montage, je dirais qu'il te manque un condensateur anti rebond ainsi qu'une résistance de polarisation de l'entrée CP.

      Pour bien comprendre, je t'invite à lire ceci : https://eskimon.fr/tuto-arduino-204-un-simple-bouton

      Et enfin, il faut savoir que le courant de sortie d'une bascule est limité à quelques mA maxi, donc il va te falloir utiliser un transistor pour amplifier ça et commuter le 3.3V de ton alimentation CPU.

      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2021 à 0:52:13

        Bonjour,

        Merci beaucoup pour ta réponse !

        Concernant les pins SET/ RESET, j'ai fait la simulation sur LTSpice en utilisant GND sur SET et en inversant le condo et la résistance pour le RESET (car le composant bascule D dispo sur LTspice n'inverse pas les pins comme mon composant à moi).

        J'ai ajouté un condensateur anti-rebond et 10nF... Je n'ai en revanche pas beaucoup d'idée sur cette valeur. C'est celle que j'ai lu dans le lien que tu m'a donné. J'ai aussi ajouté une résistance de pull down pour mon entrée sur CP, mais là encore le choix de sa valeur me semble un peu flou. De plus, sij'ai cette ré&sistance de pull down, est-il encore nécessaire de laisser ma résistance de 50 Ohms en amont du bouton ? Je l'avais mise pour limiter un peu le courant justement.

        Concernant le transistor en sortie de la bacule D : excellente remarque je n'y avait pas dutout pensé ! En revanche il se trouve que j'utilise un régulateur derrière (STBC03), j'imagine donc que ce composant peut prendre en entrée des courants très faible et sortir en sortie une tension régulée avec un courant correct ?

        Voilà le schéma actuel :

        Est-ce que dans l'état actuel tout semble OK ?

        J'ai quelques doutes sur les valeurs choisies mais sinon je pense que je vais pouvoir passer au routage :)

        A+

        -
        Edité par An-noix 14 mai 2021 à 0:52:31

        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2021 à 20:12:01

          Mettre une valeur de résistance trop faible n'est pas une bonne idée pour la consommation...

          En effet, quand ton bouton est enfoncé, tu vas avoir 3V aux bornes de ta résistance, et donc un courant de I=U/R=3/50=60mA dans la résistance, ça fait beaucoup.

          D'autant plus que ce courant de 60mA est perdu, il ne sert strictement à rien, alors autant le rendre le plus faible possible en prenant la résistance la plus grande possible, voir même pas de résistance du tout pour ne pas avoir de courant du tout.

          Cependant, quand le bouton n'est pas enfoncé, c'est cette résistance qui polarise le niveau logique que voit la bascule.

          Sans cette résistance, l'entrée est dans le vide, donc la bascule peut tout aussi bien lire un 0 qu'un 1, voir même le signal bougé tout seul en fonction des ondes radios qui passent dans le coin.

          Du coup, il faut cette résistance de pull-up ou pull-down suivant le niveau que tu veux par défaut.

          A supposer que ce soit une pull-up de 1k et que l'entrée de ta bascule consomme 1mA, alors il va y avoir une chute de tension de 1V dans la résistance et ta bascule verra donc une tension de 2V au lieux de voir une tension de 3V, ce n'est pas l'idéal...

          Mais ça, c'était une supposition car en pratique, le courant consommé sur l'entrée d'une bascule est extrêmement faible, donc même avec une résistance très élevée, la chute de tension restera négligeable.

          Bref, il faut trouver un compromis entre le courant perdu inutilement quand le bouton est enfoncé et la chute de tension maxi acceptable.

          Tu peux très bien utiliser des pull down et/ou pull up de 10k, ça marchera très bien tout en étant acceptable niveau courant et chute de tension.

          -----

          Pour le condensateur, il faut savoir que celui-ci se charge progressivement au travers de la résistance et que cela va faire une constante de temps Tho = R*C qui va dépendre de la résistance choisie et du condensateur choisi.

          Il faut s'arranger pour que le temps de charge du condensateur soit plus long que la durée des rebonds du bouton car sinon, ça ne marche pas.

          J'ai bien envie de te dire de faire des tests, tout simplement... si tu trouves que ton système change plusieurs fois d’état à chaque clic, c'est qu'il y a eu un rebond indésirable qui n'a pas été filtré, et donc qu'il faut augmenter la valeur du condensateur.

          -----

          La résistance R8 ne sert à rien, il n'y a pas besoin de limiter le courant sur une entrée de porte.

          Pire, elle fait pont diviseur avec R22, ce qui va faire un mauvais niveau logique 1.

          -----

          Je ne vois pas trop ce que le STBC03 vient faire ici, ni pourquoi tu connecte son entrée BAT sur la sortie de ta bascule.

          Lorsque l'alimentation principale est là, le STBC03 va chercher à charger la batterie et donc injecter du courant dans ta bascule pour la recharger, elle ne va pas apprécier.

          Et quand l'alimentation est absente, le STBC03 va chercher l'énergie dans la batterie et donc dans ta bascule, alors qu'elle n'est pas faite pour délirer de la puissance, même si ce n'est que 150mA maxi avec le STBC03.

          Pourquoi as tu choisis ce composant ???

          • Partager sur Facebook
          • Partager sur Twitter
            25 mai 2021 à 22:08:42

            Bonjour,

            Merci beaucoup pour toutes ces précisions très instructives.

            J'ai modifié les résistances et concernant le condensateur je vais faire quelques tests pour bien régler sa valeur.

            Concernant le STBC03, il me sert à gérer la partie alimentation & recharge de mon système embarqué (sur la base d'un STM32WB55). Initialement j'utilisais le STBC03 que je câblais directement avec la batterie. Cela marchait bien puisque quand la batterie était branchée, tout mon système était alimenté à 3V. Lorsque je branchais l'USB, la batterie se rechargeait bien (avec configuration du courant de recharge par des résistances pour avoir une recharge à C/2 environ).

            J'ai voulu remplacer le branchement de la batterie par ce bouton poussoir, d'où l'idée de la bascule D pour mémoriser l'état. Donc mon objectif est de couper l'alimentation du système lorsque la personne clique sur le bouton, puis de réalimenter le système lorsque la personne re-clique.

            Ce composant m'a été recommandé par un distributeur qui travaille avec ST... Peut-être que pour réaliser ce que je souhaite il est préférable de mettre le bouton poussoir + bascule en sortie du STBC03 ? Avec un transistor pour fournir le courant nécessaire au système ?

            L'idéal aurait été d'avoir une pin ENABLE (en plus de la pin BAT) sur le STBC03 pour pouvoir piloter la sortie LDO à l'aide de mon système. Mais je ne voit pas de fonctionnalité ressemblant à ça sur ce composant.

            EDIT : voilà une correction du montage

            -
            Edité par An-noix 26 mai 2021 à 8:24:29

            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2021 à 20:46:10

              Si tu veux que ta bascule D puisse allumer et éteindre le reste de ton montage, il faudra forcément qu'elle soit toujours alimentée.

              Parce que si jamais tu coupes sont alimentation, elle ne pourra pas changer d'état quand tu appuis sur le bouton, cela parait logique.

              Il faudra donc faire extrêmement à la consommation de celle-ci (que ce soit la bascule en elle même, les résistances, etc...) parce que lorsque ta batterie sera vide, la bascule continuera de consommer un un peu, ce qui pourrait potentiellement détruire ta batterie.

              Concernant le STBC03, si tu ne te sert que de sa fonction de charge, c'est un peu triste car d'autres chip beaucoup moins chère peuvent faire de la charge.

              Mais comme tu l'as, autant t'en servir à font, avec notamment les fonctions suivantes :

              - la pin LDO permet de sortir une tension régulée de 3V, peu importe la tension de la batterie, parfait pour alimenter un petit système qui ne consomme pas trop (150mA maxi)

              - la pin SD permet de mettre le chip en mode ultra basse consommation, et couper le LDO (et donc couper le système qui y est connecté)

              - la pin WAKE permet de réveillé le chip, et donc rallumer le LDO ainsi que le système

              Du coup, en branchant un bouton sur la pin WAKE et en renvoyant l'état de ce bouton à ton système à travers une diode, tu peux te passer de la bascule D et du transistor.

              Tu bénéficieras aussi du mode ultra low power du STBC03 qui permettra de ne pas bousiller ta batterie une fois que celle-ci est vide.

              Et accessoirement, cela simplifie grandement ton montage car toute la partie basecule D + transistor est supprimée.

              -
              Edité par lorrio 26 mai 2021 à 20:47:12

              • Partager sur Facebook
              • Partager sur Twitter
                27 mai 2021 à 16:17:12

                Effectivement, je n'avais pas bien compris l'utilité de cette pin WAKE, qui semble complétement simplifier mon montage.

                Concernant le fait de renvoyer l'état du bouton au système à travers une diode, l'objectif est de détecter un clic sur une GPIO de mon MCU pour envoyer le signal à la pin SD pour s'éteindre. C'est bien ça ?

                • Partager sur Facebook
                • Partager sur Twitter
                  28 mai 2021 à 10:24:18

                  Oui, c'est exactement ça, l'idée est que le CPU puisse lire l'état du bouton.

                  L'appui sur le bouton va faire un WAKE sur le STBC03, qui sera tout simplement ignoré étant donné que celui-ci est déjà actif.

                  Mais le CPU va pouvoir détecter cet appui et donc envoyer une commande de Shutdown sur la pin SD un peu plus tard pour demander à s'endormir.

                  Cela apporte aussi l'avantage que c'est le CPU qui demande à s'endormi, ce qui lui permet de finir sa tache en cours et s'arrêter proprement plutôt que d'avoir son alimentation coupée en plein milieux d'une tache critique.

                  Étant donné que le bouton sera toujours sous tension alors que le CPU pourrait être non alimenté, la diode est obligatoire pour éviter que l'alimentation du bouton ne remonte dans la pin GPIO du CPU hors tension, ce qui pourrait être destructeur et/ou provoquer des malfonctions.

                  -
                  Edité par lorrio 28 mai 2021 à 10:25:26

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Faire un télérupteur avec un bouton + bascule D

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown