...
Basically their design is split across 2 screens
What's interesting here is the fact that they've implemented Remote Cruise Control. We considered doing something similar to this for Battery Module Discharging, but at FSGP 2018, we passed BPS scrutineering before we could make those changes.
This is their battery tab, which displays the pack status.
Detailed Design
The proposed approach was originally inspired after a realization that having a working realtime telemetry system would be really useful for the race. Our previous "telemetry system" involved the driver periodically radioing back sensor data displayed on the vehicle dash to the chase car.
...
The goal is to offload as much work to the more powerful desktop client as possible, so that essentially the telemetry board on the car simply wirelessly streams CAN message data out.
Onboard Telemetry
Storage Requirements
...
Software Requirements
Title | User Story | Importance | Notes |
---|---|---|---|
Data Transmission | The data should be transmitted to the chase car via the XBee | Must Have | This can probably just be a simple pass-through over UART. During FSGP/ASC 2018, we implemented Consistent Overhead Byte Stuffing (COBS) in our CAN-UART link, which was shared with our telemetry. I don't think we really had any issues with this. |
Data Logging | The data should be logged to a local SD card/flash drive |
...
as well, in a CSV format (or raw CAN message data, as long as we can parse it out) |
...
Hardware Requirements
If we are planning on entering WSC (where vehicle interiors have been known to exceed 50C), we should ensure that at minimum, our electronics can operate at 60C. In addition, ideally the power draw is as low as possible.
Desktop Telemetry Client Data
Realtime Data ("Critical" information)
- Battery pack data
- Voltage
- Minimum Cell voltage
- Maximum Cell voltage
- Current
- Temperature
- State of Charge
- Voltage
- Motor controller data
- Voltage
- Motor Current
- Motor temperature
- Maximum Power Point Tracking (MPPT)
- Array Power
- Status
- Current cruise control value
- Current limits
Energy Consumption Data
- Driving energy broken into battery kWh
- charging loss
State of Charge Data
- Trip start/end SoC
- Current SoC
GPS/Speed/Positional Data
...
- Hall-effect sensor is mounted near the rotational path of the magnet
- As wheel rotates, the south pole of the magnet causes the Hall-effect sensor to generate some voltage
- An capture/compare timer interrupt fires at each rising/falling edge, and using the circumference of the wheel, estimates the speed
- We could potentially do something similar if we don't trust the motor controller's RPM readings
...
. | |||
SD Card driver | An SD card driver needs to be written | ||
FatFS bring-up | We should integrate FatFS by providing stubs to the SD card driver | ||
GPS driver | A GPS driver needs to be written. | Must Have | We need GPS data in order to determine where we are on the route. This is also useful in correlating where we are on the route. |
Hardware Requirements
Title | User Story | Importance | Notes |
---|---|---|---|
Reliable transmission to chase vehicle | The method of transmission must be able to be received from a chase vehicle | Must Have | This should have at least 12 m of range, in case the chase car gets cut off by another car (which actually did happen 3-4 times during ASC 2018). |
SD card reader | The hardware should have a SPI interface that allows for a SD card | Must Have | |
Be able to listen on the system CAN bus | The hardware should have a CAN transceiver that allows the board to listen on the system CAN bus | Must Have | This is probably going to be covered by the Controller Board. |
Operating Temperatures | Electronics must be able to operate at a minimum of 60 C | Must Have |
Desktop Telemetry Client Requirements
Software Requirements
Title | User Story | Importance | Notes |
---|---|---|---|
Readable Summary | The overview GUI should be legible in full screen, with all the data above the fold. | Must Have | This is critical, since all the important information should be distilled into a form where they are available at a quick glance. |
Data Logging | All data should be logged to a database | Must Have | This is probably going to take some careful thought into table design in order to partition the tables correctly. Most of this will be for strategy purposes during the race, which will probably operate on a week's worth of data at most (realistically probably just the previous day). I can see the data being used for ad-hoc queries after the race, in order to explore various characteristics of our design. I think this has lower priority than getting the GUI complete, as we can always log to a file and then perform ETL afterwards. |
Speedometer reading | The GUI should display the speed | Must Have | We should have the option to switch between km/h and miles/h |
Cruise control setting | The GUI should display the currently set cruise control target | Must Have | |
Average speed over interval | The GUI should have the option of displaying the average speed over an interval (say 15 minutes) | Should Have | I found this extremely useful during ASC 2018, when choosing our cruising speed during the hilly parts. It's not critical for telemetry, but it is pretty important for strategy. I found that typically, we would end up averaging slower than our target speed by 10-15 kmph, due to the variation in road grades. |
Battery pack module stats visualization | The GUI should display the battery pack module stats (voltage, temperature) in a visualization of the pack. If there is room on the main tab to display this, that would be ideal, otherwise it can go in a separate tab. | Should Have | Personally, I would like to see something like what Kentucky or Delft has implemented. Especially with our pack layout being split into a master/slave box, I think having the telemetry GUI representation reflect that layout would be really nice. I propose that we colour code the cells (like Kentucky), and then make the individual battery modules smaller (like Delft). This physical layout visualization isn't critical for telemetry/strategy, but it helped me understand hardware faults (on the AFE) as well as which areas of the pack required additional attention. I got around this during ASC 2018 with a separate spreadsheet that I marked out the pack layout in, which I would cross-reference against my data readings. |
Total Pack Voltage | The GUI should display the total pack voltage | Must Have | This allows us to spot check SOC calculations and perform power calculations |
Battery pack module voltage | |||
Battery pack module temperature | |||
Maximum module voltage | The minimum/maximum module voltages are used to determine how unmatched modules affect our capacity when charging/discharging (the minimum module affects our capacity when discharging, and the maximum module affects our capacity when charging). | ||
Minimum module voltage | The GUI should display the minimum module voltage. | Must Have | |
Average module voltage | During ASC 2018, I manually calculated this as the average discounting any outliers (ie. module inputs exhibiting hardware faults, unbalanced modules). | ||
Battery pack current | Must Have | ||
Discharge resistors enabled | At FSGP/ASC 2018, there were some concerns as to whether or not the AFE could handle enabling more than 1 bleed resistor per AFE, given we had observed that the board would heat up a significant amount. A new board revision is supposed to fix this, but we should follow up with this requirement when that is completed. This would also allow provide us with an interface to remotely enable bleed resistors. This can probably go underneath a separate tab that isn't the Main Dashboard. | ||
Motor Controller Temperature | The GUI should display the motor controller temperature | Must Have | The |
Motor Controller Status Flags | The motor controller gives us the following error flags:
And the following limit flags (which determine what control loop is limiting output):
Having this would have been critical for ASC 2018, where we dealt with a lot of issues with our motor controllers. | ||
Motor Controller Bus Measurement | The GUI should display the motor controller bus current and bus voltage. | ||
Motor Controller Velocity Measurement | |||
Motor Controller Phase Current Measurement | Motor phase current used for the 3 phase BLDC motors | ||
Motor Voltage Vector Measurement | |||
Motor Current Vector Measurement | |||
Motor BackEMF Measurement / Prediction | |||
15 V & 1.65 V Voltage Rail Measurement | |||
2.5V & 1.2V Voltage Rail Measurement | |||
Fan Speed Measurement | |||
Sink & Motor Temperature Measurement | |||
Air In & CPU Temperature Measurement | |||
Air Out & Cap Temperature Measurement | |||
Odometer & Bus AmpHours Measurement | This is really useful in order to correlate telemetry data with road data. | ||
Solar Sense (MPPT) input | Since we didn't have solar sense working at ASC 2018, we resorted to measuring the current entering the pack from the BMS (by coasting). This would be useful because:
| ||
Energy Consumption Data
- Driving energy broken into battery kWh
- charging loss
Transmission to Chase Car
- CAN network broadcasts messages to the telemetry board
- Telemetry board wirelessly broadcasts data to the chase car
Data Retention
- The on-board telemetry system should be capable of storing at least a day's worth of data
- Data received by the telemetry client should be logged as well, and timestamped
Technology
- Implement a message parser for received CAN data packets
...