DIY - G-Seat TomKlash simulateur

  • Les équerres Elcom 80x80 sont issus d'un destockage industriel.

    Merci pour vos appréciations sur la qualité du boulot.

    Je vous prépare des vidéos pour bientôt. J'ai besoin de faire encore un peu de mise au point.

    Il faut que je passe le PWM de l'Arduino sur une fréquence plus élevée pour faire taire les moteurs... Etienne je suis preneur sur un peu d'aide de ta part.

    Je vous prépare la suite du montage en photo également...

  • RacingMat a fourni un tuto qui te donne les clés, mais honnêtement j'ai regardé le code que tu utilise et ça m'a fait saigner des yeux au niveau de l'asservissement...

    J'ai déjà mis pas mal de choses dans NodeBlue pour gérer les PWM de différents circuits. C'est quoi les circuits que tu utilises pour piloter les moteurs ?

    Il faut que je rajoute un vrai module PID pour faire de l'asservissement, ça sera peut être l'occasion.

  • Merci pour ta réponse. Bon tu auras compris que la programmation et l'électronique c'est pas mon domaine de prédilection :D

    Pour piloter les moteurs j'utilise des cartes MotoMonsterShield.

    Je commence à lire le Topic sur NodeBlue, par contre tu parles d'un sujet modification des fréquence PWM de RacingMat je ne l'ai pas retrouvé.

  • Merci beaucoup je viens de le lire. Ce que je comprends c'est que la MotoMonsterShield est limitée à 20KHz. C'est une fréquence que l'on risque d'entendre si l'on a de jeunes oreilles ou l'ouïe affûté (ça sera sans doute mon cas ;-))

    Pour se mettre a cette fréquence maxi de 20KHz là faut utiliser un système de division spécifique du timer de l'Arduino alors que si on peut aller au delà de cette fréquence deux lignes de code suffisent a débrider ce dernier...

    C'est dommage je viens de recommander 5 cartes MMS...:+++:

    Tu me conseillerais quoi comme carte pour piloter mes moteurs au jour d'aujourd'hui ?

  • euh 20Khz ça commence à faire haut, même jeune (c'est pas une question d'ouie affûtée, c'est effectivement une question d'age et de génétique) !

    T'es sûr que tu va entendre ça ? T'en as pas une pour tester ?

    La plupart des ic pour la commande de moteur sont limités en fréquences, et de toute façon plus tu vas monter haut moins tu aura de précision.

    Je ne connais pas de shield moteurs puissant qui montent plus haut (ça doit exister, mais il faut chercher)

    Avant de perdre du temps et de l'argent, commence par tester voir si tu l'entends encore.

  • Tu me dis si je modifie correctement le code ou pas.


    Ici en rouge pas de modif sur les déclarations des pins

    ////////////////////////////////////////////////////////////////////////////////

    // DECLARATIONS

    ////////////////////////////////////////////////////////////////////////////////

    /* VNH2SP30 pin definitions*/ // MV

    int inApin[3] = {8, 9, 12}; // INA: Clockwise input // TC

    int inBpin[3] = {7, 4, 11}; // INB: Counter-clockwise input // TC

    int pwmpin[3] = {5, 6, 10}; // PWM input // MV

    int cspin[2] = {2, 3}; // CS: Current sense ANALOG input // MV

    int enpin[3] = {0, 1, 2}; // EN: Status of switches output (Analog pin) // MV

    int statpin = 13; //not explained by Sparkfun

    /* init position value*/

    int DataValueL=512; //middle position 0-1024

    int DataValueR=512; //middle position 0-1024

    int DataValueM=512; //middle position 0-1024 // MV


    Ensuite j'intègre le code INITIALIZATION en remplacement de mon code de base

    ////////////////////////////////////////////////////////////////////////////////

    // INITIALIZATION

    ////////////////////////////////////////////////////////////////////////////////

    void setup()

    {

    // serial initialization

    Serial.begin(115200);

    // initialization of Arduino's pins

    pinMode(statpin, OUTPUT); //not explained by Sparkfun

    digitalWrite(statpin, LOW);

    for (int i=0; i<3; i++) // MV

    {

    pinMode(inApin[i], OUTPUT);

    pinMode(inBpin[i], OUTPUT);

    pinMode(pwmpin[i], OUTPUT);

    }

    // Initialize braked for motor

    for (int i=0; i<3; i++) // MV

    {

    digitalWrite(inApin[i], LOW);

    digitalWrite(inBpin[i], LOW);

    }

    }


    jjnTEti.png

    Puis ca se complique je suis perdu...

    Dois je ajouter cette ligne ? :?

    void loop()

    {

    int sensorL,sensorR, sensorM; // MV

    readSerialData(); // DataValueR & L contain the last order received (if there is no newer received, the last is kept)

    // the previous order will still be used by the PID regulation MotorMotion Function

    sensorR = analogRead(potR); // range 0-1024

    sensorL = analogRead(potL); // range 0-1024

    sensorM = analogRead(potM); // range 0-1024 // MV

    analogWriteD9(sensor);

    motorMotion(motRight,sensorR,DataValueR);

    motorMotion(motLeft,sensorL,DataValueL);

    motorMotion(motMedium,sensorM,DataValueM); // MV

    }


    Est ce que du fait que le PWM ne varie plus entre 0 et 255 je dois changer qq chose dans "l'asservissement" ici :

    // PID : calculates speed according to distance

    pwm=255;

    if (gap>25) pwm=50; //TC

    if (gap>125) pwm=150; //TC

    if (gap>225) pwm=250; //TC

    pwm=map(pwm, 0, 255, 0, pwmMax); //adjust the value according to pwmMax for mechanical debugging purpose !



    Merci d'avance.

  • Il est certain qu'avec un tel découpage du siège il est nécessite de disposer d'une structure rigide.

    Beau travail, mais tu n'as tout de même pas mégoter sur les profilés et leurs sections... ;)

    L'imagination est plus importante que le savoir (Albert Einstein)

  • Bon en fouillant sur le net et XSimulator je suis tombé sur un update du code de RacingMat pour passer le PWM en 20KHz dans le cas d'une utilisation Arduino - MotoMonsterShield.

    https://www.xsimulator.net/community/mark…th-arduino.102/


    Par contre cela passe les pin 9 et 10 en 20KHz. Pour ma part j'aurais besoin des pins 5 - 6 -10 en 20KHz car je pilote 3 moteurs.

    Je suis reparti de ce nouveau code pour lequel j'ai fait les modifs qui permettent de passer de 2 à 3 moteurs mais pour la partie INITIALIZATION qui modifie la fréquence du PWM je ne sais pas l'adapter. Si RacingMat ou qq peut m'aider ça serait cool.

    Je vous poste mon code avec les adaptations pour mon SIMU que j'ai faites commentée // TK

    https://drive.google.com/open?id=1pXRob…XNLGNOiDlR8rwL0


    Merci d'avance.

    Message modifié 2 fois, dernière modification par TomKlash (17 mai 2020 à 12:49).

  • n oublie pas d 'ecrire ainsi RacingMat pour l interpeller se sera plus simple!!

    n oubliez pas qu un con qui marche ira toujours plus loin qu 'un intellectuel assis

    AMD 5800X3D W10 RTX4070Super 3X27pouces et Pico 4 MMOS2014 Ionicube

    :aspi: