dimanche 28 juillet 2013

Utilisation d'un 4050 pour abaisser un niveau logique (5 V à 3,3 V)

Comme vous le savez, les sorties logiques de l'Arduino se mettent à 5 volts lorsqu'elles sont dans l'état logique "Haut".  Toutefois, il est fréquent de devoir brancher à l'Arduino un périphérique fonctionnant à 3,3 volts (par exemple un lecteur de cartes SD, un module RF, etc.).  Il est alors fortement recommandé d'abaisser à 3,3 volts les signaux de 5 volts émis par l'Arduio avant qu'il n'atteignent les entrées du périphérique.

L'utilisation d'un circuit intégré 74HC4050 (ou à peu près n'importe quel circuit intégré comportant "4050" à l'intérieur de son numéro) constitue alors une solution simple et efficace.  Un seul de ces circuits intégrés vous permet d'abaisser 6 signaux différents.

Sur le schéma ci-contre, les broches "A" sont des entrées, et les broches "Y" sont des sorties.  Ainsi, si le signal à l'entrée "A1"  est de 0 V, le signal à la sortie "Y1" sera également nul.  Si le signal à l'entrée "A1" est supérieur ou égal à Vcc, le signal à la sortie "Y1" sera égal à Vcc.   Les pins NC ne servent à rien ("not connected").

Supposons, par exemple, que je désire brancher à l'Arduino un lecteur de carte SD.  Les signaux qui vont de l'Arduino vers la carte SD sont CLK (clock), MOSI (master out slave in) et CS (chip select).  On peut les abaisser à 3,3 V en les faisant d'abord passer par le 4050 de la façon illustrée ci-contre (comme vous le constatez, la broche 1 "Vcc" est alimentée à 3,3 volts, ce qui limitera tous les signaux de sortie à 3,3 V).


Le signal MISO (master in slave out) est acheminé du lecteur de cartes vers l'Arduino et ne doit donc pas être abaissé (il est de 3,3 V et l'Arduino l'interprétera sans problème comme un signal logique haut). Le la broche MISO de la carte SD est donc directement branchée à la broche 12 de l'Arduino, sans passer par le 4050.

Il est souvent recommandé de brancher les entrées non-utilisées à la masse (GND) (mais vous laissez déconnectées les sorties non-utilisées).

Yves Pelletier (TwitterFacebook


samedi 20 juillet 2013

Transmission de son par une LED infrarouge

Utiliser la lumière pour transmettre un son?  L'idée peut sembler audacieuse si on oublie que, tout comme les ondes radio utilisées de façon routinière en télécommunications, la lumière est, elle aussi, une onde électromagnétique.

Pour cette expérience très facile à réaliser, j'ai reproduit les deux circuits proposés par le néo-zélandais Denis Burchill.

Pour le circuit émetteur, j'ai utilisé une LED infrarouge du genre qu'on retrouve dans les télécommandes de téléviseur, car le phototransistor dont je disposais pour construire le récepteur est plus sensible aux longueurs d'onde infrarouges qu'aux longueurs d'onde visibles.  En bon nord-américain, j'ai aussi remplacé le transistor BC548 par un 2N3904.

Quant au récepteur, il est essentiellement constitué d'un amplificateur audio LM386, d'un phototransistor, et d'un haut-parleur.

Quelques dizaines de minutes ont été suffisantes pour monter un circuit fonctionnel:  de la musique provenant d'un lecteur mp3 fait osciller l'intensité lumineuse émise par la LED infrarouge.  Cette lumière variable, captée par le phototransistor, se transforme en signal électrique qui sera amplifié par le LM386 avant de faire vibrer le haut-parleur.

La qualité sonore du signal émis par le haut-parleur est évidemment inférieure à celle de la source initiale (le lecteur mp3), mais ça fonctionne bien en autant que l'émetteur ne soit pas trop éloigné du récepteur (dans mon cas, à 30 cm, le son devenait très faible).

Cette faible portée limite à mon avis les possibilités d'application pratique de ce circuit:  il s'agit d'abord et avant tout d'une expérience amusante et instructive, facile à réaliser avec du matériel très commun.

Pour une plus grande portée, il faut songer à remplacer la LED par un laser.  Ce sera peut-être le sujet d'une prochaine rubrique...

(Le schéma de circuit détaillé pour l'émetteur et le récepteur sont disponibles sur la page de Denis Burchill).

Yves Pelletier (Twitter: @ElectroAmateur)

mardi 16 juillet 2013

Livre: Make: Analog Synthesizers par Ray Wilson

On peut difficilement trouver meilleur auteur que Ray Wilson pour écrire un livre destiné aux néophytes qui désirent s'initier au fonctionnement et à la construction des synthétiseurs analogiques.  Wilson est l'artisan du réputé site Music From Outer Space dans lequel il documente ses nombreuses créations dans le domaine des instruments de musique électroniques à fabriquer soi-même.

La pierre angulaire du livre est probablement la marche à suivre pour construire votre premier synthétiseur analogique: le "Noise Toaster".  Un peu comme le "Weird Sound Generator" (conçu par Ray Wilson également) que j'avais expérimenté il y a quelques mois, il s'agit plus d'un bidule faisant des sons amusants que d'un véritable instrument de musique (voir la démonstration qu'en fait Ray Wilson dans la vidéo ci-dessous).   Malgré tout, le noise toaster comporte les principaux modules d'un synthétiseur complet:  générateur de bruit blanc, oscillateur contrôlé en tension (VCO), filtre passe-bas contrôlé par tension (VCF), amplificateur contrôlé en tension (VCA), oscillateur basse fréquence (LFO), générateur d'enveloppe (AREG), amplificateur.  Le principe de fonctionnement de ces différents modules est clairement vulgarisé, sans équation complexe, pour les synthétiseurs analogiques en général et pour le noise toaster en particulier.




Et se doutant bien que ses lecteurs voudront ensuite réaliser autre chose que le noise toaster, Wilson nous présente en annexe différentes façon d'utiliser un amplificateur opérationnel, ainsi que les diverses façons possibles d'utiliser des circuits intégrés CMOS dans un synthétiseur analogique fait maison.

Le livre est passionnant.  Bien sûr, comme c'est souvent le cas en électronique, à peu près toute l'information est disponible sur internet (même les instructions détaillées pour la construction du Noise Toaster se trouvent sur le site Music from Outer Space).

Make: Analog Synthesizers
par Ray Wilson
O'Reilly Media


Yves Pelletier (Twitter: @ElectroAmateur)

samedi 13 juillet 2013

Effet pour guitare: la rebote 2.5 delay

Parfois, on prévoit qu'un projet va être difficile, et on est surpris de le mener à terme les doigts dans le nez, sans rencontrer le moindre pépin.  Et pour d'autres projets, comme pour ma rebote delay, par exemple, c'est exactement le contraire qui se produit.

La rebote delay est une pédale d'effet pour guitare:  vous jouez une note et elle sera répétée quelques fois de suite, comme un écho.  Des potentiomètres vous permettent de contrôler le volume de l'écho, le nombre de répétitions ainsi que le temps écoulé entre chaque répétition. L'élément principal du circuit est le circuit intégré PT2399 de Princeton Technology, qui a spécialement été conçu pour ce genre d'application.

J'ai fait une première tentative de rebote delay sur perfboard en février 2011.  Mais cette version ne fonctionnait malheureusement pas comme prévu:  peu importe comment je réglais les potentiomètre, le circuit se limitait à ajouter une unique répétition à la note jouée.  Il y avait forcément une erreur quelque part dans le circuit, mais je ne l'ai jamais trouvée.

Nouvelle tentative en juin 2011:  cette fois, j'ai opté pour la fabrication d'un circuit imprimé (ma seule tentative du genre à ce jour).  Puisqu'il s'agissait ensuite de placer les composants aux endroits indiqués, je supposais que les risques d'erreur étaient négligeables...  Pourtant, cette deuxième version était encore pire que la première:  aucun signal n'atteignait la sortie du circuit. Suite à ces deux échecs consécutifs, mon orgueil en avait pris un coup!

Après avoir laissé le circuit prendre la poussière pendant deux années complètes, je l'ai ressorti cette semaine, avec l'intention de régler le problème.  J'ai rapidement constaté que mon travail de soudure de l'époque était pitoyable, et qu'il serait plus efficace de tout recommencer à partir du début...

Voici donc ma troisième tentative, sur une perfboard un peu plus grande que la première fois, question d'avoir un peu de place pour travailler.  Et après quelques faux départ (un pont de soudure qui était passé inaperçu, un potentiomètre au comportement imprévisible et un CI PT2399 rendu non-fonctionnel par mes erreurs précédentes), j'ai finalement réussi, après plus de deux ans, à construire une rebote delay fonctionnelle.  Il était temps...

Le schéma détaillé se trouve sur l'excellent site Tonepad, incontournable référence dans le domaine de la fabrication d'effets pour guitare.

À lire aussi

Amplificateur de guitare "Smokey Tone" et autres effets pour guitare: DOD Overdrive 250Brian May Treble Booster et Green Ringer de Dan Armstrong.

Yves Pelletier (Twitter: @ElectroAmateur)

lundi 8 juillet 2013

CircuitLab: un éditeur et simulateur de circuits en ligne

Mise à jour (18 août 2014):  Il semble qu'il n'est plus possible d'utiliser CircuitLab gratuitement.

Je viens tout juste d'explorer CircuitLab:  il s'agit d'un outil en ligne qui permet de dessiner des schémas de circuits, de les simuler, et de les partager.

Il n'est peut-être pas à la hauteur des simulateurs les plus perfectionnés, mais il est facile d'utilisation, gratuit (sauf si vous désirez avoir accès à des options avancées) et vous avez accès à vos créations à partir de n'importe quel ordinateur relié à internet.



Ci:dessous:  un petit circuit construit très rapidement à partir des outils disponibles.


Et le résultat de la simulation (tension au noeud 1):


Yves Pelletier (Twitter: @ElectroAmateur)

samedi 6 juillet 2013

Bargraphe à LED, Arduino et CD4017

Un afficheur bargraphe à LED est constitué de 10 LEDs regroupées dans un même boîtier, chaque LED étant munie de sa propre paire de broches (vous pouvez donc obtenir le même résultat avec 10 LEDs individuelles si vous ne disposez pas d'un bargraphe déjà fait).  Un bargraphe peut être bien utile pour afficher une valeur analogique dont la valeur numérique exacte n'a pas une grande importance.  L'exemple classique est le VU-mètre qui affiche le niveau d'un signal audio:  la barre lumineuse qui monte et qui descend est plus pertinente qu'une valeur numérique qui changerait tout le temps!

On pourrait aussi imaginer un magnétomètre utilisant comme capteur une sonde à effet Hall (la Allegro A1302, par exemple).  La sonde produit une tension proportionnelle à l'intensité du champ magnétique, mais ce résultat n'est pas calibré en Tesla ou en Gauss:  on pourrait être plus intéressés à un affichage bargraphe qui nous indiquera en un coup d'oeil si le champ magnétique est faible ou intense plutôt qu'à une valeur numérique n'ayant pas de signification directe.

10 sorties de l'Arduino?!?!?!?!?

La plupart des tutoriels concernant l'utilisation d'un bargraphe avec un Arduino préconisent un branchement direct:  chaque LED du bargraphe est contrôlée par sa propre sortie de l'Arduino.  C'est simple, et ça peut toujours s'appliquer si votre Arduino est muni d'un unique capteur (le magnétomètre mentionné plus haut, par exemple), mais si votre projet est un tantinet plus ambitieux, vous préférerez utiliser ces pins de l'Arduino pour autre chose.

Économiser des sorties de l'Arduino

Nous allons donc utiliser un intermédiaire entre l'Arduino et l'afficheur bargraphe pour que ce dernier n'utilise que 3 ou 4 pins de l'Arduino, pas plus.  Il existe plusieurs possibilités:
  • un pilote de LEDs spécialisé, genre MAX7219, MAX7221 ou AS1108:  ils sont conçus pour ce genre d'application, mais coûtent vraiment cher.  Puisqu'ils permettent de contrôler 64 LEDs individuelles, ça peut devenir un choix intéressant si vous avez 5 ou 6 bargraphes à contrôler en même temps.
  • un registre à décalage 74HC595:  peu coûteux, mais puisqu'il n'a que 8 sorties, il en faudrait un deuxième, comportant 6 sorties non-utilisées 
  • un compteur décimal CD4017 qui a, justement, 10 sorties, une pour chaque LED de mon  bargraphe! C'est cette dernière option que j'ai décidé d'appliquer.


Étude du circuit intégré CD4017

Le CD4017 est un compteur décimal:  il est muni de 10 sorties.  Si vous appliquez un signal logique haut à l'entrée 15 (reset), la sortie 0 devient haute (toute les autres sorties sont basses). Ensuite vous appliquez un signal haut à la broche 14 (clock):  la sortie 0 devient basse, et la sortie 1 devient haute.  Vous appliquez à nouveau un signal haut à la broche 14, et c'est la sortie 2 qui devient haute.  Chaque fois que signal acheminé à sa pin 14 (clock) passe d'une valeur logique basse à une valeur logique haute, c'est la sortie suivante qui devient haute.

Persistence rétinienne

Ce qui complique un peu les choses, dans notre cas, c'est que nous voulons que plusieurs LEDs du bargraphe soient allumées en même temps, alors qu'avec un CD4017 on dispose de 10 sorties, dont une seule est active à la fois.  Heureusement, l'Arduino est capable d'envoyer à la pin "clock" des impulsions tellement rapides que nos yeux ne verrons pas la différence:  plusieurs LEDs sembleront allumées en même temps, alors qu'en réalité elles s'allument et s'éteignent très rapidement, une à la fois.

Les connexions

Rien de bien compliqué:  vous alimentez chaque LED du bargraphe au moyen d'une sortie du CD4017, en ajoutant une résistance de protection pour chaque LED (150 Ω ou environ), tel qu'illustré ci-contre.

Les pins 8 (GND) et 13 (Enable) sont toutes les deux reliées au GND de l'Arduino.  Les trois entrées restantes du CD4017 sont branchées à l'Arduino de la façon suivante:

  • pin 14 du CD4017 (Clock) à la pin 2 de l'Arduino
  • pin 15 du CD4017 (Reset) à la pin 3 de l'Arduino
  • pin 16 du CD4017 (Vcc) à la pin 4 de l'Arduino
Pour produire rapidement un signal analogique variable qui fera réagir le bargraphe, vous pouvez utiliser un potentiomètre dont le curseur est branché à l'entrée analogique A0 de l'Arduino.


Le sketch

Le voici:

En résumé, on prend la valeur analogique captée à l'entrée A0 de l'Arduino, on la convertit pour obtenir une valeur entière située entre 0 et 10.  Si la valeur est 0, on n'achemine rien à la broche 16 du CD4017 (de façon à ce qu'aucune LED ne soit allumée).  Si la valeur est 5, on allume les 5 première LEDs une après l'autre, mais ça se fait tellement vite qu'on a l'impression que les 5 LEDs sont allumées en même temps.

On peut aussi obtenir un résultat similaire avec un afficheur à cristaux liquides (LCD), mais ça, je l'avais déjà expliqué.

MSP430 Launchpad

Pour utiliser le sketch avec un MSP430 Launchpad et Energia, une légère modification est nécessaire car la pin digitale 2 et la pin analogique A0 font toutes deux référence à la même pin (P1_0).  Il est donc nécessaire d'assigner les pins différemment au début du sketch.

La configuration qui nécessite le moins de modifications au sketch serait:
  • pin 14 du CD4017 (Clock) branchée à la pin P1_0 du msp430 Launchpad
  • pin 15 du CD4017 (Reset) branchée à la pin P1_1 du msp430 Launchpad
  • pin 16 du CD4017 (Vcc) branchée à la pin P1_2 du msp430 Launchpad
  • signal analogique acheminé à la pin P1_3 du msp430 Lauchpad
Dans le sketch, il ne reste plus qu'à remplacer la ligne "int signalPin = A0;" par "int signalPin = A3;". 

(Dans ce cas, le signal analogique ne doit pas excéder 3,3 V.)


(Pour la rédaction de cet article, je me suis inspiré des travaux de Leonel Machava publiés ici, mais j'ai beaucoup modifié le sketch).

Yves Pelletier (Twitter: @ElectroAmateur)

jeudi 4 juillet 2013

La machine à dire "bonjour"

Dans ma plus récente rubrique, j'avais utilisé un Arduino, un breakout VS1053 et un lecteur de carte SD pour fabriquer mon propre lecteur mp3; tout ça est bien amusant, mais c'est se donner bien du mal pour reproduire un gadget disponible pour $15 à tous les coins de rue... En utilisant le même matériel, essayons maintenant quelque chose d'un peu moins répandu, quelque chose que la plupart de vos amis ne possèdent probablement pas: un salueur électronique!

Mise en situation: 

Vous êtes de retour à la maison après une longue journée de travail. La maison est malheureusement déserte, mais quel plaisir d'entendre votre salueur élecronique qui, ayant détecté votre arrivée, vous lance un tonitruant "Bonjour, ça va?".

Matériel et connexions: 

Vous avez besoin d'un Arduino (j'ai utilisé un UNO), d'un module mp3 VS1053, d'un module lecteur de carte SD, d'une carte SD, d'un détecteur de mouvement à infrarouge (PIR) et d'un système de haut-parleurs multimédias (du genre qu'on branche à un ordinateur pour avoir du son) .

Je vous réfère à ma rubrique précédente pour une description détaillée de la façon de connecter votre module VS1053 et votre lecteur de carte SD. Si vous êtes l'heureux propriétaire du shield mp3 de Sparkfun (qui est déjà muni d'un VS1053 et d'un lecteur de carte SD), c'est encore plus simple: vous l'insérez sur l'Arduino et vous venez d'économiser au moins 15 minutes.

Le détecteur de mouvement à infrarouge PIR est muni de trois connecteurs:  GND, OUT et 5 V.  Branchez le "OUT" à l'entrée 3 de l'Arduino.  Je vous laisse deviner où vous branchez GND et 5V...

Préparation des fichiers mp3: 

Pour plus de variété, nous allons préparer plusieurs fichiers mp3, chacun contenant une salutation différente. Vous pouvez créer ces fichiers vous-même (j'ai utilisé le logiciel gratuit Audacity): dans un fichier vous pouvez dire "Bonjour!", dans l'autre vous dites "Te voilà enfin! Tu y as mis du temps!", et dans un autre vous dites "Salut, je commençais à m'ennuyer...". Une autre option possible consiste à télécharger des fichiers mp3 contenant des salutations dans différentes langues étrangères.

Attention:  pour que le sketch que je vais bientôt vous présenter fonctionne correctement, vous devez baptiser vos fichier "Track001.mp3", "Track002.mp3", etc.  Et vous les placez dans votre carte SD.

Le sketch:

Mon sketch nécessite l'installation de la librairie SFEMP3Shield.  Chaque fois que le détecteur de mouvement...détecte un mouvement, l'entrée 3 de l'Arduino devient haute pendant quelques secondes.  Le sketch vérifie alors à quand remonte la plus récente détection de mouvement.  S'il s'agit du premier mouvement détecté depuis plus de 15 minutes (temps que vous pouvez évidemment modifier selon vos préférences), un fichier mp3 choisi au hasard sera joué.

Votre salueur électronique vous saluera donc chaque fois que vous serez  de retour dans la pièce après y avoir été absent pendant plusieurs minutes.

Variantes:

L'appareil peut aussi servir à jouer des tours:  placez-le dans le bureau d'un collègue qui ne se doute de rien, et il sera bien surpris d'être salué par un fantôme.  Il peut aussi servir de système d'alarme: quelqu'un qui s'en approche pourrait être accueilli par un agressif "Sortez de ma chambre!!!".

Et lorsque vous en avez assez de votre salueur électronique, vous le démontez pour utiliser ses composants dans un futur projet...

P.S.:  Les lecteurs perspicaces remarqueront une certaines ressemblance avec un projet précédent, dans lequel l'Arduino jouait une courte mélodie lorsqu'il détectait l'arrivée de quelqu'un.

Yves Pelletier (Twitter: @ElectroAmateur)