jeudi 15 décembre 2016

Étude de CI: Exploration du timer 555


Mis sur le marché en 1971, le 555 est un grand classique de l'électronique même si, à l'ère des microcontrôleurs à prix modique, ses possibilités vous sembleront peut-être quelque peu limitées.

Le 555 est une minuterie:  on peut l'utiliser pour générer une impulsion de durée prédéterminée (mode monostable) ou une oscillation de fréquence prédéterminée (mode astable).

Je vous propose ici trois petites expériences simple à réaliser sur breadboard, qui vous permettront d'explorer les trois modes d'utilisation du 555:  monostable, bistable et astable.

Mais avant tout, commençons par une brève description du circuit intégré, qui comporte 8 broches:
  • Il est alimenté au moyen des pins 1 (GND) et 8 (VCC).  La tension d'alimentation peut prendre n'importe quelle valeur située entre 4,5 V et 16 V.

  • La pin 2 "TRIGGER" est la gachette:  une entrée qui déclenche le début du chronométrage lorsqu'elle est soumise à une tension basse (1/3 de Vcc ou moins).
  • La pin 3 "OUTPUT" est la sortie.  Elle peut être basse (quelques millivolts) ou haute (environ 1,7 V de moins que VCC).
  • La pin 4 "RESET" est une entrée qui permet la réinitialisation de la minuterie (lorsqu'elle est soumise à une tension nulle)
  • La pin 5 "CONTROL", rarement utilisée, est une entrée qui permet de modifier la tension de référence pour qu'elle soit autre chose que la valeur par défaut (2/3 de VCC).
  • La pin 6 "TRESHOLD" est le seuil:  une entrée qui déclenche la fin de la minuterie lorsqu'elle est soumise à une tension supérieure à la tension de la pin "CONTROL" (par défaut: 2/3 de VCC).
  • La pin 7 "DISCHARGE":  sortie qui permet la décharge d'un condensateur.  C'est la durée de la charge de ce condensateur qui influencera le temps pendant lequel la sortie (pin 3) sera haute.
En bref:  la sortie (pin 3) est généralement basse.  Mais si la gachette (pin 2) est mise à 0 V, la sortie devient haute jusqu'à ce que le seuil (pin 6) soit soumis à une tension supérieure à (2/3)*VCC.  À ce moment, la sortie redevient basse.

Fonctionnement en mode bistable

Voici le schéma d'un circuit dans lequel le 555 est en mode bistable.  Une LED est utilisée pour visualiser l'état de la sortie.  Le schéma indique une tension d'alimentation de 5 V mais, comme je le mentionnais plus haut, ça peut être beaucoup plus si vous le préférez (au besoin, augmentez la résistance de protection de la LED).


Dans ce mode, le 555 se comporte comme une bascule (flip-flop) et non comme une minuterie:   lorsque vous appuyez sur le bouton qui est lié à la gachette (pin 2), cette dernière est temporairement soumise à une tension nulle, ce qui a pour effet de mettre la sortie (pin 3) dans son état haut:  la LED s'allume, et elle demeure allumée même après avoir relâché le bouton (le 555 agit donc comme une mémoire: il se "souvient" que le bouton a été enfoncé, même s'il ne l'est plus).

Pour éteindre la LED, il s'agit d'appuyer sur le bouton qui est relié à la pin 4 (reset).  Là encore, la LED demeure éteinte après que vous ayez relâché le bouton.

Comme je le disais plus haut, lorsque la gachette est mise à 0 V, la sortie devient haute jusqu'à ce que la pin 6 soit soumise à une tension supérieure aux 2/3 de VCC:  en mode bistable, cette situation n'arrive jamais, puisque la pin 6, étant reliée à la masse (GND), demeure toujours à 0 V.




Fonctionnement en mode monostable

Modifions maintenant notre circuit pour que le 555 fonctionne plutôt en mode monostable.  Par rapport au circuit précédent, rien ne change en ce qui concerne les pins 1, 2, 3, 5 et 8. Par contre, la pin 4 est directement reliée à 5 V.  Observez également les pins 6 et 7:  elles sont reliées ensemble par un fil conducteur, ainsi qu'à un condensateur (relié à la masse) et une résistance (reliée à 5 V).



Cette fois, lorsque vous appuyez sur le bouton, la LED s'allume pendant quelques secondes, et finit par s'éteindre d'elle même.



Le temps pendant lequel la LED demeure allumée après qu'on ait relâché le bouton dépend de la valeur de la résistance et du condensateur branchés aux pins 6 et 7.  Le temps nécessaire pour que notre petit circuit RC atteigne une charge équivalent aux 2/3 de VCC est donné par l'équation suivante:

     t = ln(3) * RC

Ici, j'ai utilisé une résistance de 220 kΩ (R = 220 000 Ω) et un condensateur de 10 μF (C = 0,000010 F):

    t = ln(3) * 220 000 * 0,000010 = 2,2 s

La LED reste donc allumée pendant environ 2,2 s.

Il est également possible d'utiliser un calculateur en ligne.

Il va sans dire que vous pouvez modifier la valeur de la résistance et/ou de la capacité afin que le comportement du circuit corresponde à vos besoins.

Si le coeur vous en dit, vous pouvez utiliser un multimètre pour mesurer la tension de la pin 6:  suite à l'appui sur le bouton, cette tension augmente progressivement jusqu'à atteindre 3,3 V (ce qui correspond aux 2/3 de 5 V):  c'est à ce moment que la LED s'éteint.

J'ai récemment utilisé un 555 en mode monostable pour transformer un véhicule radiocommandé en robot autonome.

Fonctionnement en mode astable

Il ne nous reste plus qu'à expérimenter le mode astable, dans lequel la LED clignotera sans arrêt.  Si on le compare au circuit monostable ci-dessus, les pins 1, 3, 4, 5 et 8 ne subissent aucune modification.

Le fil conducteur qui reliait les pins 6 et 7, toutefois, est remplacé par une résistance, et la pin 2 est reliée à la pin 6.


Cette fois, la LED clignote (plutôt lentement) de façon autonome.  Avec les valeurs de résistances et de capacité indiquées sur le schéma, elle devrait être allumée longtemps, et éteinte brièvement.





Cette fois, les valeurs de résistance et de capacité permettent de contrôler deux paramètres:  le temps pendant lequel la LED est allumée, et le temps pendant lequel la LED est éteinte:

        temps LED allumée = ln(2) * C * (R1 + R2)

        temps LED éteinte = ln(2) * C * R2

(R2 étant la résistance qui fait le lien entre la pin 6 et la pin 7)

Avec les valeurs indiquées dans le schéma ci-dessus, on obtient les valeurs suivantes:

     temps LED allumée = ln (2) * 0,00001 * (220000 + 220000) = 3,0 s

     temps LED éteinte = ln(2) * 0,00001 * 220000 = 1,5 s

La LED s'allume pendant 3 secondes, puis s'éteint pendant 1,5 s.

Si vous préférez, vous pouvez utiliser une page web qui fera le calcul pour vous.

Dans le passé, j'ai publié quelques projets impliquant le 555 en mode astable: fabrication d'un métronome, de l'Atari Punk Console, et d'un oscillateur pour pratiquer le code morse.

Yves Pelletier   (TwitterFacebook)


mardi 6 décembre 2016

Calculer la résistance de protection d'une LED

Lorsque vous branchez une LED dans un circuit, il faut toujours lui associer une résistance de protection, sinon votre LED risque de ne pas survivre bien longtemps.  Mais comment choisir la bonne valeur de résistance?


Commençons par énumérer les trois paramètres que vous devez connaître avant d'effectuer votre calcul:
  • La tension de seuil de votre LED.  C'est la différence de potentiel aux bornes de la LED quand elle est allumée.  Elle tourne généralement autour de 2 ou 3 V, mais la valeur exacte dépend  de la couleur émise par la LED (1,5 V pour l'infrarouge, 2 V pour le rouge, 3,3 V pour le bleu...).  Si vous disposez de la fiche technique de votre LED, c'est ce qui s'appelle "forward voltage".  Vous pouvez aussi la mesurer au moyen d'un multimètre (commencez par calculer une valeur temporaire de résistance en supposant une tension de seuil de 2 V, puis mesurez la tension aux bornes de la LED pendant qu'elle est allumée).
  • Le courant optimal pour votre LED.  On retrouve cette donnée dans la fiche technique de la LED ("forward current").   Il est souvent de 20 mA. Remarquez qu'il n'y a rien de tragique à allumer une LED avec un courant plus faible que la valeur optimale (la LED sera seulement moins brillante, et la différence ne sera peut-être même pas perceptible à l'oeil). Évitez toutefois les courants trop intenses:  si la LED ne grille pas immédiatement, sa durée de vie risque d'être sérieusement compromise.
  • La tension d'alimentation.  Il s'agit peut être d'une sortie de votre carte Arduino, de 4 piles AA en série, d'une alimentation de laboratoire...peu importe:  vous devez connaître la tension qui servira à alimenter votre LED.  Au besoin, mesurez-la au moyen d'un multimètre.  Cette tension doit être supérieure à la tension de seuil de la LED.

Le calcul:  la loi d'Ohm

Tout le monde connaît la loi d'Ohm, qui stipule que la tension est égale au produit de la résistance par le courant.

                         Loi d'Ohm:       U = RI

Encore faut-il l'utiliser correctement!

La loi d'Ohm s'applique à la résistance, et non à la LED.  Dans l'équation, "U" représente donc la tension aux bornes de la résistance.

Un premier exemple (une seule LED):

Supposons que vous désirez brancher une LED rouge à la sortie d'une carte Arduino.  Vous avez vérifié que la tension de seuil de votre LED est de 2 V, et votre Arduino génère une tension de 5 V.   La tension aux bornes de la résistance sera donc:

    5 V - 2 V = 3 V

On récapitule:  puisque la résistance et la LED sont branchées en série avec l'alimentation, elle sont traversées par le même courant de 20 mA, et elles se partagent la tension d'alimentation (2 V pour la LED, 3 V pour la résistance).

Nous sommes maintenant prêts à appliquer la loi d'Ohm à la résistance:

U = RI

3 = R (0,020)

R = 3 / (0,020) = 150 ohms

Un deuxième exemple (2 LEDs en série):

Vous désirez brancher alimenter deux LEDs bleues reliées en série au moyen d'une batterie de 9 V. La tension de seuils de vos LED est de 3,3 V.



Une fois allumée, chaque LED bleue consommera 3,3 V.  La tension aux bornes de la résistance sera donc:

9 V - 3,3 V - 3,3 V  = 2,4 V

La résistance doit donc être traversée par un courant de 20 mA lorsqu'elle est soumise à une tension de 2,4 V.

Nous appliquons à nouveau la loi d'Ohm à la résistance:

U = RI

2,4 = R (0,020)

R = 2,4 / (0,020) = 120 ohms

Un calculateur en ligne

Si vous êtes pressé ou paresseux, vous pouvez utiliser une page web qui fera le calcul pour vous.

Yves Pelletier   (TwitterFacebook)

samedi 3 décembre 2016

Robotisation d'une voiture radiocommandée, 2e version

Voici une nouvelle tentative de transformer une voiture radiocommandée (dont on a égaré la télécommande) en un véhicule robotisé autonome.  Une expérience similaire (qui date de quelques mois) impliquait l'utilisation d'une carte Arduino et d'un circuit intégré L293D, et d'un modèle de véhicule comportant deux moteurs.

Une première mise en garde s'impose:  bien que ce type de transformation puisse s'avérer amusante, ces véhicules sont conçus pour rouler plutôt rapidement:  pour cette raison il est peu probable que vous obteniez un résultat comparable à une base de robot spécialement conçue à cette fin.

Le véhicule à modifier

C'est le bas de gamme absolu des véhicules radiocommandés, destiné à de jeunes enfants.  À l'origine, la télécommande ne comportait qu'une manette qui ne pouvait occuper que deux positions: marche avant, ou marche arrière.  Si le véhicule est en marche avant, l'essieu avant s'aligne de façon à permettre un mouvement en ligne droite.  Si le véhicule est en marche arrière, l'essieu avant s'oriente de façon à ce que le véhicule recule en tournant selon un arc de cercle.


La propulsion est assurée par un seul moteur qui fait tourner l'essieu arrière.  Ce moteur est muni d'une roue d'engrenage comportant 10 dents.  Cette roue entraîne la rotation d'une roue d'engrenage de 26 dents, qui est solidaire d'une roue de 8 dents, qui elle-même entraîne la rotation d'une roue de 32 dents qui est collée à l'essieu arrière.  Ce mécanisme permet aux roues du véhicule de tourner environ 10 fois moins rapidement que le moteur (ce qui demeure une vitesse beaucoup plus rapide que celle d'une plate-forme spécialement conçue pour être robotisée).



Le véhicule comporte également un interrupteur marche/arrêt, ainsi qu'un compartiment pouvant contenir 4 piles AA.  Nous espérons pouvoir utiliser ces parties telles quelles à l'intérieur de notre robot autonome.

Comportement souhaité

Les possibilités de ce véhicule sont limitées:  il peut avancer en ligne droite, reculer en tournant, ou demeurer immobile.  Le projet consiste donc à munir le véhicule d'un détecteur de collision: un simple interrupteur fixé au pare-choc avant, qui établira un contact électrique en cas de choc avec un obstacle.

(On peut ajouter une rallonge à la tige métallique pour améliorer la détection)

L'état normal du véhicule consiste donc à avancer en ligne droite.  Mais si il percute un obstacle, il reculera en tournant pendant quelques secondes, puis repartira en ligne droite dans une direction différente de la direction initiale.

Contrainte supplémentaire: pas d'Arduino!

Mon premier réflexe aurait consisté à programmer une carte Arduino pour contrôler le moteur de la façon souhaitée, mais le comportement de notre robot sera tellement minimaliste que j'aurais eu l'impression de tuer un moustique au moyen d'un bazooka.  J'ai donc choisi de concevoir un circuit ne comportant pas le moindre microcontrôleur, comme dans le bon vieux temps.

1er étage:  un 555 en configuration monostable

Lorsque le détecteur de collision est actionné, le véhicule doit se mettre à reculer pendant quelques secondes.   Le détecteur de collision (qui est, rappelons-le, un interrupteur), est donc branché à un 555 configuré en monostable (voir le schéma ci-dessous).


N.B.:  Les schémas prévoient une alimentation de 5 V, mais vous pouvez utiliser une alimentation un peu plus puissante).

En temps normal, pendant que l'interrupteur n'est pas actionné, l'entrée du 555 (pin 2) est à 5 volts et sa sortie (pin 3) est à 0 V.

Mais il s'agit d'appuyer brièvement sur l'interrupteur pour que l'entrée du 555 soit mise à 0 V, ce qui place la sortie à 5 V pendant environ 2,5 secondes.

Cette durée est déterminée par la valeur de la résistance et du condensateur branchés aux pins 6 et 7 du 555:

     durée = 1,1 * R * C = 1,1 * 220 000 * 0,00001 = 2,42 s

Pour que le véhicule recule plus longtemps, il s'agit donc d'augmenter la valeur de la résistance ou la capacité du condensateur.

2e étage:  un amplificateur opérationnel

Nous disposons donc d'une tension qui est nulle quand le moteur doit être en marche avant, et qui devient 5 V lorsque le moteur doit se mette en marche arrière.

Notre pont en H (3e étage), toutefois, comporte deux entrées.  En marche avant, sa première entrée devra être à 5 V pendant que la deuxième sera à 0 V, alors que ce sera le contraire en marche arrière.

Après avoir exploré des solutions comportant un transistor ou une porte NON, j'ai finalement opté pour un amplificateur opérationnel configuré en comparateur de tension.

J'ai choisi le modèle TLC2272, qui fonctionne bien avec une alimentation simple et qui est "rail to rail", c'est à dire que sa tension de sortie est égale à sa tension d'alimentation.  (Dans un premier temps, j'avais utilisé un LM358:  ça fonctionnait, mais la tension de sortie était considérablement plus faible que la tension d'alimentation).


Les deux amplificateurs opérationnels inclus sur le circuit intégré sont utilisés afin de comparer la tension provenant du 555 à une tension de référence de 2,5 V (obtenue au moyen d'un diviseur de tension).

Lorsque la tension provenant du 555 est basse, la tension de sortie de l'amplificateur de gauche est de 5 V, alors que celle de l'amplificateur de droite est de 0 V.  Lorsque la tension provenant du 555 est haute, la tension de sortie de l'amplificateur de gauche est de 0 V, et celle de l'amplificateur de droite est de 5 V.

3e étage:  un pont en H

J'ai fabriqué un pont en H à partir de 4 transistors (pour plus d'informations sur le fonctionnement du pont en H, voir cet article).

J'ai expérimenté différents modèles de transistor et, parmi ceux que j'ai essayés, c'est la combinaison 2N4403 et 2N4401 qui a donné les meilleurs résultats (c'est l'option qui nécessitait la plus faible tension pour faire tourner le moteur).

Et ça fonctionne?

Oui... et non.  Pour faire tourner un moteur, aucun problème.  Le moteur tourne allègrement en marche avant, sauf lorsqu'on appuie sur le bouton, auquel cas il se met en marche arrière pendant 2 secondes et demi avant de se remettre à tourner dans le sens initial.  C'est très exactement ce qu'on espérait.

Les choses se corsent lorsque le moteur en question est chargé de faire avancer le véhicule.  Là, on manque sérieusement de puissance et le couple du moteur est insuffisant à moins d'augmenter l'alimentation à une bonne dizaine de volts­.  Et dire que j'espérais utiliser le compartiment à pile déjà présent sur le véhicule, qui permet d'accueillir 4 piles AA...

Il faut dire que, d'un point de vue mécanique, mon véhicule est une catastrophe:   le système d'engrenages qui transmet le mouvement du moteur vers les roues a tendance à bloquer très facilement, ce qui ne m'encourage pas tellement à poursuivre ce projet...

Sinon, il faudrait tenter d'améliorer le rendement du pont en H.  Tel que mentionné dans cet article du site Robot Room, la qualité des transistors peut faire une énorme différence.

Yves Pelletier   (TwitterFacebook)