English Version French Version Spanish Version

MIDIbox Hardware Platform, Motorfader

MBHP MF Module

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

les modèles de PCB peuvent être ouverts, modifiés et convertis avec Eagle Light
Module Schéma Layout Aperçu
MBHP_MF_V1 mbhp_mf.pdf mbhp_mf_v1.brd mbhp_mf_v1.gif
Informations complémentaires
Fichiers Taille Description
mbhp_mf_orderlist.txt 1k Liste de commande chez Reichelt 
mbhp_mf_interconnections.pdf 8k Diagramme de connection pour le module MF 
mbhp_din_touchsensors.pdf 4k Diagramme de connection pour les touch-sensors

Composants Utilisés 

        Liste des composants

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.