A Meltybrain battlebot is one that can spin its entire body, while performing regular translational movements. Basically driving around normally while spinning its full weight at high speed.
This can provide a higher kinetic impact (depending on spin speed) than a shell spinner, where the bot base remains still underneath a spinning shell, or a horizontal spinner, with a rotating ring around a stationary bot. Because nearly 100% of the bot weight can be used as a weapon, Meltybrain style bots can be fierce.
Here is a video showing the animated mouth and the positioning ability with the accelerometer.
Here is a video tour of the inside and outside.
This page will be updated periodically as I have time, but for now, here are pictures from my build and design process.
I set out on this project to build a meltybrain that could be used without an external light beacon. Since my local combat events are held outside in the sun, I didn’t want to worry about interference issues from sun reflections and the like.
The final design allows use of an accelerometer, manual speed setting, or the tachometer on one of the wheels as the positioning sensor source.
I use the left vertical stick on the transmitter to set the spin speed, right horizontal to adjust pointing direction, and right vertical to move forward. When spinning, the forward speed is based on how fast the bot is spinning. Any push on the right vertical stick moves the bot forward.
The main processor is an Arduino Nano, which pulls data in from the tachometer circuit, MPU6050 accelerometer, and FlySky receiver. To adjust for lighting conditions, the tachometer circuit has an op-amp comparator with an adjustable cutoff. The iBUS protocol is used for communication with the FlySky receiver, allowing one wire to carry 10 channels of R/C input.
The motor controllers are single chip MOSFET-based drivers that I ordered straight from China. They claim to support up to 13 amps! Simple PWM inputs. Datasheet
Future programming may allow for displaying patterns or text on top of the bot, so the LED strip is broken into sections. Note that the center LED is connected directly to power, so that it can be a reliable power/armed indicator.
The basic concept of my positioning algorithm is as follows:
outward acceleration -> [smoothing (average x100) + physics math] = bot rotations per second.
bot rotations per second ->
microseconds since last calculation -> [basic math] = bot angle
previous bot angle (0-360) ->
bot angle +- angle change from R/C = current bot angle
The LEDs and translation timing are based on the angle of the bot, from 0-360 degrees.
When translating, each motor is on for 180 degrees at a time. A good explanation is given here by Team Panic https://www.youtube.com/watch?v=fHZTm-qGcZs&t=752s