Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

Compter les impulsions en provenance d’un opto-coupleur en fourche en utilisant une interruption externe

Électroniquemis à jour le 4 janvier 2025

L’utilisation d’un opto-coupleur en fourche pour compter les impulsions peut être une tâche complexe. Cependant, en utilisant une interruption externe, il est possible de simplifier le processus et d’obtenir des résultats précis. Dans cet article, nous allons examiner en détail comment compter les impulsions en provenance d’un opto-coupleur en fourche en utilisant une interruption externe. Nous verrons comment configurer le matériel et le logiciel nécessaire, ainsi que les étapes à suivre pour compter les impulsions. Nous verrons également comment vérifier et afficher les résultats obtenus.

Compter les impulsions en provenance d’un opto-coupleur en fourche en utilisant une interruption externe

(cliquer sur l’image pour agrandir)

1.  Présentation

Ce programme compte les impulsions en provenance d’un opto-coupleur en fourche en utilisant l’interruption externe n°0 sur la broche 2 de la carte Arduino. Le résultat est affiché dans le Terminal Série du logiciel Arduino.

Ce programme utilise les fonctionnalités suivantes :

  • Utilise la connexion série vers le PC
  • Utilise l’interruption externe 0 (broche 2)

Ressources utiles associées à ce programme :

  • La librairie Serial – pour les communications séries entre la carte Arduino et l’ordinateur ou d’autres composants
  • Optocoupleur en fourche (LITON LTH301-07)

Voir également :

  • Test du capteur optocoupleur en fourche (LITON LTH301-07)

2.  Matériel Nécessaire

2.1  L’espace de développement Arduino

  • … pour éditer, compiler le programme et programmer la carte Arduino.

2.2  Le matériel suivant pour réaliser le montage associé

  • une plaque d’essai pour montage sans soudures,
  • des straps,
  • un optocoupleur infra-rouge en fourche, type LTH301-7,

Pour plus de détails, voir : Optocoupleur en fourche (LITON LTH301-07)

3.  Instructions de montage

  • La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)
  • Broche 2 : La sortie du phototransistor d’un optocoupleur en fourche

4.  Le schéma théorique du montage

Le schéma théorique du montage (cliquer pour agrandir)

5.  Le circuit du montage

Le schéma du montage à réaliser (cliquer pour agrandir)

6.  Explication du programme

6.1  Au niveau de la partie déclarative :

  • On déclare une variable de type int et de volatile : cette variable sera accessible à n’importe quel endroit du programme et notamment dans la routine d’interruption.

6.2  Au niveau de la fonction d’initialisation setup( ) :

  • On initialise l’interruption externe à l’aide de l’instruction attachInterrupt() du langage Arduino.
  • On initialise la connexion série

6.3  Au niveau de la boucle principale, la fonction loop ( ) :

  • Rien de spécial à ce niveau : tout se passe dans la routine de gestion de l’interruption.

6.4  Au niveau de la routine de gestion de l’interruption

  • Cette routine va être appelée à chaque fois qu’un front montant sera détecté sur la broche :
    • La variable de comptage est alors incrémentée
    • Le résultat est affiché dans la fenêtre Terminal du logiciel Arduino.

7.  Mise en oeuvre du programme

7.1  Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d’expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

7.2  Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l’IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
  • La fenêtre « Terminal » s’ouvre alors :
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :

7.3  Fonctionnement

  • Lorsque l’on passe un objet dans la fente de l’optocoupleur en fourche, la variable est incrémentée et le résultat est affiché dans la fenêtre Terminal du logiciel Arduino.

(cliquer sur l’image pour agrandir)

8.  Le programme complet en langage Arduino

A copier/coller directement dans l’éditeur Arduino

// — Programme Arduino —
// Trame de code générée par le générateur de code Arduino
// du site www.mon-club-elec.fr

// Auteur du Programme : X. HINAULT – Tous droits réservés
// Programme écrit le : 13/2/2011.

// ——- Licence du code de ce programme —–
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License,
//  or any later version.
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.

// ////////////////////  PRESENTATION DU PROGRAMME ////////////////////

// ——– Que fait ce programme ? ———
 /* Ce programme compte les impulsions en provenance d’un opto-coupleur en fourche
en utilisant l’interruption externe n°0 sur la broche 2 de la carte Arduino.
Le résultat est affiché dans le Terminal Série du logiciel Arduino.  */

// — Fonctionnalités utilisées —

// Utilise la connexion série vers le PC
// Utilise l’interruption externe 0 (broche 2)
// Utilise optocoupleur infra-rouge en fourche, type LTH301-7,

// ——– Circuit à réaliser ———

// La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)

// Broche 2 : La sortie du phototransistor d’un optocoupleur en fourche

// /////////////////////////////// 1. Entête déclarative ///////////////////////
// A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles…

ÉlectroniqueChamp électrique : les notions fondamentales expliquées simplement

// — Déclaration des constantes —

// — Inclusion des librairies —

// — Déclaration des constantes utiles —

// — Déclaration des constantes des broches E/S numériques —

// — Déclaration des constantes des broches analogiques —

// — Déclaration des variables globales —

volatile int comptageImpulsion=0; // variable accessible dans la routine interruption externe 0

// — Déclaration des objets utiles pour les fonctionnalités utilisées —

// ////////////////////////// 2. FONCTION SETUP = Code d’initialisation //////////////////////////
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// — ici instructions à exécuter 1 seule fois au démarrage du programme —

// ——- Initialisation fonctionnalités utilisées ——-  

Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission

attachInterrupt(0, gestionINT0, RISING); // attache l’interruption externe n°0 à la fonction gestionINT0()
// mode déclenchement possibles = LOW, CHANGE, RISING, FALLING

// ——- Broches en sorties numériques ——-  

// ——- Broches en entrées numériques ——-  

// ——- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ——-  

// ——- Initialisation des variables utilisées ——-  

} // fin de la fonction setup()
// ********************************************************************************

////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme //////////////////
// la fonction loop() s’exécute sans fin en boucle aussi longtemps que l’Arduino est sous tension

void loop(){ // debut de la fonction loop()

ÉlectroniqueBien chauffer son atelier d’électronique : confort, sécurité et continuité de travail

// tout se passe dans la fonction de gestion de l’interruption externe

} // fin de la fonction loop() – le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS ////////////////////

// ——————- fonction de gestion l’interruption externe n°0 (broche 2) —————-
// cette fonction est appelée à chaque fois que l’interruption a lieu selon le mode configuré (LOW, CHANGE, RISING, FALLING)

void gestionINT0() {// la fonction appelée par l’interruption externe n°0

comptageImpulsion=comptageImpulsion+1; // Incrémente la variable de comptage
// ATTENTION : delay() et millis() non dispo ici – données série perdues

//—- affiche le nombre d’impulsions sur le port série
Serial.print(« Nombre impulsions = « );
Serial.println(comptageImpulsion);

}

// ////////////////////////// AUTRES FONCTIONS DU PROGRAMME ////////////////////

// ////////////////////////// Fin du programme ////////////////////

 

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

Réagissez à cet article

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.

Partagez votre réaction