Hâte-toi de bien vivre et pense
que chaque jour nouveau
est à lui seul une vie. 
 (Sénèque)
  

Gifs_animes_Signes_Avatars/Spirou.gifProgrammes - Orage et modélisme

bandeau2.jpg

 

Le modélisme cherche toujours à imiter la réalité de la façon la plus réaliste possible.

C'est ce que propose le présent article avec cette petite application pour simuler un orage sur un réseau de trains miniatures.

 

Schéma

Le schéma a été élaboré avec DesignSpark

Il peut être téléchargé ICI

ORAGE_SCHEMA_1.png

 

Circuit imprimé

Le PCB a été élaboré avec DesignSpark :

Il peut être téléchargé ICI => PCB_UNIVERSEL_08M2.pcb

Picaxe_feu_camp (2).png

PCB vu depuis le côté composants

N.B. le petit rectangle entouré d'une ellipse rouge correspond au dégagement pour la douille de la prise jack 3,5.

Taille du PCB : 45 x 40 mm

 

ORAGE_1.png

(La vue 3D a été construite avec SKETCHUP)

Lien vers la banque de modèles GOOGLE

 

 

Programme

Le programme a été créé avec LOGICATOR.

Il se présente sous forme de diagramme.

 

 

ORAGE_LOGICATOR_2.png

 

Le programme proposé est un programme multi-tâches avec 3 tâches.

DEBUT    DEBUT1   DEBUT2

Chaque programme s'occupe de générer des salves aléatoires d'éclairs sur une LED.

 

 

Analyse détaillée

Non, non ! Ne prenez pas peur !

Ce programme est BEAUCOUP plus simple que son apparence pourrait le laisser supposer.

En fait il est composé de trois ensembles [programme] - [procédure] identiques. Seuls les paramétrages des variables utilisées seront différents, afin de varier les cadences des éclairs et leurs durées.

 

 

Analyse du programme DEBUT 

Principe

La procédure [ECLAIR1] génère un éclair élémentaire de durée aléatoire.

Le programme [DEBUT] génère des salves d'éclairs toutes les 2 secondes.

 

 

ORAGE_LOGICATOR_4.png

 

Les 4 premières instructions déterminent le nombre d'éclairs dans chaque salve :

  • [B=Time] initialise la variable B à une valeur quelconque,
  • [Aléatoire B] génère un nombre au hasard entre 0 et 255.

N.B. la fonction [Aléatoire B] du PICAXE n'est pas vraiment aléatoire. A chaque démarrage du PICAXE elle va générer la MÊME série de valeurs en partant de la valeur B=0.

Pour rendre la fonction un peu plus aléatoire on force une valeur de départ pour la variable B grâce à [B=Time]. Ainsi la valeur de départ de la série aléatoire diffère à chaque utilisation et la série générée est différente.

 

  • [B=B/80] donne un résultat entier compris entre 0 et 3 ;
  • [B=B+1] donne un résultat compris entre 1 et 4 ;
    Ainsi une salve d'éclairs contient au moins 1 éclair.

Cet ensemble de 4 instructions détermine donc le nombre d'éclairs dans une salve.

 

  • [ECLAIR1] appelle la procédure qui va générer un seul éclair élémentaire ;
  • [Attendre 0,150] fixe le temps entre les éclairs d'une même salve à 150 ms ;
  • [DEC B] associée au test [B>0] décompte le nombre d'éclairs de la salve ;
     
  • [Attendre 2] détermine l'intervalle de temps entre deux salves successives.

 
⇒ ainsi, toutes les 2 secondes le programme génère une salve de 1 à 4 éclairs.

 

 

Analyse de la procédure associée ECLAIR1 :

 

La procédure génère un éclair et un seul à la fois.

Pour un meilleur réalisme il est préférable que chaque éclair d'une salve ait une durée différente.

C'est ce que réalise la procédure [ECLAIR1] :

ORAGE_LOGICATOR_5.png

Les 5 premières instructions déterminent la durée de l'éclair :

  • [A=Time] et [Aléatoire A] génèrent un nombre aléatoire entre 0 et 255,
  • [A=A/80] renvoie un résultat compris entre 0 et 3,
  • [A=A*8] donne une valeur comprise entre 0 et 24
  • [A=A+1] donnent un résultat compris entre 1 et 25

ORAGE_LOGICATOR_3.png

L'instruction [Générer impulsion ...] génère une impulsion de 300 micro-secondes sur la sortie C0 du PICAXE (Sortie n° 0).

Cette valeur correspond à la durée la plus courte possible pour un éclair.

Pour obtenir des éclairs de durée plus longue il suffit de parcourir plusieurs fois cette instruction.

C'est ce que réalise la boucle [Générer impulsion] - [Dec A] - [A>0]

 

 

 

Ainsi à chaque appel de la procédure [ECLAIR1] la variable [A] prend une valeur différente entre 1 et 25. L'éclair correspondant durera de (300 x 1 = 300 µs) à (300 x 25 = 7500 µs) soit 7 milli-secondes, par paliers de 300µs.

⇒ chaque éclair d'une même salve est donc susceptible de durer de 300 µs à 7 ms.

 

N.B. l'instruction [A=A*8] permet d'obtenir 25 durées d'éclairs différentes. Ce n'est peut-être pas nécessaire.
Si on remplace [A=A*8] par [A=A*4] on obtiendra 13 durées différentes, ce qui semble encore très raisonnable.

 

 

Finalement, toutes les 2 secondes le programme génère une salve de 1 à 4 éclairs, chaque éclair ayant une durée différente.

 

Bien entendu les couples [Debut1] - [ECLAIR2] et [Debut2] - [ECLAIR3] fonctionnent de la même façon.

Seuls les paramétrages changent.

 

Grâce à ce groupe de trois programmes qui fonctionnent en multi-tâches on génère donc trois séries d'éclairs indépendantes :

[Debut] - [ECLAIR1] :

  • [B=B/60] - [B=B+1] permet d'obtenir de 1 à 5 éclairs par salve,
  • [Attendre 0,150] espace les éclairs d'une même salve de 150 milli-secondes,
  • [Attendre 2] espace les salves de 2 secondes.
  • [Générer impulsion...] génère une impulsion élémentaire de 300µs

 

[Debut1] - [ECLAIR2] :

  • [C=C/60] - [C=C+1] permet d'obtenir de 1 à 5 éclairs par salve,
  • [Attendre 0,120] espace les éclairs d'une même salve de 120 milli-secondes,
  • [Attendre 3] espace les salves de 3 secondes.
  • [Générer impulsion...] génère une impulsion élémentaire de 500µs

 

[Debut2] - [ECLAIR3] :

  • [E=E/60] - [E=E+1] permet d'obtenir de 1 à 5 éclairs par salve,
  • [Attendre 0,110] espace les éclairs d'une même salve de 110 milli-secondes,
  • [Attendre 4] espace les salves de 4 secondes.
  • [Générer impulsion...] génère une impulsion élémentaire de 600µs

 

Le réalisme obtenu est tout à fait satisfaisant.

 

On peut bien sûr modifier les valeurs des paramètres pour obtenir plus ou moins d'éclairs par salve, des éclairs plus ou moins longs ou des espacements plus ou moins longs entre les salves.

On pourrait même ajouter un quatrième couple [Debut3] - [ECLAIR4] puisque le PICAXE 08M2 accepte jusqu'à 4 tâches simultanées.
Dans ce cas il faut penser à utiliser d'autres variables pour la durée et le nombre d'éclairs.

 

 

Amusez-vous bien.

J'espère que vous n'avez pas peur de l'orage.wink

 

 

N.B. Mon camarade Alain pense que ce serait bien si, en plus, on avait le son du tonnerre. Il planche sur le sujet.

 

 

 

Variante

 

Un orage ça ne dure pas.

Même que ça finit par s'éloigner en s'atténuant.

 

C'est ce que réalise la version n°2 du programme :

  • après environ 120 secondes l'orage commence à s'atténuer,
  • après environ 160 secondes il s'arrête tout seul.

 

Il suffit de trois petits ajouts :

VARIANTE_ORAGE_1.png

 

Voyons cela de plus près pour le programme [DEBUT] :

ORAGE_LOGICATOR_4.png

CLIC pour agrandir

A la fin de la séquence, au lieu de boucler tout de suite sur [B=time], on ajoute 3 instructions :

  • [Inc G] va incrémenter la variable [G] à chaque salve d'éclairs sur C0.
  • [G>=60] teste la valeur de [G],
  • quand celle-ci atteint 60, (soit après environ 120 secondes de fonctionnement) l'instruction [Suspendre 0] arrête définitivement le programme [DEBUT].

⇒ la sortie C0 n'émet plus d'éclairs.

L'orage s'atténue.

 

VARIANTE_ORAGE_2.png

Modification

 

De la même façon :

  • on bloque [DEBUT1] au bout de 45 cycles d'environ 3 secondes, soit environ 135 secondes.
  • on bloque [DEBUT2] au bout de 40 cycles d'environ 4 secondes, soit environ 160 secondes.

 

L'orage commencera donc à s'atténuer au bout de 120 secondes, diminuera encore après 135 secondes et s'arrêtera au bout de 160 secondes.

 

Remarque

Il est nécessaire d'utiliser trois nouvelles variables : [G], [H] et [J] pour compter le nombre de cycles maxi de chaque processus [DEBUT], [DEBUT1] et [DEBUT2].

En faisant varier les valeurs maximales de ces trois variables on peut modifier la durée totale de l'orage ainsi que sa décroissance.

 

Très important

Pour redémarrer l'orage il faut couper puis rétablir l'alimentation.

Pour cela il suffit d'installer un petit poussoir, enclenché en permanence. Un bref appui sur le contact coupe puis rétablit l'alimentation : le cycle repart.


ATTENTION !
 
Les instructions [Suspendre x] stoppent le déroulement de chaque processus [DEBUT], [DEBUT1] et [DEBUT2].
Lorsque les trois processus sont arrêtés (orage terminé), le PICAXE est totalement inactif, et cela aussi longtemps qu'il reste alimenté.
 donc le PICAXE est aussi bloqué pour toute nouvelle injection du programme.
 

Là aussi il faut couper puis rétablir l'alimentation avant de ré-injecter le nouveau programme.

 

 

Téléchargements

 

Avant de télécharger le programme, lire CECI.
Ensuite, télécharger le programme BLOCKLY bientôt
 ICI

ou :
télécharger le programme LOGICATOR : 
ICI

Looney_tunes.png

That's all Folk's

 

 


Date de création : 23/01/2014 - 14:52
Dernière modification : 28/11/2017 - 14:18
Catégorie :
Page lue 2930 fois


Imprimer l'article Imprimer l'article

^ Haut ^