Projects Remote Operated Vehicle Remote Operated Vehicle - Generation 1

Remote Operated Vehicle - Generation 1

User Rating: / 0
PoorBest 

 

p { margin-bottom: 0.08in; }code.western { font-family: "Courier New",monospace; }code.cjk { font-family: "NSimSun",monospace; }code.ctl { font-family: "Courier New",monospace; }

Homemade Remote Operated Vehicle (ROV):

A Remote Operated Vehicle, or an ROV for short, is any vehicle that is remotely controlled. This term, however, generally applies to remotely operated underwater vehicles, and that is precisely what this project is. My goal was (and in a sense still is) to create an ROV with live cameras, room for expandability, internet control, full maneuverability, and a true variable ballast buoyancy control system (similar to what Submarines and SCUBA divers use, rather than make a neutral system and use props which is boring).

I took up this project as my High School Senior Project, and I got the prototype working in time. The prototype was fully controllable, operated over a LAN or the internet (even from an iPhone, and no there was not an App for that!), and featured a true variable ballast buoyancy system. The sub, however, needs repair as I burned out two motors (the main propulsion drive and the starboard side steering pump during a dry test that I accidentally left unattended), and I blew out both of the ballast valves (which I homemade due to budget concerns and time constraints, but pretty well made for the time spent making them! - maybe at a lower pressure they'd be fine). I also need to rebuild the frame out of steel rather than PVC as right now I need almost a hundred pounds of dead weight to counteract the ROV's natural buoyancy.

I also want to upgrade the propulsion system to include more pumps for higher strength of motion, and a solid tank Ballast System rather than a SCUBA Diver's BCD Unit which is difficult to control and balance, as well it is not as versatile in lifting capacity. However, the BCD might be retained as an optional module such that if extra buoyancy is needed, then it can dive deflated then inflate underwater to assist in lifting an object.



This page is also used for the grading of my Senior Project, and even though that project has passed I kept the original format for historical purposes - all updates will be posted in a similar, vertical descending fashion.



**DISCLAIMER**: I am in no way responsible for anyone who attempts any of the projects listed here!!! It is easy to be hurt or otherwise injured, or worse, from attempting these projects. I have been doing these for years, and have had much help with some of them. If you attempt any of these I am in no way liable whatsoever!!! On another note, I am not promising the quality of my work for those who attempt these projects: what I did works for me, but may not work right for you, I try to keep everything set up so that they can be general and not case specific, but it is not always the case!



Homemade ROV Work Log

March – May 2010

 

Jimmy Hartnett

 

Introduction

The goal of this project is to make a Remote Operated underwater Vehicle (commonly referred to as an ROV). This ROV will have live cameras, full maneuverability, and full control from an electronic control device on the surface. The applications are very diverse, from an educational venture to an underwater camera rig for film (both entertainment and research filming), to a rig capable of operating tools underwater too long for technical scuba diving. The unit, measuring at 45x20x22 inches, is large enough to support cameras and other items, yet small enough to fit in the back of a large SUV. The ROV has a few main components: the Control Interface, the ROV Main Body, the ROV-to-Surface Tether, and the ROV Electronics. All descriptions before the full work documentation are of the current system, for older design refer to the work log itself farther down the page

The Control Interface

The controls can be incorporated into any electronic device capable of operating over a standard WiFi or Ethernet network, such as a laptop or, for experimental purposes, a Cell Phone. All control is done using a web browser such as Internet Explorer or Firefox. Firefox is my preference because it is easier to customize, and I can use GreaseMonkey to help modify my control web page to make things easier on the ROV web server. These controls allow propulsion in all three dimensions and control over any other apparatuses that may be attached as accessories to the ROV as well as display a live video feed from the mounted cameras. A custom program for a laptop will eventually be written using Visual Basic for simplicity, but at this point in time a standard iPod Touch has done wonders controlling the ROV over a WiFi connection using the web browser. Also, by using a Sony PSP (PlayStation Portable) to view the live video feed also via a wireless connection, it is possible to have all of the controls fit inside one's pocket and even control the unit from anywhere in the world over the internet, the only downside to this is that the live camera feed over the internet would have a potentially low refresh rate when long distances are involved. If a laptop is used as the control interface, it can have real time control and two live camera feeds on display simultaneously.

The Main Body

The hull is a surprisingly tricky and important part of the ROV. Not only does it have to provide structural support for all of the parts, but it also has to be waterproof at depth for extended periods of time while allowing the ability to service the components in the field. Also, counter to intuition, it must be very heavy. Why must it be heavy? With the volume inside the hull, the air per unit volume weighs much less than any water per unit volume, and therefore it adds a significant amount of buoyancy. This must be counteracted in two ways: add weight to the hull, and consume air volume with either a smaller hull or heavier objects which take up free space. My design has multiple considerations: I have an open frame of PVC tubing surrounding the hull reducing buoyancy and making resistance to movement decrease as well as making mounting and removing components easier, I have a double hull for all of the electronics, such that if the primary hull is breached, the secondary hull will hold off until the unit can surface (the double hull also takes up extra internal volume, thus reducing buoyancy); there are two sets of Electrical feed through that keep water out of the electrical wiring and out of the hull by using modular waterproof electrical connectors, each supporting up to two devices, and a fixed and sealed connection between the hulls. The hulls also use a lid opening such that it is easy to open and modify the interior yet the latches provide enough force on the seal to operate at depth. Inside the double hull system, the electronics take up a large amount of room and add weight, reducing buoyancy. After all of this, it still has a lot of room for improvement. The current design uses Pelican Cases as the primary and secondary hulls, specifically a 1600 and a 1520 respectively. These will not tolerate at depth greater than a few feet alone, but by using a double hull system and by adding some modifications, I believe I can make these handle much deeper waters possibly up to 50 feet after factoring in possible problems. Also, with my current design, there is still enough air volume on the inside to require more than 75 pounds of Static Ballast to sink the ROV, without the Buoyancy Control attached which might drop off a few pounds. The final issue I will address in the future is the polycarbonate mounting sheet I used to mount the pelican cases and propulsion. It is only 1/8 Inch and there is only PVC crossbeam underneath it to aid the two horizontal supports on the edges. I will likely both increase the thickness and add in more cross supports in the revised framework I am building

The Tether

Another seemingly unimportant, but very critical, component of the system is the usage of a tether extending from the ROV to the surface, where it is either terminated at a computer or a Networking Device for WiFi or internet control. The most common misconception is that a wireless control would be better in almost all ways. Well, it is not and in fact it is much worse and, potentially, dangerous! Before I explain the benefits of a tether, let me explain why wireless is a bad idea as I cam commonly questioned on this matter by everyone I discuss this project with. First off, even though I am licensed by the FCC (Federal Communications Commission) to build and modify my own transmitters including devices for Radio Control (R/C), the frequencies at which data communication operates with high performance cannot penetrate water without an absurd amount of transmitting power. I may be licensed for up to 1.5 kW of transmitter power, but it is impractical to use that much and problematic. The frequencies which can penetrate water more readily, some of which I am licensed to use, are impractical for several reasons. First, the antennas at these frequencies are very large, some of them several hundred feet long wires. Ok, lets assume I was willing to wire across the surface of the water. Then, the wire would have to remain stable, the insulation on the wire has to be constantly maintained due to corrosion from salt water etc, otherwise a deadly amount of electricity could go into the water, and destroy the transmitter. Now, lets assume that this could be managed and I assure you it can with care, but it removes all practicality from the ROV after adding a significant amount of work. At these frequencies, data transmission rates are relatively slow, and this would make the live video feed near impossible. Also, this would allow for possible interference from other transmitters in the world operating on these frequencies. Where in the world? All over because these frequencies have a high rate of propagation, and will travel for hundreds of miles. On top of all of these drawbacks, if the ROV fails there is no means to surface it without either sending down another one or risking a diver. When a tether is used, it counters all of these drawbacks and adds several features. It allows for a very high, real-time data stream in both directions; it gives a means to retrieve the ROV in case of a failure by using a winch attached to the tether; it doesn't consume a large mount of power; it can be made impervious to interference; it is actually cheaper than the transmitters required for wireless; and it is easier to maintain and operate. The tether on this ROV is comprised of two things; a standard SC Fiber Optic Cable, and a Vinyl Sheath to protect the fiber optics from being torn at. When I get the chance, I will also add in a steel cable to make retrieving the ROV easier once deeper waters are involved. The Fiber Optic Cable has advantages over using copper: it is thinner, lighter, does not carry an electrical current, and can run very long distances without need for an amplifier. With low grade “multi-mode” SC cable, my Fiber Media Converters can support up to a full mile of cable. There also are a few plumbers pipe insulation pieces spread around the tether to add a slightly positive buoyancy. The tether only dives when the ROV dives, thus drag is reduced because the minimum amount of tether is underwater.

The ROV Electronics

The last main components are the Electronics on the ROV end. These electronics take a command from the surface, and actuate the mechanics of the ROV. There are a few subsections here: the Power Supply, CPU, Network Control, Power Switching, Propulsion, Buoyancy Control, Water Leak Detectors, and the A/V System.

The Power Supply is composed of two batteries, a 12 Volt 3.4 Ah Sealed Lead Acid (SLA) battery for the main electronics and propulsion, and a set of 8 AA batteries which are temporarily providing 12V for the Buoyancy control circuit until a second SLA is purchased. AA batteries are not very suitable for such an application, but for pure testing purposes they have done just fine. The buoyancy control unit needs a dedicated power supply for the time being due to the current failsafe method described later on. The primary battery, the SLA, provides 12V to the CPU, A/V system, and the Power Drive Circuit which require 12V, and by using a regulator in parallel with the other devices it also supplies 5V to the Fiber Optic Media Converter and, once the video system is fully installed, 9V to the Ethernet Switch. This SLA battery will be instead used for Buoyancy Control once another, higher capacity, battery has been purchased. All power supply batteries and regulators, as well as the main power switch and fuse, are in an isolated compartment made from a standard Otterbox, which is also waterproof for extra security. This is good in case any battery decides it doesn't want to live anymore and explodes due to a short or other freak occurrence.

The CPU is an Arduino Diecimilla using an ATMEGA168 chip running at 16 MHz. The programming is a combination of my code, and the Inventgeek Ethernet Outlet code which I used as a tutorial for Arduino Ethernet control, which this is my first ever project using. The Arduino runs an HTTP web server using a purchased ethernet shield (the official design) and this ethernet shield is connected via a small CAT5 patch cable to the Fiber Optic Media Converter to communicate over the tether to the surface. When the A/V system is fully operational, all three networked devices will be connected via a standard ethernet switch. The arduino is controlled via a web browser of a simply homemade program which can send an HTTP request. Rather than have the arduino web page have several buttons, I am instead using the URL to control the unit as I can just bookmark the controls, operate on low power internet devices such as a cell phone, and it frees up programming space for future expansion. Even if I wanted the buttons, I got errors I could not resolve when I tried to add more than one button. The arduino has 4 of the 14 digital I/O pins reserved for the ethernet shield, six digital I/O pins reserved for propulsion and buoyancy control, and one pin is being reserved for a Parallax Ping Ultrasonic Range Finder. This leaves few I/O pins unless I use shift registers, but I plan to upgrade the arduino to a Dual Core Design I have used in the past, in which two arduinos communicate via I2C, or possibly to an Arduino Mega. The CPU is located in a dedicated Otterbox along with the Fiber Optic Media Converter to keep it isolated in case of a hull failure or another unforeseen event.

The Network Control is handled the arduino ethernet shield operating in cooperation with a ConnectGear Fiber Optic Media Converter, which converts a standard CAT5 connection to a SC fiber optic connection. To the arduino and any other networked devices, it doesn't even appear to be there. When the video system is fully installed, it will also share the fiber media converter with the Arduino on a micro-sized five port ethernet switch. All devices are accessible via standard networking protocols, and allows the addition of axillary ethernet controlled devices such as a secondary CPU, additional networked cameras, and other accessories.

The Power Switching Circuit takes the signal from the CPU and drives the higher voltage/current devices, such as the propulsion, buoyancy control, and other miscellaneous components. The circuit uses Optoisolators to protect the CPU from a voltage spike which can easily occur with motors and solenoids, and also make it easier to prevent ground loops from forming which could cause a power surge or other form of interruption interfering with CPU operations. The optoisolators in turn drive NPN power transistors which are mounted to a piece of Copper Clad Board which acts as a 12V bus line and as a basic heat sink. I should not need a more proper heat sink for a while, as the transistors are operating far below their capacity and non-continuously.

Propulsion for the ROV is provided with submersible Rule non-automatic Bilge Pumps. These act similar to the Impeller on a jet ski, providing a flow of water out of a nozzle which provides thrust. This keeps the moving parts contained, and less likely to become jammed. However, even though they need less maintenance they need more diligent work when there is a problem. Also, when I make the move to a Propeller Design which offers higher efficiency, I can use the waterproof motors from these pumps to drive the propellers. For forward propulsion, a 1100 Gallon Per Hour (GPH) pump is used mounted aft. For turning, two 500 GPH pumps are used mounted forward on both sides. Reverse propulsion is currently not installed due to cost considerations, but the electronics and electrical connections are there for when I get another pump. A nice feature about this propulsion system is that it has a rather low Impulse (change in force per unit time), allowing for rather smooth movement ideal for a camera system.

The Buoyancy Control for the ROV is currently handles by a modified Scuba Diver Buoyancy Compensator Device (BCD). A BCD works by having a large flexible, though not necessarily elastic, bag which stores air and increases in volume to gain a positive buoyancy. To reduce buoyancy, the air is allowed to escape and thus decrease the bag volume. The BCD I am using supports up to a 45 pound shift in buoyancy. The static ballast is set to have the ROV retain negative (sinking) buoyancy naturally, and when the BCD is half inflated it becomes neutrally buoyant (hovers neither sinking nor Surfacing). When the BCD is fully inflated the ROV becomes positively buoyant and it surfaces. To control the BCD electronically, I have installed Solenoids to actuate the rubber seals on the air intake and air dump valves. This has proven problematic as it is very hard to dial in the spring strength such that the high air pressure from the air tank and BCD do not crack open the valves. Currently, until I can acquire parts for a more efficient and conservative buoyancy control unit, I am letting air seep into the BCD and programmed the electronics to either keep the air dump valve open or open it frequently so that there is never enough air at one given time to have positive buoyancy until either I close the valve via controls, or the air tank loses enough air such that it becomes buoyant itself such that the ROV will surface (yes, when an aluminum Scuba tank drops below a certain amount of air pressure it becomes buoyant. Steel tanks exhibit this behavior as well, but do not necessarily overcome their heavier weight with the added buoyancy). This also is beneficial for the time being because if the electronics fail or the battery dies the ROV will naturally surface because the dump valve will automatically close. This is also why the buoyancy control has a dedicated battery: it runs constantly until I can get proper electric air valves rated for at least 150 PSI.

The Water Leak Detectors are ready to install, but have not been yet due to time constraints getting this project ready for a school grade. However, I will document them as if they were installed because the design will not change and they are next on the list of to-do's. There are multiple detectors: in between the primary and secondary hulls, inside the main electronics compartment, and inside the camera enclosures. The water sensors are just about as basic as it gets: two electrodes, one connected to a positive voltage and the other connected to a pin on the CPU and separated by a non-conductive gap. When water bridges this gap the voltage is registered by the CPU and measures are taken to protect the hardware. The CPU will warn the operator and start to surface automatically unless the operator overrides the alert (and yes, there are times when I might want to do that). To make the water sensors more reliable, I am etching a zig-zag pattern onto a large PCB and placing them in various locations in the different compartments based on these considerations: where water will possibly enter, where the water will collect, and where the water can do damage. The primary water sensors, for the hull and electronics, will be on the same CPU input. However, the other ones will be dedicated for aforementioned reason of intentionally allowing the water to come in (test coatings on circuits, experimental, etc).

The A/V System has yet to be installed, but as with a few other subsystems it is ready to install once I have time. It is comprised of two live cameras, one reserved for piloting the ROV and the other as an auxiliary camera for different angles or a higher quality camera for film use. The pilot camera is a basic miniature camera that I use because it is only $10, so if it fries it is easy to replace. The video feeds from the cameras are standard composite, though with a slight change in hardware I can support HD or Ethernet Network cameras. The composite feed goes to a Sony Location Free video system which supports two A/V devices and sends the video stream over a network. This is similar the the more well-known SlingBox, but cheaper and it supports the PSP allowing for more compact display and control for certain applications. The location free unit also can use IR sensors to control the A/V devices, and I could use this as an alternate method of sending commands in case of a CPU failure or for controlling auxiliary devices such as audio systems, or even the cameras themselves. I am also considering using the audio signal from the pilot camera to perform sonar operations if the parallax Ping does not perform well in this situation, but this remains to be seen.

The Build Progress

The design was conceived just before Spring Break in March of 2010 and I ordered the first components. The ROV in its basic form and functionality was due to my school as of May 3, 2010. This project will be continued for a long time, as I can mix various forms of electronic skills, science, experiments, research, and fun into this project.

Listed below are the components I started out with, including the items discarded from the design and excluding the second design items until farther in the work log. All progress is in Chronological Order unless otherwise noted and rather than make an individual entry for every step, progress was lumped into several day periods of similar or rapid work.

---------------------------------------------------------------------------------------------------------

As of March 8, 2010 I had this design:

the hull was comprised of a Military Ammunition Case that was three feet long, a foot wide, and 6 inches tall. It was already waterproof, and had a very reliable compression latch. The waterproof connectors would be mounted along the top of the case. The electronics board is a wooden plank that had two otterboxes on it to each act as isolated secondary hulls, and attached with them was a paintball gun and CO2 tank. The paintball gun acted as a basic gas valve for the CO2 which would send gas to the variable ballast tanks to drain the water and make the ROV buoyant. The paintball gun would have a simple Check Valve to ensure that no gas or water returned to the paintball gun.

The control interface would be a metal panel containing a 25 key membrane keypad, a few hard buttons, and a ROV kill switch. This panel was designed to mount to the inside of a pelican Case without sacrificing the water seal of the case. Also, the panel would be removable so the case could be used for another purpose.

The Ammo Case

ammo case

The Otterbox.

Otterbox

Otterbox Opened

 

A Bilge Pump used for Propulsion.

Rule 500GPH Bilge Pump



A DIY Rubber Gasket Kit to aid in waterproofing connectors

DIY Gasket Kit



A standard PVC Compression Fitting used to bring in and seal the fiber optic and CO2 connections

PVC Compression Fitting



An indicating Desiccant (I know United Nuclear is more expensive, but I buy from them because they containers look nice and I collect odd chemicals and elements and hate the complaints of the “ugly science stuff” from my parents). This is used to help fight condensation from occurring inside the compartments


Drierite



The 2 inch Rubber Boot I originally planned to use to help mount the camera system, but realized it was prone to failure and impractical.

Rubber Boot



 

April 2, 2010 progress report.

The PVC Frame has been but and built, the Electronics Board assembly has begun, and I have made a schematic for the physical Control Panel. The control panel uses an Elexol USB I/O 24 MKIII to have a computer communicate via USB with the 25 key membrane keypad, as well of the hard keys and panel indicators. I have used this circuit before but I had to update it due to the different operating environment, but overall it is the same except that instead of transistors I am using Opto-couplers because they are cheaper and they are easier to work with. However, the control panel will be finished at a later time because I can use a basic browser interface for now. Once my school grade has been given and the priority parts assembled, I will work on the alternative controls such as a custom panel.

 

The Control Panel Schematic.

Control Panel Schematic_01

 

 

The PVC Frame just assembled


PVC Frame 01

PVC Frame 02PVC Frame 03



The start of the Main Electronics Board, visible are the paintball gun, CO2 tank, and CPU/Networking Otterbox

Main Control Are 01



The Power Section of the Main Electronics Board. Outlined is the location of the Power Supply Otterbox, and the Power Drive Relays with one relay mounted for reference.

Main Power Area, unpopulated



The Arduino with Ethernet Shield, and the Fiber Optic Media Converter being test fitted in the Otterbox. In between the Arduino and the ethernet shield is the Screw Shield which makes prototyping easy and I actually kept it for the final design because it works very well and it is easy to modify connections.

CPU Guts

The Electronic Guts of the Paintball Gun. The large silver object is essentially a Coil Gun powered by a capacitor hidden beneath the hanger's tape. To control the gun two leads are soldered in parallel with the micro-switch used in the trigger

Paintball Gun Electronics

 

April 17, 2010

I went to a local Plastics Supplier and purchased a large sheet of 1/8 inch Polycarbonate (Lexan essentially, but I didn't get the GE brand). This is the mounting platform for the various components and is held in place by a large number of zip ties, which have proven to be invaluable. At a local Lowe's, I found the unexpected: Rubber Molded Waterproof Electrical Connectors, rated up to 120V at 15 Amps. They obviously weren't made to be submersed in this way, but considering the same company actually makes a line of ROV connectors, with the Rubber Molded being extremely simplistic and popular that they might have adapted it, I figured that with a little help these things would work great. I even did a water test, after buying just one to test with, in which it sat at the bottom of my pool for over 12 hours with not leaking whatsoever, and that was without adding any kinds of sealant and such – just the way they were purchased. Unfortunately, they are not cheap: a male/female pair runs for around $26. Considering I want this ROV to last, and that they offered an extreme amount of convenience and modularity, I went ahead and bought three for the ROV as well as one for general use on outdoor electrical cords. I also mounted the 500 GPH pumps and painted the first coat on the frame.

To mount the waterproof connectors, I drilled a small pilot hole, then went up to the largest bit I have, ½ inch. Then I tried to use a Dremel, but the steel of the Ammo Case is too strong and relatively thick. I then resorted to an Improvised Spoon Drill, using an old pair of wire cutters (yes, they work as a spoon drill but don't use a pair you care about!). I then made a gasket out of a rubber sheet and, after adding a little silicone sealant, mounted the connectors. This is how I did the first two connectors.

The mounted connectors on the Ammo Case:

Mounted Connectors Ammo Case 01



The Ammo Case mounted to the Frame on the polycarbonate sheet, after the first coat of paint.

First Hull Assembly Overview 1



The mounted 500 GPH Bilge Pump for turns.

Mounted Bilge Pumps



 

April 18, 2010

I started building the Power Drive Circuit for the electronics board and I installed and sealed the wiring between the CPU Otterbox and the rest of the board. I used TIP101 transistors which I have used for countless applications without issue. However, I think part of the reason I never had issue is that I never had many connections close together as usually I just need one for a small circuit that isn't as sensitive as this. Needless to say, after building and doing a basic test of this board it was obvious that I needed to just get some standard NPN Transistors, but I decided to finish the rest of the surrounding board to avoid putting off the rest of the work. One thing this part of the build taught me is that Rainbow Ribbon Wire is Awesome! - Especially when breaking out of ribbon wire is needed and a large number of wires are present, I may be using a dip connector on one end but I have to be able to tap directly into the wires in the future.

The CPU Otterbox with wiring installed. As it turns out I later noticed at the end of the build that I skipped a pin on the Arduino, but that pin was not used until final testing so I never noticed!

CPU Wiring



The Power Connectors for the CPU and Fiber Media Converter soldered and wires run to the power supply. The connector on the left is the link between the CPU and Power Supply for 12V. I am using these connectors for all 12V devices, and other voltages which are unique to individual devices simply have a strait wire run to their respective connectors.

Power Connectors



The Rainbow Ribbon Wire going into the Otterbox, with plenty of Silicone Sealant as this is before the design change to have a double hull around everything, so the Otterbox had to be sealed as it was the second hull.

Ribbon Cable Seal



The first revision of the Power Switching Circuit. The blank Copper Clad PCB acts both as a bus line for the 12 V+ and as a basic heatsink. Once the transistors are operating more aggressively after upgrades are made, this will be replaced. This is also before I decided to use optoisolation on all of the Arduino Pins, especially after a couple of close calls with voltage shorts (remember how earlier I mentioned problems with ground loops? Well the Arduino and the Power Switching are powered by the same 12V and, due to the laws of parallel resistance, the current traveled through both the motors AND the Arduino!) The optoisolator in the corner is for the paintball Gun as the voltage across the micro-switch in the trigger is very low and there was blatant concern for voltage spikes due to the coil-gun-ish design of the CO2 triggering mechanism. For the Current schematic scroll just a little bit down in the next update which has the Power Switching Board Build, as this one has been replaced and I never made a computer schematic for it to begin with!

Power Drive Board gen1



 

April 20, 2010

I rebuilt the Power Switching Circuit, and used a fresh piece of green Protoboard which turned out to be a death sentence for two day's worth of work. I also installed Terminal Blocks for the connections to the pumps etc so that when I remove the board from the ammo case I can take the board away from the case as I work at a desk and just make general maintenance and testing easier. I also mounted a fuse holder and a three position key Switch (on-off-on) onto the Power Supply Otterbox. Why a key switch? With a key switch, because it is made for security it is very difficult for it to be affected by jerking, motion, and so forth. Also, it has a very low profile, and it keeps me from rapidly turning anything on without thinking which has happened in the past. I have not yet installed another power switch to use between the time of activating the key and loading the electronics into the case, but that was a bonus feature I didn't care about then but do need to add in the future.

The fuse holder and key switch.

Power Fuse and key switch

The new Power Switching Circuit (minus transistors)

Power Drive Board from Hell!

Power Switching Circuit Schematic:


Power Drive Board Schematics

 

 

April 22, 2010

I performed a test of the Power Switching Circuit once I installed the transistors, but a serious problem occurred and I was luck I installed the fuse already. I know that many protoboards come with traces in one direction, but those traces are readily visible and usually not lacquered over and I have never seen a board like this. Not only were these traces very small (smallest traces I could etch if I tried) and lacquered over making them harder to see, but they ran criss-cross shorting every single hole to every single other hole! I could understand them doing that if the traces were readily visible, but they weren't and I had to solder outside the night before due to fumes stinking up the house so visibility was down. But, I just moved on to testing my water seals with the newly installed third waterproof electrical connector and the PVC Compression Fitting. To install these I used tin snips to help widen the hole as the spoon drill method took over an hour a hole. As it turns out, these seals did not want to hold at all. The holes were slightly irregular and deformed such that making the proper seal was very difficult, especially due to the difficulty in shaping the steel of the ammo case. Therefore, I decided to move on and use a couple of Pelican Cases. The larger 1600 will be kept for this job, while the inner 1520 is used in such a way that I can still use it for other things. I also mounted the 1100 GPH bilge pump for forward propulsion. I also acquired a BCD from a local scuba shop for cheap, so I will be modifying that for Buoyancy Control instead of using a paintball gun system

Water Tests of the Ammo Case unit:

First Water TEst 1

 

I used a very large number of Zip Ties to hold the ammo case to the frame and prevent sliding. The zip ties worked well, but were too dificult to maintain but I later found after this test oversized tip ties that the case would only need a couple of to work.

First Water Test 2

To do a basic propulsion test while solving my waterproofing issues, I spliced a female waterproof connector onto the end of a standard extension cord. The propulsion works fairly well, nice steady speed - well, until I fried the forward propulsion and one of the turning motors while doing a dry test a couple of days later.

First Water Test 3

First Water Test 4

 

 

Here are the Pelican Cases with connectors being mounted. Mounting and working with these cases is a lot easier than the steel of the ammo case.

 

 

The Scuba BCD:

 

The Fiber Optic tether has been built, and run through a PVC End Cap full of sealant.



April 23, 2010

I picked up some connector coating that is similar in properties to heat shrink tubing, but applied as a liquid. I also picked up some circuit board coating and an RTV dispenser. I sealed the waterproof connections onto the Pelican Case, installed bolts in the inner case to act as a feed through for the electrical power and used some circuit board coating to seal over that (nasty stuff, but it works) and I rebuilt my power switching circuit on a breadboard due to time constraints.

The God-send easy-to-use dispenser of RTV



A sealed waterproof electrical connector



The Fiber Optic Feed Through



The secondary hull Electrical feed through



The BCD control valve assembly I will be modifying



 

April 26, 2010

I started testing out my Arduino Code, but had problems making the connection between the arduino and the computer stable. It would work, then it wouldn't work and was very unpredictable. I then pulled out an old router and set the Arduino gateway to the router to see if things would become smoother, and they did. Plus, with the addition of this router I gained WiFi control over the unit. I even got the iPod touch control working within minutes of adding the router. The next issue was adding more than one button to the arduino web page. I have never used the arduino ethernet shield before this project, so forgive me if it is something obvious that I am missing. What I ended up doing is having one button (for show) and controlling everything with the URL commands. Here is the Arduino code (with old additions of code commented out, but left for historical purposes):

 

NOTICE: This code has been reported to not compile under the new versions of the Arduino IDE, check the comments for details - I will update it with working code for the modern compiler once I restart this project for the summer!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <WString.h>

#include <Ethernet.h>

 

// This code was modified from the Network Outlet code available from InventGeek to suit an ROV Program

// I modified this code because I used it as a basic tutorial for Arduino Ethernet coding

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address

byte ip[] = { 192, 168, 1, 110 }; // ip in lan

byte gateway[] = { 192, 168, 1, 1 }; // internet access via router

byte subnet[] = { 255, 255, 255, 0 }; //subnet mask

Server server(80); //server port

//int speakerPin = 13; // speaker connected to digital pin 9

 

//int ledPin = 1; // LED pin

int ballastfloodpin = 4;

int ballastdrainpin = 2;

int rightbilge = 3;

int leftbilge = 5;

int reversebilge = 7;

int forwardbilge = 9;

 

//int inputPin3 = 3; // choose the input pin (for a pushbutton)

int val = 0; // variable for reading the pin status

 

boolean LEDON = false; //LED status flag

String readString = String(30); //string for fetching data from address

void setup(){

Ethernet.begin(mac, ip, gateway, subnet);

// pinMode(ledPin, OUTPUT);

// pinMode(inputPin3, INPUT); // declare pushbutton as input

pinMode(ballastfloodpin, OUTPUT);

pinMode(ballastdrainpin, OUTPUT);

pinMode(rightbilge, OUTPUT);

pinMode(leftbilge, OUTPUT);

pinMode(reversebilge, OUTPUT);

pinMode(forwardbilge, OUTPUT);

digitalWrite(ballastfloodpin, LOW);

digitalWrite(ballastdrainpin, LOW);

digitalWrite(rightbilge, LOW);

digitalWrite(leftbilge, LOW);

digitalWrite(reversebilge, LOW);

digitalWrite(forwardbilge, LOW);

Serial.begin(9600);

// pinMode(speakerPin, OUTPUT); // sets the speakerPin to be an output

}

void loop(){

Client client = server.available();

if (client) {

while (client.connected()) {

if (client.available()) {

char c = client.read();

if (readString.length() < 30)

{

readString.append(c); //store characters to string

}

if (c == '\n') { //if HTTP request has ended

// ledstatus(); //LED Status Sub

//htmlcontent(); //LED Html Content Sub

floodstatus();

drainstatus();

rightstatus();

leftstatus();

reversestatus();

forwardstatus();

// htmlcontent(); //LED Html Content Sub

readString=""; //clearing string for next read

client.stop(); //stopping client

delay(100);

}

}

}

}

}


void htmlcontent(){

Client client = server.available();

client.println("HTTP/1.1 200 OK"); // now output HTML data starting with standart header

client.println("Content-Type: text/html");

client.println();

client.print("<body>");

//client.println("<form method=get name=LED><input type=checkbox name=L value=1>Activate Outlet<br><br><input type=submit value=submit></form>");

//client.println("<form method=get name=LED><input type=checkbox name=L value=1>Flood Ballast<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=LED><input type=checkbox name=L value=2>Drain Ballast<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=LED><input type=checkbox name=L value=3>Right Bilge<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=LED><input type=checkbox name=L value=4>Left Bilge<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=LED><input type=checkbox name=L value=5>Reverse Bilge<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=LED><input type=checkbox name=F value=6>Forward Bilge<br><br><input type=submit value=submit></form>");

client.println("<form method=get name=DIVE><input type=checkbox name=L value=1>DIVE!!!<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=SURFACE><input type=checkbox name=L value=2>Surface<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=RIGHT><input type=checkbox name=L value=3>Right Bilge<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=LEFT><input type=checkbox name=L value=4>Left Bilge<br><br><input type=submit value=submit></form>");

// client.println("<form method=get name=REVERSE><input type=checkbox name=L value=5>Reverse Bilge<br><input type=submit value=submit></form>");

// client.println("<form method=get name=FORWARD><input type=checkbox name=F value=6>Forward Bilge<br><input type=submit value=submit></form>");

// client.print("Outlet status: ");

// if (LEDON)

// client.println("ON");

// else

// client.println("OFF");

client.println("<br ><br >");

client.println("</body></html>");

}


void floodstatus(){

if(readString.contains("L=1")) //lets check if LED should be lighted

{

digitalWrite(ballastfloodpin, HIGH); // set the LED on

digitalWrite(ballastdrainpin, HIGH);

//LEDON = true;

// delay(1000);

// digitalWrite(ballastfloodpin, LOW);

Serial.print("DIVE");

}else{

//digitalWrite(ledPin, LOW); // set the LED OFF

//LEDON = false;

}

}

void drainstatus(){

if(readString.contains("L=2")) //lets check if LED should be lighted

{

// digitalWrite(ballastdrainpin, HIGH); // set the LED on

//LEDON = true;

// delay(1000);

// digitalWrite(ballastdrainpin, LOW);

digitalWrite(ballastfloodpin, LOW);

digitalWrite(ballastdrainpin, LOW);

Serial.print("SURFACE");

}else{

// digitalWrite(ledPin, LOW); // set the LED OFF

//LEDON = false;

}

}

void rightstatus(){

if(readString.contains("L=3")) //lets check if LED should be lighted

{

digitalWrite(rightbilge, HIGH); // set the LED on

//LEDON = true;

delay(6000);

digitalWrite(rightbilge, LOW);

Serial.print("RIGHT");

}else{

// digitalWrite(ledPin, LOW); // set the LED OFF

// LEDON = false;

}

}

void leftstatus(){

if(readString.contains("L=4")) //lets check if LED should be lighted

{

digitalWrite(leftbilge, HIGH); // set the LED on

// LEDON = true;

delay(6000);

digitalWrite(leftbilge, LOW);

Serial.print("LEFT");

}else{

// digitalWrite(ledPin, LOW); // set the LED OFF

// LEDON = false;

}

}

void reversestatus(){

if(readString.contains("L=5")) //lets check if LED should be lighted

{

digitalWrite(reversebilge, HIGH); // set the LED on

//LEDON = true;

delay(6000);

digitalWrite(reversebilge, LOW);

Serial.print("REVERSE");

}else{

// digitalWrite(ledPin, LOW); // set the LED OFF

// LEDON = false;

}

}

void forwardstatus(){

if(readString.contains("L=6")) //lets check if LED should be lighted

{

digitalWrite(forwardbilge, HIGH); // set the LED on

//LEDON = true;

delay(6000);

digitalWrite(forwardbilge, LOW);

Serial.print("FORWARD");

}else{

// digitalWrite(ledPin, LOW); // set the LED OFF

// LEDON = false;

}

}

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

The Router (yes, it's a microsoft router and I want to replace it eventually but it's doing its job for now even though the buzzing it makes is VERY freaking annoying!))

Stupid, Buzzing Microsoft WiFi router

 

 



 

April 30, 2010

 

I finally got the Solenoids for the BCD unit control installed, but as it turns out the springs in the solenoids are too weak and the valves are leaking air. I can use this to my advantage to some degree, primarily that because the air intake valve is pretty leaky, I can have the unit become naturally positive in buoyancy if there is a failure, and when I want to dive I just leave the air dump valve open. This is a horrible solution, but it worked for testing purposes until I can buy proper electronic valves.

The theory, but not actual operation due to problems, of the BCD control works by having the solenoids from the sprinkler valves pull at a rubber seal which blocks the passage of air. When The air intake valve is opened by the arduino, the flexible bag of the BCD inflates causing the buoyancy of the ROV to become Positive. When the valve is closed it retains this positive buoyancy and keeps floating. When the air dump valve is opened, the flexible bag deflates and the ROV starts to sink. Stop the air at the right point and the ROV become Neutrally Buoyant, which means that it will neither float nor sink above the current point. This is how objects in the water can hover. When in this state, a small amount of propulsion can adjust the hover depth pretty easily though this has not been implemented yet. When the air valve is opened more, the ROV becomes negatively buoyant and sinks.

 

The modified BCD Controls.

Homemade Gas Handling Valves

 

May 2, 2010

I did a full systems test in the water today with a friend, and suffice to say there were a few problems. The unit worked overall, but the buoyancy control leaks grew worse such that it barely functioned at all. This version of the buoyancy control was only a proof of concept, the next version will be much better. Also, as it turns out I blew out two of the bilge pumps wile doing dry tests. I got a phone call while running tests before putting the unit in the water, and that distracted me for 30 minutes while the circuit was running due to my forgetting to turn it off. The pumps still operate, but very poorly. I will have to replace them. I would post video, but I want to replace the pumps first so it is easier the see it operating.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

May 4, 2010

Today I started drawing out my new frame design, which will be built once finals are over. The new frame will be made of steel, which will add both strength and ballast, and will have a few changes. The primary change is in the dimensions such that the Pelican Case is easier to put in and take out, or possibly even be such that I can open the case for servicing while it is still on the frame. Second big revision is the addition of vertical supports on the bottom in the middle, so the force of the weight is turned compressive. Also, I will likely switch over to fixed Variable Ballast tanks for Buoyancy Control, but I have to get proper electronic air valves before I can do that, as my current valve assembly would not fair well. The two variable ballast tanks would sit right underneath the top of the frame, and run lengthwise. These tanks would work more like a traditional submarine system: on the surface, the tanks of a fixed volume are full of air and the air inside of it is keeping water out by the fact the air cannot get out. To dive, a valve at the top of the tanks are opened and the air can naturally flow out of the top as water comes in from the bottom openings in the tanks. When the need arises to surface, a valve on the bottom of the tanks opens after the top one is closed to let air in from the bottom which displaces the water, which flows back the way it came out the bottom.

A thrown together MS Paint Drawing:

Whoops, Google sites won't let me upload it right now (maybe too many pictures at once?) - it will be up soon, though I might just wait to make a much better on

Add comment

use common sense when commenting, it really isn't that hard. Keep it PG

Security code
Refresh