mardi 28 février 2017

Bip bip: 5 circuits qui produisent un son

Que ce soit pour un système d'alarme, une sonnette,  ou simplement pour irriter son entourage, il arrive parfois qu'on veuille produire un son au moyen d'un circuit électronique.  Cet article montre quelques façons différentes de procéder.

Le point commun de tous les circuits présentés ici, c'est qu'ils permettent de produire un son au moyen d'un petit haut-parleur chaque fois qu'on appuie sur un bouton.



Premier circuit:  un oscillateur constitué de 2 transistors

Notre premier circuit, que nous avions déjà exploré dans un précédent article,  ne comporte pas le moindre circuit intégré: il s'agit d'un oscillateur constitué de deux transistors (un transistor PNP et un transistor NPN).  J'ai utilisé un 2N3904 et un 2N3906, mais le circuit devrait fonctionner avec d'autres paires de transistors d'usage général.
L'oscillation est produite par une succession rapide de charges et de décharges du condensateur: lorsque le condensateur est chargé, les deux transistors deviennent conducteurs, ce qui cause la décharge du condensateur.  Une fois le condensateur déchargé, les transistors ne sont plus conducteurs, et le condensateur peut se charger à nouveau.

Vous pouvez obtenir un son plus aigu en diminuant un peu la capacité du condensateur, ou en diminuant la valeur de la résistance R2.


Deuxième circuit:  un timer 555

Un grand classique:  l'incontournable timer 555 en mode multivibrateur astable.  Encore une fois, vous pouvez sans problème modifier la fréquence en utilisant un condensateur de capacité différente (plutôt que 100 nF) ou des résistances de valeur différente.  Il s'agit du même circuit que j'avais jadis utilisé pour fabriquer un oscillateur pour pratiquer le code morse.

Troisième circuit:  porte NON

Le circuit intégré CD40106 comporte 6 portes NON à bascule de Schmitt, mais je n'en ai utilisé qu'une seule pour la réalisation de ce circuit.  Lorsque l'entrée de la porte est à un niveau logique haut, la sortie se règle à un niveau logique bas, et vice versa.  Si on redirige le signal de sortie vers le signal d'entrée, en prenant soin d'ajouter un délai grâce à un condensateur et une résistance, on obtient une oscillation.

La sortie du CD40106 ne procure pas suffisamment de courant pour alimenter le haut-parleur, toutefois, ce qui explique la présence du transistor.

Ici encore, il est parfaitement possible d'obtenir un son de fréquence différente en remplaçant le condensateur ou la résistance de 100 kΩ.
Dans le passé, nous avions expérimenté quelques synthétiseurs rudimentaires basés sur le CD40106.

Quatrième circuit:  un oscillateur constitué d'un amplificateur opérationnel

On peut faire un tas de choses formidables avec un amplificateur opérationnel; parmi celles-ci:  un multivibrateur astable.  J'ai choisi un LM358, ce qui m'a permis d'utiliser une alimentation simple (d'autres modèles d'amplificateurs opérationnels nécessitent une alimentation symétrique).

Tout comme le CD40106 dont nous parlions plus haut, la sortie du LM358 ne transporte pas assez de courant pour alimenter un haut-parleur, d'où l'ajout d'un transistor.



Cinquième circuit:  Arduino

Les 4 circuits précédents devraient vous avoir convaincu qu'il n'est pas nécessaire d'utiliser un microcontrôleur pour une tâche aussi simple que produire un son lorsqu'on appuie sur un bouton.

Pas nécessaire, mais quand même possible, et même plutôt facile.

Voici un circuit et un sketch permettant d'accomplir cette action au moyen d'une carte Arduino Uno. Cette fois, le transistor sert surtout à protéger la sortie numéro 8 de votre microcontrôleur préféré, car un courant trop intense risquerait de l'endommager.







Yves Pelletier   (TwitterFacebook)

jeudi 23 février 2017

Utilisation d'un régulateur de tension linéaire

De façon générale, un régulateur de tension est utilisé lorsqu'on désire une valeur précise de tension (par exemple:  5 V), qui demeurera constante malgré d'éventuelles fluctuations de la tension d'alimentation ou de la résistance du circuit alimenté.

Par exemple, après qu'une tension alternative ait été convertie en tension continue grâce à un rectificateur à double alternance,  nous obtenons un signal à peu près continu, mais qui comporte une légère ondulation, qui peut se révéler indésirable:  l'utilisation d'un régulateur de tension permet d'éliminer cette oscillation.

Dans d'autres situations, nous voudrons utiliser une pile pour produire une tension de 5 V... mais il n'existe pas vraiment de piles de 5 V.

Dans cet article, je me limite aux régulateurs linéaires conventionnels, qui ont l'avantage d'être très peu coûteux, en plus d'être facile à utiliser.   Comme nous le verrons,  ils ont toutefois l'inconvénient de gaspiller une proportion non négligeable d'énergie sous forme de chaleur.  Pour un circuit plus économe en énergie, un régulateur à découpage pourrait être plus approprié.

Régulateurs de tension fixe:  LM7805, LM7809, LM7812, etc.

Commençons par la série LM78XX, qui permet d'obtenir une tension fixe.  Les deux derniers chiffres du numéro de modèle nous indiquent la tension de sortie.  Ainsi, le LM7805 produit une tension de 5 V, le LM7809 produit une tension de 9 V, le LM7824 produit une tension de 24 V, etc.

Ces régulateurs sont généralement vendus en format TO-220.  Ils comportent 3 broches: la tension d'entrée (1), la masse qui est commune à l'entrée et à la sortie (2), et la tension de sortie (3).

Ces régulateurs consomment eux même un minimum d'environ 2 V; pour cette raison, la tension d'entrée doit être d'au moins 2 V de plus que la tension de sortie désirée.  Par exemple, pour obtenir une tension de 5 V au moyen d'un LM7805, il faut utiliser une alimentation d'au moins 7 V.  Cette tension d'entrée peut être aussi grande que 35 V, mais attention:  plus votre tension d'entrée est grande par rapport à la tension de sortie, plus votre régulateur dissipera une grande quantité de chaleur, ce qui représente beaucoup d'énergie gaspillée, d'une part, en plus de vous obliger à fixer au régulateur un radiateur qui évitera la surchauffe.

On recommande généralement d'ajouter un condensateur à l'entrée, et un condensateur à la sortie, pour améliorer la stabilité de la tension.  La fiche technique du fabriquant recommande 0,33 µF à l'entrée et 0,1 µF à la sortie. Toutefois, il n'est pas rare de voir des circuits dans lesquels on recommande deux condensateurs de 1 µF ou 10 µF, ou une combinaison de deux condensateurs en parallèle (afin de filtrer à la fois les perturbation de haute et de basse fréquence).

Pour la plupart des utilisations, la valeur exacte de ces condensateurs ne semble pas avoir une très grande importance.



Le schéma ci-dessous montre un circuit intégré alimenté en 5 V par un LM7805.


Par curiosité, j'ai mesuré le rendement d'un LM7805 alimentant une résistance de 1 kΩ, pour deux tensions d'entrée différentes:

Tension d'entrée:  7,0 V           Courant d'entrée:  8,3 mA           Puissance d'entrée:  0,059 W
Tension de sortie:  4,95 V        Courant de sortie:  4,9 mA         Puissance de sortie:  0,024 W

Rendement:  41%

Tension d'entrée:  10,0 V       Courant d'entrée:  8,3 mA        Puissance d'entrée = 0,083 W
Tension de sortie:  4,95 V      Courant de sortie:  4,9 mA       Puissance de sortie = 0,024 W

Rendement:  29%

Conclusion:  Le rendement est médiocre; plus de la moitié de l'énergie initiale est dissipée sous forme de chaleur dans le régulateur lui-même.  Et le rendement est pire encore lorsque l'écart entre la tension de sortie et la tension d'entrée est grand.


Régulateurs de tension réglables: le LM317

Le LM317 est un régulateur de tension ajustable:  sa tension de sortie dépend de la valeur des résistances qu'on lui associe.  Le même circuit intégré vous permettra donc d'obtenir, au besoin, une tension de 3,3 V, ou de 12 V, ou encore une tension ajustable au moyen d'un potentiomètre.

Même s'il ressemble à s'y méprendre à un LM7805, la disposition des broches du LM317 est totalement différente:

La broche 1 "ADJ" est la broche d'ajustement.  La tension de sortie est à la broche 2, et la tension d'entrée est à la broche 3.

Voici le schéma classique qu'on retrouve dans la fiche technique du LM317:



Attention, sur le  schéma ci-dessus, les broches du LM317 ne sont pas représentées dans l'ordre.

Voici une autre façon de représenter le même circuit:


L'équation qui permet de déterminer les résistances qu'il faut choisir afin d'obtenir la tension de sortie désirée est:

         Vsortie = 1,25 * (1 + R2/R1) + IADJ * R2

Le fabriquant recommande une résistance R1 d'environ 240 Ω.

Le courant  IADJ est de quelques dizaines de microampères seulement.  Pour cette raison, le terme  IADJ * Rest presque toujours négligeable.

L'équation devient donc     Vsortie = 1,25 * (1 + R2/R1)

Et c'est souvent plus pratique d'isoler R2:

           R2 = R1 ((Vsortie/1,25) - 1)

Donc si je désire une tension de sortie de 9 V, j'utilise R1 = 240 Ω et R2 = 1488 Ω.

Petit essai (avec des résistances quelque peu approximatives):


Vous aimeriez utiliser une sortie USB de votre ordinateur (5 V) pour alimenter un circuit intégré fonctionnant sur 3,3 V?  Pourquoi pas?

Avec R1 = 240 Ω, l'équation nous donne R2 = 394 Ω.  Voici ce que ça donne:



En remplaçant R2 par un potentiomètre (de 5 kΩ, par exemple), on obtient une source de tension variable.


Yves Pelletier   (TwitterFacebook)


jeudi 16 février 2017

Communication entre Raspberry Pi et Arduino avec modules nRF24L01

N.B.: Cet article a été mis à jour le 29 décembre 2020 (es scripts sont désormais compatibles avec Python 3).

Nous voyons aujourd'hui comment établir une communication entre un Raspberry Pi et un Arduino.

Pour des raisons de simplicité, je vous propose des scripts qui permettent une communication unidirectionnelle:  un des deux appareils émet des informations, et l'autre appareil les capte.

Les possibilités sont donc:

- Un Raspberry Pi émetteur qui envoie des informations à un Arduino récepteur.
- Un Arduino émetteur qui envoie des informations à un Raspberry Pi récepteur.
- Un Raspberry Pi émetteur qui envoie des informations à un Raspberry Pi récepteur.

Les modules nRF24L01 offrent beaucoup plus de possibilités, comme par exemple une véritable conversation entre deux cartes (chacune agissant tour à tour comme émetteur et comme récepteur)­. Nous y reviendrons peut-être dans un futur article.

Réglages de l'Arduino

Si la communication que vous désirez établir implique la présence d'un Arduino (peu importe qu'il soit émetteur ou récepteur), référez-vous à cet article pour programmer la carte et y brancher convenablement le module nRF24L01.

Réglages du Raspberry Pi

Il faut tout d'abord s'assurer que le protocole SPI est activé.

Pour ce faire, on va dans le menu "Préférences", "Configuration du Raspberry Pi'.


Sous l'onglet "Interfaces", activer SPI, si ce n'est pas déjà fait.


Installation de la bibliothèque RF24

Voici ce que j'ai écrit dans le terminal pour télécharger et installer la bibliothèque RF24:

--------------------

wget http://tmrh20.github.io/RF24Installer/RPi/install.sh
chmod +x install.sh
./install.sh
sudo apt-get install python3-dev libboost-python-dev python3-setuptools python3-rpi.gpio 
cd rf24libs/RF24/pyRF24
chmod +x setup.py
python3 setup.py build
sudo python3 setup.py install 

------------------------

L'installation de la bibliothèque "libboost" et l'étape "setup.py build" nécessitent plusieurs minutes. 

Le circuit:

Voici d'abord un schéma identifiant les différents connecteurs du module nRF24L01:
Les connexions entre le module nRF24L01 et le Raspberry Pi sont:
  • GND du nRF24L01 : une des pins GND du Raspberry Pi (board 6: fil noir sur le schéma ci-dessous)
  • Vcc du nRF24L01 : une des pins 3V3 du Raspberry Pi (board 1: fil rouge)
  • CE du nRF24L01 : GPIO22 du Raspberry Pi (board 15: fil bleu)
  • CSN du nRF24L01 : GPIO8 du Raspberry Pi (board 24: fil vert)
  • SCK du nRF24L01 : SCKL du Raspberry Pi  (board 23:  fil orange)
  • MOSI du nRF24L01:  MOSI du Raspberry Pi (board 19:  fil rose)
  • MISO du nRF24L01:  MISO du Rasbperry Pi (board 21:  fil jaune)



Lors de mes tests, il n'a pas été nécessaire d'ajouter un condensateur de 10 μF en parallèle avec l'alimentation du nRF24L01,  C'est parfois conseillé.

Script en python pour que le Raspberry Pi agisse en émetteur





Script en python pour que le Raspberry Pi agisse en récepteur





Même si les scripts eux-même ne font aucune vérification, la bibliothèque s'assure que le module nRF24L01 est correctement branché.  Si ce n'est pas le cas, le message "radio not responding" s'affiche à l'écran.

Notez finalement qu'il existe bien d'autres façons d'établir une communication entre un Raspberry Pi et un Arduino, et nous en avons exploré quelques-unes dans le passé:  communication par USB et communication RF 433 MHz.

Yves Pelletier   (TwitterFacebook)