W.I.P : volant a retour de force ( arduino, Unity3d)

  • Auteur de la discussion djulio74
  • Date de début
djulio74
djulio74
Apprenti
18 Sept 2010
249
thonon (74)
  • Auteur de la discussion
  • #1
Salut Les Zamis! Cela fait une belle éternité que je n'avais pas posté ici! Mais me voici donc de retour.
Alors pour ce sujet, je plante le décor :
Cela fait pas mal de temps, et a plusieurs reprise certes, que je tente de faire quelque chose ressemblant a un jeux type simulation auto avec unity3d. Apres plusieurs remaniement, des lignes de code a n'en plus finir le constat reste toujours le même : l'implantation du modèle de Pacejka dans unity3d est opérationnel ( simulation empirique de l'adhérence des pneus) mais impossible de trouver de bon réglage en l'exploitant in-game avec une simple manette. Il me faut donc un volant! ^^

Après nombreuses recherches, il est assez difficile d'exploiter les volant du commerce ( de toute façon trop cher pour moi, de 300 a plus de 2000€ ) avec unity3d, concernant le retour de force, et puis bon, j'aime bien le Home-Made! :wink:

me voila donc parti à bricoler, et puis bon, j'aime pas faire comme tout le monde. lol. D’ailleurs je n'ai trouvé nul part sur la toile d'équivalent a mon idées. Soit cette idée est nulle, soit je suis un génie! ^^

Voila le projet :
Base : direction assistée de voiture ( 20€ en casse, démontée moi-même sur Fiat Grande Punto)
Alimentation : alim de PC récupérée ( Gratuit, modifiée délivrant 36A sous 12V )
Moteur : récupéré sur visseuse sans fil (Gratuit). après mesure sous 12V : force 7 kg/cm (0.7N.m), vitesse à vide : 9500tr/min
Encodeur : optique à quadrature ( Gratuit, récupéré sur imprimante, elle même récupéré en déchetterie). Précision : 720 - 1440 - 2160 - 2880 ppr.
contrôleur moteur : Pololu 18V25 , 6-30V, 25A continu, 60A crête ( 40€)
Capteur couple : intégré a la direction assisté.
Interface : Arduino Micro ( 20 €)
Volant : fabrication maison.

Partie mécanique :
la DA ( direction assistée) est composé d'une grande couronne et d'une vis sans fin, avec une démultiplication de 1:22.le Moteur en bout de vis est maousse costaud mais inexploitable pour moi ( pour l'instant). Moteur brushless, conso jusque 80A que je laisse de coté. remplacé par celui de la visseuse. Justement ces visseuse ont une démultiplication par engrenage planetaire pour fournir un grand couple ( 3 etage, démultiplication 1:4,375, 1:3,5 , 1:3 soit env 1:46 total), dont je ne garde que le premier de 1:4,375. cumulé au 1:22 de la DA j'ai donc un couple de ........ 67N.m!!!! J'ai bien sur testé sans la réduction planétaire, mais le cogging ( les "crans" ressenti en tournant un moteur DC du aux aimants) est trop présent, à remédier. bien que sans, le couple restant (15N.m) serait amplement suffisant. Avec, il suffit d'une tension moteur de 4V pour que le volant soit quasi impossible a tourner a la main.

Le capteur de couple, associé a sa barre de torsion ( liaison volant-crémaillère) fourni une tension analogique de 0 à 5V proportionnelle à l'effort volant.( 2.5V position de repos). je le trouve très utile car il permet une rotation du volant douce et presque sans inertie.

L'encodeur optique est situé a la place du cardan qui entraine normalement la crémaillère de direction. le disque a une résolution de 200 lpi ( ligne par pouce), soit 720 ppr ( point par révolution). Résolution donc jusque 2880 ppr ( utilisation des deux capteurs, chacun en font montant et descendant), soit une résolution de 0,125°.

l’Arduino gère les données des capteurs ( couple sur le volant, position), les envoi a Unity via liaison usb. unity gère ces données et renvoi a l’Arduino le couple a exercer en fonction de la condition de conduite. unity transmet alors au contrôleur la valeur PWM adapté ( à une fréquence sélectionnable de 3 a 100kHz)

partie Unity3d, avant de me lancé dans la modélisation complète de circuits, j'ai mis en place un système de création d'une route, automatique, aléatoire, paramétrable et infini. En gros, plus on roule, plus la route devant se génère automatiquement et s'efface derrière et inversement si on fait demi tour. En gros, si vous faites demi tour, la route ne sera pas la même que celle que vous venez de parcourir. C'est assez fun a "jouer", chaque session est une nouvelle spéciale, plus ou moins sinueuse ou vallonnée en fonction des paramètres. ^^

Alors voila ou j'en suis pour le moment, et je vous laisse quelques photos du volant :

DSC_1161.JPG

Vue d'ensemble de la partie mécanique. a gauche on aperçois le contrôleur 18V25 ( petit mais costaud) relié au moteur de visseuse. En jaune les fils du capteur de couple.


DSC_1162.JPG

Le volant fait environ 30cm, découpé dans une tôle alu de 5mm. une durite de 29mm de dia, fendu en deux est insérée tout autour, elle meme recouvert de bande de caoutchouc, un peu a la façon d'une guidoline de vélo.


DSC_1164.JPG

Le moteur lui aussi parait tout petit. mais avec sa (très) grande démultiplication, il joue pleinement son rôle


DSC_1166.JPG

le moteur, avec en noir l’étage de réduction planétaire, et juste ensuite l'entretoise pour accoupler le tout a la vis sans fin de la DA.


DSC_1167.JPG

le codeur optique d'imprimante. sur le disque transparent, la partie noir est en fait la succession de trait noir, 720 sur tout le disque. et le capteur qui va avec sur le dessus.


DSC_1169.JPG

l'alimentation de PC. En fait j'en avait quelques unes de récupérées. Me suis serivi de la plus puissante que j'avais, non modulable, avec le boitier d'une autre et de sa platine a fiche, elle modulable. une f ois tout bien soudé, ça marche nickel. l'ampoule 12V 20W sert a maintenir la stabilité de l'alimentation, qui avait tendance a se mettre en sécu a la moindre sous ou sur tension ( gros appel de courant ou ou retour de courant si le moteur tourne trop vite par rapport a la vitesse demandée)


DSC_1170.JPG

Enfin, la plaque d'essai avec l’Arduino est la connectique. en haut ( fils noir jaune vert) se relie au driver du moteur. En bas, grosse prise six fils est pour le capteur de couple. tout a droite ( qui "tombe" de la table) se relie au capteur optique. entre les deux dernier, carré noir, c’était un inter de fin de course de l'imprimante qui me sert au lancement de la fonction d’étalonnage ( remise a zéro du volant) sur l’Arduino.



Voila donc le projet ou il en est aujourd'hui. encore pas mal de réglage a faire surtout niveau unity3D, mais pour les premiers essai fait hier, c'est assez concluant. Et finalement, mes reglage de la formules de Pacejka n’étaient pas si mauvais. je ressent bien les pertes d'adhérence et les variations d'effort : augmentation au fond d'une cuvette, quand la route remonte après une descente, et la sensation de flottement dans le cas inverse ( arrivé en haut d'un "bute").

Voila, j’espère que ça en intéressera quelques uns d'entre vous.( Je savais pas ou poster, il y a de l'usinage, de l’Arduino, de l'informatique.. ^^ ) et si c'est le cas, je continuerai de poster l’évolution du projet. Et apporterai plus de précisions si nécessaire notamment du coté code.

Julien
 
Momoclic
Momoclic
Compagnon
4 Oct 2016
1 305
Intéressant travail !
Il existe des jeux et logiciels gratuits qui pourraient aussi t’aider dans ta démarche.
- Jeux : LFS Life For Speed circuits route et terre (simulation de pilotage)
- SimTools : pilotage de de simulateur
 
djulio74
djulio74
Apprenti
18 Sept 2010
249
thonon (74)
  • Auteur de la discussion
  • #3
Merci :wink:
oui j'avais deja vu ça, comme pas mal d'autre simu et interface, mais a tout prendre tout fait je perdrai le principe même de ma démarche : home made. et puis j'aime bien la programmation, les lois physiques, et la mécanique. ^^ avec un peu de temps certes, j'arriverai a mes fins. :wink:
concernant LFS, dommage qu'ils n'aient pas un peu plus poussé les graphismes, même si le coté simu a lair au top, ça limite un peu l'immersion.
 
Momoclic
Momoclic
Compagnon
4 Oct 2016
1 305
Ces logiciels ne règlent rien, le premier t'envoie les contraintes exercés sur les composants de l'automobile en fonction du profil du circuit. Ensuite à toi de les exploiter.
Simtools lui est plus orienté sur l'exploitation de simulateurs dynamique (du 2DOF au 6DOF) et ne gère rien du volant.
Si tu veux discuter avec des gens compétents dans tous ces domaines je t'invite à t'inscrire sur le site www.racingfr.net ou quelques pointures en physique, programmation, électronique, etc. trainent leur savoir dans une bonne intelligence.
 
djulio74
djulio74
Apprenti
18 Sept 2010
249
thonon (74)
  • Auteur de la discussion
  • #5
Merci, oui j'ai déjà parcouru quelques sujet sur ce forum, très instructif en effet. vais peut etre bien aller m'y faire un compte :wink:

si j'ai bien compris, le premier ( LFS) est déjà un jeux a part entière. graphisme et programmation déjà au point, prêt a jouer. Hors la base du projet était justement de faire tout ça par moi-même, d’où la nécessité pour moi de me faire un volant. Si je n'avait pas cette idée en tête justement, LFS serait en effet idéel juste pour mettre au point le volant, car si j'ai bien compris en plus, il peut communiquer avec Arduino.
 
Momoclic
Momoclic
Compagnon
4 Oct 2016
1 305
L'ancien forum est aussi consultable mais plus actif. On y retrouve les mêmes intervenants : www.racingrfr.com

L'intérêt c'est que d'utiliser pour la mise au point du volant un jeu existant cela pourra t'aider à assurer une certaine compatibilité avec les jeux.
Les bon jeux de simulation (avions et auto.) ont une interface de communication :wink:

Il y a une (ou plusieurs) approche de réalisation de volant avec Arduino sur ces forums, et aussi bien d'autre choses, va voir pour tout ça les sections "Atelier" ou les sujets "DIY" périphériques de pilotage.
 
djulio74
djulio74
Apprenti
18 Sept 2010
249
thonon (74)
  • Auteur de la discussion
  • #7
oui c'est certain que ça aiderai, si vraiment je rame trop je me tournerai sur cette solution d'optimiser le volant avec les donnée fiables d'un jeux déjà existant. :wink:
en attendant, j'ai suivi tes conseils et ai posté sur le forum la quasi copie de ce post. :wink:
 
Haut