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

Question Actuator oscillation/vibration problem

Discussion in 'DIY Motion Simulator Projects' started by motiondynamics, Sep 9, 2023.

  1. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,142
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,547Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    May I ask how much backlash is involved: https://xsimulator.net/community/faq/wormdrive-backlash.293/

    I ask as normally increasing dead zone would reduce sensitivity, but it sounds like your rig is reacting to and trying compensate for unwanted movement, in other words it is constantly trying to correct mechanical movement that is independent of telemetry.
  2. motiondynamics

    motiondynamics Member

    Joined:
    Apr 12, 2019
    Messages:
    184
    Balance:
    1,097Coins
    Ratings:
    +8 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, AC motor, SimAxe, Arduino, Motion platform, 6DOF
    I use linear actuators (ball screws), but they do not have "mechanical tolerance", that is, there is no tolerance in the screw or in the motor, the movement of the screw is instantaneous, without dead spaces.
    Your reasoning is correct, I think like you, that is, by increasing the Dead zone value, the oscillation should decrease, but instead it increases.
    I do not understand why.
  3. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,142
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,547Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    If it oscillates that may suggest the rig is trying to resolve to a position, overshoots, which may be a settings issue, then that becomes the next stepping off for the next biggest amplitude increase as it tries to correct again.

    So back to my earlier suggestion, set Fpwm to 25, Kp to about 400, Clip and Limit to 255, all other values at zero, then slowly raising PWMmax from zero, at what PWMmax value do the motors start to move?
  4. motiondynamics

    motiondynamics Member

    Joined:
    Apr 12, 2019
    Messages:
    184
    Balance:
    1,097Coins
    Ratings:
    +8 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, AC motor, SimAxe, Arduino, Motion platform, 6DOF
    Ciao Noorbeastr, forse il problema potrebbe dipendere proprio da questo, cioè il mio driver (brushless drive) può ricevere al massimo 1KHz da Arduino, quindi il motore arriva ad una frequenza massima di 1KHz
    Quindi non posso usare la frequenza a 25 KHz. Qualsiasi frequenza in ingresso superiore a 1 KHz verrà sempre trasmessa al motore a 1 KHz.
    Last edited: Oct 23, 2023
  5. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,142
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,547Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    Could well be.
  6. motiondynamics

    motiondynamics Member

    Joined:
    Apr 12, 2019
    Messages:
    184
    Balance:
    1,097Coins
    Ratings:
    +8 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, AC motor, SimAxe, Arduino, Motion platform, 6DOF
    Ok then I will proceed to replace the driver with another and check if it solves the problem, then I will let you know immediately.
    Thanks for your help.

    A question: for the strings below I noticed that the operation is identical to when they are not written, as if nothing changed.

    START OUTPUT
    [A<128>][B<128>][C<128>]

    SHUTDOWN OUTPUT
    [A<128>][B<128>][C<128>]


    Maybe I'm doing something wrong? I have already read the FAQ but I haven't found anything that can help me. Can you explain exactly what they are for and tell me how to make them work?
    I have 3 axes and they work with Arduino.
    You tell me, thanks
    Last edited: Oct 11, 2023
  7. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,142
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,547Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    They are positional commands to tell the rig where to go to when is starts and when it exits a game, see the FAQs here: https://www.xsimulator.net/community/faq/startup-and-shutdown-positional-controls.234/
  8. motiondynamics

    motiondynamics Member

    Joined:
    Apr 12, 2019
    Messages:
    184
    Balance:
    1,097Coins
    Ratings:
    +8 / 0 / -0
    My Motion Simulator:
    2DOF, 3DOF, DC motor, AC motor, SimAxe, Arduino, Motion platform, 6DOF
    Hi, unfortunately I can't get the "Startup - Output" and "Shutdown - Output" lines to work.
    I performed the test on a single actuator, entering the data as in the attached image.
    I know that by entering the value "128" the actuator is positioned exactly in the center, but to test the operation of the string I entered the value "50" to lower the actuator when I exit the game, but the actuator always remains in the center .
    Maybe the string entered is wrong?

    Note: I'm using Arduino

    Attached Files:

    • smc3.jpg
      smc3.jpg
      File size:
      276.4 KB
      Views:
      186
  9. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    21,142
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    St Helens, Tasmania, Australia
    Balance:
    148,547Coins
    Ratings:
    +10,902 / 54 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    I don't use SMC3 so am taking a bit of a stab in the dark.

    This is the FAQs re startup and shutdown settings: https://www.xsimulator.net/community/faq/startup-and-shutdown-positional-controls.234/

    And from the SMC3 thread the related SMC3 set commands: https://www.xsimulator.net/communit...driver-and-windows-utilities.4957/#post-48122

    SMC3 Command Set

    All commands to/from the SMC3 are sent as data packets each 5bytes long. They start with a left square bracket '[' and end with a right square bracket ']'. Typically the second byte is the command and the third and forth bytes are the parameters.

    Code:
    Packet Sent            Description                                                                                              Response Packet
    -------------------------------------------------------------------------------------------------------------------------------------------
    [Axx],[Bxx],[Cxx]  Send position updates for Motor 1,2,3 where xx is the binary position limitted to range 0-1024            None
    [Dxx],[Exx],[Fxx]  Send the Kp parameter for motor 1,2,3 where xx is the Kp binary value (restrict to 0 - 1000)              None
    [Gxx],[Hxx],[Ixx]  Send the Ki parameter for motor 1,2,3 where xx is the Ki binary value (restrict to 0 - 1000)              None
    [Jxx],[Kxx],[Lxx]  Send the Kd parameter for motor 1,2,3 where xx is the Kd binary value (restrict to 0 - 1000)              None
    [Mxx],[Nxx],[Oxx]  Send the Ks parameter for motor 1,2,3 where xx is the Ks (d term smoothing parameter between 1 and 20)    None
    [Pxy],[Qxy],[Rxy]  Send the PWMmin and PWMmax values x is the PWMmin and y is PWMmax each being in range 0-255              None
                        PWMmax should always be greater than or equal to PWMmin
    [Sxy],[Txy],[Uxy]  Send the Motor Min/Max Limits (x) and Input Min/Max Limits (y) (Note same value used for Min and Max)    None
    [Vxy],[Wxy],[Xxy]  Send the Feedback dead zone (x) and the PWM reverse duty (y) for each motor                              None
    [mo1],[mo2],[mo3]  Request continous motor position, feedback, pwm and status data (all packets sent every 15ms)            [Axy][Bxy][Cxy][axy][bxy][cxy]
    [mo0]              Disable continuous feedback from previous [mo1],[mo2], or [mo3] command                                  None
    [ena]              Enable all motors                                                                                        None
    [sav]              Save parameters to non-volatile memory                                                                    None
    [ver]              Request the SMC3 software version, returned value is mult by 100.  (ie: 101 is ver 1.01)                  [vyy]
    [rdA],[rdB],[rdC]  Request motor target and feedback for Motor 1,2, or 3 parameters scaled 0-255.                            [Axy][Bxy][Cxy]
    [rda],[rdb],[rdc]  Request motor pwm and status data for Motor 1,2, or 3 parameters scaled 0-255.                            [Axy][Bxy][Cxy]
    [rdD],[rdE],[rdF]  Request the Kp parameter for motor 1,2,3 where xx is the Kp value multiplied by 100                      [Dxx][Exx][Fxx]
    [rdG],[rdH],[rdI]  Request the Ki parameter for motor 1,2,3 where xx is the Ki value multiplied by 100                      [Gxx][Hxx][Ixx]
    [rdJ],[rdK],[rdL]  Request the Kd parameter for motor 1,2,3 where xx is the Kd value multiplied by 100                      [Jxx][Kxx][Lxx]
    
    
    Note the Arduino SMC3 code does not check values sent are within valid ranges.  It is the job of the host application to keep values within
    sensible limits as recommended above.