⚙️Focus Matière

Microcontrôleur SI : les pièges à éviter pour réussir

20 octobre 2026 8 min de lecture

Tu branches ton capteur, tu téléverses ton programme, et… rien ne se passe. Ou pire : ton moteur tourne à fond alors que tu voulais juste un petit mouvement. Ça t'est déjà arrivé en TP de SI ? Pas de panique : les erreurs sur le microcontrôleur SI sont les plus fréquentes en Sciences de l'Ingénieur, et elles se corrigent toutes avec un peu de méthode. Dans cet article, on passe en revue les pièges classiques — du câblage à la programmation — et on te donne les réflexes qui font la différence le jour de l'épreuve.

Rappel express : c'est quoi un microcontrôleur, et où il se situe dans la chaîne d'information ?

Un microcontrôleur est un composant électronique programmable qui regroupe, sur une seule puce : un processeur, de la mémoire (pour stocker le programme et les variables) et des entrées/sorties (E/S) pour dialoguer avec le monde extérieur. En SI, on le place au cœur de la chaîne d'information, cette partie du système qui acquiert, traite et communique les informations. À ne pas confondre avec la chaîne d'énergie, qui alimente, distribue, convertit et transmet l'énergie — c'est elle qui fait tourner un moteur, allumer une LED de puissance, etc.

Sur une carte de type Arduino microcontrôleur (la plus utilisée en lycée), on retrouve :

  • des entrées/sorties numériques : elles ne lisent ou n'écrivent que deux états, 0 (0 V) ou 1 (5 V ou 3,3 V selon la carte) ;
  • des entrées analogiques reliées à un convertisseur analogique-numérique (CAN) : il transforme une tension continue (par exemple 0–5 V) en un nombre entier exploitable par le programme ;
  • des sorties PWM (Pulse Width Modulation, ou modulation de largeur d'impulsion) : elles font clignoter très vite une sortie numérique pour simuler une tension moyenne variable. Utile pour faire varier la vitesse d'un moteur ou la luminosité d'une LED.

Bien situer le microcontrôleur dans cette architecture, c'est déjà éviter la moitié des pièges. Pour revoir la structure complète d'un système, jette un œil à https://www.allosi.fr/systemes.

Les 7 pièges classiques sur le microcontrôleur en SI

Piège n°1 : confondre entrée et sortie (et numérique / analogique)

Une entrée reçoit une information venant du monde extérieur (un bouton, un capteur de température, un capteur de fin de course). Une sortie envoie une information vers le monde extérieur (un afficheur, un buzzer, une LED, un module de puissance). Le piège, c'est de croire qu'une broche est « spéciale entrée » ou « spéciale sortie » : sur la plupart des microcontrôleurs modernes, une même broche peut faire les deux, mais il faut la configurer dans le programme (avec pinMode sur Arduino). Si tu oublies cette étape, la broche reste en entrée par défaut et ton actionneur ne reçoit rien.

Deuxième niveau du piège : numérique vs analogique. Un capteur tout-ou-rien (fin de course, bouton poussoir) se lit en numérique. Un capteur qui délivre une tension proportionnelle à une grandeur physique (potentiomètre, sonde de température analogique) doit être lu sur une entrée analogique, donc via le CAN. Brancher un capteur analogique sur une entrée numérique ne donnera jamais une valeur exploitable.

Piège n°2 : oublier la résistance de tirage (pull-up / pull-down)

Un bouton poussoir laissé « en l'air » sur une entrée numérique peut lire 0 ou 1 de façon aléatoire : c'est le phénomène de flottement. La solution : ajouter une résistance de tirage au plus (pull-up, ramène la broche à 1) ou tirage au moins (pull-down, ramène la broche à 0). La plupart des microcontrôleurs proposent des pull-up internes activables par logiciel — un réflexe à connaître pour ne pas t'arracher les cheveux en TP.

Piège n°3 : croire que la sortie du microcontrôleur peut alimenter n'importe quoi

Une sortie numérique délivre typiquement quelques milliampères (mA), souvent 20 mA max par broche. Un moteur, un relais, un ruban de LED de puissance demandent beaucoup plus. Il te faut alors un étage de puissance : transistor (bipolaire ou MOSFET), driver de moteur (type L298N, L293D), relais ou module à triac. Autrement dit, le microcontrôleur commande l'énergie, il ne la fournit pas. C'est exactement la frontière entre chaîne d'information et chaîne d'énergie.

Piège n°4 : mal comprendre le CAN et la résolution

Le convertisseur analogique-numérique transforme une tension en un entier. Sur un CAN 10 bits (cas classique d'Arduino Uno), la plage de mesure est découpée en 2^10 = 1024 valeurs, codées de 0 à 1023. Si la tension de référence est 5 V, chaque incrément vaut environ 4,9 mV. Deux erreurs fréquentes :

  • croire qu'une lecture analogique renvoie directement une tension en volts — non, elle renvoie un entier qu'il faut convertir ;
  • oublier que la résolution limite la précision : un CAN 10 bits ne verra jamais une variation de 1 mV.

Réflexe utile : écris toujours la relation de conversion dans ton compte rendu, du type U = N × Uref / 1023. Tu montres au correcteur que tu maîtrises la chaîne d'acquisition.

Piège n°5 : le PWM n'est pas une vraie tension analogique

Le PWM ne sort pas une tension continue variable : il sort un créneau qui alterne très vite entre 0 V et Vcc, avec un rapport cyclique (pourcentage du temps passé à l'état haut). Le moteur ou la LED « voient » une tension moyenne égale à Vcc × rapport cyclique. C'est parfait pour faire varier une vitesse ou une luminosité, mais ça ne remplace pas un vrai signal analogique pour, par exemple, générer une consigne précise pour un asservissement. Confondre les deux, c'est se tromper sur la nature du signal de commande.

Piège n°6 : croire que le programme s'exécute une seule fois

Sur Arduino, la fonction loop() est exécutée en boucle infinie, du début à la fin, sans arrêt, tant que la carte est alimentée. Beaucoup d'élèves écrivent leur logique comme si elle s'exécutait une seule fois (comme setup()). Résultat : le programme « part dans tous les sens ». Pense toujours : « à chaque tour de boucle, qu'est-ce que je lis, qu'est-ce que je calcule, qu'est-ce que j'écris ? ».

Piège n°7 : oublier les temps d'attente bloquants

Utiliser delay(1000) bloque tout le programme pendant une seconde. Si tu as plusieurs tâches à gérer (lire un capteur, gérer un affichage, surveiller un bouton), tu vas rater des événements. La bonne pratique : raisonner en temps réel non bloquant, en comparant par exemple la fonction millis() à une échéance mémorisée. C'est un peu plus technique, mais c'est exactement ce qu'attend le programme de SI quand on parle de systèmes embarqués.

Étape par étape : comment analyser un montage à microcontrôleur sans se tromper

Voici la méthode que tu peux appliquer à chaque TP, du plus simple (allumer une LED quand un bouton est pressé) au plus complexe (asservir la vitesse d'un moteur de robot).

  1. Identifier les fonctions du système. Reprends l'analyse fonctionnelle : quelle est la fonction principale ? Quelles sont les fonctions contraintes ? Cela te dit ce que doit faire le système.
  2. Répartir les blocs entre chaîne d'information et chaîne d'énergie. Le capteur et le microcontrôleur sont côté information ; le moteur, le relais, la batterie côté énergie. Les interfaces (driver, transistor) font le pont.
  3. Lister les entrées et les sorties du microcontrôleur. Pour chaque entrée : nature du signal (numérique ou analogique), plage de tension, présence d'une résistance de tirage. Pour chaque sortie : courant demandé, besoin ou non d'un étage de puissance, PWM ou tout-ou-rien.
  4. Écrire l'algorithme avant le code. Sous forme de pseudo-code ou d'organigramme : initialisation, puis boucle de lecture → traitement → commande. C'est exactement la structure setup() / loop().
  5. Convertir les grandeurs physiques. Une lecture CAN de 512 sur un CAN 10 bits avec Uref = 5 V correspond à U = 512 × 5 / 1023 ≈ 2,50 V. Puis, si le capteur a une sensibilité de 10 mV/°C, tu remontes à la température. Chaque conversion doit être justifiée.
  6. Tester par étapes. D'abord vérifier qu'une LED clignote, puis qu'un bouton est lu, puis que le moteur réagit. Ne jamais empiler tout d'un coup.

Cette démarche est exactement celle qu'on attend dans un compte rendu de SI. Pour t'entraîner sur des cas concrets, tu peux t'appuyer sur https://www.allosi.fr/simulateurs et https://www.allosi.fr/exercices.

Exemple concret : le store automatisé

Imagine un store automatisé qui se ferme quand le soleil tape trop fort. Voici comment le microcontrôleur s'insère dans le système :

  • Chaîne d'information : une photorésistance (capteur de luminosité) délivre une tension proportionnelle à l'éclairement. Cette tension est lue par le CAN du microcontrôleur. Le programme compare la valeur à un seuil (par exemple 700 sur 1023).
  • Traitement : si la luminosité dépasse le seuil pendant plus de 5 secondes (pour éviter les nuages passagers), le microcontrôleur décide de fermer le store.
  • Chaîne d'énergie : le microcontrôleur ne peut pas alimenter directement le moteur du store. Il envoie un signal à un driver (par exemple un pont en H), qui reçoit l'énergie de l'alimentation et la distribue au moteur dans le bon sens.
  • Retour d'information : des fins de course signalent au microcontrôleur que le store est complètement ouvert ou fermé, pour couper le moteur et éviter de le forcer.

Tu vois apparaître tous les pièges précédents : entrée analogique (photorésistance), entrée numérique (fin de course), sortie de commande (signal vers le driver), étage de puissance (le driver lui-même), et boucle de régulation (le programme qui compare en continu). Si tu sais décrire ce système proprement, tu sais décrire 80 % des systèmes étudiés en SI.

Méthode de révision pour l'épreuve de SI

Le microcontrôleur tombe très souvent dans les sujets écrits et dans les projets de Terminale. Voici comment structurer tes révisions sans t'éparpiller :

  • Fiche « chaîne d'information » : acquérir (capteurs), traiter (microcontrôleur), communiquer (bus, liaison série, Wi-Fi). Pour chaque bloc, un exemple de composant et un exemple de signal.
  • Fiche « conversions » : CAN, résolution, tension de référence, relation N ↔ U. Entraîne-toi à convertir dans les deux sens.
  • Fiche « PWM » : rapport cyclique, fréquence, usage typique (variation de vitesse, luminosité).
  • Fiche « algorithme » : structure setup/loop, lecture → traitement → commande, gestion du temps avec millis().
  • Fiches systèmes : pour chaque système étudié (robot, store, vélo électrique, drone), note où est le microcontrôleur, quelles sont ses entrées et ses sorties, et quelle est la loi de commande.

Pour consolider les bases, revois les cours officiels sur https://www.allosi.fr/cours. Et si tu veux travailler l'oral ou l'écrit avec des fiches méthode, https://www.allolycee.fr propose des ressources utiles au lycée. Pour les matières scientifiques du bac, https://www.allobac.fr complète bien le tableau.

Conclusion : le microcontrôleur, c'est de la rigueur avant tout

Retiens une idée simple : la plupart des erreurs sur le microcontrôleur SI ne viennent pas d'un manque de talent, mais d'un manque de méthode. Si tu prends l'habitude de séparer chaîne d'information et chaîne d'énergie, de vérifier la nature de chaque signal (numérique ou analogique, tout-ou-rien ou PWM), de convertir proprement les grandeurs et d'écrire ton algorithme avant ton code, tu vas gagner un temps fou — en TP comme le jour du bac. Le microcontrôleur n'est pas un composant magique : c'est un exécutant discipliné. À toi de lui donner des instructions claires. Allez, à toi de jouer !

📚 Pour aller plus loin

Questions fréquentes

Quelle est la différence entre un microcontrôleur et un microprocesseur ?

Un microprocesseur ne contient que l'unité de calcul (CPU) et a besoin de mémoires et de périphériques externes pour fonctionner. Un microcontrôleur intègre sur la même puce le processeur, la mémoire (programme et données) et les entrées/sorties. C'est ce qui le rend autonome et adapté aux systèmes embarqués étudiés en SI.

Pourquoi mon capteur analogique ne renvoie-t-il pas une valeur cohérente sur Arduino ?

Trois causes fréquentes : la broche utilisée n'est pas une entrée analogique (le CAN n'est disponible que sur certaines broches), la tension de référence est mal choisie, ou le capteur est mal alimenté. Vérifie aussi la résolution du CAN (10 bits sur Uno, soit 0 à 1023) et la conversion N vers U.

Peut-on alimenter un moteur directement avec une sortie du microcontrôleur ?

Non. Une sortie numérique délivre quelques milliampères seulement, alors qu'un moteur consomme souvent plusieurs centaines de milliampères voire plus. Il faut un étage de puissance (transistor, driver, relais) entre le microcontrôleur et le moteur. Le microcontrôleur commande, il n'alimente pas.

Qu'est-ce que le PWM et à quoi ça sert en SI ?

Le PWM (modulation de largeur d'impulsion) est un signal carré dont on fait varier le rapport cyclique. La valeur moyenne vue par le récepteur varie donc entre 0 et Vcc. En SI, on l'utilise pour faire varier la vitesse d'un moteur ou la luminosité d'une LED sans avoir besoin d'une vraie sortie analogique.

Pourquoi la fonction loop() sur Arduino est-elle si importante ?

Parce qu'elle s'exécute en boucle infinie tant que la carte est alimentée. Toute la logique de lecture des capteurs, de traitement et de commande des actionneurs doit être pensée pour être répétée à chaque tour. Si tu écris ton programme comme s'il s'exécutait une seule fois, il ne fonctionnera pas.

Comment éviter de bloquer le programme avec delay() ?

Utilise la fonction millis() qui renvoie le temps écoulé depuis le démarrage. En comparant millis() à une échéance mémorisée, tu peux déclencher des actions périodiques sans bloquer le reste du programme. C'est la base du temps réel non bloquant en système embarqué.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
microcontrôleur SIArduino microcontrôleurchaîne d'informationcapteur actionneurprogramme SIPWMconvertisseur analogique numérique
Scientia