Réalisations PICAXE

Nombre de visites :
54102
 
 
Cahier des charges
  • un seul PICAXE 08M2 ;
  • chacune des 4 balises flashe à son propre rythme, comme dans la réalité ;
  • deux modèles possibles : balises équipées de 1 ou de 2 LED.
 
Schémas électroniques
Les schémas ont été élaborés avec DesignSpark
Version avec deux LED en série sur chaque sortie.
Attention : les résistances ont une valeur de 82 à 100 Ohms
Version avec une seule LED
 
Programme
Le programme a été créé avec LOGICATOR.
Il se présente sous forme de diagramme.
Ce programme ne présente aucune difficulté.
imagen-unzip-files-zip-file-opener-0thum
 
Il s'agit d'un programme multi-tâches.
Quatre balises ⇒ 4 tâches.
Ci-dessous la version BLOCKLY
Fonctionnement
 
Chaque programme élémentaire, Début à Début 3, s'occupe d'une sortie.
La durée des éclats des flashs est réglée à 30 millisecondes : instructions [Attendre 0,03].
Cette valeur est fonction du type de LED utilisée.
Suivant le rendement de ces LED, ce temps sera donc ajusté entre 10 et 40 ms pour obtenir un éclat réaliste.
 
Le cadencement des flashs, lui, est déterminé par les instructions «Attendre x,y».
Les temps ont été fixés à respectivement 11, 12, 13 et 15 dixièmes de seconde.
Ces 4 nombres sont premiers entre eux c'est à dire qu'ils n'ont aucun diviseur commun en dehors de 1 et -1.
 
En conséquence les flashs des différentes balises ne seront pas synchrones. Il faudra attendre 2574 secondes soit 43 minutes pour que la succession de flashs se reproduise à l'identique.
Autant dire que l'observateur ne pourra pas repérer ce cycle et qu'il aura, comme dans la réalité, l'impression que chaque balise est indépendante.
OK ! dans mon calcul j'ai négligé la somme des temps d'éclats des flashs, qui viennent s'ajouter aux 2574 secondes... dans une proportion d'environ de 2,5% ! Vous me pardonnez ?
Merci.


Remarque
On peut choisir d'autres séries.
Par exemples :
  • 8, 9, 11,13 dixièmes de secondes pour des balises qui flashent plus rapidement,
  • 15, 17, 19, 21 dixièmes de secondes pour des balises qui flashent plus lentement,
  • 31, 33, 35, 37 dixièmes de secondes pour des balises qui flashent très lentement.

 
Circuit imprimé
On utilise exactement le même circuit imprimé que pour le projet "Feu de camp".
 
Le PCB a été élaboré avec DesignSpark :
Il peut être téléchargé ICI ⇒ PCB_UNIVERSEL_08M2.pcb
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
(La vue 3D a été construite dans AutoTRAX)

Le circuit est équipé de résistances de 330 Ohms (version à 1 LED par voie).
 
 
Les composants pour le capteur infrarouge ne sont pas montés puisqu'on ne les utilise pas.
La LED de contrôle du chargement du programme n'est pas montée non plus.
En effet, la (ou les) LED montée·s sur la sortie C0 (broche n°7) sert aussi de témoin de programmation.
 
On monte deux rangées de connecteurs pour alimenter les LED entre les sorties (connecteurs verts) et la masse (connecteurs bleus).
 
Remarque importante
La sortie C0 joue un rôle particulier : elle est utilisé comme sortie pour une des balises mais elle est aussi utilisée par le logiciel LOGICATOR pour contrôler le chargement du programme.

En conséquence cette sortie C0 ne doit absolument pas être surchargée au delà de 6 à 8 mA sinon on risque de bloquer le chargement du programme dans le PICAXE.
Il faut donc éviter de monter des résistances inférieures à 100 Ohms pour la version à 2 LED en série et inférieures à 330 Ohms pour la version à une seule LED.
Si vous respectez ces limites vous n'aurez pas de problème. J'ai essayé.
Si malgré tout le programme ne se chargeait pas à cause de résistances trop faibles (82 Ohms ou moins), il suffirait de déconnecter les LED sur C0 pendant le téléversement du programme.
 

 
Complément : flashs photographiques
Le montage à une LED par sortie peut être utilisé pour générer des éclats de flashs photographiques dans une foule ou un stade par exemple.
Une toute petite modification du programme suffit : les temps de cadencement des flashs passent d'environ 1 seconde à environ 10 à 20 secondes.
 
Voici à quoi ressemble alors le programme :
... et son équivalent BLOCKLY
 
Les temps ont été choisis entre 13 et 23 secondes (pas en dixièmes de secondes cette fois) mais rien n'empêche de choisir d'autres valeurs.
Choisissez des nombres premiers ou premiers entre eux.

 
Non, non, non...
Je ne vous donne pas le fichier de ce programme.
Il est tellement simple de modifier le précédent.
That's all Folk's !
 
Éclairage de bâtiments miniatures
Un réseau de trains miniatures sur lequel sont disposés des bâtiments, c'est bien.
Mais si en plus les différentes pièces du bâtiment s'allument et s'éteignent, comme dans un vrai bâtiment occupé par des gens... c'est une animation plus que sympathique et un peu magique !
 
VERSION SIMPLE

 
Grandes lignes du projet
  • utilisation du PICAXE 08M2 ;
  • allumages et extinctions de 4 zones différentes (4 pièces ou 4 zones d'un atelier par exemple) ;
  • deux modèles possibles : 1 ou 2 LED par pièce ;
  • possibilité de tester les cycles en accéléré ;
  • paramétrage facile des périodes.

 
Schémas électroniques
Les schémas ont été élaborés avec DesignSpark
Ils peuvent être téléchargés ICI
Version avec une seule LED
Version avec deux LED en série sur chaque sortie.
Attention : les résistances ont une valeur de 82 à 100 Ohms
Détermination graphique du cycle des allumages et extinctions
Cette étape est essentielle.
Elle facilite grandement l'écriture du programme.
Le cycle présenté ci-dessous n'est qu'un exemple que vous adapterez en fonction de vos besoins et de votre imagination.
Voici le diagramme correspondant au programme ci-dessous :
 
Les 4 lignes C0, C1, C2 et C4 indiquent l'état des sorties (ON ou OFF, c'est à dire ACTIVES ou DÉSACTIVÉES).
La ligne des temps indique la durée de chacune des phases.

 
Ce n'est pas la seule méthode possible, mais celle-ci a les mérites d'être simple à comprendre et de permettre une écriture simple du programme. 
  • le cycle se développe sur 7 phases. (Rien n'empêche d'en prévoir d'autres).
  • pour chacune des phases on indique dans quel état se trouve chacune des sorties C0, C1, C2 et C4.
  • à chaque phase est affectée une durée.
  • en jouant sur ces durées on modifie les temps d'allumage et d'extinction de différentes pièces.

 
Il ne reste plus qu'à transcrire cela sous forme d'un programme.
 
Programme
Le programme a été créé avec LOGICATOR.
Il se présente sous forme de diagramme.
Télécharger le code ICI
Maison_vivante_1.png
 
Choix du PICAXE
Nous avons besoin de 4 sorties.
Dans [Options / Sélectionner le type de PIC...] on choisit :
  • PICAXE08M2
  • 2 Entrée - 4 Sortie (0,1,2,4)
 
Ben oui, je sais, il n'y a pas de "s" à "Entrée" et à "Sortie".
 
Fonctionnement
Le programme se résume en une boucle qui contient 7 groupes d'instructions [Sorties]-[Tempo].
Chaque instruction [Tempo x ..] parcourt un certain nombre de fois la procédure [TEMPO].

 
La procédure [TEMPO]
La procédure [TEMPO] ci-contre génère un temps d'attente élémentaire de 1 seconde.
Pour générer une temporisation de 4 secondes, il suffit d'appeler la procédure 4 fois. ([TEMPO x 4] ).
Remarque : si on modifie [Attendre 1] en [Attendre 60] la procédure génère un temps d'attente élémentaire de 1 minute.
 
L'appel multiple à cette procédure a deux avantages :
  • elle permet de générer des temps supérieurs à 5 minutes, ce que ne peut pas faire une seule instruction [Attendre xxx], limitée à 255 secondes ;
  • elle permet  avec l'instruction [Attendre 1] ("1" pour "1 seconde") d'accomplir le cycle complet du programme en quelques dizaines de secondes : c'est le mode accéléré utilisé lors de la mise au point du programme.
    Puis, en augmentant la valeur [Attendre xx] (par exemple xx = 20 ou plus), on donne la vraie durée du cycle : plusieurs minutes et même plusieurs dizaines de minutes suivant l'effet qu'on désire obtenir.

 
Les instructions [Sorties]
 
 
Chacune de ces instructions [Sorties] décrit l'état des sorties pour la phase correspondante.

 

 
Pour des raisons de commodité le nom de ces instructions décrit lui aussi l'état des sorties, dans l'ordre C0 à C4.
 
Instruction [Attendre 0,5] au démarrage du programme
Cette instruction n'est pas absolument indispensable pour ce programme.
Elle permet de différer le démarrage des séquences [Sorties]-[Tempo] de 0,5 seconde.
Nous verrons sa véritable utilité dans la seconde partie cet article.

 

 
Circuit imprimé
On utilise exactement le même circuit imprimé que pour le projet "Feu de camp".

 
Le PCB a été élaboré avec DesignSpark :
Il peut être téléchargé ICI =>PCB_UNIVERSEL_08M2.pcb
 
 
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
 
 
(La vue 3D a été construite dans AutoTRAX)
Pour la version à 1 seule LED par sortie, la valeur des résistances est de 330 Ohms.


 
Les composants pour le capteur infrarouge ne sont pas montés puisqu'on ne les utilise pas.
La LED de contrôle du chargement du programme n'est pas montée non plus.
En effet, la (ou les) LED montée·s sur la sortie C0 (broche n°7) sert aussi de témoin de programmation (voir la remarque ci-dessous).
On monte deux rangées de connecteurs pour alimenter les LED entre les sorties (connecteurs oranges) et la masse (connecteurs bleus).

 
Remarque importante
La sortie C0 joue un rôle particulier : elle est utilisée comme sortie pour l'éclairage d'une des pièces mais elle est aussi utilisée par le logiciel LOGICATOR pour contrôler le chargement du programme.

En conséquence cette sortie C0 ne doit absolument pas être surchargée au delà de 6 à 8 mA sinon on risque de bloquer le chargement du programme dans le PICAXE.
Il faut donc éviter de monter des résistances inférieures à 100 Ohms pour la version à 2 LED en série, et inférieures à 330 Ohms pour la version à une seule LED par sortie.
Si vous respectez ces limites vous n'aurez pas de problème. J'ai essayé.
Si malgré tout le programme ne se chargeait pas à cause de résistances trop faibles (82 Ohms ou moins), il suffirait de déconnecter les LED sur C0 pendant l'injection du programme, puis de les re-connecter.

 
Voilà.
Il ne reste plus qu'à installer judicieusement les LED dans le bâtiment et à vérifier le résultat.

 

 
VERSION AVEC TÉLÉCOMMANDE INFRAROUGE
 
La version décrite ci-dessus fonctionne en continu tant que le montage est alimenté.
Un simple interrupteur suffit à enclencher ou couper le cycle d'éclairage.
La version proposée ci-dessous en complément permet de télécommander le départ et l'arrêt du montage avec la télécommande TVR10 (ou une télécommande de téléviseur SONY).

 
Programme de la version « télécommande IR»
Il peut être téléchargé ICI
Il s'agit cette fois d'un programme multi-tâches :
  • première tâche : c'est tout simplement le programme d'origine, inchangé,
  • deuxième tâche : la commande infrarouge.
Maison_vivante_6.png
Dans cette version du programme, la procédure [TEMPO] utilise l'instruction [Attendre 0,2].

C'est très court.

Cette valeur a été choisie pour faciliter la mise au point et les vérifications.

Pour le "vrai" programme il faut augmenter cette valeur, comme dans la version précédente.
 
Tâche "infrarouge"
L'instruction [Attendre 0,5] (au début du programme principal) permet au programme [Début 1] de prendre l'initiative (c'est la véritable raison d'être de cette instruction) :
[Sorties 0000] bloque les 4 sorties en position éteinte.
[Suspendre 0] bloque le programme principal.
[A = 255] initialise la variable A avec une valeur "parking", hors des codes infrarouges générés par la TVR010.
[Entrée infrarouge A] attend un code en provenance de la TVR010 (voir détails ci-dessous).
[Si A = 1] (touche du chiffre "2" sur la TVR010), alors :
  • on force l'allumage de C0,
  • on libère le programme principal avec [Reprendre 0],
  • on réinitialise la variable A à la valeur 255.
 
[Si A = 2] (touche du chiffre "3" sur la TVR010), alors :
  • on va au début de la séquence et donc on coupe toutes les sorties ⇒ on est de nouveau dans la situation de départ
    ... presque (*) ,
  • sinon on boucle pour attendre un nouveau code infrarouge. 
 
L'instruction [Entrée infrarouge A] en détails
Particularités du paramétrage :
  • Ne pas activer la compatibilité entre la touche et la donnée reçue.
En effet, avec la "compatibilité" le PICAXE ajoute "1" à la valeur reçue, stockée dans A... à chaque passage dans l'instruction [Entrée infrarouge A].
Or la boucle de test de l'entrée infrarouge est parcourue en permanence ce qui, dans certaines circonstances, rend difficile à maîtriser la valeur reçue.
  • Régler [Temps écoulé] sur 0,1 seconde.
De cette façon le test n'attend pas plus de 0,1 seconde l'apparition d'un code sur l'entré C3.
En l'absence de cette valeur de 0,1 seconde, l'instruction attendrait indéfiniment l'apparition d'un code sur C3 et pendant ce temps... tout le programme est bloqué et donc même la séquence principale est arrêtée.
 
(*) Remarque
Lorsqu'on arrête le programme avec la touche "3" de la TVR010 on le suspend là où il se trouve.
Lorsqu'on le redémarre, il reprend à partir d'où il a été arrêté, mais avec les 4 sorties éteintes.
Ce n'est donc pas une véritable réinitialisation.
Ce n'est pas très grave.
Au redémarrage il faut juste prendre la précaution de ré-allumer une sortie, pour visualiser le fait que le programme a redémarré.
C'est ce que réalise l'instruction [Sortie 1000] (sortie C0 = ON) située juste après le test [Si A = 1].
 
Bien entendu la sortie C0 n'a pas été choisie au hasard : c'est en effet celle qui est activée en premier dans le cycle normal du programme (voir diagramme).
Circuit imprimé
On utilise exactement le même que ci-dessus, auquel on ajoute les composants pour la détection infrarouge.
 
Représentations 3D.
Sur le PCB de droite, le capteur TSOP4838 est soudé directement sur le circuit imprimé.
Sur le PCB de gauche, le capteur est extérieur au PCB. Il est relié par fils aux 3 bornes "IR".

 
Schéma
R8 et LED 5 sont facultatives.
LED 5 sert de témoin de téléchargement du programme mais LED1 aussi.
On peut donc se passer de LED5 et R8.
 
Dans la version avec 2 LED en série, il suffit de remplacer les résistances de 330 Ohms par des résistances de 82 ou 100 Ohms.
Le capteur infrarouge est le modèle TSOP 4838.
That's all Folks
 
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
 
Download_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é
 
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
 
(La vue 3D a été construite avec AutoTRAX)
 
 
 
 
Schéma
 
 
Programme PICAXE
Le programme a été créé avec 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 ;
  • 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" :
 
  • 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"
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.
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, 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 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".
That's all Folks
 
Feux de chantier à 6 LED en cascade
Dans le décor de notre réseau de trains miniatures c'est sympa de représenter un chantier au bord d'une route.
C'est encore plus sympa si le chantier est balisé par une série de flashs en cascade.
Voici un petit montage de feux de chantier pour modélisme ferroviaire.
Six LED qui flashent en cascade... avec un PICAXE 08M2 qui ne dispose que de seulement 4 sorties !
Est-ce possible ?
Bien sûr.
 
 
Schéma
Le schéma a été élaboré avec DesignSpark 
Download_1.png
 
Fonctionnement

 
Les 6 LED sont toutes raccordées à la sortie C1 à travers la résistance R5=330 Ohms.
Elles sont montées tête-bêche deux par deux.
Chaque paire est connectée à l'une des trois sorties restantes : C0, C2 et C4.
Il s'agit en fait d'un montage du type "pont en H" analogue à celui qu'on utilise pour inverser le sens de rotation d'un moteur électrique.
 
Circuit imprimé
Le PCB a été élaboré avec DesignSpark :
 
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
 
(La vue 3D a été construite dans AutoTRAX)
La sortie « C1 » est distinguée en jaune parce qu'elle joue un rôle particulier :
elle est le point commun des 6 LED.
 
On utilise exactement le même circuit imprimé que pour le projet "Feu de camp".
Les composants pour le capteur infrarouge ne sont pas montés puisqu'on ne les utilisera pas.
On peut aussi se contenter de monter un connecteur avec seulement 4 broches pour les sorties puisqu'on n'utilisera pas non plus la masse et le +5V pour alimenter les LED.
On utilisera seulement les 4 broches représentées sur la vue 3D. Pas besoin des broches du « 0 Volts ».

 
Programme LOGICATOR (voir "Téléchargements" ci-dessous).

 
Ce programme ne présente aucune difficulté.
Le programme principal appelle successivement les 6 procédures correspondantes aux 6 LED.
Chaque procédure allume puis éteint la LED concernée.
Les temps d'attentes sont réglés pour obtenir l'effet "flash".
Il suffit de modifier ces temporisations pour obtenir un autre comportement du chenillard.

 
Programme BLOCKLY PICAXE
That's all folks
 
Feux tricolores de carrefours
Ce petit montage électronique sans prétention, à base de PICAXE 08M2, est destiné à commander des feux tricolores de carrefour routier.
Il trouvera sa place sur un réseau de trains miniatures et constituera une animation sympa pour un coût de revient parfaitement raisonnable.

 
Le montage présenté ci-dessous fonctionne sans reproche depuis 2 ans déjà sur un ensemble "CarSystem" de mon camarade de club, Alain.
 
 
Schéma
Le PICAXE 08M2 dispose de 4 sorties et nous devons piloter 6 LED (en réalité 12 LED groupées par paire).
Une petite astuce très simple va nous permettre de résoudre ce problème :
 
 
 05/01/2018 - correction du schéma
Ceux qui ont réalisé ce projet sans utiliser la platine intermédiaire ci-dessous – en se basant uniquement sur l'ancien schéma – ont pu constater que les feux NORD-SUD ne fonctionnaient pas correctement.
Ce n'est pas le programme qui est en cause, mais le schéma :
 
 

L'ancien schéma reliait « C4 » entre jaune et vert, et « C2 » entre rouge et jaune (image ci-contre).


 

Merci à mes camarades Alain et Jacques de m'avoir signalé cette erreur.

Amis modélistes, acceptez mes excuses.

Feux_de_Carrefour_sch_1a.png
Feux_de_Carrefour_sch_1.png
 
 
Analyse du schéma
Considérons par exemple le groupe de feux EST-OUEST :
Les LED rouge (LED2 et LED10), orange (LED4 et LED11) et verte (LED6 et LED12) sont montées en série entre V+ et la masse.
Chaque LED est associée à sa résistance de limitation de 560 Ohms.
(OK ! on peut utiliser une seule résistance de 330 Ohms par paire de LED)
 
Dans ces conditions et sous une tension d'alimentation de 5 Volts aucune d'elle ne s'allume : en effet, la somme des tensions de seuils de 3 LED's en série est supérieure à 5 Volts.

 
L'idée consiste alors à utiliser les sorties C0 et C1 pour "ponter" les LED qui doivent rester éteintes, de façon que seule la paire de LED qui doit fonctionner soit connectée entre le 0 Volts et le +5 Volts.

 
N.B. on peut aussi considérer que les sorties C0 et/ou C1, suivant qu'elles sont actives (H = High = V+) ou inactives (L = Low = 0 Volts), connectent les LED concernées entre V+ = +5V et la masse.

 
Exemples :
  • C1 = inactivée (Low) ET C0 = inactivée (Low)
    ⇒ LED2 et LED10 sont directement connectées à la masse à travers leur résistance de limitation.
    Les LED 4, 6, 11 et 12 sont éteintes, puisqu'elles sont connectées entre la masse... et la masse.
     
  • C1 = inactivée (Low) ET C0 = activée (High)
    ⇒ LED4 et LED11 sont connectées entre le +5V (par C0 = High) et la masse (par C1 = Low), à travers leur résistance de limitation. Elle s'allument.
    Les autres LED sont court-circuitées donc ne s'allument pas.
     
  • C1 = activée (High) ET C0 = activée (High)
    ⇒ LED6 et LED12 sont directement connectées au +5V à travers leur résistance de limitation.
    Les LED 2, 4, 10 et 11 sont éteintes, puisqu'elles sont connectées entre lé +5V... et le +5V.

 

 
De la même façon, C2 et C4 vont piloter les feux NORD-SUD.
 
 
Séquence d'allumage des feux pour circulation alternée nord-sud puis est-ouest
(Si on envisage une circulation des 4 voies l'une après l'autre, la table d'allumage serait différente et un tantinet plus complexe. Le PICAXE 08M2 ne pourrait pas convenir dans ce cas là parce que les 12 LED doivent pouvoir être allumées indépendamment. Pour cela il serait nécessaire de disposer d'au moins 8 sorties et il faudrait s'orienter vers un 18M2 ou un 20M2).
Le cas qui est traité ici est bien plus simple :
Rappel du schéma
Feux_de_Carrefour_sch_1.png
C0 = L (Low) signifie CO désactivée, càd C0 = 0 Volts
C4 = H (High) signifie C4 activée, càd C4 = +V (4,5 V ou 5 V)
Vx, Jx, Rx représentent les LED Rouges, Jaunes et Vertes.
Programme LOGICATOR
Il est extrêmement simple.
 
La séquence d'allumage des feux comporte six phases : vert / orange / rouge pour chaque sens de circulation.
 

 
Le programme comporte donc six instructions "SORTIES" suivies des instructions de temporisations correspondantes :
("Attendre xx" secondes).

 
Les instructions "SORTIES" ont été nommées en fonction des feux actifs, conformément au tableau ci-dessus.
 

 
Pour modifier le cadencement des feux, il suffit de modifier les temporisations.
 
Petite video en accéléré :
 
 
Paramétrage des sorties
 
Chaque instruction "SORTIE" décrit en une seule fois l'état des quatre sorties C0, C1, C2 et C4 pour chacune des six phases.
 

 
Ci-contre l'exemple de la première phase qui allume :
  • V1 = vert nord-sud => C2 et C4 = H
  • R2 = rouge est-ouest => C0 et C1 = L
 
Voici les 6 paramétrages des 6 instructions de sorties :
 
 
Programme BLOCKLY
 
BLOCKLY_CAPTURE_FeuxCarrefour.png
 
Les circuits imprimés
 
 
Vue côté composants
 
 
Implantation.
Les bornes 0V et +5V (bleues et rouges) sont doublées.
Elles permettent d'alimenter la platine intermédiaire sur laquelle sont connectées les LED.
 
 
Le câblage des LED est reporté sur une petite platine didactique intermédiaire spécifique :
En pratique on alimente chaque paire de LED par une seule résistance de 330 Ohms au lieu de 2 résistances individuelles de 560 Ohms, ce qui simplifie le circuit imprimé.
 
 
Vue côté cuivre
Dimensions : 51 x 49,5 mm
Fichier DESIGNSPARK
Fichier PDF
 
Implantation des composants
(vue côté cuivre)
Les connecteurs repérés C0, C1, C2 et C4 sont reliés aux sorties C0, C1, C2 et C4 du circuit PICAXE.
L'alimentation 5V est prise aussi sur le circuit du PICAXE.
 
Implantation des composants
(vue côté connecteurs)
Attention !
Les résistances CMS sont vues côté connecteurs mais doivent être soudées côté cuivre.
 
Cette platine didactique intermédiaire a été conçue comme une platine de démonstration et de test.
  • pour la démonstration les LED sont soudées directement sur la platine.
     
  • pour une installation réelle sur un réseau les LED seront bien sûr installées dans les signaux et câblées avec des fils fins sur cette platine intermédiaire, ou avec des connecteurs de type « wrapping ».

 
Pour des questions de taille du circuit imprimé j'ai pris l'option d'utiliser des résistances CMS.
Cependant les pastilles rectangulaires peuvent être percées pour monter des résistances 1/4 Watt en position debout.

 
Remarques :
Certes, le circuit "universel" du PICAXE est très sous-utilisé.
La disposition en deux circuits séparés présente pourtant quelques avantages :
  • le circuit universel comme son nom l'indique permet de câbler et de programmer très rapidement presque toutes les applications à base de PICAXE 08M2 qui actionnent des LED, des relais ou des servo-moteurs,
  • la petite platine intermédiaire est utilisée soit en platine d'essai, soit pour le câblage définitif,
  • cette platine peut être installée au plus près des feux du carrefour, alors que le PCB du PICAXE est installé dans un endroit plus accessible. 
     
Si votre intention est de monter plusieurs circuits de ce type, rien n'empêche malgré tout d'envisager la création d'un circuit spécifique qui réunit les deux PCB décrits ci-dessus.

 

 
Remarques concernant les résistances associées aux LED's
Avec des résistances de 330 Ohms, le courant s'établit aux environs de 10 mA dans chaque paire de LED éclairées.
Ceci constitue la limite supérieure du courant acceptable pour chaque sortie du PICAXE (voir notice du constructeur).

 
Les LED de dernière technologie sont très lumineuses.
Sous un courant de 5 mA elles émettent beaucoup de lumière. Beaucoup trop dans le cas de l'application ci-dessus.
En fonction du modèle de LED utilisé il est donc préférable de réduire le niveau lumineux pour obtenir un meilleur réalisme : un feu de carrefour n'est pas un phare éclairant. Il doit juste être vu.

 
Suivant le cas je vous conseille donc de remplacer les 330 Ohms par des résistances de 820 Ohms à 1k2, voir plus.

 

 
Petit complément
(CLIC sur les images pour les agrandir)
La platine décrite ci-dessus, destinée au câblage des LED, peut être remplacée par le petit circuit ci-dessous.
 
Ce circuit peut d'ailleurs être transposé très simplement pour être réalisé en bakélite pré-percée à bandes.
 
Pour un ou deux exemplaires, c'est peut-être plus rapide et moins coûteux que la fabrication d'un circuit imprimé.
 
Sur l'image ci-dessus la piste « (-) », tout à gauche, est interrompue (quatrième coupure).
 
 
Trois ponts sont nécessaires pour la distribution du « 0 Volt » (en bleu).
Remarquer aussi les quatre coupures.
(Clic sur les images pour agrandir).

 
Si vous tenez absolument à graver un PCB...
 
 
De gauche à droite, les bornes
sont dans l'ordre
C0 ; C4 ; C1 ; C2
Seule C0 est repérée.
 
Note 1 :
Les bornes C0 ; C4 ; C1 ; C2 sont dans le même ordre que sur la plaquette Veroboard.
Seule la borne C0 est repérée.

 
Note 2 :
Sur cette plaquette, on n'utilise qu'une seule résistance pour chaque paire de LED.
En conséquence la valeur de ces résistance est ramenée à 330 ohms, au lieu de 560 (ou 1K au lieu de 2K2 – par exemple – si vous utilisez des valeurs différentes de celle du schéma ci-dessus pour des raisons d'ajustage de la luminosité des LED).

 
Note 3 :
La vue de l'implantation montre les LED, soudées sur le PCB.
Bien évidemment les LED seront en réalité installées dans les 4 poteaux du carrefour.
Ce sont leurs connexions respectives qui sont soudées à ces emplacements.
Note 4 :
Le PCB reproduit à l'identique la plaquette Veroboard, sauf pour ce qui concerne le connecteur d'alimentation : le « +5V » et le « 0V » ne sont pas dans le même ordre. Attention donc, si vous avez réalisé un proto en Veroboard avant de fabriquer un PCB.
Que ce soit sur l'un ou l'autre circuit, pensez à repérer le « +5V » avec un petit coup de feutre rouge indélébile.
 
Download_1.png
That's all Folks
 
Orage en modélisme
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
 
 
Circuit imprimé
Le PCB a été élaboré avec DesignSpark :
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
(La vue 3D a été construite avec AutoTRAX)
Programme
Le programme a été créé avec LOGICATOR.
Il se présente sous forme de diagramme.
 
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.
 
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] :
 
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
 
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 !

 

 
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 :
Voyons cela de plus près pour le programme [DEBUT] :
ORAGE_LOGICATOR_4.png
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.
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.
Download_1.png
That's all Folks

 

 

© 2020 par Hubert SPERI – Créé avec Wix.com

WIX.png

Ce site ne contient aucun fichier avec des données personnelles et ne stocke aucune donnée personnelle lorsqu'on se connecte.

INYO_3.png
This site was designed with the
.com
website builder. Create your website today.
Start Now