PCSHM (Playseats, cockpits et simulateurs home-made) Index du Forum PCSHM (Playseats, cockpits et simulateurs home-made)
Discussions à propos des cockpits et simulateurs faits maison, dédiés aux jeux de courses automobiles.
 
 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Besoin d'aide pour finir mon 2DOF !
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    PCSHM (Playseats, cockpits et simulateurs home-made) Index du Forum -> Cockpits, simulateurs, addons ... -> Les projets de réalisations
Sujet précédent :: Sujet suivant  
Auteur Message
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Ven 30 Juin - 22:22 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Salut salut ! Coucou !
Pour ceux qui me connaisse j'ai déjà un topic qui date de plusieurs années mais j'en refais un pour repartir sur une bonne base yes
Voila donc la bête :






L'un va sur l'autre bien sur

Données techniques :
-> Sabertooth 2x24
-> Arduino Uno
-> Moteur smolka 24V - 16Nm
-> Potentiomètres 10K +-15% http://www.datasheetlib.com/datasheet/379472/6127v1a360_bi-technologies.htm…
-> Roues dentées 35 dents et 45 dents
-> Alimentation 24V 20A


Côté branchements :


Les SWITCH de la sabertooth 2 - 4 - 5 sur OFF /  1 - 3 - 6 sur ON

Côté config :
J'ai pris la licence SIMTOOL 2.1 ainsi que le pluging qui va bien
-> Téléchargement du pluging "Project Car" sur le site SIMTOOL https://www.xsimulator.net/community/marketplace/project-cars-plugin.34/

-> Téléchargement du code Arduino sur le site SIMTOOL (merci wannegain)
https://www.xsimulator.net/community/marketplace/arduino-code-2-dof-for-sab…

Arduino :
COM 4
Vitesse Bit par seconde : 9600
Bits de données : 8
Parité : Aucune
Bit d'arrêt : 1


SIMTOOL :

-> Validation de la licence
-> Installation du pluging "Pcars"
-> Sur Project Cars j'ai activer les MMF comme indiquer lors du patching du jeu dans SIMTOOL MANAGER


Ensuite :







Ca c'est au pif lol
Le but étant de lisser le signal pour éviter les sorties de plages ...



Après tout ça j'ai fait un repère au crayon pour repérer le "point zéro" de mes potentiomètres
Pour ceci j'ai utiliser un multimètre et mesuré la tension qui revient du fil pilote à la carte arduino (borne A0 et A1).
Je me suis approché le plus possible de 0 Volt (0.3V).

Voilà ou j'en suis :cool1:

A savoir quel est la suite ? fumeur

Doit on comme dans Xsim régler le rapport des roues dentées ?
Quel est le zéro de mes cames ? 0V sur A0 = moteur 1 en bas ?

Merci les amis !


Revenir en haut
Publicité






MessagePosté le: Ven 30 Juin - 22:22 (2017)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Sam 1 Juil - 01:09 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Donc si j'ai bien compris en parcourant les post.
Les cames sont à zéro lorsqu'elles sont à l'horizontale.
Ensuite un ajustement du code arduino, deadzone et PID me ferait stabiliser mes cames.

Je vais voir à tout ça dites moi si autre chose vous vient en voyant ce que j'ai déjà fait


Revenir en haut
willaupuis
Concepteur
Concepteur

Hors ligne

Inscrit le: 10 Mai 2013
Messages: 2 655
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: belgique
Régions (France): Autre
Département (France): Autre
Ville: leuze en hainaut
21/11/1972 Masculin Scorpion (23oct-21nov)
Point(s): 16 068
Moyenne de points: 6,05

MessagePosté le: Sam 1 Juil - 06:26 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

je vais reprendre cette photo :





le smoothing va lisser le signal c'est intéressant pour un jeu comme dirt rally qui donne trop d'information style mini vibration comme ci on roulait sur du gravier, mais dépasser 7 ou 8 est déjà pas mal,, alors 15 ça me paraît vraiment beaucoup. pour un jeu comme project car je ne pense que tu en ai besoin


deadzone et boundary tu ne dois pas y toucher pour un deux dof, laisse la valeur de 0
_________________
tuto pour les nouveaux ou débutant !


Revenir en haut
willaupuis
Concepteur
Concepteur

Hors ligne

Inscrit le: 10 Mai 2013
Messages: 2 655
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: belgique
Régions (France): Autre
Département (France): Autre
Ville: leuze en hainaut
21/11/1972 Masculin Scorpion (23oct-21nov)
Point(s): 16 068
Moyenne de points: 6,05

MessagePosté le: Sam 1 Juil - 06:31 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

yoader a écrit:
Donc si j'ai bien compris en parcourant les post.
Les cames sont à zéro lorsqu'elles sont à l'horizontale.
Ensuite un ajustement du code arduino, deadzone et PID me ferait stabiliser mes cames.

Je vais voir à tout ça dites moi si autre chose vous vient en voyant ce que j'ai déjà fait




oui a zéro les cames sont a l'horizontale,
tes cames vibrent? que tu parlent d'ajuster le code?
_________________
tuto pour les nouveaux ou débutant !


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Sam 1 Juil - 11:20 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Salut, salut willaupuis !

Okey j'ai réglé comme tu m'as dis en mettant la valeur smoothing à 8
Le reste est à zéro

Si je site wannegain lors de mon précédent topic
http://pcshm-simulateurs-homemade.clicforum.com/t425-Cockpit-de-Yoyo.htm?st…
"Pour diminuer les vibrations, il faut augmenter les variables ReadAnalog (met 8) et DeadZone (met 9). Avec du poids les vibrations sont clairement diminuées.
En valeurs min (FeedbackMin) tu dois mettre 143. En valeur max (FeedbackMax) c'est 880.
Par contre il faut modifier une valeur. GP_select tu mets à  0 ou alors tu utilises un potentiomètre pour gérer la puissance de ton simu."

Mais j'ai toujours cette question :
Ou mettre le rapport de mes roues dentées ?

double K_motor_1        = 1;
double proportional1            = 4.200;        //initial value
double integral1        = 0.400;
double derivative1        = 0.400;
double K_motor_2        = 1;
double proportional2            = 4.200;
double integral2        = 0.400;
double derivative2        = 0.400;

Ca doit etre ici mais je ne suis pas sur Rolling Eyes
Réédit : Ha si c'est comme pour le PID de Xsim !
Nouvelles valeurs :
double K_motor_1        = 1;
double proportional1            = 1.300;        //initial value
double integral1        = 0.600;
double derivative1        = 0.600;
double K_motor_2        = 1;
double proportional2            = 1.300;
double integral2        = 0.600;
double derivative2        = 0.600;

Edit :


Pour le moment j'ai modifié
ReadAnalog (met 8) DeadZone (met 9).
En valeurs min (FeedbackMin) 143 et max (FeedbackMax) c'est 880.

Je n'ai pas trouvé :
GP_select


Revenir en haut
willaupuis
Concepteur
Concepteur

Hors ligne

Inscrit le: 10 Mai 2013
Messages: 2 655
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: belgique
Régions (France): Autre
Département (France): Autre
Ville: leuze en hainaut
21/11/1972 Masculin Scorpion (23oct-21nov)
Point(s): 16 068
Moyenne de points: 6,05

MessagePosté le: Sam 1 Juil - 17:40 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Tu connais ton rapport de pignon,? On modifie pas les valeurs au hasard ça se calcul.


Tu m'as pas répondu quand je t'ai demandait que tes cames vibrent? Essaie d être précis un grognement ou elle monte et descende non stop?
_________________
tuto pour les nouveaux ou débutant !


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Dim 2 Juil - 11:27 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Tu devrais plutôt prendre la dernière version de mon code qui se trouve dans ma signature...

Ensuite tu devrais éviter d'utiliser les filtres car ça fausse complètement les effets. Il vaut mieux essayer d'adapter les réglages plutôt que d'ajouter des filtres...
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Lun 3 Juil - 11:25 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Salut !

Willaupuis, j'ai calculé mon rapport de pignon
45/35 = 1.286
J'ai donc remplacé :
double proportional1            = 4.200;
par
double proportional1            = 1.300;

Pour répondre à ta question, mes cames grognent et tournent toujours dans le même sens que leur départ. Plus ou moins rapidement

Okey Wannegain j'ai donc télécharger et téléversé :
XPID_SimTools1_4_2x25
Ainsi que l'interface preset.

Ca donne ça avec les valeurs PID


on peu voir que GP_select est à zéro
J'ai aussi mit :
int target1 = 369;
int target2 = 369;

Puisque -> (880-143)/2=368.5
pour mon horizontal

Pour SIMTOOL :


J'ai viré les filtres


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Lun 3 Juil - 16:47 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Il me semble que j'ai partagé la version 1.6 pour la Sabertooth 2x25 et l'arduino uno.. 

Ton rapport de dents ne doit pas avoir d'impact sur le pid, je ne comprends pas pourquoi tu l'as modifié ! 


Le rapport de dents joue sur les valeurs min et max du potentiomètre 
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mar 4 Juil - 00:18 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Ha désolé je voyais ça logique comme ça mais tant mieux si tu me corrige ...
Moi qui pensais bien faire Rolling Eyes

J'ai donc télécharger et téléverser la version 1.6 :
XPID Simtools 1.6 4 motors 2x25 Uno
Sans rien modifier en espérant que ce soit le bon...

Et j'ai prit ton préset :
XPID Wanegain 6 motors Micro Interface Preset


Dis moi avant que je fasse une bétise de plus

Mon pignon moteur fait 45 dents
Mon pignon potentiomètre fait 35 dents


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mar 4 Juil - 11:09 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Il ne faut pas prendre le preset pour Micro si tu as un Uno et une Sabertooth 2x25 c'est pas les bons preset :

Code:
X1<Axis>CX2<Axis>CX3<Axis>CX4<Axis>C
avec les 1a 2a, etc.. je ne sais pas pourquoi ils n'apparaissent pas là.

9600 bauds 8N1

Alors pour les roues dentées :

Si tu veux utiliser les moteurs sur 180° les potentiomètres vont tourner sur 180*45/35 = 231°
Si tu veux utiliser les moteurs sur 120° les potentiomètres vont tourner sur 120*45/35 = 154° (un peu faible comme plage)

Pour 231° si les potentiomètres sont sur 320° de base alors tu as une plage de 738 (231*1023/320) valeurs, soit les valeurs min et max : 142 et 880
Pour 154°, plage de 492, soit min et max : 265 et 757

Donc faut modifier dans le code pour tous les moteurs :
Code:

int motors[4][13] = { {A0, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 1

_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mar 4 Juil - 11:29 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Merci encore !
J'ai donc pour l'arduino
int motors[4][13] = { {A0, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 1
                             {A1, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 2
                             {A2, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 3
                             {A3, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0}}; //motor 4

Pour simtool
X1<Axis1a>CX2<Axis2a>CX3<Axis3a>CX4<Axis4a>C



Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mar 4 Juil - 11:41 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Impecable Wannegain j'ai testé et mes moteurs bougent parfaitement !!!

Je suis trop content

J'ai juste des vibrations comme si je passais sur un chemin plein de pierre, je n'en suis plus très loin !

Edit :
J'ai mis un fil pour isoler les tresses de mes potentiomètres

Il part des tresses jusqu'à la terre de mon alim

Toujours des vibrations mur


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mar 4 Juil - 14:25 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Pour les vibrations je me demande si ça ne vient pas des moteurs, c'est bien les Smolka que tu as ?
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mar 4 Juil - 14:27 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Oui des smolkas

Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mar 4 Juil - 14:29 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Alors regarde ce tuto : http://pcshm-simulateurs-homemade.clicforum.com/t737-Enlever-la-masse-des-S…
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mar 4 Juil - 23:59 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Yo !

J'ai exécuté le tuto, je n'ai plus d'arcs entre ma came et un écrou sur mon chassis

J'ai toujours autant de vibrations
Mais ce soir j'ai l'impression qu'il fait n'importe quoi, j'ai retéléversé le programme arduino et redémarré mon pc rien y fait Crying or Very sad


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mer 5 Juil - 00:05 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

T'as mis quelle version cette fois ci ? T'as modifié quelque chose dans le code ? 
Fais voir à nouveau ta config Simtools.. 


Tu veux dire quoi par il fait n'importe quoi ? 
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mer 5 Juil - 00:07 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Sur simtool j'ai ça
X1<Axis1a>CX2<Axis2a>CX3<Axis3a>CX4<Axis4a>C

Ce n'est pas CX1 au début ?



Mon code arduino c'est celui-ci

XPID_SimTools1_6_4motors_2x25_serial_Uno

La ils tournent et vibrent juste en mettant TURN ON
Si des fois ils ce "stabilisent" durant 10 secondes (avec beaucoup de vibrations), ils se remettent à tourner ensuite.
Lors du TURN OFF les cames ne s'emballent. Elles s'arrêtent des que je débranche l'arduino.


Dernière édition par yoader le Mer 5 Juil - 01:35 (2017); édité 6 fois
Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mer 5 Juil - 00:08 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

#include <SabertoothSimplified.h>
#include <SoftwareSerial.h>

//Some speed test switches for testers Wink
#define FASTADC  1 //Hack to speed up the arduino analogue read function, comment out with // to disable this hack

// defines for setting and clearing register bits
#ifndef cbi
    #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
    #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

#define LOWBYTE(v)   ((unsigned char) (v))                //Read
#define HIGHBYTE(v)  ((unsigned char) (((unsigned int) (v)) >> 8))
#define BYTELOW(v)   (*(((unsigned char *) (&v) + 1)))            //Write
#define BYTEHIGH(v)  (*((unsigned char *) (&v)))

int DeadZone = 9; //increase this value to reduce vibrations of motors
int ReadAnalog = 6;

int EmergencyPin = 13;   // Emergency switch (GND)

//motors array : Pin, currentAnalog, target, Minpot, MaxPot, pot deadzone, standby value, P, I, D, integrated error, last error, Power
int motors[4][13] = { {A0, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 1
                      {A1, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 2
                      {A2, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0},  //motor 3
                      {A3, 0, 0, 142, 880, 0, 512, 100, 0, 100, 0, 0, 0}}; //motor 4

int GlobalPowerPin    = A5;  //use a potentiometer to define the power of the motion simulator on pin A11 (12)
int GP_select         = 0; //1:use potentiometer 0:always 100%
double GlobalPower    = 1.00; //100%

int buffer=0;
int buffercount=-1;
int commandbuffer[5]={0};

int disable  = 1; //Motor stop flag

SoftwareSerial SWSerial1(NOT_A_PIN, 8); //Pin 2 utilisé pour communiquer avec la Sabertooth
SoftwareSerial SWSerial2(NOT_A_PIN, 10); //Pin 3 utilisé pour communiquer avec la Sabertooth

void setup()
{
  Serial.begin(9600);

  SWSerial1.begin(38400); //boutons 1 et 2 OFF
  SWSerial2.begin(38400); //boutons 1 et 2 OFF
    
  ST_stop();
 
  disable=1;

  pinMode(EmergencyPin, INPUT_PULLUP);


  #if FASTADC
    // set analogue prescale to 16
    sbi(ADCSRA,ADPS2) ;
    cbi(ADCSRA,ADPS1) ;
    cbi(ADCSRA,ADPS0) ;
  #endif
}

byte ST_motor (byte motor, int power)
{
  byte command, magnitude;
  int power_ = constrain(power, -127, 127);
  magnitude = abs(power_) >> 1;
  magnitude = constrain(magnitude, 1, 63);

  if (motor == 1 || motor == 3)
  {
    // command = power_ < 0 ? 64 - magnitude : 64 + magnitude;
    if ( power_ > 0 )       command = 64 + magnitude;
    else  if ( power_ < 0 ) command = 64 - magnitude;
    else                    command = 64;
  }
 
  else if (motor == 2 || motor == 4)
  {
    // command = power_ < 0 ? 191 - magnitude : 192 + magnitude;
    if ( power_ > 0 )       command = 191 + magnitude;
    else  if ( power_ < 0 ) command = 191 - magnitude;
    else                    command = 191;
  }

  command = constrain(command, 1, 255);
  if (motor == 1 || motor == 2)  SWSerial1.write(command);
  if (motor == 3 || motor == 4)  SWSerial2.write(command);
 
  return command;
}

void ST_stop()
{
  SWSerial1.write((uint8_t)0);
  SWSerial2.write((uint8_t)0);
}

void FeedbackPotWorker()
{
  for(int z=0;z<4;z++)
  {
    motors[z][1]=0; //set to 0 all current analog
  }
  
  for(int i=0;i<ReadAnalog;i++)
  {
    for(int z=0;z<4;z++)
    {
      motors[z][1] += analogRead(motors[z][0]);
    }
  }

  for(int z=0;z<4;z++)
  {
    motors[z][1] /= ReadAnalog;
  } 
}

void SerialWorker()
{
  while(Serial.available())
  {
    if(buffercount==-1)
    {
      buffer = Serial.read();
      if(buffer != 'X')
      {
        buffercount=-1;
      }
      else
      {
        buffercount=0;
      }
    }
    else
    {
      buffer = Serial.read();
      commandbuffer[buffercount]=buffer;
      buffercount++;
      if(buffercount > 3)
      {
        if(commandbuffer[3]=='C')
        {
          ParseCommand();
        }
        buffercount=-1;
      }
    }
  }
}

void ParseCommand()
{
  int diff;
  int i;
  bool commande = false;

  switch (commandbuffer[0])
  {
    case '1':
      i = 0;
      commande = true;
      break;
     
    case '2':
      i = 1;
      commande = true;
      break;
     
    case '3':
      i = 2;
      commande = true;
      break;
     
    case '4':
      i = 3;
      commande = true;
      break;
           
    case 'E':
      commande = false;
      unsigned long start;
      unsigned long time;
      start=millis();
 
      for(int z=0;z<4;z++)
      {
        motors[z][2]=motors[z][6]; //reset to standby position
      }
   
      time = millis();
   
      while(time < (start + 1500)) //1.5s
      {
        FeedbackPotWorker();
        CalculatePID();
        SetPWM();
        time=millis();
      }

      ST_stop();

      disable=1;
      break;

    default:
      commande = false;
      return;
      break;
  }

  if (commande)
  {
    commande = false;
    motors[i][2]=(commandbuffer[1]*256)+commandbuffer[2]; //target
    diff = constrain((GlobalPower * (motors[i][2] - 512)), -511, 511) + 512;
    motors[i][2]=map(diff,0,1023,motors[i][3],motors[i][4]); //ajustement en fonction des min et max
    disable=0;
  }
}

int updateMotorPid(int targetPosition, int currentPosition, int numMot)  
{
  float error = (float)targetPosition - (float)currentPosition;
  motors[numMot][10] += error;
  motors[numMot][11] = error;
  float pTerm_motor = ((float)motors[numMot][7] * error) / 100.0;
  float iTerm_motor = ((float)motors[numMot][8] * constrain(motors[numMot][10], -100, 100)) / 100.0;
  float dTerm_motor = ((float)motors[numMot][9] * (error - motors[numMot][11])) / 100.0;

  return constrain((pTerm_motor + iTerm_motor + dTerm_motor)/2, -127, 127);
}

void CalculatePID()
{
  for (int z=0;z<4;z++)
  {
    motors[z][12] = updateMotorPid(motors[z][2],motors[z][1], z);
  }
}

void SetPWM()
{
  for(int z=0;z<4;z++)
  {
    if (abs(motors[z][2] - motors[z][1]) <= (DeadZone + motors[z][5]))
    {
      motors[z][12] = 0;
    }
  }

  for(int z=0;z<4;z++)
  {
    ST_motor(z+1, motors[z][12]);
  }
}

void loop()
{
  //Program loop
  while (1==1) //Important hack: Use this own real time loop code without arduino framework delays
  {
    FeedbackPotWorker();
    if (GP_select == 1)
    {
      GlobalPower = double(analogRead(GlobalPowerPin)) / 512.0 ;
    }
    else GlobalPower = 1.00;
   
    if (digitalRead(EmergencyPin) == LOW)
    {
      for (int z=0;z<4;z++)
      {
        motors[z][2] = motors[z][6]; //target = stdby
      }
    }
   
    else  SerialWorker();
   
    CalculatePID();
    if(disable==0 || digitalRead(EmergencyPin) == LOW)
    {
      SetPWM();
    }
  }
}


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mer 5 Juil - 09:54 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Est-ce que lorsque tu bouges les curseurs les moteurs suivent les mouvements quand même ? Vérifie aussi ton câblage des potentiomètres, que c'est le bon pour chaque moteur 
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Mer 5 Juil - 11:18 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Donc ce matin je n'ai pas les mêmes choses qu'hier soir grrr

J'ai vérifier les câblages des potentiomètres
J'ai refais une soudure sur le potentiomètre 2
J'ai remplacé mon fil 8 arduino -> S1 sabertooth par un neuf
Et j'ai rajouter un fil du 0V potentiomètre au GND de mon arduino



Les deux moteurs réagissent parfaitement lors de mon Turn ON ainsi qu'à mes curseurs dans OUTPUT AXIS
Rien ne s'emballe
Lors du TURN OFF tout s'arrête

Donc niquel mais toujours des vibrations
C'est bizarre d'avoir des parasites puisque mes potentiomètres sont parfaitement isolés
J'avais déjà travaillé dessus
Leur support sur le moteur est en plexi
Et le câble tressé est raccordé à la terre de mon alim
D'ailleur aucun câble de puissance ne passe à côté

Je suis quand même content d'avoir quelque chose de positif yes


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mer 5 Juil - 11:55 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Le problème vient des moteurs je pense. Tu peux éventuellement augmenter readanalog dans le code pour passer à 8. Tu peux aussi augmenter deadzone mais je ne te conseille pas trop haut.. 


Le pid doit aussi être adapté pour les smolka, remplace dans le tableau où tu vois 100, 0, 100 par 400, 20, 20 à voir si c'est mieux 
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
Aloha
Habitué
Habitué

Hors ligne

Inscrit le: 19 Sep 2016
Messages: 244
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Bourgogne
Département (France): 21- Côte-d'Or
23/02/1985 Masculin
Point(s): 455
Moyenne de points: 1,86

MessagePosté le: Mer 5 Juil - 13:05 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Wanegain a écrit:
augmenter deadzone


Le pid doit aussi être adapté pour les smolka, remplace dans le tableau où tu vois 100, 0, 100 par 400, 20, 20 à voir si c'est mieux 


:+1 2:  bien qu avec ce pid, les moteurs devraient être plus nerveux.


Je pense qu il ne s agit pas d un problème de parasite, mais plutôt de régulation : le trop faible rapport de réduction entre le moteur et le potar fait que tu perds "en definition". Ca se comporte un peu plus en tout ou rien.
_________________
Rien ne se crée, rien ne se perd. Tout se transforme!

Une idée en apporte une autre.


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Mer 5 Juil - 13:40 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Tu peux augmenter le d pour limiter les vibrations 
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Jeu 6 Juil - 11:49 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

Salut salut ! Ce matin j'ai essayé et j'ai opté pour
100, 0, 250
Deadzone 11
ReadAnalog 9

J'ai toujours des vibrations mais j'ai envie d'essayer un jeu je te tien au jus Okay


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Jeu 6 Juil - 12:37 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

J'ai fait mes captures min/max sur Project cars.
Lors d'une acceleration trop franche mes cames s'emballent.
Pareil pour un freinage.


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Jeu 6 Juil - 14:52 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

250 c'est peut être un peu trop comme D car tu risques d'avoir des dépassement de consigne...

Tu veux dire quoi par les moteurs s'emballent ?
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
yoader
Habitué
Habitué

Hors ligne

Inscrit le: 19 Nov 2014
Messages: 78
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: France
Régions (France): Pays-de-la-Loire
Département (France): 72- Sarthe
Ville: Vaas
26/07/1993 Masculin Lion (24juil-23aoû)
Point(s): 285
Moyenne de points: 3,65

MessagePosté le: Ven 7 Juil - 00:47 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

C'est peut être pour ça qu'ils s'emballent
Ben ils font leur mouvements et d'un coup arrêtent de vibrer. Continuant encore leur mouvement à une allure très lente.
Après quelques secondes ils reprennent leur vibrations et ce remettent à un emplacement quelconque.

Ca doit être le dépassement de consigne dont tu parles.
C'est vrai que je n'ai regardé que les vibrations.
D'ailleurs ces vibrations, tu penses que c'est due au potars ou au rapport des roues dentées ?


Revenir en haut
Wanegain
Administrateur
Administrateur

Hors ligne

Inscrit le: 08 Mai 2012
Messages: 14 531
Dégagement de responsabilité: J'accepte
Lecture et respect de la charte: J'accepte
Pays: Belgique
Régions (France): Autre
Département (France): Autre
Ville: Bruxelles
17/04/1982 Masculin Bélier (21mar-19avr)
Point(s): 153 542
Moyenne de points: 10,57

MessagePosté le: Ven 7 Juil - 09:46 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF ! Répondre en citant

C'est pas les potars, c'est soit le rapport qui n'est pas adapté et tu perds en précision, soit des parasites dans les moteurs 
_________________
Profils Converter et Codes Arduino
Tuto : simulateur pour moins de 450€
KIT pour créer son simulateur 2DOF


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 17:10 (2017)    Sujet du message: Besoin d'aide pour finir mon 2DOF !

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    PCSHM (Playseats, cockpits et simulateurs home-made) Index du Forum -> Cockpits, simulateurs, addons ... -> Les projets de réalisations Toutes les heures sont au format GMT + 2 Heures
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | creer un forum gratuit | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2017 phpBB Group
Traduction par : phpBB-fr.com powered by ArgenBLUE free template