Fonctionnement

Description

Ce module permet de connecter trois sources et de les lire une à une sur la sortie. Pour passer de la lecture d'une entrée à une autre il faut envoyer une impulsion sur l'entrée switch. On peut aussi directement passer sur une entrée en particulier en appliquant un signal de Gate sur l'entrée associée ou en appuyant sur le bouton associé à cette entrée. Il est possible à tout moment de réduire la séquence à la lecture d'une seule ou de deux entrées grâce à un levier.

Cela permet en premier lieu de connecter les trois sorties d'un séquenceur et de pouvoir à la fin de chaque séquence, switcher sur la séquence suivante. À partir de trois séquences de huit pas on peut ainsi créer une seule séquence de 24 pas.

Caractéristiques

- 3 entrées vers une double sortie

- Sortie Gate sur chaque pas

- Possibilité de sélectionner un pas soit avec bouton soit entrée Gate

- Possibilité de limiter la séquence à 1 ou 2 pas

- 2 entrées pour switcher avec 1 sortie de switch combinant les 2 entrées

Schéma de fonctionnement

Ci dessous le schéma de fonctionnement de l'ensemble du module :

schéma de l'ensemble (cliquez pour agrandir)

Alimentation

Ici on utilise une alimentation externe de type symétrique en 15 volts (+15V / GND / -15V) car le module a été créé pour être utilisé au sein d'un synthétiseur modulaire type YuSynth. Pour avoir les 10 volts nécessaires pour la création d'un signal de Gate, j'ai tout simplement utilisé un régulateur de tension de dix volts en lui associant ses propres condensateurs de découplage et une résistance assurant toujours une consommation minimale de courant.

Il y a aussi les traditionnels condensateurs de découplages, situés entre les bornes d'alimentation des circuits intégrés présents sur le PCB, et la résistance protégeant l'amont de l'alimentation en cas de surintensité.

Entrées "shift" et sortie combinatoire

Le module comprend deux entrées "shift" pour passer au pas suivant. La combinaison de ces deux entrées est envoyée à l'Arduino comme information pour passer au pas suivant, mais ce signal est aussi récupérable sur une sortie combinatoire.

A première vue ce schéma semble compliqué pour réaliser la fonction définie précédemment. Ne pourrait-on pas tout simplement relier sur deux entrées d'une porte "ou" nos deux entrées, puis relier la sortie de la porte à l'Arduino ?

Théoriquement, on pourrait faire cela, mais imaginez la situation suivant : sur la première entrée, on envoie une impulsion de cinq secondes, puis une seconde après le début de cette impulsion, on envoie une autre impulsion d'une seconde sur la deuxième entrée. On aurait donc en sortie de notre porte "ou", une seule et même impulsion continue de cinq secondes alors qu'on devrait lire deux impulsions à une seconde d'intervalle ; ce qui voudrait dire que l'impulsion sur l'entrée numéro deux de notre porte sera noyée dans la première (voir chronogrammes ci contre).

En bleu et vert les impulsions d'entrées et en rouge la sortie, à gauche le fonctionnement de la porte seule, à droite le fonctionnement désiré

Pour éviter un tel comportement, on va, à partir de l'impulsion lue sur une des entrées, mettre en forme une autre impulsion de durée très courte. C'est cette deuxième impulsion qui sera envoyée sur une des entrées de la porte "ou". On utilise donc le dispositif ci-dessous sur chacune des deux entrées pour envoyer à la porte logique de brèves impulsions (mais assez longues tout de même pour pouvoir être lues par l'Arduino).

Ce montage est axé autour d'un générateur d'impulsions basé lui même sur une porte logique de type "ou". On ajoute avant celui-ci une résistance de 1kOhm ayant pour but d'absorber les surintensités générées par l'insertion ou l'enlèvement d'un jack dans son support. Le coeur du montage réside autour de la porte "ou" (porte logique, R3, R6, C8), montage qui en théorie nous donne en sortie une impulsion de durée égale à T=0,7xR6xC8. Le problème de ce montage est le suivant : lorsqu'aucun jack n'est inséré, R1 a "une patte en l'air". Le monostable se comporte donc n'importe comment, dans ce cas là, il lit sur l'entrée 0 ou 1 sans raison...

Le rôle de R33 est de corriger le défaut vu précédement en reliant l'entrée à la masse. Lorsqu'aucun jack n'est inséré, le monostable lit donc 0 volt (soit l'état logique 0). Mais il y a encore un problème, le montage ci-dessus ne fonctionne que lorsque l'impulsion en entrée est de durée inférieure à la durée souhaitée en sortie du monostable. Pour régler ce problème, on va réaliser un montage générant une impulsion de durée infime (trop petite pour être lue par l'Arduino). Cette impulsion sera envoyée dans le montage précédent.

On réalise deux fois ce montage (une fois par entrée de "shift"), et on relie chacune des sorties sur une entrée d'une autre porte "ou". L'arduino lit ensuite la sortie de cette porte.

Si on veut pouvoir récupérer le signal qui combine les impulsions des deux entrées sur une embase jack (par exemple), il suffit de connecter une autre porte logique en parallèle de celle utilisée pour l'Arduino comme montré ci contre.

Utilisation des CD4052

Dans ce module nous avons besoin d'un commutateur contrôlable permettant de lire au choix 3 entrées, c'est justement ce que le CD4052 fait (et en plus dans un boîtier il y a deux unités). Ce circuit intégré permet de commuter une sortie/entrée vers quatre entrées/sorties (c'est ce que l'on appelle un multiplexeur/démultiplexeur). Afin de contrôler le commutateur interne, il suffit de créer sur les deux broches de contrôle un état logique (0 ou 1). Mais attention, l'état 0 est défini par le potentiel appliqué sur la broche VSS (souvent à la masse) et l'état 1 par le potentiel appliqué sur la broche VDD. Par exemple si vous pilotez votre CD4052 à l'aide d'une carte Arduino (signal numérique zéro ou cinq volts), le circuit devra être alimenté en cinq volts pour un bon fonctionnement. Un autre problème se pose : les signaux commutés doivent être compris entre VSS et VDD

Afin de pouvoir commuter des signaux compris entre zéro et dix volts avec une carte Arduino, j'ai donc utilisé un CD4052 alimenté en quinze volts (VSS à la masse). Pour que mes tensions de contrôle soient aussi de quinze volts, j'ai utilisé un montage à transistor saturé. À partir du cinq volts disponible en sortie de mon Arduino, j'ai ainsi pu commuter une tension de quinze volts. Pensez juste qu'avec ce montage, si vous appliquez cinq volts sur la base du transistor, vous n'aurez pas quinze volts en sortie mais bien zéro volts (porte NOT).

En utilisant deux montages comme celui-ci, on peut aisément contrôler nos multiplexeurs avec une carte Arduino.

Dans ce module j'utilise trois commutations simultanées. La première joue le rôle principal, à savoir commuter les entrées vers la sortie. La deuxième gère les leds indiquant l'entrée actuellement lue. La troisième crée un signal de Gate (dix volts) présent sur la sortie "Gate Out" liée à l'entrée lue. Comme vous pouvez voir sur le premier schéma (schéma de l'ensemble), le raccordement des CD4052 se fait facilement car il suffit juste d'intercaler un montage transistor entre chaque ligne de commande. Il faut aussi penser à mettre une résistance en série avec les leds (vous pouvez d'ailleurs augmenter la valeur indiquée sur le schéma pour baisser la brillance de celles-ci ou inversement).

On utilise un premier "double" multiplexeur pour commuter les leds, afin d'indiquer le pas actuel. Sur la deuxième unité intégrée au boîtier de ce premier circuit intégré, on connecte une source de 10 volts continue. Puis sur les sorties (deuxième unité) du multiplexeur on relie les sorties associées aux Gate OUTs.

Le deuxième CD4052 n'est utilisé qu'à moitié ; en effet on ne l'utilise que pour commuter les trois signaux rentrant dans le module "Switch" vers une sortie. La deuxième unité comprise dans le boîtier n'est pas utilisée.

Boutons, entrées de Gate et levier

Pour lire directement une piste en particulier, il y a deux manières de procéder en utilisant ce module :
- appuyer sur le bouton associé
- envoyer un signal de Gate sur l'entrée Gate In associée

Pour les boutons rien de compliqué, on utilise le traditionnel montage :

Pour les entrées de Gate ce n'est pas non plus très compliqué, un simple pont diviseur de tension suffit :

Pour limiter le nombre d'entrées lues au cours d'un cycle j'ai installé un levier à trois positions. Cela permet à l'utilisateur, à n'importe quel moment, de réduire ou d'augmenter la durée du cycle. Le montage tout aussi simple que les deux précedents, est le suivant :

Démonstrations

À venir ...

Conception et fabrication

Galerie

circuit imprimé (sans modification 5V / 15V)
réalisation de deux prototypes
module vue côté soudures
module vue côté composants

Visuel

Voici le visuel de la façade de ce module, comme cela vous pouvez plus facilement l'imaginer dans votre setup !

Ressources

Si ce module vous intérresse, rendez vous sur cette page, vous y trouverez toutes les ressources nécessaires à sa réalisation.

Problème rencontré

Durant les tests sur ce module, je me suis vite rendu compte que quelque chose ne fonctionnait pas correctement... en effet les CD4052 n'étaient pas bloqués sur une seule position mais entre deux. Ceci rendait le fonctionnement du module totalement anarchique... En fait, le problème venait de la tension de contrôle des multiplexeurs. Comme décrit plus haut, il fallait que les tensions de contrôle soit égales à celles sur les bornes VSS et VDD (c'est la résolution de cette erreur qui est rédigée dans la partie sur le fonctionnement des CD4052/CD4051...).

Pour corriger cela, les circuits imprimés étant déjà réalisés, j'ai dû rajouter un petit module réalisé sur une plaque à groupes de pastilles (d'expérimentation avec soudures). Je l'ai ensuite intercalée entre les branches de contrôle de l'Arduino et les entrées de commande des CD4052. Le module additionnel a donc comme but, à partir d'une tension de 5V/0V d'obtenir une tension de 15V/0V (0V/15V en réalité).

Historique

2 Mars 2018 : fin du projet

1 Août 2018 : conception du circuit imprimé avec correction (5V / 15V)

10 Septembre 2019 : création du programme adapté à la nouvelle version du circuit imprimé