Arduino commandé par Joystick
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Arduino commandé par Joystick



  1. #1
    invite9cef8d13

    Arduino commandé par Joystick


    ------

    Bonjour,

    Excusez moi pour le déterrage de ce sujet, mais c'est dans la continué du super code qu'à gentiment fournit Yvan.

    Voila, je souhaite alimenter la bobine de commande de ma pompe hydraulique à débit variable, avec un joystick fournit.

    Cependant, me manquant la carte produisant un signal PWM pour la bobine, je me tourne vers la solution de l'arduino (que je connaissais simplement de non, le mien devrait arriver lundi). Je précise également que mes bases electroniques et en programmation sont infimes, mais avec du courage tout est possible non ?

    Pour planter le décor, mon joystick, est équipé d'un potentiomètre 200ohms et de deux résistances en série de 33ohms chacunes.
    Avec une alimentation 5V avec l'arduino, à la sortie du joystick je peux faire varier entre 0 et 5V avec 2.5V pour le centre (sachant que j'ai besoin d'une inversion de polarité sur ma bobine, le débit de la pompe pouvant faire A -> B comme B -> A)

    Quant a la bobine, qui est une commande proportionnelle du plateau de la pompe hydraulique, je dois l'alimenter avec une amplitude de 0 à 6V et 100mA max, pour finir une fréquence idéale entre 100 et 200Hz
    L'alimentation de la bobine serait a priori réalisé avec un petit régulateur du style 7086.
    Pour la fréquence, en utilisant la pin3, la valeur la plus proche pourra être 122Hz.

    Je me suis permis de reprendre le code d'Yvan, supprimer la calibration qui ne me semble pas forcément utile (en regardant ce que la fonction analogRead collecte comme données) je devrais pouvoir adapter si les valeurs sont un peu décalés.

    Voici ce qu'il en est sorti.
    Code:
    const int sensorPin = A0;    // pin du potentiometre
    const int relaisPin = 2;    // pin qui controle l'inversion
    const int bobinePin = 3;    // pin qui controle la bobine
    
    const int blanc = 5;         // zone morte de part et d'autre du neutre
    
    // variables:
    int x = 0;         // the x value
    
    void setup() {
      // initialize the relay pin as an output:
      pinMode(relaisPin, OUTPUT);
    
    // passage de la pin 3 à 122Hz
      TCCR2B = TCCR2B & B11111000 | B00000110;
    
    }
    etPwmFrequ
    void loop() {
      // read the sensor:
      x = analogRead(sensorPin);
    
      // apply the calibration to the sensor reading
      x = map(x, 0, 1023, -255, 255);
    
    
      // if x is >0, turn relay on :
      if (x > blanc) {
        digitalWrite(relaisPin, HIGH);
      }
      else {
        digitalWrite(relaisPin, LOW);
      }
    
      delay(1);        // delay in between reads for stability
    
      //définition de la zone morte centrale
      if (x > blanc)
      {
        x = (x - blanc);
      }
      else if (x < -blanc)
      {
        x = (x + blanc) ;
      }
      else {
        x = 0;
      }
    
      // calculer le signal PWM pour les moteurs
      int bobine = x ;
    
      // on calcule la valeur absolue
      bobine = abs(bobine);
    
      // send PWM to the motors
      analogWrite(bobinePin, bobine);
    }
    J'ai supprimé certains points dont je n'ai pas vraiment compris l'utilité, par exemple pourquoi passer à une amplitude de 128 (-64 a 64), saturer cette valeur, faire l'absolu, puis transposer entre 0 et 255 ? Enfin bon, n'étant pas du tout programmeur, pouvez-vous me dire ce que vous pensez de ce code ?

    (voici le message de la dernière version du code proposé par Yvan http://forums.futura-sciences.com/el...ml#post5017179 )

    Si pour le moment je ne suis pas trop à côté de la plaque, j'aimerais bien discuter avec vous du choix à faire pour permettre l'inversion de la polarité, ainsi que le choix du composant pour alimenter la bobine (pas le générateur, je parle du transistor ou autre ?) qui conviendrait à cette utilisation.

    C'est à dire avec les données indiqués précédemment, 6v, 100mA max environ et 200Hz, et avec le souhait d'avoir une grande fiabilité dans ces composants (j'estime l'utilisation à un taux de 20% par séquence de 2 ou 3 minutes et possible pendant 7 ou 8h d'affilé).
    (d'ailleurs ma régulation à base de 7086 pour le 6V peut elle convenir avec ces conditions, si le refroidisseur est en conséquence ?)

    Voila je vous remercie beaucoup, si vous avez des questions j'y répondrais avec plaisir. En espérant ne pas avoir raconté de trop grosse boulette

    -----

  2. #2
    DAUDET78

    Re : - Arduino commandé par Joystick -

    J'aime pas le Grec

  3. #3
    invite9cef8d13

    Re : - Arduino commandé par Joystick -

    Bonjour daudet,

    M'étant inspiré profondément de ce sujet pour ce qui est de l'arduino, j'ai pensé que la meilleur place pour ces questions étaient ici.
    S'il est préférable de continuer dans mon autre sujet en zone technologique, qu'on me le dise, il n'y a aucun soucis.
    Je demanderais à un modérateur de faire le transfert ?

    merci

  4. #4
    invite9cef8d13

    Re : - Arduino commandé par Joystick -

    Bonjour,
    malgré mon manque de connaissance, j'ai essayé de planché sur les composants, voici un petit schéma, qu'en pensez vous ? Il y a des points d'interrogations, par exemple la valeur de la résistance sur le gate (certains préconisent, d'autres non).
    Les deux diodes de roue libre autour de la bobine ?

    Donc le transistor correspond à celui-ci : http://www.produktinfo.conrad.com/da...S355N__FSC.pdf

    les relais sont de type mécanique inverseur, par exemple ceux la: http://www.produktinfo.conrad.com/da...1U_15A_12V.pdf

    La résistance placé après l'arrivé du 6V (régulateur sur le +12v batterie (application mobile)), est placé pour limiter à 120mA l'intensité sur la bobine.

    Que pensez-vous de cela ? ainsi que du code que j'ai proposé plus haut dans le sujet

    Nom : schema1.png
Affichages : 155
Taille : 20,8 Ko

    Le pin2 correspond à la commande de l'inversion de sens

    Merci!

  5. A voir en vidéo sur Futura
  6. #5
    invite9cef8d13

    Re : - Arduino commandé par Joystick -

    Mon sujet a été scindé du sujet originel, pour le suivre, voici le lien de ce qui m'a fortement inspiré:

    http://forums.futura-sciences.com/el...-joystick.html

  7. #6
    Antoane
    Responsable technique

    Re : Arduino commandé par Joystick

    Bonjour,

    Mieux vaut repartir de zéro que de réveiller cette vieille discussion : http://forums.futura-sciences.com/el...-joystick.html
    Ta question, baichan,est, comme déjà dit, la suite de http://forums.futura-sciences.com/te...-variable.html. Vous passez cependant sur un mélange électronique/programmation, je pense qu'il est préférable de migrer sur le forum électronique.

    Les derniers messages postés sur http://forums.futura-sciences.com/el...-joystick.html ont donc été détachés vers ce nouveaux fil.

    Bon we.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  8. #7
    DAUDET78

    Re : - Arduino commandé par Joystick -

    Citation Envoyé par baichan Voir le message
    Que pensez-vous de cela ?
    - Que ton arduino est incapable de piloter directement les relais
    - que tes diodes courcircuitent la bobine de ton electrovanne

    Utilise un L298
    J'aime pas le Grec

  9. #8
    invite9cef8d13

    Re : - Arduino commandé par Joystick -

    Bonjour daudet, merci de ta réponse,

    en recherchant des informations sur ce qu'est un L298, je suis tombé sur ce module: http://tiptopboards.free.fr/arduino_...c.php?f=2&t=34 disponible pour 8€ environ
    C'est peut-être une solution de facilité ce que je regretterais presque mais mon but reste la finalité, tant pis pour la "bidouille". (c'est un montage pour travailler avec, l'efficacité de mise en œuvre et d'utilisation prime)

    Je vais étudier ce module pour si besoin adapter mon code et vous le soumettre

  10. #9
    invite9cef8d13

    Re : - Arduino commandé par Joystick -

    Voici le code adapté au module présenté au message précédent.

    en complément
    l'inversion de la polarité sur la bobine se fait avec soit:
    relais 1 HIGH et relais 2 LOW
    autrement
    relais 1 LOW et relais 2 HIGH

    Code:
    const int sensorPin = A0;    // pin du potentiometre
    const int relais1Pin = 2;    // pin qui controle l'inversion
    const int relais2Pin = 4;    // pin qui controle l'inversion
    const int bobinePin = 3;    // pin avec signal PWM
    
    const int blanc = 5;         // zone morte de part et d'autre du neutre
    
    // variables:
    int x = 0;         // the x value
    
    void setup() {
      // initialisations des relais en sorties
      pinMode(bobinePin, OUTPUT);
      pinMode(relais1Pin, OUTPUT);
      pinMode(relais2Pin, OUTPUT);
      digitalWrite(bobinePin, LOW);
      digitalWrite(relais1Pin, HIGH);
      digitalWrite(relais2Pin, LOW);
      
    // passage de la pin 3 à 122Hz
      TCCR2B = TCCR2B & B11111000 | B00000110;
    
    }
    
    void loop() {
      // lecture du potentiomètre
      x = analogRead(sensorPin);
    
      x = map(x, 0, 1023, -255, 255);
    
    
      // si x > 0, polarité dans un sens
      if (x > blanc) {
        digitalWrite(relais1Pin, HIGH);
        digitalWrite(relais2Pin, LOW);
      }
      else {
        digitalWrite(relais1Pin, LOW);
        digitalWrite(relais2Pin, HIGH);
      }
    
      delay(1);        
    
      //définition de la zone morte centrale
      if (x > blanc)
      {
        x = (x - blanc);
      }
      else if (x < -blanc)
      {
        x = (x + blanc) ;
      }
      else {
        x = 0;
      }
    
      // calculer le signal PWM pour les moteurs
      int bobine = x ;
    
      // on calcule la valeur absolue
      bobine = abs(bobine);
    
      // envoie du signal PWM à la bobine
      analogWrite(bobinePin, bobine);
    }
    N'ayez pas peur de commenter ou signaler mes boulettes

Discussions similaires

  1. - Arduino commandé par Joystick -
    Par invite2f313dba dans le forum Électronique
    Réponses: 224
    Dernier message: 31/12/2014, 18h31
  2. Projet 2 moteurs cc 1 joystick arduino rev3
    Par invite3203bcfe dans le forum Électronique
    Réponses: 45
    Dernier message: 11/12/2014, 18h20
  3. [URGENT !!!] Programmation d'un robot M3Pi et un Joystick via Arduino
    Par invitebb4a2db9 dans le forum Électronique
    Réponses: 5
    Dernier message: 10/04/2013, 16h22
  4. Commande par Joystick
    Par invitec82136c4 dans le forum Électronique
    Réponses: 1
    Dernier message: 27/04/2006, 20h59
  5. commande de 2 moteurs par joystick
    Par invite9fce355b dans le forum Électronique
    Réponses: 3
    Dernier message: 17/09/2005, 10h49
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...