Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Démarrer en électronique programmable

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Démarrer en électronique programmable

Publié: Mer 09 Mars 2016, 21:31 
Bonsoir,
Afin d'entretenir la motivation de Christian, je mentionne que je suis au fond de la classe a écouté précieusement, je suis silencieux pour l'instant en attente de la livraison depuis la Chine ( ! ) d'un kit de début qui me permettra de vérifier ou mesurer :? , mon niveau de compréhension !

Juste une petite question à propos des détecteurs de passage, quelqu'un a-t-il testée une détection par IR avec l'émetteur et le récepteur placé verticalement dans le "ballast" et un petit miroir collé sous les locos (et le fourgon de queue) ?

Gilles
Gaston de Nice, HO, 2 rails, IB, Epoque IV
Avatar de l’utilisateur
Gaston06
 
Messages: 46
Inscrit le: Dim 21 Août 2005, 10:57
Localisation: Nice
Âge: 66

Re: Démarrer en électronique programmable

Publié: Mer 09 Mars 2016, 22:33 
Bonjour,

En attendant, on peut utiliser un simulateur gratuit en ligne pour prendre en main l'Arduino, les boutons, LED : http://www.123dapp.com/circuits

C'est en anglais mais facilement compréhensible.
Plume
 
Messages: 46
Inscrit le: Jeu 02 Juil 2015, 21:18
Localisation: Nevers
Echelle pratiquée: HO
Club: UAICF Nevers Vauzelles

Re: Démarrer en électronique programmable

Publié: Jeu 10 Mars 2016, 06:34 
Merci beaucoup.
@+
12035
Avatar de l’utilisateur
12035
Loquace
 
Messages: 1023
Inscrit le: Lun 08 Déc 2008, 13:20

Re: Démarrer en électronique programmable

Publié: Jeu 10 Mars 2016, 10:22 
Gaston06 a écrit:Bonsoir,
Afin d'entretenir la motivation de Christian, je mentionne que je suis au fond de la classe a écouté précieusement, je suis silencieux pour l'instant en attente de la livraison depuis la Chine ( ! ) d'un kit de début qui me permettra de vérifier ou mesurer :? , mon niveau de compréhension !

Juste une petite question à propos des détecteurs de passage, quelqu'un a-t-il testée une détection par IR avec l'émetteur et le récepteur placé verticalement dans le "ballast" et un petit miroir collé sous les locos (et le fourgon de queue) ?

Gilles


Je rassure tout le monde, mon niveau de motivation est intact. Simplement, nous avons terminé la première partie du cours sur les microcontrôleurs, celle qui vous a permis de devenir autonome pour vos propres recherches et développement (R & D :lol: ) de vos applications.

Une deuxième partie va venir, mais il faut que je la rédige ; elle portera sur l'architecture d'un réseau contrôlé par Arduino et on parlera d'autres solutions que les modules Uno.

Enfin, pour ce qui concerne les TP, j'ai posté une vidéo de mon propre montage parce que je le fais de mon côté pour être certain que cela fonctionne et pour voir où pourraient se situer les difficultés. Maintenant, nous allons, ensemble, transformer cette première approche en véritable B.A.L.

Voici mon programme qui devrait débuter dans quelques jours, le temps de...

Concernant ta question Gaston06 sur les détecteurs IR, j'ai vu passer un post qui en parle, détecteur sous le ballast et juste une petite étiquette blanche sous la loco. Cela ne devrait pas être très difficile de le retrouver... A moins que l'auteur de ce post ne vienne expliquer son système plus en détails. :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Jeu 10 Mars 2016, 10:26 
Plume a écrit:Bonjour,

En attendant, on peut utiliser un simulateur gratuit en ligne pour prendre en main l'Arduino, les boutons, LED : http://www.123dapp.com/circuits

C'est en anglais mais facilement compréhensible.


Merci Plume pour ce lien ; je me rappelle qu'un forumiste en avait déjà parlé sur les forums Arduino, il y a déjà bien longtemps.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Mer 16 Mars 2016, 17:18 
:moi: Nous allons reprendre le cours pour un nouveau chapitre découpé en trois parties.

Philosophie d’architecture de contrôle d’un réseau miniature

Contrôle par module centralisé

Nous avons expliqué dans le chapitre 1 de ce cours comment un module Arduino Uno peut gérer un réseau de trains miniatures. La figure 3 du chapitre 1, que nous reprenons ici sous le numéro 44, nous montre un réseau de train de taille modeste, un module Arduino Uno et des cartes d’interface reliant les capteurs en place sur le réseau au module ou bien amplifiant les signaux du module pour créer des actions sur le réseau.

Image

Cette philosophie de conception peut être appelée « Contrôle par module centralisé » ; le module Arduino Uno est utilisé pour examiner tous les capteurs, prendre les décisions qui s’imposent et commander toutes les animations du réseau. C’est lui qui gère les mouvements des trains et évite les collisions. Cette façon de faire peut se concevoir pour un petit réseau où circulent seulement quelques trains, mais pour un réseau plus grand, ou pour un nombre de trains plus élevés, on est vite limité par plusieurs facteurs :
- La taille de la mémoire programme
- Le nombre d’E/S nécessaires pour capteurs et accessoires
- La difficulté de mettre en place du multitâche

On peut bien sûr choisir un module Arduino plus puissant que le modèle Uno pour augmenter le nombre d’E/S ou la taille de la mémoire du programme. Néanmoins, on reste confronté à la complexité de faire plusieurs tâches en même temps, certaines d’entre elles ayant une répercussion directe sur la sécurité des circulations des trains.

Prenons un exemple : nous voyons sur le réseau un PN (passage à niveau). Une des tâche à réaliser est de fermer les barrières à l’approche d’un train et les rouvrir après son passage. Deux capteurs doivent donc être surveillés pour savoir si le train approche ou s’il est passé. En fonction de la réponse de ces capteurs, il faut s’occuper de manœuvrer les barrières ou bien de faire clignoter des feux de PN. Cette tâche à réaliser va prendre du temps et pendant ce temps, sommes-nous certain de pouvoir gérer les entrées ou les sorties en gare ?

Contrôle par modules spécialisés

La solution est de confier la gestion du PN à un module qui n’aurait que cette tâche à réaliser. Ce qui est vrai pour le PN l’est également pour d’autres animations du réseau ; par exemple, si le village contient un immeuble avec des appartements, un module Uno peut parfaitement les allumer de façon aléatoire tout en simulant de la soudure à arc dans un atelier de réparation près de la remise. Entre les deux entrées de tunnel, on peut aussi imaginer une gare cachée constituée de plusieurs voies gérées par un module supplémentaire. Cette philosophie de conception peut être appelée « Contrôle par modules spécialisés ». C’est ce que montre la figure 45 :

Image

Le module A gère les aiguilles de la gare terminus pour faire entrer ou sortir les trains en fonction des voies déjà occupées. Les signaux d’occupation sont représentés en pointillés. En fonction du train qu’il envoie vers le niveau inférieur, le module A envoie un signal au module B pour que le train emprunte l’un ou l’autre des deux tunnels (entrée de la gare cachée du niveau inférieur). Le module C ne gère que le PN en fonction de deux capteurs d’occupation. Enfin, le module D gère l’éclairage des bâtiments (allumage aléatoire d’appartements) et les animations lumineuses (flash de soudure à l’arc dans l’atelier de réparation).

Pour chaque module, nous retrouvons les interfaces de mise en forme des signaux que nous avons déjà décrites. On peut bien sûr se poser la question de l’emploi de modules Arduino Uno qui ne seront utilisés que pour une seule tâche voire deux, soit très peu par rapport à leur capacité. Nous allons voir qu’il y a d’autres solutions qui restent néanmoins dans cette philosophie de partage de tâches.

Avez-vous déjà une petite idée de ce que sera la suite ? :ugeek: :?: :arrow: :geek: :idea:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Jeu 17 Mars 2016, 17:43 
Voici le deuxième volet de ce nouveau chapitre : aujourd'hui, nous allons rechercher des solutions autres que le module Uno...

Autres modules Arduino

On peut faire appel à d’autres modules Arduino pour gérer de petites applications, dans l’espoir d’en trouver un moins cher et suffisamment performant. Un tour sur le site du constructeur nous permet de découvrir les produits :
https://www.arduino.cc/en/Main/Products

Arduino Pro Mini : µC ATmega328, il en existe une version qui travaille sous 5 V à 16 MHz. Il se rapproche donc du module Uno en terme de capacité et performance, mais ce qui peut freiner, c’est qu’il n’a pas de prise USB, ce qui facilite tout de même la programmation. Il existe des adaptateurs qui peuvent la remplacer, mais il faut aussi le prévoir dans le budget. Son prix est inférieur au prix du Uno (25% de moins).

Arduino Micro : µC ATmega32U4 donc un processeur différent mais grâce à l’IDE qui transforme un programme source en exécutable pour le microcontrôleur, ce ne doit pas être gênant sauf si on a développé pour l’ATmega328 (en utilisant des registres particuliers ou les timers par exemple). La taille mémoire est comparable au Uno mais le bootloader prend un peu plus de place (donc à déduire de la mémoire programme). Son prix est 10 à 15% plus cher.

Arduino Nano : c’est en quelque sorte un module Uno en miniature (voir figure 46), même µC, même taille pour les différentes mémoires, même fréquence d’horloge. Tout ce qui a été développé sur le Uno doit donc se porter sur le Nano. Il y a même une prise USB pour le programmer. Hélas, son prix est comparable au Uno, donc à part un gain de place, il semble qu’il n’y a pas un grand intérêt à changer un Uno pour un Nano…

Image

Et bien si tout de même, car on peut trouver des clones d’Arduino Nano pour 3 euros en Chine. Il y a un petit risque de ne pouvoir tout faire fonctionner (un clone n’est jamais parfait) mais à ce prix là, on ne prend pas un grand risque.

Circuit à base de microcontrôleur

Ce cours étant avant tout porté sur les microcontrôleurs, on peut se poser la question de les utiliser comme n’importe quel autre composant électronique. Dans le monde des circuits intégrés, il existe un choix considérable de microcontrôleurs.

Utiliser un microcontrôleur et le programmer pour qu’il réalise une certaine fonction nécessite de bien connaitre ses possibilités, son architecture, son langage machine et aussi d’avoir un programmateur. On en a déjà parlé dans ce cours, et toutes ces conditions à mettre en œuvre ont fait que les microcontrôleurs ont eu du mal à s’imposer dans le monde des électroniciens amateurs. Parallèlement, les microcontrôleurs se sont imposés dans le monde de l’électronique professionnelle et on en trouve maintenant partout, dans la voiture, dans le téléphone portable, dans les lave-linges, et même dans les décodeurs DCC.

La solution Arduino permettait de s’affranchir de toutes ces conditions à mettre en œuvre puisqu’elle permettait d’écrire le programme avec un langage de haut niveau (plus facile à digérer que le code machine) et de programmer le microcontrôleur avec l’ordinateur grâce à un simple câble USB. Et bien, c’est encore une fois la solution Arduino qui va nous permettre d’utiliser de petits microcontrôleurs et les programmer sans difficulté, à condition d’avoir un module Arduino qui servira de programmateur.

Nous commencerons donc par programmer un petit microcontrôleur dont le nombre d’entrées-sorties est bien évidemment restreint et dont la taille de mémoire programme est aussi plus petite. C’est souvent bien suffisant pour réaliser de petites applications autonomes, c’est-à-dire qui n’ont pas besoin de connaître la position des trains. Ces applications peuvent être des animations lumineuses, la gestion de moteurs, la mise en œuvre de relais, etc. Il faudra tout de même se retreindre à des programmes simples car toutes les fonctions ne seront peut-être pas reprises par le compilateur, mais cela vaut la peine d’essayer avant de conclure à l’impossibilité d’une application.

Demain, nous découvrirons un petit microcontrôleur et la façon de le programmer avec un simple module Uno servant de programmateur. :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Ven 18 Mars 2016, 12:09 
:moi: Ne ratez pas cette partie du cours qui vous donne la procédure à suivre pour programmer l'ATtiny45 ; cela vous permettra de concevoir plein d'animations pour votre réseau à un prix défiant toute concurrence ! :wink: :moi:

Le microcontrôleur ATtiny45

Ce microcontrôleur de marque Atmel, se présente sous la forme d’un boitier DIP à 8 broches (voir figure 47). C’est peu et les broches sont multiplexées, ce qui signifie qu’une même broche peut réaliser plusieurs fonctions. Il dispose de 6 broches d’E/S mais nous n’en utiliserons que 5 par commodité car la sixième sert aussi au reset du µC, ce qui reste très utile tout de même. Son prix est inférieur à 1,50 € (en 2016). Il est parfait pour réaliser par exemple de petites animations lumineuses mais pas seulement. Nous allons donc commencer par l’étudier puis nous verrons la marche à suivre pour le programmer aussi simplement que nous programmions nos modules Uno.

Image

Sa tension d’alimentation varie de 2,7 à 5,5 V (de 1,8 à 5,5 V pour la version ATtiny45V). Une simple pile de 4,5 V suffit donc pour l’alimenter. Le plus de l’alimentation est connecté à la broche 8 et le moins à la quatre, soit deux broches diagonalement opposées comme c’est souvent le cas pour un CI. Sa fréquence d’horloge utilisable dépend de la tension d’alimentation ; s’il est alimenté en 5 V, la fréquence d’horloge peut aller de 0 à 20 MHz.

La mémoire de programme est de 4 kilo-octets, la mémoire RAM est de 256 octets tout comme la mémoire EEPROM. Cela peut paraitre peu mais c’est largement suffisant pour de petites applications. Ces chiffres sont à diviser par 2 si vous optez pour le petit frère ATtiny25 et à multiplier par 2 si vous choisissez le grand frère ATtiny85.

Ce microcontrôleur est capable de produire de la PWM, dispose de timers, d’un convertisseur analogique-numérique sur 10 bits, de sources d’interruption externes et internes, un oscillateur interne calibré et un port SPI pour communiquer, ce qui permet de le programmer. A défaut d’être le mouton à 5 pattes, voici une petite merveille de technologie à 8 pattes et il serait dommage de s’en passer.

La figure 48 montre les fonctions des broches du microncontrôleur ATtiny45.

Image

Comme nous pouvons le voir, les broches d’entrées-sorties PB0:5 sont les broches 5, 6, 7, 2, 3, 1 et la broche 1 (PB5) sert au reset.

L’IDE d’Arduino

La version 1.6.7 de l’IDE d’Arduino contient ce qui concerne le microcontrôleur ATtiny ; il suffit d’aller dans le menu Outils, puis « Type de carte » et en bas on trouve l’option ATtiny qu’il suffit de cocher.

En retournant dans Outils, on voit maintenant sous « Type de carte : ATtiny » la ligne « Processeur » qui nous permet de choisir entre l’ATtiny45 et l’ATtiny85. Sous cette ligne se trouve la ligne « Clock » qui permet de choisir entre deux fréquences internes et trois fréquences externes. Nous reviendrons à tous ces réglages lorsque nous verrons la programmation.

Les deux dernières lignes du menu Outils sont également intéressantes : « Programmateur » qui jusque là était sur AVRISP mkII sera sélectionné sur Arduino as ISP ou si vous préférez « module Arduino utilisé en tant que programmateur ». La ligne suivante « Graver la séquence d’initialisation » sera aussi utilisé si vous programmez la puce ATtiny pour la première fois.

Il est évident que le microcontrôleur ATtiny45 peut être programmé et reprogrammé aussi souvent qu’on le souhaite.

Procédure de programmation

Nous verrons plus tard l’architecture du microcontrôleur ATtiny45 et ses propriétés. Pour l’instant, nous allons découvrir la procédure de programmation et vous verrez que c’est très simple. Nous utiliserons le programme Blink que nous allons charger dans le microcontrôleur. Pour faire cette manipulation, il vous faut :
- Un module Arduino Uno et son câble USB
- Un microcontrôleur ATtiny45
- Une breadboard
- Des câbles de liaison

Commencez par ouvrir le programme Blink (donné dans les exemples) dans votre IDE et changez le numéro de la broche sur laquelle est connectée la LED. Dans le programme Blink, il s’agit de la broche 13, mais l’ATtiny45 n’en possède pas autant, donc changer 13 en 3 par exemple. Vous pouvez bien sûr choisir la broche que vous voulez de 0 à 4 ; j’ai choisi 3 car cela ne nécessite que l’effacement d’un caractère, alors que pour une autre broche, il faut effacer deux caractères et en écrire un :lol: ! Enregistrez ce nouveau programme sous le nom Blink_ATtiny. Le programme est prêt pour un ATtiny45.

Pour programmer un microcontrôleur, il faut un programmateur : ce sera le module Uno, il faut donc le programmer pour qu’il devienne un programmateur. Branchez le module à votre ordinateur et ouvrez l’IDE. A partir de maintenant, il est indispensable de bien suivre la procédure sans sauter d’étapes.

- Téléversez dans le module le sketch appelé ArduinoISP (pour cela, allez dans Fichier > Exemples > 11.ArduinoISP > ArduinoISP). Votre module est devenu un programmateur ; lorsque vous n’en aurez plus besoin, vous pourrez téléversez un autre programme.
- Débranchez le module Uno de l’ordinateur.
- Sur la breadboard, réalisez le montage avec le microcontrôleur ATtiny45 et le module Uno selon la figure 49.
- Rebranchez le module Uno à l’ordinateur.
- Ouvrez dans l’IDE le programme que vous voulez transférer dans la puce ATtiny45 (ici Blink_ATtiny).
- Réglage de l’IDE : dans Outils, sélectionnez « Type de carte : ATtiny » et dans « Processeur », sélectionnez ATtiny45. Dans « Clock », sélectionnez 8 MHz (internal). Toujours dans Outils, sélectionnez « Programmateur ; Arduino as ISP ». L’IDE est maintenant réglé mais il ne faut rien avoir oublié ! (Vous pouvez vérifier en rappelant le menu Outils)
- Première programmation du microcontrôleur ATtiny : si la puce est programmée pour la première fois, allez dans Outils et faites « Graver la séquence d’initiation ».
- Vérifiez votre programme (pour éviter une erreur de syntaxe) et ensuite téléversez le. Si un message d’erreur s’affiche, ne pas en tenir compte ; votre puce ATtiny45 est maintenant programmée et prête à l’emploi et vous pouvez récupérer votre module Uno pour autre chose.

Pour vérifier votre puce, il suffit de lui brancher une LED avec sa résistance de protection (330 ohms par exemple) sur la broche 3 (ou la broche que vous avez choisie), puis de l’alimenter avec une pile de 4,5 V (ou bien les 5 V de votre module Uno).

Comme c’est un peu dommage d’utiliser un ATtiny45 pour ne faire clignoter qu’une seule LED, je vous invite à en faire clignoter 5 à des rythmes différents en vous inspirant du programme BlinkWithoutDelay ; vous pourrez ainsi animer votre réseau avec un feu tricolore clignotant en jaune pour indiquer un danger ou des travaux, un gyrophare en bleu de voiture de pompier, une enseigne de commerçant en vert (croix de pharmacie par exemple) et les deux autres à votre choix.

Image
Figure 49


Nota Bene : la figure 49 montre notre programmateur improvisé avec un module Uno. Vous pouvez remarquer un câble en jaune qui va vers la broche Reset qui est aussi la broche E/S PB5. Il y a moyen d’utiliser cette broche comme E/S et donc d’avoir 6 E/S sur le microcontrôleur, mais ceci nécessite de faire une manipulation qui prive le microcontrôleur de la possibilité de Reset externe. En conséquence, le microcontrôleur ne peut plus être programmé par ce moyen et il faut alors recourir à un vrai programmateur. Le mieux est donc de se passer de l’E/S PB5 et de conserver le Reset ou bien, si on a vraiment besoin de cette sixième E/S, être certain de ne pas avoir à reprogrammer la puce.

Nous verrons dans quelques temps des exemples de ce qu'on peut faire avec ces petits microcontrôleurs si bon marché. :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Dim 20 Mars 2016, 18:32 
Voici pour compléter ce que vous venez d'apprendre, quelques petits montages à base de microcontrôleur ATtiny45. Je vais vous renvoyer à des articles déjà écrits que vous connaissez peut-être (ce sera utile pour ceux qui viennent d'arriver sur ce forum depuis peu). Tout ne vous sera pas utile car j'explique comment installer les fichiers pour programmer l'ATtiny dans l'IDE version 1.0.5. Comme vous avez la version 1.6.7, ils sont déjà installés. Tout ce que vous avez à récupérer de ces articles, c'est le programme, le montage sur la breadboard et le montage final. Bons montages. :wink:

Chenillard à 5 lampes

Voici la vidéo de démonstration :
https://vimeo.com/144750455

Voici l'article :
viewtopic.php?f=63&t=80160

Enseigne de commerçant

Voici la vidéo de démonstration :
https://vimeo.com/147948985

Voici l'article :
viewtopic.php?f=63&t=80388

Vous vous apercevrez que le montage est exactement le même que pour le chenillard ; comme je vous le disais, il suffit de changer le programme pour obtenir un autre montage, force de l'électronique programmable.

Simulateur de soudure à arc

Comme je l'ai écrit, cela vaut la peine de tester la faisabilité d'un montage avant de conclure que ce n'est pas possible. Si on se réfère au site Arduino, seules quelques fonctions sont utilisables sur un ATtiny. Pourtant, le programme que vous allez découvrir fonctionne parfaitement, bien qu'il fasse appel à des fonctions générant des nombres aléatoires...

Vidéo de démonstration :
https://vimeo.com/142787726

Voici l'article :
viewtopic.php?f=63&t=80042

Simulateur de feu ouvert

Une fois n'est pas coutume, je donne la parole à D@niel qui a réalisé ce simulateur de feu avec un ATtiny. C'est à cette adresse :
viewtopic.php?f=63&t=80321

Pour faire d'autres montages, vous avez votre propre imagination, mais avouez que l'animation de votre réseau commence à prendre forme. Pourtant, je vous réserve encore une surprise : dépasser les limites du possible ou comment animer deux feux tricolores d'un même carrefour (soit 6 lampes) avec nos ATtiny ! :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Lun 21 Mars 2016, 15:53 
Voici un nouveau chapitre du cours qui nous permettra de progresser encore un peu plus dans l'utilisation de microcontrôleurs. Aujourd'hui, il sera question de multiprocesseurs, un peu comme votre micro-ordinateur qui a un processeur multicores.

Montages multiprocesseurs

Je me demandais comment réaliser des feux tricolores de carrefour routier à partir d’ATtiny45. Comme nous l’avons vu, il est plus simple d’utiliser seulement 5 des 6 E/S du microcontrôleur ATtiny45 car la sixième sortie sert au Reset qui est nécessaire à notre programmateur de fortune. Or, à un carrefour routier, il y a deux feux à commander (un par route et un carrefour c’est deux routes qui se croisent :lol: ) soit six lampes au total.

L’idée est d’utiliser deux microcontrôleurs ATtiny45, un par feu et de réaliser une synchronisation entre eux pour que chaque feu fasse sa séquence quand il doit la faire. Cela ressemble donc à une forme de communication entre deux microcontrôleurs comme vous allez le voir :wink: .

Principe de fonctionnement

Un des feux doit commencer sa séquence le premier ; comme ils sont alimentés en même temps sur le montage, il est nécessaire que le deuxième feu soit retardé par rapport au premier. Chaque microcontrôleur reçoit le même programme, à une petite différence près, le délai de synchronisation qui est de 1 seconde pour le feu A et de 3 secondes pour le feu B. En conséquence, le feu B devrait commencer son cycle deux secondes après le feu A. Mais entre-temps, le feu A a pris la main et empêche le feu B de commencer son cycle. Lorsque le feu A a terminé son cycle, il autorise le feu B à faire le sien. Celui-ci empêche alors le feu A de continuer son cycle.

Un cycle est constitué uniquement des séquences feu au vert (10 s) et feu à l’orange (3 s) car dès que le feu passe au rouge, il autorise l’autre feu à travailler et maintiendra son feu au rouge puisqu’il sera empêché par l’autre feu de continuer son travail. La temporisation du chauffard (2 s) fait que les deux feux sont au rouge pendant ce court délai, ce qui permet au chauffard qui a accéléré à l’orange et passé au rouge de dégager le carrefour avant d’autoriser les automobilistes de l’autre route à redémarrer.

Les DEL sont sur les sorties 0, 1 et 2. Les E/S 3 et 4 sont utilisées pour « communiquer ». En effet, lorsqu’un microcontrôleur prend la main sur l’autre, il positionne la sortie 4 à HIGH (5 V). Cette sortie est reliée à une entrée 3 de l’autre microcontrôleur qui sait que s’il y a 5 V sur cette entrée, il ne doit rien faire.

Cycle de fonctionnement

Le setup se termine par les deux feux au rouge puis l’attente de synchronisation (1 s pour feu A et 3 s pour feu B). Le feu A commence avant le feu B.

Pour chaque feu, le cycle réalise cela :

- Vérifie qu’il peut travailler, ou attend que l’autre feu ait terminé (état de l’entrée 3)
- Prend la main pour bloquer l’autre feu
- Attend la temporisation du chauffard
- Eteint le rouge et allume le vert
- Attend délai du vert (10 s)
- Eteint le vert et allume l’orange
- Attend le délai de l’orange (3 s)
- Eteint l’orange et allume le rouge
- Passe la main à l’autre feu en mettant sa sortie 4 à LOW (qui est l’entrée 3 de l’autre feu)

Le feu B qui commence en retard, sera empêché de travailler par le feu A jusqu’à ce que celui-ci lui passe la main.

Programme

Code: Tout sélectionner
/*
Ce programme fait fonctionner un feu tricolore A qui est
synchronise avec un feu tricolore B, chaque feu etant
commande par un µC ATtiny45.
Trois LED (verte, orange et rouge) sont reliées aux sorties 0 à 2.
L entree 3 recoit le signal d inhibition de la part de l autre feu.
La sortie 4 envoit le signal d inhibition vers l autre feu.
Trois LED (verte, orange et rouge) sont reliées aux sorties 0 à 2.
*/

// Initialisation des variables

const byte vert = 0 ;
const byte orange = 1 ;
const byte rouge = 2 ;
const byte line_IN = 3 ;
const byte line_OUT = 4 ;
const int attente_synchro = 1000 ; // 3000 pour deuxième feu B
const int attente_vert = 10000 ;
const int attente_orange = 3000 ;
const int attente_chauffard = 2000 ;

// Initialisation des lignes 0 a 4
void setup () {
  pinMode (vert, OUTPUT) ;
  pinMode (orange, OUTPUT) ;
  pinMode (rouge, OUTPUT) ;
  pinMode (line_IN, INPUT) ;
  pinMode (line_OUT, OUTPUT) ;
  // Extinction de toutes les LED au depart sauf rouge
  digitalWrite (vert, LOW) ;
  digitalWrite (orange, LOW) ;
  digitalWrite (rouge, HIGH) ;
  // decalage des sequences de chaque feu
  delay (attente_synchro) ;
}

// Fonction loop
void loop () {
   
  // Attente fin du cycle de l autre feu
  while (digitalRead (line_IN) == HIGH) {
    // Ne rien faire
  }
  // Cycle du feu tricolore

  // Ce feu prend la main
  digitalWrite (line_OUT, HIGH) ;

  // Debut de cycle
  delay (attente_chauffard) ;
  digitalWrite (rouge, LOW) ;
  digitalWrite (vert, HIGH) ;
  delay (attente_vert) ;
  digitalWrite (vert, LOW) ;
  digitalWrite (orange, HIGH) ;
  delay (attente_orange) ;
  digitalWrite (orange, LOW) ;
  digitalWrite(rouge, HIGH) ;

  // Ce feu rend la main
  digitalWrite (line_OUT, LOW);
  delay (500) ;

  // L autre feu peut travailler, line_IN sera a HIGH, ce feu va attendre
 
}
 


Vous pouvez régler les différents temps d’allumage pour chaque couleur de feu. Comme chaque feu a son propre programme, il est également possible de régler des temps d’allumage du vert différents entre le feu A et le feu B, cas particulier d’une route secondaire croisant une route principale à fort trafic. Avec l’électronique programmable, tout se fait très simplement.

Montage sur une plaque d’essai

La figure 50 montre le montage sur une plaque d’essai. Comme on le voit, la sortie 4 d’un ATtiny45 est reliée à l’entrée 3 de l’autre et réciproquement.

Image

Pour chaque feu, une seule DEL est allumée en même temps ; le montage est prévu pour un feu tricolore ayant ses DEL à cathodes communes. En modifiant un peu le montage et le programme, on peut bien sûr commander des feux à anodes communes.

Mon montage fonctionnant parfaitement, j'espère pouvoir vous poster une petite vidéo d'ici peu (car je ne vous l'ai pas dit, mon loisir c'est la vidéo, pas le train électrique ! :mdr: )
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Mer 23 Mars 2016, 23:11 
Juste une petite aparté concernant les Arduinos acheté sur des sites chinois.
Je viens de faire l’acquisition d'un petit Arduino NANO celui-là et impossible de rentrer le moindre sketch, l'ordi ne le reconnait pas. En cherchant sur le Net et avec l'aide du forum Arduino , j'ai découvert que la puce FTDI ( celle qui traduit l'USB-->Serie) avait changée . Après c'est simple, il faut charger les Drivers et les installer . Maintenant, tout est rentré dans l'ordre, mon petit NANO est prêt.
Voilà, si cela peut dépanner quelqu'un...
Choisir, c'est déjà renoncer!
Petitrain
 
Messages: 47
Inscrit le: Ven 04 Juil 2014, 11:09
Localisation: Haut-Var
Âge: 66
Echelle pratiquée: HO
Prénom: Gérard
Club: CMMF Mouans-Sartout

Re: Démarrer en électronique programmable

Publié: Jeu 24 Mars 2016, 14:30 
Merci Petitrain pour cette information qui dépannera certainement beaucoup de monde. Effectivement, c'est ce que je disais, les clones réservent parfois quelques surprises de compatibilité ; pas de panique, on arrive toujours à s'en sortir mais c'est rageant.

Voici, comme je l'avais promis, une petite vidéo du montage multiprocesseurs des feux de carrefour routier. Vous remarquerez l'élégance du montage ; si vous avez déjà vos feux tricolores, il ne nécessite que deux ATtiny45, si vous devez montez vous-mêmes vos feux, il faudra rajouter 6 DEL (CMS ou normales suivant l'échelle que vous pratiquez) et deux résistances.

La vidéo est à cette adresse :
https://vimeo.com/160229154

Bonne visualisation. :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Sam 26 Mars 2016, 19:13 
Bonsoir

Juste un commentaire aux propos de Petitrain au sujet des nano aux yeux bridés.. J'ai moi aussi rencontré ce problème et c'est Jean-Luc sur Locoduino qui m'a apporté la solution en image

http://forum.locoduino.org/index.php?topic=152.0

Cette réponse didactique peut en intéresser de jeunes arduinophiles...aussi inexpérimentés que moi!!!!
Avatar de l’utilisateur
sergio11
Bavard
 
Messages: 59
Inscrit le: Ven 08 Jan 2016, 22:20
Localisation: 11 Ouveillan
Âge: 64
Echelle pratiquée: N
Prénom: Serge

Re: Démarrer en électronique programmable

Publié: Sam 26 Mars 2016, 22:44 
Sur le site de banggood (le lien donné par Petitrain), il était dit que la puce usb avait été changée, ce qui peut mettre la puce à l'oreille ( :mdr2: ) et qui implique qu'il faudra sans doute trouver de nouveaux drivers...
Une fois de plus, la communauté d'Arduineurs est tellement étendue qu'il y a toujours quelqu'un pour avoir trouvé une solution avant nous, donc ce genre de désagrément ne doit pas effrayer quelqu'un d'essayer ces composants chinois, d'autant que le prix est dérisoire.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1634
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Démarrer en électronique programmable

Publié: Mer 13 Avr 2016, 06:22 
Je viens de recevoir mes ATtiny45. Quoi que bcp occupé en ce moment, je tente un petit montage dès que possible
RGP49
alanya
Papotier
 
Messages: 128
Inscrit le: Jeu 14 Août 2008, 12:33
Localisation: Saumur
Âge: 61
Echelle pratiquée: N et 0e
Prénom: Yves
Club: RGP49

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invité(s)