” Simulation d’un flash photographique ”
. Objectif
L’objectif de cette activité est de simuler le flash d’un appareil-photo à l’aide d’une diode électroluminescente (DEL) blanche dans le circuit de décharge d’un condensateur selon le circuit suivant :
Dans ce circuit, quand l’interrupteur est en position 1, le condensateur se charge à travers la résistance R et quand l’interrupteur est en position 2, le condensateur se décharge dans la résistance R’ et la DEL.
Pour simuler un flash, la DEL doit éclairer pendant une courte durée. La constante de temps du circuit de décharge doit donc être petite.
On prendra :
. R= 1 kΩ, R’ = 100 Ω, C= 470 µF
. E = 5 V (Vcc Arduino)
. DEL blanche (tension de seuil = 2,5 V)
La constante de temps du circuit de décharge est alors :
τ = R C = 100 x 470.10-6 = 47 mS
On utilisera un relais électromécanique, par exemple le SRS-06VDC-SL, pour jouer le rôle de l’interrupteur.
. Les relais
Un relais électromécanique, c’est un interrupteur commandé par un électroaimant. On l’utilise généralement pour isoler un circuit de commande (qui actionne l’électroaimant) d’un circuit de puissance (qui est contrôlé par l’interrupteur)
Le type de relais le plus simple est le relais SPST (« Single pole single throw »). Il est muni de 4 connecteurs : 2 connecteurs pour le contrôle de l’électroaimant, et deux connecteurs reliés à l’interrupteur.
L’interrupteur bloque le courant du circuit de puissance si aucun courant ne circule dans l’électroaimant, et laisse circuler le courant si un courant circule dans l’électroaimant (on entend un petit « clic » lorsque l’interrupteur change d’état).
Par exemple, le relais Grove 103020005 est un relais SPST qui agit comme un interrupteur normalement ouvert :
Il permet de commuter des charges plus élevées que ce que permettent les cartes Arduino. En effet, avec un relais, il est possible par exemple de contrôler un moteur fonctionnant sous 9 V continu.
Ce module est alimenté en 5V par l’Arduino et se raccorde (broche « Signal ») sur une sortie digitale, comme dans le circuit suivant :
Avec ce circuit, quand la sortie digitale 2 de l’Arduino est à un niveau bas, le relais agit comme un interrupteur ouvert, le circuit du moteur est donc ouvert et le moteur ne tourne pas. Au contraire, quand la sortie digitale 2 est à un niveau haut, le relais fait contact, la DEL du module s’allume, le circuit du moteur est fermé et le moteur tourne.
C’est avec le bouton poussoir qu’on donnera l’ordre à l’Arduino d’allumer ou d’éteindre le moteur :
– bouton appuyé : le moteur tourne (sortie digitale 2 à HIGH)
– bouton relâché : le moteur est arrêté (sortie digitale 2 à LOW)
Voici le code permettant de contrôler un relais Grove avec un bouton poussoir :
Déroulement du programme :
– 1. Déclaration des constantes et variables :
. const int buttonPin = 12 (broche du bouton poussoir)
. const int relayPin = 2 (broche du relais)
– 2. Initialisation des entrées et sorties :
. Initialisation de la broche du relais en sortie,
. Initialisation de la broche du bouton poussoir en entrée.
– 3. Fonction principale en boucle :
. Lecture de l’état logique de la broche du bouton poussoir
. Mise à jour de la valeur de la broche du relais en fonction de la valeur de la broche du bouton poussoir :
– bouton appuyé (buttonState =1) : broche du relais à HIGH
– bouton relâché (buttonState =0) : broche du relais à LOW
Cependant un relais SPST n’est pas adapté à notre activité. Nous allons plutôt utiliser un relais SPDT (« Single pole double throw »)
Dans ce type de relais, l’interrupteur est remplacé par un commutateur. Le relais comporte maintenant 5 connecteurs : en plus des deux connecteurs reliés à l’électroaimant, il y a un connecteur « COM » (commun), un connecteur « NC » (normally closed) et un connecteur « NO » (normally open).
En absence ou en présence de courant circulant dans l’électroaimant, le connecteur COM est en contact avec le connecteur NC ou le connecteur NO.
Voici le schéma de câblage du relais SRS-06VDC-SL que nous allons utiliser (vue de dessous en absence de courant dans la bobine) :
Contrairement au module Relais Grove, qui dispose déjà de son circuit de contrôle pour faire circuler ou pas un courant dans la bobine de commutation en fonction de la tension appliquée sur la broche ”Signal”, le relais SRS-06VDC-SL, lui n’en dispose pas.
Il faut donc ajouter un circuit de contrôle à notre relais pour commuter de la position NC à NO. Pour cela, nous allons utiliser un transistor bipolaire NPN (BC547B) en mode interrupteur commandé avec le circuit suivant :
Les transistors bipolaires (BJT pour Bipolar Junction Transistor) sont des composants à trois broches, sur lesquelles on peut appliquer une tension électrique. Les trois broches portent les noms suivants: Collecteur, Base et Émetteur.
On distingue deux types de transistors bipolaires : les transistors NPN et les transistors PNP.
Il existe une tension entre chaque paire de broche, ainsi qu’un courant qui passe dans chaque broche. Cela fait en tout trois tensions notées VCE, VCB, VBE et trois courants notés IC, IB et IE.
Ceux-ci sont reliés par les équations suivantes :
VCE = VCB + VBE
IE = IB + IC
On peut considérer, à quelques détails près, qu’un transistor est composé de deux diodes mises en série dans des sens opposés :
Le fonctionnement d’un transistor bipolaire NPN en interrupteur commandé consiste à activer la base, pour qu’elle permette au courant présent dans le collecteur de s’écouler jusqu’à l’émetteur.
Quand le courant de base est nul, le transistor est bloqué :
VBE = 0 –> Ic = IE = 0
Il est équivalent à un interrupteur ouvert :
Quand le courant de la base est suffisant, le transistor est saturé :
. VBE = 0,7 V (tension de seuil de la diode base-émetteur), le transistor est alors passant.
. Pour être saturé, il faut que : Ib > Ic/β où β est le gain en courant du transistor (Ib x β = Ic), aussi souvent appelé Hfe dans les fiches techniques des constructeurs.
Le transistor est alors équivalent à un interrupteur fermé :
La résistance de la base doit être calculée pour avoir un courant Ib suffisant.
Avec le circuit de contrôle pour notre relais, on peut calculer la résistance de la base. En premier il faut déterminer le courant Ic :
Ic = Ubobine relais / Rbobine relais
. Rbobine = 120 Ω
. Ubobine = 5 – Vce sat
(La tension Vce sat est proche de 0 V mais pas nulle. Vce sat ≈ 0,2 V)
Donc : Ic = 4,8 / 120 = 0,04 A = 40 mA
Le courant de la base Ib doit être suffisant pour saturer le transistor:
Ib > Ic / β
D’après la documentation du constructeur du transistor BC547B, β est au moins égal à 200 :
Il faut donc : Ib min = 40 / 200 = 0,2 mA
Connaissant Ib, il est maintenant possible de calculer Rb :
Rb = URb / Ib
VBE + URb = 5 V avec VBE = 0.7 V (tension de seuil de la diode)
Donc : URb = 5 – Vbe = 5 – 0,7 = 4,3 V
Rb = 4,3 / 0,2.10-3 = 21 500 Ω = 21,5 kΩ
La résistance de la base doit donc être au maximum égale à 21,5 kΩ pour que le courant ib soit au minimum de 0,2mA.
Dans notre circuit de contrôle du relais, la résistance Rb utilisée étant de 2,2 kΩ, le courant ib est alors d’environ 2 mA.
Nous sommes donc assurés de saturer le transistor quand une sortie digitale de l’Arduino reliée à Rb est à un niveau haut (5V) et ceci sans danger pour la sortie de l’Arduino (rappel : I max sortie = 20 mA), selon le circuit suivant :
Avec le même programme que pour le contrôle du relais Grove, il est possible de contrôler le relais SRS-06VDC-SL :
– bouton appuyé :
–> Sortie digitale 2 à HIGH
–> Le transistor est saturé
–> Un courant circule dans la bobine du relais
–> Le relais commute en position NO
– bouton relâché :
–> Sortie digitale 2 à LOW
–> Le transistor est bloqué
–> Aucun courant dans la bobine du relais
–> Le relais commute en position NC
Exemple d’application :
Le circuit suivant permet d’allumer la DEL rouge ou la DEL verte avec un bouton poussoir et le programme de contrôle d’un relais :
– bouton relâché : La DEL rouge est allumée et la DEL verte est éteinte,
– bouton appuyé : La DEL verte est allumée et la DEL rouge est éteinte.
Le circuit de puissance est alors (relais vu de dessous) :
Avec R = 220 Ω
En transposant cet exemple à notre circuit de simulation de flash, le circuit de puissance devient :
Ainsi en l’absence de courant dans la bobine de l’électroaimant, le condensateur se charge à travers la résistance R et quand un courant circule dans la bobine, le condensateur se décharge dans R’ et la DEL.
Le circuit de l’activité est alors :
. Liste des composants
. 1 condensateur de 470 µF (C chimique : attention à la polarité)
. 1 résistance de 10 kΩ (résistance du bouton poussoir)
. 1 bouton poussoir
. 1 transistor bipolaire NPN (BC547B)
. 1 résistance de 2,2 kΩ (résistance du transistor)
. 1 relais SRS-06VDC-SL
. 1 résistance de 1 kΩ (résistance de charge du condensateur)
. 1 résistance de 100 Ω (résistance de décharge du condensateur)
. 1 DEL blanche
. Le programme
Voici le code de l’activité :
Déroulement du programme :
– 1. Déclaration des constantes et variables :
. const int PinUC = 0 (broche A0 du condensateur)
. const int buttonPin = 12 (broche du bouton poussoir)
. const int PinRelay = 2 (broche du relais)
. int ValPinUc = 0 (variable nombre entier pour stocker la valeur de la broche du condensateur)
. float Uc = 0.0 (variable nombre décimal pour stocker le résultat du calcul de la tension Uc)
. int StateHigh = 0 (variable nombre entier indiquant si la broche du relais est à l’état haut )
. int StateLow = 0 (variable nombre entier indiquant si la broche du relais est à l’état bas)
. int ValButton = 0 (variable nombre entier pour stocker la valeur de la broche du bouton poussoir)
– 2. Initialisation des entrées et sorties :
. Initialisation de la broche du relais en sortie,
. Initialisation de la broche du bouton poussoir en entrée,
. Charge du condensateur.
– 3. Fonction principale en boucle :
Résultats dans le moniteur série
Remarque :
On peut voir, dans le moniteur série, que le condensateur se décharge jusqu’à atteindre la tension de seuil de la DEL blanche (environ 2,5 V).
En effet, quand la tension aux bornes de la DEL est inférieure à la tension de seuil, la diode n’est plus passante, l’intensité dans le circuit est nulle et le condensateur ne se décharge plus.