économie d'énergie, transistor en interrupteur, et courant résiduel

Bonjour

J’essaie d’économiser les batteries d’un circuit basé sur un Attiny85. Mon montage sera la plupart du temps en mode veille. J’ai un servo moteur qui consomme la plus grande partie de l’intensité (200mA en mouvement, 3,5 mA au repos, à vide). Pour réduire la consommation, j’ai donc placé un transistor PN2222A en interrupteur sur l’alimentation du servo, que je ne déclenche l’alim que quand l’attiny est éveillé.

En veille, l’intensité totale à travers le circuit (attiny, servo et tout) est passée de 3,5 mA (sans transistor) à 250 uA (transistor), dont 220 uA à travers l’alim du servo moteur.

Certes c’est mieux, mais d’où vient cette intensité résiduelle et comment la réduire ?

J’ai mesuré qu’en mode veille, la tension à la base du transitor est bien de 0V.

note :

  1. Les fils nommés PBX(…) sont relié à la pin X de l’attiny
  2. J’avoue avoir été traumatisée par les cours sur les transistors dans mes études

Fantoche:
Certes c’est mieux, mais d’où vient cette intensité résiduelle et comment la réduire ?

C’est plus simple de couper par la ligne 0V mais le +5V est toujours présent sur la ligne + du servo.
Je pense que le courant doit circuler entre le + du servo, les diodes de protection sur l’entrée PWM et la sortie de l’ATtiny.
Tu peux t’en assurer en déconnectant temporairement la ligne PB0.

Bien vu ! c’était effectivement à travers le fil PB0 que fuyait mon intensité. J’ai ajouté une diode 1N4148 entre la pin PB0 de l’Attiny et le le PWM du servo moteur. L’intensité en veille est descendue à 20 uA environ.

La diode 1N4148 provoque une perte de tension mesurée à 0,280mV, ce qui n’a pas l’air de correspondre a la datasheet. Le servo moteur n’a pas l’air perturbé par l’ajout de la diode.

Merci

J’ai joint le nouveau montage

Il aurait été plus simple de commuter l'alimentation + 5V du servomoteur par un MOSFET canal P. La chute de tension serait moins importante.

power-out2.png

Un AOI409 par exemple ou autre (voir les modèles marqués en vert) :
mosfets-de-puissance.html

power-out2.png

Ahh... mais je n'ai pas de transistor P, ni PNP ni MOSFET. Je vais encore devoir faire 15km de vélo pour aller chercher quelques composants ...

Pour que je comprenne bien, tu suggères :

  • un MOSFET pour un interrupteur, plutôt qu'un PNP (utilisé pour de l'amplification) ?
  • de puissance, parce que 200 mA ça commence à être important comme intensité ?

Bonjour

un MOSFET pour un interrupteur, plutôt qu'un PNP

-chute de tension plus faible dans le ligne qe l'on veut commander
-moindre dépense d'énergie pour piloter le MOSFET (pas besoin de courant en permanence dans sa grille)

Fantoche:
La diode 1N4148 provoque une perte de tension mesurée à 0,280mV, ce qui n'a pas l'air de correspondre a la datasheet. Le servo moteur n'a pas l'air perturbé par l'ajout de la diode.

Le courant dans la liaison est très faible ce qui te place dans le coude de la diode alors la datasheet dans ce cas elle n'est pas très précise.
Je vois quand même un risque à ce montage. Lorsque la sortie PB0 est à zéro l'entrée du servo se retrouve en l'air et elle est donc beaucoup plus sensible aux perturbations.

  • un MOSFET pour un interrupteur, plutôt qu'un PNP (utilisé pour de l'amplification) ?

Un PNP du genre 2N2907 pourrait convenir aussi, moyennant une chute de tension Vce de 250mV pour 200mA.

Avec un MOSFET du genre AOI409 ayant une résistance Rdson de 30mΩ la chute sera de 6mV dans les mêmes conditions.
On trouve assez peu de MOSFETs canal P à pattes traversantes, mais beaucoup de CMS.
L'AOI409 est un traversant : aliexpress en propose mais par 20 pièces.

Je vais encore devoir faire 15km de vélo pour aller chercher quelques composants ...

Chez un revendeur en France cela risque d'être difficile de trouver du MOSFET P. Même Gotronic n'en propose aucun en série Logic Level.

Bonjour

Je viens de reprendre le montage électronique que j'avais laissé de coté pendant quelque temps.

Il est possible d'acheter des transistors MOSFET P à pattes traversantes en magasin à Paris. Mais le choix n'est pas immense et ne correspond pas à la liste indiquée par hbachetti plus haut.

Ne m'y connaissant pas trop et en essayant de recouper avec la fameuse liste, j'ai choisi :

  • un BS250 (marqué comme 60V 180mA, un peu juste pour mes 200mA, mais sait-on jamais)
  • un IRF9540 (100V, 20A, sur-dimensionné cette fois-ci).
    Et j'ai aussi pris :
  • un PNP ITT2907 (similaire à PN2907, 60V, 0.8A, qui correspond mieux à mon circuit).
  1. J'ai commencé par le montage avec le PNP indiqué dans le poste précédent. Malheureusement la commande est inversée par rapport à mon premier montage avec le NPN. Il faut envoyer 0V sur la grille pour alimenter le moteur. Et je ne peux pas simplement inverser la commande de l'alimentation du moteur car j'ai récupéré le signal sur une autre partie du circuit. Pour pouvoir utiliser le montage avec le PNP, je devrais utiliser la patte RESET de l'Attiny, ce que j'aimerais éviter autant que possible.
    Je suppose que le montage avec un MOSFET P poserait le même problème.

  2. Du coup je me suis dit que j'allais ajouter un petit montage inverseur à l'aide d'un transistor NPN en amont du circuit. J'ai trouvé beaucoup de valeurs différentes pour les résistances à utiliser et j'ai du faire quelques essais.

Resultats :

  • mon servo moteur tourne au moment voulu. Par contre je perds par moment le contrôle de la position et il se met à tourner en continu. Il semblerait que le SG90 soit connu pour avoir ce genre de problème et que ça puisse être résolu en modifiant légèrement le programme. Avant j'utilisais un autre servo qui ne m'avait jamais fait ces farces.
  • la consommation du circuit est contrôlée (30uA en veille, 100mA en activité - j'ai changé de servo, le nouveau consomme moins)

Questionnements :
Voici les intensités que j'obtiens : (Ik désignant l'intensité traversant Rk)
I1 = 300 uA ; I2 = 450 uA, I3 = -5,7 mA, I4[E_PNP] = 80 mA

  • Si je débranche la résistance R2 (ou que j'oublie d'allumer l'amperemètre), le circuit fonctionne de la même façon.
  • l'intensité dans R3 est négative en allant du NPN vers le PNP.
  • Est-ce que les valeurs des résistances et des intensités indiquent que mes transistors sont bien en régime saturé ?

PS : J'essaie avec les MSOFET P et N dès que possible

Tu as inversé émetteur / collecteur du 2N3905. La flèche indique le sens du courant.

Malheureusement la commande est inversée par rapport à mon premier montage avec le NPN.

Bien entendu, il suffit d'inverser dans le logiciel.

  • Si je débranche la résistance R2 (ou que j'oublie d'allumer l'amperemètre), le circuit fonctionne de la même façon.

R2 serait utile avec un MOSFET (pullup), avec un PNP elle a peu d'intérêt.

PS : J'essaie avec les MSOFET P et N dès que possible

Ou NPN + MOSFET, mais il faudra bien vérifier que la tension VGSth soit adaptée au courant de drain.

Tu as inversé émetteur / collecteur du 2N3905. La flèche indique le sens du courant.

?? Il est dans ce sens sur la datasheet, le logiciel KiCad, et sur les différents cours sur les transistors PNP. Par contre il s'agit d'un ITT2907 (équivalent au PN2907 mais avec des broches inversées)

Bien entendu, il suffit d'inverser dans le logiciel.

Malheureusement non. J'ai déjà utilisé toutes les broches PB0 à PB5 de mon Attiny. J'ai bien pensé à utiliser la broche RESET en sortie, mais j'ai lu que :

  • c'était fortement déconseillé car, en plus de devoir jouer avec les fusibles pour l'activer, c'est tout un schmilblic pour pouvoir reprogrammer la puce par la suite (programmer AVR, high-voltage programmer...) ;
  • d'autre part que ce que pouvait faire la broche RESET une fois transformée en PB6 n'était pas équivalent aux autres broches PB en terme de voltage et d'intensité.

Du coup j'ai préféré récupérer le signal de contrôle de l'alimentation du servomoteur sur une autre pin en sortie de l'Attiny, qui se trouve être déjà au niveau haut quand le moteur doit tourner, et repasse au niveau 0 peu après l'arrêt du moteur.

Mais j'ignore s'il est plus facile de faire des montages avec des transistors ou de monter un high voltage programmer.

?? Il est dans ce sens sur la datasheet, le logiciel KiCad, et sur les différents cours sur les transistors PNP. Par contre il s'agit d'un ITT2907 (équivalent au PN2907 mais avec des broches inversées)

L'émetteur doit être au +5V.

Il est dans ce sens sur la datasheet

Dans la datasheet la charge est connectée entre colleteur et -30V, l'émetteur à GND.
Cela fait une légère différence ...

Ohhhh... Je n’avais pas du tout vu ça. J’avais vaguement remarqué que les flèches étaient parfois un peu différentes mais pas plus que ça. Je m’y ré-attaquerais en mettant les transistors dans et bon sens. Si ça s’en trouve mon moteur arrêtera de tourner sur lui même et les circuits avec les MOSFET fonctionnera.

C’est quand même étonnant que ça ait “presque” marché et que rien ait grillé.

Par contre, je suis perplexe a propos du circuit avec le MOSFET P. A quoi servent les résistances de 100k et de 220 ? Si les MOSFET sont commandés en tension, faut-il contrôler l’intensité sur la grille ?

100KΩ : pullup
220Ω : limitation du courant lors des commutations (la grille est un condensateur)

Merci

J'ai repris les montages

Avec les NPN & PNP voici le montage :


L'intensité dans l'alimentation du moteur est bien d'environ 100mA quand il tourne, 0 sinon. Pour le montage global j'ai des valeurs de 150 mA en fonctionnement, 2.5 mA en attente et inférieure à 50 uA en veille.
Mon servo moteur a toujours une petite tendance à se transformer en toupie par moment. Donc ça n'a pas l'air d'être uniquement du au transistors branchés à l'envers.

Avec les MOSFET N & P :


l'alimentation de mon moteur est d'environ 200 mA quand le moteur tourne (plus que mes 100 mA d'avant ?), et chute à 2.5 mA environ sinon. L'intensité à travers le circuit ne chute pas en dessous de 2.5 mA non plus. Ce qui est plus ou moins les valeurs que j'obtenais sans transistor au paravent.

En veille, l'intensité totale à travers le circuit (attiny, servo et tout) est passée de 3,5 mA (sans transistor) à 250 uA (transistor), dont 220 uA à travers l'alim du servo moteur.

Commander un BS250 180mA avec un IRF520 10A est un peu comme mettre la charrue avant les bœufs.
Et le BS250 semble juste pour 200mA.