Bases · 15 min de lecture

Transistor : fonctionnement, NPN, PNP et montage avec Arduino

Transistor : fonctionnement, NPN et PNP, calcul de la résistance de base, BC547, 2N2222A et TIP120 comparés, commande de moteurs et de relais avec Arduino.

Un transistor est un composant semi-conducteur à trois pattes qui utilise un petit courant pour en contrôler un beaucoup plus grand. Il a deux rôles de base : allumer et éteindre une charge comme un interrupteur électronique, et servir d'amplificateur qui grossit un signal faible. Une broche d'Arduino ne fournit sans risque qu'environ 20 mA ; c'est assez pour une LED, mais pas pour un moteur, un relais ou un ruban LED 12 V. C'est là qu'intervient le transistor : avec quelques milliampères venant de la broche, il commande des centaines de milliampères, voire plusieurs ampères.

Le transistor a été inventé en 1947 aux laboratoires Bell par John Bardeen, Walter Brattain et William Shockley ; il a remplacé les tubes électroniques et fait entrer les ordinateurs dans nos poches. Aujourd'hui, le processeur de ton téléphone contient des milliards de minuscules transistors, et l'ATmega328P, le cerveau de l'Arduino, en contient lui aussi un nombre considérable. Dans cet article, tu vas apprendre la différence entre NPN et PNP, le rôle de la base, du collecteur et de l'émetteur, le calcul de la résistance de base, la comparaison entre BC547, 2N2222A et TIP120, la commande de moteurs, relais et rubans LED avec Arduino, ESP32 et Raspberry Pi Pico, et l'identification des pattes au multimètre.

Transistor NPN S8050 et son symbole
Transistor NPN S8050 en boîtier TO-92 : face imprimée vers toi, les pattes sont de gauche à droite l'émetteur (1), la base (2) et le collecteur (3). Dans le symbole NPN à droite, la flèche de l'émetteur pointe vers l'extérieur.

Qu'est-ce qu'un transistor et comment fonctionne-t-il ?

Tu peux comparer un transistor à un robinet : il faut très peu de force pour tourner la poignée, mais beaucoup d'eau passe dans le tuyau. Dans le transistor, la poignée est le courant de base et l'eau du tuyau est le courant principal qui circule du collecteur vers l'émetteur. Le rapport entre les deux est le gain en courant du transistor, noté hFE ou β (bêta) dans les fiches techniques : IC = hFE × IB. Par exemple, si tu injectes 0,1 mA dans la base d'un BC547 dont le hFE vaut 200, jusqu'à 20 mA peuvent traverser le collecteur. Pour qu'un transistor au silicium conduise, il faut environ 0,6 à 0,7 V entre la base et l'émetteur ; c'est la tension de seuil de sa jonction, qui se comporte comme une diode. Le courant qui sort de l'émetteur est la somme des deux : IE = IC + IB.

PatteAbréviationRôleOù la brancher dans un interrupteur NPN ?
BaseBÉlectrode de commande ; le petit courant entre iciSur la broche de l'Arduino via une résistance
CollecteurCLe courant de la charge entre iciSur le moins de la charge
ÉmetteurELe courant total sort ici (IE = IC + IB)Sur GND

Différence entre transistor NPN et PNP

Les transistors bipolaires (BJT) sont formés de trois couches de semi-conducteur. Dans un transistor NPN, la fine couche P du milieu est la base ; quand la base est environ 0,7 V au-dessus de l'émetteur, le courant circule du collecteur vers l'émetteur. Dans un PNP, tout est inversé : l'émetteur est relié au plus de l'alimentation et, quand la base est tirée environ 0,7 V en dessous de l'émetteur, le courant va de l'émetteur au collecteur. Le moyen simple de retenir le symbole est la flèche de l'émetteur : sortante pour le NPN, entrante pour le PNP. Dans les projets Arduino, le NPN est bien plus courant, car l'émetteur va directement à GND et le transistor conduit quand la broche est à HIGH ; la charge se place entre le plus et le collecteur. C'est ce qu'on appelle une commutation côté bas (low-side).

CaractéristiqueNPNPNP
Flèche du symboleSort de l'émetteurEntre dans l'émetteur
L'émetteur est relié àGND (moins)Plus de l'alimentation (+)
Pour le rendre passant, la base est≈0,7 V au-dessus de l'émetteur (broche HIGH)≈0,7 V en dessous de l'émetteur (broche LOW)
Sens du courant principalDu collecteur vers l'émetteurDe l'émetteur vers le collecteur
Place de la chargeEntre le plus et le collecteur (côté bas)Entre le collecteur et GND (côté haut)
Modèles courantsBC547, S8050, 2N2222A, BC337, TIP120BC557, S8550, 2N2907A, BC327, TIP125

Régimes de fonctionnement : blocage, zone active et saturation

RégimeConditionCourant de collecteurVCEUtilisation
BlocageVBE < ≈0,6 V, pas de courant de baseQuasi nulProche de la tension d'alimentationInterrupteur OUVERT
Zone active (linéaire)VBE ≈ 0,65–0,7 V, courant de base modéréIC = hFE × IBUne valeur intermédiaireAmplificateur
SaturationIB bien supérieur à IC / hFELimité par la charge et l'alimentation0,1–0,3 V (0,8–2 V pour un Darlington)Interrupteur FERMÉ

Quand tu utilises le transistor en interrupteur, tu ne le gardes qu'à deux extrêmes : complètement bloqué ou complètement saturé. La zone active entre les deux sert aux amplificateurs et n'est pas souhaitable en commutation, car la puissance dissipée par le transistor vaut P = VCE × IC. Un 2N2222A saturé fait chuter au plus 0,3 V à 150 mA et ne produit que 45 mW de chaleur ; s'il reste à moitié ouvert au même courant et fait chuter 3 V, il dissipe 450 mW. C'est très proche de la limite de 625 mW du boîtier TO-92, et le transistor devient trop chaud pour être touché. C'est pourquoi, en commutation, on fournit toujours à la base assez de courant pour amener franchement le transistor à saturation.

Le transistor en amplificateur

Lorsqu'il travaille dans la zone active, le transistor transforme de petites variations sur la base en variations plus grandes sur le collecteur. Par exemple, pour un transistor dont le hFE vaut 200, une hausse de 10 µA du courant de base augmente le courant de collecteur de 2 mA ; sur une résistance de collecteur de 2,2 kΩ, cela représente une variation de tension de 4,4 V. Les préamplificateurs de micro, les radios et les amplificateurs audio fonctionnent sur ce principe. Le montage le plus courant est l'amplificateur à émetteur commun : un pont diviseur place la base au milieu de la zone active, une résistance d'émetteur (RE) stabilise le montage face à la température et le gain en tension vaut environ RC / RE, soit environ 10 avec 4,7 kΩ et 470 Ω. Même les micros électret contiennent un minuscule transistor (un JFET) qui renforce le signal. Dans les projets Arduino, on amplifie plutôt les signaux de capteurs avec des circuits intégrés ; pour cela, consulte Qu'est-ce qu'un amplificateur opérationnel ?. La suite de cet article se concentre sur le transistor en commutation, ce dont tu auras le plus besoin avec Arduino.

Brancher un transistor en interrupteur sur Arduino

Le montage que tu utiliseras le plus souvent est un interrupteur côté bas avec un transistor NPN. Le plus de la charge (moteur, bobine de relais, ruban LED) va au plus de l'alimentation externe, et son moins au collecteur du transistor. L'émetteur va à GND. La broche de l'Arduino se relie à la base toujours à travers une résistance ; celle-ci limite à la fois le courant tiré de la broche et le courant de base. Une résistance de 10 kΩ entre base et GND empêche le transistor de conduire tout seul pendant que la broche est flottante, au démarrage ou lors d'un reset. Dans ce montage, le transistor ne fait qu'ouvrir et fermer le chemin de la charge vers GND ; la charge peut donc fonctionner en 12 V pendant que l'Arduino reste en 5 V.

ConnexionArduino UnoESP32Raspberry Pi Pico
Broche de commande (entrée de la résistance de base)D9 (PWM) ou D7GPIO 18GP15
Résistance de rappel base–GND10 kΩ10 kΩ10 kΩ
ÉmetteurGNDGNDGND
CollecteurMoins (−) de la chargeMoins (−) de la chargeMoins (−) de la charge
Plus (+) de la chargeAlimentation externe + (ex. 12 V)Alimentation externe + (ex. 12 V)VBUS (5 V) ou alimentation externe +
Moins (−) de l'alimentation externeGND de l'Arduino (masse commune)GND de l'ESP32 (masse commune)GND du Pico (masse commune)
L'erreur la plus fréquente est d'oublier la masse commune : si le moins de l'alimentation externe n'est pas relié au GND de l'Arduino, le courant de base ne peut pas boucler son circuit et la charge ne fonctionne pas du tout. La deuxième erreur est de relier la broche à la base sans résistance ; comme la jonction base-émetteur se comporte comme une diode, la broche est presque en court-circuit et la broche comme le transistor peuvent griller. N'alimente pas un moteur ou un ruban LED par la broche 5V de l'Arduino ; utilise un adaptateur externe.

Calcul de la résistance de base : hFE et saturation

Pour choisir la résistance de base, il te faut deux données : le courant consommé par la charge (IC) et le hFE minimum indiqué dans la fiche technique du transistor. Même pour un modèle donné, le hFE varie beaucoup d'un exemplaire à l'autre, avec la température et avec le courant ; pour le BC547, il va de 110 à 800. On calcule donc avec la valeur minimale, pas la valeur typique, et on multiplie le résultat par une marge de sécurité de 2 à 10. Les formules sont : IB = (IC / hFE) × marge et RB = (Vbroche − VBE) / IB. Vbroche vaut 5 V sur l'Arduino Uno et 3,3 V sur l'ESP32 et le Pico ; VBE vaut environ 0,7 V pour un transistor classique et environ 1,4 V pour un Darlington comme le TIP120. Un raccourci courant consiste à prendre un hFE de 10 pour la saturation (bêta forcé) ; les fiches techniques donnent justement la tension de saturation dans cette condition.

  1. Détermine le courant de la charge : un relais 5 V dont la bobine fait 70 Ω consomme, d'après la loi d'Ohm, 5 / 70 ≈ 71 mA. Tu peux utiliser l'outil Loi d'Ohm pour le calcul.
  2. Choisis le transistor : 71 mA, c'est très proche de la limite de 100 mA du BC547 ; le 2N2222A, qui supporte 600 mA, est plus sûr.
  3. Calcule le courant de base : avec un bêta forcé de 10, IB = 71 / 10 ≈ 7 mA.
  4. Calcule la résistance : sur l'Uno, RB = (5 − 0,7) / 0,007 ≈ 614 Ω ; on prend la valeur normalisée supérieure, 680 Ω, et le courant de base vaut alors environ 6,3 mA.
  5. Refais le calcul pour les cartes 3,3 V : sur un ESP32 ou un Pico, RB = (3,3 − 0,7) / 0,007 ≈ 371 Ω. La valeur normalisée suivante, 390 Ω, ou la plus courante 470 Ω (environ 5,5 mA) convient ; cela reste un bêta forcé d'environ 13.
  6. Vérifie : le courant de la broche doit rester sous 20 mA, le courant maximal du transistor doit valoir au moins 1,5 fois celui de la charge et la puissance dissipée (VCE(sat) × IC ≈ 0,2 V × 71 mA ≈ 14 mW) rester bien en dessous de la limite du boîtier.
Charge (courant)Transistor conseilléArduino Uno (5 V)ESP32 / Pico (3,3 V)
Groupe de LED, buzzer (20–50 mA)BC547, S80502,2 kΩ (≈2 mA)1,2 kΩ (≈2,2 mA)
Bobine de relais 5 V (70–90 mA)2N2222A, BC337, S8050680 Ω (≈6,3 mA)470 Ω (≈5,5 mA)
Petit moteur CC, ruban LED court (0,3–1 A)TIP1201 kΩ (≈3,6 mA)470 Ω (≈4 mA)
Plus de 1,5 A (gros moteur, long ruban LED)MOSFET à niveau logiqueIRLZ44N ; 220 Ω sur la grille, 10 kΩ grille–GNDIRLB8721 ; 220 Ω sur la grille, 10 kΩ grille–GND
Ces valeurs sont un point de départ ; vérifie le courant maximal et l'ordre des pattes de ton transistor dans l'outil Brochage des transistors. Une fois le montage réalisé, mesurer la tension collecteur-émetteur au multimètre est le meilleur contrôle : si elle est inférieure à 0,3 V pour un transistor classique ou à 1,5 V pour un Darlington, le transistor est saturé.

BC547, 2N2222A et TIP120 : comparatif des transistors les plus courants

ModèleType / boîtierVCEOIC continuhFEBrochageUsage typique
BC547NPN / TO-9245 V100 mA110–800 (groupes A, B, C)C-B-ELED, buzzers, commutation de signaux
BC557PNP / TO-9245 V100 mA125–800C-B-EComplémentaire PNP du BC547, commutation côté haut
S8050NPN / TO-9225 V500 mA85–300 (selon le groupe)E-B-CKits de démarrage, modules relais
2N2222ANPN / TO-9240 V600 mA100–300 (à 150 mA)E-B-CRelais, petits moteurs, ventilateurs
BC337NPN / TO-9245 V800 mA100–630C-B-ERelais, groupes de LED, moteurs vibrants
TIP120NPN Darlington / TO-22060 V5 AAu moins 1000B-C-EMoteurs CC, rubans LED, solénoïdes

Le brochage se lit de gauche à droite, face plate imprimée vers toi et pattes vers le bas. Attention : le BC547 et le 2N2222A ont un ordre inversé (C-B-E et E-B-C) ; si tu remplaces l'un par l'autre, il faut permuter collecteur et émetteur. Les 2N2222 en boîtier métallique (TO-18) et les copies de différents fabricants peuvent avoir un autre ordre ; en cas de doute, vérifie au multimètre. Le TIP120 est un transistor Darlington : il contient deux transistors en cascade, d'où un gain d'au moins 1000, et peut être commandé directement par une broche d'Arduino à travers une résistance de 1 kΩ. La contrepartie est une chute de 1 à 2 V et la chaleur qui va avec : à 1 A, il dissipe environ 1 W, et un boîtier TO-220 sans dissipateur monte d'environ 60 °C au-dessus de la température ambiante. Les cartes de commande toutes faites sont elles aussi faites de transistors : la carte ULN2003 du moteur pas à pas 28BYJ-48 contient sept Darlington, et le module L298N deux ponts en H à transistors.

Commander un moteur CC avec Arduino : TIP120 et diode de roue libre

Réglons maintenant la vitesse d'un petit moteur à courant continu de 6 à 12 V avec un potentiomètre. La broche PWM 9 de l'Arduino est reliée à la base du TIP120 via une résistance de 1 kΩ, et le moteur se place entre le plus de l'alimentation externe et le collecteur du TIP120 ; l'émetteur va à GND. Les bornes extérieures du potentiomètre vont à 5V et GND, le curseur à A0. Une diode de roue libre (1N4007, ou la 1N5819 plus rapide) se place en inverse aux bornes du moteur : la cathode, repérée par un anneau, côté plus et l'autre extrémité côté collecteur. Le signal PWM rend le transistor passant puis bloqué des centaines de fois par seconde, et le moteur tourne plus ou moins vite selon la tension moyenne.

Arduino (C++)
1// TIP120 ile DC motor hız kontrolü / DC motor speed control with a TIP120
2const int MOTOR_PIN = 9;    // PWM pini, 1 kΩ ile TIP120 beyzine / PWM pin, to the TIP120 base via 1 kΩ
3const int POT_PIN = A0;     // potansiyometre orta ucu / potentiometer wiper
4
5void setup() {
6  pinMode(MOTOR_PIN, OUTPUT);
7  Serial.begin(9600);
8}
9
10void loop() {
11  int pot = analogRead(POT_PIN);            // 0–1023
12  int speed = map(pot, 0, 1023, 0, 255);    // PWM değerine çevir / convert to a PWM value
13  if (speed < 40) speed = 0;                // çok düşükte motor yalnızca vızıldar / too low, the motor only hums
14  analogWrite(MOTOR_PIN, speed);
15  Serial.println(speed);
16  delay(50);
17}
Diode de redressement utilisée en diode de roue libre
Diode de redressement en boîtier DO-41 (type 1N4007) : montée en inverse aux bornes d'une charge inductive, elle protège le transistor de la surtension à la coupure. La cathode est repérée par l'anneau sur le corps.
Les charges inductives comme les moteurs, relais, solénoïdes et ventilateurs restituent l'énergie stockée dans leur bobine sous forme d'un pic de tension inverse au moment où le courant est coupé (V = L × di/dt). Ce pic peut atteindre des dizaines, voire des centaines de volts ; sans diode, il claque le transistor ou fait redémarrer l'Arduino. Si tu montes la diode à l'envers, l'alimentation est court-circuitée dès que le transistor conduit. Les charges sans bobine, comme les rubans LED et les résistances, n'ont pas besoin de diode. Pour en savoir plus sur les types de diodes, lis Qu'est-ce qu'une diode ?.

Commander un relais : relais 5 V avec un 2N2222A

Les modules relais tout faits intègrent déjà ce montage : un petit transistor, une résistance de base et une diode de roue libre. Si tu utilises un relais 5 V nu, tu réalises toi-même le même circuit : la bobine du relais entre 5V et le collecteur du 2N2222A, une diode 1N4007 en inverse aux bornes de la bobine, et la broche D7 reliée à la base via 680 Ω. Le code ci-dessous colle le relais quand tu tapes 1 dans le moniteur série et le relâche quand tu tapes 0. Avant de commuter du 230 V avec les contacts du relais, lis absolument les règles de sécurité de Qu'est-ce qu'un module relais ?.

Arduino (C++)
1// 2N2222A ile 5 V röle sürme / Driving a 5 V relay with a 2N2222A
2const int RELAY_PIN = 7;    // 680 Ω ile transistör beyzine / to the transistor base via 680 Ω
3
4void setup() {
5  pinMode(RELAY_PIN, OUTPUT);
6  digitalWrite(RELAY_PIN, LOW);             // açılışta kapalı / off at startup
7  Serial.begin(9600);
8  Serial.println("1: röle açık / relay on, 0: röle kapalı / relay off");
9}
10
11void loop() {
12  if (Serial.available() > 0) {
13    char c = Serial.read();
14    if (c == '1') {
15      digitalWrite(RELAY_PIN, HIGH);        // transistör doyumda, röle çeker / transistor saturated, relay pulls in
16      Serial.println("Röle açık / relay on");
17    } else if (c == '0') {
18      digitalWrite(RELAY_PIN, LOW);         // transistör kesimde, röle bırakır / transistor cut off, relay releases
19      Serial.println("Röle kapalı / relay off");
20    }
21  }
22}

Utiliser un transistor avec l'ESP32 et le Raspberry Pi Pico

Les broches de l'ESP32 et du Pico délivrent 3,3 V, il faut donc calculer la résistance de base pour 3,3 V ; une résistance de 1 kΩ prévue pour 5 V ne fournit qu'1,9 mA à un TIP120 sous 3,3 V. L'exemple ESP32 ci-dessous fait varier en douceur la luminosité d'un ruban LED 12 V par PWM sur le GPIO 18. Un ruban 5050 à 60 LED par mètre consomme environ 1,2 A par mètre ; pour un morceau de 1 m, un TIP120 avec une résistance de base de 470 Ω suffit, mais n'oublie pas un petit dissipateur. Un ruban LED ne contient pas de bobine, donc pas besoin de diode de roue libre. Le code utilise les fonctions ledcAttach et ledcWrite de la version 3.x du cœur Arduino pour ESP32 ; l'ancienne version 2.x utilisait à la place ledcSetup et ledcAttachPin.

Arduino (C++)
1// ESP32 ile 12 V LED şerit parlaklığı (TIP120) / 12 V LED strip brightness with ESP32 (TIP120)
2const int STRIP_PIN = 18;   // 470 Ω ile TIP120 beyzine / to the TIP120 base via 470 Ω
3
4void setup() {
5  ledcAttach(STRIP_PIN, 1000, 8);   // 1 kHz, 8 bit (0–255); çekirdek 3.x / core 3.x
6}
7
8void loop() {
9  for (int d = 0; d <= 255; d++) {  // yavaşça aydınlan / fade in
10    ledcWrite(STRIP_PIN, d);
11    delay(10);
12  }
13  delay(1000);
14  for (int d = 255; d >= 0; d--) {  // yavaşça karar / fade out
15    ledcWrite(STRIP_PIN, d);
16    delay(10);
17  }
18  delay(1000);
19}

Commander un transistor depuis un Raspberry Pi Pico en MicroPython fonctionne de la même manière. Le code ci-dessous lit le capteur de température interne de la puce du Pico ; quand la température atteint 32 °C, il met en route un petit ventilateur 5 V via un transistor sur GP15, et l'arrête quand elle redescend à 29 °C. Utiliser deux seuils distincts (hystérésis) évite que le ventilateur s'allume et s'éteigne sans arrêt autour de la limite. Le ventilateur est alimenté par la broche VBUS (le 5 V de l'USB) ; pour un ventilateur d'environ 100 mA, un BC337 ou un 2N2222A avec 1 kΩ suffit, et là encore une diode se place aux bornes du ventilateur. La température de la puce est supérieure de quelques degrés à l'ambiante ; dans un vrai projet, un capteur comme le DS18B20 est plus précis.

MicroPython
1# Pico yonga sıcaklığına göre fan / Fan controlled by the Pico's chip temperature
2from machine import Pin, ADC
3import time
4
5fan = Pin(15, Pin.OUT, value=0)   # 1 kΩ ile transistör beyzine / to the transistor base via 1 kΩ
6sensor = ADC(4)                   # yonga içi sıcaklık sensörü / on-chip temperature sensor
7ON_C, OFF_C = 32, 29              # açma ve kapama eşikleri / switch-on and switch-off thresholds
8
9while True:
10    v = sensor.read_u16() * 3.3 / 65535
11    temp = 27 - (v - 0.706) / 0.001721       # RP2040 veri sayfası formülü / RP2040 datasheet formula
12    if temp >= ON_C:
13        fan.value(1)                         # transistör iletimde, fan döner / transistor on, fan spins
14    elif temp <= OFF_C:
15        fan.value(0)                         # transistör kesimde, fan durur / transistor off, fan stops
16    print("{:.1f} C, fan: {}".format(temp, fan.value()))
17    time.sleep(1)

Identifier les pattes d'un transistor au multimètre

  1. Sors le transistor du circuit et place le multimètre en mode test de diode (symbole de la diode).
  2. Garde la pointe rouge sur une patte et touche les deux autres, l'une après l'autre, avec la pointe noire. Si les deux mesures sont comprises entre 0,5 et 0,8 V, la patte sous la pointe rouge est la base et le transistor est un NPN.
  3. Si tu ne trouves pas une telle patte, inverse les pointes : si, la pointe noire restant sur une patte, les deux autres affichent 0,5 à 0,8 V, cette patte est la base et le transistor est un PNP.
  4. Compare les valeurs entre la base et les deux autres pattes : la légèrement plus élevée (par exemple 0,65 V contre 0,62 V) correspond à l'émetteur, la plus basse au collecteur. Si l'écart est infime, fie-toi à la fiche technique.
  5. Entre collecteur et émetteur, tu dois lire OL (circuit ouvert) dans les deux sens ; le sens inverse des mesures de base doit aussi afficher OL.
  6. Si ton multimètre possède un support hFE, insère le transistor dans l'emplacement NPN ou PNP selon le brochage trouvé ; l'écran affiche le gain en courant.

Dans les transistors Darlington comme le TIP120, il y a deux jonctions et des résistances internes (environ 8 kΩ et 120 Ω) entre la base et l'émetteur, donc les mesures ne suivent pas cette règle ; vérifie le brochage dans la fiche technique. Si tu lis une valeur proche de zéro entre collecteur et émetteur dans les deux sens, le transistor est en court-circuit ; si la base n'affiche rien vers les autres pattes dans aucun sens, une jonction interne est coupée. Pour bien connaître les calibres du multimètre, jette un œil à Comment utiliser un multimètre.

Idées de projets avec des transistors

  • Veilleuse automatique : quand une photorésistance (LDR) détecte l'obscurité, allume un ruban LED 12 V avec un TIP120.
  • Ventilateur intelligent : plus la température mesurée par un DHT11 monte, plus tu augmentes la vitesse du ventilateur avec la PWM et un transistor.
  • Arrosage automatique : quand un capteur d'humidité du sol détecte une terre sèche, fais tourner une petite pompe à eau via un transistor.
  • Serrure à code : quand le bon code est saisi sur un clavier matriciel, ouvre une serrure à solénoïde 12 V avec un TIP120 et une diode.
  • Alerte silencieuse : commande un moteur vibrant avec un BC337 pour fabriquer un petit appareil d'alerte à porter sur soi.
  • Alarme puissante : quand un capteur PIR détecte un mouvement, fais retentir via un transistor une sirène 12 V qu'une broche d'Arduino ne pourrait pas piloter seule.

Erreurs fréquentes et solutions

SymptômeCause probableSolution
La charge ne fonctionne pas du toutPas de masse commune ou pattes inverséesRelie les moins des alimentations et vérifie le brochage
Le transistor chauffe beaucoupIl ne sature pas (courant de base trop faible) ou son courant maximal est dépasséDiminue la résistance de base, choisis un transistor plus puissant ou un MOSFET
L'Arduino redémarre ou le transistor grille à l'arrêt du moteurPas de diode de roue libreMonte une 1N4007 ou une 1N5819 en inverse aux bornes de la charge, anneau côté plus
La charge fonctionne même broche à LOWTransistor grillé (court-circuit C-E) ou base en l'airTeste le transistor au multimètre et ajoute 10 kΩ entre base et GND
Le transistor PNP ne se bloque jamaisL'émetteur est à 12 V alors que la broche ne fournit que 5 V au maximumCommande la base du PNP avec un NPN, ou commute la charge côté bas avec un NPN
La broche de l'Arduino est abîméeLa broche a été reliée directement à la base sans résistanceUtilise toujours une résistance de base et garde le courant de la broche sous 20 mA
Avec l'ESP32 ou le Pico, la charge fonctionne faiblementRésistance calculée pour 5 V ou MOSFET pas complètement passant à 3,3 VCalcule la résistance de base pour 3,3 V et choisis un MOSFET compatible 3,3 V
Si la charge dépasse 1,5 A ou si le transistor chauffe malgré un dissipateur, un MOSFET à niveau logique chauffe beaucoup moins, car il est commandé en tension et non en courant, et presque aucune tension ne chute à ses bornes. Pour le câblage et le choix, lis Utiliser un MOSFET avec Arduino.

Le transistor est la clé pour piloter de grosses charges avec un petit signal, autrement dit pour relier ton Arduino au monde réel. Une fois le calcul de la résistance de base, la masse commune et la diode de roue libre bien assimilés, les moteurs, les pompes et les rubans LED n'auront plus rien d'intimidant. Dans l'application BlueGrays, tu peux suivre pas à pas, avec schémas et code, des projets comme une veilleuse à LDR, un buzzer, la variation de LED en PWM, un moteur pas à pas et la commande d'une lampe 230 V.

Questions fréquentes

À quoi sert un transistor ?

Un transistor remplit deux fonctions de base : il sert d'interrupteur électronique qui allume et éteint un courant important à l'aide d'un petit courant, et d'amplificateur qui renforce un signal faible. Dans les projets Arduino, il sert surtout à commander des charges qu'une broche ne peut pas piloter seule, comme des moteurs, relais, ventilateurs et rubans LED.

Quelle est la différence entre un transistor NPN et PNP ?

Dans un NPN, l'émetteur est relié à GND et le transistor conduit quand la base est environ 0,7 V au-dessus de l'émetteur ; le courant va du collecteur vers l'émetteur. Dans un PNP, l'émetteur est relié au plus et le transistor conduit quand la base est tirée 0,7 V en dessous de l'émetteur. Pour commuter une charge côté GND avec Arduino, le NPN est plus simple.

Comment reconnaître les pattes d'un transistor ?

Le plus fiable est la fiche technique : face imprimée vers toi, de gauche à droite, l'ordre est C-B-E pour le BC547, E-B-C pour le 2N2222A et B-C-E pour le TIP120. Sans fiche technique, tu trouves la base et le type avec le test de diode du multimètre, et tu reconnais l'émetteur car la mesure base-émetteur est légèrement plus élevée que la mesure base-collecteur.

Quel transistor utiliser avec Arduino ?

Pour des charges jusqu'à 50 mA comme des LED et des buzzers, un BC547 suffit. Pour des bobines de relais 5 V (70 à 90 mA) et de petits moteurs jusqu'à 500 mA, prends un 2N2222A ou un BC337, et pour des moteurs et rubans LED autour de 1 A, un TIP120. Au-delà, un MOSFET à niveau logique chauffe moins.

Quelle valeur pour la résistance de base d'un transistor ?

La résistance de base se calcule avec RB = (Vbroche − VBE) / IB ; pour un transistor classique, un dixième du courant de la charge est un bon point de départ pour IB. Avec un Arduino Uno, les valeurs typiques sont 680 Ω pour un relais 5 V, 2,2 kΩ pour des charges de 20 à 50 mA comme des LED et des buzzers, et 1 kΩ pour un TIP120.

Pourquoi mon transistor chauffe-t-il ?

La chaleur produite par un transistor vaut P = VCE × IC. Si le courant de base est trop faible, le transistor ne sature pas, plusieurs volts restent à ses bornes et il chauffe ; c'est la même chose si le courant de la charge dépasse son maximum. Diminue la résistance de base, choisis un transistor plus puissant ou un MOSFET, et ajoute un dissipateur au-delà de 1 A.

Voir tous les projets
Veilleuse avec LDR
#12Débutant

Veilleuse avec LDR

Projet de veilleuse à base de LDR qui allume automatiquement la LED lorsque l'environnement s'assombrit. Enseigne la logique de contrôle automatique avec la comparaison des valeurs seuils analogiques.

4.8(100)
165
Utilisation du buzzer
#13Débutant

Utilisation du buzzer

Projet de base qui utilise un buzzer pour émettre un son à une certaine fréquence et à certains intervalles. Il enseigne l'utilisation des fonctions tone() et noTone().

4.7(88)
151
ESP32 LED Fade avec PWM
#110Débutant
Premium

ESP32 LED Fade avec PWM

Modifiez la luminosité de la LED en douceur de 0 à max, de max à 0. Nous contrôlons le PWM avec analogWrite() comme dans Arduino - la même syntaxe avec ESP32 Arduino Core 3.0+ fonctionne sans problème. La définition du pin + pinMode + analogWrite est suffisante.

4.8(36)
54
Raspberry Pi Pico PWM LED Fade (Effet Respiration, GP14)
#160Débutant
Premium

Raspberry Pi Pico PWM LED Fade (Effet Respiration, GP14)

La LED ne clignote plus — elle respire ! 🌬️ Grâce au **PWM** (modulation de largeur d'impulsion) du Raspberry Pi Pico, la luminosité monte puis descend lentement. Apprends la classe machine.PWM, duty_u16() (luminosité 16 bits 0–65535), la fréquence PWM, les boucles range() et la sortie quasi analogique. Base du mélange de couleurs RGB, du contrôle moteur, des servos et du buzzer.

0.0(0)
4
Utilisation du moteur pas à pas
#67Intermédiaire
Premium

Utilisation du moteur pas à pas

Projet de base qui fait tourner le moteur pas à pas 28BYJ-48 dans le sens des aiguilles d'une montre et dans le sens inverse des aiguilles d'une montre avec la carte de pilotage ULN2003A. Enseigne le

4.5(31)
41
Ampoule 220V avec bouton poussoir (Push)
#19Avancé
Premium

Ampoule 220V avec bouton poussoir (Push)

Projet qui contrôle une ampoule de 220V avec un bouton poussoir en utilisant un module relais. Enseigne les bases de la commutation haute tension à l'aide d'un relais.

4.4(30)
38
Station d'irrigation intelligente
#83Avancé
Premium

Station d'irrigation intelligente

Système autonome d'irrigation des plantes qui fonctionne 24/7 sans fatiguer Arduino avec deux batteries 18650 et un régulateur LM2596. Il gère automatiquement le moteur d'arrosage en mesurant en perma

5.0(42)
57
Éclairage Intelligent ESP32 (PIR + LDR + Relais + OLED)
#141Avancé
Premium

Éclairage Intelligent ESP32 (PIR + LDR + Relais + OLED)

Transformez votre couloir, votre salle de bain ou votre garde-manger en éclairage intelligent avec l'ESP32 ! En utilisant un capteur de mouvement PIR, un capteur de lumière LDR et un module relais, nous construisons le scénario classique "la lumière s'allume lorsqu'un mouvement est détecté dans l'obscurité" — si l'environnement est déjà lumineux, le mouvement N'ACTIVE PAS la lumière, économisant ainsi de l'énergie pendant la journée. La lumière reste allumée pendant 30 secondes ; si le mouvement

4.3(6)
11