Measurement and Control

For nostalgic reasons the prototyping hobbyists decided that o1.01‘s carbonized cerebellum is an ATmega324PA 8bit micro controller. We will use it to level and balance the platform both via ballast tanks and adjustable fin stabilizers. The fin stabilizers will be driven by servos. But to start with, we want to control the pumps and valves located in the center tube to inflate or deflate the four balloons, one of them in each ballast tank in the front and the rear of each side tube. To measure the height of the platform above the water surface we use an ultrasonic proximity sensor.

First working test code running an ultrasonic proximity sensor on the micro controller’s development board (September 2019)

Our goal is to adjust the depth of flotation to the medium height between hull and platform and to keep the vessel balanced. For a first real-life test we extended and improved the code, added the required electronic hardware to the breadboards and put everything on deck.

Breadboards with micro controller, etc. on deck.

In this first attempt we use four ultrasonic proximity sensors, one at each corner of the platform. An then, after connect the plug to the power supply, it got really exciting …

Very first test of o1.01 in action. Fail fast, fail often … (poor video quality!)

Since that first test did not go so well, we decided to improve the vessel design by adding some lifting bodies to the vertical carbon sticks carrying the platform. That immediately lead to much better results, but the software still needed a lot of improvement. In the meantime we connected the micro controller to a Raspberry Pi Zero W to enable us to program it over-the-air via WiFi. We also decided to only use one ultrasonic proximity sensor to measure the general height above the water surface and to replace the others with a motion tracking device (gyro) that combines a 3-axis gyroscope and a 3-axis accelerometer to measure the balance status instead.

Charging the batteries of o1.01 during one of the long programming sessions in summer 2020

After many hours of tweaking the code the results became more and more promising, but still we were not quite happy with what we experienced. So finally we decided to add some extra lifting to the center tube and some metal bars underneath it to add some ballast and to lower the mass center. At the end of the summer, we finally managed to get everything working as we expected.

Successful readjustment of balance and level and counteracting the swinging after adding a weight to one corner.