LOCODUINO

Simulateur de soudure à arc

.
Par : Christian

DIFFICULTÉ :

Pour simuler la lumière émise par un poste de soudure à l’arc, il suffit de commander une DEL blanche haute luminosité, comme on en trouve aujourd’hui dans les lampes torches, en la faisant s’allumer selon des flashes très courts, très rapprochés et se succédant de façon aléatoire.

C’est d’ailleurs le côté aléatoire des événements qui est difficile à reproduire avec de la logique câblée. Un tel montage avait été proposé dans Loco-Revue N° 603 de mai 1997 et il était basé sur trois circuits intégrés (plus quelques autres composants). Un des circuits fabriquait des trains d’impulsions à des fréquences différentes et ces signaux étaient ensuite autorisés ou non par un compteur décimal, à se recombiner entre eux grâce à des fonctions ET ou bien OU. C’était tout de même assez compliqué...

Train d’impulsions

Le montage que je vous propose fait appel à un module Arduino, une DEL blanche et une résistance, et son comportement est réglable en fonction de vos goûts. La figure 1 montre un train d’impulsions émis par le programme, pour allumer la DEL. Ce train d’impulsion est appelé cycle de soudure. Le cycle est constitué d’un certain nombre d’événements, chaque événement étant constitué d’un flash d’une certaine durée, suivi d’une période intermédiaire d’une certaine durée également, au cours de laquelle aucune lumière n’est émise. Entre deux cycles existe une période de repos, pendant laquelle le soudeur contrôle son travail ou bien positionne sa pièce autrement.

Figure 1
Figure 1
Les trains d’impulsions

L’aléatoire pour éviter la reproductibilité des flashes

Notre programme permet de générer de façon aléatoire, les périodes entre deux cycles, pour chaque cycle le nombre d’événements, pour chaque événement les durées d’allumage et de repos de la DEL. Le résultat est un comportement complètement aléatoire des trains d’impulsions. Tout est réglable de manière à obtenir le fonctionnement le plus crédible possible lié à une activité humaine, mais cela permet aussi d’avoir des comportements différents pour plusieurs postes de soudure à arc, si le montage est reproduit en plusieurs exemplaires sur le même réseau.

Chaque donnée générée par le programme de façon aléatoire, a sa valeur comprise entre une valeur minimum et une valeur maximum. C’est en jouant sur les valeurs minimum et maximum pour chaque paramètre, qu’on peut modifier le comportement de notre simulateur. Avant d’aller plus loin, je vous invite à lire l’article « Comment gérer l’aléatoire ? » qui explique pourquoi et comment faire appel à l’aléatoire dans un programme.

Dans le langage Arduino, la fonction qui génère un nombre aléatoire est la fonction random. Elle est décrite à cette page.

Nous l’utiliserons sous sa forme : parametre = random (min, max) ;. parametre est alors compris entre min et (max - 1). parametre, min et max doivent être déclarés de type long.

Dans un programme, les nombres aléatoires sont toujours générés à partir d’une valeur de départ (le seed). La fonction randomSeed (voir aussi http://arduino.cc/en/Reference/Rand...) permet d’initialiser cette valeur de départ, par exemple randomSeed(valeur). Si valeur est une donnée fixe, à chaque fois qu’on lance (ou reset) le programme, celui-ci générera toujours la même suite de nombres aléatoires. Ce n’est pas très gênant (qui se rappellera de la suite ?), mais on peut faire mieux si valeur est aussi une donnée aléatoire. Ceci peut être obtenue par une lecture d’une entrée analogique laissée en l’air (non connectée) car elle aura tendance à capter les rayonnements parasites et donnera un peu n’importe quoi. L’initialisation se fait alors par : randomSeed (analogRead (0)) ;. bien entendu, il faut laisser l’entrée analogique A0 en l’air.

La figure 2 (dessinée avec Fritzing) montre le montage à réaliser : la résistance doit être choisie en fonction des caractéristiques de la DEL que vous utilisez. Pour calculer sa valeur, reportez-vous à l’article « Fonctionnement et pilotage d’une DEL ».

Figure 2
Figure 2
Le montage qui ne nécessite que trois composants

Le programme suivant fait fonctionner le montage. Les paramètres sont présentés dans les commentaires. Les valeurs mini et maxi peuvent être modifiées comme je l’ai expliqué. Les valeurs maxi doivent être égales à ce que vous voulez plus 1, à cause du comportement de la fonction random (voir un peu plus haut). Dans ce programme, ce n’est pas trop important de tenir compte de cela, mais je vous en parle si vous voulez utiliser random pour d’autres applications.

Les choix que j’ai initialement faits sont les suivants :

  • période entre deux cycles, comprise entre 1,5 et 7 s.
  • nombre d’événements par cycle, compris entre 10 et 20
  • durée du flash, compris entre 10 et 100 ms
  • durée intermédiaire (LED éteinte), comprise entre 10 et 30 ms.

Bien entendu, vous pouvez choisir d’autres valeurs.

Voici le programme :

// Ce programme commande une LED blanche
// pour simuler un poste de soudure à l'arc.
// Il fait appel à la fonction random qui
// génère des nombres aléatoires.
  
// Duree_flash est la durée d'un flash.
// Duree_int est la durée entre deux flashes.
// Duree_flash et Duree_int forment un événement.
// Nbre_even est le nombre d'événements au cours
// d'un cycle de soudure
// P_repos est la durée entre deux cycles de soudure.
   
// Toutes ces données sont aléatoires mais bornées
// entre une valeur minimum et une valeur maximum.
// En jouant sur l'intervalle, on peut simuler au
// mieux l'effet de soudure à l'arc.
// Broche est la broche sur laquelle la LED est 
// connectée.
   
// Initialisation des variables
const byte Broche = 13 ;
const long Duree_flash_mini = 10 ;
const long Duree_flash_maxi = 101 ;
const long Duree_int_mini = 10 ;
const long Duree_int_maxi = 31 ;
const long Nbre_even_mini = 10 ;
const long Nbre_even_maxi = 21 ;
const long P_repos_mini = 1500 ;
const long P_repos_maxi = 7001 ;
    
// Fonction d'initialisation, nécessaire pour mise au point
void setup ()
{
  randomSeed (analogRead (0)) ;
  pinMode (Broche, OUTPUT) ;
}
     
// Corps du programme
void loop ()
{
  long Nbre_even = random (Nbre_even_mini, Nbre_even_maxi) ;
  for (long i = 1 ; i <= Nbre_even ; i++)
  {
    long Duree_flash = random (Duree_flash_mini, Duree_flash_maxi) ;
    long Duree_int = random (Duree_int_mini, Duree_int_maxi) ;
    digitalWrite (Broche, HIGH) ;
    delay (Duree_flash) ;
    digitalWrite (Broche, LOW) ;
    delay (Duree_int) ;
  }
  long P_repos = random (P_repos_mini, P_repos_maxi) ;
  delay (P_repos) ;
}

J’espère que cette application vous plaira et qu’elle agrémentera votre réseau.

16 Messages

  • Simulateur de soudure à arc 14 avril 2015 09:14, par Jean-Claude (papybricolo)

    SUPER... c’est surement une des applications que je vais installer sur mon réseau

    Répondre

    • Simulateur de soudure à arc 14 avril 2015 10:26, par Christian Bézanger

      Content que ce montage te plaise ; du point de vue électronique, il n’y a que deux composants à rajouter au module Arduino !
      Avec certaine DEL haute luminosité, il faut prendre les précautions qui s’imposent car on peut être vite ébloui avec risque de lésions rétiniennes si on la fixe trop longtemps (phase d’essai). Une fois cette DEL placée dans l’atelier de soudure, le problème ne se pose plus, puisqu’on ne regarde que la lumière diffusée et non la lumière directe.

      Répondre

  • Simulateur de soudure à arc 23 juin 2015 07:41, par David

    Bonjour,
    Super petit sketch !
    Du coup je me suis amusé à l’interpréter pour 3 diodes en modifiant les paramètres de Duree_flash et Duree_int et à diminuer le P_repos. Avec deux diodes jaunes et une rouge, on obtient un magnifique rendu de feu de cheminée. Si ça peut donner des idées.
    Merci

    Répondre

  • Simulateur de soudure à arc 24 mai 2016 10:25, par Cardeaud

    Votre article m’a fait penser qu’il pourrait se superposer un grésillement à l’éclat lumineux. Pour l’instant j’ai trouvé la possibilité d’émettre un grésillement aléatoire qui me semble se rapprocher du bruit de la soudure à l’arc. Voici le sketch :

    int buzzer = 9;// Borne de sortie 9
    long alea1;
    long alea2;
     
    void setup()
    {
      pinMode(buzzer,OUTPUT);// Définir la sortie du buzzer
    }
    
    void loop()
    {
      int i;// Définir 1 variable pour faire des boucles
      {
        for(i=0; i<20; i++)// Premier son à une fréquence
        {
          alea1 = random (1, 70);
          alea2 = random (1,50);
          digitalWrite(buzzer, HIGH);// Faire du bruit
          delay(alea1);// Attendre 1 à 70 ms
          digitalWrite(buzzer, LOW);// Silence
          delay(alea2);// Attendre 1 à 50 ms
        }
      }
    }

    Je vais essayer de le mixer à votre programme pour avoir un son synchrone de la lumière.

    Répondre

  • Simulateur de soudure à arc 24 mai 2016 11:18, par Cardeaud

    Voici le programme définitif, j’ai du modifier les paramètre de temps car en intercalant le buzzer le programme met plus de temps à s’exécuter et l’effet est moins bon.

    // Initialisation des variables
    int Buzzer = 9 ;
    const byte Broche = 13 ;
    const long Duree_flash_mini = 10 ;
    const long Duree_flash_maxi = 70;
    const long Duree_int_mini = 10 ;
    const long Duree_int_maxi = 31 ;
    const long Nbre_even_mini = 10 ;
    const long Nbre_even_maxi = 21 ;
    const long P_repos_mini = 100;
    const long P_repos_maxi = 800 ;
         
    // Fonction d'initialisation, nécessaire pour mise au point
    void setup ()
    {
        randomSeed (analogRead (0)) ;
        pinMode (Broche, OUTPUT) ;
        pinMode (Buzzer, OUTPUT) ;
    }
         
    // Corps du programme
    void loop ()
    {
      long Nbre_even = random (Nbre_even_mini, Nbre_even_maxi) ;
      for (long i = 1 ; i <= Nbre_even ; i++)
      {
        long Duree_flash = random (Duree_flash_mini, Duree_flash_maxi) ;
        long Duree_int = random (Duree_int_mini, Duree_int_maxi) ;
        digitalWrite (Broche, HIGH) ;
        digitalWrite (Buzzer, HIGH) ;
        delay (Duree_flash) ;
        digitalWrite (Broche, LOW) ;
        digitalWrite (Buzzer, LOW) ;
        delay (Duree_int) ;
      }
      long P_repos = random (P_repos_mini, P_repos_maxi) ;
      delay (P_repos) ;
    }

    L’exercice pourrait se prolonger en mettant un HP à la place du Buzzer

    Répondre

  • Simulateur de soudure à arc 27 juillet 2019 11:33, par MIGLIERINA Alain

    Bonjour,

    Je possède un module de simulateur de soudure à l’arc, comment puis-je le connecter à ma carte arduino. l’idée serait de le faire fonctionner quelques secondes puis d’avoir une temporisation et un nouveau fonctionnement ainsi de suite et ceux tant que l’arduino est en fonctionnement.

    Merci de votre retour

    Amicalement

    Répondre

    • Simulateur de soudure à arc 28 juillet 2019 10:09, par Christian

      Bonjour Alain,

      Votre simulateur de soudure fait sans doute appel à des circuits intégrés, ce qui veut dire que la séquence de flash n’a rien d’aléatoire ; même si elle le parait, elle se répète inlassablement.
      Aussi je ne comprends pas pourquoi c’est ce simulateur que vous voulez relier à Arduino alors que celui-ci peut reconstituer les séquences de flash jamais de la même manière, donc de façon plus réaliste.
      Mais c’est tout à fait votre droit : dans ce cas, l’Arduino ne fera que commander votre simulateur. Ceci peut se faire en direct si votre simulateur est alimenté en 5 V et peu gourmand en courant, mais comme je ne sais rien de ce simulateur, le mieux que je puisse vous recommander, c’est de faire appel à un petit relais (ou un transistor) qui sera commandé par Arduino et qui permettra d’alimenter ou non votre simulateur dans le courant qui lui est nécessaire.
      Toutes ces techniques ont été largement décrites sur ce site : consultez par exemple le cours d’électronique que nous avons publié. Mais sincèrement, je trouve dommage de faire appel à une carte Arduino pour cela... qui n’apportera rien de plus qu’un simple interrupteur.
      Bien cordialement.

      Christian

      Répondre

  • Simulateur de soudure à arc 25 juillet 2020 17:26, par Hervé MERCIER

    Bonjour,
    Comme je suis nul en Programmation :
    Peut-on mettre un HP sans modifier le programme ?
    Où brancher le buzzer où l’HP ?
    Merci

    Répondre

  • Simulateur de soudure à arc 25 juillet 2020 18:00, par msport

    Il faudrait quand même faire l’effort de lire les articles d’initiation, sinon vous allez être déçu.

    int Buzzer = 9 ; veut dire qu’il faut brancher le buzzer entre la broche 9 et le GND. (le + du buzzer coté pin 9)

    Voir en ligne : Arduino : toute première fois !

    Répondre

  • Simulateur de soudure à arc 7 novembre 2021 10:48, par Julaye

    Bonjour,

    J’ai fait différentes variations autour de votre petit algorithme, et c’est plutot réussi. Avec une petite led bleue en compagnon de la led blanche, c’est même encore mieux.

    J’ai ensuite branché un buzzer et là, je dois dire, que le bruit ne me parait absolument pas ressemblant. J’ai essayé en digital et en PWM avec différentes valeurs, rien à faire.

    Le son est bien synchronisé avec la lumière mais le bruit généré ressemble plutot à une sonnette d’immeuble des années 60 :)

    Faut-il un buzzer particulier, est-il préférable de mettre un petit HP, etc ?

    Voir en ligne : https://github.com/Julaye/Lumieres/

    Répondre

    • Simulateur de soudure à arc 7 novembre 2021 11:00, par Christian

      Bonjour Julie,
      Mon simulateur de soudure à arc remonte déjà à pas mal de temps (début d’Arduino) et avec un collègue, nous avions publié des améliorations sur le forum de Loco-Revue, notamment une LED bleue en plus de la blanche, et un petit haut-parleur. Mais le bruit obtenu n’était pas terrible, il faut bien le reconnaître.
      Depuis, les progrès technologiques sont tels que si je devais sonoriser ce simulateur, j’utiliserai des sons enregistrés et le DF-Player Mini, que j’ai utilisé pour le PN ou pour les annonces en gare. Le son ne serait pas forcément synchronisé avec les flash, mais je pense que cela ne se verrait pas. Par contre, la longueur du son joué serait dépendante de la séquence de flash (on joue le son quand la séquence commence et on arrête le son quand elle finit).
      Je pense qu’un tel montage serait extrêmement plus réaliste que ce qu’on peut obtenir avec un buzzer.

      Répondre

      • Simulateur de soudure à arc 9 novembre 2021 10:27, par Julaye

        Bonjour Christian,

        Oui j’avais noté de piloter deux leds, une blanche forte et une bleu.

        Je vais regarder le DF-Player mini, ça peut etre intéressant de le connecter à mon petit automate.

        Merci

        Répondre

  • Simulateur de soudure à arc 27 novembre 2022 15:02, par F.Sylvain

    bonjour
    retraité passionné de modelisme ferroviaire
    je viens de me mettre a l arduino
    vos articles sont tres interessants,
    je viens de realiser le simulateur de soudure super
    continuez a nous faire beneficier de vos travaux merci

    Répondre

  • Simulateur de soudure à arc 30 novembre 2023 00:32, par collet

    Bonjour, si on part de zéro on est sur quel budget pour la led qui scintille avec le arduino qui doit aussi être acheté.

    Merci

    Répondre

    • Simulateur de soudure à arc 30 novembre 2023 09:50, par Christian

      Un kit d’initiation coûte une vingtaine d’euros sur le marché asiatique et vous permettra de réaliser ce montage, et d’autres afin de découvrir Arduino.
      Sinon, juste pour le montage, 20 euros pour une carte Uno R3 et la LED peut être récupérée sur une vieille guirlande de Noël, plus une résistance à 50 cents maxi.

      Répondre

Réagissez à « Simulateur de soudure à arc »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Projets »

Les derniers articles

Les articles les plus lus