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)

lundi 7 novembre 2016

Utilisation de la carte µLogic16 en mode entrée/sortie

Il y a quelques semaines, je vous parlais de la carte µLogic16, conçue en France par BS Electronics. À cette occasion, nous avions exploré le mode logique, qui a la particularité de permettre le contrôle de la carte au moyen d'un schéma de circuit logique (logiciel Logicontrol).

Aujourd'hui, nous allons explorer une autre façon de piloter la carte µLogic16:  il s'agit du mode entrée/sortie, qui permet de contrôler les sorties et de connaître l'état des entrées au moyen de commandes envoyées à partir d'un ordinateur.

Branchement de la carte à l'ordinateur

Il faut d'abord brancher la carte µLogic16 à un port USB de l'ordinateur.  S'il s'agit de votre première utilisation de la carte sur cet ordinateur, les pilotes seront automatiquement installés.



Choix d'un logiciel pour la communication

Pour communiquer avec la carte au moyen d'un ordinateur, n'importe quel logiciel permettant la communication série fera l'affaire: logiControl, putty, TeraTerm, le moniteur série de l'IDE Arduino, etc.

LogiControl

Un avantage d'utiliser logiControl, c'est qu'il a été spécialement conçu pour la carte µLogic16.  Par conséquent, vous n'avez pratiquement aucun réglage à effectuer.

Vous cliquez d'abord sur le bouton "Connect" afin de créer un lien avec la carte.

Vous écrivez ensuite vos commandes dans le champ "Cmd" situé dans le coin inférieur droit de la fenêtre, et vous cliquez sur le bouton "Send" pour les envoyer.

Putty

Si vous préférez utiliser Putty, vous devez choisir "Serial" dans le dialogue de démarrage, en plus de choisir le port série correspondant à la carte (c'était COM13 dans mon cas, mais j'ai dû aller fouiner dans le gestionnaire de périphériques pour le savoir) et une vitesse de 115200 bauds.


Cliquez ensuite  sur "Serial" dans la liste de gauche.  Les informations qui apparaissent dans cette fenêtre doivent être Data Bits:  8, Stop Bits:  1, Parity:  None et Flow control:  None.




Moniteur série Arduino

Si vous êtes déjà familier avec la programmation d'Arduino, nul besoin d'installer un nouveau logiciel:  le moniteur série de l'IDE Arduino fera parfaitement l'affaire.

Après avoir démarré le logiciel, il faut sélectionner le port série qui correspond à la carte µLogic16.


On affiche ensuite le moniteur série, puis on règle la vitesse de communication à 115200 bauds, et on sélectionne l'option "Retour de chariot".



Envoi de commandes à la carte

Dans un premier temps, nous sélectionnons le mode "entrée/sortie" en envoyant la commande "MODE IO"
(La carte répond "OK")




Pour vérifier rapidement que tout fonctionne correctement, allumons la LED "user" intégrée à la carte:  il s'agit d'envoyer le message "LEDON" (si tout va bien, la carte répond "OK" et la LED s'allume).  On peut éteindre la LED à nouveau en envoyant la commande "LEDOFF".



Réglons les 8 pins du port A pour qu'elles soient des entrées.  La commande à envoyer est "PORTA IN".   (La carte devrait encore répondre "OK").

Pour lire l'état de l'entrée 0 du port A, on écrit "READ PA0".  La carte répond "1" si l'entrée est à 5 V, et "0" si l'entrée est à 0 V.  Nous pouvons évidemment lire de la même façon l'état des entrées PA1, PA2, etc.




Réglons maintenant les 8 pins du port B pour qu'elles soient des sorties, en écrivant la commande "PORTB OUT".   (La carte répond "OK")

Pour régler la sortie 0 du port B à 5 volts, on écrit "SET PB0".   Pour la régler à 0 volt, on écrit "CLR PB0".



Pour la liste complète des commandes, veuillez vous référer au manuel d'instruction de la carte µLogic16.

Yves Pelletier   (TwitterFacebook)

Related Posts Plugin for WordPress, Blogger...