See current videos of Pac-Attac and fights on my youtube channel. Or keep reading for pictures and discussion of how Pac-Attac functions.
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.
Pac-Attac uses a line of LEDs to show an animated Pac Man opening and closing its mouth
Here is a video showing the animated mouth and the positioning ability with the accelerometer (of the original Pac-Attac)
Here is a video tour of the inside and outside of the original.
This page will be updated periodically as I have time, but for now, here are pictures from my build and design process for the original. The current version (5) uses many of the same concepts and design, but improves upon the first in several ways.
Most notably, versions 2-5 use brushless motors, which not only provide more torque compared to the original brushed ones, but are way more responsive to sudden speed changes, which is crucial for how meltybrains drive.
Versions 3-5 have a custom PCB for the control, power distribution, and RGB LEDs. This is also when I switched from the Arduino Nano to the ESP8266, a superior chip in speed, size, and connectivity. WiFi isn’t used in battle, but uploading code changes wirelessly is handy.
Version 5 introduces a dual accelerometer set, for on-the-fly switching between a 16G and 200G sensor. Since the 16G sensor is much more precise, this allows for competent positioning while at slow speeds, keeping the 200G sensor for higher RPMs. As the outward G force to RPM equation is exponential, the 200G accelerometer works fine when Pac-Attac is above 1500 RPM or so.
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