Sources d’alimentation d’un microcontrôleur

Dans ce post, je vais présenter les sources d’alimentations les plus courantes d’un microcontrôleur, à savoir : Les piles ou accumulateurs, les prises murales et les ports USB. En général, la source d’alimentation nécessaire dépend des besoins du microcontrôleur et du circuit qu’il pilote. Commençons par détailler les besoins d’un microcontrôleur.

La plupart des microcontrôleurs acceptent une plage de tension bien précise (noté dans la datasheet du composant). La tension appliquée pour le microcontrôleur va déterminer la fréquence maximale de l’horloge du microcontrôleur. Dans le cas d’un ATtiny48PU, la datasheet indique qu’il peut recevoir une tension de 1,8 V à 5,5 V (avec une fréquence maximale de 4 MHz entre 1,8 V et 5,5 V; 8 MHz entre 2,7 V et 5,5 V; 12 MHz entre 4,5 V et 5,5V). A noter que ce microcontrôleur a été conçu pour fonctionner avec une tension de 5 V avec une marge de plus ou moins 0,5 V. Cela signifie qu’une marge de manœuvre est possible si le circuit demande une tension d’un peu moins de 5V ou d’un peu plus de 5V. Le choix du microcontrôleur doit donc se faire en fonction des autres composants du circuit. Un exemple simple : Si un capteur de température fonctionne sous une tension de 3,3 V, alors il vaut mieux utiliser un microcontrôleur fonctionnant convenablement sous 3,3 V (Un ATmega32 ne pourrait pas fonctionner dans ce cas, un ATmega324A fonctionnerait). A l’inverse, il est possible de choisir les composants du circuit en fonction de la tension appliquée au microcontrôleur. L’objectif est d’utiliser la même tension. Si cela n’est pas possible, alors la seule solution est de créer plusieurs sources d’alimentations différentes.

La suite de l’article considère que la tension à utiliser est de 5V (ce qui est une tension « classique » dans le petit monde des microcontrôleurs).

Les piles

Théorique : 1000 mAh => 10 heures pour 100 mA; 20 heures pour 50 mA

Plusieurs choix :

– Piles 1,5 V : Si 3 piles branchées en série alors 4,5 V => Trop juste ! En tout cas déconseillé pour une tension de 5V. Si 4 piles alors 6V => Trop important; Le microcontrôleur ne tiendra pas le choc. Il faut réguler la tension avec un régulateur LDO

– Piles 9V : Bon compromis, mais il faut obligatoirement réguler la tension. Ici un régulateur plus « classique » tel qu’un LM7805 est suffisant. Ce n’est pas un LDO, mais vu la chute de tension de ce régulateur (environ 1,5 Volts), nous aurons bien 5 volts en sortie du régulateur (il faut plus de 6,5 V en entrée du régulateur pour qu’il fonctionne correctement).

Les prises murales

Pour ce cas, il faut obligatoirement un transformateur pour transformer le 220 Volt efficace en tension plus basse (aux alentours de 9V). Puis, il faut utiliser un système de redressement de la tension et un système de régulation. (pont de diodes + condensateur de filtrage + régulateur).

USB

Les ports USB offrent une alimentation déjà régulée de 5 V. Il est donc facile de récupérer l’alimentation de ce type de connectique. En effet, la connectique USB utilise 4 fils : 2 pour l’alimentation (rouge et noir) et 2 autres pour le bus de données (en général blanc et bleu). Il est toutefois possible (mais clairement pas obligatoire) d’ajouter un ou deux condensateurs pour bien lisser les éventuelles perturbations qui pourraient survenir sur l’alimentation du port USB.

Vous voilà paré pour alimenter vos microcontrôleurs !

BatteriesStepUp – Circuit boost 5V depuis des accu LR06

Un nouveau petit circuit permettant de produire une alimentation USB 5V depuis 3 ACCU LR06.

Mes contraintes :

  • Usage de piles LR06 ou d’ACCU LR06
  • Pouvoir débiter 1A sous 5V en sortie
  • Le circuit doit tenir dans un petit boitier

J’ai décidé d’utiliser le circuit MAX641 qui permet de faire une régulation boost de 5V avec peu de composants autour.

Ce circuit peut être utilisé directement en mode « Low power » limité à 50mA. La datasheet du composant montre la circuiteriez des base dans ce cas :

Circuit Boost en mode « Low power » avec MAX641

Le second mode de fonctionnement possible est en mode « High output current » (1A) en ajoutant un transistor et une diode externe au montage. Là encore, la datasheet nous montre le montage de base correspondant :

Circuit Boost en mode « High output current » avec MAX641

Côté PCB, j’ai opté pour la taille la plus grande que je pouvais avoir pour le boitier que j’ai choisi :

PCB proposé pour ce circuit

Après commande du PCB sur https://jlcpcb.com et un peu de travaux mécaniques, j’en arrive à ça :

Tout les schémas et PCDD sont disponibles sur mon GitHub : https://github.com/Zcool85/Batteries-3v-5v-StepUp.

Twilight Switch – Interrupteur crépusculaire

L’objectif de ce projet est de réaliser un petit montage qui allume une LED lorsque la lumière est trop basse.

Schéma de fonctionnement d’un interrupteur crépusculaire

N’importe quel transistor bipolaire NPN peut faire l’affaire.

Le fonctionnement synthétique est le suivant :

  • Lorsque la luminosité est forte, R1 a une résistance faible. Donc la tension sur TP1 est supérieure à 0,6V. Le transistor Q1 conduit et donc Q2 ne conduit pas => La LED D1 est donc éteinte
  • A contrario, lorsque la luminosité est faible, R1 a une forte résistance. La tension sur TP1 est donc inférieure à 0,6V. Le transistor Q1 ne conduit pas, c’est donc Q2 qui conduit => La LED D1 est allumée.

Globalement, l’objectif est de trouver la bonne valeur de résistance R2 en fonction de la LDR pour déterminer le seuil de luminosité à partir duquel la LED doit s’allumer. Pour ce circuit, j’ai déterminé les valeurs de manière empirique.

Le schéma du projet est accessible sur GitHub : https://github.com/Zcool85/Twilight-Switch.

FanRegulator – Régulateur de ventilateur pour PC

Ce tout petit projet permet la régulation d’un ventilateur de PC via un potentiomètre.

Le schéma est très très simple :

NOTE : N’importe quel transistor NPN dont l’ICE tient la charge du ventilateur peut faire l’affaire.

Le schéma du projet est accessible sus GitHub : https://github.com/Zcool85/FanRegulator.

Faire clignoter une LED sur un raspberry pi

Avoir un raspberry pi c’est bien… Le faire fonctionner c’est mieux ! 😀

Comme première prise en main, je vous propose un petit montage simple permettant de faire clignoter une LED avec le Raspberry pi.

Avant de commencer, quelques petites précautions s’imposent… Je ne veux pas cramer mon raspberry ! :p Un petit tour sur les spécifications du GPIO nous apprend que :

  • Les broches du GPIO délivrent un courant de 3,3V
  • Une broche ne peut pas délivrer plus de 16 mA (intensité réglable programmatiquement entre 2 mA et 16 mA par pas de 2 mA)
  • La broche P1 (3,3V) ne délivre pas plus de 50 mA
  • De manière générale, la somme des intensités utilisés des broches du GPIO ne doit pas dépasser 50 mA.
  • Il est possible d’utiliser la broche P2 (5V), mais dans ce cas, il faut que l’alimentation du raspberry délivre au moins 700 mA + la consommation du circuit branché sur la broche

Toute ces informations sont décrites sur ce lien : http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications

Comme une broche du raspberry ne pourra pas délivrer plus de 16 mA, il est possible de brancher en directe une LED sur la broche… Mais je ne le conseil pas ! Il est toujours préférable de placer une résistance pour limiter l’intensité. Dans ce cas, il suffit d’utiliser une résistance de 3.3V / 0.01 A = 330 ohms. La diode sera alimentée par un courant de 10 mA.

Maintenant, je vais vous proposer un petit montage simple permettant d’utiliser moins d’1 mA sur une broche tout en pilotant l’allumage d’une diode. Pour ce faire, nous aurons besoin d’un transistor (2N2222 – un classique :p) et d’une résistance de plus.

Voici le schéma (les explications sont incluses dans le schéma) :

Schéma pour piloter une LED via une broche du GPIO

Schéma pour piloter une LED via une broche du GPIO

Une fois le schéma réalisé, il ne reste plus qu’à créer un petit programme pour faire clignoter la LED. Voici un exemple en python (La broche utilisée est la P11 nommée GPIO_17) :

import RPi.GPIO as GPIO
import time
# blinking function
def blink(pin):
        GPIO.output(pin,GPIO.HIGH)
        time.sleep(1)
        GPIO.output(pin,GPIO.LOW)
        time.sleep(1)
        return
# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)
# set up GPIO output channel
GPIO.setup(11, GPIO.OUT)
# blink GPIO17 50 times
for i in range(0,50):
        blink(11)
GPIO.cleanup()