My Objective for this project was to create a battlebot that was competent enough to compete in the 2017 DragonCon Robot Battle Competition. I wanted to make sure I could drive it right side up and upside down, as well as have a bulldozer-like pushing mechanism on the front of the bot.
The Robot Battle rules are fairly simple and easy to follow. The biggest limitations I have is (1) 3lb weight limit and (2) Can't have super dangerous weapons on it. With these two in mind, I set out to make a cool robot.
For this robot, there’s 3 main parts of the design. First is the code, second is the electronics, and third is the mechanical design. I first got a rough idea of what I wanted the robot to look like and operate. I decided that, because it’s my first robot, I’d make it a fairly standard pusher robot. I thought I may put some sort of spinning disk on it as an additional weapon, but that would come later if at all. After I got the initial design for the robot in my head, I created a very basic 3d rendition of it in solidworks. After that, all my time was devoted to the electrical and coding systems.
Because the electrical and coding systems are so closely related, I will discuss them together. I knew that I wanted bi-directional movement on all my wheels, so I opted for tank controls on this one. To create this bi-directional movement, I used SparkFun’s SN754410 H-Bridge. The H-Bridge is an integrated circuit (IC) that allows you to move two motors in both directions with sending certain voltages to specific pins on the IC. You are also able to control the speed if you hook the pins up to a PWM port on the Arduino and use the analogWrite() function. I started out with the idea that I would only have two motors on the robot, one for each side and I would gear the motor to each wheel. This was a great idea, but it turns out that I couldn’t find any gears that would suit my needs and I didn’t have the means to create a gearbox. So, the next idea was to do four motors and have one at each wheel. This is the idea that I stuck with and I ended just putting two motors on each side of the H-Bridge. This allowed me to mount the motors directly to the side of the battle bot and not have to worry about building any sort of extra gear box to drive.
I used one of SparkFun’s half sized protoboards to make all the connections which turned out to be just the right size for all the components I needed. For the brains of the robot, I decided to use an Arduino board because it was cheep and I knew how to program it. I de-soldered all the pins on the Arduino board so that way I could solder directly onto the Arduino and make permanent connections. To power both the robot and the motors, I’m using a 11.1v 1500mah lipo battery from Amazon. It was quite cheep, and I think it should last me a few rounds before I need to switch batteries. To read in controls to the Arduino, I’m using a FlySky 2.4Ghz transmitter and I’m reading the values directly into the Arduino. I’m only using 3 out of the six channels available, one for foreword/backward, one for left/right, and one for flipping the controls if I end up upside down. In the testing process, I was able to successfully read in values from the controller and print them on screen, so I thought I would give it a try and write the values to the motor. However, the first time I did this, it was quite explosive. Something happened in my code which caused the H-Bridge to pop and explode. I read somewhere online that you might need to give it a moment for the internal circuitry to reset before changing directions, so I just incorporated a delay into the code. And, after a quick switching out of the H-Bridge, everything worked as intended. I also added a bit of code to flip the controls when I flip a switch on my transmitter in case I get knocked upside down.
Next, onto the physical form of the robot. I picked up a couple of sheets of zinc-platted metal from home depot for about $12 a sheet and that is what I’m using as the main housing of the robot. I took one of the sheets, cut out the corners, and folded it down on top of itself and took some screws and bolted the underside together. This gave me four sides and a top all as one piece. I then had a separate piece that functioned as my bottom piece that screws on with four bolts. I made the front bulldozer piece out of a long rectangle that I bent to be at a specific angle for pushing no matter which side was on top. I then just bolted it to the front of the robot. The motors that I chose have gearboxes attached to the front of them so that way they are already geared for a specific rpm. This gives me more power and control over the robot at the cost of speed.
So, I ended up being the first fight of the day, and I lost quite quickly. At the end of the day though, I think this was an amazing experience, especially getting to chat with all the other builders at the competition. The main reasons I lost are listed:
1. I lost my two front wheels, which greatly hindered my pushing ability.
2. My code froze up and I lost steering control (which I got counted out on "Lack of Mobility")
3. I wasn't fast enough to slam into his bot and actually get it to move when I had two wheels left.
So, I think some improvements can be made in the attaching wheels department as well as the picking out of motors. I should have gone for something like 500 or 600 rpms instead of 200. All in all, it was a fantastic project.