====== Réalisation : Variateur 12 V ======
Page non-finie, mais lisez quand même !!
===== I - Introduction =====
Cette mini-réalisation est faite pour voir (ou revoir) une application du PWM dans un cas concret : \\
Nous allons créer un **variateur** c'est à dire un circuit permettant d'alimenter un dipôle de puissance (lampe, moteur à courant continu) avec une tension variable par hacheur (PWM). \\
=== Mise en situation ===
* Le variateur sera commandé par deux boutons poussoirs, un permettant d'augmenter la tension (UP) et un permettant de la diminuer (DOWN)
* On va créer un variateur pouvant commander un dipôle consommant **0.5A**, mais il est possible de commander de plus grand (en modifiant les transistors et avec des dissipateurs)
**Il faudra donc faire attention** à la température des transistors qui pourraient griller !
=== Qui est qui ? ===
== les entrées ==
* On dira que la pin digitale 1 est connectée à UP
* De même pour la pin 2 qui sera connectée à DOWN
== les sorties ==
* Il n'y en a qu'une, il faudra que cette pin de sortie **soit équipée du PWM** , dans mon exemple je prendrais la pin digitale 3, mais il **faudra vérifier**... cela dépend du modèle de carte que vous utilisez.
===== II - Ressources Électronique =====
==== A/ Un problème de conversion de puissance ====
Bien sûr, **l'Arduino** ne peut pas délivrer plus de **30mA**, il faudra qu'elle demande assistance à un collègue costaud, j'ai nommé le **transistor de puissance** ! \\
Pour cela, il faudra le connecter en sortie de l'arduino, sur la patte qui délivrera le pas de PWM, avec quelques précautions (résistance protectrice de 10K par exemple).
**Bon à savoir : ** le PWM n'est pas continu... il est composé de créneaux d'une fréquence environ égale à 500Hz, pour ce montage, cela ne pose pas de problème car :
- Le __moteur à courant continu__ est un **dipôle inductif**, un bon vieux circuit RL, ayant pour propriété de lisser la tension quand il est en série.
- L'__ampoule à incandescence__ quant à elle n'est **pas affectée** par ces phénomènes de fréquence relativement haute (il est impossible de les voir à l’œil nu : c'est l'intensité lumineuse moyenne qu'on perçoit)
Si l'on veut lisser **le courant**, on pourra utiliser un circuit RC mais c'est inutile ici...
==== B/ Le montage Darlington ====
Afin de pouvoir alimenter votre moteur CC, il faut utiliser un montage amplificateur qui permet de travailler avec des courants assez élevés. Je vous propose donc d'utiliser ... \\ \\
** Le montage Darlington !!! ** 8-)
{{:start:projet:arduino:darlington_configuration.png |}}
\\ \\
Ce montage est composé de 2 transistors : \\
* T1 est un **petit transistor** qui est doté d'un grand gain mais il ne peut supporter une grande charge...
* T2 est un **GRAND transistor** qui est pourvu d'un petit gain mais il peut supporter des grandes intensités.
Bref, en combinant les deux, on obtient un transistor équivalent qui dispose d'un **GRAND gain** et qui peut supporter **une GRANDE intensité** en bref, qui peut alimenter un **moteur CC** !!
\\
\\
On ajoutera néanmoins une résistance en amont de la base pour protéger votre Arduino adorée ;-)
==== C/ Schéma électronique ====
{{ :start:projet:arduino:schema_variateur.jpg |}}
On prendra T1 (le transistor faible) qui est un BC547.
\\
** Brochage : **
{{ :start:projet:arduino:bc_547b_brochage.png |}}
On prendra T2 (le transistor fort) qui est un BUT11A.
\\
** Brochage : **
{{ :start:projet:arduino:but_11_a.png |}}
===== III - Programmation =====
// Vu que je n'ai pas encore testé ce programme faute de boutons-poussoirs (honte à moi !) je mets ici un programme alternatif n'ayant pas de boutons poussoirs... //
**NB**: j'ai prévu trois sorties pour LEDS pour me faire pardonner^^
int sortie = 3;
int rouge = 8;
int jaune = 9;
int vert = 10;
void setup () {
pinMode(sortie, OUTPUT);
pinMode(rouge, OUTPUT);
pinMode(jaune, OUTPUT);
pinMode(vert, OUTPUT);
}
void loop () {
digitalWrite( rouge, LOW);
int i = 10;
while ( i<50) {
analogWrite( sortie, i*5);
i++;
if( i < 20) {
digitalWrite( vert, HIGH); }
if( (i>20)&&(i<30)){
digitalWrite( vert, LOW);
digitalWrite( jaune, HIGH);
}
if(i>30) {
digitalWrite( jaune,LOW);
digitalWrite( rouge, HIGH);
}
delay(1000);
}
}