Comment basculer l'alimentation du microcontrôleur par bouton?


13

J'ai un microcontrôleur alimenté par batterie. Actuellement, je bascule l'alimentation par un simple interrupteur marche / arrêt. Je veux basculer l'alimentation par un bouton-poussoir avec une modification minimale du schéma (et du programme du microcontrôleur probablement) et sans consommation lorsque l'appareil est éteint. Comment puis-je le faire?

AJOUTÉ . Je connais l'astuce suivante:

entrez la description de l'image ici

Ici, au début, le microcontrôleur définit PB3 sur haut et maintient ainsi l'alimentation du périphérique. Mais ce n'est pas une solution à mon problème, car je dois également éteindre l'appareil en appuyant sur S1.

AJOUTÉ . Puis-je exclure VT2 du circuit (c'est-à-dire la base d'entraînement du microcontrôleur de VT1 directement)?


Le verrouillage des boutons-poussoirs serait-il une solution acceptable?
AndrejaKo

@AndrejaKo: Non.

Bonne chance alors! Une façon que je vois serait de charger un condensateur pendant que le bouton-poussoir est enfoncé, puis d'essayer d'activer quelque chose avec lui, comme un MOSFET, mais cela dépendrait du moment où le bouton est enfoncé.
AndrejaKo

@tcrosley Ce n'est pas un doublon, la question à laquelle vous vous référez ne nécessite pas que l'alimentation soit basculée lorsque le bouton est enfoncé, il suffit de l'activer pour permettre au microcontrôleur de s'éteindre.
Bruno Ferreira

@BrunoFerreira ok, d'accord - j'ai supprimé mon commentaire précédent. J'ai ajouté la ligne au micro dans cette réponse mais je n'ai pas inclus le zener comme vous l'avez fait dans votre réponse, ce qui est un bon ajout.
tcrosley

Réponses:


6

En fonction du circuit que vous fournissez, vous pouvez simplement ajouter une diode en série juste après le commutateur (S1) (cathode connectée au commutateur) et vous pouvez utiliser une entrée pour détecter si le commutateur a été enfoncé à nouveau, si oui, éteignez-le PB3.
Modification requise

La diode zener protège l'entrée PIC de la tension provenant de l'alimentation.


Quel est le rôle de la diode?
m.Alin

@ m.Alin La diode ici permet au microcontrôleur de détecter quand le commutateur est relâché. Si nous n'avions pas la diode, lorsque VT1 commence à conduire, nous aurions toujours un niveau élevé sur l'entrée du microcontrôleur.
Bruno Ferreira

8

À quel point avez-vous vraiment besoin de partir? De nombreux microcontrôleurs modernes ont un courant de sommeil bien inférieur au courant d'autodécharge même des petites batteries. Vous pouvez faire en sorte que le bouton-poussoir commande simplement la broche d'E / S du micro, qui bascule ensuite entre le mode veille et le mode actif à chaque pression sur un bouton. Un certain anti-rebond sera nécessaire, mais tout cela est également possible dans le firmware.

Ce type de méthode marche / arrêt devient assez courant de nos jours. Lorsqu'il ne prend qu'un µA, un microcontrôleur n'a pas besoin d'être vraiment éteint, juste endormi, ce qu'il peut faire sous son propre contrôle. La ligne de bouton doit être câblée à quelque chose qui peut réveiller le micro du sommeil, mais à peu près chaque micro en a au moins un, généralement plusieurs.


1
D'accord, beaucoup de mes créations n'ont même pas de bouton marche / arrêt, elles se réveillent simplement en appuyant sur un bouton.
Oli Glaser

Le périphérique Me contient également un écran LCD et d'autres périphériques. Je dois donc aussi l'éteindre.

4
@user: Cela ne signifie pas que vous devez éteindre le micro, seulement l'autre logique. Avec le micro faisant la réflexion marche / arrêt, le micro peut contrôler l'alimentation des autres appareils afin qu'ils soient éteints lorsque le micro est en veille. Cela signifie que vous avez une sortie numérique délibérée qui peut être la polarité qui convient pour allumer et éteindre les choses, et vous n'avez pas besoin d'implémenter le basculement dans le matériel analogique.
Olin Lathrop du

Même si de nombreux microcontrôleurs ont des courants de sommeil très faibles, les régulateurs de qualité coûtent plus cher que ceux minables. Un régulateur qui utilise un 250uA supplémentaire (ou même 2,5mA) peut convenir s'il ne doit être actif que lorsqu'un appareil est en cours d'utilisation, mais serait totalement inacceptable s'il devait être actif même lorsqu'un appareil était "éteint" . Un produit que j'ai conçu il y a quelques années n'utilisait même pas de régulateur - il utilisait plutôt trois transistors et environ sept résistances pour fournir une alimentation nominale de 5 volts avec un arrêt contrôlé par processeur. Selon les normes du "régulateur", sa précision de tension était vraiment minable ...
supercat

1
@OlinLathrop: Deux 2N3094 et un 2N3906 coûtent moins de 0,07 $. Même si l'on suppose que dix composants coûtent un sou chacun pour l'assemblage, cela permet d'économiser un centime par unité - si 100 000 unités sont fabriquées, cela représente 10 000 $. Si un produit ne va pas avoir ce genre de volume, cela ne vaut peut-être pas la peine d'essayer de retirer 0,10 $; si les régulateurs d'aujourd'hui étaient disponibles lorsque j'ai conçu la chose, et si je ne savais pas à l'avance à quel point elle se vendrait, j'aurais probablement simplement utilisé un régulateur avec commande de secours, mais mon circuit fonctionne et est moins cher qu'autre chose; aucune raison de ne pas continuer à l'utiliser.
supercat

3

EDIT - après réflexion, le circuit ci-dessous (que je vais laisser pour référence) est probablement le mieux adapté pour une utilisation dans des circuits sans micro. Comme mentionné dans les autres réponses, à moins que vous ne puissiez vraiment pas vous permettre les quelques uA, cela n'a pas vraiment de sens de ne pas utiliser le micro pour contrôler la bascule d'alimentation, car il utilise moins de composants et peut être contrôlé avec précision.
La version la plus simple peut être quelque chose comme une entrée IOC (interruption sur changement) avec pull up, avec bouton à la masse. Le micro est alimenté en permanence et contrôle un MOSFET à canal P (avec pullup de la porte à la source) pour le reste du circuit. Quand il dort, il laisse le portail flotter pour couper le circuit.

Circuit de référence:

Interrupteur à bascule

Au début, le P-MOSFET est désactivé, il n'y a donc pas de courant de base à Q2, qui est également désactivé. Q1 est éteint, donc Q1c est à 5V. Le circuit est statique.

Lorsque S1 (ignorer les nœuds + et -, ils sont là pour le déclenchement SPICE) est pressé, le 5V à Q1c est connecté à la base Q2, l'allumant. Cela tire la porte P-MOSFET à la terre, la mettant également sous tension.
R4 voit maintenant 5V et lorsque S1 est libéré, il fournit à la base Q2 le courant nécessaire pour le garder ouvert (et donc le MOSFET aussi) Q1 est également activé lorsque le courant passant par R2 charge C1 à ~ 600mV, moment auquel Q1c est <200mV (c'est-à-dire que Q1 est allumé)
Le circuit est à nouveau statique.

Lorsque S1 est pressé à nouveau, Q1 absorbe le courant de R4 (qui maintient Q2 activé), désactivant Q2. R1 tire la base MOSFET jusqu'à 5V et l'éteint à nouveau.

Voici la simulation (V (push) high représente lorsque le bouton est enfoncé):

ToggleSwitchSim

Nous pouvons également voir après la mise hors tension des têtes de courant à zéro (lorsque C1 se décharge et que Q1 s'éteint), de sorte que le circuit ne consomme aucune puissance à l'état désactivé (le curseur pour I (V1) est à 19,86 s et mesure 329 nA):

ToggleSwitchPower

L'idée du circuit d'origine n'est pas la mienne, elle vient de Dave Jones sur EEVblog .


1

Comme l'a suggéré Bruno Ferreira, le moyen le plus simple de permettre au bouton d'agir comme un interrupteur "off" est de changer votre circuit est de permettre au processeur de savoir quand le bouton est enfoncé. Je pense que l'on peut raisonnablement bien utiliser des résistances pour protéger l'entrée du processeur contre des tensions supérieures à VDD sans avoir besoin d'un Zener pour cela.

Voici un schéma approximatif d'une conception de circuit que vous pourriez utiliser. La moitié droite représente le comportement du processeur, et j'ai utilisé une combinaison d'un transistor, de Zener et d'une résistance pour remplacer un régulateur. La sortie du processeur est représentée à l'aide d'un commutateur analogique son VDD, plutôt que d'une porte, car les portes de ce simulateur génèrent toujours une sortie + 5V.

Un aspect clé du circuit, qui peut causer des problèmes s'il est ignoré, est qu'il est conçu de manière à ce que le processeur ne puisse pas allumer le circuit à moins que son VDD ne soit d'au moins ~ 3,6 volts; J'ai également truqué le simulateur pour que le processeur essaie toujours d'activer sa sortie chaque fois que son VDD est inférieur à 3,5 volts. J'ai vu beaucoup de conceptions qui supposent que les processeurs n'essaieront pas de produire une logique élevée lorsque leur puissance disparaîtra. Cette hypothèse peut fonctionner correctement avec certains lots de puces utilisées dans les tests, mais échouer avec d'autres lots de puces utilisés dans la production à grande échelle. Le comportement de la plupart des processeurs n'est pas spécifié dans des conditions de sous-tension; une bonne conception doit être conçue pour que le comportement d'un processeur dans de telles conditions n'ait pas d'importance (petite note: il est probablement sûr de supposer qu'un processeur qui n'est pas t explicitement conçu pour générer des tensions supérieures à toute tension appliquée ne commencera pas par magie à le faire; Je ne pense pas qu'il existe une spécification explicite pour cela, mais je pense que dans la plupart des cas, cela peut être inféré en toute sécurité).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.