Nouvelles:

Une grosse mise à jour a été effectuée le 20/03/2026 :  corrections de bugs et  ajustement de sécurité. En cas de problème contacter le Grand Sachem, merci.

Menu principal

ATtiny85 (ou 45) - Simulateur de soudure à l'arc - 2 postes

Démarré par Ph Blondé, 01 Février 2025 à 18:51:35

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Ph Blondé

Bonjour à tous,

Je continue avec les Attiny et les quelques idées que j'avais pour réaliser des animations sur un réseau. Ici, il s'agit d'un simulateur de soudure à l'arc mais avec deux postes.

Le fonctionnement est simple : c'est une suite de séries de Flashes dont l'intensité, le nombre et la durée sont aléatoires. Entre deux séries il y a une extinction d'une durée, également aléatoire, comprise entre 0 et 4 s.

Voici mon court scénario :

- ANIMATION 1 - POSTE_SOUDURE_1
  • PREMIÈRE SÉRIE DE FLASHES DU POSTE_SOUDURE_1
  • TRÈS COURTE PAUSE
  • DEUXIÈME SÉRIE DE FLASHES DU POSTE_SOUDURE_1

- DÉLAIS ENTRE ANIMATION 1 ET ANIMATION 2

- ANIMATION 2 - POSTE_SOUDURE_2
  • PREMIÈRE SÉRIE DE FLASHES DU POSTE_SOUDURE_2
  • TRÈS COURTE PAUSE
  • DEUXIÈME SÉRIE DE FLASHES DU POSTE_SOUDURE_2

- DÉLAIS ENTRE ANIMATION 2 ET ANIMATION 3

- ANIMATION 3 – UNE SÉRIE DE FLASHES DU POSTE_SOUDURE_1

- DÉLAIS ENTRE ANIMATION 3 ET ANIMATION 4

- ANIMATION 4 – UNE SÉRIE DE FLASHES DU POSTE_SOUDURE_2

- DÉLAIS ENTRE ANIMATION 4 ET ANIMATION 1

C'est un exemple, naturellement, on peut modifier l'ordre et les effets tant dans leur longueur que dans les valeurs ou les répétitions.
Philippe Blondé
Un 59 dans le 22

Ph Blondé

#1
Le schéma d'une complexité sans pareil  :)  :) :

DEUX POSTES SOUDURE ARC 1.jpg


Et la réalisation :

DEUX POSTES SOUDURE ARC 2.JPG
Philippe Blondé
Un 59 dans le 22

Ph Blondé

Le code (le programme quoi  ::)  )

Comme à d'habitude j'essaye de faire au plus simple même si c'est un peu plus long.

// MODULE SOUDURE A L'ARC ; MAJ 2025-01-26 - Version 1
// Chargement à 8 MHz - Pour le chargement ne pas oublier : Programmateur = "Arduino as ISP"

// FONCTIONNEMENT
// Suite de séries de Flashes dont l'intensité, le nombre et la durée sont aléatoires.
// Entre deux séries : extinction d'une durée aléatoire comprise entre 0 et 4 s.

// La valeur des bornes mini/maxi des différentes "random" est directement écrite dans le code.
// On peut aussi déclarer ces bornes mini/maxi dans "DECLARATION DES VARIABLES"

// REPERAGE DES BROCHES D'UN ATtiny45 OU 85 :
// Broche 1 : Reset       Broche 8 : 5V
// Broche 2 : A3 ou 3     Broche 7 : A1 ou 2
// Broche 3 : A2 ou 4     Broche 6 : 1 (PWM)
// Broche 4 : GND         Broche 5 ; 0 (PWM)

// DECLARATION DES VARIABLES
const int Flash_1 = 0; // Broche 5 (PWM)
byte Intensite_Flash_1;
byte Duree_Flash_1;
byte Temps_Extinction_Entre_Deux_Flashes_1;
byte Nombre_De_Flashes_1_A_Faire;

const int Flash_2 = 1; // Broche 6 (PWM)
byte Intensite_Flash_2;
byte Duree_Flash_2;
byte Temps_Extinction_Entre_Deux_Flashes_2;
byte Nombre_De_Flashes_2_A_Faire;

byte Temps_Entre_Deux_Series_De_Flashes;
byte Nombre_De_Boucles;

void setup ()
{
  pinMode (Flash_1, OUTPUT);
  pinMode (Flash_2, OUTPUT);
}

void loop ()
{
  Temps_Entre_Deux_Series_De_Flashes = random (0, 4); // Entre 0 et 4 s

// ANIMATION 1 - POSTE_SOUDURE_1

// PREMIERE SERIE DU POSTE_SOUDURE_1
  Nombre_De_Flashes_1_A_Faire = random (10, 20);
  Intensite_Flash_1 = random (140, 255);
  Duree_Flash_1 = random (10, 80);
  Temps_Extinction_Entre_Deux_Flashes_1 = random (10, 50);
 
  Nombre_De_Boucles = 0;
  do
    {
      analogWrite (Flash_1, Intensite_Flash_1);
      delay (Duree_Flash_1);
      analogWrite (Flash_1, 0);
      delay (Temps_Extinction_Entre_Deux_Flashes_1);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Nombre_De_Flashes_1_A_Faire);
  analogWrite (Flash_1, 0);
  delay (1000);

// DEUXIEME SERIE DU POSTE_SOUDURE_1
  Nombre_De_Flashes_1_A_Faire = random (10, 20);
  Intensite_Flash_1 = random (140, 255);
  Duree_Flash_1 = random (10, 80);
  Temps_Extinction_Entre_Deux_Flashes_1 = random (10, 50);
 
  Nombre_De_Boucles = 0;
  do
    {
      analogWrite (Flash_1, Intensite_Flash_1);
      delay (Duree_Flash_1);
      analogWrite (Flash_1, 0);
      delay (Temps_Extinction_Entre_Deux_Flashes_1);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Nombre_De_Flashes_1_A_Faire);
  analogWrite (Flash_1, 0);


// DELAIS ENTRE ANIMATION 1 ET ANIMATION 2
  Nombre_De_Boucles = 0;
  do
    { 
      delay (1000);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes); 


// ANIMATION 2 - POSTE_SOUDURE_2

// PREMIERE SERIE DU POSTE_SOUDURE_2
  Nombre_De_Flashes_2_A_Faire = random (20, 45);
  Intensite_Flash_2 = random (140, 255);
  Duree_Flash_2 = random (10, 70);
  Temps_Extinction_Entre_Deux_Flashes_2 = random (10, 50);

  Nombre_De_Boucles = 0;
  do
    {
      analogWrite (Flash_2, Intensite_Flash_2);
      delay (Duree_Flash_2);
      analogWrite (Flash_2, 0);
      delay (Temps_Extinction_Entre_Deux_Flashes_2);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Nombre_De_Flashes_2_A_Faire);
  analogWrite (Flash_2, 0);
  delay (1000);

// DEUXIELE SERIE DU POSTE_SOUDURE_2
  Nombre_De_Flashes_2_A_Faire = random (20, 45);
  Intensite_Flash_2 = random (140, 255);
  Duree_Flash_2 = random (10, 70);
  Temps_Extinction_Entre_Deux_Flashes_2 = random (10, 50);

  Nombre_De_Boucles = 0;
  do
    {
      analogWrite (Flash_2, Intensite_Flash_2);
      delay (Duree_Flash_2);
      analogWrite (Flash_2, 0);
      delay (Temps_Extinction_Entre_Deux_Flashes_2);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Nombre_De_Flashes_2_A_Faire);
  analogWrite (Flash_2, 0);


// DELAIS ENTRE ANIMATION 2 ET ANIMATION 3
  Nombre_De_Boucles = 0;
  do
    {
      delay (1000);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes);


// ANIMATION 3 - POSTE_SOUDURE_1
  Nombre_De_Flashes_1_A_Faire = random (5, 30);
  Intensite_Flash_1 = random (140, 255);
  Duree_Flash_1 = random (10, 80);
  Temps_Extinction_Entre_Deux_Flashes_1 = random (10, 50);

  Nombre_De_Boucles = 0;
  do
    {
      analogWrite (Flash_1, Intensite_Flash_1);
      delay (Duree_Flash_1);
      analogWrite (Flash_1, 0);
      delay (Temps_Extinction_Entre_Deux_Flashes_1);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Nombre_De_Flashes_1_A_Faire);
  analogWrite (Flash_1, 0);


// DELAIS ENTRE ANIMATION 3 ET ANIMATION 4
  Nombre_De_Boucles = 0;
  do
    {
      delay (1000);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes); 


// ANIMATION 4 - POSTE_SOUDURE_2
  Nombre_De_Flashes_2_A_Faire = random (10, 60);
  Intensite_Flash_2 = random (140, 255);
  Duree_Flash_2 = random (10, 80);
  Temps_Extinction_Entre_Deux_Flashes_2 = random (10, 50);

  Nombre_De_Boucles = 0;
  do
    {
      analogWrite (Flash_2, Intensite_Flash_2);
      delay (Duree_Flash_2);
      analogWrite (Flash_2, 0);
      delay (Temps_Extinction_Entre_Deux_Flashes_2);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Nombre_De_Flashes_2_A_Faire);
  analogWrite (Flash_2, 0);


// DELAIS ENTRE ANIMATION 4 ET ANIMATION 1
  Nombre_De_Boucles = 0;
  do
    {
      delay (1000);
      Nombre_De_Boucles = (Nombre_De_Boucles + 1);
    }
  while (Nombre_De_Boucles <= Temps_Entre_Deux_Series_De_Flashes); 
}

Philippe Blondé
Un 59 dans le 22

Ph Blondé

J'ai utilisé des LEDs de 3 mm car cet ensemble sera placé dans une remise ; les plaquettes de « veroboard » sont  plus faciles à manipuler.

Si c'est pour une animation visible, préférer des LEDs  du type 0603 avec des fils émaillés déjà soudés  ;) .

Quelques instants de fonctionnement :


Pour le montage complet, compter dans les 5 Queuros.
Bon amusement
Philippe
Philippe Blondé
Un 59 dans le 22

Attiny

Merci Philippe pour cette nouvelle version de la soudure à l'arc :D

Attiny

Je me suis permis de mettre ton montage sur le simulateur WOKWI.
La simulation est visible en utilisant ce lien:

Ph Blondé

Citation de: Attiny le 03 Février 2025 à 14:49:56Je me suis permis de mettre ton montage sur le simulateur WOKWI.

La simulation est visible en utilisant ce lien:
Et tu as bien fait  :D


C'est génial ce truc! Je ne connaissais pas et le place dans les favoris.
Encore merci à toi.
Philippe Blondé
Un 59 dans le 22