Skip to content

Module de commande d'une alimentation ATX pour RaspberryPi

Toutes les ressources sont sur la page GitHub du projet. Ce projet a été réalisé en collaboration avec Patrick Abati, Sitelec.org.

Au sein d'un système comportant un RaspberryPi alimenté par une alimentation ATX, l'objectif de ce circuit est de permettre d'allumer et d'éteindre proprement le système avec un même bouton poussoir.

Vue 3D du PCB

Compatibilité

CarteTestéeFonctionne
RaspberryPi 3 Model B
RaspberryPi 3 Model B+
RaspberryPi 4 2GB
RaspberryPi 5 2GB

Sur RaspberryPi 5, l'alimentation via le connecteur d'extension est plus complexe et ne fonctionne pas en l'état avec ce module.

Présentation du fonctionnement

Schema

Ci-dessous sont détaillées les étapes du fonctionnement du circuit.

Mise en route

Ce circuit agit sur la broche ATX_PS-ON de l'alimentation ATX pour commander sa mise en marche et son arrêt. Par défaut, cette broche est à 5V, ce qui correspond à l'état éteint de l'alimentation.
Pour allumer l'alimentation, le circuit doit mettre ATX_PS-ON à la masse.

Lors de l'appui sur le bouton poussoir, le transistor Q2 met ATX_PS-ON à la masse, ce qui déclenche la mise en route de l'alimentation et le démarrage du RaspberryPi.

Système actif

Au démarrage, le RaspberryPi met sa broche RPI_UART0-TXD à 3.3V, agissant sur le transistor Q1 qui maintient l'alimentation allumée en gardant ATX_PS-ON à la masse.
Cependant, il peut s'écouler un certain temps avant que RPI_UART0-TXD passe à 3.3V (2.6 secondes sur RaspberryPi 3). Le sous-circuit RC sur la base de Q2 permet de maintenir le transistor saturé suffisament longtemps.

Le condensateur C1 permet d'absorber les variations de tension sur la broche RPI_UART0-TXD, ce qui peut s'avérer utile en cas d'utilisation de l'UART du RaspberryPi, de façon à maintenir le système en route.

Arrêt du système

Une nouvelle pression sur le bouton poussoir est détectée par programme sur le RaspberryPi via une broche GPIO configurée en entrée, l'arrêt propre du système d'exploitation peut alors être déclenché.
Une fois que le RaspberryPi a atteint l'état d'arrêt, il reste alimenté mais sa broche RPI_UART0-TXD tombe à 0V, Q1 n'est donc plus passant, ATX_PS-ON est relâché et l'alimentation s'arrête.

Simulation

Simulation

  • X: 2 secondes par division
  • Y: 0.5V par division
  • jaune: ATX_PS-ON (mesuré)
  • rouge: PWR_SW- (simulé)
  • bleu: RPI_GPIO (mesuré)
  • vert: RPI_UART0-TXD (simulé)

Le projet KiCAD utilisé pour la simulation est présent sur la page GitHub du projet.

Un tutoriel sur la simulation avec KiCAD est disponible sur Sitelec.org.

Paramétrage du RaspberryPi

A travers un client SSH, connectez-vous à votre RaspberryPi.

Broche RPI_UART0-TXD à 3.3V pendant le fonctionnement

La première chose nécessaire est de configurer le RaspberryPi pour que sa broche RPI_UART0-TXD soit à 3.3V pendant son fonctionnement, de façon à maintenir l'alimentation allumée. Pour ce faire, éditez /boot/firmware/config.txt et ajoutez à la fin:

enable_uart=1

Arrêt du RaspberryPi commandé par GPIO

Pour que le bouton poussoir commande l'arrêt du RaspberryPi, le circuit doit-être connecté à la broche GPIO de votre choix.

Téléchargez ce script Python:

Vous pouvez éventuellement l'éditer pour changer PIN_NB, le numéro du GPIO à utiliser.

Copiez ce script dans /usr/local/bin. Rendez-le exécutable:

sudo chmod +x /usr/local/bin/rpi_shutdown.py

Installez ses dépendances, notamment gpiozero:

sudo apt-get -y install python3-gpiozero python3-pkg-resources

Et activez-le au démarrage du système:

sudo crontab -e

rajoutez alors dans le fichier qui s'ouvre:

@reboot /usr/local/bin/rpi_shutdown.py &

Ce script a été écrit suivant la documentation de gpiozero.

Redémarrez proprement votre RaspberryPi:

sudo reboot

Vous pouvez à présent connecter le circuit au RaspberryPi et à l'alimentation et tester:

  • que l'alimentation est bien maintenue active par la broche RPI_UART0-TXD du RaspberryPi,
  • et que l'appui sur le bouton déclenche l'arrêt du RaspberryPi, qui déclenche l'arrêt de l'alimentation.

La page GitHub du projet
La page Instructables du projet
La page Sitelec.org du projet
Vidéo sur les alimentations à découpage ATX, par Deus Ex Silicium

Fait avec ❤️