arduino et galvanometre

Bonjour,

dans le cadre d'un projet de contrôleur midi à base d'arduino, je souhaiterais utiliser un vieux galvanomètre de récup sur lequel je n'ai aucune info, comme témoin d'activité midi (status led), en gros il ne sert qu'à décorer, mais le challenge serai de faire monter l'aiguille en temps réel lorsqu'un potentiomètre est utilisé, un seul témoin d'activité pour l'ensemble des contrôles - amplitude 0/5V- le code dont je dispose fonctionne très bien, mais je dois donc ajouter le galva à la place de la led.

merci de votre aide
cereale

Quel est le code dont vous disposez?
Avez vous des intsruments de mesure type multimètre (le but serait de connaître un peu plus votre galvanomètre: sensibilité, resistance)?
Theoriquement, alimenter un galvanomètre à partir des sorties "analogiques" (PWM) de l'arduino est faisable... une réalisation folklorique est donnée en Horloge analogique - tâtonnements... | Oui Are Makers

Une photo du galvanomètre? Généralement toutes les infos utiles sont sur le cadran

bonsoir, je dispose d'un peu d'outils, le galva ne montre aucune info apparente, ni après ouverture, il provient d'une platine cassette des années 80... le code est en pièce jointe
cdlt
cyril

Controller.cpp (3.84 KB)

Controller.h (1.64 KB)

MIDI_Controller_v1-2.ino (8.11 KB)

Bonjour
Les galvanometres, y compris ceux utilisés en VU-metre , étaient assez sensibles (souvent 100µA)
Faute d'indication sur la sensibilité du galvanometre mieux vaut partir sur l'hypotèse que celui-ci est un 100µA
Metrre 47kOhm ou 100kOhm en série et observer la déviation de l'aiguille sous 5V
Réduire ensuite la résistance progressivement la valeur de la résistance tant que la la pleine déviation n'est pas atteinte

Bonjour les amis,
Oui, al1fch a raison. Pour trouver les caractéristiques du galvanomètre il suffit de le brancher sur du +5V de ta platine Arduino en plaçant en série des résistances que tu diminue progressivement, tu arrivera à la combinaison qui engendre la pleine déviation. l'idée consiste à placer une ou deux résistances en série.
Pour piloter le galvanomètre, on peut utiliser une sortie PWM mais attention, ce ne sont pas des sorties analogiques. Ce sont des signaux binaires découpés à une fréquence élevée ... exactement ce que déteste le petit bobinage magnétique de ton galvanomètre. Il faut convertir ces signaux en une tension "continue" analogique. C'est assez facile, il suffit de placer aux bornes de ton galvanomètre un condensateur de valeur idoine. Tu peux commencer par un 30, un 50nF et vois ce que ça donne. Plus la valeur sera élevée, meilleur sera le lissage. En revanche, la lenteur (Constante de temps.) de réaction du galvanomètre augmentera avec la valeur du condensateur de lissage. Tout est une question de compromis.

al1fch:
Bonjour
Les galvanmetres, y compris ceux utilisés en VU-metre , étaient assez sensibles (souvent 100µA)
Faute d'indication sur la sensibilité du galvanometre mieux vaut partir sur l'hypotèse que celui-ci est un 100µA
Metrre 47kOhm ou 100kOhm en série et observer la déviation de l'aiguille sous 5V
Réduire ensuite la résistance progressivement la valeur de la résistance tant que la la pleine déviation n'est pas atteinte

Tout à fait Al1
et c'est encore plus simple de partir d'un potentiometre de 470K ou 1MΩ pris en resistance variable et de relever ensuite la R résultante pour la pleine deviation

et c'est encore plus simple de partir d'un potentiometre de 470K ou 1MΩ pris en resistance variable et de relever ensuite la R résultante pour la pleine deviation

Ok , Artouste , mais en prenant la précaution de mettre une résistance en butée !!

Sage recommandation !

La PWM il vaut mieux éviter, expliquer les raisons techniques va prendre 2 pages je me contente de dire non ce n'est pas une bonne idée.

al1fch:
Ok , Artouste , mais en prenant la précaution de mettre une résistance en butée !!

Tout a fait Al1
C'est une précaution élémentaire qu'aucun pratiquant "chevronné" n'oubliera naturellement , mais il est qqfois bon aussi de rappeler les bases des réalisations/manips DIY :grin:

merci pour tous ces retours, une première question : qu'est-ce qu'une une résistance en butée !!?
seconde question, doit-on modifier quelque peu le code pour faire que l'aiguille monte au même niveau que le potentiomètre?
cdlt
cyril

Une résistance de butée est une résistance anti conneries.

Il est très facile avec un potentiomètre de tourner l'axe et de se retrouver en butée, et comme quoi qu'on fasse l'emmerdement est maximum, avec 0 ohms.
Ce que ton galva n'appréciera pas du tout.
La résistance de butée est une résistance placée en série avec le potentiomètre qui maintiendra une valeur minimale impossible à diminuer.

La résistance de butée peut très bien être un autre potentiomètre que tu aura bien planqué afin de ne pas être tenté de le tourner.

Tu te fixe un courant max à ne pas dépasser : il te donne la valeur de la résistance de butée.
Le potentiomètre de réglage ne pourra que diminuer ce courant

super, j'ai réussi la première phase pour adapter la résistance du galva, et je parviens à faire monter l'aiguille au rythme du pot, reste à adapter tout ça à mon code pour contrôleur midi. merci de votre aide
cereale

Bien !! Merci du retour.
Avec ton galvanometre quelle valeur de résitance as-tu choisie ?

de mémoire, 16K...me reste à adapter le code une fois le montage réalisé
merci en tout cas de m'avoir éclairé

Bonsoir, après quelques jours je reviens vers vous afin de trouver de l'aide pour terminer mon contrôleur midi à base d'Arduino Uno...
pour rappel, il s'agit d'un contrôleur midi dédié au logiciel Universal audio LA3A, le contrôleur regroupe deux unités soit:

4 contrôles plus 1 galvanomètre par instance
le galvanometre n'a qu'une fonction ludique et simule une activité audio, en reprenant l'activité midi routé jusqu'au galva.
chaque contrôleur est assigné à un canal midi :
les 4 premiers pots et le galva associé sur le canal midi 1 (0 dans le code)
les 4 autres pots et le second galva sur le canal midi 2 (1 dans le code)

j'ai un code qui fonctionne pour le contrôleur(ci-dessous), j'ai réussi à calibrer et faire fonctionner les galvanomètres avec des codes de base, je dois rassembler les deux mais je bute à cause du multiplexage, j'ai essayé plusieurs choses sans résultat, si vous avez des pistes...elles sont les bienvenues

pour que le galvanometre bouge de manière réaliste j'ai besoin que les pots fassent varier l'intensité du signal, et non allumer /éteindre, bref....j'me gratte la tête

cdlt,
cereale

int inputMux0 = 3;  //entree mux

int r0 = 0;  // 4051 (s0)

int r1 = 0;  // 4051 (s1)

int r2 = 0;  // 4051 (s2)

int row = 0;  // storeing the bin code

int i = 0;  // just a count

int nbIn = 8;  // nombre d'entrees par 4051

int bin[] = {000, 1, 10, 11, 100, 101, 110, 111}; // comptage pour 8 entrées

int valRow0[] = {0, 0, 0, 0, 0, 0, 0, 0};  //valeurs lues de ce tour

int valRowLast0[] = {0, 0, 0, 0, 0, 0, 0, 0};  //archive du tour précédent

char controlChannel0[] = {0, 0, 0, 0, 1, 1, 1, 1};  //channel midi

char controlNumber0[] = {7, 7, 7, 7, 7, 7, 7, 7};  //numero du parametre


void setup()

{

  pinMode(2, OUTPUT);  // s0 

  pinMode(3, OUTPUT);  // s1

  pinMode(4, OUTPUT);  // s2

  Serial.begin(31250);  //liaison midi

}


void loop ()

{

  for (i = 0; i <= nbIn - 1; i++) {

    row = bin[i];

    r0 = row & 0x01;

    r1 = (row>>1) & 0x01;

    r2 = (row>>2) & 0x01;

    digitalWrite(2, r0);

    digitalWrite(3, r1);

    digitalWrite(4, r2);

    delay(5);

    valRow0[i] = analogRead(inputMux0) / 8;
    
    if(valRow0[i] != valRowLast0[i]) {

    midiSend(175 + controlChannel0[i], controlNumber0[i], valRow0[i]);

    valRowLast0[i] = valRow0[i];
  
     }


   }

}

void midiSend(char cc_chan, char cc_num, char cc_val) {

  {
    
  Serial.print(cc_chan, BYTE);

  Serial.print(cc_num, BYTE);

  Serial.print(cc_val, BYTE);
   
  }
  
}