In my Engineering Design (MAE 321) course, the final project was to build a small submarine with a $1000 budget to meet certain specs and go through an obstacle course. Final Report Abstract:
"Unmanned underwater vehicles (UUVs) are critical to furthering humanity’s interests in fields from the military to oceanography. The purpose of this final project was to design, manufacture, and test a size-limited UUV to accomplish certain performance-based metrics. Throughout the Preliminary and Critical Design Reviews, Team Blue [our team name] held to its original mantras of reliability, simplicity, and accessibility. A design reliant on PVC pipes to house electronics, foam to accomplish neutral buoyancy, and four fixed motors was presented in the Preliminary and Critical Design Reviews. During testing day, the vehicle proved operational underwater for approximately 25 minutes, although there were difficulties in controls and buoyancy. This report summarizes the design and testing processes that led up to the final product, and analyzes the shortcomings of the final test."
The team consisted of 11 students and we broke down to down into buoyancy, propulsion, and frame sub teams. In summary, buoyancy focused on addressing weight distribution of the vehicle such that it remains stable and upright when in the water, propulsion addressed the application of motors and controls of the device, and frame accounted for the form, assimilation, and structural integrity of the vehicle. Naturally, I chose to be on the propulsion team which is why I will focus on the motors, electronics, and controls when summarizing the project.
My personal contributions included (but were not limited to):
My team was successful in programming building an Arduino controller from discrete components to control the propellers on the submarine. Unfortunately, during the final test day the motor controller overheated, the wires melted and created a short which fried the motor controller and battery due to the tight packing in the submarine. These were the requirements for the submarine to succeed:
Requirement | Details |
---|---|
Maneuverability | Horizontal Speed: 1 m/s Vertical Speed: 0.5 m/s Rotation Speed: 0.66 rev/s Maintain low speed |
Max Size | Volume: 10 L Dimension 40 cm |
Operation | At depth of 3m For time of 30 min Power on board |
Stability | Minimal pitch and roll while moving |
Budget | $1000 |
Before we split off into sub teams, we first had to decide what we wanted our submarine to look like. We wanted the vehicle to be easy to control, to meet the requirements, to be stable and not to be too expensive. At first, the aerospace engineers inside of us wanted to have four motors in the center because a submarine is basically just an underwater quadcopter right? Yeah, not exactly. We realized immediately that this would be too expensive and complicated.
We then decided to have two propellers in the center for vertical thrust and two propellers in the rear for horizontal thrust. This idea was much simpler and less expensive.
Once we figured out where our motors would be placed, we needed to think about buoyancy. We could not have the vertical propellers be the only upward force because that would require too much power and make pitch difficult to control. To maintain neutral buoyancy, foamular 150 foam was added to the submarine design because it was durable, easily machinable, could hold a rigid form, and was affordable which was a major consideration given our budget limitation.
At this point, we split off into sub teams to work on our project. Once our basic final design was solved, the buoyancy and frame teams tweaked the final shape of the submarine to make it neutrally buoyant, hydrodynamic and less expensive.
The first challenge the propulsion team faced was finding the appropriate electronics necessary fit in the small space allowed and give the vehicle sufficient power. We needed to find motors that fit the requiired thrust. However, creativity was also important in finding the means to power and control these motors. This was the balance in question when decisions were made about the electronic components of the vehicle. The propulsion team was also tasked with creating an elegant way to control the vehicle as well as arranging all of these electronics within the waterproof body. For the final vehicle design, we decided that we needed 4 motors, 4 electronic speed controllers (ESCs), 2 batteries and a controller system.
We used Blue Robotics M100 motors for the read horizontal propulsion system because they are waterproof (they are brushless), designed for underwater use, will not rust which allows for a longer lifespan of the vehicle and rely on bearings which are ungreased and uses water for lubrication (for more specs on the motor, you can visit the website here.)
Blue Robotics T100 Thrusters (same as M100 motors but mounted on a cowling) were chosen for the vertical motor system.
In order to safely operate and control the selected motors, electronic speed controllers (ESCs) were necessary. The ESCs take in a PWM value and translate that into a three phase signal for the motor. Thus, the three motor wires are powered in a certain order and for a certain amount of time such that the net current through the motor is that needed to produce the desired thrust. We chose the Blue Robotics Basic ESC (more info on the ESC here) to pair with each of the motors. The motor manufacturer's recommendation and the high current rating were the main reasons this driver was selected. Calculations showed that the highest current that would ever be required was 6 amps, thus the unit would be much less likely to overheat and damage any of the other components in the pontoons of the vehicle. These ESCs also came preprogrammed with forward and reverse functions so that the motors could be run both ways.
Two lithium polymer batteries, each with a 4000mAh capacity, 11.1V 3S setup, and 20C current rating were chosen. After calculating the power needs, it was determined that these batteries would provide around 30 minutes of runtime at maximum speed and around 70 minutes of runtime at the minimum required speed. Lithium Polymer batteries because they are inexpensive when compared to other battery types of similar capacity and are the standard in remote control vehicles. They are also more compact meaning they have a high power density.
The control system for the submarine was very much designed with the user in mind. When designing the user interface, the goal was to keep it simple and intuitive yet comprehensive so that the user could make the vehicle do anything that was needed without getting bogged down by the controls. Existing, pre manufactured controllers were considered but this would mean having to work with code found online to interpret the serial signals output by the controller and translate them to something the ESCs could understand. Thus, it was decided that a controller would be designed specically for the vehicle. Creating a new controller also allowed for a top down approach to the build.
Each of the controls joysticks, buttons, and sliders is a passive device that outputs a direct digital or analog signal that can be read by the appropriate pins on the microcontroller. This means the user can easily add or remove a control to change the functionality or could simply change the code to adjust it without having to go through lines of text in complicated online code.
The Arduino Uno R3 was chosen since it is very cheap but has more than enough digital and analog pins for this vehicles purposes. We also decided that the Arduino should be in the controller rather than the sub because it would be easier to remove and would not require power from the batteries in the submarine. The Uno also runs on a USB cable and has an internal five volt regulator to power the pins meaning it is compatible with the five volt logic of the ESCs.
The Uno can be programmed using Arduino IDE which is very similar to C and has preset functions for PWM and I2C. The I2C is useful since an LCD screen was temporarily considered for user feedback on the controller and the I2C communication protocol would only require two pins for interfacing. This screen would have provided information about the state of the motors and how fast the user was running each one but was not included due to time constraints and to leave the two I2C pins available for any sensors the user may want to add. If the Uno were upgraded to a larger model, such as the Mega 2560, the screen could be considered again since there would be 54 digital pins to work with.
The code's main objective was to control the horizontal and vertical motors the vertical motors. The analog output from each joystick managed each rear horizontal motor separately. Since the Arduino reads a value from 0-1023 in its analog pins and has to output a pulse width modulated (PWM) signal between 1270 and 1730, a mapping function was used that allowed for the conversion of the signal input to an output of the proper range. The values 1270 and 1730 were chosen because they corresponded with the maximum value that would draw a current value such that the batteries would not be drained in less than 30 minutes.
Like the horizontal motors, the vertical motors were fed PWM signals between a 1270 microsecond pulse and a 1730 microseconds pulse. The code divides this range into 20 even steps of 23 microseconds. When the top button was pressed, the vertical motors would increase in PWM by one step and when the bottom button was pressed, the vertical motors would decrease in PWM by one step. The center button would immediately send a PWM of 1500 to both motors and stop them completely.
The vertical motors were also controlled by the sliders. The slider on the left controlled the front vertical motor and the slider on the right controlled the back vertical motor. When the sliders were in their center positions, the code was set to run as if the sliders weren't there but when one of the sliders is moved, the PWM of its corresponding motor changed accordingly. This allows for the user to control each vertical motor separately. For example, if both motors were to run at a PWM of 1592 and the user increased the right slider by a small amount then the user could have the front motor running
at 1592 PWM and the back motor running at 1650 PWM. This is especially useful for pitch control and to compensate for buoyancy errors.
The controller was designed to have two additional buttons for clockwise and counterclockwise spins. These buttons allowed the user to turn one horizontal motor in one direction and the other in the opposite direction in such a manner that the submarine would turn on a dime in the desired direction. These would have been pre-calibrated so that the sub remained stationary beside the rotation.