Projet BV séquentielle avec palettes au volant

11 sujets de 1 à 11 (sur un total de 11)
  • Auteur
    Messages
  • #3007
    akoirium
    Maître des clés

    Salut…

    Comme mon gp3 est pratiquement prêt pour le 4T, et qu il me reste un peu de temps…
    Je viens d avoir eu l idée de transformer la commande de vitesse en commande séquentielle avec palettes au volant 😉

    J ai fouiller un peu sur le net et je pensse avoir trouver la solution…

    Il suffit d utiliser un gros servomoteur de modelisme de 70kg/cm² comme celui ci :

    https://a.aliexpress.com/_mL58S5Z

    Une carte arduino uno a 10€…

    2 boutons poussoirs… et un peu de programmation à l aide de ce tuto :

    Piloter un servomoteur avec deux boutons poussoirs – Arduino

    Donc voilà… je vais faire quelque tests… et avec un peu de chance ça donnera quelque chose de sympa et exploitable 😉

    • Ce sujet a été modifié le il y a 1 année et 2 mois par akoirium.
    #3018
    akoirium
    Maître des clés

    Salut…
    Bon changement d approche en ce qui concerne le servomoteur…

    Ce qui se fait en modélisme est relativement chère et pas forcément assez caustaud pour cette fonction…

    Je vais donc me fabriquer mon propre servo à l aide d un motoreducteur 12v :

    D un pont en H pour commander la puissance moteur :

    Et de l electronique d’un petit servo modélisme donc la mécanique est HS pour commander le pont en H et récupérer l information de position de l axe du motoreducteur 😉

    Il ne me reste plus qu a faire un montage test pour vérifier le fonctionnement de la programmation puis passer aux choses sérieuses…

    #3021
    akoirium
    Maître des clés

    Salut…

    Quelques news du projet…

    Ca s annonce plustot bien…
    Grâce à un peu d aide sur le forum arduino… j ai un programme qui fonctionne et qui est simple a mettre en application 😉
    Il me reste à tester ça en conditions réelles et améliorer le programme pour ajouter l afficheur au tableau de bord… ainsi que 2 boutons de réglages dans le cas d un changement de boite sur site et ne pas avoir à utiliser un pc pour régler les débattements du servo 😉

    Donc la suite bientôt 😉

    #3022
    akoirium
    Maître des clés

    Re …
    bon ça avance… :

    servobv

    Impression d’une pièce en 3D qui supporteras le servo de modélisme 9g standard ( dont j’ai virer les engrenages et le moteur) sur le motoréducteur que j’ai mis en lien plus haut 😉

    Bref… encore quelques tests sur la table … et je pourrais monter le tout sur le tracteur et tester ca en conditions réelles ;)…

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par akoirium.
    #3025
    akoirium
    Maître des clés

    Salut…

    Des news du projet…

    Bon dejas il faut oublier le motoreducteur que j ai mis en lien…
    Il n est pas asser puissant…

    Je repart donc sur un montage à base de moteur d essuie glace…

    Par contre … ça avance côté programmation…

    Je mettrais le code final ici pour ceux que ça intéresse…

    Pour le fonctionnement… :
    Passage des vitesses avec 2 boutons pousoirs ou palettes au volant
    Afficheur 7 segments à mettre au volant ou au tableau de bord qui affiche la vitesse sélectionnée…
    Et cerise sur le gâteau… 2 autres boutons pousoirs permettant le reglage du programme sans avoir besoin de pc…

    On sélection une vitesse… et avec les bouton de réglages +/- on règle l angle du servo pour cette vitesse… puis avec un double click + ou – , on valide le reglage et on le met en mémoire… 😉

    Le pc ne seras donc utile que si l on passe d une boite 5 à une boite 6 ( un chiffre a modifier dans le programme) 😉

    La suite bientôt 😉

    #3026
    akoirium
    Maître des clés

    Voici le code provisoire pour qui veut tester ….

    Au passage un GRAND MERCI à J-M-L du forum arduino pour ce code :

    
    
    /*
        Câblage
    
      PIN
       0  NC                        (Rx)
       1  NC                        (Tx)
       2  pinPalettePlus            pin 2 --- bouton --- GND
       3  pinPaletteMoins           pin 3 --- bouton --- GND
       4  NC
       5  pinServo                  pin 5 --- pin contrôle angle servo
       6  7 Segment 'a'             Prévoir résistance de limitation de courant (cf https://eskimon.fr/tuto-arduino-205-afficheurs-7-segments)
       7  7 Segment 'b'             Prévoir résistance de limitation de courant
       8  7 Segment 'c'             Prévoir résistance de limitation de courant
       9  7 Segment 'd'             Prévoir résistance de limitation de courant
      10  7 Segment 'e'             Prévoir résistance de limitation de courant
      11  7 Segment 'f'             Prévoir résistance de limitation de courant
      12  7 Segment 'g'             Prévoir résistance de limitation de courant
      13  NC                        Led interne
      A0  pinReglagePlus            pin A0 --- bouton --- GND
      A1  pinReglageMoins           pin A1 --- bouton --- GND
      A2
      A3
      A4
      A5
    
    */
    
    #include <Servo.h>
    Servo levierVitesse;
    const byte pinServo = 5;
    
    #include <simpleBouton.h> // cf @bricoleau @ http://forum.arduino.cc/index.php?topic=375232.0
    // le changement de vitesse
    const byte pinPalettePlus  = 2;  //Cablage : pin 2 --- bouton --- GND
    const byte pinPaletteMoins = 3;  //Cablage : pin 3 --- bouton --- GND
    simpleBouton boutonPlus(pinPalettePlus);
    simpleBouton boutonMoins(pinPaletteMoins);
    // le réglage de l'angle du servo
    const byte pinReglagePlus = A0;
    const byte pinReglageMoins = A1;
    simpleBouton boutonReglagePlus(pinReglagePlus);
    simpleBouton boutonReglageMoins(pinReglageMoins);
    
    const byte pin7Seg[] = {12, 11, 10, 9, 8, 7, 6};
    const byte chiffres7Seg[] = {0b1110111, 0b0010101, 0b0110000, 0b1101101, 0b1111001, 0b0110011, 0b1011011, 0b1011111, 0b0, 0b0};
    
    void affichageChiffre(byte chiffre) { // de 0 à 7 seulement
      if (chiffre >= sizeof chiffres7Seg) chiffre = (sizeof chiffres7Seg) - 1;
      for (byte b = 0; b < sizeof pin7Seg; b++) digitalWrite(pin7Seg[b], bitRead(chiffres7Seg[chiffre], b) ? HIGH : LOW);
    }
    
    int boite[] = {700, 930, 1160, 1390, 1620, 1850, 2080}; // les valeurs d'angles en µs
    const byte nombreDeVitesses = sizeof boite / sizeof boite[0];
    byte vitesse  = 1;  // vitesse par défaut
    
    inline void reglerVitesse() {
      levierVitesse.writeMicroseconds(boite[vitesse]);
      Serial.print(F("Vitesse ")); Serial.print(vitesse);
      Serial.print(F("\tangle ")); Serial.println(boite[vitesse]);
      affichageChiffre(vitesse);
    }
    
    void vitessePlus() {
      if (vitesse < nombreDeVitesses - 1) {
        vitesse++;
        reglerVitesse();
      }
    }
    
    void vitesseMoins() {
      if (vitesse > 0) {
        vitesse--;
        reglerVitesse();
      }
    }
    
    void reglagePlus() {
      boite[vitesse]++;
      reglerVitesse();
    }
    
    void reglageMoins() {
      boite[vitesse]--;
      reglerVitesse();
    }
    
    void gestionPalettes() {
      boutonPlus.actualiser();
      if (boutonPlus.vientDEtreEnfonce()) vitessePlus();
      else {
        boutonMoins.actualiser();
        if (boutonMoins.vientDEtreEnfonce()) vitesseMoins();
      }
    }
    
    void gestionAngle() {
      boutonReglagePlus.actualiser();
      if (boutonReglagePlus.vientDEtreEnfonce()) reglagePlus();
      else {
        boutonReglageMoins.actualiser();
        if (boutonReglageMoins.vientDEtreEnfonce()) reglageMoins();
      }
    }
    
    void setup() {
      for (byte b = 0; b < sizeof pin7Seg; b++) pinMode(pin7Seg[b], OUTPUT);
      Serial.begin(115200);
      reglerVitesse();
      levierVitesse.attach(pinServo);
    }
    
    void loop() {
      gestionPalettes();
      gestionAngle();
    }
    

    Il me reste à le tester et a le peaufiner mais c est dejas une bonne base 😉

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par akoirium.
    #3028
    akoirium
    Maître des clés

    Salut…

    Bon… bonne nouvelle !…

    Le code fonctionne merveilleusement bien 😉

    Me reste plus qu bidouiller mon moteur d essuie glace et d installer tout ce monde sur le tracteur 😉

    Une fois le système fonctionnel… je vous ferais un petit tuto…
    De la bidouille du servo a la programmation… en passant bien sûr par le câblage 😉
    Et si tout vas bien, j ajouterais un petit module bleutooth pour pouvoir modifier la programmation directement depuis son smartphone 😉

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par akoirium.
    #3032
    akoirium
    Maître des clés

    Petite pièce en impression 3d pour l afficheur de vitesse au volant 😉 …

    20210803-062600

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par akoirium.
    • Cette réponse a été modifiée le il y a 1 année et 2 mois par akoirium.
    • Cette réponse a été modifiée le il y a 1 année et 2 mois par akoirium.
    #3036
    akoirium
    Maître des clés

    Premier essai du servo version 2.0 :

    Ca fonctionne impec !…
    Il est largement asser puissant pour manipuler la boite 😉

    Il reste plus qu’à monter tout ce petit monde sur le tracteur et passer aux choses sérieuses 😉

    #3049
    akoirium
    Maître des clés

    Petit essai de l enssemble avant le montage sur le tracteur 😉 :

    #3059
    akoirium
    Maître des clés

    Salut 😉

    Bonne nouvelle !!!

    Ca fonctionne merveilleusement bien !!!
    Je ne pouvais pas rêver mieux !!!

    Voici la vidéo du premier essai :

    Bon un léger souci de parallélisme depuis la dernière session de roulage… mais rien de méchant !
    Et du coup… c est super agréable a piloter !…
    Plus besoin de batailler avec le levier de vitesses mal placé et trop sensible 😉 …

    • Cette réponse a été modifiée le il y a 1 année et 1 mois par akoirium.
11 sujets de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.