jeudi 30 mars 2017

Inverser le sens de rotation d'un moteur avec un relais DPDT

Un peu plus tôt cette semaine, dans un article portant sur les relais électromécaniques, j'ai décrit un montage permettant de contrôler un moteur à courant continu au moyen d'un relais SPST et d'une carte Arduino.  Le moteur, toutefois, tournait toujours dans la même direction; au moyen du relais, on le mettait en mouvement, ou on l'arrêtait.

Aujourd'hui, je vous présente un circuit à base de relais qui permet d'inverser le sens de rotation du moteur.  Lorsque l'électroaimant du relais est alimenté, le moteur tourne dans un sens, et lorsque l'électroaimant du relais n'est pas alimenté, le moteur tourne dans l'autre sens.  C'est le principe du pont en H, que nous avions déjà réalisé au moyen de transistors.

Premier montage: contrôle par interrupteur

Ce premier montage ne comporte aucun microcontrôleur.  Le moteur est toujours en rotation.  Il tourne dans un sens lorsque le bouton n'est pas enfoncé, et tourne dans l'autre sens pendant que le bouton est enfoncé.  


Remarquez que le pôle "normally closed" du premier commutateur est relié au pôle "normally open" du deuxième, et que le pôle "normally open" du premier commutateur est relié au pôle "normally closed" du deuxième.  L'alimentation du moteur est relié aux pôles communs.

(Notez que le moteur et l'électroaimant du relais peuvent partager la même alimentation s'ils fonctionnent tous les deux à la même tension.)





Deuxième montage:  on ajoute un Arduino.

Dans cette version, c'est une carte Arduino qui contrôle le relais.  Tel qu'expliqué dans mon article précédent, j'ajoute une diode de roue libre ainsi qu'un transistor afin de protéger le fragile microcontrôleur.




J'ai utilisé le même sketch ultra-simple que la dernière fois.



Résultat:  pendant 5 secondes, le moteur tourne dans un sens, et pendant les  5 secondes suivantes, il tourne dans l'autre sens.






Yves Pelletier   (TwitterFacebook)

mardi 28 mars 2017

Les relais électromécaniques


Un relais électromécanique, c'est un interrupteur commandé par un électroaimant.  On l'utilise pour isoler l'un de l'autre le circuit de commande (qui actionne l'électroaimant) et le circuit de puissance (qui est contrôlé par l'interrupteur).  Il n'existe alors aucune liaison conductrice qui permettrait au courant circulant dans le circuit de puissance d'endommager le circuit de commande.


Par exemple:  supposons que je désire utiliser un carte Arduino pour allumer et éteindre automatiquement une ampoule incandescente de 100 W qui éclaire mon salon. Il est hors de question de tenter d'allumer l'ampoule en la branchant directement sur une sortie 5 V de l'Arduino, comme on le ferait avec une petite LED:   mon ampoule a été conçue pour être alimentée par une tension beaucoup plus grande.  De plus, lorsque cette ampoule est allumée, elle est traversée par un courant beaucoup plus élevé que ce que peut tolérer l'Arduino:  il faut à tout prix éviter que le courant qui circule dans l'ampoule puisse atteindre l'Arduino.

Un relais permet de résoudre ce problème:  l'Arduino contrôle le courant qui circule dans l'électroaimant, et l'interrupteur, situé entre l'ampoule et la prise de courant, permet d'allumer ou d'éteindre l'ampoule (le circuit complet comporte quelques composants supplémentaires visant à protéger la carte Arduino:  j'en reparle plus loin dans cet article).

Attention!


Mon exemple ci-dessus pourrait laisser croire qu'expérimenter avec les circuits électriques résidentiels est un geste banal:  ce n'est pas le cas.  Le courant issu d'une prise de courant murale peut vous tuer, et un bricolage mal conçu peut causer un incendie.  Pour vous familiariser avec le principe de fonctionnement d'un relais, je préconise l'utilisation de circuits fonctionnant sous faible tension (12 V et moins).  Pour une utilisation réelle sous une tension de 120 V ou 230 V, mieux vaut se procurer un produit homologué fabriqué par des professionnels, plutôt qu'un bricolage maison fait de composants de source douteuse.


Principaux types de relais

Relais SPST ("Single pole single throw")

C'est le type le plus simple.  Il est muni de 4 connecteurs:  2 connecteurs pour le contrôle de l'électroaimant, et deux connecteurs reliés à l'interrupteur.
Dans sa version "normally open" (la plus fréquente), l'interrupteur bloque le courant si aucun courant ne circule dans l'électroaimant, et laisse circuler le courant si un courant circule dans l'électroaimant (vous pouvez généralement entendre un petit "clic" lorsque l'interrupteur change d'état).

Il existe aussi des relais "normally closed", qui font le contraire:  l'interrupteur laisse circuler le courant quand aucun courant ne circule à travers l'électroaimant, et bloque le courant lorsqu'un courant circule dans l'électroaimant.

Relais SPDT ("Single pole double throw")

Dans ce type de relais, l'interrupteur est remplacé par un commutateur.  Le relais comporte maintenant 5 connecteurs:  en plus des deux connecteurs reliés à l'électroaimant, il y a un connecteur "COM" (commun), un connecteur "NC" (normally closed) et un connecteur "NO" (normally open).
Lorsqu'aucun courant ne circule dans l'électroaimant, le connecteur COM est en contact avec le connecteur NC, mais pas avec le connecteur NO.

Lorsqu'un courant circule dans l'électroaimant, le connecteur COM est en contact avec le connecteur NO, mais pas avec le connecteur NC.

Relais DPST ("Double pole single throw")

C'est la même chose qu'un relais SPST, sauf qu'un même électroaimant contrôle deux interrupteurs distincts.  Ils comportent donc 6 connecteurs.
Relais DPDT ("Double pole double throw")

C'est la même chose qu'un relais SPDT, sauf qu'un même électroaimant contrôle l'état de deux commutateurs distincts.  Ils comportent 8 connecteurs.

Autres types de relais

Pour compliquer les choses encore un peu plus, certains relais fonctionnent en mode bistable:  le commutateur change d'état chaque fois que l'électroaimant est brièvement alimenté, puis conserve cet état pendant que l'électroaimant n'est plus alimenté.  Il peut aussi y avoir deux électroaimants différents:  un premier qui met le commutateur dans une certaine position, et un deuxième qui place le commutateur dans l'autre position.

Il est également possible de trouver deux relais distincts à l'intérieur d'un même boîtier.

Certains relais sont polarisés:  le courant dans l'électroaimant doit circuler dans une direction bien précise pour que le relais fonctionne correctement.

Comment identifier les broches d'un relais


Vous avez récupéré un relais lors de l'autopsie d'un appareil électronique hors d'usage, et vous aimeriez l'utiliser?

La disposition des broches d'un relais n'est malheureusement pas la même d'un relais à l'autre.  Et bien entendu, afin d'utiliser le relais, il faut savoir quelles broches alimentent l'électroaimant, quelle paire de broche est connectée en absence de courant dans l'électroaimant, etc.

Heureusement, le numéro de modèle est généralement imprimé sur le boîtier.  Il s'agit d'entrer ce numéro dans un moteur de recherche pour accéder à la fiche technique du relais.

Par exemple, on peut voir que le relais photographié à gauche porte le numéro de modèle OMI-SS-112L. Une recherche de ce numéro sur le web nous indique qu'il s'agit d'un relais SPDT (comme nous pouvions nous en douter, puisque le relais comporte 5 broches).

Un schéma nous montre la fonction des broches, quand nous regardons le relais par en-dessous:
Nous pouvons en déduire que les deux broches qui se situent du côté gauche sont celles qui permettent d'alimenter l'électroaimant, La broche située en bas à droite est le pôle commun.  La broche située en haut et légèrement à gauche du pôle commun est le pôle NC, alors que celle qui est située en haut à droite est le pôle NO.

Que faire si le numéro de modèle n'est pas indiqué sur le relais, ou si vous ne trouvez pas sa fiche technique sur le web?  Un bon vieux multimètre pourra vous dépanner:
  • Trouvez une paire de broches pour laquelle la résistance se situe quelque part entre 50 Ω et 1000 Ω:  il s'agit des broches reliées à l'électro-aimant.
  • Si vous trouvez une paire de broches pour laquelle la résistance est nulle:  une de ces broches est le pôle commun, alors que l'autre est un pôle NC.  Pour tester votre hypothèse, soumettez les deux broches de l'électroaimant à une différence de potentiel suffisante pour actionner le relais (vous entendrez probablement un petit "clic").   Dans le cas de notre relais OMI-SS-112L, 9 à 12 V feront l'affaire.  La résistance de la même paire de broches devrait maintenant devenir infinie.
  • Si vous trouvez une paire de broches pour laquelle la résistance est infinie lorsque l'électroaimant n'est pas alimenté, une de ces broches est le pôle commun, alors que l'autre est un pôle NO.  Pour tester votre hypothèse, activez l'électroaimant et vérifiez que la résistance devient nulle.
Ne pas dépasser les tensions et courants indiqués

Pour éviter de détruire votre relais, il est important de ne pas dépasser la tension d'activation indiquée, pour l'alimentation de l'électroaimant.  Par exemple, la tension d'activation du relais OMI-SS-112L photographié un peu plus haut est de 12 V.  Notez toutefois qu'une tension un peu plus basse que celle indiquée est souvent suffisante pour activer le relais.

Il faut aussi s'assurer que, du côté commutateur, la tension et le courant ne dépassent pas les valeurs indiquées (pour le relais OMI-SS-112L, cette tension peut atteindre 240 V et 10 A en courant alternatif).  Le relais fonctionnera très bien si ces valeurs sont plus basses, toutefois.

Un exemple: relais contrôlé par une carte Arduino

Terminons par une petite application pratique:  le contrôle d'un relais par un Arduino.  À moins que vous n'utilisiez un shield spécialement conçu pour l'Arduino, quelques précautions s'imposent:
  • Une diode "de roue libre" doit être branchée en parallèle avec l'électroaimant, pour absorber les tension causées par les variations de courant dans la bobine (induction électromagnétique).  La diode doit être orientée de façon à laisser circuler le courant vers la tension plus élevée.
  • Le courant nécessaire pour activer l'électroaimant sera probablement supérieur aux 20 mA que peut fournir une sortie GPIO de l'Arduino.  La sortie devra donc commuter un transistor (un peu comme quand on branche un haut-parleur à l'Arduino):  le faible courant issu de la sortie GPIO de l'Arduino contrôlera un courant plus fort dans l'électroaimant du relais.
  • On doit choisir un relais qui peut s'activer avec une tension de 5 V environ.  J'ai fait mes tests avec un relais SPST dont la tension d'activation est officiellement de 6 V, mais une tension inférieure à 5 V était suffisante pour l'activer.

Voici le schéma du circuit complet.  J'ai utilisé un transistor 2N3904 (n'importe quel transistor NPN d'usage général fera l'affaire).  Le relais contrôle un moteur alimenté par sa propre alimentation (indépendante de l'Arduino).  Vous pouvez remplacer ce moteur par autre chose (une lampe, par exemple).
Côté logiciel, rien de bien sophistiqué ici:  la pin numéro 8 est placée à un niveau logique HAUT pendant 5 secondes (ce qui active le relais pendant 5 secondes), puis à un niveau logique BAS pendant 5 secondes (ce qui rend le relais inactif pendant 5 secondes).

Il s'agit du traditionnel exemple "Blink" avec un délai plus long.



Voici ce que ça donne:  le moteur tourne pendant 5 secondes, puis s'immobilise pendant 5 secondes. Bien sûr, j'aurais pu utiliser un plus gros moteur nécessitant une alimentation plus puissante.





Yves Pelletier   (TwitterFacebook)

mardi 14 mars 2017

Transformer son ordinateur, sa tablette ou son téléphone en générateur de basses fréquences

Un générateur de basses fréquences (générateur de fonctions) peut s'avérer bien utile dans la boîte à outils d'un amateur d'électronique.  Cet appareil vous permet de produire une tension périodique de forme sinusoïdale, carrée, triangulaire ou en dents de scie, dont vous choisissez l'amplitude et la fréquence.

Vous en voulez un?  Quelques options s'offrent à vous:
  • En acheter un.
  • En construire un (comme celui-ci, par exemple).
  • Utiliser un logiciel qui transformera votre ordinateur, tablette ou téléphone en générateur de basses fréquences.
Il existe un grand nombre de logiciels qui accomplissent cette tâche, mais je me contenterai ici de vous en présenter quelques-uns, fonctionnant sous différents systèmes d'exploitation.   Je ne prétends pas qu'il s'agit des meilleurs choix, mais je les ai tous essayés et ils fonctionnent.

Mes critères de sélection?  Je me suis limité à des logiciels entièrement gratuits, faciles à utiliser, qui n'occupent pas trop d'espace de stockage.  Et puisque je tenais à les tester personnellement,  ils devaient aussi pouvoir fonctionner sur un des appareils (parfois désuets) que je possède.

1)  Un logiciel en ligne:  Online Tone Generator


On utilise Online Tone Generator avec un fureteur web (il est officiellement compatible avec Chrome, Firefox, Safari et Microsoft Edge).  Aucune installation n'est donc nécessaire.  L'interface est extrêmement simple:  un gros champ texte vous permet d'écrire la fréquence désirée (quand ce champ est sélectionné, vous pouvez aussi utiliser les touches fléchées du clavier pour modifier cette fréquence par bonds de 1 Hz, ou par bonds de 10 Hz si vous enfoncez également la touche majuscule).

Trois boutons "Play", "Stop" et "Save" servent à démarrer ou interrompre le signal, ou encore l'enregistrer sous la forme d'un fichier .wav d'une durée de 10 s.

On modifie l'amplitude du signal au moyen d'un curseur, et vous cochez la forme désirée parmi les 4 qui sont disponibles:  sinus, créneaux, dents de scie ou triangulaire.


2)  Un logiciel pour Windows:  Tone

Il existe un grand nombre de générateurs BF pour Windows.  Tone, par Tolvan Data n'est pas particulièrement récent, et pas du tout tape à l'oeil, mais il est léger (un simple fichier exécutable de moins de 1 Mo), simple d'utilisation, et entièrement gratuit.

La section "Signal" vous permet de choisir la forme du signal signal périodique, parmi 9 options possibles.  Vous pouvez modifier l'amplitude dans la section "Level" en déplaçant un curseur au moyen de la souris, ou en écrivant vous-même une valeur numérique en décibels.  La section "Frequency" vous permet d'ajuster la fréquence du signal grâce à deux curseurs ("Coarse" pour un ajustement grossier, et "Fine" pour un ajustement fin) ou simplement en écrivant la valeur désirée en hertz.  La fréquence peut prendre n'importe quelle valeur située entre 2 Hz et 20 kHz


3)  Une app pour Android:  Simple Tone Generator


L'interface de Simple Tone Generator est tellement épurée qu'au moins 80% de l'espace disponible sur l'écran sert à présenter la valeur de la fréquence sur un fond noir.  Cette fréquence peut être réglée en l'écrivant au clavier, en utilisant le curseur situé au bas de l'écran, ou en appuyant sur les boutons -Hz et +Hz.  On règle l'amplitude avec les boutons de volume. 4 formes sont disponibles:  sinus, créneaux, triangulaire et dents de scie.

4)  Une app pour iOS:  SGenerator Lite

Il existe un grand choix de générateurs basse fréquence sur l'Apple Store, mais j'ai choisi le seul capable de fonctionner sur mon iPad de première génération (iOS 5)....

Il m'a semblé beaucoup plus simple d'écrire directement la fréquence plutôt qu'utiliser les boutons rotatifs.  En plus du bruit blanc, seules deux formes de signaux sont disponibles:  sinus et triangulaire.

5) Un logiciel pour Linux:  SigGEN

Ce qui distingue SigGEN des autres logiciels présentés ici, c'est son interface "vintage".  Rien à cliquer ici:  SigGEN s'exécute dans le terminal en lignes de commandes, et les paramètres sont modifiés à partir du clavier (tabulation pour passer au champ suivant, flèche vers le bas pour choisir la forme du signal, etc).




J'ai d'abord d'abord installé SigGEN en écrivant "sudo apt-get install siggen".

Ensuite, on démarre en écrivant "siggen".

Dans mon cas, le logiciel m'a d'abord envoyé ce message d'erreur au démarrage:
"[siggen] No such file or directory : /dev/dsp"

Suite à une petite recherche dans google, j'ai essayé ce remède, avec succès:

sudo aptitude install alsa-oss
aoss siggen 


Et ça a fonctionné.  Apparemment, l'installation de "alsa-oss" fait apparaître le fichier ou répertoire qui était initialement absent.  (j'étais sous Debian, si vous tenez à tout savoir).

6)  Un logiciel pour Mac OS?  Pas vraiment.

Difficile de passer à côté de Tone Generator, par NCH Software,  lorsqu'on cherche une option pour le Mac, mais il n'est malheureusement pas gratuit.  Puisqu'il semble que je l'aie déjà utilisé dans le passé, voici tout ce que j'ai pu en tirer:



Si je devais obligatoirement utiliser un Mac non branché à internet, j'opterais probablement pour Audacity (aussi disponible sur Windows et Linux).  La raison pour laquelle je n'insiste pas outre mesure sur Audacity, c'est qu'il s'agit d'un logiciel assez sophistiqué pour le traitement du son (la génération de signaux périodiques ne constitue qu'une toute petite fonctionnalité parmi beaucoup d'autres).

7)  Et comment on récupère le signal?

Vous pouvez écouter le résultat grâce aux haut-parleurs de votre appareil mais, pour acheminer le résultat vers un circuit, il s'agit d'utiliser la sortie audio.  Le câble ayant jadis appartenu à un défunt casque d'écoute, par exemple, fera parfaitement l'affaire...


La prise jack stéréophonique est constituée de trois section:  le manchon (masse), l'anneau (canal droit) et la pointe (canal gauche).   Prenez garde de ne pas causer de court-circuit en mettant ces sections en contact l'une avec l'autre.  Certains logiciels permettent de produire deux signaux différents (un sur le canal droit, l'autre sur le canal gauche); d'autre produisent le même signal sur les deux canaux.




Les signaux ci-dessous ont été obtenus avec le logiciel Tone pour Windows; les résultats sont similaires avec les autres logiciels présentés précédemment.





Voilà.  J'ai oublié de mentionner votre logiciel préféré?  N'hésitez-pas à en parler en laissant un commentaire ci-dessous.

Yves Pelletier   (TwitterFacebook)

vendredi 3 mars 2017

S4A (Scratch pour Arduino)

S4A (Sratch for Arduino) est une version de Scratch qui permet d’interagir avec une carte Arduino en manipulant des blocs de codes dans un environnement graphique.  Puisque l’utilisateur n’a pas à écrire la moindre ligne de code, ce type de logiciel est particulièrement approprié pour les novices en programmation et, de façon particulière, les enfants.

J’ai déjà eu quelques occasions de parler de la version Rasbperry Pi  de Scratch, qui permet d’interagir avec les pins GPIO du Raspberry Pi. De plus, il y a quelques semaines, je vous avais présenté Blockly@rduino, qui poursuit le même objectif de faciliter la programmation d’une carte Arduino grâce à une interface graphique composée de blocs à imbriquer.

Attention à une différence importante entre Blockly@rduino et S4A:  alors que Blockly@rduino traduit les instructions formées par les blocs pour en faire un véritable sketch Arduino que nous pouvons ensuite téléverser dans le microcontrôleur, S4A se contente d’envoyer en temps réel des instructions à une carte Arduino dans laquelle on a préalablement téléversé un sketch qui lui permet d’interpréter les instructions provenant de S4A (sur cet aspect, S4A ressemble donc davantage à Firmata. qui nous permet entre autres choses de piloter une carte Arduino au moyen d’un script en Python exécuté sur un ordinateur).

Faisons maintenant un petit essai de S4A, pour voir…

1) Téléchargement du logiciel S4A sur un ordinateur

Attention:  même si la version conventionnelle de Scratch est déjà installée sur votre ordinateur, elle ne sera ici d’aucune utilité.  Pour communiquer avec une carte Arduino, vous devez installer le logiciel S4A, qui comporte des fonctionnalités qui ne se trouvent pas sur Scratch.  Pour ce faire, rendez-vous sur la page web de S4A, et cliquez sur le bouton “Téléchargement”.  Le logiciel existe en version Windows, MacOS et Linux (incluant Raspbian), et c’est évidemment gratuit.



2)  Installation du firmware sur une carte Arduino

Comme je le disais plus haut, S4A se contentera d’envoyer des instructions à l'Arduino par le port USB.  Pour que la carte soit en mesure d’interpréter correctement ces instructions, nous devons préalablement y téléverser le sketch "S4AFirmware16.ino" au moyen de l’IDE Arduino.  Ce sketch se trouve ici.  (Je suppose que l'IDE Arduino se trouve déjà sur votre ordinateur, et que vous savez comment l'utiliser...à moins que vous soyez vraiment arrivé ce sur blog par accident!).



3)  Quelques contraintes

S4A est officiellement compatible avec les cartes de modèle Uno (ainsi qu’avec les antédiluviennes Duemilanove et Diecemila):  aucune garantie de fonctionnement en ce qui concerne les autres modèles.

Lors d'une utilisation avec S4A, la vocation des pins de votre Arduino ne peut pas être modifiée:
  • Les pins 2 et 4 sont obligatoirement des entrées numériques
  • Les pins 5, 6 et 9 sont obligatoirement des sorties PWM
  • Les pins 10, 11 et 13 sont obligatoirement des sorties numériques
  • Les pins 4, 7, 8 et 12 sont réservées à la connexion d’un servomoteur à rotation continue
  • Les 6 entrées analogiques ne peuvent pas être converties en autre chose que des entrées analogiques
Admettez que ça limite un peu les possibilités…

4)  Démarrage de S4A




Dès le démarrage, le logiciel se met à la recherche de votre carte Arduino.  Si elle est branchée à l'ordinateur, elle sera automatiquement détectée (nul besoin de choisir soi-même le bon port série). Là où on voit habituellement le chat de Scratch (un "lutin", dans le jargon de Scratch), le dessin d'une carte Arduino apparaît, ainsi qu'un tableau montrant en temps réel l'état des entrées analogiques et numériques.


Pendant ce temps, les LEDs TX et RX de la carte clignotent frénétiquement, puisque la carte communique sans arrêt avec le logiciel.

5)  Premier exemple:  Une LED qui clignote

Pour vérifier que ça fonctionne, commençons par le traditionnel clignotement de la LED intégrée à la carte (qui correspond à la pin 13).

Il s'agit de faire glisser quelques blocs empruntées au catégories "Contrôle" et "Mouvement".



La routine s'exécute lorsque vous cliquez sur le drapeau vert, dans le coin supérieur droit de la fenêtre.

6) Deuxième exemple:  une LED commandée par un bouton

Dans ce deuxième exemple, une LED branchée à la pin 13 s'allume lorsqu'on appuie sur un bouton branché à la pin 2 (les schémas de circuit qui figurent sur la page web de S4A proposent de brancher la LED directement, sans résistance de protection...je ne le conseille pas...).


Là encore, le programme démarre lorsqu'on clique sur le drapeau vert.



7) Troisième exemple:  Un potentiomètre qui contrôle la taille du lutin Arduino

Finalement, amusons-nous à varier la taille du lutin Arduino (le dessin d'une carte Arduino dans la fenêtre du logiciel S4A) en tournant un potentiomètre branchée à l'entrée analogique A0:




Puisque l'entrée A0 peut prendre n'importe quelle valeur située entre 0 et 1023, le dessin peut prendre n'importe quelle taille de 0 jusqu'à 102% de sa taille d'origine.

Analog0 = 1023:


Analog0 = 401:

Analog0 = 0:




Conclusion:  C'est effectivement très facile d'interagir avec l'Arduino de cette façon, particulièrement si vous avez déjà un peu d'expérience avec Scratch (mon fils, qui a 13 ans, a appris à programmer avec Scratch à l'école).  Vous pouvez obtenir des résultats rapidement, en ne vous préoccupant que de la logique du code plutôt que de la syntaxe d'un langage de programmation.  Par contre, c'est dommage que la vocation des pins (entrée ou sortie) ne puisse pas être modifiée au besoin.

Yves Pelletier   (TwitterFacebook)