Controls Leaderboard Rework Notes

Controls Leaderboard Rework Notes

Notes on the Controls Leaderboard for 2025 Daybreak.

Motivation

The objective of this rework is to simplify Controls hardware by removing deprecated components and combining it with the lighting board which was placed in the same enclosure anyways. It is also an intermediate board between the 2022-2024 and 2024-2026 cycles, however, so large changes were generally avoided to expedite the process.

daybreak rework PCB- Rev. 2

Pinout changes

Pin

Old

New

New Type

Explanation

Pin

Old

New

New Type

Explanation

PC6

TimerCLK

Brake_Light

Output

Make lights direct-drive instead of simulating a timer (no more TimerCLK), allows for easier PWM

PC9

PC9

Right_Blink

Output

“ “

PC10

PC10

Left_Ind

Input

Direct-drive lights- uC gets input instead of gating TimerCLK

PA0

Motor_PRCHG_Bypass

Status_LED_1

Output

No longer controlling motor precharge contactor

PA1

Array_PRCHG_Bypass

Status_LED_2

Output

No longer controlling array precharge contactor

PA4

Brake_Light

PA4

Output

Easier PWM for lights on a different pin

PA8

PA8

Left_Blink

Output

“ “

PA11

UART3_Rx

UART4_Rx

UART

Incorrectly labeled

PA12

UART3_Tx

UART4_Tx

UART

Incorrectly labeled

PA15

PA15

Right_Ind

Input

Direct-drive lights- input goes to uC instead of gating TimerCLK

PB8

Array_PBC_Sense

PB8

Output

No longer controlling array precharge bypass contactor

PB9

Motor_PBC_Sense

PB9

Output

No longer controlling motor precharge bypass contactor

PB12

UART4_Rx

UART5_Rx

UART

Incorrectly labeled

PB13

UART4_Tx

UART5_Tx

UART

Incorrectly labeled


 

Revision 1

daybreak rework PCB

image-20250201-175525.png

 

image-20250201-180109.png
image-20250201-194404.png

 

image-20250201-230247.png

 

Major Changes

Sheet

Old

New

Sheet

Old

New

Root

 

image-20250201-194518.png

 

 

image-20250201-195211.png

 

 

  • Added status LEDs

  • PwrStateIndicators renamed to Contactors

  • MinionBrdInterface renamed to DashAndDisplay

  • Additional UART TPs

  • Extra ADC connector (just to break out pins)

  • All pins broken out

  • Some pin reassignments to make routing simpler

Power State Indicators ~ Contactors

 

 

image-20250201-194541.png

 

 

image-20250201-180736.png

 

  • Separated contactors to 1 per connector since we were only using half of the previous connectors anyways

  • Added sense pins

  • Removed array contactor (but we now control the Motor contactor which was left out last year)

Power Distribution

 

 

image-20250201-194608.png

 

 

image-20250201-195126.png

 

 

  • Removed jumper and distinction between GNDPWR/GND1, +12V/+12VA since they were not being used

  • Added fuse for lights (+12V to Lights_12V)

USB

 

 

image-20250201-194655.png

 

 

image-20250201-180758.png

 

  • Updated deprecated USB chip to CP2102N-A02-GQFN24

Motor CAN

 

 

image-20250201-194731.png

 

 

image-20250201-195051.png

 

 

  • Changed motorcan connector from big round unwieldy connector to Molex

  • Added fuse

  • Added DB9 connector J16 for CAN debugging, updated obsolete ferrite beads

Car CAN

 

 

image-20250201-194752.png

 

 

image-20250201-180822.png

 

  • Replaced debugging testpoint with J14 CAN_DB9 connector

Potentiometers

 

 

image-20250201-194858.png

 

 

image-20250201-180912.png

 

  • Updated accel pot values to use a greater portion of the ADC range

  • Added brake switch button circuit

    • This board supports both a limit switch and a potentiometer for daybreak 2025 since the final decision had not been made at the time of design

  • Accel pedal sensor may change since last year, so we may need to use a separate board to read the new hall-effect sensor

Lights

 

 

image-20250201-211620.png

 

 

image-20250201-180905.png

 

  • Removed all the big old lights drivers that weren’t being used here

  • Removed 555 timer to have a blinking gpio that gets output to lights RIGHT/LEFT-BLINK when we are told by dashboard through Left/Right_Ind that the drive has toggled the switch. Reasoning: software will be simpler and easier to implement, and removing the timer means one less thing can go wrong. Sending a constant blink that is passed/not passed also reduces wiring compared to toggling a left/right wire (input left/right from dashboard to connect one blinking GPIO line vs input left/right from dashboard and toggle two lines in response)

Lights Drivers

 

 

 

image-20250201-180858.png

 

  • Replaces the big lights drivers from previous version. We will also have breakout boards (if we want) for the lights since we will need three brake lights, three right blinks, and three left blinks

Minion Board Interface ~ Dash and Display

 

 

image-20250201-211652.png

 

 

 

image-20250201-180852.png

 

  • Renamed pins, exporting to dashboard and getting inputs from dashboard as 12V

  • Added heartbeat LED, BPS_Hazard since Controls is now handling BPS faults

New Pinout

 

Additional Considerations

 

Contactor Board and Sense pins

We shouldn’t be handling any contactor stuff in Daybreak 2025, but if we do use our sense pins, we will have to enable the internal pullup on the sense pins for the new controls leader since those are pulled low when the contactors are active or alternatively solder a resistor from that pin to 3v3 on the board instead.

The typical values for pull ups can be 10k, 40k, or even 100k. We just have to make sure that pins being used have a reasonable value for the pin.

“Real time is fake. If ur RC is too high, you need to add a delay since the pin may stay in some unknown voltage for too long and flip logic levels.

Ie a 0 is like .5-1.5V and a 1 is 2.5-3.3V and that in between range is either randomly.” - Lakshay

 

Throttle Position Sensor

We are using this rotational potentiometer for both accel and brake pedal:(?)

Replacement® 2003-2009 Nissan 350Z - Accelerator Pedal Position Sensor, 6 Cyl., 3.5L Engine RI32160001

 

 

This sensor takes 5V, but our leaderboard is only able to take 3.3V (ADC does not appear 5V tolerant), so we will need to solder a resistor divider to the board.

The full circuit created for this sensor for the 2026 pedal board is below:

image-20250308-171419.png

The op amp is a buffer and not fully necessary, so we will probably just split the 5V display cable or solder a wire to the 5V test point to power the sensor, then solder the resistor divider on to the board with connector leads.

Testing Plan

 

We could just solder everything, try to run code, and see if it works…

 

What could be wrong?

What could happen?

How can we check it?

What could be wrong?

What could happen?

How can we check it?

The traces may not connect where we think they do

If unintentionally open: circuit will not work

If unintentionally connected: could short odd signals, could be bad if related to power

Check connectivity between traces using a multimeter

Check that sensitive pins (ex: microcontroller) are not connected to high voltage

Our circuits/component values could be wrong.

New/modified circuits

  • CAN doesn’t work with new ferrite bead

  • Optoisolator for input/output to dashboard may not have proper setup

  • Turn signal system with software blinky

  • 12V signal to dashboard using optoisolator

  • New DC values may not work well

  • Brake switch button circuit

  • New USB chip

  • Status LEDs could short

  • Contactors could draw too much current

  • Chips don’t work

  • We damage components by exceeding max current/voltage

  • Solder components, control voltage, and measure current

  • Connect everything and check if it blows up

We have ground loops between other boards

Could see induced current when integrating into larger circuit

Connect to other boards and measure voltage between ground points

– hard to test now? –

We have too much noise

Signals don’t transfer properly

Attempt to communicate once integrated

– hard to test now? –

We missed important connections with other boards

Unable to interface

Make connectors/use old connectors and check with other boards

We solder on the wrong values

Things could short or not work

Check the component value using a multimeter

 

The beginnings of a plan

  1. Visually inspect board for damage

  2. Check connectivity between traces (maybe)

  3. Check that sensitive pins aren’t connected to high voltage for whatever reason

  4. Solder power distribution stuff on

    1. Check that levels look correct

  5. Solder everything else on

    1. Visually inspect to make sure it’s clean

    2. Check component values before soldering

  6. Run Controls code on old board

  7. Run (as similar as possible) Controls code on new board

    1. Need to adjust for new pinouts

    2. Need to check for pull-up resistors

    3. It should work… hopefully…

    4. Connect display, contactors, simboard if not too unsafe

  8. Run tests for any circuits not yet used and verify outputs

    1. Toggle each pin and check that signal is seen on connector/output

    2. Run CAN on CAN ports with CANdapter and scripts

    3. Test inputs with proxy components and measure circuit output

    4. Test lights with big voltage

 

Retrospective

In general: more software, less hardware where possible