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

F1 like 3DOF Simulator with heave

Discussion in 'DIY Motion Simulator Projects' started by _cOdaC_, Jun 25, 2024.

  1. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    I've tried that before, cause as soon as I put a cable from PIN8 to GND on the Arduino Uno, SMC3Utils won't beable to open up a communication "Could not establish comms with Arduino SMC3, Abort, Retry, Ignore".
    Thats weird, cause the Sabertooth is set to 115200 baud with DEScribe.
  2. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

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

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    I'm using SPS 8.2 softstart from this tutorial.

    The code says:
    Code:
        // set the data rate for the SoftwareSerial port
    #ifdef SECOND_SERIAL
        mySerial.begin(115200);
    #endif
    #ifdef MODE3
    {
      pinMode(8, INPUT_PULLUP);
      pinMode(9, INPUT_PULLUP);
      pinMode(10, INPUT_PULLUP);
      pinMode(11, INPUT_PULLUP);
      pinMode(12, INPUT_PULLUP);
     
      if (digitalRead(8) == HIGH){
        Serial.begin(500000);
      }
    else
    {
      Serial.begin(115200);
    }
      if (digitalRead(9) == LOW){
        mySerial.begin(19200);
        ST[0].setBaudRate(115200);
        ST[1].setBaudRate(115200);
        mySerial.end();
      }
      else if (digitalRead(10) == LOW){
        mySerial.begin(38400);
        ST[0].setBaudRate(115200);
        ST[1].setBaudRate(115200);
        mySerial.end();
      }
      else
      {
        mySerial.begin(9600);
        ST[0].setBaudRate(115200);
        ST[1].setBaudRate(115200);
        mySerial.end();
      }
     
       mySerial.begin(115200);
    
    So yes, I would expect, jumpering PIN 8 and GND, the Arduino would be set to 115200 and otherwise run with 500000 Baud.
    I think I'll open up the Arduino IDE and try to see if the console using 115200/500000 baud shows something useful.
  4. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    Ok, so I could prove that jumpering PIN 8 and GND leads to the Baud rate getting set to 115200.
    Testet it with a simple Outut to the Serial Monitor in Arduini IDE. 115200 was readable, 500000 not.

    The Code works, but still, SMC3Utils won't connect with a Baud rate set to 115200 but only with a Baud rate of 500000.
    Do I need to use another version of SMC3Utils? I'm using version 1.01 of the mentioned thread.
    Last edited: Jan 24, 2026
  5. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    I'm really struggeling getting my motors run properly.
    During my tests, I noticed that the rear center motor is carrying significantly more load than the two front motors.

    Although I determined the Center of Gravity according to the tutorial, it's possible that it shifted backward unnoticed during the installation of the upper rig along with the lower frame.

    This, combined with the fact that I tested with incorrect/poor values using SMC3Utils, led to this motor overheating and (still to be verified) likely sustaining damage. The motor had to withstand temperatures of approximately 110 degrees Celsius for an extended period of 1 to 1.5 hours.

    I will now re-measure the Center of Gravity.

    Regardless, I'm finding it extremely difficult to correctly configure or PID tune the motors.

    My motors are vibrating excessively, and I can't find any step-by-step instructions or criteria to determine whether the set values are correct and final.

    I'm having real trouble making progress and want to prevent further damage. I would be extremely grateful if someone could guide me here or provide a tutorial.
  6. Sebastian2

    Sebastian2 Active Member

    Joined:
    Dec 17, 2023
    Messages:
    122
    Balance:
    534Coins
    Ratings:
    +67 / 1 / -0
    Ooof, sounds like you are having a really tough time there.

    I suggest starting out simple and then increase complexity step by step. Here is what I would do.

    1.: Remove the load from the motors. Don't have them mechanically connected to anything. Electrically disconnect the motors from the drivers. Mechanically disconnect the pots from your motors. You need to be able to move them by hand.
    2.: Without any parts moving, check if your pots deliver a steady signal to SMC3utils. Take a look at the diagram to see if the signal is noisy. The green feedback line should be steady.
    3.: Turn the pots by hand. Does the green line in SMC3utils behave as expected? Turn the Pots all the way you expect them to move during operation. Does the signal keep moving steadily or are there sudden jumps?
    4.: Make a very basic setup in SMC3utils like this:
    Fpid: 1 (or higher, if your driver needs that)
    Kp: 100
    Ki: 0
    Kd: 0
    Fpwm: 25 kHz (or whatever your driver needs)
    PWMmin: 0
    PWMmax: 255
    PWMrev: 0
    Max Limits: 255
    Clip Input: 255
    Dead Zone: 0
    5. Again, turn the pot by hand. When the green feedback line is at the same value as the blue target line, the yellow PWM line should be at 0. The more you move the green feedback line away from the blue target line, the higher the yellow PWM line should go.
    6.: Reconnect power to the motor. Leave the pot mechanically disconnected to the motor. Now, by turning the pot, you should be able to control the direction and speed of the motor.
    7.: mechanically connect the pot to the motor. Perform the steps described here, under the section "initial setup": https://www.xsimulator.net/communit...3dof-motor-driver-and-windows-utilities.4957/

    Please report back with how much of the described steps worked for you. This will help with further diagnosis.
    Last edited: Mar 13, 2026
  7. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    Ok,
    1. I have removed the load from the motors, its just the levers that are still attached.
    2. Please see the attached Screenshots showing a steady unnoisy green line.
    3. Please see the movement of the pots of motor 1 and motor 2 (motor 3 follows) with motors being OFF
    4. I have set these values for all my motors.
    5. Please see the movment of the pots of motor 1 and motor 2 with motors being ON. Motor 1 runs good but at motor 2 as soon as it starts increasing the speed (softstart) the Arduino loses its connection to my pc and the graph stops. So seems like I have an issue here already somehow connected with the power that the motor increasingly consumes.
    6. For motor 1 its true, motor 2 has an issue getting faster in rotation.
    7. I will do that later, first I wanna find out what the issue with motor 2 is. Further more I'd like to swith the POT to the oposite direction of motor 2, so that it is at the same side as motor 1.

    Add: I just moved motor 3 in manual mode and the result was the same as with motor 2. so there was a peak of the yellow PWM line and the Arduino lost the USB connection to the PC.

    Attached Files:

  8. Sebastian2

    Sebastian2 Active Member

    Joined:
    Dec 17, 2023
    Messages:
    122
    Balance:
    534Coins
    Ratings:
    +67 / 1 / -0
    Unfortunately, I can't watch the youtube videos you have uploaded. It says they are set to private.

    You mention softstart. This sounds like you are using a non-vanialla version of SMC3. To kepp things simple, I suggest you use vanilla SMC3 for now. When the basics work, you can switch to other versions of SMC3.

    I suggest you investigate why the power draw of motor 2 and 3 leads to connection loss of the arduino. How is the arduino connected to your PC? Are you using a powered USB hub? You could try a passive USB hub or connect the arduino directly to your PC. What kind of PSU are you using? It could be that it sends electrical disturbances into your power grid.
    Also, make sure that the USB cables are not directly next to cables that are powering your motors (neither the 220V cables running to your PSU, nor the 12 or 24V cables running to your drivers or your motors). I keep at least 4 cm space between them (they run on different sides of my 40x40 aluminium extrusion profiles).
    Last edited: Mar 14, 2026
  9. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    Ok, I have updated the settings, please check again if you can watch the videos.
    I'm using SPS 8.2 softstart from this post as I'm using Sabertooth and no Monster Motor Board or separate H-Bridges.

    Both Arduinos are connected by USB to a passive USB-Hub and the USB-Hub is connected to my PC.
    For two motors I'm using a 2000W, 24V PSU, for the single motor I'm using a 1000W, 24V PSU.
    The USB cables are routed separately from the power cables (24v and 220V), I've attached Ferrit magnets to the power cables and the usb cables. Furthermore the wires to the pots are shielded.
  10. Sebastian2

    Sebastian2 Active Member

    Joined:
    Dec 17, 2023
    Messages:
    122
    Balance:
    534Coins
    Ratings:
    +67 / 1 / -0
    Your wiring sounds solid, so I think it's more likely you are having softwares issues.

    I suggest giving vanilla SMC3 a try. I don't know how well this works actually controlling your sabertooth drivers, but for investigating the connection loss this isn't important. If the connection loss doesn't happen with vanilla SMC3 you know it's an issue with the fork you are using. Then you can talk to the guy who made it or dive into the source code yourself.

    The videos you've posted regarding #3 on my list seem fine to me. The video of motor 2 regarding #5 shows the connection loss. I assume you kept turning the pot even though the video shows a constant green line after about 13 seconds?
    I notice that the connection loss appears the moment the yellow PWM line meets the green feedback line. Does the connection loss always happen at this moment? What if you turn the pot the other way, so the green feedback line goes down instead of up? The yellow pwm line will then meet the green feedback line sooner - Does the connection loss also happen as soon as both lines meet?
  11. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    Yes I‘ll give SMC3 a try and report back.
    Your assumption is right, I kept turning the POT and the connection loss is what you see.

    What I can‘t get out of my head is the bit about the breaking current. Yes I‘m using 6,8 Ohm/100W Resistors but the soldering was tricky so maybe here is an issue where theyre probably not doin what theyre supposed to do.
    Furthermore I‘m not using a battery, hence the resistors. I start thinking that a battery is pobably the better solution?!

    IMG_8382.jpeg IMG_8383.jpeg
  12. Sebastian2

    Sebastian2 Active Member

    Joined:
    Dec 17, 2023
    Messages:
    122
    Balance:
    534Coins
    Ratings:
    +67 / 1 / -0
    I don't think the breaking currents play a role here:

    1. The first issues arise on #5 on my list of steps to take. There, the motor isn't even powered.

    2. Even if the motor was powered, breaking current should not interfere with the connection of the arduino to the PC.

    3. Even if such an interaction would take place, braking current would only happen if the motor slows down. But your video shows the arduino loosing connection while the yellow PWM line is going up (so if the motor was powered it would accelerate).
  13. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    Ok, I have set up the Arduinos and the USB-Hub to their own power supply.
    The USB-Connection between the Arduino Uno and my PC is now for data transfer only.

    The SMC3 Code won't work with my Sabertooth, because of the PINs/Wiring.
    The Sabertooth has only one cable from S1 to Arduino PIN 13 and 0V to Arduino GND.
    The code says:
    Code:
    // Set to MODE1 for use with a typical H-Bride that requires PWM and 1 or 2 direction inputs
    // Set to MODE2 for a 43A "Chinese" IBT-2 H-Bridge from e-bay or equiv
    The H-Bridge (Mode 1 or Mode 2) require ENA,ENB, PWM connections for the motors. A Sabertooth doesn't have the PINs for that.

    Today i did quite some measurements to figure out where the electric disturbances might come from.
    The weird thing though is, that after the Arduino and the USB Hub have their own power supplies now, I followed your mentioned steps again, and this time Motor 2 was as smooth as Motor 1. Means even with rapid changes of directions I measured constant 24V on B- and B+ of the Sabertooth (the connectors for the PSU) and the Arduino didn't reboot (probably due to its own power supply), but I didn't measure any disturbances.

    The motors are ground isolated as well, that I could measure. And the clamps for the breaking current seem to do their work, I get the expected OHMs Between B+ and P1/P2 on the Sabertooth.

    I made sure that the settings in DEScribe for the Sabertooth are correct.
    Baud Rate is set to 115200 baud
    Disable regenerative braking is inactive (so regenerative breaking is active)
    I set the current limit from 60A per Motor to 22A per Motor, just for safety
    And Motor 1 and Motor 2 are set to Voltage Clamp mode.
    The timeout is set to 100ms (value = 0.01)

    If it is fine with you I'd like to continue with SPS for Sabertooth with Packet Serial as 31 pages of feedback make me beleive that this clone is stable.
    In the end all it does is using packet serial and the same code for the h-bridges converted for sabertooth and added a softstart, meaning that the motors wont start immediately with full power but increase speed in just a couple of seconds.

    The Tutorial for testing the whole set up are mostly exactly the same.

    Meanwhile I figured out why my motor in the back got so hot.
    I made a mistake placing the CoG incorrectly. My base frame is Y shaped and each arm is in 120° degrees to another. My mistake was to place the CoG to far to the back of the frame. It has to be placed in a 1/3 to 2/3 distance though.
    So let's say the two front motors (left and right) are in a distance of 69,28 cm to each other and the distance of each of the three motors to the Y center is 40cm. Then the CoG needs to be 20cm behind the front axis (distance motor left to motor right). The motor in the back needs to be 40cm behind the CoG or 60 cm behind the front axis.

    I'm currently waiting for some parts that I want to replace, before I continue testing. I'll be back in a couple of days.
  14. noorbeast

    noorbeast VR Tassie Devil Staff Member Moderator Race Director

    Joined:
    Jul 13, 2014
    Messages:
    22,210
    Occupation:
    Innovative tech specialist for NGOs
    Location:
    Tasmania, Australia
    Balance:
    154,723Coins
    Ratings:
    +11,213 / 57 / -2
    My Motion Simulator:
    3DOF, DC motor, JRK
    There is SMC3 code specifically for Sabertooth, please see the FAQs here: https://www.xsimulator.net/communit...ket-serial-pid-motor-driver-for-arduino.9277/
  15. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
  16. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    Ok, so it took some days but one motor had the POT on the wrong side, so I flipped the POT to the other side of the motor. I rewired all necessary cables to completely keep a distance of at least 4 cm between data and power cables. Furthermore, I brought the Y Connector between the motor shaft and the upper frame a few cm lower as the upper frame was quite high - kind of inconvenient.

    Anyways, I've started the test of @Sebastian2 completely new. Here is my feedback:

    1.: Load is completely removed
    2.: I've removed the blue target line to better view the green feedback line, both look quite stable to me.
    POT_Signal_Motor_1.png POT_Signal_Motor_2.png

    3.: I've turned the POTs by hand, motors are physically disconnected from the POTs and switched off.
    I've turned them 2 rounds in one and again 2 rounds in the opposite direction.

    Turning the POT on my Motor 1 (motor is off)

    Turning the POT on my Motor 2 (motor is off)

    4.: As you can see in the Screenshots and videos, the settings are already set (from my last test) for both motors.

    5. I've turned the POTs by hand with motors being switched off. The PWM line is at 0 and stays there, no matter where the green line goes to.

    Turning the POT on my Motor 1 (motor is off), PWM line is steady

    Turning the POT on my Motor 2 (motor is off), PWM line is steady

    6.: I've connected power to my motors and left the POT mechanically disconnected from the motor. I can control the direction and speed of the motor.

    Turning the POT on my Motor 1 (motor is on), PWM line is moving as expected

    Turning the POT on my Motor 2 (motor is on), PWM line is moving as expected

    7.: I've connected the POTs mechanically to the motor and performed the steops described in this link, under the section "inital setup".
    It turned out that Motor 1 was running in the wrong direction, motor 2 was fine. So I sqitched the cables of Motor 1 and now both motors are running in the right direction. Always straight to the blue line no matter where its moving to.

    So war no Arduino disconnections and no unexpected results. I think everything is fine so far.
    @Sebastian2 How do we continue?
  17. Garrett

    Garrett Member

    Joined:
    Mar 14, 2026
    Messages:
    56
    Balance:
    327Coins
    Ratings:
    +31 / 0 / -0
    My Motion Simulator:
    2DOF
    What are your SMC3 settings now? In the screenshots above the Kp is at 100, I would suggest setting it to 250 as stated in the FAQ.

    The PWMax looks ok but you need some PWMin to hold the rig in position. I have a somewhat heavy rig and my PWMin is at 50.

    I set the Fpwm to the max of 35kHz, this is the sampling rate it is updating the position of the axis.

    Increasing the frequency when using IBT-2's will decrease the motor noise a little when he rig is idle.

    Increasing the PWMin when using BT-2's will increase the motor noise when the rig is idle.

    For initial testing, I put weight on the rig and continued to tune in the P values in SMC3. These values do change when weight is applied to the rig.

    If you can't get through a single axis SMC3 test with weight on the rig without a motor dropping out no sense in moving on just yet.

    If the center of gravity is off then gas struts may be needed to assist the motors.

    When ready to test, you can use Simtools and the racing game demo. But to operate your rig you'll need to get the license.

    I found it easiest for initial axis tuning using No Limits Rollercoaster 2. It runs the roller coaster and you don't have to be in the sim like you would a racing or flying game.

    You are very close now.
  18. Sebastian2

    Sebastian2 Active Member

    Joined:
    Dec 17, 2023
    Messages:
    122
    Balance:
    534Coins
    Ratings:
    +67 / 1 / -0
    @_cOdaC_ Sorry I missed your question. Good idea pinging me via DM.

    The videos to #5 on my list show no movement of the PWM line, which is odd. I think this is because the motors were turned off (see top left corner in the video). If you want to be 100% sure you could repeat that step. However, I'm pretty sure the PWM line will behave as expected. The videos to #6 look good, after all.

    While I agree to 95% of what @Garrett wrote, I advise against just setting fPWM to max. Check your driver's specification what the max frequency is it accepts. Don't set anything higher than that in SMC3utils. Doing so could cause random/erratic behavior as the driver will not really understand what the arduino tells it to do.

    You wrote that everything behaved as expected at #7 (after rewiring a motor). That's very good. That means you have a rig thats basically working. You could start playing games with it. Some PID would likely enhance your experience (smoother motion, faster response), but in principle you are ready to enjoy your work. I'd set max limits and clip input in a way that the motors don't try to get into a position where they would collide with anything.

    You said yourself, that you didn't encounter any disconnects or similar. What else is troubling you or keeping you from enjoying your rig?
  19. _cOdaC_

    _cOdaC_ Member

    Joined:
    Dec 20, 2023
    Messages:
    73
    Balance:
    366Coins
    Ratings:
    +9 / 0 / -0
    My Motion Simulator:
    3DOF, DC motor, Arduino
    @Sebastian2 and @Garrett:
    So far I have reported about Motor 1 and Motor 2. So far so good.

    First my feedback to catch up with open question:
    Yes test #5 shows no PWM line as the motors were off. Anyways, as you correctly mentioned @Sebastian2 in test #6 you can see that the PWM line shows proper movement.
    So with those two motors, I'm ready to continue testing as suggested by @Garrett and @Sebastian2. Results will follow.

    Coming to @Sebastian2 's question regarding my troubles.
    My open points are:
    1. Last time I put load on my rig (just the top frame, not even me/my weight) the levers stuttered tremendously. I still didn't find the root cause yet. This is why I followed your suggestion to get rid of the weight and start testing from scratch.
    2. To be honest, just by coincidence, when the weight was still on the motors, I noticed while testing that the rear motor got really hot (~109 degrees Celsius for over an hour). I think the reason was bad settings in SMC3 (due to my poor knowledge, trying to get rid of the stuttering) and the Center of Gravity - I think - was not centered but too far in the back.

    I'm scared to make the same mistakes again, which is why I would love to go step by step with you experienced guys together. I just don't want to destroy my motors.

    Coming to Motor 3... the good news is: After having a temperature of 109 degrees celsius for an hour or so, the motor stopped moving, so I thought it's dead. Today I finally found time to test Motor 3 and followed the same steps that @Sebastian2 suggested here. Steps 1 - 4 were good and successful because of which I din't took any videos of it.
    At step 5 suddenly it happened that the green feedback line and the PWM line seem to stop moving.. or even SMC3Utils is not getting any feedback anymore as both lines suddenly stand still (phase 1 of the issue). The weird thing is though, that although SMC3Utils show no movement of the feedback or the PWM line anymore, I continued moving the POT and the motor continued to respond properly to the POT's feedback, so the Arduino UNO seems to still getting data (phase 2 of the issue). And then after lets say 15 seconds, still moving the POT and motor is running, the motor keeps running at the same speed and won't respond to any feedback of the POT anymore (phase 3 of the issue).

    I have uploaded a video, the first 10 seconds everything is fine. At second 10 of the video you can see that the feedback line and the PWM line just stand still (not hitting the red line). From then on what you can't see is that I still keep moving the POT and the motor responds (getting slower, stops, turns direction, speeds up) and another couple of seconds, only the motor is running, no POT feedback at all.
    I have checked the wiring, reuploaded the SMC3 Scetch (exactly the same as for Motor 1 and Motor 2), restartet Motors and Arduino Uno, I have absolutely NO idea where this behaviour comes from. Any suggestions about how to find the root cause?
  20. Sebastian2

    Sebastian2 Active Member

    Joined:
    Dec 17, 2023
    Messages:
    122
    Balance:
    534Coins
    Ratings:
    +67 / 1 / -0
    Thats really strange. In your video, at the 10 second mark, the SMC3utils stops getting data from the Arduino. Notice the Rx[...] on the bottom center of the window. Before 00:10 it changes quickly, showing the data packets arrive. But after 10s, no new packets arrive. Thats why all the lines in the graph continue horizontally.
    From what you wrote, I understand that the "communication" between arduio, pot and driver continued to work for another couple of seconds. After that, the arduino stopped working at all.

    For now I would assume the arduino has an issue. Is it an original one or is a 3rd party (chinese?) knock off?
    To test that assumption, I recommend switching the arduinos. The one that currently controls your motor 3 should control motor 1+2 and vice versa. Then do the tests #1...#7 again with all 3 motors. See if the trouble goes were the arduino goes, or if it stays with motor 3 and its driver.
    If the trouble is staying with motor 3 and its driver I suggest swapping drivers next. Also, you could swap the cable connecting the arduinos to the hub/pc. You need to find out which part of the chain fails. As you have a working and a non-working chain, swapping parts is a good way to do that.