The primary goal of Buttonboard is to take driver inputs on the steering wheel and convert them to
signals that can control the varying lights and horn of a solar car. As per regulations needed for
the vehicle, it was required that the driver select these buttons without taking their hands off the
wheel and that they will be able to control them. Some buttons will be latching to represent turn
signal indicators, while other buttons will be nonlatching, like the horn. Buttonboard is
represented as an "application" PCB in the solar car that is used to help manage driver interaction
with the car off of the 12V Main power line from the battery pack, which is turned on only after the
battery protection system connects the positive and negative relays to the battery pack.
Before pull up resistors can be used to read the button inputs on buttonboard, we had to design a
power circuit to step down a 12V power source to a 5V source. This 5V source would be used by our
microcontroller so that it could receive the button inputs and both send and receive CAN packets to
other PCBs in the car. As I learned on the solar car team, we have design standards that we created
for our power circuit. Most of the PCBs in the car use the same switching regulator to step a 12V
line down to a 5V source. Other commonalities include a PMOS to protect against reverse polarity, a
TVS diode (D1) to protect against voltage spikes, a fuse in series to limit the current going into
the board, and a diode on the output of the switching regulator to protect the part. During the
second revision of buttonboard that I worked on that year, we added a ferrite bead in series to the
power line and 4 capacitors of decreasing capacitance and package size to filter the line. Again, we
made an effort to standardize this part of the circuit so we would have multiple members working on
the same circuit across different PCB's in the car.
As mentioned before, this 5V source would be used to power the microcontroller, which could only
take an input up to about 6V according to the datasheet. To confirm that we would never be reading a
floating input, we designed pull up resistors that were connected to the 5V source and each digital
pin reading the input of one of 6 different buttons. So, this meant that when the buttons were
reading 5V, or logic high, the buttons would not be pressed. Each button on the steering wheel was
then in turn wired so that one end would be going into the PCB and 6 pin connected, while the other
one would be wired to the battery pack ground, which was the same ground as the 12V source coming
into the board. We also added a simple RC circuit to filter at high frequency noise from the buttons
that may occur due to pressing and releasing the buttons, which could have dire consequences of
never turning the horn off.
While it took more time to understand why we were making design choices on the schematic of
buttonboard, it was clearer to me how lacking I was in PCB design from the beginning. For this
board, to keep my mentors sane, we decided to keep the power circuit on the left side of the board
in a column, so it would be clear what those parts did without looking at the schematic or
documentation. This was a huge help for people that had to debug the board without me around. I also
made an effort to keep all of the connectors on one side of the board to make our wiring and systems
implementation easier. The most difficult part about the PCB design was fitting the pull up
resistors and RC circuit between the output connectors and the microcontroller digital pins. As you
can see in my video, there is not much room. In hindsight, I could have gotten away with making it a
little larger, but the extra challenge probably pushed me more too.
The PCB was two layers, with a 5V plane on the top that was outputted from the switching regulator,
and our battery pack ground on the bottom layer. To keep the button signals clean, I tried to make
the top layer have as many vertical traces around this section as possible, with the bottom layer
consisting of only horizontal signals to go to test points. I made sure to also include the test
points on the corner of the board so they be easier to measure with a multimeter and avoid blowing a
fuse.
With this being my first electrical project on the solar car team in the Fall of 2020, I had a lot
to learn. Throughout working on this process, I was able to learn about circuit design, PCB layout,
creating a bill of materials, soldering a PCB, bench testing a PCB, and applying it to a road worthy
vehicle. This was my exact goal that I wanted out of solar car when I joined, so getting this
development cycle through the club in my sophomore year meant a lot to me. Through this project, I
specifically learned more about how circuits work, since at the time I hadn't taken one circuit
class at the time. Looking back, this gave me tons of early exposure to parts like MOSFETs, diodes,
switching regulators, and microcontrollers that I wouldn't have had access to until I moved further
up on the Electrical Engineering flagpole. This project also helped show me that I wanted to help
lead electrical projects and teach technical work to other engineers at Iowa State, since it is very
hard to replace a lot of this work in classes and is very unique.