Auteur Sujet: [WIP] Home Dynamic Racing Cab (HDRC)  (Lu 50540 fois)

Hors ligne RacingMat

  • Passionné
  • *
  • Messages: 181
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #80 le: Dimanche 31 Mars 2013, 17:11:31 pm »
hello !

Pour l'avancement, oui, mes moteurs obéissent aux cartes électroniques !
vidéo test moteurs et potentiomètres

J'ai commencé un post pour présenter tout ça :-)
Playseat Dynamique 2DOF

Mais me voilà maintenant face à Xsim : il faut envoyer ce qu'attend l'Arduino ...
 :'(
Pourrais-tu m'aider pour savoir quels sont les paramètres de Xsim qui correspondent ?

merci
Mat

Hors ligne francois95470

  • Accro
  • *
  • Messages: 244
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #81 le: Dimanche 31 Mars 2013, 18:46:10 pm »
voila une video avec profils alu pour le siege
http://m.youtube.com/#/watch?v=NWonYD6A-rA&feature=watch-vrec
"trop de compétence tue l'incompétence"

Recherche: borne crazy taxi ou jumbo safari.

Hors ligne captaincav

  • Touriste
  • *
  • Messages: 7
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #82 le: Vendredi 05 Avril 2013, 01:03:24 am »
je pourrai savoir ou tu as trouvé le programme  pour le arduino ou si c'est toi qui la fait ?

Hors ligne lipide512

  • Grand Pilier
  • *
  • Messages: 959
  • Bonheur Pixel Perfect !
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #83 le: Vendredi 05 Avril 2013, 07:10:39 am »
C’est mon beau frère qui l'a écrit pour l'occasion.

Hors ligne RacingMat

  • Passionné
  • *
  • Messages: 181
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #84 le: Vendredi 05 Avril 2013, 17:45:12 pm »
@captaincav :
Si tu veux programmer, tu peux repartir des données de base avec le code de la MotoMonster :
Created 24 May 2011 by Jim Lindblom  SparkFun Electronics
https://www.sparkfun.com/products/10182
-> "Example Code"

pour info, je bosse sur une version incluant en particulier
2 potentiomètres de réglage :
   - amplitude de la course des moteurs (variation angulaire du playseat : effet pépère ou montagne russe)
   - et coefficient de PID (réaction souple ou hard).
la mesure de l'intensité
et ... je complète avec beaucoup de commentaires pour un maximum de lisibilité.

MAIS le top, c'est le programme publié par Lipide512  ^-^ parce qu'il fonctionne !!
« Modifié: Samedi 06 Avril 2013, 19:22:01 pm par RacingMat »

Hors ligne captaincav

  • Touriste
  • *
  • Messages: 7
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #85 le: Lundi 08 Avril 2013, 20:21:51 pm »
beau travail sinon j'ai un programme pour faire un barre graph avec un arduino et des modules tm 1648 et 1640 je cherche le liens mais pour iracing uniquement

Hors ligne captaincav

  • Touriste
  • *
  • Messages: 7
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #86 le: Lundi 08 Avril 2013, 22:02:22 pm »
voici le lien
irduino

Hors ligne RacingMat

  • Passionné
  • *
  • Messages: 181
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #87 le: Mercredi 10 Avril 2013, 15:23:49 pm »
Salut Lipide512 !

pourrais-tu m'indiquer quelle intensité tu as pu mesurer pour les moteurs en fonctionnement (avec M. Powermax dessus  :( ) ?

parce que j'aimerai mettre un fusible de bagnole adapté sur chacun des moteurs.

PS : j'ai récupéré un très zoli arrêt d'urgence mais c'est pas pareil !! C'est en complément et ça fait plus techno  ;)
« Modifié: Mercredi 10 Avril 2013, 15:35:41 pm par RacingMat »

Hors ligne lipide512

  • Grand Pilier
  • *
  • Messages: 959
  • Bonheur Pixel Perfect !
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #88 le: Mercredi 10 Avril 2013, 16:58:56 pm »
Je pourrai pas te répondre là - perso j'ai protégé en sortie d'alimentation dédiée avec un 30A sur support.
Je checkais les cables souvent afin de m'assurer qu'ils ne chauffent pas trop. Jusque là je n'ai pas eu de pb, si tout est bien calibré lorsque ça bloque mécaniquement, l'arduino a déjà coupé l'alimentation.

Pour info, dans le code actuel, le arduino a une marge de 16% pour des "pics" de mouvements hors champs. Passé cette sécurité, il coupe sans essayer de rattraper.

Hors ligne lipide512

  • Grand Pilier
  • *
  • Messages: 959
  • Bonheur Pixel Perfect !
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #89 le: Jeudi 02 Mai 2013, 15:41:28 pm »
Voici une révision du code du arduino pour xsim
corrections diverses par Mat racing, merci à lui de faire vivre le projet !  ^-

Citer
/*

 Opensource code for xsimulator by Jean David SEDRUE

 Version betatest27 - 24042012

 

 */

#define BRAKEVCC 0

#define RV  2 //according to cable at 24/11/2011

#define FW  1 //according to cable at 24/11/2011

#define STOP 0

#define BRAKEGND 3

#define CS_THRESHOLD 253 //not use :(

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

#define pwmMin 128;

#define pwmMax 250;

#define motLeft 0

#define motRight 1

#define potL A5

#define potR A4

 

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

//  DECLARATIONS

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

/*  VNH2SP30 pin definitions*/

int inApin[2] = {

  7, 4};  // INA: Clockwise input

int inBpin[2] = {

  8, 9}; // INB: Counter-clockwise input

int pwmpin[2] = {

  5, 6}; // PWM input

int cspin[2] = {

  2, 3}; // CS: Current sense ANALOG input

int enpin[2] = {

  0, 1}; // EN: Status of switches output (Analog pin)

int statpin = 13;

/* init position value*/

int DataValueL=125; //middle position

int DataValueR=125; //middle position

 

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

// INITIALIZATION

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

void setup()

{

  /* serial initialization */

  Serial.begin(115200);

  /* motor initialization */

  pinMode(statpin, OUTPUT);

  for (int i=0; i<2; i++)

  {

    pinMode(inApin, OUTPUT);

    pinMode(inBpin, OUTPUT);

    pinMode(pwmpin, OUTPUT);

  }

  // Initialize braked for motor

  for (int i=0; i<2; i++)

  {

    digitalWrite(inApin, LOW);

    digitalWrite(inBpin, LOW);

  }

//  testpulse;

}

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

///////////////////////////////// Main Loop ////////////////////////////////////

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

void loop()

{

 

 int sensorL,sensorR;

 

  serialData();

  sensorR = analogRead(potR)/4;

  sensorL = analogRead(potL)/4; // echelle 0-1000

/*  Serial.print(sensorL);

  Serial.print(" ; ");

  Serial.println(sensorR);

  motorGo(motRight, FW, 255);

  delay(100);

  motorOff(motRight);

  delay(1000);

*/

  motorMotion(motRight,sensorR,DataValueR);

  motorMotion(motLeft,sensorL,DataValueL);

 

}

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

// Procedure: wait for complete trame

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

void serialData()

{

  byte Data[3]={

    '0','0','0'    };

  // il faut limiter le temps pour garder le controle des moteurs

  if (Serial.available()>2){ //wait two packets

    //test if order  R or L data type

    Data[0]=Serial.read();

    if (Data[0]=='R'){ // ordre connu ?, si non, je verrai au prochain tour !

      Data[1]=Serial.read();

      Data[2]=Serial.read();

      DataValueR=NormalizeData(Data);

    }

    if (Data[0]=='L'){ // ordre connu ?, si non, je verrai au prochain tour !

      Data[1]=Serial.read();

      Data[2]=Serial.read();

      DataValueL=NormalizeData(Data);

 

    }

  }

  if (Serial.available()>16) Serial.flush();

}

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

void motorMotion(int numMot,int actualPos,int targetPos)

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

{

 

  int Tol=4;

  int difference;

  int pwm;

  int securityLow=20;

  int securityHigh=200;

  int brakeDistance=16;

  boolean move=true;

 

  // encadrements des valeurs

  if (targetPos<securityLow+brakeDistance)   targetPos=(securityLow+brakeDistance);    //software limits, but consideration speed brake.

  if (targetPos>securityHigh-brakeDistance)  targetPos=(securityHigh-brakeDistance); //software limits, but consideration speed brake.

  // calculate speed about distance

  difference=abs(targetPos-actualPos);

 

  if (difference<=Tol) pwm=0;  // too near to move

  if (difference>Tol) pwm=168;

  if (difference>50) pwm=200;

  if (difference>75) pwm=225;

  if (difference>100) pwm=255;

  // pwm=255;  //test !

  // pay attention for security for Right motor!!

  if (actualPos>securityHigh || actualPos<securityLow) move=false; //mechanicals limits

  // too near to move

  if (difference<= Tol) move=false; // too near to move   

  // en avant   (haut)

  if (actualPos<targetPos && move) {

    motorGo(numMot, FW, pwm);

    }

  // en arriere (bas)

  if (actualPos>targetPos && move) motorGo(numMot, RV, pwm);

  // ne pas bouger !

  if (move==false) motorOff(numMot);// STOP

}

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

void motorOff(int motor){

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

  digitalWrite(inApin[motor], LOW);

  digitalWrite(inBpin[motor], LOW);

  analogWrite(pwmpin[motor], 0);

}

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

void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)

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

{

  if (motor <= 1)

  {

    if (direct <=4)

    {

      // Set inA[motor]

      if (direct <=1)

        digitalWrite(inApin[motor], HIGH);

      else

        digitalWrite(inApin[motor], LOW);

 

      // Set inB[motor]

      if ((direct==0)||(direct==2))

        digitalWrite(inBpin[motor], HIGH);

      else

        digitalWrite(inBpin[motor], LOW);

 

      analogWrite(pwmpin[motor], pwm);

 

    }

  }

}

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

// testPot

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

void testPot(){

  Serial.print("PotR : ");

  Serial.print(analogRead(potR));

  Serial.print(" ; PotL : ");

  Serial.println(analogRead(potL));

  delay(250);

 

}

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

void testpulse(){

  int pw=120;

  while (true){

 

    motorGo(motLeft, FW, pw);

    delay(250);     

    motorOff(motLeft);

    delay(250);     

    motorGo(motLeft, RV, pw);

    delay(250);     

    motorOff(motLeft);   

 

    delay(500);     

 

    motorGo(motRight, FW, pw);

    delay(250);     

    motorOff(motRight);

    delay(250);     

    motorGo(motRight, RV, pw);

    delay(250);     

    motorOff(motRight);   

    Serial.println("testpulse pwm:80");   

    delay(500);

 

  }

}

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

// Function: convert Hex to Dec

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

int NormalizeData(byte x[3])

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

{

  int result;

 

  if (x[2]==13)   //only a LSB and Carrier Return

  {

    x[2]=x[1];  //move MSB to LSB

    x[1]='0';     //clear MSB

  }

  for (int i=1; i<3; i++)

  {

    if (x>47 && x<58 ){//for xA to xF

      x=x-48;

    }                     

    if (  x>64 && x<71 ){//for x0 to x9

      x=x-55;             

    }

  }

  result=(x[1]*16+x[2]);

  return result;

}

Hors ligne wallytattoo

  • Nouveau
  • *
  • Messages: 1
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #90 le: Lundi 28 Juillet 2014, 12:53:39 pm »
watcha !!
Si tu nous ponds  un tuto ou un wip qui permet de se lancer facilement , tu vas me faire perdre des heures de ma vies en construction :D

La suite !!  :-)=

Bonjour grand poste, Ce que je voulais, c'est de voir si je peux aider avec une partie de x-sim, je pourrais accrocher à ce profil de code en cours d'exécution arduno.
car pas beaucoup loentiendo que doux et je voulais voir, plutôt que ce qui est configuré.
Merci beaucoup et j'espère que votre réponse.

Hors ligne V1kt0R52

  • Pilier
  • *
  • Messages: 571
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #91 le: Lundi 28 Juillet 2014, 13:03:05 pm »
Je crois qu'il y a une coquille dans le code ;)

Citer
////////////////////////////////////////////////////////////////////////////////

// Function: convert Hex to Dec

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

int NormalizeData(byte x[3])

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

{

  int result;

 

  if (x[2]==13)   //only a LSB and Carrier Return

  {

    x[2]=x[1];  //move MSB to LSB

    x[1]='0';     //clear MSB

  }

  for (int i=1; i<3; i++)

  {

    if (x>47 && x<58 ){//for x0 to x9

      x=x-48;

    }                    

    if (  x>64 && x<71 ){//for xA to xF

      x=x-65;             

    }

  }

  result=(x[1]*16+x[2]);

  return result;

}
« Modifié: Lundi 28 Juillet 2014, 19:22:40 pm par V1kt0R52 »
Parce qu'ensemble, on est plus fort !!!
mais des fois, t'as peur...

Hors ligne RacingMat

  • Passionné
  • *
  • Messages: 181
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #92 le: Lundi 28 Juillet 2014, 17:06:14 pm »
youhou ! tu as raison V1kt0R52  ^-

le 55 n'est pas bon !... (et les commentaires non plus)
j'avais pas remarqué : merci !
c'est Jean-David qui sera content  :-X

Hors ligne V1kt0R52

  • Pilier
  • *
  • Messages: 571
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #93 le: Lundi 28 Juillet 2014, 19:16:08 pm »
De rien  ;)

Faire relire le code par quelqu'un d'autre évite de s'arracher les cheveux pendant longtemps.
C'est surement pour ça que les projets à l'IUT étaient à 2 ou 3, on perd moins de temps à chercher  ;D

N'est-ce pas Toinos ?!  :D
Parce qu'ensemble, on est plus fort !!!
mais des fois, t'as peur...

Hors ligne mimso

  • Pilier
  • *
  • Messages: 507
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #94 le: Mercredi 03 Juin 2015, 20:53:43 pm »
Salut et merci pour ce wip

Je suis surpris de voir que des moteurs d'essuis glace de voiture sont suffisamment puissance pour faire bouger l'ensemble.
Peux tu confirmer stp a l'occaz

Si c le cas, le cout de l'instalation en serait considerablement reduit, et ca serait une super bonne news :-)

Merci d'avance

Hors ligne RacingMat

  • Passionné
  • *
  • Messages: 181
    • Voir le profil
[WIP] Home Dynamic Racing Cab (HDRC)
« Réponse #95 le: Mercredi 03 Juin 2015, 21:23:14 pm »
Attention tous les moteurs d'essuie-glace ne conviennent pas !
certains sont vraiment insuffisants
-> j'ai testé les MEG de Golf 3 = 0

Les smolka sont (étaient) une exception de robustesse et de coût. Le stock se termine et ils ont augmenté à 100€ pièce. Et ils n'avaient pas besoin d'une opération de suppression de la masse (indispensable pour ne pas crâmer le pont en H Motomonster)

Si tu cherches de l'occas, recherche des MEG de monospace, de camions...