...
Buttons to change state
Drive, Reverse, and Neutral
Regen Braking button
Hazard Button
three 7-segment displays with the below quantities
Speedometer (speed in km/h)
When we BPS fault it will display the error code instead
Current Readings (Amps)
Aux Battery Voltage (Volts)
Indicator LEDs
One for each of the above buttons (D/N/R/Haz/Reg)
Left turn signal
Right Turn Signal
Cruise control enabled indicator
BPS Fault Light
AFE Loss of Communications
Buzzer to highlight events
Button Clicks
BPS fault
Pedal Position
Maps ADC reading from 0-1 for the Motor Controller
Stores pedal calibration data in flash non-volatile memory
Refer to FW15 Pedal Board Design for more documentation! This board has been merged to CC. It is almost the same, but it doesn’t use the MAX11600. It instead uses a pedal that we ripped off a car
Steering Stalk
Toggles Left/Right lights
Toggles Cruise Control
Refer to FW15 Steering Design for more documentation! This board was merged to CC so it hasn’t really changed
Expand | ||
---|---|---|
| ||
TX:
RX:
|
Centre Console Functionality
Module: cc_buttons
This module gets all button values. Buttons should be read in the fast cycle. They are connected to the pca9555 gpio expander, and must be read over i2c. This read function should send notifications to the requisite tasks.
Power Button, hazard, regen: send notifications to main task
R, N, D → Send notifications to Drive FSM
Module: update_dashboard:
Static variables:
cruise_control_state
target_velocity
regen_braking_state
power_state_to_transmit
...
dashboard_init()
update_indicators()
Gets notification value from button presses, updates indicator lights and output can_messages
Hazard enabled:
when pressed, toggle static hazard state
update indicator and cc_power_control.hazard_enabled message based on stored value
Regen Brake:
when pressed, toggle static regen brake state
update indicator and drive_output.regen_brake_enabled message based on stored value
Lights left/right
update left/right indicator based on steering stalk position
Cruise Control Enabled:
update static cc state + indicator based on steering stalk ISR (Button click)
update drive_output based on cc_state + target_velocity
update_displays() [SEPERATE TASK]
Reads values from CAN messages, uses values for 7-seg:
Calculated speed using RPM to MPH → speed display (Top)
Current reading in Amps → current display (Middle)
Aux Battery Voltage → aux batt display (Bottom)
cruise_control_monitor()
Checks for cruise control inputs from steering stalk
Updates Cruise control target speed
Module: pedal
Module: steering
Drive FSM
The Drive FSM handles the control of drive state of the car. It receives the drive buttons (Neutral (N), Drive (D), Reverse(R)) and runs the preparations and checks needed to change the drive state of the car, and communicates this value with the motor controllers.
...
Expand | ||
---|---|---|
| ||
Power FSMThe power FSM governs the power state of the car. There are 4 main States:
For the main power states however, when we are transitioning there is a sequence of checks we run to make sure that the system is in a correct state to allow a transition. These steps typically involve sending a CAN message to another system, waiting for it to do its checks and balances and then receiving an acknowledgement (ACK) message. If these checks fail, we will transition back to the normal power state. The sequence model for these states is along the following lines:
The diagram is shown below, hexagons representing the sequence steps. The states themselves have no real functionality in their output functions. Power Aux Sequence*
*From Power Aux, if a fault condition is detected (ie invalid power select status message) we should return to off Power main sequence
Fault
|