LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

lundi 25 septembre 2017

41 visiteurs en ce moment

Le microcontrôleur ATtiny45 (3)

Un chenillard de travaux routiers et une enseigne d’hôtel

. Par : Christian

Certaines applications pour un réseau de trains miniatures ne requièrent pas toute la puissance d’un module Arduino/Genuino Uno et on peut trouver dommage de monopoliser un tel module pour si peu. La solution est de les confier à un microcontrôleur moins puissant, donc moins coûteux. Cette série d’articles vous présente le microcontrôleur ATtiny45 du constructeur Atmel et ses possibilités dans le domaine du modélisme ferroviaire.

Avec les deux premiers articles (Le microcontrôleur ATtiny45 (1) et Le microcontrôleur ATtiny45 (2)), nous avons appris à mieux connaître les µC ATtiny25/45/85 et surtout appris à les programmer. Il est maintenant temps de passer à la pratique et de réaliser de petites animations qui prendront place sur votre réseau de trains miniatures. Comme premier exercice, je vous propose de réaliser un petit chenillard.

Le principe d’un chenillard

Le principe d’un chenillard a été décrit dans l’article Un chenillard de DEL : le microcontrôleur allume un court instant des DEL   les unes après les autres. L’effet obtenu est un flash lumineux qui semble se propager de DEL   en DEL. On trouve de tels montages le long des routes lorsqu’une voie est fermée pour cause de travaux et que les automobilistes doivent se rabattre.

Le montage de l’article Un chenillard de DEL faisait appel à un module Arduino/Genuino Uno dont six sorties étaient utilisées pour allumer 6 DEL. Ce montage a été adapté, ainsi que son programme, à un µC ATtiny45 qui ne dispose que de 5 sorties numériques. Voici une vidéo pour montrer ce que cela donne.

Liste des composants nécessaires pour le chenillard

Un ATtiny45 que vous aurez programmé.
Cinq DEL jaunes ou oranges.
Cinq résistances de 220 Ω.

Programme pour l’ATtiny45

Téléchargez ce programme puis téléversez-le dans une puce ATtiny en suivant la procédure décrite dans l’article Le microcontrôleur ATtiny45 (2).

  1. // Chenillard_ATtiny.ino
  2. /*
  3. Ce programme réalise un chenillard.
  4. Il fait flasher successivement cinq LED oranges reliées aux sorties 0 à 4
  5. Puis il réalise une pause de 500 millisecondes avant de recommencer
  6. */
  7.  
  8. // Initialisation des lignes 0 à 4 en sortie
  9. void setup () {
  10. pinMode (0, OUTPUT) ;
  11. pinMode (1, OUTPUT) ;
  12. pinMode (2, OUTPUT) ;
  13. pinMode (3, OUTPUT) ;
  14. pinMode (4, OUTPUT) ;
  15. // Extinction de toutes les LED au départ du programme
  16. for (byte i = 0 ; i <= 4 ; i++) {
  17. digitalWrite (i, LOW) ; // éteint la LED reliée à la broche i
  18. }
  19. }
  20.  
  21. // Fonction loop
  22. void loop () {
  23. // Boucle pour faire flasher les LED
  24. for (byte i = 0 ; i <= 4 ; i++) {
  25. digitalWrite (i, HIGH) ; // allume la LED sur broche i
  26. delay (50) ; // durée du flash 50 millisecondes
  27. digitalWrite (i, LOW) ; // éteint la LED
  28. }
  29. // délai de 500 millisecondes
  30. delay (500) ;
  31. // Recommence la séquence
  32. }

Télécharger

Montage des composants sur une platine d’essai

La figure 1 montre comment monter les composants sur une platine d’essai.

Figure 1


L’alimentation en 5 V peut se satisfaire d’un bloc de pile délivrant 4,5 V ou bien être fournie par un module Arduino/Genuino Uno en récupérant le 5 V présent sur les connecteurs. Bien entendu, cette dernière solution ne se conçoit que pour essayer le montage ; lorsque celui-ci est à poste sur le réseau, une alimentation autonome est préférable. Nous verrons en fin d’article comment réaliser ce montage en soudant les composants sur une plaque à bandes cuivrées.

Enseigne d’hôtel

Le principe d’une enseigne de commerçant à 6 lampes a été décrit dans l’article Enseigne de magasin ; le microcontrôleur allume des DEL suivant une séquence définie par le programmeur pour donner un certain rythme à l’enseigne. Au final, toutes les lampes sont allumées en même temps, ce qui permet de lire le nom du magasin, comme BISTRO ou bien GARAGE pour des exemples à 6 lettres. Le programme donné dans l’article Enseigne de magasin fait appel à des fonctions définies par le programmeur pour créer des séquences d’allumage des DEL.

Montage et programme ont donc été adaptés au µC ATtiny45 qui ne dispose que de 5 sorties numériques, ce qui est tout de même suffisant pour écrire le mot HOTEL. Voici une vidéo pour montrer ce que cela donne.

Liste des composants nécessaires pour l’enseigne HOTEL

Un ATtiny45 que vous aurez programmé.
Cinq DEL de la couleur de l’enseigne.
Cinq résistances de 220 Ω.

Programme pour l’ATtiny45

Téléchargez ce programme puis téléversez-le dans une puce ATtiny en suivant la procédure décrite dans l’article Le microcontrôleur ATtiny45 (2).

  1. /*
  2. Ce programme réalise le clignotement d'une enseigne publicitaire.
  3. Il fait clignoter selon un certain rythme des LED.
  4. La première LED est reliée à la sortie led1.
  5. nbre_led indique le nombre de LED à faire clignoter.
  6. Il utilise des fonctions pour alterner les rythmes.
  7. */
  8.  
  9. int led1 = 0 ; // Position de la première LED
  10. int nbre_led = 5 ; // Nombre de LED dans l'enseigne
  11. int nbre_chen = 3 ; // Nombre de fois pour le chenillard
  12. int nbre_cligno = 5 ; // Nombre de clignotement
  13.  
  14. void setup () {
  15. // Initialisation des lignes de LED en sortie
  16. for (byte i = 0; i <= (nbre_led - 1) ; i++) // Moins 1 car on part de zéro
  17. {
  18. pinMode ((i + led1), OUTPUT) ;
  19. }
  20. // Extinction de toutes les LED au départ du programme
  21. for (byte i = 0 ; i <= (nbre_led - 1) ; i++)
  22. {
  23. digitalWrite ((i + led1), LOW) ; // éteint la LED reliée à la broche i + led1
  24. }
  25. }
  26.  
  27. // Fonction loop
  28. void loop () {
  29.  
  30. // Séquence N°1 ; chenillard
  31. sequence_Un () ;
  32. delay (500) ; //delai de 500 millisecondes
  33.  
  34. // Séquence N° 2 : cumul sur la gauche du mouvement de LED
  35. sequence_Deux () ;
  36. delay (500) ; // délai de 500 millisecondes
  37.  
  38. // Séquence N°3 : clignotement de l'ensemble 3 fois
  39. sequence_Trois () ;
  40. delay (2000) ; // délai de 2 secondes
  41.  
  42. // Séquence 4 : extinction successive de la gauche vers la droite
  43. sequence_Quatre () ;
  44. delay (2000) ;
  45.  
  46. // Recommence la séquence
  47. }
  48.  
  49. void sequence_Un ()
  50. {
  51. // Séquence N°1 ; chenillard
  52.  
  53. for (byte n = 1 ; n <= nbre_chen ; n++)
  54. {
  55. for (byte i = 0 ; i <= (nbre_led - 1) ; i++)
  56. {
  57. digitalWrite ((i + led1), HIGH) ; // allume la LED sur broche i
  58. delay (200) ; // durée du flash 200 millisecondes
  59. digitalWrite ((i + led1), LOW) ; // éteint la LED
  60. delay (100) ;
  61. }
  62. }
  63. return ;
  64. }
  65.  
  66. void sequence_Deux ()
  67. {
  68. // Séquence N° 2 : cumul sur la gauche du mouvement de LED
  69.  
  70. for (byte n = 0 ; n <= (nbre_led - 1) ; n++)
  71. {
  72. for (byte i = led1 ; i <= ((led1 + nbre_led - 1)-n) ; i++)
  73. {
  74. digitalWrite (i, HIGH) ; // allume la LED sur broche i
  75. delay (200) ; // durée du flash 150 millisecondes
  76. digitalWrite (i, LOW) ; // éteint la LED
  77. }
  78. digitalWrite ( ((led1 + nbre_led - 1) - n) , HIGH ) ; //dernière LED reste allumée
  79. }
  80. return ;
  81. }
  82.  
  83. void sequence_Trois ()
  84. {
  85. // Séquence N°3 : clignotement de l'ensemble
  86.  
  87. for (byte j = 1 ; j <= nbre_cligno ; j++)
  88. {
  89. for (byte k = 0 ; k <= (nbre_led - 1) ; k++)
  90. {
  91. digitalWrite ((k + led1) , LOW) ;
  92. }
  93. delay (500) ;
  94. for (byte l = 0 ; l <= (nbre_led - 1) ; l++)
  95. {
  96. digitalWrite ((l + led1), HIGH) ;
  97. }
  98. delay (500) ;
  99. }
  100. return ;
  101. }
  102.  
  103. void sequence_Quatre ()
  104. {
  105. // Séquence 4 : extinction successive de la gauche vers la droite
  106.  
  107. for (byte i = (led1 + nbre_led - 1) ; i >= led1 ; i--)
  108. {
  109. digitalWrite (i, LOW) ;
  110. delay (200);
  111. }
  112. return ;
  113. }

Télécharger

Montage des composants sur une platine d’essai

La figure 2 montre comment monter les composants sur une platine d’essai.

Figure 2


L’alimentation en 5 V peut se satisfaire d’un bloc de pile délivrant 4,5 V ou bien être fournie par un module Arduino/Genuino Uno en récupérant le 5 V présent sur les connecteurs. Bien entendu, cette dernière solution ne se conçoit que pour essayer le montage, lorsque celui-ci est à poste sur le réseau, une alimentation autonome est préférable.

Si vous êtes attentif, vous avez dû remarquer que ce montage est strictement le même que celui du chenillard ; dans un cas, on met la DEL avant la résistance, dans l’autre cas, on met la DEL après la résistance, mais cela revient au même. C’est là toute la puissance de l’électronique programmable : il suffit de changer le programme pour changer complètement le comportement d’un montage ! Nous allons voir maintenant comment reproduire les deux montages sur une plaque à bandes cuivrées, montages qui seront donc les mêmes dans les deux cas.

Montage sur une plaque cuivrée

Pour le montage sur une plaque à bandes cuivrées, nous avons modifié un petit peu l’implantation des composants, mais le schéma revient au même ; en fait, les sorties de l’ATtiny sont reliées aux résistances qui sont reliées à un bornier à 5 contacts (en rouge). Ce bornier accueille les anodes des LED. Les cathodes des LED sont reliées à un bornier à 3 contacts (en bleu) lui-même relié à la masse du montage. Comme il y a 5 LED pour un bornier à trois contacts, on doit mettre un ou deux fils dans un même contact. Cela revient à avoir placé la résistance avant la LED dans le montage dans le sens du courant sortant de l’ATtiny. La taille du circuit (65 x 58 mm) fait que l’implantation est aisée et ne pose aucun problème.

La figure 3 donne le montage sur une plaque à bandes cuivrées de 24 x 22 trous. À gauche l’implantation des composants, à droite le côté cuivre où on peut repérer les coupures (en vert) et les soudures (en gris). Attention à bien souder sur la bande sans déborder sur les bandes d’à côté, car sinon, il y aura des courts circuits ; en effet, la plaque cuivrée est prévue pour nécessiter que très peu de coupures, chaque bande horizontale étant conductrice tout du long. Les trous sont repérés en partant du trou le plus en haut et à gauche quand on regarde le côté cuivre. Les deux vues sont bien entendu en miroir.

Figure 3


Commencez par couper les bandes cuivrées où c’est nécessaire (repéré en vert) ; le mieux est d’utiliser une petite fraise sur une miniperceuse. Si vous n’avez pas de fraise, utilisez un foret et faites l’ébauche d’un trou (inutile de traverser la plaque !). Vérifiez bien que la coupure des bandes est franche et que la continuité électrique n’a plus lieu en utilisant un multimètre en position ohm-mètre.

Percez les 4 trous de fixation puis coupez la plaque aux bonnes dimensions avec une scie à denture très fine. Bien retirer toute poussière de fraisage, de perçage ou de découpage avec une brosse ou de l’air comprimé. Les vis de fixation pour ces quatre trous ne doivent pas créer de court-circuits entre bandes cuivrées. Plusieurs procédés sont possibles : isoler les zones de la vis, intercaler une rondelle en plastique entre la vis et la plaque, utiliser de la visserie nylon ou bien encore faire les trous ailleurs pour que les vis n’interfèrent pas avec des bandes cuivrées conductrices. Choisissez ce qui vous convient le mieux.

Soudez en premier le support de CI (2 x 4) devant recevoir l’ATtiny en positionnant son encoche du bon côté pour se rappeler du sens de l’ATtiny.

Soudez les borniers (5 contacts et 3 contacts) ; on peut réaliser un bornier à 5 contacts en assemblant ensemble grâce à la petite rainure adéquate un bornier à 3 contacts et un à 2 contacts.

Soudez les deux straps (violets sur le schéma) puis les 5 résistances. Terminez en soudant deux fils pour l’alimentation de 5 V.

La figure 4 vous montre le circuit côté composant tout en laissant apparaître les bandes cuivrées comme si le support était transparent (le trou (1,1) est donc en haut à droite).

Figure 4


Une fois tous les composants soudés, vérifiez bien que vous n’avez pas fait d’erreur puis insérez l’ATtiny programmé dans son support en respectant bien son orientation. Montez les LED dans les borniers comme indiqué plus haut (montage à cathodes communes). Enfin, alimentez le montage avec une alimentation stabilisée de 5 V ou bien à partir de votre module Arduino puisqu’on peut récupérer +5 V et GND dessus.


Vous voilà en possession de deux animations lumineuses pour votre réseau, un chenillard de travaux routiers et une enseigne pour un hôtel. Ces deux animations n’ont pas besoin de la puissance d’un module Arduino/Genuino Uno pour fonctionner et le montage pour les deux animations revient moins cher que le prix du module Uno que vous pouvez consacrer à autre chose. Et si vous avez besoin de plus de sorties pour écrire RESTAURANT par exemple, et bien utilisez le µC de la famille ATtiny24/44/84, bien similaire à l’ATtiny45 mais disposant de plus de sorties numériques. On ne va quand même pas vous mâcher le travail à chaque fois !

6 Messages

Réagissez à « Le microcontrôleur ATtiny45 (3) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Résistances, kézako ?

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servo-moteur

Les encodeurs en quadrature

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Les derniers articles

Le microcontrôleur ATtiny45 (7)


Christian

Commande de moteur à courant continu


Christian

Le microcontrôleur ATtiny45 (6)


Christian

Les shields de prototypage et de connexion


Christian

Le microcontrôleur ATtiny45 (5)


Christian

Signaux lumineux et Arduino


Christian

Le microcontrôleur ATtiny45 (4)


Christian

Le microcontrôleur ATtiny45 (3)


Christian

Le microcontrôleur ATtiny45 (2)


Christian

Le microcontrôleur ATtiny45 (1)


Christian

Les articles les plus lus

Commande de moteur à courant continu

Bouton poussoir

Les écrans LCD alphanumériques

La carte Arduino Uno

Qu’est ce qu’une carte Arduino ?

Les diodes classiques

Le microcontrôleur ATtiny45 (1)

Relais électromagnétique

Les encodeurs en quadrature

Fonctionnement et pilotage d’une DEL