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

PICAXE/picaxe2.pngPICAXE - Feu de camp

Quoi de plus sympa qu'un feu de camp qui flamboie à quelques mètres de la tente.

Inquiétant ce feu de broussailles qui se propage sur la colline.

Je vous propose de simuler un feu de bois grâce à un petit montage basé sur un PICAXE 08M2 et qui constituera une animation sympathique pour votre réseau de trains miniatures.

 

 

 

Schéma

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

Il peut être téléchargé ICI => IR_RECEPTEUR_4_VOIES_SORTIES_DIRECTES_LEDS_V1.sch

 

Picaxe_feu_camp (1).png

Le schéma tel qu'il est présenté ci-dessus n'est pas uniquement destiné à la simulation d'un feu de bois.

Il a été conçu pour une utilisation générale avec les possibilités suivantes :

  • 4 sorties directes avec un courant de sortie de l'ordre de 10 à 15 mA
  • ou 4 sorties pour servo-moteurs
  • 1 entrée avec capteur infrarouge pour être commandé par la télécommande PICAXE TVR10
  • ou 1 entrée logique (contact par exemple).
  • programmation in situ du PICAXE.

 

Le projet "feu de camp" utilise seulement :

  • l'entrée infrarouge,
  • les sorties C1 et C2 qui alimentent LED2 (rouge) et LED3 (ambre),
    Les sorties LED1 et LED4 ne sont pas utilisées ici.

Attention : pour des raisons pratiques (connecteurs femelles disponibles dans mes tiroirs) j'ai fait le choix de connecter chaque LED entre la sortie et le +5V.

Particularité : R6 et LED5 servent de témoin de programmation :

  • si le PICAXE est vierge (avant sa première programmation) LED5 clignote lentement à la mise sous tension,
  • pendant le chargement d'un programme, LED5 clignote à faible luminosité.

 

 

Circuit imprimé

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

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

Picaxe_feu_camp (2).pngPCB 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

 

Feu_de_camp_1.jpg

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

Lien vers la banque de modèles GOOGLE

 

 

Programme

Le programme a été créé avec LOGICATOR, version complète (payante).

Il se présente sous forme de diagramme.

Il peut être téléchargé ICI => FEU_ROUGEOYANT_2_LEDS.plf

 

ATTENTION ! un fichier ".plf" est  descripteur de l'organigramme et de l'environnement de programmation sous forme d'un SIMPLE TEXTE AVEC BALISES. Le téléchargement va afficher ce texte directement dans le navigateur ou dans un éditeur de textes (et pas le diagramme lui-même).

Il suffit alors de faire Fichier / Enregistrer sous etc ...
... en faisant bien attention, si le fichier ".plf" a été ouvert dans un éditeur quelconque, que ce dernier n'ajoute pas ".txt" à la suite de ".plf". Sinon effacer cet ajout avant d'enregistrer.

Le fichier peut alors être chargé et utilisé dans LOGICATOR.

 

 

Le programme proposé est un programme multi-tâches avec 4 tâches (le maximum pour un PICAXE 08M2).

DEBUT ...FIN est le programme principal

DEBUT1 est le programme d'arrêt et de remise à zéro.

DEBUT2 et DEBUT3 sont les tâches qui génèrent les séquences lumineuses pour LED2 et LED3

 

Pourquoi un programme multi-tâches pour un problème qui semble si simple ?

On aurait pu imaginer de créer une procédure, appelée par le programme principal, à la place des tâches DEBUT2 et DEBUT3.
 

Mais :

  • il n'est alors plus possible d'utiliser l'entrée infrarouge pour stopper la séquence tant que cette séquence est en cours d'exécution.
  • en fin de séquence, si on veut se donner la possibilité de stopper le processus, la fonction infrarouge doit pouvoir ATTENDRE un signal => pendant ce temps le feu est arrêté dans un état fixe NON REALISTE.
  • on ne peut pas utiliser la fonction INTERRUPTION en s'appuyant sur l'entrée infrarouge puisqu'on n'est pas en présence d'un simple niveau logique.

 

Il fallait donc imaginer un autre fonctionnement :

  • 4 tâches,
  • le programme principal appelle une procédure qui bloque les trois autres tâches,
  • il attend indéfiniment une commande infrarouge,
  • si une commande différente du code 54 est détectée le programme retourne attendre,
  • dès que le code 54 est reçu, le programme principal active les tâches DEBUT1, DEBUT2 et DEBUT3
  • il passe la main en se désactivant lui-même : instruction [Suspendre 0]
  • les deux tâches DEBUT2 et DEBUT3 se mettent alors en fonction pour générer les séquences d'allumage et d'extinction des LED's.
  • DEBUT1 devient le programme principal.
  • l'arrêt de la séquence (extinction du feu ou de l'incendie) est alors possible de deux façons différentes : soit par l'envoi prolongé (5 secondes) du code 54 avec la télécommande IR, soit au bout d'une durée déterminée dans DEBUT3 (voir ci-dessous).
  • dans les deux cas (extinction volontaire ou temps limite) on aboutit à une RAZ de l'ensemble des programmes qui permet de remettre le système dans l'état de départ.

 

ANALYSE DETAILLEE :

Instruction "Entrée Infrarouge A" du programme principal "DEBUT" :

 

Picaxe_feu_camp (6).png

Picaxe_feu_camp (7).png
  • l'instruction [Entrée Infrarouge A] est  paramétrée pour attendre indéfiniment un ordre (Temps_écoulé=0).
  • quand un ordre arrive on attend 0,5 s pour laisser à l'opérateur le temps de relâcher la touche.
  • si le code reçu est différent de 54 la variable est mise à 100 (valeur "parking") et on attend un nouveau code IR.

Ne pas activer la compatibilité entre touche et donnée reçue.

 

Programme "DEBUT1"

 

Picaxe_feu_camp (8).png Picaxe_feu_camp (9).png

Il a pour fonction d'effectuer une RAZ du système en cas d'appui prolongé sur la touche code 54.

Or ce programme fonctionne SIMULTANNEMENT avec DEBUT2 et DEBUT3.

Il partage le temps du processeur avec eux.

Il ne doit donc pas les bloquer.

Pour cela on fixe "Temps_écoulé=0,1" dans [Entrée Infrarouge C] de façon à ne pas attendre indéfiniment un envoi du code 54.

 

Extinction au bout d'une durée déterminée

En fait on ne détermine pas un temps précis mais on compte combien de fois on a parcouru la boucle DEBUT2 (variable [T] comptée par l'instruction Inc T).

⇒ le temps maxi de fonctionnement dépend donc du temps de parcours de la boucle DEBUT2.

 

On teste la valeur de la variable [T] dans la séquence DEBUT3.

Si T>=200, alors on effectue une RAZ et l'ensemble des tâches est remis dans l'état de départ. Le programme est prêt à redémarrer.

La valeur de test de [T] peut être réglée entre 1 et 255, ce qui donne une durée de fonctionnement qui va de moins d'une minute à plus d'une heure.

FEU_DE_CAMP_DUREE_MAX.png

N.B. on aurait pu mettre l'incrémentation et le test dans la même boucle.

 

Programme DEBUT2

 

On utilise la fonction MLI pour régler la luminosité des LED's, en faisant varier le rapport cyclique.

L'avantage de cette fonction MLI est que, une fois lancée, elle se déroule de façon AUTONOME sans bloquer les autres processus.

 

ATTENTION !

  • MLI 2,400,10% correspond à une LED fortement éclairée.
  • MLI 2,4000,96% correspond à une LED presque éteinte.

... ceci parce que dans le schéma et sur le PCB, les deux LED's sont connectées entre la sortie et le +5V (et non pas entre la sortie et la masse).

 

Programme DEBUT3

 

LE 08M2 ne possède qu'une seule sortie qui supporte la fonction MLI : c'est la sortie 2 (C2).

Dans DEBUT3 on utilise donc la fonction M.L.I. (... avec des points, différente de la fonction MLI sans les points) qui génère non pas un signal permanent mais des salves d'impulsions.

  • M.L.I. 1,240,40 génère sur la sortie 1, une salve de 40 impulsions, actives (Etat de travail) à 240 sur 255.
  • M.L.I. 1,40,55 génère sur la sortie 1, une salve de 55 impulsions, actives (Etat de travail) à 40 sur 255.

Il n'y a donc pas besoin d'intercaler de temporisation après chaque M.L.I. puisque la durée de l'instruction est déterminée par le nombre d'impulsions de chaque salve.

Pour la même raison que ci-dessus, "Etat de travail 240" correspond à une LED faiblement éclairée et "Etat de travail 40" correspond à une LED fortement éclairée (LED connectée au +5V).

 

Les séquences DEBUT2 et DEBUT3 durent quelques secondes.

Elles bouclent sur elles-mêmes en permanence.

Pour éviter qu'une périodicité des cycles soit repérable à l'œil, les nombres de pas d'éclairages ont été réglés respectivement à 20 pour DEBUT2 et à 19 pour DEBUT3, qui sont deux nombres premiers entre eux.

 

 

 

Pour paramétrer l'aspect d'un feu il suffit de modifier le nombre des instructions et/ou leurs paramétrages dans DEBUT2 et DEBUT3.

Pour changer le code d'enclenchement et d'arrêt du feu de camp il suffit de remplacer [A=54] par [A=code de la touche choisie] dans le test du programme "DEBUT".

Pour limiter le temps total de fonctionnement du feu de camp il suffit de modifier la valeur de test [T>=200] par une valeur plus faible mais si possible au moins égale à 1, dans le programme "DEBUT3".

 

 


Date de création : 16/04/2013 - 06:18
Dernière modification : 12/06/2016 - 09:48
Catégorie :
Page lue 4387 fois


Imprimer l'article Imprimer l'article

^ Haut ^