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

Tutorial SMC3 Arduino 3DOF Motor Driver and Windows Utilities

Discussion in 'SimTools compatible interfaces' started by RufusDufus, Dec 1, 2013.

  1. evgenymcp

    evgenymcp Member

    Joined:
    Nov 27, 2023
    Messages:
    39
    Balance:
    186Coins
    Ratings:
    +24 / 1 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino
    What is the current version of SMC3? On Github, the current version is 0.7. This thread mentions 1.0. I have a mode 1 driver type and brushed motors.
  2. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    22,219
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    154,783Coins
    Ratings:
    +11,217 / 57 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
  3. Mirko

    Mirko New Member

    Joined:
    Jan 31, 2026
    Messages:
    7
    Balance:
    23Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor
    Hi Joe, I sent a PM to you - at least I tried. Have you received it? Anything else you need? Is there a way to share your source code?
  4. Mirko

    Mirko New Member

    Joined:
    Jan 31, 2026
    Messages:
    7
    Balance:
    23Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor
    And I wonder, what kind of motors you recommend? Can anybody provide a link to motors, you made some good experience with?
  5. INCOTE

    INCOTE New Member

    Joined:
    Apr 4, 2026
    Messages:
    5
    Balance:
    24Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, Motion platform, 6DOF
    hello,
    I am just starting my 6dof project to use with msfs2024 (6 rotating dc motors). Hexagon base with 6 motors. I never used this SMC3 with arduino uno r3, which can run only 3 motors. My question is: will I need 2 arduino uno r3 boards, connected to 2 different comports. Like: Interface 1: ComPort:3, [A<Axis1a>][B<Axis2a>][C<Axis3a>] and Interface 2: ComPort:4, [D<Axis4a>][E<Axis5a>][F<Axis6a>]? Am I correct? Need some help here. Is this the way to command 6 motors? Is there any other solution?
  6. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    22,219
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    154,783Coins
    Ratings:
    +11,217 / 57 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    On the hardware side SMC3 can technically do 3 motors, but the third motor is treated a little differently with less control options, so for a 6DOF most use 3 Arduinos controlling 2 motors each. Each Arduino will be assigned a unique Comm Port when you plug it in.

    With respect to the Interface Settings please do read the SimTools Manual, so you do understand how it works: https://www.xsimulator.net/community/faq/simtools-v3.401/

    For a 3 x Arduino setup using Interface 1, 2 and 3, it would be:

    Interface Type - Serial

    ComPort = the Arduino ComPort, you can find it in Windows Device Manager for that particular Arduino.

    BitsPerSec - 500000

    Data Bits - 8

    Parity - None

    Stop Bit -1

    Output Bit Range - 10

    Output Type - Binary

    Interface 1 = [A<Axis1a>][B<Axis2a>]
    Interface 2 = [A<Axis1b>][B<Axis2b>]
    Interface 3= [A<Axis1c>][B<Axis2c>]
    • Like Like x 1
  7. INCOTE

    INCOTE New Member

    Joined:
    Apr 4, 2026
    Messages:
    5
    Balance:
    24Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, Motion platform, 6DOF
    Thank you for your answer. If a get a top view of my 6 rotary motors, from top right position, going clockwise, I will have motor 1 (which will be axis 1a), motor 2 (which will be axis 2a), motor 3 (which will be axis 1b), motor 4 (which will be axis 2b), motor 5 (which will be axis 1c) and motor 6 (which will be axis 2c). Is my interpretation correct?
  8. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    22,219
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    154,783Coins
    Ratings:
    +11,217 / 57 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    If you have a Stewart Platform, install the Generic 3D Linear or Rotation plugin depending on
    the type of simulator you have, please see p21 of the SimTools v3 Manual: https://simtools.us/wp-content/uploads/2024/02/SimTools-v3.pdf

    Generic 3D Plugin.png
    • Like Like x 1
  9. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    1,013
    Occupation:
    Tech Artist
    Location:
    Quebec, Canada
    Balance:
    8,058Coins
    Ratings:
    +947 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    For me, everytime I calibrate, I set force on one axis at a time. You might want to disconnect them from the platform so they don't stress it while other axis do not move. You provide force to one axis and you look which of your actuator move (heave is good as all axis move to the same direction), and you identify them. You can change order of axis via wiring, USB Port, or applied force to them. The most important is that they are well identified, according to your ordering method, and that the force you apply to each of them correspond to what you want.
    Personnally, now that I have only 3 motors, I assign one arduino to each one of them and use the USB Port in Simtools interface to change their order (left, right, rear).
    When I had a 6DOF, I put actuators side by side in pairs and use the USB Port to choose one of the 3 position (left, right, rear). It depends how you constructed your rig and how your brain works.
    I hope this will help you in any way. It is confusing at first, but once you get it, it is pretty simple.
    After that, it is a matter of dividing the total amount of movements you have for each actuator to every forces that affect it (roll, pitch, yaw, heave, surge, sway).
    Good luck.

    Pierre.
    • Like Like x 1
  10. INCOTE

    INCOTE New Member

    Joined:
    Apr 4, 2026
    Messages:
    5
    Balance:
    24Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, Motion platform, 6DOF
    Thank you Pierre. I was reading the SIMTOOLS manual, page 94 - GENERIC 3D ROTATING. This is the hexapod structure that I intend to use. Axis 1 to 6 are defined there clockwise (from top right), and the next page shows that axis 1a is defined as roll, axis 2a is defined as pitch, axis 3a is defined as yaw, axis 4a is defined as heave, axis 5a is defined sway and axis 6a is defined as surge. Forces are defined in that stage. So, if I keep this procedures I will get good results right? I also understood that it will be necessary to have 3 arduinos UNO to control those 6 motors, each one on a specific ComPort.

    Attached Files:

  11. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    1,013
    Occupation:
    Tech Artist
    Location:
    Quebec, Canada
    Balance:
    8,058Coins
    Ratings:
    +947 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    No sorry, this is not how I use it. I use Generic 2D Advance. For me, Axis 1a is the complete motion of my motor (from the lowest to the highest). This complete motion represent 100% of my Axis. In your picture, 20% of axis 1a movement is allocated to the Roll. There are many slot for forces in Axis 1a, and since we have 6 forces (roll, pitch, yaw, heave, surge, sway), I need to provide a percentage of each forces to that axis.
    Me, I have only 3 axis on my rig, so I am limited on how I can simulate forces. I have no Yaw available.
    gen2d.jpg

    I did not test the way you want to do it (Generic 3D).
    Pierre.
  12. INCOTE

    INCOTE New Member

    Joined:
    Apr 4, 2026
    Messages:
    5
    Balance:
    24Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    2DOF, DC motor, Arduino, Motion platform, 6DOF
    Hello,
    I prepared a diagram based on what I’ve learned from other members of the group for a 6DOF platform using DC motors.
    I would like to understand the relationship between the six forces (roll, pitch, yaw, heave, sway, surge) and the six axes (Axis1a through Axis6a) shown on page 95 SimTools manual. Also, how this relates physically to the motors on the platform.
    I appreciate your comments and guidance.

    Attached Files:

    • Useful Useful x 1
  13. Oldiron

    Oldiron Oldiron Gold Contributor

    Joined:
    Sep 3, 2017
    Messages:
    11
    Location:
    Germany
    Balance:
    31Coins
    Ratings:
    +0 / 0 / -0
    My Motion Simulator:
    3DOF, AC motor, Motion platform, 6DOF
    Greetings!
    I need advice from the masters. When I move a motor in SMC3 manually slowly up or down it will not move continously but in distinguished steps. (see pic)

    My rig is working but a bit say complex: I got 3 rotational DC motors powered each by an inverter VLT2815. These are fed by the arduino per SMC3 Tools.

    The inverters cannot deal with pwm signals but rely on 0-10V analog input. So I fed the pwm signal of the arduino in a pwm to voltage converter which does work. According to research done the hardware should not produce steps but work quite continously. I already exchanged these converters (old could use up to 3 kHz pwm signals, new ones up to 10kHz). But no improvement by the new ones.

    The inverters should be able to distinguish input voltage at least in more than say 5 steps (in one direction). At least this was assumed by the google AI with some elaborate formulas...

    Firstly I checked the 180° mil grade sensors (I had to explain the usage when ordered in the USoA XD) which are doing fine and smoothly when operated solo. So no fault here.

    Interestingly the third motor does more steps than 1 and 2 (why?)

    I suspect the reason of these steps in the SMC3 software, but I couldnt wizz in that masterpiece. (Thank You RufusDufus, no cigar without your great work!)

    Ok, I think I described the situation quite detailed. As I am "at the edge of my nerves" as the german saying is, I hope someone can provide some help... thank you for your patience in that matter ;)

    Attached Files:

  14. Oldiron

    Oldiron Oldiron Gold Contributor

    Joined:
    Sep 3, 2017
    Messages:
    11
    Location:
    Germany
    Balance:
    31Coins
    Ratings:
    +0 / 0 / -0
    My Motion Simulator:
    3DOF, AC motor, Motion platform, 6DOF
    Update: writing led me to thinking on PID settings. Jap, it has to do with these: raising KP in SMC3 gave more steps ( ! ) but also jumping waves of the movement. My problem there is the option to set PID in the software and/or the inverter... I guess i have to take a higher software value for KP and then dampen it by the inverter...
  15. Joe Cortexian

    Joe Cortexian Active Member Gold Contributor

    Joined:
    Sep 8, 2021
    Messages:
    280
    Balance:
    1,688Coins
    Ratings:
    +77 / 1 / -0
    My Motion Simulator:
    3DOF
    You should be able to get much better motion than this just setting KP. Just for reference my KP is in the range of 400. It starts the get weird for me when it’s under 200.
  16. Pierre Lalancette

    Pierre Lalancette Sir Lalancelot Gold Contributor

    Joined:
    Dec 11, 2016
    Messages:
    1,013
    Occupation:
    Tech Artist
    Location:
    Quebec, Canada
    Balance:
    8,058Coins
    Ratings:
    +947 / 6 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino, 6DOF
    Those were my setting.
    upload_2019-1-21_18-26-39.png

    Pierre.
  17. Oldiron

    Oldiron Oldiron Gold Contributor

    Joined:
    Sep 3, 2017
    Messages:
    11
    Location:
    Germany
    Balance:
    31Coins
    Ratings:
    +0 / 0 / -0
    My Motion Simulator:
    3DOF, AC motor, Motion platform, 6DOF
    Thanx, Joe. Indeed is difficult because on the one hand you have PID in SMC3 AND in the inverter. But Finally I managed it and write that in a reply to myself because of Pierre. TY very mucho.
  18. Oldiron

    Oldiron Oldiron Gold Contributor

    Joined:
    Sep 3, 2017
    Messages:
    11
    Location:
    Germany
    Balance:
    31Coins
    Ratings:
    +0 / 0 / -0
    My Motion Simulator:
    3DOF, AC motor, Motion platform, 6DOF
    Hi Pierre, thank you very much for the reply!
  19. Oldiron

    Oldiron Oldiron Gold Contributor

    Joined:
    Sep 3, 2017
    Messages:
    11
    Location:
    Germany
    Balance:
    31Coins
    Ratings:
    +0 / 0 / -0
    My Motion Simulator:
    3DOF, AC motor, Motion platform, 6DOF
    Ok, that was a hard one since I am not a engineer but only a stubborn capricorn.

    Finally Grok led me to mostly the right params for the inverter. I dont like AI much but a cigar for this one.

    It was several settings. For one the max Freq for the motor, usually 132 Hz, but that is a jumpy ride. Tuned that to 10/10/12 for the motors. That slows the reaction speed of the motors to follow the signal and prevents feedback to cross the signal which causes to an abrupt correction - that was the main problem - check.

    But that wasn't enough, so I fumbled with the ramp increase (linear, sinus with a flattened top or sinus with slow start and a flattened top which does well). Secondly I modified the ramp up and down times to force them to follow the signal curve with a small delay which prevents feedback crossing signal.

    It's still not perfect since on the way down feedback kisses signal on the very end and gives me a lovely bump, but for now I tolerate that. You don't know how long this project took...

    Thank you all for your comments and first of all for reading!

    Attached Files:

  20. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    22,219
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    154,783Coins
    Ratings:
    +11,217 / 57 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    Can you try setting PWMmax to 180 and PWMrev to 100, then run and paste the results running the Sine test.