Messages de TomKlash

    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.

    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 ?

    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é.

    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...

    Non c'est pas juste une commande, enfin pas sur les Unos car le noyau des AVR c'est de la merde, et à 980 Hz tu l'entendra toujours. Il faut monter à 20 Khz.

    Il faut soit trouver une lib soit taper directement dans les registres de l'ATMega 328p.

    J'ai trouvé ce tuto mais je n'ai pas les compétences en la matière, j'aurais besoin de tes lumières pour mettre ça en application.

    https://pobot.org/Modifier-la-frequence-d-un-PWM.html

    Je vous présente mon simulateur DIY G-Seat.

    Il est basé sur le système G-Seat. Le but est de générer des forces G sur le pilote avec quasi aucun mouvement.

    Le siège baquet est découpé en 3 parties. Le dossier est la seule partie fixe, l'assise et le haut du siège (derrière l'épaule) sont des pièces mobiles.

    L'assise retranscrit la force G longitudinale, le haut du siège combine la force G longitudinale et latérale.

    Le système est actionné par 3 moteurs DC de 150 W. La partie électronique est composée par un Aduino Uno avec 3 cartes MotoMonsterShield.

    3xp6Hmp.jpg