July 21, 2021
General notes:
used a Rev 3.0 PD assembled as rear
used one 12V nocuta fan
used an electronic load as a substitute for horn (set to 3 ohms)
anytime I refer to power_distribution firmware, it is under the pd_smoketest branch
two separate power supplies, one for PD and one for UV cutoff, both supplied with 13.5V
U2 IS NOT POPULATED FROM HERE ON OUT
Testing Fan and Horn
First I tested the horn with a power supply; I simply soldered two wires to both terminals (I’m pretty sure the horn is not polarized) and I set a power supply for 12V with a 5.0A limit.
Once I powered on the power supply, the horn didn’t make any noise. So I turned of the supply and incremented the current limit by 1A. I repeated this process until I got to 9A which was when the horn started blasting very loudly (be prepared to turn it off). I then turned on the supply again and waited for about 3 seconds to see the current draw of the horn, which was about 4.7A → the horn has an inrush of 9A and then it will draw 4.7A.
I tried taping the opening of the horn to reduce the sound, but it was still very loud and it even vibrated.
So instead of continuing to use the horn to test UV cutoff, I used an electronic load set to 3 ohms
(13.5V / 4.7A ≈ 3 ohms).
After connecting the electronic load to the horn terminal block, I connected the fan to one of the fan connectors.
I flashed a controller board with power_distribution from the pd_smoketest branch and placed in onto a rear, Rev 3.0 PD (firmware accounts for rear and front). I connected the board together through the 6 interfacing wires (see P6 on UV cutoff, and see UV Cutoff Interface on PD).
I first powered on PD (with 13.5V), and then UV cutoff (with 13.5V) using separate power supplies. The fan should spin and you should see something like this from the electronic load:
I then powered off UV cutoff and plugged in the fan into a different plug; I did this until I confirmed that all fan connectors work.
Testing fan enable and horn enable
This section is for making sure that I didn’t mess up the 6-pin harness that connects both UV cutoff and PD together.
In the smoke_test.h file under /powerdistribution/inc/, I first commented out FRONT_OUTPUT_FAN.
Then when I powered on both UV cutoff and PD, I checked to make sure that neither one of the four fan connectors would spin a fan. I was able to see that the electronic load was drawing about 4.1802A and the voltage for each fan connector was around 0.0004V (very close to zero).
Test point readings:
Test point | Reading (volts) |
---|---|
FAN_I_SENSE | 0.0033 |
HORN_I_SENSE | 0.2569 |
Then I commented out FRONT_OUT_HORN (and uncommented FRONT_OUTPUT_FAN). Then when I powered both boards, I checked to make sure that zero current/no current was being drawn by the electronic load, which happened (the terminals of the horn was also 0V). Also each fan connector was around 13.488V.
Test point | Reading (volts) |
---|---|
FAN_I_SENSE | 0.1486 |
HORN_I_SENSE | 0.0002 |
Testing UV lockout/cutoff function
I first powered PD with 13.5V, and then I powered UV cutoff (connected with a fan and an electronic load set to 3 ohms) with 13.5V using separate power supplies.
I first decremented the voltage for UV cutoff by 1V. I found out that the board “locks out/cuts off” at 8.5V (the fan stopped spinning and the voltage of the electronic load dropped to zero). When I decremented the voltage at 7.5V, I got a message through minicom that said “UV lockout was triggered”.
I then incremented (by 1V) and the fan started spinning once the voltage reached 10.5V (and the voltage of the electronic load went up to ~10.476V).
Now I decided to decrement the voltage for UV cutoff by 0.1V (starting at 13.5V). I found out that the board “locks out/cuts off” at 8.7V (the fan stopped spinning and the voltage of the electronic load dropped to zero). When I decremented the voltage to 7.8V, that’s when I got the “UV lockout was triggered” message.
I then incremented (by 0.1V) and the fan started spinning once the voltage reached 10.2V (and the voltage of the electronic load went up to ~10.176V).
Validating UV_VBAT_I_SENSE
While UV cutoff was connected to PD, I decided to measure the test points:
UV cutoff powered on:
Test point | Reading (volts) |
---|---|
FAN_I_SENSE | 0.1678 |
HORN_I_SENSE | 0.2575 |
C13 (VBAT_I_SENSE) | 3.2725 |
UV cutoff powered off:
Test point | Reading (volts) |
---|---|
FAN_I_SENSE | 0.0004 |
HORN_I_SENSE | 0.0002 |
C13 (VBAT_I_SENSE) | 3.2840 |
In both situations, it doesn’t make sense that VBAT_I_SENSE is about 3.27V.
Another problem I have noticed while running the power_distribution firmware is that the current displayed in minicom was around 4000mA for these situations where:
UV cutoff was powered on and connected to PD
UV cutoff was powered off and connected to PD
UV cutoff was powered off and disconnected from PD
This gave me reason to believe that the issue wasn’t from UV cutoff but from PD instead. With UV cutoff disconnected, I powered on PD and measured its UV_VBAT_IS pad/pin/trace, which was about 3.276V. This voltage matched the VBAT_I_SENSE pad/pin/trace on UV cutoff when UV cutoff was connected to PD, even when UV cutoff was powered off or powered on. Because the UV_VBAT_IS trace on PD only connected to U11, I then decided to measure the voltage at each pin.
U11 of PD (while UV cutoff is disconnected):
Pin | Reading (volts) |
---|---|
1: OUT(put) | 2.7819 |
2: SPARE 2 3 IS | 0.0002 |
3: STR_PDL_IS | 0.0003 |
4: SPEAKER/SOLAR_SENS_IS | 0.0015 |
5: L R DVR DISP IS | 0.0032 |
6: MCI_IS | 0.0005 |
7: 5V SPARE IS | 0.0004 |
8: MAIN_REAR_PI_IS | 0.0014 |
9: DVR_REAR_DISP | 0.0029 |
10: PA6 MUX SEL1 | 3.3041 |
11: PA5 MUX SEL2 | 3.3039 |
12: GND | 0.0003 |
13: PA3_MUX_SEL4 | 3.3039 |
14: PA4 MUX SEL3 | 3.3039 |
15: Ē | 0.0009 |
16: UV_VBAT_IS | 3.2776 |
17: FAN IS | 0.0031 |
18: MAIN_DISP/BMS_IS | 0.0013 |
19: LEFT/REAR_RIGHT_CAM_IS | 0.0015 |
20: SPARE 1 IS | 0.0011 |
21: (closed) | 0.0004 |
22: FRONT/REAR_TURN_LIGHT_IS | 0.0004 |
23: DAYTIME/REAR_BRK_IS | 0.0003 |
24: 3V3 | 3.3041 |
As shown in the above table, every current sense pin is very close to zero, where as pin 16 (UV_VBAT_IS) is almost 3.3V. I decided to check for a short (using a DMM) at this point but I didn’t hear an audible “beep” - I should’ve been looking at the resistance on the screen of the DMM because it would have saved me time from doing this next section of modifying code.
The original PD code was configured such that every 0.5s (maybe 1.5s), U11 will be quickly flip through all the mux selections (which are the current sense pins). That is the output of U11 (pin 1) should have the same reference voltage as the selected/muxed pin.
So now I wanted to try muxing a pin other than pin 16; I did this by modifying current_measurement_config.c file located here: firmware_xiv/projects/power_distribution/src/
Since minicom automatically detects the PD as a front variant, I decided to comment out all of the rear_current_measurements.
So I decided to test FRONT_OUTPUT_SPEAKER with UV_VBAT_IS. First I muxed FRONT_OUTPUT_SPEAKER:
FRONT_OUTPUT_SPEAKER left uncommented:
Pin | Reading (volts) |
---|---|
1: OUT(put) | 0.0268 |
4: SPEAKER/SOLAR_SENS_IS | 0.0268 |
16: UV_VBAT_IS | 3.2937 |
As you can see from the table, pin 1 matches pin 4, by my even if pin 4 is being muxed, it is nowhere near 3.3V. Also pin 16 is around 3.3V.
Then I tested all pins off:
All outputs commented:
Pin | Reading (volts) |
---|---|
1: OUT(put) | 0.0300 |
4: SPEAKER/SOLAR_SENS_IS | 0.0012 |
16: UV_VBAT_IS | 3.2930 |
You can see that pin 1 drops closer to zero, but pin 16 is still near 3.3V.
Then I muxed FRONT_OUTPUT_UV_VBAT:
FRONT_OUTPUT_UV_VBAT left uncommented:
Pin | Reading (volts) |
---|---|
1: OUT(put) | 2.7769 |
4: SPEAKER/SOLAR_SENS_IS | 0.0013 |
16: UV_VBAT_IS | 3.2776 |
Even though pin 1 is about 0.5V less than pin 16, I still assumed that pin 16 was being muxed - which doesn’t change the fact that pin 16 is still near 3.3V.
At this point I decided to check PD again for shorts between 3V3 and pin 16, but there weren’t any definite locations since the UV_VBAT_IS trace directly connects to pin 16 of U11 (i.e. there are no other components in between).
So using the DMM again, I probed a resistance roughly 25 ohms between pin 16 and 3V3. I also tried measuring other current sense pins with 3V3, and their resistances were in the Megaohms - this meant that there was an issue with the soldering of U11, the board itself, or U11 itself. There were no visual bridges between the pins of U11 and the likelihood of the board being the issue itself is very unlikely, so I decided to take U11 off with a heat gun. I then probed the resistance between pin 16 and pin 24 (the 3V3 pin of U11) and I measured the same resistance of 25 ohms. I also probed the resistance between pad 16 and 3V3 on PD just to make sure it wasn’t the board’s fault (I got a zero load). This confirmed that there was an issue with U11 all long.
I replaced U11 with the same component from an old rev PD and to double check that there aren’t issues with this newly replaced U11, the voltages of the pins are as follows (resetting the power_distribution code to its original state):
(UV cutoff disconnected):
Pin | Reading (volts) |
---|---|
1: OUT(put) | 0.0558 |
2: SPARE 2 3 IS | 0.0001 |
3: STR_PDL_IS | 0.0032 |
4: SPEAKER/SOLAR_SENS_IS | 0.0014 |
5: L R DVR DISP IS | 0.0031 |
6: MCI_IS | 0.0023 |
7: 5V SPARE IS | 0.0005 |
8: MAIN_REAR_PI_IS | 0.0015 |
9: DVR_REAR_DISP | 0.0032 |
10: PA6 MUX SEL1 | 3.3055 (periodically changes) |
11: PA5 MUX SEL2 | 3.3057 (periodically changes) |
12: GND | 0.0002 |
13: PA3_MUX_SEL4 | 3.3052 (periodically changes) |
14: PA4 MUX SEL3 | 3.3054 (periodically changes) |
15: Ē | 0.0014 |
16: UV_VBAT_IS | 0.0129 |
17: FAN IS | 0.0031 |
18: MAIN_DISP/BMS_IS | 0.0013 |
19: LEFT/REAR_RIGHT_CAM_IS | 0.0014 |
20: SPARE 1 IS | 0.0012 |
21: (closed) | 0.0028 |
22: FRONT/REAR_TURN_LIGHT_IS | 0.0021 |
23: DAYTIME/REAR_BRK_IS | 0.0003 |
24: 3V3 | 3.3055 |
TO BE EDITED:
IS pin was: 0.0033V
other IS pins from other load switches were: 0.2501V (U5), 0.1498V (U1)
DEN pin was: 0.0404V
other DEN pins from other load switches were: ~2.67V
Problem:
R24 wasn’t soldered down properly (connected to IS pin)
R22 wasn’t either (connected to den pin)