Go Down

Topic: [APL] Piloter un potentiomètre motorisé (Read 3904 times) previous topic - next topic

Benoît ROUSSEAU

Jul 27, 2006, 05:43 pm Last Edit: Jul 27, 2006, 05:45 pm by Benoit Reason: 1
Piloter un potentiomètre motorisé

L'objet de ce bilet, c'est un démonstrateur pour le pilotage d'un potentiomètre motorisé que l'on trouve sur les tables de mixage automatisées. Il vous faudra adapter le code à votre utilisation, ce code est un code d'essai, où j'ai voulu tester la réponse et la précision de la commande de ce genre de jouets.



Si vous voulez voir le machin bouger, une vidéo médiocre ici : http://perso.orange.fr/rousseau-benoit/images/arduino/potmot/DSCF0001.AVI
Cordialement,
Benoît ROUSSEAU

Benoît ROUSSEAU

Le matériel

Il vous faudra pour 4 personnes :
- un potar motorisé ;
- un pont en H genre L293B ;
- 4 diodes genre 1N4007 si votre "pont en H" ne contient pas de diodes de roue libre ;
- des dominos (3 suffisent) ;
- du fil de cablable ;
- étain ;
- fer à souder ;
- ...

Où récupérer ceci ?

Pour le potentiomètre motorisé, on me l'a donné mais vous pouvez en trouver sur des tables de mixage automatisées mises au rebus, ou surement sur ebay, ...

Pour le "pont en H", vus pouvez le réaliser avec des composants classques transistors, ... ou en trouver un tout fait. Il existe plein de références mais j'ai pour ma part récupéré un L293B sur un platine de vieux magnétoscope.





Cordialement,
Benoît ROUSSEAU

gll

#2
Jul 27, 2006, 11:16 pm Last Edit: Jul 27, 2006, 11:20 pm by goo Reason: 1
Wow, le coin Français Rock...
Merci Benoît.

Quelques questions:

1- Est-ce que le potentionmètre est absolu (est-ce que l'on envoi la position (entre 0 et 255 par exemple) ou bien ça marche par écarts)?

2- Tu ne sais vraiment pas où trouver des potentiomètres motorisés? Il y a un moment que j'en cherche et je n'ai pas vu ça distribué facilement et c'est assé rare de voir des table de mixages motorisé au rebus. Il y avait des compagnies sur internet, mais c'était ultra dispendieux.
..........................................................................
http://labelle.spacekit.ca  http://spacekit.ca

Benoît ROUSSEAU

#3
Jul 28, 2006, 12:06 am Last Edit: Jul 28, 2006, 12:10 am by Benoit Reason: 1
Salut gll,

1 - oui, le potentiomètre est absolu. C'est un potentiomètre "ordinaire". Le convertisseur ana/num de la carte étant sur 10 bits, la valeur retournée varie de 0 à 1023.

2 - Oui, les potar motorisés sont chers et difficiles à trouver. Je peux t'en envoyer 2 ou 3 si tu veux mais pour l'instant mes finances sont à sec ! Donc il faudra attendre un peu avant que je t'envoie ça au Canada.

Ensuite, je n'ai pas terminé l'article, le code, ... car je n'ai pas eut le temps ce soir, je terminerai demain soir ou lundi.
Cordialement,
Benoît ROUSSEAU

Benoît ROUSSEAU

Re,

  Concernant les achats de potars motorisés, j'ai trouvé ceci :

Disponibilités Des Faders Motorisés
PANASONIC #EVANMKP08B14 chez All Electronics Corp./USA pour environ 7$ US
ALPS Fader #RSAON11M9 chez albs ALLTRONIC/Germany pour environ 20 EUR
ALPS Fader #RSAON11M9 chez Deltron Roxburgh/UK pour environ 10£
ALPS Fader RSAON11M9, numéro de commande #442081-07 chez Conrad pour environ 23 EUR


sur la page : http://www.ucapps.de/index.html?page=midibox64_fr.html
Cordialement,
Benoît ROUSSEAU

Benoît ROUSSEAU

Le câblage

Là, y a un poil de boulot !

Le schéma de câblage est celui-ci :



Le principe est le suivant :
- une entrée analogique est chargée de mesurer la position absolue du curseur du potentiomètre ;
- deux broches numériques sont configurées en sorties pour piloter le moteur, à savoir les commandes moteur dans un sens, moteur dans l'autre sens et stop rapide ;
- une sortie PWM est utilisée de manière à pouvoir faire varier la puissance envoyée au moteur pour le faire tourner plus ou moins vite ;
- la carte arduino ne pouvant pas commander directement le petit moteur, un étage de puissance configuré en "pont en H" est assuré par le L293B ;
- Le L293B n'a pas de diodes de protection intégrée, d'où la présence des quatres diodes cablées "volantes".

(1) Remarque : sur le schéma, des pointillés rouges et de petits (1) vous indiquent comment câbler l'alimentation du moteur directement sur la carte... mais ATTENTION ! Prenez garde, il faut ABSOLUMENT changer la position du cavalier d'alimentation sur la carte Arduino pour qu'il soit en position alimentation externe et branchez un petit bloc d'alimentation secteur sur la prise d'alimentation de la carte. N'ALIMENTEZ PAS LE MOTEUR A PARTIR DU 5V de la carte !. Pour ma part, j'ai choisi d'alimenter le moteur avec une pile 9V.



Cordialement,
Benoît ROUSSEAU

Benoît ROUSSEAU

Le programme

C'est un programme de test, il n'est pas optimisé, ... c'est donc à adapter.

Le principe est simple : on envoie avec un terminal série un nombre entre 0 et 1023 inclus et le curseur du potetiometre se déplace jusqu'a cette valeur puis renvoie sur l'écran du terminal la valeur atteinte.

Si vous avez des soucis lors de la mise en route c'est peut être qu'il vous faut inverser les deux fils d'alimentation du moteur.

Code: [Select]
/***************************************/
// MotPot Arduino
// Benoît ROUSSEAU 27 juillet 2006
// - Pilotage d'un potentiomètre
// motorisé (étude de faisabilité)
/***************************************/

#define PILOT_A 7     // entrée A du pont en H
#define PILOT_B 8     // entrée B du pont en H
#define PILOT_PWM 9   // entrée "Enable" du pont en H
#define PILOT_REF 0   // entrée analogique reliée au commun de la piste du potentiomètre

#define ECRART_V_DIV2 150 // rapport PWM min pour déplacement moteur potentiomètre

int cmdValeur;
int cmdChar;

/***************************************/

void direction (byte dir)
{
 if (dir == 0)
 {
   digitalWrite (PILOT_A, HIGH);
   digitalWrite (PILOT_B, LOW);
 }
 else
 {
   digitalWrite (PILOT_A, LOW);
   digitalWrite (PILOT_B, HIGH);
 }
}

void allerA (int consigne)
{
 int positionlue = analogRead (PILOT_REF);
 int vitesse = 0;
 
 analogWrite (PILOT_PWM, 0);
 
 if (consigne == positionlue) return;
 if (consigne > 1023) return;
 if (consigne < 0) return;

 if (consigne > positionlue)
 {
   direction(1);
   if (positionlue < (consigne-ECRART_V_DIV2))
     analogWrite (PILOT_PWM, 255);
     
   while (positionlue < (consigne-ECRART_V_DIV2))
     positionlue = analogRead (PILOT_REF);
     
   analogWrite (PILOT_PWM, 140);
   while (positionlue < consigne)
     positionlue = analogRead (PILOT_REF);
     
   digitalWrite (PILOT_B, LOW);
 }
 else
 {
   direction(0);
   if (positionlue > (consigne+ECRART_V_DIV2))
     analogWrite (PILOT_PWM, 255);
     
   while (positionlue > (consigne+ECRART_V_DIV2))
     positionlue = analogRead (PILOT_REF);
   
   analogWrite (PILOT_PWM, 140);
   while (positionlue > consigne)
     positionlue = analogRead (PILOT_REF);
   
   digitalWrite (PILOT_A, LOW);
 }
 
 analogWrite (PILOT_PWM, 0);
 
};

/***************************************/
void setup()
{
 pinMode(PILOT_A, OUTPUT);
 pinMode(PILOT_B, OUTPUT);
 pinMode(PILOT_PWM, OUTPUT);
 Serial.begin(9600);
};

void loop ()
{
   while (serialAvailable())
   {
     cmdChar = serialRead ();
     printByte (cmdChar);
     switch (cmdChar)
     {
       case 13 : // retour chariot commande
           allerA (cmdValeur);
           cmdValeur = 0;
       case '?' :
           Serial.print (analogRead(PILOT_REF));
         break;
       case '0' :
       case '1' :
       case '2' :
       case '3' :
       case '4' :
       case '5' :
       case '6' :
       case '7' :
       case '8' :
       case '9' : cmdValeur = cmdValeur * 10 + (cmdChar-48); break;

     }
   }
};


Si vous avez des questions ou si vous réalisez quelque chose à partir de cela, dites le moi  :D !

Le prochain post, encore plus fort, un peu de patience...
Cordialement,
Benoît ROUSSEAU

fredericasse

#7
Nov 04, 2006, 06:43 pm Last Edit: Nov 04, 2006, 06:44 pm by fredericasse Reason: 1
Bonjour j'aimerai savoir comment vous faite pour recuperer la valeur du potentiometre.
Imaginions que quelqu'un positionne le potentiometre manuellement comment faire pour la recuperer.
Merci de votre aide

Benoît ROUSSEAU

#8
Nov 04, 2006, 09:24 pm Last Edit: Nov 04, 2006, 09:26 pm by Benoit Reason: 1
Bonjour Frédéric,

 La fonction qui  récupère la valeur numérique de la position du curseur du potentiomètre est "analogRead". Que la position du potetiometre change de manière "automatisée" ou en manuel, c'est la même fonction qui renvoie la valeur numérique de la position.

 Pour plus d'information sur la fonction AnalogRead, consulte le manuel de référence Arduino ou ma traduction à l'adresse http://perso.orange.fr/rousseau-benoit/referencearduino/sommaire.xhtml
Cordialement,
Benoît ROUSSEAU

fredericasse

Bonjour,
J'aimerai savoir si vous connaissez le language JAL pour pouvoir m'aiguiller sur les commande a utiliser car j'ai trouve un montage qui permet de controler des potentiometres numerique et j'aimerai y adapter des potentiometre motorise...

Merci de votre reponse

Benoît ROUSSEAU

#10
Nov 08, 2006, 09:37 pm Last Edit: Nov 08, 2006, 09:38 pm by Benoit Reason: 1
Bonjour,

J'ai entendu parlé de JAL, mais je ne connais absolument rien sur ce language !
Par ailleurs, quel rapport avec JAL ?
Cordialement,
Benoît ROUSSEAU

fredericasse

Oui pardon j'ai oublier de vous dire le programme est sur une 16F877 de chez microchips j'avais oublié se detaille  :o :-? :o :-X :-/

Benoît ROUSSEAU

Bonjour,

  Ce n'est absolument pas le bon endroit pour des questions sur la famille Microchip ou le langage JAl ! Je comprends mieux tes questions suite à mes réponses...

  Trouve un forum sur lrs microcontrolleurs PIc et le langage JAL se sera plus simple et efficace. Je dev. bien sur PIC aussi mais en assembleur.
Cordialement,
Benoît ROUSSEAU

admin

hello

I will have to reply in english because my french is really bad :(

I've used jal quite a lot... the grandfather of arduino was a board called programma2003 which was running jal.
yes it is very lightweight and uses very little code but it's also very low level and making complex stuff requires a lot of work.. it doesn't have strings, it works only with 8 bit values. I felt it was very difficult for my students to get going if they didn't know how to program already.
that's why we moved to AVR processors and eventually made arduino

massimo

karistouf

bonjour !
hum... le sujet date un peu, donc je ne trouve pas d a autres refrences.

Que faut il pour faire fonctionner ce potentiomètre motorisé là avec Arduino?
http://www.conrad.fr/potentiometre_a_piste_plate_motorise_p_48674_49110_841476_361282_FAS#

à moins que vous n ayez d autres produits en potentiomètres linéaires qui soient plus interessants ;-)
:)

Go Up