Our robot "dancing" with an opponent in a friendly match off the ring

The Sumo Bot project was the final project for the course MAE 3780: Mechatronics. The goal is to, in teams of 3, build an 8'' by 8'' robot to push the opponent out of a designated ring. Our robot is equipped with a PING))) ultrasonic sensor for detecting objects, and three QTI sensors (infrared emitter/receiver) to detect different colors on the ring. Out robot also has a slapper as the active element for tackling the opponent.

My contribution includes the design and fabrication of all mechanical components, and the early stage implementation of a finite state machine for searching and tackling.

Rendered robot in SolidWorks

Actual competition robot

A rough finite state machine for our robot

The motors are driven with H-bridge, the logic diagram below shows the implementation of the motor drive logic. The inputs are three parameters: "mov", "turn",  and "pos", which indicate if the robot move/not move, turn left/right, go forward/backward or turn clockwise/anti-clockwise). It then outputs the correct P0 and P1 values which are the input to H-bridge.

Motor drive logic in logism

Our MOSFETs were selected incorrectly. Their peak performance is at 10V, which is not achievable through Arduino output, posing challenge to the H-bridge design.

In order to achieve ideal turn on voltage of the MOSFET of 10V, we drew an additional wire from the positive terminal of the 9V battery which supplies power to the Arduino board to the H-bridge. We used the Arduino pins to toggle the 9 volts supplied by the battery and then utilized the 9 volts to turn on the MOSFETs. However, the lab only provided us with free NPN BJTs, so it was only possible to build a pull down network using additional resistor. We attempted to build a pull up network with the same configuration by moving the resistor to the emitter side of the BJT, but the circuit did not work as expected - the voltage on Vout was extremely low and was insufficient to drive the MOSFETs. Later we adapted the pull down network and identified another problem - wiring the network directly onto Arduino pins causes the H-bridge to short circuit every time Arduino resets for whenever Arduino resets, all the pins are on low, which turns on the BJTs and therefore turns on all the MOSFETS, generating a large short circuit current.

In order to solve this problem, we added an additional pull down network on top of the original network. By doing so we obtain a pull up network by doubling the negation. We chose MOSFETs over BJTs for the second pull down network because we believed that this will reduce current draw on Arduino pins, increasing the board efficiency.

Circuit design for H-bridge integration