Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

I then removed the solder from every pad on any component interfacing with 3V3. There was still a short until I removed the solder from the pads of U2 and C6. I then did not see a short (and ofc this was these were the last pads which solder I removed). Turns out there was a short to GND on pad 1 of C6 to the GND plane. This was due to the clearance from polypours which as can see from the image below, is not very large. That coupled with manufacturing causes a short with solder on the pad, and so i cut the right side of that pad. After this point, it is fully isolated. This was a very unfortunate issue (as I still have to put all the components back on including CB connector) but at least I now know for rev 2 that I should put more clearance.

...

Finally, the day has come when i figure out the communication issue. the next points outline what happened so i know for next time and hopefully dont have to ever do this again. TL;DR: i did bad soldering on the MCP3427 (no shorts but not all pins were soldered down - i attribute this to the difficulties of quarantine soldering/assembly)

  • first, I fixed the short issue above by taking the scalpel to the board several more times until it was impossible to short.

  • I then still could not see the communication, but could see the 3v3 rail on those pins which was a good sign.

  • I realized after more debugging (longer than it should have taken) that I had commented out the i2c port 2 init command in the firmware smoke test, so that was a big oof

  • next, I saw the following from debugging I2C on my scope.

...

  • from the above images, it can be seen that the correct bits were sent over SDA (6B is correct), but the red bit at the end signafies there was no acknowledge

  • this was also probed on the isolated side, so there was definitely not enough SI issues because it could still be decoded

  • therefore, the issue was with the MCP3427

  • after probing for more time, I realized the issue with the MCP3427 was that some of the pins werent actually soldered completely down to the pads. Im going to blame this on the fact i had to hand solder everything in an unideal station, but its still a good note for the future.

  • In any case, I flashed the code one more time, and finally there was communication!!!

[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16
[0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = -16

  • This was the output with no mppt and 0V on the vsense pin, so the next steps are to see how accurate it is with different nomura output voltages. In any case, seeing i2c reads is such a relief.

  • hmm it was on theĀ MCP3427_CHANNEL_2, but I swtiched to 1 and was able to see this output:


    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21481
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21480
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21481

    the actual voltage is 25.2V

    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21498
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21498
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21497
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21498
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21500
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21498
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21497

    thats for 25.6V, so there is a change

    awesome its not calibrated correctly, but there definitely is change! (this is 26V)

    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21822
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21824
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21822
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21826
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21825
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 21823

    and when the output voltage from the mppt is 0, it takes about 30 seconds to stabilize (ramp down) but then i see this
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 10
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 10
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 10
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 10
    [0] projects/smoke_mcp3427/src/main.c:150: Voltage sense mcp3427 ID = 5; Value = 10

  • one question that remains is: why does this work on MCP3427_CHANNEL_1 when im initializing port 2?

  • answer ^ there are two channels on the MCP3427 adc, and in all cases we only use channel 1 :p

New day, more data (sept 19th)

  • I am testing the mcp3427 with the hall effect sensor rn

  • i can read data from the i2c to mcp3427, and the following table summarizes the current through the hall effect, the voltage on the vsense pin on the adc and the minicom readings

Current through hall effect

Voltage on vsense pin

minicom readings

0A (no load)

0.351V

[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5560
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5564
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5564
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5567
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5565
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5561
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5564
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5563
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 5562

24.89V/30ohm

0.83A

0.571

[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9025
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9023
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9025
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9025
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9027
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9027
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 9026

23.5V/15ohm

1.57A

0.765

[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 12163
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 12166
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 12163
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 12166

23.19V/10.6ohm

2.305A

0.955

[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15211
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15210
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15209
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15209
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15209
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15210
[0] projects/smoke_mcp3427/src/main.c:152: Current sense mcp3427 ID = 6; Value = 15213