Sunday, January 7, 2018

Nemo ROV Prototype: Electronics

So in this blog post, I'll be covering everything from waterproofing the electronics enclosure to wiring the ESCs on the tray for the Nemo ROV. If you haven't figured out by now, the Nemo ROV is my robotics team's 2018 Ranger Class vehicle for the MATE ROV competition. We just finished assembling our prototype a week ago, so I figured I'd explain how all the electronics works (I'm in charge of the electronics :PP)


This is a System Interconnection Diagram, or SID for short, of the ROV. It details all the electronic components that make up the electrical system - that being said, this diagram is not very technical in nature, but it serves its purpose well. Hopefully this blog post will help you understand the ROV electrical sub-system.

Going from left to right, we have the information detailed in the box labeled "Bottomside". Here we have our six Electronics Speed Controllers (ESCs) flashed with custom Blue Robotics firmware for the T100 thrusters. In contrast with traditional motor speed controllers, such as the Sabertooth Dual Motor Drivers or the L298N motor drivers, ESCs have 3-phase AC outputs, not DC. My team and I are using ESCs because we opted for brushless motors over brushed motors, since they are lighter and relatively more efficient.

The Arduino Mega microcontroller sends PWM (Pulse Width Modulation) values to these ESCs to adjust the throttle (faster or slower). Microcontrollers are computers that are dedicated to a specific task - in my case, it's turning motors on/off, driving them faster/slower. I'm considering swapping the Arduino Mega out for an Arduino Duemilanove though. The Arduino Mega has a 16 MHz crystal oscillator, so there is significant lag when sending XBOX controller commands through serial to the Mega and out to the T100 thrusters. The Duemilanove, on the other hand, has a whopping 84 MHz crystal oscillator. The downside of this is that it can only operate at 3.3 voltage, consequently requiring a voltage regulator circuit.

Then, we have our 50 ft-long USB cable in the tether. This connects the host computer in the "Topside" box to the Arduino microcontroller through a communication protocol called Firmata. Basically, I compile and run the code on my laptop, and sends it to the "slave" microcontroller to execute. Using an XBOX 360 wireless controller, I am able to send joystick values to the software on my laptop and down to the microcontroller and out to the thrusters. 

Our camera system is fairly straightforward. The team and I repurposed two car backup cameras with RCA plugs and screwed them onto the frame of the ROV. They are inherently waterproof, so no need to epoxy anything. With 2 USB capture cards, converting the RCA signals to USB to my laptop, I can run a Python script to view the two camera feeds. 

The next step in developing the ROV electronics is auto-depth with PID. I was supposed to implement the PID controller a while ago, but got caught up with designing the ocean bottom seismometer. I also have to swap out the GY5521 module that I currently have with the GY88 sometime soon, because the GY88 also has a temperature and pressure sensor integrated on it. The temperature chip is kind of useless, but the pressure sensor would essentially allow the pilot to see if there is a leak in the electronics enclosure or not.

So yea, that's how the ROV works. We still need to make the electronics tray neater and design and mount our claw and end effectors, so there's a lot to be done. It's nearing the end of January so I'm actually a little nervous about our progress. I accidentally blew our fuse at our first pool test because I set the thrusters to full throttle instead of 47% (we have a 25A current limit), so we don't actually have an ROV that can fully move and see underwater yet. We do have 4 more months thankfully, but it's still cutting it close as I wanted to start practicing mid-February. But I digress...

To close off this blog post, here are some blurry GoPro pics! Hopefully the next blog post will be more positive.

  




No comments:

Post a Comment