Arduino Nano - Optocoupleur PC817 : Surveiller un Signal d'Entrée 12V/24V DC

Ce tutoriel vous explique comment utiliser l'Arduino Nano avec un module optocoupleur PC817 pour savoir si un appareil 12V ou 24V est allumé à l'instant présent, sans aucune connexion électrique entre cet appareil et la carte. En détail, nous allons apprendre :

Arduino Nano optocoupleur PC817 câblage d'entrée isolée 24V

Comme l'Arduino Nano est assez petit pour être caché dans un boîtier compact ou derrière le tableau de bord d'un véhicule, il est souvent installé juste à côté de circuits qui fonctionnent bien au-dessus de ses propres 5V. Deux tâches reviennent sans cesse, et toutes deux correspondent en réalité à la même question - cet appareil est-il allumé ou éteint en ce moment ?

Dans les deux cas, l'Arduino Nano ne doit jamais toucher cette tension. Le PC817 se place entre les deux et laisse passer l'information tandis que l'électricité reste de l'autre côté. Une installation dans un véhicule est l'exemple utilisé tout au long de ce tutoriel, c'est donc le module 12V qui est représenté sur les schémas - les modules 24V et 3-5V se câblent exactement de la même manière.

Nous vous suggérons :

Matériel Requis

1×Official Arduino Nano
1×Alternativement: DIYables Nano V3.0 Development Board
1×Câble USB A vers Mini-B
1×PC817 Optocoupler Module 12V
1×PC817 Optocoupler Module 3-5V
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour Arduino Nano
1×Recommandé: Carte d'extension breakout pour Arduino Nano
1×Recommandé: Répartiteur d'alimentation pour Arduino Nano

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Les lignes de modules ci-dessus sont des alternatives, pas une liste de courses - achetez uniquement celui qui correspond à la tension du signal que vous souhaitez surveiller.

À Propos du Module Optocoupleur PC817

Le PC817 est un optocoupleur à 4 broches, également appelé photocoupleur ou opto-isolateur. À l'intérieur de son boîtier en plastique se trouve une LED infrarouge face à un phototransistor, séparés par un espace isolant. Lorsque le courant traverse la LED, sa lumière rend le transistor passant, de sorte que le signal passe sous forme de lumière plutôt que d'électricité. C'est toute la raison pour laquelle les deux côtés restent électriquement séparés : rien ne conduit d'un côté à l'autre.

Un module optocoupleur PC817 place cette puce sur un petit circuit imprimé avec la résistance série dont sa LED a besoin, une LED d'état, des borniers à vis pour le câblage terrain et un connecteur pour la carte. Pour un Arduino Nano, cela signifie qu'une ligne 12V ou 24V peut être détectée comme une entrée numérique ordinaire, tandis que le Nano conserve son propre univers 5V intact, sans rien à souder ni à calculer.

Module d'isolation optocoupleur PC817 Arduino Nano

Quel Module Optocoupleur PC817 Me Faut-il ?

C'est la seule décision à prendre avant de commander, car la résistance série du module est déjà montée et dimensionnée pour une seule tension d'entrée. Les modules sont donc vendus en trois variantes distinctes, et elles ne sont pas interchangeables :

  • Module optocoupleur 12V - celui utilisé partout dans ce tutoriel. Il convient à une alimentation d'allumage, à un circuit de phares, à une ligne de contacteur de porte, à une bobine de relais 12V et à tout ce qui fonctionne sur une batterie de voiture ou de moto.
  • Module optocoupleur 24V - pour les signaux 24V DC : une bobine de contacteur ou d'électrovanne dans une armoire de machine, une sortie d'automate (PLC), un système électrique de camion ou de bus.
  • Module optocoupleur 3-5V - pour les signaux de niveau logique, 3,3V comme 5V. C'est celui à acheter lorsque l'objectif est de rompre une boucle de masse entre deux cartes plutôt que de résister à une haute tension.

Chaque variante est également vendue en versions 1, 2, 4 et 8 canaux, de sorte qu'un Nano caché derrière un tableau de bord peut surveiller plusieurs lignes à partir d'un seul petit circuit imprimé - à condition que chaque ligne de ce circuit fonctionne à la tension du module.

WARNING

N'utilisez pas un module en dehors de la tension pour laquelle il a été conçu. Un module 12V alimenté par une ligne 24V reçoit environ le double du courant que sa LED interne est censée supporter, et il sera endommagé. Un module 24V alimenté par une ligne 12V est au contraire sous-alimenté : sa sortie peut commuter en retard, commuter seulement de temps en temps, ou ne jamais commuter du tout. Choisir la variante est l'équivalent, pour le module, du dimensionnement d'une résistance, et c'est tout aussi impitoyable.

Caractéristiques

Voici les valeurs de la puce PC817 qui se trouve au cœur des trois modules :

Paramètre Valeur
Boîtier DIP à 4 broches, broche 1 marquée par un point ou une encoche
Tension directe de la LED (Vf) environ 1,2V typique, 1,4V max
Courant direct de la LED (If) 20mA max en continu, 5-20mA normal, 10mA est une bonne cible
Tension collecteur-émetteur (VCEO) 35V max
Courant de collecteur (IC) 50mA max
Dissipation de puissance du collecteur 150mW
Tension d'isolation 5000Vrms pendant 1 minute
Rapport de transfert de courant (CTR) 50% à 600% selon le rang (A 80-160%, B 130-260%, C 200-400%, D 300-600%)
Vitesse de commutation temps de montée d'environ 4us, temps de descente d'environ 3us
Température de fonctionnement -30°C à +100°C

Brochage du Module Optocoupleur PC817

Un module à un seul canal possède deux borniers à vis du côté de l'entrée isolée et un connecteur à trois broches du côté de l'Arduino Nano.

  • Borne IN+ (ou +) : le positif du côté entrée. Le signal 12V ou 24V doit être connecté à cette borne. Aucune résistance série n'est ajoutée ici - le module porte déjà celle qui correspond à sa variante.
  • Borne IN- (ou -) : le négatif du côté entrée. Elle doit être connectée à la masse du circuit 12V/24V, PAS au GND de l'Arduino Nano.
  • Broche VCC : doit être connectée à la broche 5V de l'Arduino Nano.
  • Broche GND : doit être connectée à une broche GND de l'Arduino Nano.
  • Broche OUT : la sortie isolée, nommée DO ou OUT1..OUTn sur les cartes multicanaux. Elle doit être connectée à une broche d'entrée numérique de l'Arduino Nano.

WARNING

La borne IN- et la broche GND semblent aller ensemble, mais elles ne doivent jamais être reliées. IN- appartient au circuit 12V/24V et GND appartient à l'Arduino Nano. Relier les deux masses supprime l'isolation, et l'écart entre elles est exactement ce qui protège la carte.

※ Note:

La disposition des broches d'un module d'isolation PC817 peut varier d'un fabricant à l'autre. Fiez-vous toujours aux étiquettes imprimées sur le module plutôt qu'à la position d'une broche. Regardez attentivement avant de câbler !

Comment l'Arduino Nano Lit le Signal Isolé

La broche OUT du module va vers une broche d'entrée numérique de l'Arduino Nano configurée avec la résistance de tirage (pull-up) interne. Une résistance externe de 10 kΩ vers 5V ferait le même travail, mais le pull-up interne est plus simple et ne coûte rien - la même astuce que celle utilisée dans le tutoriel Arduino Nano - Bouton..

À l'intérieur du module, le phototransistor se trouve entre cette broche et la masse. Lorsque le signal externe alimente la LED d'entrée, le transistor conduit et tire la broche vers le bas malgré le pull-up :

Signal externe 12V/24V LED interne Phototransistor La broche de l'Arduino Nano lit
Présent allumée passant LOW
Absent éteinte bloqué HIGH

Ainsi, un LOW sur la broche signifie que le signal externe EST présent. C'est l'inverse de ce à quoi s'attendent la plupart des débutants, et cela doit être inversé dans le code. C'est de la physique établie pour un phototransistor câblé directement sur la broche, ce qui correspond exactement au comportement de la puce nue - mais un module peut ajouter une subtilité, ce qui nous amène à la section suivante.

Module Optocoupleur PC817 : Actif à l'État Haut ou Actif à l'État Bas ?

Le tableau ci-dessus décrit le phototransistor brut. De nombreux modules le laissent exactement ainsi, mais certains fabricants ajoutent un étage inverseur sur la carte, de sorte que la broche OUT suit au contraire l'entrée et lit HIGH lorsque le signal est présent. Les deux types sont vendus avec les mêmes photos de produit, et lire la fiche produit ne permet pas de trancher. La méthode fiable consiste à passer une minute à mesurer votre propre module :

  • Câblez le module à l'Arduino Nano comme indiqué ci-dessous, téléversez le sketch de ce tutoriel et ouvrez le Moniteur Série.
  • Laissez les bornes IN+ et IN- non connectées et notez ce qui s'affiche.
  • Appliquez maintenant le signal 12V ou 24V sur ces bornes et notez ce qui change.
  • La valeur qui apparaît lorsque le signal est présent est le niveau actif de votre module. Si c'est LOW, votre module est actif à l'état bas ; si c'est HIGH, il est actif à l'état haut.
  • Utilisez la LED d'état du module comme second avis. Cette LED est pilotée depuis le côté entrée, elle s'allume donc dès que les bornes d'entrée sont alimentées. Si la LED est allumée et que le Moniteur Série indique toujours OFF, c'est la polarité qui est inversée, pas le câblage.

La correction ne demande qu'une seule modification. Le sketch conserve la polarité dans une constante près du début :

const bool MODULE_ACTIVE_LOW = true;

Laissez-la à true pour un module actif à l'état bas, qui est le type le plus courant et la valeur par défaut ici, et passez-la à false pour un module actif à l'état haut. Rien d'autre dans le code n'a besoin d'être modifié.

Le Réaliser Plutôt à Partir de la Puce PC817 Nue

Si vous préférez souder la puce brute à 4 broches sur votre propre plaque à trous, tout ce qui précède s'applique toujours, sauf que la résistance série doit maintenant être montée par vos soins.

Brochage de l'optocoupleur PC817
image source: diyables.io

La broche 1 est la plus proche du point ou de l'encoche. Broche 1 - Anode (A) et Broche 2 - Cathode (K) forment le côté entrée : le signal doit être connecté à la broche 1 via la résistance série, et la broche 2 à la masse de ce circuit. Broche 4 - Collecteur (C) doit être connectée à la broche d'entrée de l'Arduino Nano, et Broche 3 - Émetteur (E) au GND de l'Arduino Nano. La même règle s'applique ici : les broches 2 et 3 ne doivent jamais être reliées.

La valeur de la résistance est donnée par R = (Vin - 1.2) / 0.01, en visant 10mA à travers la LED interne, dont la tension directe est d'environ 1,2V :

Tension d'entrée Résistance à utiliser Puissance nominale
3.3V 220Ω 1/4W
5V 390Ω 1/4W
12V 1 kΩ 1/4W
24V 2.2 kΩ 1/2W

Laisser une résistance de 1 kΩ sur une ligne 24V fait passer environ 22,8mA dans la LED, au-dessus de la limite de 20mA du PC817. 3,3V est le minimum pratique, puisque la LED en consomme à elle seule 1,2V. Une puce nue est toujours active à l'état bas, donc MODULE_ACTIVE_LOW reste à true.

Schéma de Câblage

Câblage du Module Optocoupleur PC817 à l'Arduino Nano

Le signal 12V ou 24V et sa masse vont dans les borniers à vis IN+ et IN-, tandis que les broches VCC, GND et OUT du connecteur vont au 5V, au GND et à la broche 2 de l'Arduino Nano.

Schéma de câblage Arduino Nano module d'isolation optocoupleur PC817

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Voir Comment alimenter un Arduino Nano..

Câblage de la Puce PC817 Nue à l'Arduino Nano

Pour la version optionnelle à puce nue, le signal atteint la broche 1 via sa résistance série, la masse de ce circuit revient à la broche 2, et de l'autre côté la broche 4 de la puce va à la broche 2 de l'Arduino Nano tandis que la broche 3 de la puce va au GND de l'Arduino Nano.

Câblage du PC817 en Parallèle avec un Appareil pour Surveiller son État Marche ou Arrêt

Les deux schémas ci-dessus supposent qu'un signal vous est fourni sur une paire de fils pratique. Dans un véhicule, ce n'est jamais le cas. Un phare, une alimentation d'allumage, une ligne de contacteur de porte ou une bobine de contacteur 24V n'a pas de sortie libre à lire, l'Arduino Nano doit donc se brancher directement sur l'appareil.

L'entrée du module doit être connectée aux bornes de l'appareil, en parallèle avec lui. Elle ne doit jamais être placée en série avec lui. En série, la totalité du courant de fonctionnement de l'appareil - quatre ou cinq ampères pour un phare - serait forcée à travers la minuscule LED à l'intérieur du PC817, et le composant serait détruit dès la mise sous tension du circuit. En parallèle, rien dans le câblage existant n'est coupé, ouvert ou dévié ; deux fils sont simplement ajoutés sur des bornes déjà présentes.

En prenant comme exemple l'alimentation d'un phare 12V, avec le module 12V :

  • La borne positive commutée de la lampe doit être connectée au bornier à vis IN+ du module.
  • La borne négative, de retour, de la même lampe doit être connectée au bornier à vis IN-.
  • Du côté isolé, rien ne change : OUT doit être connecté à la broche 2 de l'Arduino Nano, VCC au 5V de l'Arduino Nano, et GND au GND de l'Arduino Nano.

Aucune résistance série n'est montée sur l'un ou l'autre de ces deux fils - c'est exactement ce que vous obtenez en achetant la variante correspondant à la ligne. Le branchement consomme environ 10mA. À côté des 4 à 5A d'un phare, ou des quelques centaines de milliampères d'une bobine d'électrovanne, ce n'est absolument rien - la lampe se comporte exactement comme avant, et la mesure reste en lecture seule. Comme le branchement se trouve directement aux bornes de l'appareil, la lecture suit l'état réel de cet appareil plutôt qu'une commande qui lui est envoyée : elle devient active lorsque le conducteur actionne l'interrupteur, lorsqu'un relais de gestion de carrosserie se ferme de lui-même, et elle reste inactive lorsque la lampe a été demandée mais ne s'est jamais allumée. C'est ce qui rend possible, sur une carte aussi petite, un compteur d'heures de fonctionnement, un journal de temps d'inactivité ou une alerte « a-t-il vraiment démarré ? ».

Une limite honnête : cela vous indique que l'appareil est alimenté, pas qu'il fait son travail. Un moteur de ventilateur grippé, ou un élément chauffant dont l'enroulement est coupé, a toujours la pleine tension à ses bornes et sera toujours signalé comme ON.

Trois points déterminent si le branchement fonctionne du premier coup :

  • Polarité. Le côté entrée du PC817 est une LED, elle ne conduit donc que dans un seul sens. Inversez IN+ et IN- et rien ne se passe du tout - la LED ne s'allume jamais, la LED d'état du module reste éteinte, et la broche de l'Arduino Nano ne change jamais. Les véhicules sont remplis de circuits à négatif commuté, vérifiez donc laquelle des deux bornes est la positive avant de tout fixer.
  • Les charges inductives nécessitent une diode de protection. Une bobine de relais, une électrovanne, un contacteur, une vanne ou un petit moteur renvoie un important pic de tension inverse sur ses propres bornes au moment où il est coupé. La LED d'entrée du PC817 ne supporte que 6V en inverse, ce pic suffit donc à la détruire. Montez une diode ordinaire en antiparallèle directement aux bornes des deux entrées - cathode de la diode sur IN+, anode de la diode sur IN-. En fonctionnement normal, elle est polarisée en inverse et ne fait rien ; lors d'un pic, elle conduit et maintient la tension inverse bien en dessous d'un volt. Une 1N4148 convient pour un petit branchement, une 1N4007 pour un plus important.
  • Un pilote avec fuite signale un faux ON. Très peu d'éléments dans un véhicule moderne sont encore commutés par un simple contact mécanique - un pilote à semi-conducteurs fait le travail à la place, et beaucoup d'entre eux laissent passer un petit courant de fuite même lorsqu'ils sont éteints. Il en va de même pour les sorties à transistor d'automate, les sorties à triac et les pilotes de lampes LED. Une fuite suffisante allume partiellement la LED du PC817, et l'Arduino Nano signale alors l'appareil comme ON alors qu'il est éteint. Le symptôme est sans équivoque : une lecture qui ne revient jamais à l'état inactif. Le remède est une résistance de décharge d'environ 4,7 kΩ à 10 kΩ montée en parallèle avec l'entrée du module, afin que la fuite passe par la résistance plutôt que par la LED.

※ Note:

Cette méthode ne concerne que le courant continu (DC). L'entrée du PC817 est une seule LED et ne répond donc qu'à une seule polarité, ce qui en fait le mauvais composant pour détecter une ligne alternative (AC). Ce travail revient à un optocoupleur dont l'étage d'entrée comporte deux LED montées tête-bêche.

Comment Programmer pour l'Optocoupleur PC817

La première étape consiste à spécifier la broche de l'Arduino Nano connectée à la broche OUT du module optocoupleur PC817. La broche 2 est utilisée dans ce tutoriel :

#define PC817_PIN 2

L'étape suivante consiste à indiquer dans quel sens le module commute. La plupart des modules mettent leur sortie à LOW lorsque le signal d'entrée est présent, cette valeur est donc laissée à true, sauf si le test décrit ci-dessus indique le contraire :

const bool MODULE_ACTIVE_LOW = true;

Cette broche est ensuite configurée en entrée avec pull-up interne à l'aide de la fonction pinMode() :

pinMode(PC817_PIN, INPUT_PULLUP);

L'état de la broche est lu à l'aide de la fonction digitalRead() :

int input_state = digitalRead(PC817_PIN);

La dernière étape consiste à transformer cette lecture brute en une réponse oui ou non, en utilisant la constante afin qu'un module de l'une ou l'autre polarité soit géré par la même ligne :

bool line_energized = MODULE_ACTIVE_LOW ? (input_state == LOW) : (input_state == HIGH);

Aucune bibliothèque n'est nécessaire pour ce projet.

Code Arduino Nano pour l'Optocoupleur PC817

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-pc817-optocoupler-monitor-12v-24v-dc-input-signal */ #define PC817_PIN 2 // The Arduino Nano pin 2 connected to the PC817 module's OUT pin // Most PC817 optocoupler modules pull the output LOW while the input signal is present. // If your module works the other way round (active-HIGH), change this to false. const bool MODULE_ACTIVE_LOW = true; int input_state; // the current reading from the PC817 output bool line_energized; // true when the external 12V/24V signal is present void setup() { // Initialize the Serial to communicate with the Serial Monitor Serial.begin(9600); // The internal pull-up holds the pin HIGH while the PC817 is not conducting pinMode(PC817_PIN, INPUT_PULLUP); } void loop() { input_state = digitalRead(PC817_PIN); // Turn the raw reading into a yes/no answer according to the module's polarity line_energized = MODULE_ACTIVE_LOW ? (input_state == LOW) : (input_state == HIGH); if (line_energized) Serial.println("External line: ENERGIZED"); else Serial.println("External line: OFF"); delay(500); }

Étapes Rapides

  • Câblez les composants comme indiqué sur le schéma.
  • Connectez la carte Arduino Nano à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez l'Arduino IDE sur votre ordinateur.
  • Sélectionnez la bonne carte et le bon port.
  • Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour compiler et téléverser le code vers l'Arduino Nano.
  • Ouvrez le Moniteur Série.
  • Appliquez le signal 12V ou 24V sur les bornes d'entrée, puis retirez-le.
  • Consultez le résultat dans le Moniteur Série.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano' on 'COM15')
New Line
9600 baud
External line: OFF External line: OFF External line: ENERGIZED External line: ENERGIZED External line: ENERGIZED External line: ENERGIZED External line: OFF External line: OFF External line: OFF External line: ENERGIZED
Ln 11, Col 1
Arduino Nano on COM15
2

Si le Moniteur Série indique ENERGIZED alors que rien n'est appliqué et OFF lorsque le signal est appliqué, votre module est du type actif à l'état haut. Mettez MODULE_ACTIVE_LOW à false dans le code ci-dessus et téléversez à nouveau.

Vidéo

Connaissances Supplémentaires

Une fois le module préféré à la puce nue, il reste une question, et il faut y répondre avant de passer commande : laquelle des trois variantes convient à cette installation précise ? La tension du signal en décide en grande partie, mais pas entièrement - ce qui se passe si la mauvaise variante arrive, et le nombre de lignes à surveiller, comptent aussi.

Module 3-5V Module 12V Module 24V
Signal attendu logique 3,3V et 5V 12V DC 24V DC
Source typique sur une installation Nano une seconde carte, une carte capteur avec sa propre alimentation, un long faisceau basse tension alimentation d'allumage, phares, contacteur de porte, bobine de relais 12V bobines de contacteurs et d'électrovannes, sorties d'automates, systèmes de camions et de bus
Raison de l'isolation rompre une boucle de masse, pas résister à une tension la masse du véhicule est bruitée et partagée avec le démarreur la masse de l'armoire transporte les pics de commutation d'autres charges
Si alimenté avec une tension supérieure à celle prévue endommagé par tout ce qui dépasse nettement le niveau logique endommagé sur une ligne 24V, avec environ le double du courant prévu pour sa LED aucune tension supérieure n'est normalement rencontrée dans ces installations
Si alimenté avec une tension inférieure à celle prévue - peu fiable sur un signal de niveau logique défaillance silencieuse sur une ligne 12V, commutation tardive ou inexistante
Adapté à une installation Nano cachée travail sur établi et multi-cartes, rarement derrière le tableau de bord le choix par défaut derrière un tableau de bord armoires de machines, où l'espace de montage ne manque pas

Il est évident que la variante 12V est celle à privilégier pour l'installation dans un véhicule autour de laquelle ce tutoriel est construit, que la variante 24V a sa place dans l'armoire de machine où se trouvent les bobines, et que la variante 3-5V s'achète pour une tout autre raison - non pas parce que la tension est dangereuse, mais parce que la masse l'est. Lorsque plusieurs lignes doivent être surveillées depuis un seul Nano caché, une carte multicanaux de la bonne variante est moins chère et plus propre que plusieurs cartes à un canal, à condition que chaque ligne qui y est reliée fonctionne à la même tension ; un Nano qui surveille à la fois un contacteur de porte 12V et une bobine 24V a besoin de deux modules, pas d'un seul.

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !