To the left is the final design for our transport mechanism, which we named "Link". This cart uses a DC motor under the main bed that's connected to the back wheel axle via a cambelt and pinion. The wheels are 3D-Printed to a specific radius determined by the maximum speed of the motor, and the board was laser cut to fit the size of our axles.
Physical Design
The goal of this project was to create a device to transport a bar across a variable distance as fast as possible without toppling the bar resting on the devices surface. Teams are not allowed to secure the one foot bar in any way and it must be standing on its end. In order to achieve this motion, a dc motor with an encoder and a pinion was provided, as well as two axles (one with a pinion) and a cambelt. For the logical control, teams were also given an Arduino and a motor driver control board. We designed wheels, bearings for the wheels, and a mount for the motor which all sat underneath the assembly.
In order to fabricate this device, we needed to use a relationship between the radius of the wheels and the maximum rotation speed of the motor. Assuming a maximum rotation of 300 rpm by design, we calculated that the maximum linear speed we would need to obtain is 5.18 m/s, and given that our motor had 300 rpm, we needed wheels that were at least 0.165 ft radius to achieve that maximum velocity.
Motion Study
The next step of the project was to learn how to control the motor behavior to achieve a constant linear acceleration and deceleration across the set distance and make that distance / acceleration relationship part of the variable code.
The first step of this project was to calculate a linear acceleration that would not topple the bar. This was done using a Solidworks Motion Study (and checked by hand calculations). After assembling the model with the bar on top, the cart will be subjected to a linear change in acceleration and the moment that the reaction force on the front end of the bar reaches zero is the time that the acceleration value is the maximum before the bar will tip. Since the bar will tend to tip backwards during this acceleration, we use the reaction force at the front end of the bar to determine the motion of the bar (so if the rection force becomes negative in the model, the bar will tip over)
The reaction force in the model is zero at 1.94 seconds, which corresponds with an angular acceleration of 935.44 deg/sec^2 , which is 16.25 rad/s^2 and then using our wheel radius of 0.165 ft we can confirm that our maximum linear acceleration is 2.68 m/s^2. We knew there would likely be some variation in this to the actual model due to imperfections like bumps in the floor, construction, or torque on the motor.
Link to Final Motion Study File: drive.google.com/file/d/1nJza0px04oaeMyMWtR61KyGN83vZIykA/view?usp=sharing
Code
The code relies on a feedback loop from the motor control to check the speed of the motor and adjust accordingly, increasing to output a constant acceleration. Using a function called "getSpeed" (which we learned in class) and the elapsed time since the beginning of the program, the motor transports the cart to the exact distance described in the code using the wheel radius as a reference. This transport consists of a speeding up and slowing down segment which at exactly half the distance.
To the right are some of the variables in our program that were changed between cycles such as the distance. You'll notice the acceleration is at 0.75 ft/s^2 since this code was from early test cycles - we incrementally worked the device up to it's maximum real acceleration since our device initially did not function at our theoretical acceleration.
Testing
Once the initial testing was done, there were minor modifications made to improve the consistency of the device. These included adding spacers to the wheels to keep them from sliding on the axle and rubbing on the bearings (which was achieved with gluing nuts around the wheel's axle) and drilling out the holes of the bearings to decrease resistance and torque. This drastically improved the reliability of our device and made tests more consistent. The video to the right was during an initial test of the device before these modifications were made, hence it's slower speed. The photo at the top of the page demonstrates the alterations, including securing the Arduino and motor control board to the base plate to prevent vibration.
Final Thoughts
To the right is the compiled video of our demonstrations at both 10 ft and 5 ft, which took approximately 13 seconds and 9 seconds respectively. Our team made great improvements in the design as a result of the initial tests, and although the code was a challenging aspect of the project, we were able to produce a device that quickly and reliably transported the beam to both distances in a very short period of time without tipping over. I believe that our robust redesign aided the reliability of our final device, and our the responsive nature of our code allowed for swift and accurate distance to be traveled at high speeds and constant acceleration. We also made a point of minimizing the time the cart is stopped on the other end of each test, which allowed our time to be shorter than most other groups.
The Four Linkz: