English Version
French Version
Spanish Version
MIDIbox Hardware Platform, Motorfader
Le module MF permet au module CORE
de contrôler 8 faders motorisés (ou pots
motorisés) avec une résolution allant
jusqu'à 10-bit. Notez que tous les types de faders
motorisés ne sont pas supportés par le module MF,
ceci est détaillé plus bas.
Téléchargements
-
Composants Utilisés
Historique
-
Le développement du pilote MF a une longue
histoire. Voici un petit résumé pour vous expliquer
comment du stade purement expérimental nous sommes
arrivés à la solution actuelle :
- Rasmus et Arne ont commencé leurs
premières expérimentations en Octobre 2001. Ils ont
utilisé des circuits analogiques pour concevoir une "feedback
control loop" (en français "commande en boucle fermée",
vous trouverez facilement des informations sur ce principe sur des
sites consacrés à la robotique) .
Les schémas de cette première approche peuvent être téléchargés ici.
Notez que ce circuit n'est pris en charge par aucun firmware MIDIbox -
il n'a été mis en ligne qu'à des fins informatives! Il
repose sur un DAC (Convertisseur Digital/Analogique) qui reçoit
la valeur cible de l'application chargée dans le PIC. Le DAC
convertit la valeur digitale en voltage (analogique, donc), voltage qui
est
ensuite renvoyé dans un circuit comparateur. Le circuit
comparateur compare le voltage de référence et le voltage
actuel défini par la position du curseur, et renvoie deux
signaux: un pour "position du fader trop basse", et un autre pour
"position du fader trop haute". Ces signaux sont connectés
au H-Bridge TC4427(en français: pont en H),
qui délivre l'alimentation et contrôle le sens de rotation
jusqu'à que le fader atteigne la position cible, quand ces deux
signaux sont à 0 (voir aussi la page de David Cook's, vous y trouverez d'autres informations sur les H-Bridges ).
- L'inconvénient de ce circuit, c'est sa complexité. Un
circuit distinct est requis pour chaque fader, le coût des composants
et la place nécessaire deviennent vite trop importants.
Heureusement, avant que soit terminée cette première version,
nous nous sommes rendu compte que les fonctions du DAC et du circuit
comparateur pouvaient être complètement assumées par
la partie logicielle. Le firmware a donc été
modifié afin que la comparaison soit faite aprés la
conversion AD. Les signaux de sortie "position du fader trop haute" et
"..trop basse" sont maintenant directement fournis par le PIC, du coup
seuls les H-Bridges sont encore nécessaires. Les deux signaux sont
envoyés vers un shift-register
74HC595, par ce moyen, il est théoriquement possible de
contrôler un nombre illimité de faders avec un seul
PIC, mais dans la pratique, ce nombre est en fait limité au
nombre d'entrées analogiques(64)
- plus tard une boucle d'hystérésis a
été ajoutée dans le software afin de
contre-balancer les états instables, lorsque le fader est
trés proche de la position cible, mais ne l'atteint jamais
complètement, et du coup oscille autour de la position. Cette
fonction "hysteresis" a été en suivant remplacé
par la fonction "deadband" - cette une valeur seuil (threshold) qui
définit la zone de la course où les
erreurs sont ignorées. La fonction est réalisée
selon la formule mathématique:
"position_cible_atteinte = ABS(position_cible-position_actuelle) < deadband"
- l'étape suivante consista à
implémenter un contrôle moteur adéquat, qui non
seulement devait permettre de rappeller les snapshots, mais aussi
d'animer les faders en temps réel lorsque des valeurs cibles
étaient envoyées par l'automation de l'application
hôte (séquenceur MIDI). Le timing des mouvements
simultanés est vraiment critique, car les valeurs analogiques
des faders doivent être mesurées et comparées
consécutivement par un timer piloté par une interruption
--- et trés rapidement!
Du coup il n'était plus possible de piloter plus de 8 faders
avec un seul PIC. Mais ceci reste tout à fait acceptable lorsque
l'on compare le prix d'un
PIC à celui de 8 faders motorisés.
- le contrôle moteur n'était toujours pas parfait.
Parfois les faders étaient déplacés si vite qu'ils
excédaient la "deadband", même aprés plusieurs
tentatives (notez que la "deadband" définie la résolution
effective). La solution consista donc à ralentir les moteurs une
fois qu'ils entraient dans la "deadband". Ce contrôle de
la vitesse des moteurs a pu être obtenu par une "pulse width
modulation - modulation de la largeur d'impulsion (PWM), en diminuant
le rapport cyclique du signal contrôlant le H-Bridge au fur et
à mesure que l'écart entre la position cible et la
position actuelle diminuait.
- le gros problème avec la PWM, c'est qu'elle produit un bruit
parasite
(c'est ce qui rend les faders motorisés de mauvaise
qualité si bruyant). Il y a deux façon de contourner ce
problème: soit la période de la PWM doit être
augmentée jusqu'à une fréquence inaudible, ou elle
doit être abaissée afin d'obtenir un son moins
désagréable. Une PWM avec une résolution plus
importante n'est pas réalisable avec l'implémentation du
PIC telle que je l'ai conçue, cela nécessiterait un
périphérique de capture et de comparaison pour chaque
fader motorisé.
De
fait, pour le MIOS V1.8 j'ai choisi l'autre solution - j'ai
diminué la fréquence de la PWM et j'ai laissé la
possibilité pour l'utilisateur de régler la
période de la fréquence aussi bien que le rapport cyclique de la PWM , afin
que le pilote puisse s'adapter à différents types de
faders et différents voltages de moteur:
Le
pilote MF bascule automatiquement en mode PWM dés que la
distance entre la position actuelle et la position cible est
inférieure à 10% de la course totale
(cette valeur a été définie en
expérimentant plusieurs types de faders). Dans les
implémentations qui suivirent, le rapport cyclique de la PWM a
été rendu dépendant de la distance, mais il s'est
avéré que cela induisait des effets indésirables,
dûs au nombre supplémentaire de paramètres
influençant le pilote des moteurs (paramètres pas
toujours transparents pour l'utilisateur). Note:
deux rapport cyclique (Duty Cycles) doivent être
spécifiés, un pour les mouvements vers le haut, un autre
pour les mouvements vers le bas. J'ai remarqué que la vitesse
pouvait varier selon la direction, et le réglage
séparé de deux rapport cyclique permet donc de compenser
cette différence de vitesse.
- lors du développement du pilote final pour le MIOS V1.8,
j'ai pensé à une amélioration intéressante
de l'algorithme du pilote moteur: lorsque l'on fait varier la largeur
de la deadband lorsque le fader s'y trouve, il devient possible de
ralentir le fader suffisament tôt, afin qu'il ne dépasse
pas (dans la majorité des cas) la position cible.
C'est
réellement un processus dynamique, j'ai donc créé
un diagramme, basé sur le résultat des mesures
réalisées, qui est optionnellement chargé dans la
SRAM lorsque le pilote MF est actif:
Etat Actuel Du Pilote
-
Le pilote MIOS V1.8 est pour l'instant
l'implémentation la plus satisfaisante grâce à la
PWM basse fréquence ajustable, et la "deadband" dynamique. Si
des améliorations sont toujours possibles, elles ne pourront
être réalisées avec la configuration
matérielle CORE/MF actuelle:
- le léger bruit parasite, et qui augmente avec le nombre de
faders déplacés simultanément reste audible. La
seule façon de le réduire est d'utiliser une
haute-fréquence pour la PWM (comme mentionné plus haut),
mais ça nécessiterait un autre micro-contrôleur
avec huit unités de capture
& comparaison haute résolution, ou un micro-contrôleur
dédié pour chaque fader.
- J'ai remarqué de légères différences
entre les réponses de mes faders ALPS,
bien qu'ils aient tous été achetés en même temps (et l'on peut
supposer qu'ils ont été produit dans le même
"bain"). 5 des 8 faders peuvent être contrôlés avec
un voltage v_mf = 7.0V, mais la réponse des trois autres faders
est meilleure avec des voltages inférieurs ou supérieurs
(6.5V..7.5V). Une régulation du voltage indépendante pour
chaque fader permet de résoudre ce problème.
- les faders motorisés "coreless motors" ne peuvent être
contrôlés par ce biais là. La consommation des
moteurs "coreless" est significativement supérieure, et les
TC4427 seraient surchargés (le voltage des moteurs baisse
à moins de 5V). l'autre problème c'est qu'avec une
intensité plus élevée, les moteurs vont si vite
qu'il n'est plus possible de sampler leur position suffisament souvent..
En
d'autres mots: par cette approche du pilote MF, il n'est pas possible
d'obtenir des performances suffisantes pour contrôler ce type de
faders, et il n'est pas possible de contourner ce problème ni en
modifiant le hardware du module ni en intervenant sur le pilote du MIOS.
Les moteurs "coreless" requièrent une conception totalement
différente, conception à laquelle je ne compte pas me
consacrer moi-même (je n'utilise pas de tels faders).
Faders Motorisés Compatibles
-
Il est important encore de préciser que tous les
faders motorisés ne sont pas pris en charge par le pilote MIOS.
En réalité, pour l'instant seuls trois types de faders se
sont révélés bien fonctionner, tous les autres
faders testés n'ont pu être contrôlés
correctement. Si vous prévoyez d'utiliser des faders qui ne
font pas partie de la liste indiquée plus bas, essayez d'abord
avec un échantillon (ne les achetez pas tous d'un coup!) et
tenez-nous informés, la communauté MIDIbox ainsi que
moi-même, des résultats obtenus.
Type Number |
Description |
ALPS RSAON11M9 OK |
bruit acceptable bonne réponse avec les touch sensor! |
Atteint la position cible en environ
200 mS (dans le plus mauvais cas). Réglages adéquats: v_mf = 7.5V, Période PWM : 3, Duty Cycle: 1 (full view) |
PANASONIC EVANMKP08B14 OK |
silencieux, réponse rapide (parfois trop rapide), de trés bonne qualité, malheureusement sans touch sensors |
Atteint la position cible en environ. 200 mS (dans le plus mauvais cas).
Réglages adéquats:
v_mf = 7.5V,
Période PWM : 3,
Duty Cycle: 1 (full view) |
ALPS RSAOK11VP :-/ |
similaire au RSAON11M9, mais plus chers et vraiment bruyants!!!
|
Atteint la position cible en environ
200 mS (dans le plus mauvais cas).
Réglages adéquats:
v_mf = 7.5V,
Période PWM : 6, Duty Cycle: 2 (full view) |
ALPS RSAOK11W :-(
INUTILISABLE |
fader de grande qualité, mais inutilisables avec le module MBHP_MF et le pilote MIOS à cause du moteur "coreless"
|
Reaches
the target position en environ 500 mS en raison de la surcharge du
TC4427. Serait plus rapide avec un pilote MOSFET . Réglages utilisés: v_mf = 7.5V, PWM Period: 0, Duty Cycle: 0 (full view) |
Penny&Giles PGF6100 :-(
INUTILISABLE |
fader de grande qualité, mais inutilisables avec le module MBHP_MF et le pilote MIOS à cause du moteur "coreless" |
Impossible à contrôler corectement avec le module MBHP_MF en raison de sa consommation trop importante |
Les potentiomètres rotatifs motorisés
(Motorpots) ont aussi été testés avec le pilote
MIOS MF (ALPS 10KBX2). Ils fonctionnent sans problème car il
sont beaucoup plus lents que les faders motorisés.
Disponibilités Des Faders Motorisés
-
Guide De Soudage
-
|
Commencez par souder les 13 ponts, ces derniers
vous évitent d'avoir à réaliser un pcb double-face
(2-layer). Utilisez pour cela le reste des pattes de vos
résistances et condensateurs que vous avez déjà
montés, et attendez d'avoir fini tous vos modules avant de les
jeter! :-) |
|
Montez tous composants à l'exception des ICs. |
|
Notez que les diodes ont une polarité à respecter! |
|
Connectez le module MF au module CORE module comme décrit ici. Non
représenté ici: alimentez vos modules et vérifiez
les voltages Vss/Vdd avant d'installer tout IC dans son support! |
|
Module MF connecté au CORE et motorfaders. |
Calibration
-
La calibration consiste à
définir le meilleur voltage pour le moteur (v_mf) ainsi que la
période et le rapport cyclique (Duty
cycle), pour la PWM, et la
Deadband . Vous trouverez une base pour vos réglages plus
haut ("Faders Motorisés Compatibles"), mais il est
préférable d'optimiser ces réglages une fois que
les faders sont installés dans la MIDIbox.
L'application mf_calibration est disponible à la page MIOS download .
Une fois uploadée, vous pouvez utiliser le premier fader pour
déplacer tous les faders d'un coup. Les valeurs de calibration
sont affichées sur l'écran
LCD, et elles peuvent êtres changées à l'aide des
boutons #1-16 (les 16 premiers boutons connectés au premier
module DINX4). Une fois que vous avez trouvé le meilleur
réglage, vous pouvez l'inscrire dans le fichier main.asm (ou
main.h) de l'application que vous prévoyez d'utiliser (MIDIbox
MF, MIDIbox LC, MIDIbox MM, etc...).
Une précision à propos des valeurs de
la deadband: plus cette valeur sera haute, plus basse sera la
résolution effective.
La deadband AIN limite la résolution
des valeurs renvoyées à l'application (entrée
USER_AIN_NotifyPinChange). Pour les applications avec des
évenements MIDI 7bit (par exemple MIDIbox MF), une Deadband AIN
de 7 doit être spécifiée (Note: 7 ne
signifie pas 7bit, mais une deadband de +/-
7. Dans la mesure ou le MIOS travaille en interne avec une
résolution de 10bit, cela signifie que les changements dans une
bande de "3bit - 1" (2^3-1) sont ignorés). Toutes
les autres applications Motorfader utilisent un protocole
spécial qui supporte des résolutions supérieures,
de fait une deadband AIN plus basse est préférable .
Une
deadband de 0 entraîne des valeurs instables (jitter) - (voir
aussi #QA19 de la FAQ MIDIbox), des valeurs de 1..3 seront plus adaptées.
Des détails concernant la valeur Deadband MF sont donnés plus haut. Grâce à son
comportement dynamique, le réglage de cette valeur est moins critique. Il définit la
deadband qui est utilisée au dernier stade, lorsque le pilote MF
n'essaie plus d'ajuster la position du fader. Une valeur Deadband MF = 1 devrait convenir!
-
L'application mf_direct_control est un programme
spécial qui n'utilise pas le pilote MF, mais qui permet d'animer
les faders vers le haut/vers directement avec les boutons
#1-16. Cela vous aidera à déboguer les connections de vos
faders.
Touch Sensors
-
La plupart des faders motorisés disposent de
touch sensors, qui peuvent être utilisés pour envoyer des
évènements MIDI particuliers à l'application
hôte (pour par exemple contrôler l'automation), et qui sont
utilisés pour arrêter les moteurs lorsque les faders sont
déplacés manuellement- vous permettant ainsi de reprendre
la main sur l'automation.
Toutes les applications MIDIbox qui supportent les
faders motorisés proposent trois modes touch sensor. Ce mode
doit être sélectionné préalablement en
modifiant le fichier main.asm ou
main.h :
- Mode 0: les évènements touch sensor
(pressé/relaché) sont uniquement renvoyés à
l'application hôte (évènements MIDI)
- Mode 1:
identique au mode 0, mais en plus les moteurs sont arrêtés
par le MIOS, et ne seront plus actifs tant que le touch sensor est
pressé
- Mode 2:
identique aux modes 0+1, mais là, aucun mouvement de faders ne
sera renvoyé à l'application hôte (pas
d'évènements MIDI) tant que vous n'appuyez pas sur un
touch sensor.
Le Mode 1 est dans la plupart des cas le réglage
par défaut afin d'éviter de voir
réapparaître sur le forum MIDIbox toujours les mêmes
questions, posées par ceux qui n'ont pas pris le temps de lire
ces pages - les faders dans ce mode n'enverront pas
d'évènements
MIDI si il n'y a pas de touch sensor connectés ou si ils ne
fonctionnent pas correctement.
Le Mode
2 sera le réglage à préférer une fois que
les touch sensors fonctionnent correctement. Le gros avantage de ce
mode, c'est que les faders n'enverront pas d'évènements
non désirés causés par des vibrations du
contrôleur ou par n'importe quelle autre source de jitter.
La sensibilté des touch sensor peut aussi
être spécifiée. Avec des valeurs plus hautes, ils
seront plus sensibles. 3 est normalement une valeur adéquate.
Le schéma pour les touch sensors est disponible ici.
Notez que les sensors se connectent sur un module DINX4. Les résistances pull-up 10k
doivent être retirées sur les pins auxquels sont
connectés les sensors(!), et il y a 8 résistances 47k
supplémentaires entre le module DIN et J14 du module CORE. Le
pin J14 pin envoie périodiquement de courtes impulsions pour
mesurer la charge capacitive des sensors. Dés qu'un sensor
est touché, sa charge capacitive augmente, et
l'impulsion est alors perçue par les pins du module DIN, le
pilote MIOS SRIO interprète alors le changement d'état.
Vous trouverez plus d'informations dans cet article du forum.
Crédits
-
Remerciements à Rasmus (rasmail@mail.dk) et à son ami Arne qui ont réalisé la
majeur partie du travail préparatoire. Ils ont mis au point les
concepts de base et les ont expérimentés avec les
composants analogiques. Les tests et les suggestions de
Rasmus ont été des plus utiles lors du
brainstorming et de la réalisation des prototypes. :)
Remerciements aussi à david@robotroom.com pour son excellent cours sur les H-Bridges : www.robotroom.com/HBridge.html.
Remerciement à Steven C. qui nous a fait don d'un fader motorisé Panasonic pour nos tests.
Remerciements à albs.de qui ont bien voulu me prêter un exemplaire des faders RSAOK11VP et RSAOK11W pour nos tests.
Last update: 2015-09-24
Copyright © 1998-2015, Thorsten Klose. All rights reserved.
|