Électronique 101 : résistance de tirage et transistor Darlington

Aujourd’hui je lance une nouvelle rubrique/catégorie sur ce blog :  Électronique 101.
J’ai décidé de me mettre à l’électronique, j’ai acheté un kit Arduino sur Ebay, quelques composant nécessaire à un projet, les outils nécessaires et c’est partie !

Électronique 101

Sauf que je trouve que se mettre à l’électronique, c’est un peu un la galère comparé à l’informatique. Pour l’informatique, il existe des milliers de tutoriels, de guides, explications et exercices pour ne serait-ce qu’un langage de programmation :  dans ce cadre là, en persévérant on finit toujours pas être aiguillé par une réponse dans un forum ou une explication dans un tutoriel, puis confirmer par des exemples et nos propres tests. Par contre l’électronique, c’est moins ça je trouve, où en tout cas c’est plus… éparses et compliquer à trouver. J’en prends pour exemple le fait que presque TOUS les sites qui traites d’électroniques font très Web 1.0 avec des beaux sites statiques : je ne dis par là que ce sont de mauvais sites, plutôt que l’âge moyen des sites dédiés à l’électronique est pas mal grand, et que la nouvelle génération se fait attendre. Je comprend cette différence entre l’informatique et l’électronique : on peut se mettre à coder avec un pauvre éditeur de texte et un compilateur, donc sur n’importe quel ordinateur même très vieux, alors que l’électronique requiert outils, composants (en profusion même pour certain prochain) ce qui coute de l’argent.

Il arrive donc des fois que je ne comprennent pas certaines choses en électronique : pourquoi dit on que ce composant fait ça ? Pourquoi doit on utiliser ça? Car niveau explication, sur Internet, ça se répète beaucoup du coup on a du mal à trouver LA chose qui nous aurait fait comprendre.

Le but de cette rubrique sera donc d’écrire des articles sur des « choses » que j’ai enfin compris après un certain temps et que je considère comme mal expliquées, pour un esprit comme le mien du moins. C’est partit !
Aujourd’hui nous aborderons les résistances de tirage (et aussi les résistance de rappel), leur fonctionnement et leur utilité, et enfin nous parlerons des transistors et plus particulièrement des transistors Darlington.

 Les résistances de tirage

Les résistances de tirage (ou résistance de rappel) sont extrêmement utiles voir totalement nécessaire lorsque l’on fait de l’électronique numérique (lorsqu’on ne s’intéresse pas aux tension/intensité car on ne voit et manipule que des 0 (tension nulle) ou 1(ex : tension +5V). Mais à quoi ça sert?Imaginez que vous voulez détecter que quelqu’un appuie sur un interrupteur, vous brancher donc votre interrupteur à votre Arduino d’un coté, et de l’autre coté une alimentation, du coup quand on appuie dessus, la courant passe, et l’Arduino lit +5V (par exemple) sur l’entrée, et détecte donc l’appuie.

Appui bouton arduino naif 2

À l’appui du bouton, l’Arduino lit +5V sur son entrée : l’appui du bouton est détecté.

Le problème c’est que quand l’interrupteur n’est pas appuyé, le câble de l’Arduino à l’interrupteur est dit « flottant » car relié à du vide, ce qui peut être très grave dans certains cas : en effet, il peut arriver qu’un câble flottant puisse capter des ondes radios (on est littéralement saturé de ce genre d’onde, entre les ondes FM/AM, ceux des téléphones, et plein d’autre encore) , et les convertir en électricité (comme une antenne le ferait), ce qui crée donc une tension à la borne de l’Arduino, qui pourrait croire à un appui d’interrupteur si cette tension est suffisamment fort. Vous admettrez que c’est pas cool (imaginez que votre lampe s’allume en pleine nuit parce qu’elle a capté une onde radio).

Détection appui bouton naif

Le circuit est ouvert, et le câble coté Arduino est flottant : l’Arduino peut lire des faux positifs si jamais le câble capte un onde radio.

Pour éviter cela, on utilise donc des résistances de tirage/rappel. Sauf que je trouve le nom totalement pourri : personnellement, j’ai mis longtemps à comprendre le fonctionnement des résistances de tirage à cause du nom ; je me disais que du coup c’était la résistance qui faisait tout le travail, que c’était une résistance spéciale, ou que les résistances avaient des fonctionnalités que je ne connaissais pas. Mais en fait non,c’est tout con en fait.

En fait c’est simple, pour éviter le coup des ondes radio parasites, il suffit de connecter la borne de l’interrupteur coté Arduino à une borne du générateur. Si la 1er borne de l’interrupteur est relié à la borne +, il faut connecté l’autre coté à l’Arduino et à la borne -, et si la 1er borne est relié à la borne – (dans le cas où l’on veut lire un 0 lorsque l’interrupteur est appuyé, et non un 1), on connecte l’autre borne à l’Arduino et à la borne + du générateur. Quand on fait cela, lorsque l’interrupteur n’est pas appuyé, le câble coté Arduino n’est plus flottant : il est soit connecté à la masse (comme sur le schéma suivant), ce qui garantit de toujours lire 0, soit connecté à la borne +, ce qui garantit de toujours lire 1.

L'interrupteur est aussi connecté à la masse : si un signal radio est capté, celui ci partira directement à la masse, et l'Arduino ne lira pas de faux positif

L’interrupteur est aussi connecté à la masse : si un signal radio est capté, celui ci partira directement à la masse, et l’Arduino ne lira pas de faux positif

Le problème maintenant survient lorsque quelqu’un appuie sur l’interrupteur (je ne vous conseille pas de le faire) : à ce moment là, vous crée un court circuit entre la masse et la borne + du générateur (ce qui peut avoir des conséquences très grave sur l’Arduino, et même votre générateur, et enfin sur vous même).

L'alimentation est directement branché à la masse : court-circuit.

L’alimentation est directement branché à la masse : court-circuit.

C’est la que la résistance entre en jeu : mettez une grosse résistance du style 3k ohms entre l’interrupteur et la borne du générateur, du coté Arduino. Si vous faites ça, lorsque quelqu’un appuie sur l’interrupteur, il y aura quelque chose entre la borne + et la masse du générateur : la résistance de tirage/rappel. On aura donc éviter au final les perturbations des ondes radios tout en évitant le court circuit à chaque fois que l’on actionne l’interrupteur : Mission accomplie.

L'interrupteur est toujours connecté à la masse, on évite donc toujours les faux positifs (la résistance ne sert à rien ici)

L’interrupteur est toujours connecté à la masse, on évite donc toujours les faux positifs (la résistance ne sert à rien ici)

Lorsqu'on appuie sur l'interrupteur, l'entrée de l'Arduino à moins de résistance, le courant passe donc par cette entrée : on détecte l'appui de l'interrupteur. La résistance nous a protégé du court circuit

Lorsqu’on appuie sur l’interrupteur, le courant passe par l’Arduino ET vers la masse. L’Arduino détecte donc l’appui, et la masse est protégé par la résistance.

Au final je ne comprend pas pourquoi on dit que la résistances de tirage/rappel évite les perturbations radio : ce qui les évite, c’est de ne plus avoir l’Arduino branché à « rien » lorsque l’interrupteur n’est pas appuyé. La résistance elle ne sert qu’à éviter le court-circuit…

Les transistors Darlington

Quand j’ai croisé un circuit utilisant les transistors Darlington, je faisais quelques experimentation avec un stepper motor de mon kit. Avec celui ci était donné un contrôleur pour le moteur qui est plus ou moins un PCB avec un ULN2003 et des LED pour avoir quelques indications. Mais je me demandais pourquoi le ULN2003 était nécessaire : techniquement l’Arduino seul peut aussi contrôler le stepper motor (en tout cas pour le tout petit stepper du kit, il était suffisant).Sur Internet, il est dit que le ULN2003 sert à donner plus de courant au moteur que ce que l’Arduino peut fournir : surement que dans mon cas, le stepper motor étant tellement petit, l’Arduino suffisait. En plus il a des diodes pour éviter que l’Arduino ne crame à cause de la force contre électromotrice : pour faire bouger le moteur, on applique une tension à des bobines ce qui génère un champ électromagnétique, ce qui est utilisé pour faire bouger l’axe central qui est un aimant et qui s’aligne sur ledit champ magnétique. Le problème c’est lorsqu’on coupe le courant : le champ électromagnétique crée un courant (car si un courant induit un champ électromagnétique, l’inverse est aussi le cas) avec une très forte tension (mais qui ne dure que quelques nanosecondes), une tension si forte que cela peut griller l’Arduino. Mettre des diodes permets d’empêcher la fcem (force contre électromotrice) à remonter jusqu’à l’Arduino.

Mais j’étais quand même curieux de savoir ce que l’ULN2003 faisait en interne, et pourquoi il donnerai « plus de punch » au moteur. Au final, il semblerai que ce soit plusieurs transistors Darlington mis en parallèle (pour avoir plusieurs sorties) munis de diode. Mais que sont les transistor Darlington?
Comme en cours, on ne faisait que de l’électronique numérique, on ne voyait dans les transistors qu’un moyen de faire oui ou non passer un courant : un interrupteur électronique qui permettrait de faire des opérations logiques. Mais en fait un transistor c’est bien plus que ça (et bien plus que ce que je vais expliquer ici).
En fait un transistor Darlington ressemble à :

Schéma d’un transistor Darlington

C’est donc 2 transistor NPN : un transistor dont la sortie va activer ou non un autre transistor. Tout les deux ont leur collecteurs relié à la même source de courant. Donc si on active le 1er, le 2ème s’activera de manière indirecte. Et en fait, ce que je ne savais pas (ce qu’on ne dit pas vraiment en électronique numérique), c’est qu’un transistor NPN lorsqu’il a une tension à la base laisse bien sur passer le courant du collecteur vers l’émetteur, mais contrôle aussi la quantité d’électron qui passe, et donc l’intensité du courant : plus l’intensité à la base est grande, plus le transistor laissera passer d’électron et donc plus l’intensité du courant sortant par l’émetteur sera grande. Par contre, chaque modèle de transistor aura sa propre courbe « intensité à la base -> intensité en sortie ». En électronique numérique, on a bien sûr besoin d’un minimum d’intensité, mais que le signal soit de 10mA ou de 1A, ce n’est pas important, ce qui est important c’est qu’il y ait une tension, donc cette propriété des transistors n’est pas forcément abordée.

Donc au final, quand on branche un Arduino à un ULN2003 (et donc à des transistors Darlington), et que vous décider de faire tourner le moteur, l’Arduino applique donc un courant à plusieurs PIN de l’ULN2003, et donc à des transistors Darlingtons (pour cette exemple, on va dire que les transistors ont un coefficient constant de x10), et plus particulièrement, le 1er transistor de la pair. Or, l’Arduino peut débiter au max 40mA, donc le 1er transistor transformera ce 40mA en par exemple 400mA en sortie (quand je dis transforme, cela veut dire qu’il « laisse passer »), qui sera donc l’intensité du courant à la base du 2ème, qui lui aussi fera donc passer ENCORE plus d’électron, et donc l’intensité du courant en sortie du 2ème transistor sera alors de par exemple 4A : la où avec un seul transistor et l’Arduino on aurait eu que 400mA, on a ici 4A grâce à une pair de transistors : un transistor Darlington.

Transistor Darlington

Exemple d’un transistor Darlington (vu comme une paire de transistor)

Voilà, c’est le 1er article un peu technique que j’écris, sur un sujet qu’en plus je ne maitrise pas totalement donc si j’ai fait des erreur ou qu’il y simplement un truc que j’ai mal expliqué, n’hésitez pas à le dire que je corrige/explique mieux !