1. Do not share user accounts! Any account that is shared by another person will be blocked and closed. This means: we will close not only the account that is shared, but also the main account of the user who uses another person's account. We have the ability to detect account sharing, so please do not try to cheat the system. This action will take place on 04/18/2023. Read all forum rules.
    Dismiss Notice
  2. For downloading SimTools plugins you need a Download Package. Get it with virtual coins that you receive for forum activity or Buy Download Package - We have a zero Spam tolerance so read our forum rules first.

    Buy Now a Download Plan!
  3. Do not try to cheat our system and do not post an unnecessary amount of useless posts only to earn credits here. We have a zero spam tolerance policy and this will cause a ban of your user account. Otherwise we wish you a pleasant stay here! Read the forum rules
  4. We have a few rules which you need to read and accept before posting anything here! Following these rules will keep the forum clean and your stay pleasant. Do not follow these rules can lead to permanent exclusion from this website: Read the forum rules.
    Are you a company? Read our company rules

My project (guide me)

Discussion in 'DIY Motion Simulator Projects' started by CalSim, Aug 2, 2014.

?

Best set to "heave" a total of 300kg??

  1. Stepper motor ie. NEMA 23-34 (x6)

    5 vote(s)
    35.7%
  2. Huge homemade actuator (x4, x6??)

    8 vote(s)
    57.1%
  3. Worm DC motor > 50W ( x6)

    3 vote(s)
    21.4%
Multiple votes are allowed.
  1. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    Hi everybody:

    My name is Miguel.
    This is my first message here, not my last. I'm making a nice project and I want to show you what I have, what i want to have, and see my posibilities.

    I'm building a motion simulator, for RACERS.(posibility of using flying simulators) I want some more that a 2DOF. At least 4DOF would be great. My basic condition is that the simulator has to be "floating", suspended by the actuators. I dont need/want horizontal movement, right now, just inclinations to feel some little G's and heave.

    I have no photos because nothing is built yet, I just have the Arduino UNO, 4 servos, 1 6vbatt, and a lot of pins and cables.

    First, I want to build a little plattform moving, with servos, using PWM signals to move them. When I reach a working code able to control up to 6 servos(or 4), and a working small plattform, I will start to build a big one.

    This "big one" is going to be a 3 monitor rig, so it has to be STRONG. About 150kg (by excess) without pilot, and a max pilot weight of 150kg. about 300 kg of lifting power ( will be less but ok)

    The powering: I'm thinking of 3 things:


    - "Real" servos: up to 6 motors ( steppers ) like NEMA 34 or similar. To achieve something like:



    - Homemade linear actuators, to make something like the HEXATECH simulator.
    -Gear worm DC motor like this one

    http://es.rs-online.com/web/p/motores-dc-con-caja-reductora/0718391/

    If I use the DC motor, I want to use a device like the JRK or a H-bridge able to power a huge motor.


    For all options, is it possible to use a device that changes PWM signals to control steppers (easilly configurable)?????

    Well so far, I have this code, which fails:

    It controls 2 servos, first servo works great, but when I move the "slider" over 45% of the axis1, servo2 in axis2 becomes crazy and goes to its top ( ~180 )


    //********************************************************************************************
    // RC Model Servo
    // Original code By EAOROBBIE (Robert Lindsay)
    // Completely mangled by aarondc
    // For free use for Sim Tool Motion Software
    //********************************************************************************************
    #include <Servo.h>
    //#define DEBUG 1 // comment out this line to remove debuggin Serial.print lines
    const int kActuatorCount = 2; // how many Actuators we are handling

    // the letters ("names") sent from Sim Tools to identify each actuator
    // NB: the order of the letters here determines the order of the remaining constants kPins and kActuatorScale
    const char kActuatorName[kActuatorCount] = { 'R', 'L' };
    const int kPins[kActuatorCount] = {3, 5}; // pins to which the Actuators are attached
    const int kActuatorScale[kActuatorCount][2] = { { 0, 179 } , // Right Actuator scaling
    { 179, 0 } // Left side Actuator scaling
    };
    const char kEOL = '~'; // End of Line - the delimiter for our acutator values
    const int kMaxCharCount = 3; // some insurance...
    Servo actuatorSet[kActuatorCount]; // our array of Actuators
    int actuatorPosition[kActuatorCount] = {90, 90}; // current Actuator positions, initialised to 90
    int currentActuator; // keep track of the current Actuator being read in from serial port
    int valueCharCount = 0; // how many value characters have we read (must be less than kMaxCharCount!!

    // set up some states for our state machine
    // psReadActuator = next character from serial port tells us the Actuator
    // psReadValue = next 3 characters from serial port tells us the value
    enum TPortState { psReadActuator, psReadValue };
    TPortState currentState = psReadActuator;

    void setup()
    {
    // attach the Actuators to the pins
    for (int i = 0; i < kActuatorCount; i++)
    actuatorSet.attach(kPins);

    // initialise actuator position
    for (int i = 0; i < kActuatorCount; i++)
    updateActuator(i);

    Serial.begin(115200); // opens serial port at a baud rate of 9600
    }

    void loop()
    {

    }

    // this code only runs when we have serial data available. ie (Serial.available() > 0).
    void serialEvent() {
    char tmpChar;
    int tmpValue;

    while (Serial.available()) {
    // if we're waiting for a Actuator name, grab it here
    if (currentState == psReadActuator) {
    tmpChar = Serial.read();
    // look for our actuator in the array of actuator names we set up
    #ifdef DEBUG
    Serial.print("read in ");
    Serial.println(tmpChar);
    #endif
    for (int i = 0; i < kActuatorCount; i++) {
    if (tmpChar == kActuatorName) {
    #ifdef DEBUG
    Serial.print("which is actuator ");
    Serial.println(i);
    #endif
    currentActuator = i; // remember which actuator we found
    currentState = psReadValue; // start looking for the Actuator position
    actuatorPosition[currentActuator] = 0; // initialise the new position
    valueCharCount = 0; // initialise number of value chars read in
    break;
    }
    }
    }

    // if we're ready to read in the current Actuator's position data
    if (currentState == psReadValue) {
    while ((valueCharCount < kMaxCharCount) && Serial.available()) {
    tmpValue = Serial.read();
    if (tmpValue != kEOL) {
    tmpValue = tmpValue - 48;
    if ((tmpValue < 0) || (tmpValue > 9)) tmpValue = 0;
    actuatorPosition[currentActuator] = actuatorPosition[currentActuator] * 10 + tmpValue;
    valueCharCount++;
    }
    else break;
    }

    // if we've read the value delimiter, update the Actuator and start looking for the next Actuator name
    if (tmpValue == kEOL || valueCharCount == kMaxCharCount) {
    #ifdef DEBUG
    Serial.print("read in ");
    Serial.println(actuatorPosition[currentActuator]);
    #endif
    // scale the new position so the value is between 0 and 179
    actuatorPosition[currentActuator] = map(actuatorPosition[currentActuator], 0, 255, kActuatorScale[currentActuator][0], kActuatorScale[currentActuator][1]);
    #ifdef DEBUG
    Serial.print("scaled to ");
    Serial.println(actuatorPosition[currentActuator]);
    #endif
    updateActuator(currentActuator);
    currentState = psReadActuator;
    }
    }
    }
    }


    // write the current Actuator position to the passed in Actuator
    void updateActuator(int thisActuator) {
    actuatorSet[thisActuator].write(actuatorPosition[thisActuator]);
    }



    This code works with the exception i said. I can easilly add servos, but when 1 servo goes over 45% THE NEXT servo goes crazy.

    THIS is the same code, with 4 servos, translated into spanish to let me see easier what it is, because i'm chemist not a programmer ;) Servo number 4 on pin 9 isnt working at all

    //********************************************************************************************
    // RC Model Servo
    // Original code By EAOROBBIE (Robert Lindsay)
    // Completely mangled by aarondc
    // For free use for Sim Tool Motion Software
    //********************************************************************************************
    #include <Servo.h>
    //#define DEBUG 1 // comment out this line to remove debuggin Serial.print lines
    const int ContadorActuadores = 4; // Cuantos actuadores estan funcionando

    // the letters ("names") sent from Sim Tools to identify each actuator
    // NB: the order of the letters here determines the order of the remaining constants kPins and kActuatorScale
    const char NombreActuador[ContadorActuadores] = { 'R', 'P', 'H', 'Y' };
    const int Pines[ContadorActuadores] = {3, 5, 6, 9}; // pines donde estan los actuadores pinchados
    const int EscalaActuador[ContadorActuadores][4] = { { 0, 179 } , // Escalado pin señal R
    { 0, 179 } , // Escalado pin señal P
    { 0, 179 } , // Escalado pin señal H
    { 0, 179 } // Escalado pin señal Y
    };
    const char FindeLinea = '~'; // Fin de linea - Limitador de valores de actuador
    const int kMaxCharCount = 3; // some insurance...
    Servo SetActuador[ContadorActuadores]; // Grupo de actuadores
    int PosicionActuador[ContadorActuadores] = {90, 90, 90, 90}; // posiciones actuales de actuadores, inicializados a 90
    int currentActuator; // sigue el valor del actuador segun el serial
    int valueCharCount = 0; // cuantos valores leemos, debe ser menor a kMaxCharCount!!

    // set up some states for our state machine
    // psReadActuator = next character from serial port tells us the Actuator
    // psReadValue = next 3 characters from serial port tells us the value
    enum TPortState { psReadActuator, psReadValue };
    TPortState currentState = psReadActuator;

    void setup()
    {
    // attach the Actuators to the pins
    for (int i = 0; i < ContadorActuadores; i++)
    SetActuador.attach(Pines);

    // initialise actuator position
    for (int i = 0; i < ContadorActuadores; i++)
    updateActuator(i);

    Serial.begin(115200); // abre el puerto a 115200 baudios
    }

    void loop()
    {

    }

    // this code only runs when we have serial data available. ie (Serial.available() > 0).
    void serialEvent() {
    char tmpChar;
    int tmpValue;

    while (Serial.available()) {
    // if we're waiting for a Actuator name, grab it here
    if (currentState == psReadActuator) {
    tmpChar = Serial.read();
    // look for our actuator in the array of actuator names we set up
    #ifdef DEBUG
    Serial.print("read in ");
    Serial.println(tmpChar);
    #endif
    for (int i = 0; i < ContadorActuadores; i++) {
    if (tmpChar == NombreActuador) {
    #ifdef DEBUG
    Serial.print("which is actuator ");
    Serial.println(i);
    #endif
    currentActuator = i; // remember which actuator we found
    currentState = psReadValue; // start looking for the Actuator position
    PosicionActuador[currentActuator] = 0; // initialise the new position
    valueCharCount = 0; // initialise number of value chars read in
    break;
    }
    }
    }

    // if we're ready to read in the current Actuator's position data
    if (currentState == psReadValue) {
    while ((valueCharCount < kMaxCharCount) && Serial.available()) {
    tmpValue = Serial.read();
    if (tmpValue != FindeLinea) {
    tmpValue = tmpValue - 48;
    if ((tmpValue < 0) || (tmpValue > 9)) tmpValue = 0;
    PosicionActuador[currentActuator] = PosicionActuador[currentActuator] * 10 + tmpValue;
    valueCharCount++;
    }
    else break;
    }

    // if we've read the value delimiter, update the Actuator and start looking for the next Actuator name
    if (tmpValue == FindeLinea || valueCharCount == kMaxCharCount) {
    #ifdef DEBUG
    Serial.print("read in ");
    Serial.println(PosicionActuador[currentActuator]);
    #endif
    // scale the new position so the value is between 0 and 179
    PosicionActuador[currentActuator] = map(PosicionActuador[currentActuator], 0, 255, EscalaActuador[currentActuator][0], EscalaActuador[currentActuator][1]);
    #ifdef DEBUG
    Serial.print("scaled to ");
    Serial.println(PosicionActuador[currentActuator]);
    #endif
    updateActuator(currentActuator);
    currentState = psReadActuator;
    }
    }
    }
    }


    // write the current Actuator position to the passed in Actuator
    void updateActuator(int thisActuator) {
    SetActuador[thisActuator].write(PosicionActuador[thisActuator]);
    }

    THIS ONE is my own compilation took me 1 week to write it ( note i have 0 programming idea, ZERO) I've reached it from 3 or 4 codes i've seen over there, It seems to be ultraBasic.
    Its problem: only works on positive values, I mean, on the right side of the "axis output test". From center to left, servo goes crazy.

    #include <Servo.h>

    Servo myservo1;
    int grados;

    char kind_of_data;


    void setup(){


    myservo1.attach(3);
    myservo1.write(90);
    Serial.begin(115200);

    }



    void loop()
    {
    //****************************** READ DATA FROM SERIAL ******************************
    while(Serial.available() > 0)
    {

    kind_of_data = Serial.read();
    if (kind_of_data == 'R' ) {
    Read_Roll(kind_of_data);
    }
    }
    }


    //****************************** READ DATA FROM SERIAL END ******************************


    void Read_Roll(char Kind_of_data){
    delay(1);
    int Roll100 = Serial.read()- '0';
    delay(1);
    int Roll10 = Serial.read()- '0';
    delay(1);
    int Roll1 = Serial.read()- '0';

    int Roll = 100*Roll100 + 10*Roll10 + Roll1;
    if (Kind_of_data == 'R') {
    grados = map(Roll, 0, 255, 0, 179);
    }
    if (Kind_of_data == 'R') {
    myservo1.write(grados);
    }
    }

    I need a code that allows me to control without problems of mapping ( i think that is whats happening now) up to 6 servos, or 4, with a total travel of 180º Assigning a letter to each axis like the "kind_of_data == R " //R for roll, P for pitch, etcetera

    I would be so thankful if you help me to reach my objetives.

    Excuse my engligh, I am from spain.

    WOWW!!!! I forgot. My budget is at about 5.000 euros for a complete set (including TV's, PC and backet seat)

    About 3.000 only for motors, drivers, AC's and the cheapest, the structure.

    I am very exited about this project, will take most of my time this year. Iwant to build a proffesional, maybe commercial set.

    PD: I'm ordering 6 small servos from hobbyking, which one would you recommend me for the small platform?

    THANKS A LOT!!!
  2. SeatTime

    SeatTime Well-Known Member

    Joined:
    Dec 27, 2013
    Messages:
    2,574
    Occupation:
    Retired
    Location:
    Brisbane Australia
    Balance:
    28,370Coins
    Ratings:
    +2,844 / 38 / -0
    My Motion Simulator:
    AC motor, Motion platform
  3. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    Alright i'll keep it in mind. Which output torque values begin to sound "well"?? For a 4DOF ( Roll, Pitch, Heave, Sway)

    Well i'm now centered in my actual issue: Servos dont work.

    I need to know what range of values Simtools gives, I mean the Axis test bar, -100% and +100%, to fit it in the servo code. I really CANT make it work on negative values of the % ( bar to the left) It works great on the right side of the testing bar.

    Can anyone help me?
  4. SeatTime

    SeatTime Well-Known Member

    Joined:
    Dec 27, 2013
    Messages:
    2,574
    Occupation:
    Retired
    Location:
    Brisbane Australia
    Balance:
    28,370Coins
    Ratings:
    +2,844 / 38 / -0
    My Motion Simulator:
    AC motor, Motion platform
    I'm sure controlling a model with RC servos has been done before (I have never needed to do it), try searching through the site. Good luck with your commercial aspirations.
  5. eaorobbie

    eaorobbie Well-Known Member SimTools Developer Gold Contributor

    Joined:
    May 26, 2009
    Messages:
    2,574
    Occupation:
    CAD Detailer
    Location:
    Ellenbrook, Western Australia
    Balance:
    20,390Coins
    Ratings:
    +1,683 / 23 / -2
    My Motion Simulator:
    2DOF, DC motor, JRK, SimforceGT, 6DOF
    I need to update to my latest codes.
    As provided , one has debug and should only be used in the Serial monitor for testing with Rxxx~Lxxx~ where R is the right servo and L is the Left servo. plus xxx is 0-255.
    The other is ready for SimTools and can be driven in Serial Monitor but wont output to the monitors where the servo is, this cant happen if you want to use it with SimTools, it locks the serial port up on the Ard.

    Install the Interface preset supplied in the Zip like this :
    RC Model SimTools Interface Preset Install.png

    And how to select this preset and setup the interface tab.

    RC Model SimTools Interface setup.png

    1. Select Interface
    2. Select the Output Type to SER (Serial)
    3. Select the RC Model Test Preset from the Presets.
    4. Add the comport the Ard is connected too
    5. Press save
    6. Ready to test if a game is patched or even just to test via the Output Testing.

    One note , needs a default axis to be set in the Axis Setting too.
    For example:
    Axis1 Roll 50% Pitch 50%
    Axis2 inverted Roll 50% Pitch 50%
    Make sure you press Save once all set before moving on.
    a simple 2dof just using roll and pitch,

    If you were to use 5 DOForces like Roll,Pitch,Surge,Sway,Heave. The % needs to be 20% and both roll and sway will be inverted on Axis 2.

    Hope that helps

    PS an external power supply attached to the Ard Uno is a must to run dual servos or more another option is to power the servos from a 5v or if servos can cope with a 6v psu.
    I run a 9v PSU on the Ard for my model, if not the servos do some stupid things.

    Attached Files:

    • Like Like x 2
    Last edited: Aug 3, 2014
  6. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    Hey Robbie, thanks a lot for your info. I have already tested the RCmodel arduino code with simtools, it has a perfect movement of each axis (2) with some problem, it is related with the problem on my own code.

    On my code, when i'm testing the axis, the servo goes crazy when going under -18% -20%, this is due to the value sent by simtools R100 and R99 ( R is my Axis1 too)( works great on values >-20%<+100%)

    I guess when the app sends R99 there is a lack of a character so the servo goes crazy.

    In the RCmodel code. Servo 1 works great. but when servo1 goes under the same point than with mycode +-(-20%), servo2 goes to 180 ( at full )

    I'm talking about direct axis control, I will configure DOF's and movements to axis later.

    I have discovered this using the aplication found in this same forum, wich reads from the simtools and shows it in a prompt window, as shown

    IMG_20140803_134809.jpg

    About my actual connections, my Ard has connected only GND, and signals on pins 3, 5, 6, 9, for now I have a 6v NiMh batt running the servos, and a second 7.4 7600mAh lipo with an U-BEC set to 6v 3A

    IMG_20140803_135024.jpg

    Excuse low cuality of photos.

    PD: Robbie, it is possible to add a 3rd servo to the RCsimtool code, i've done it just adding 1 mapping value (0, 179);1 more aktuatorcount and 1 more output pin. The problem was the same, when 1 servo goes under -20%, the NEXT servo goes wild to its tops. I've also added a 4th servo in the same way wich did not work at all.

    Thanks for your answers and support
  7. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    I am so sorry for my last message, my newbishness :p made me error. You use 9600 bauds for a reason, right?

    I was using 115200. Just changin the value to 9600 everything works great. Using 115200 makes the servos wild at some values.
  8. eaorobbie

    eaorobbie Well-Known Member SimTools Developer Gold Contributor

    Joined:
    May 26, 2009
    Messages:
    2,574
    Occupation:
    CAD Detailer
    Location:
    Ellenbrook, Western Australia
    Balance:
    20,390Coins
    Ratings:
    +1,683 / 23 / -2
    My Motion Simulator:
    2DOF, DC motor, JRK, SimforceGT, 6DOF
    Ah serial communication error, to run at 115 200 think you need to increase the SimTools ms on the output , well test with changing that. But I choose to run at 9600 as its more stable and didn't note any lag.

    To add servos to my code , for example to include 4DOF with my code

    Line 9 - How many Servos to use.
    const int kActuatorCount = 4;

    Line 13 - The Identifier used for Servo
    const char kActuatorName[kActuatorCount] = { 'R', 'L' , 'F', 'B' };

    Line 14 - Where is Servo is connected
    const int kPins[kActuatorCount] = {3, 5, 6, 9};

    Line 15 - 17 - Sets the scaleing in degrees of movement used , this is set for 180 deg if counting from 0
    const int kActuatorScale[kActuatorCount][2] = { { 0, 179 } , // Right Actuator scaling
    { 179, 0 } , // Left side Actuator scaling
    { 179, 0 } , // Front side Actuator scaling
    { 179, 0 } }; // Back side Actuator scaling

    Line 21 - Sets the Initial position of servo when in starts in Degree's
    int actuatorPosition[kActuatorCount] = {90, 90, 90, 90};

    Note in lines 15-17 if servo moves the wrong direction you can simply invert them by changing the scaling.
    • Like Like x 7
    • Informative Informative x 1
  9. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    Yep thanks a lot. would it be possible to add up to 6?

    I have to polish the connections on a testing 3Dof platform I just built today. Tomorrow i will show you what I have.

    Now I have PWM outputs working correctly, i'm thinking on using the polulu or the motomonster to control the most powerfull DC motor they can handle. With this I'm planning to build a strong Linear actuator able to lift about 80 kg of weight. I've seen some DC motors with wormgears what have an output of 2.3 Nm and 160RPM using 12volts (60W). Would this be possible with the amperes limitation of current H-bridges?

    Thanks
  10. Pit

    Pit - - - - - - - - - - - - - - - - Gold Contributor

    Joined:
    Oct 2, 2013
    Messages:
    3,013
    Location:
    Switzerland
    Balance:
    30,409Coins
    Ratings:
    +3,088 / 31 / -0
    My Motion Simulator:
    DC motor, Arduino, 6DOF
    it is highly questionable whether 60W should be enough to lift the estimated weight. 5A is no problem for the well known h-bridges used by many members of xsimulator. net
  11. eaorobbie

    eaorobbie Well-Known Member SimTools Developer Gold Contributor

    Joined:
    May 26, 2009
    Messages:
    2,574
    Occupation:
    CAD Detailer
    Location:
    Ellenbrook, Western Australia
    Balance:
    20,390Coins
    Ratings:
    +1,683 / 23 / -2
    My Motion Simulator:
    2DOF, DC motor, JRK, SimforceGT, 6DOF
    60W ?- depends on the torque required , a lot of ball screws don't require high torque but favour a high speed depending on pitch of thread.
  12. Pit

    Pit - - - - - - - - - - - - - - - - Gold Contributor

    Joined:
    Oct 2, 2013
    Messages:
    3,013
    Location:
    Switzerland
    Balance:
    30,409Coins
    Ratings:
    +3,088 / 31 / -0
    My Motion Simulator:
    DC motor, Arduino, 6DOF
    Zitat: "... About 150kg (by excess) without pilot, and a max pilot weight of 150kg. about 300 kg of lifting power "

    300KG weight +4 x 60W motors = fail

    If the torque is high enough to lift that weight, the speed isn't. No racer rig, rather a slow motion one. :)

    Just only my opinion.
  13. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    I got my 3servos 3DOF running It is not stable because im using 3 traxxas steering tie-rods from my summit. But it works.

    Pit, you may think i'm planning 4 motors bacause of that code( made for 2, works with 4, i supose 6 will work). My final intention is 6 motors. I've found that it could be easy to set it up, to have 3DOF (sharing each support point with 2 servos/actuators/whatever).

    I think a 3DOF "big rig" for racing would offer a good felling,(roll, pitch, heave) What do you think about this? compared to a 6DOF which it also has horizontal sliding movement. Do Sway, Surge and Yaw give such a greater feeling to make it 6DOF?

    Anyway, if a 6motor 3DOF is working, it just need software changes to make it 6DOF, right?

    merchan-e, who is spanish like me in his project ( http://www.xsimulator.net/community/threads/prototype-6dof.5045/ ) Achieved to lift him with 6 12v 50W DC wiper motors. There are stronger 12v motors, more powerfull with worm gearboxes ( in spanish we call it something like " not ending screw gearbox", i think its the same) available in the market. I hope some of you see any posibility of lifting at least 250kg (I assumed 100kg for a structure so a 50kg steel structure would be ok so I can low my total lifting weight to 250kg).

    The actual actuator designs have strings to compensate the expected forces. That is ok when using a chain transmission system, using a DC motor which has not retaining force ( or brake force ), but if the motor is geared with a worm gearbox the brake mode i think would brake powerfully. I keep this in mind to build 6 actuators with this same motor system. The only difference between this wiper motor rig ( servo mode) and a actuator rig is to use a 1Turn or a 10Turn potentiometer, in the case of the actuator.

    Now, if sabertooth is able to handle 50Amps, on 12 volts, wich means a max 600W, I can handle 250W motors, even 2x/sabertooth right? I'm now looking for a more powerfull 12v worm geared motor. I can use it in both actuator and "servo moded" with lower RPM and higher torq. Parvalux has some 12v, and other 220v AC( I prefer DC cause i see AC too difficult and dangerous), but their power is under 60W.

    When I say sabertooth i mean any H-bridge able to handle that.
    I'm still looking for a right DC geared motor.
    I plan to use quality brand PSU with +80 certification for the 12 and 5v inputs. For the value ( about 80 euros ) is it worth?

    I've just used my small platform on Live For Speed trial version, i'm buying 1 year right now. i'm so exited i'm goint to use iRacing and Acorsa with my small platform. ( i've been working on this just 2 weeks)

    Thanks a lot for your advices.
  14. adgun

    adgun Active Member

    Joined:
    Jan 28, 2008
    Messages:
    493
    Occupation:
    mechanic
    Location:
    Netherlands
    Balance:
    5,540Coins
    Ratings:
    +131 / 3 / -0
    Look with motion control products @ebay-store
  15. Pit

    Pit - - - - - - - - - - - - - - - - Gold Contributor

    Joined:
    Oct 2, 2013
    Messages:
    3,013
    Location:
    Switzerland
    Balance:
    30,409Coins
    Ratings:
    +3,088 / 31 / -0
    My Motion Simulator:
    DC motor, Arduino, 6DOF
    I have no experiences with 6DOFs, but imagine the surge is limited and with all sims greater than a 2DOF you have to move all the hardware like the screen, wheel p.ex. This weight should be included by working out the needed power of the motors.
    I do not really understand, Simtools supports up to 6 interfaces and 6DOFs.
    6x (wiper) motors ore anything else you have chosen should work and hold the weight.

    All other questions I am not qualified to give you any help :)
  16. eaorobbie

    eaorobbie Well-Known Member SimTools Developer Gold Contributor

    Joined:
    May 26, 2009
    Messages:
    2,574
    Occupation:
    CAD Detailer
    Location:
    Ellenbrook, Western Australia
    Balance:
    20,390Coins
    Ratings:
    +1,683 / 23 / -2
    My Motion Simulator:
    2DOF, DC motor, JRK, SimforceGT, 6DOF
    6DOF is achieveable with running 2 to 3 Ards with code here on site but to me there may be timing issues with all cards having to run together but worth a try @Historiker has a post here shown multiple Ards and winches not sure when he will have time to finish it, sorry don't remember where he has finished too. But it shows it can be done.

    Another member ages ago @AldoZ z used 3x Jrks and 3 winches to produce a wicked 3 dof unit but inturn used a spring in the centre to assist in the weight issues that happens when trying to heave and catch a fall object, gets quite technical as another 24ov build I know going on he spent a while calculating the spring needed and had to have one made specially for it.

    IMO for racing 2dof is the go, but think on another scale, just an idea of the tip of me tongue, a Seat mover frame on top of a drift (traction) loss table gives you nice 3DOF racing motion, then if you want the whole thing to surge back and forth then put the whole lot on a slide rail with linear bearings, plus if you want the rig to sway side to side, another table can be built under it all and now it has 5DOF and can be all built with 12v DC WormGear motors.

    Now Im currently investigating a new interface (Motor Controller) option for SimTools, which will allow a user to run up to 4x sabertooths off one card - K8061 Plus for 6DOF use I may attempt to add the 6DOF maths needed in order to emulate 6DOF more truly. But this is a little while off yet. But theory all worked out, just need to write the control code and wait for a unit to test with, then I can release it here.
    • Like Like x 2
  17. Historiker

    Historiker Dramamine Adict Gold Contributor

    Joined:
    Dec 16, 2010
    Messages:
    2,158
    Occupation:
    Retired
    Location:
    Michigan USA
    Balance:
    9,176Coins
    Ratings:
    +2,156 / 19 / -1
    My Motion Simulator:
    3DOF, DC motor, Arduino, Motion platform, 6DOF
    Just sold our house and are building a new one...not sure myself when the 6DoF will be done. I did get it working, and well, but never did the polish/finish that it needs.

    It is possible though, keep plugging away at it. :)
    • Winner Winner x 1
  18. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
  19. billo2404

    billo2404 Member

    Joined:
    Jul 5, 2013
    Messages:
    119
    Location:
    Roma, Italia
    Balance:
    1,236Coins
    Ratings:
    +36 / 1 / -0
    My Motion Simulator:
    AC motor, 6DOF
    Last edited by a moderator: Sep 6, 2020
  20. CalSim

    CalSim building things

    Joined:
    Jul 24, 2014
    Messages:
    89
    Occupation:
    bacteriology analist
    Location:
    Spain
    Balance:
    1,309Coins
    Ratings:
    +41 / 0 / -0
    My Motion Simulator:
    DC motor, Arduino, JRK
    Billo I think that motor is a bit slow, maybe it will work for a flight simulator, but for a racing rig maybe it's too slow.

    Hey dudes did you see the motor I found in my last message?

    http://www.motorswatts.com/tienda/es/motores-electricos-/55-motor-cc-24v-350w.html

    I have 2 choices, I can use that motor with a proper wormgear( which I cant found in europe) Or I can go to PARVALUX and get some sets of motor/wormgears, but not sure what torque/speed do I need.

    I decided to build 6 actuators and move a -First 3DOF, then 6DOF platform

    @eaorobbie man im very interested in your actual programming, I will start with 3DOF, ( roll,, pitch and heave) then I will upgrade it with 6DOF, as im using 6 actuators.

    Oh, well, my actuators desing:

    It will be PWM powered, so it will have more aplications, not only pc's simulators. My actuators will be possible to extract them from the platform, connect a DC power and a Radio control PWM signal, and it will work too.

    I'll create a system that works with PWM pulses. a 1000us pulse makes 0º on a servo, makes 0% on my actuator. 1500us makes 90º on a servo, will make 50% on my actuator. and a 2000us pulse will make 180º on a servo, and 100% on my actuator.

    It will be similar to the actual actuator desing we all know, but without strings. That guy is using strings because the motor he uses has no retention force, and strings actually compensate the forces that the motor will do. Using a worm gearbox is going to fix this, i will try 1 actuator with a powerfull motor and gear configuration, and i will show you.

    I will use FIR WOOD, ( multiplex wood works so this one sould too), pulleys, best quality belts and a 10Turn pot.

    Hey could please someone look for some PARVALUX motors on their website, and recommend me a gear/motor?

    http://www.parvalux.com/dload/ebrochures/pm-catalogue-2009/#/10/

    I'm pretty sure HERE is the answer for a motor solution for all europeans, they're from UK.

    Thanks guys!!