Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Un lieu pour discuter des composants et de leur utilisation. Un passage obligé si vous devez interfacer votre Raspberry Pi avec le monde extérieur. On y trouvera aussi les cartes type commande de moteur pas à pas, continu, servo...

Modérateurs : Francois, smba38

Edn599
Messages : 7
Enregistré le : ven. 28 août 2020 13:52

Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Edn599 » ven. 28 août 2020 16:55

Bonjour à tous :D ,
Je souhaiterais ajouter un interrupteur marche/arrêt à levier (donc différent d’un bouton momentané) sur ma PI3 B+.

J'ai donc branché une borne de mon interrupteur sur le pin 5 (GPIO3) et l'autre sur un pin GROUND. J'ai également utilisé le script présenté dans ce tutoriel en le modifiant un peu pour l'adapter au bouton à levier:
https://howchoo.com/g/mwnlytk3zmm/how-t ... spberry-pi

En fait j'ai simplement remplacé "GPIO.wait_for_edge(3, GPIO.FALLING)" par "GPIO.wait_for_edge(3, GPIO.RISING)"

_______________________________________________________
#!/usr/bin/env python

import RPi.GPIO as GPIO
import subprocess


GPIO.setmode(GPIO.BCM)
GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(3, GPIO.RISING)

subprocess.call(['shutdown', '-h', 'now'], shell=False)
___________________________________________________________

Résultat, lorsque je lance le script sous Python, tout fonctionne comme prévu, quand je mets l'interrupteur en position OFF, la PI entame la procédure d'arrêt et... s'arrête. Et lorsque je positionne l'interrupteur sur ON, la PI sort de son mode sommeil.

Mais quelque chose me turlupine, c'est le fait que l'intégralité des tutoriels à ce sujet utilisent systématiquement un bouton poussoir momentané. Est-ce que connecter le GPIO3 au pin GROUND de manière prolongée risque d'endommager la PI?
En fait je n'ai vu qu'un seul tutoriel et qui se trouve sur votre site concernant un interrupteur levier pour éteindre Recalbox:
https://www.framboise314.fr/recalbox-aj ... roprement/

Du coup je n'ai pas encore installé le script pour qu'il se lance au démarrage de la PI et je ne me sers pas encore du bouton en attendant votre avis.

J'ai une deuxième interrogation concernant le ventilateur que j'ai branché sur le pin 1 (3v3) qui évidemment ne s'arrête pas lorsque la PI passe en mode sommeil.
Je sais que je ne peux pas le brancher sur un GPIO puisque le ventilateur fait 5V DC et 0,2A.
Mais existerait-il une solution pour l'éteindre sans avoir à utiliser un deuxième bouton M/A?
Après plusieurs recherches sur des sites anglo-saxons, des personnes ont évoqué la possibilité d'utiliser un transistor ou un mosfet dont une pate viendrait se connecter à un GPIO et dès lors, le script venant arrêter le Raspberry Pi pourrait aussi arrêter le ventilateur.
Je vous avoue que je ne suis pas un expert en électronique et je ne suis pas sur de comment fonctionne exactement un transistor. Si je visualise bien, la pâte du transistor NPN qui vient se connecter à un GPIO ferait office de porte venant ouvrir et fermer le circuit que le ventilateur utilise entre le pin 1 (3v3) et le pin GROUND ?

Je vous remercie par avance pour tout l’éclaircissement que vous pourriez venir m’apporter à ce sujet, bonne journée.

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Bud Spencer » ven. 28 août 2020 19:30

Pour un peu d'éclaircissement sur l'utilisation d'un transistor pour ce cas d'application, tu peux lire ce sujet : viewtopic.php?f=3&t=5223
J'y avais fait je pense pas mal d'efforts pour essayer de l'expliquer, mais cela demande quand meme quelques notions de base en électricité pour faire au moins la différence entre courrant et tension.

Edn599 a écrit :
ven. 28 août 2020 16:55
des personnes ont évoqué la possibilité d'utiliser un transistor ou un mosfet
Dans ce cas d'utilisation, ce n'est pas soit un transistor soit un mosfet puisque le mosfet est ici un type de transistor. Tu aurais du ecrire : soit un transistor bjt (bipolar junction transistor), soit un transistor mosfet ;) ...
Edn599 a écrit :
ven. 28 août 2020 16:55
... j'ai branché sur le pin 1 (3v3) qui évidemment ne s'arrête pas lorsque la PI passe en mode sommeil.
Il ni à pas de mode 'sommeil' et la pin 1 n'est pas du 3.3 mais du 5v. Dans les 2 cas (3.3 ou 5v) la tension est toujours présente meme quand le système est arrêté, donc si tu veux que ton ventilo s'arrête quand tu arrêtes le système, il faut : soit couper l'alimentation générale ou alors le piloter via un GPIO qui passera à 0 à l'arrêt (retour à l'utilisation d'un transistor citée plus haut).
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Edn599
Messages : 7
Enregistré le : ven. 28 août 2020 13:52

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Edn599 » sam. 29 août 2020 20:14

Salut Bud Spencer,

Merci pour ta réponse, j'ai déjà commencé à lire le sujet que tu as transmis, c'est vrai que c'est dense :o mais çà ne me décourage pas pour autant. d'autant plus que j'envisageais de rajouter des LEDs sur la PI donc c'est pas mal pertinent.

Avant de lancer le topic, je pensais avoir une vague idée de se qu'était le "courant" et la "tension" mais finalement je me rends compte que je n'y connaissais rien du tout. Retour au banc d'école pour moi :D .
Je vais alterner le sujet de Artemus24 et des vidéos éducatives pour mieux cerner le sujet.

Concernant le ventilo, le transistor semble effectivement être la meilleur option à suivre, je vais continuer à étudier le sujet pour savoir lequel répondra le mieux à mes besoins (pour commencer en m'orientant vers un type Négatif Positif Négatif) et je vous fais un retour sur mes recherches et le montage. C'est dommage en revanche qu'il n'y ait plus énormément de magasins d'électroniques. Le dernier de la ville où j'habite a fermé il y a quelques années du coup en ce moment je passe mon temps à faire des commandes sur internet. Peut être que comme je l'ai lu dans l'autre sujet, recycler le vieux matos hors d'usage pourrait palier à ce problème.

Merci encore en tout cas c'est vrai que lorsque l'on demande de l'éclaircissement dans un domaine, un topic sur les LEDs ça éclaire pas mal! :lol:

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Bud Spencer » dim. 30 août 2020 09:53

Edn599 a écrit :
sam. 29 août 2020 20:14
Retour au banc d'école pour moi :D
A l’école peut etre pas, mais c’est bien d’etre conscient qu’il faille apprendre (ou réapprendre un peu) les notions et principes de bases avant de passer à la pratique. Autrefois (il y meme seulement 30 ans) il fallait passer des heures à fouiller dans des tas de bouquins pour se familiariser avec tout ça mais aujourd’hui c'est beaucoup plus facile et rapide avec internet donc ne pas s'en priver.

SI ça peu t’aider, voilà une photo du montage test du système de ventilation des pointeuses prototypes du projet Chronos . C'est un montage on ne peu plus classique d'un npn (bc337 de fond de tiroir) monté en émetteur commun avec sa résistance de limitation de courant de base (2Ko) et sa diode de protection (1n4148). Le petit ventillo est alimenté en 5v et pompe ~80mA pour un courrant de base de ~1mA.
ventil.png
ventil.png (342.81 Kio) Vu 5487 fois
Perso j’ai fait le choix dans le code de pouvoir définir un seuil de mise en marche du ventilateur en fonction de la temperature cpu pour ne pas qu'il tourne tout le temps inutilement mais c’est bien une gpio en sortie qui le pilote
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Edn599
Messages : 7
Enregistré le : ven. 28 août 2020 13:52

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Edn599 » jeu. 3 sept. 2020 12:15

Bonjour Bud,

Merci pour la démonstration de ton montage, ça m’a pris un peu de temps mais après pas mal de recherches je pense avoir enfin compris pourquoi tu utilisais une résistance de 2K ohms pour limiter le courant de base :

D’après les infos trouvées sur le transistor BC337 :
- Le gain (Hfe) = 60
- Vce(sat) = 0.7
- Vbe(sat) < 1.2 (comme il faut utiliser une valeur inférieure, j’ai choisi 0.9)

Et d’après les infos que tu as données sur le ventilateur utilisé :
- Une tension de 5 V
- Une intensité de 80 mA
- Une tension d’alimentation de 5 V (Vcc)

La résistance de charge (Ra) = U / I
Ra = 5 / 0.08 = 62.5 Ohms

Ensuite on calcule l’intensité du courant (Ic) du ventilateur au collecteur :
Ic = (Vcc - Vce(sat)) / Ra
Ic = (5- 0.7) / 62.5 = 0.0688 A ou 68.8 mA

Pour saturer le transistor, l’intensité du courant à la base (Ib) doit être supérieur à Ic / Hfe
Ib > 0.0688 / 60
Ib > 0.00114 A ou 1.14 mA

On peut ensuite calculer la tension appliquée à la résistance de base (Urb) = Vcc – Vbe(sat)
Urb = 5 – 0.9 = 4.1 V

Donc, pour déterminer la résistance de base en utilisant la loi d’Ohm Rb = Urb / Ib
Rb = 4.1 / 0.001
Rb = 4100 Ohms

D’après ce que j’ai compris, pour obtenir une bonne saturation du transistor, il faut prendre une valeur de 2 à 3 fois inférieure à Rb. Ici je pense que tu as utilisé une valeur 2 fois inférieure ainsi :
4100 / 2 = 2050 Ohms ce qui correspond à une résistance standard de 2K Ohms.

Est-ce bien cela ?

Concernant la diode, si je ne me trompe pas, elle est présente pour éviter d’endommager le circuit si il y a une inversion de la polarité étant donné que la diode ne peut laisser passer le courant que dans un seul sens ?

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Bud Spencer » jeu. 3 sept. 2020 21:44

C'est bien plus plus simple que ça.

BC337 hfe = 100
Mon ventillo 0.08 A

Donc courrant de base mini requis : 0.08/100 = 0.0008A
Donc 1 bon mA bien pesé devrait saturer mon transistor
rB = 3.3 – 0.7 / 0.001 = 2.6 / 1 mA = 2600 ohms

La valeur classqiue en dessous c’est 2.2k, ce qui me donnerais Ib = 2.6 / 2200 = 1.2 mA
J’ai plus de 2.2 K, je prends donc juste en dessous de ce que je trouve, soit 2 K et finalement Ib = 1.3 mA pour 0.8 théorique au départ. Si avec ça mon transistor ne sature pas, c’est que c’est un truc fabriqué illégalement au bengladesh, donc je le jette et j’en mets un autre …
Attention de bien prendre la tension de la gpio (3.3) pour calculer rB et non pas la tension du ventillo (5v). D’où l’énorme écart entre tes 4.1v et mes 2.6v ;-)
C'est très empirique comme calcul, mais c'est très largement suffisant pour ce genre d'utilisation.

La diode sert effectivement a protéger le transistor mais pas d'une inversion de polarité. Elle est la pour en quelques sorte 'absorber' les pics de tension au déchargement du circuit inductif ( ici la bobine du moteur). Sans ca, ces pics se retrouveraient ici sur le collecteur et le transistor serait en grave danger. On appelle ca 'diode de roue libre (ou flywheel) '.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Edn599
Messages : 7
Enregistré le : ven. 28 août 2020 13:52

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Edn599 » sam. 5 sept. 2020 16:25

Ah oui effectivement, c’est beaucoup plus simple et rapide comme ça. J’ai dû m’embrouiller en suivant des exemples de circuits où le collecteur et la base utilisaient la même source de tension avec un interrupteur pour saturer le transistor.

Dans notre cas la tension de la base provient du GPIO comme tu l’as fait remarquer du coup c’était plutôt logique d’utiliser la tension du GPIO pour calculer la résistance de la base :oops: .

Par contre, j’avais vu sur les cours de Electronique-3D un exemple de circuit ou la base utilisait la même source d’alimentation que le collecteur et que pour calculer Rb il fallait soustraire à Vcc la différence de potentiel entre base et collecteur (qui est toujours égale à 0.65 V si je ne fais pas erreur).

Est-ce que c’est pour ça que dans notre cas, étant donné que l’on sature le transistor grâce au GPIO, on doit utiliser la valeur de Vce(sat) pour le calcul de Rb ?


De mon côté, je pensais commander des 2N2222 TO-92 (en espérant qu’ils soient de bonne qualité :? ) et si j’applique tout ce que tu m’as appris, on a :
Hfe = 75
Vce(sat) = 0.3 V

Mon ventilateur = 0.20 A

Ib > 0.2 / 75 = 0.0026 A

Rb = (Vbb – Vce(sat)) / Ib
Rb = 3 / 0.0026 = 1153 donc une résistance standardisée de 820 Ohms devrait faire l’affaire.


Je comprends mieux le rôle de la diode de roue libre sur ton montage.
Ici tu l'as placé à cheval entre la borne positive et négative du ventilo et elle doit être au moins égale à la tension de l'alimentation (ici 5 V) et en intensité (80 mA).

C'est super au début j'ai eu beaucoup de mal à appréhender ton montage mais maintenant c'est beaucoup plus clair :D .

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Bud Spencer » dim. 6 sept. 2020 10:54

Edn599 a écrit :
sam. 5 sept. 2020 16:25
Rb = (Vbb – Vce(sat)) / Ib
Rb = 3 / 0.0026 = 1153 donc une résistance standardisée de 820 Ohms devrait faire l’affaire.
Rb = (Vbb – Vbe(sat)) / Ib = 3.3-0.7 / 0.0026 = 1000

Vbe(sat) est en général de 0.6v pour ce type de transistor et il ne faut pas depasser Vbe(sat) max qui est généralement de 1.2v. Dans la pratique on prend 0.7v ce qui donne déjà une marge pour garantir la saturation. La derrière tu prends une valeur des 2/3 de la valeur trouvée (1000 * 0.66 = 660 ) donc la valeur la plus proche = 680 ohms ce qui va te donner Ib = ~4 mA ce qui devrait largement suffire


Edn599 a écrit :
sam. 5 sept. 2020 16:25
Ici tu l'as placé à cheval entre la borne positive et négative du ventilo
La diode de flywheel toujours en parallèle de la charge avec le - de la diode (petite bande noir sur la 1n4148) sur le + de la charge et inversement
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Edn599
Messages : 7
Enregistré le : ven. 28 août 2020 13:52

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Edn599 » dim. 6 sept. 2020 15:44

Salut Bud,

Merci beaucoup, ta réponse a levé les derniers doutes et interrogations que j'avais concernant les calculs liés aux transistors.

J'ai passé commande hier pour les composants nécessaires au projet. Et après plusieurs recherches, je m'étais justement décidé sur la diode 1n4148.
Le matériel devrait arriver vers le milieu de la semaine prochaine. Une fois le tout reçu et monté je vous fais un retour sur le montage.

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Eteindre la PI à l'aide d'un bouton M/A à levier ainsi que le ventilateur.

Message par Bud Spencer » mar. 8 sept. 2020 21:59

Edn599 a écrit :
dim. 6 sept. 2020 15:44
ta réponse a levé les derniers doutes et interrogations que j'avais concernant les calculs liés aux transistors.
Attention, ici on ne parle que de l'utilisation d'un transistor en régime de saturation et on a juste survolé les bases du sujet. C'est l'utilisation la plus simple (et très utile) mais c'est une bonne base pour commencé a les utiliser.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « L'électronique et le Raspberry Pi »