Quand l'analogique se prend pour du numérique, ou comment maîtriser des parasites...
On est toujours tenté d'aller coller un interrupteur, un poussoir ou un capteur "tout-ou-rien" assez loin de l'arduino, car on n'a pas forcément le choix. On arrive généralement et par simplicité à ce shéma là :
Et c'est là que les soucis commencent à partir de 10 / 20cm : le soft capte des changements d'états sur l'entrée de l'arduino alors que le contact à l'autre bout du fil n'a pas bougé.
1 - Pourquoi, comment et d'où viennent ces parasites?
L'environnement actuel n'est gère favorable et fourmille d'ondes magnétiques(1) et électromagnétiques(2).
Toute utilisation de courant génère une onde magnétique ou électromagnétique proportionnelle au courant.
Une ampoule (classique, à filament) crée peu d'ondes du fait de la façon dont est enroulé son filament, le fil utilisé dans le filament tourne un peu dans tous les sens ce qui a pour effet de produire des ondes qui s'annulent les unes les autres.
Un tube "Néon" produit beaucoup d'onde électromagnétiques, puisqu'il s'agit d'un passage d'électrons en ligne droite sur plus d'1 mètre de long, ce qui fait une belle antenne pour émettre le 50Hz du sectur, mais surtout amplifier le moindre parasite du secteur.
une rallonge électrique alimentant un apareil : une longueur de fil dans lequel passe du courant, donc génération d'onde magnétique, d'autant plus si la rallonge est en partie enroulée (enrouleurs), créant ainsi une bobine.
Un transformateur qui utilise justement la génération d'onde magnétique pour fonctionner n'est pas parfait, beaucoup d'ondes s'en échappent.
un moteur qui comme le transformateur utilise la génération d'ondes, mais en plus tourne, produit des contacts (sur certains, on peut voir des étincelles, preuve de ces contacts) sont de très beaux perturbateurs, et bien souvent renvoient des parasites sur le secteur qui les amplifie à son tour à travers toute l'installation du local dans lequel on se trouve,
Et j'en passe.
Ces ondes peuvent générer des courants parasites sur un conducteur libre.
Ces courants parasites se transforment en tension sur toute impédance réliée à ce conducteur (fil reliant le contact à l'arduino, faisant office d'antenne sur de grandes longueurs). En utilisant la loi d'Ohms, U = R x I, on voit que pour un courant I donné, plus R est grand(3), plus la tension créée par le courant parasite sera grande.
Autre phénomène : les impulsions, les "TAC" que l'on peut entendre dans des hauts-parleurs par exemple, sont souvent de très forte amplitude mais de très courte durée. Ces parasites font apparaître une nouvelle donnée : la fréquence. Qui dit petite durée dit haute fréquence (HF). Justement, tout fil présente une impédance qui augmente avec la fréquence. U = R x I encore : la tension augmente donc avec la fréquence du parasite.
2 - les solutions (liste non exhaustive) :
- Charger les "lignes" : Utiliser des résistances de pull-up (la résistance qui va de l'entrée de l'arduino vers le +5V) de faible valeur. la tension générée par un courant parasite sera faible : Rpetit x I = Upetit.
- Contrer les parasites à haute fréquence : un condensateur a une impédance qui diminue avec la fréquence, pouvant souvent être comparé à un court-circuit pour de hautes fréquences et un circuit ouvert(3) en basse fréquence. Dans le cas d'un bouton poussoir, on peut allègrement utiliser une valeur de 220nF qui fera court-circuit avec la masse pour les parasites HF mais sera "invisible" pour le bouton poussoir. Il absorbera une grande partie des "TAC" souvent responsables de déclenchement d'interruption non prévu.
- le blindage : en utilisant un câble blindé à deux conducteurs dont le blindage est relié à la masse (Attention : d'un seul côté!), c'est le blindage du câble qui fera antenne, protégeant ainsi les deux conducteurs qu'il entoure.
- L'isolation galvanique : A partir d'un optocoupleur par exemple, . malheureusement peu efficace, car il faut quand même un fil tout aussi long donc tout aussi sujet aux parasites. De plus, il faut une seconde alimentation au niveau du contact, lourd à mettre en oeuvre.
J'ai présenté ici des solutions simples à mettre en oeuvre, il en existe beaucoup d'autres. Ces quelques idées devraient apporter un soutien à tout ceux qui ont des problèmes de parasites!
(1) : Onde magnétique : champ magnétique créé par le passage de courant dans un conducteur. Le champ magnétique possède alors la même fréquence que le courant qui l'a créé, une amplitude (ou force) proportionnelle au même courant et décroît avec l'éloignement de la "source".
(2) : Onde électromagnétique : champ électrique créé par la présence d'un potentiel non neutre mélangé au champ magnétique créé par un courant dans ce même conducteur (dans ce cas, le conducteur est une antenne).
(3) : Impédance : valeur de résistance au passage d'un courant. un circuit ouvert représente une impédance infinie, un court-circuit, une impédance nulle (=0). Elle s'exprime en Ohms.