LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

samedi 27 avril 2024

Visiteurs connectés : 53

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

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 »

LaBox, Une Centrale DCC polyvalente et abordable (1)

LaBox, Une Centrale DCC polyvalente et abordable (2)

LaBox, Une Centrale DCC polyvalente et abordable (3)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

La PWM : Qu’est-ce que c’est ? (1)

La PWM : Qu’est-ce que c’est ? (2)

La PWM : Qu’est-ce que c’est ? (3)

La PWM : Qu’est-ce que c’est ? (4)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Contrôleur à télécommande infrarouge pour centrale DCC++

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

La carte Satellite V1 (1)

La carte Satellite V1 (2)

La carte Satellite V1 (3)

La carte Satellite V1 (4)

La carte Satellite V1 (5)

Block Automatique Lumineux à 8 cantons analogiques

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco

Passage à niveau géré par Arduino (5)

Éclairer le réseau (3)

Éclairer le réseau (2)

Passage à niveau géré par Arduino (4)

Éclairer le réseau (1)

Une manette simple et autonome pour LaBox

Passage à niveau géré par Arduino (3)

Souris et centrale sans fil

Passage à niveau géré par Arduino (2)

Un programme pour régler facilement les servos moteurs avec un ESP32

Enseigne de magasin

Feux tricolores

TCO Web interactif avec des ESP32 et des ESP8266 (5)

Multi-animations lumineuses

TCO Web interactif avec des ESP32 et des ESP8266 (4)

TCO Web interactif avec des ESP32 et des ESP8266 (3)

TCO Web interactif avec des ESP32 et des ESP8266 (2)

TCO Web interactif avec des ESP32 et des ESP8266 (1)

Affichage publicitaire avec Arduino (2)

Affichage publicitaire avec Arduino (1)

Éclairer le réseau (4)

Va-et-vient pour deux trains

Boitier 3D pour la station DCC minimale

Mon premier décodeur pour les aiguillages DCC

Ma première manette pour les aiguillages DCC

Banc de test pour les décodeurs DCC

CDM-Rail pour Ma première centrale DCC (2)

CDM-Rail pour Ma première centrale DCC (1)

Rocrail pour Ma première centrale DCC

JMRI pour Ma première centrale DCC

Éclairer le réseau (5)

Une horloge à échelle H0

Etude d’un passage à niveau multivoies

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Un automatisme de Passage à Niveau

Simulateur de soudure à arc

La rétro-signalisation sur Arduino

La génèse d’un réseau 100% Arduino

Calcul de la vitesse d’un train miniature avec l’Arduino

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Une animation sonore

Une barrière infrarouge

Un TCO xpressnet

Un capteur RFID

Passage à niveau géré par Arduino (1)

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Chenillard de DEL

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"

Réalisation d’un affichage de gare ARRIVEE DEPART

Ménage à trois (Ordinateur, Arduino, réseau)

Réalisation d’un va-et-vient automatique et réaliste

Communications entre JMRI et Arduino

Annonces en gare avec la RFID

Une croix de pharmacie animée avec Arduino UNO

Réalisation d’un wagon de mesure (distance et vitesse)

Les derniers articles

LaBox, Une Centrale DCC polyvalente et abordable (3)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (1)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (2)


Dominique, msport, Thierry

Un programme pour régler facilement les servos moteurs avec un ESP32


bobyAndCo

TCO Web interactif avec des ESP32 et des ESP8266 (5)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (4)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (3)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (2)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (1)


utpeca

Affichage publicitaire avec Arduino (2)


catplus, Christian

Les articles les plus lus

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

La PWM : Qu’est-ce que c’est ? (1)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

La rétro-signalisation sur Arduino

Chenillard de DEL

Comment piloter trains et accessoires en DCC avec un Arduino (2)