sinara-hw / Magneto

Magnet coils current driver
0 stars 0 forks source link

Rev 1.0 hardware issues #1

Open CannaCardo opened 2 months ago

CannaCardo commented 2 months ago

Unused/ floating resources

Opamps with unmached input inpedances

Diagnostic circuits

ADC dividers (R183/R184, R187/R185, R188/R186) are set to 10k/8k06 and cap out at 11.2V, while ~12V can be measured. Choosing from values already in the project, 31k6/20k divider will allow up to 12.9V.

IC25C compares DAC setting and I_meas in opposing phases, causing V_limit_P and V_limit_N to always be on.

Schematic for reference (v1.0 board)

CH1 - R103 (I_meas), CH2 - R109 (DAC_OUT), +-1A 100Hz sine into a shorted output

After crossing:

DAC output:

When using internal DAC, the 0/5V DAC output is inverted, and scaled to -5/5V. With the output current proportional to -DAC_Vout, this works out to the output current being directly proportional to DAC code. When using external DAC, the input signal is not inverted.

Schematic for reference (v1.0 board)

Buck_Vout switch issues:

T1/T17 drivers create a 10k:10k divider (R134/R203 and R202/R204) placed at the transistor gate. With the lowest IC13 output voltage (4V) the T17 transistor does not fully open. Given the 20V G-S rating of SI4425DDY-T1-GE3

Power stage

Last stage transistors (T19/T20 and T6/T9) are supplied from GND/Buck_Vout, and are driven by IC19 + T3/T5 and T8/T12 supplied from P15V0/N6V0. With load impedance too high for the set Buck_Vout voltage (especially when output is disconnected) IC19 tends to go to the very rails, which causes either T3/T12 or T5/T8 to turn on very hard, and causes T19/T9 or T20/T6 to work as a base-collector diode - burning a lot of power and locking itself in this state at one of the rails. This either raises the Buck_Vout and/or raises the N6V0 rail, pulling PG low.

Inserting series diodes at outer stage collectors (with added capacitance after the diodes, at the collectors) fixes this issue, but burns a lot of power at high currents and shortens the output voltage range.

At the same time, when driving high output currents (during tests: more than +-3A range), T3/T8 seem to take a lot of current (based on thermal camera), causing IC49 to eventually pull PG low and disable the P15V0 rail. This affects the opamps in diagnostics section, and falsely raises PWR_lim diode.

IC19 and T3/T5/T8/T12 can be potentially swapped from P15V0/N6V0 to GND/Buck_Vout, to prohibit this from happening and to not add any additional heat generators to the board (some output voltage range will be lost as well). This would require:

IC14Bs output is always equal to +-5V (Vin=set current) + Buck_Vout/2 (Ref). Assuming that lowest Buck_Vout value is changed from 4V to 5V, this means that in worst case it ranges from -2.5V to 7.5V at 0/5V IC19 supply. If Vin were to be initially divided from +-5V to +-2V, this would give at least a 0.5V headroom from each rail - this can be later corrected by increasing the gain (RN1A/RN1D = 20k, RN1B/RN1C = 1k):

$Iout = -1k/20k/R19 * Vin$

With Vin scaled by $2/5$, R19 (0.05R) should be decreased by $5/2$ to 0.02R (with the same RN1 ratio), or decreased by $4/5$ to 0.04R (RN1 ratio changed to 10:1)

Schematic for reference (v1.0 board):

PG signal

There are several issues with the PG signal. For reference: it is asserted by IC49 (N6V0/P15V0), IC21 (P5V4A), IC13 (Buck_Vout), is pulled up by R123 to P3V3_MP, and it sets the LD5 LED, resets the IC36 IO expander, clears DAC output and disables the 5V reference voltage.

Schematic for reference (v1.0 board):

CH1 - PG signal, CH2 - Buck_Vout power rail, IC36 reset forced high

With partial solution (IC13 disconnected from PG at 12V output)

Those issues can be fixed by disconnecting PG net from IC13 when configured for a 12V output, and by adding an ignore window (after changing VSEL_0/1) with a duration longer than ~150ms (too long for a realistic RC filter). IC8/IC26/IC27 (quad OR, dual monostable multivibrator) have unused resources in the mounted packages, and were used for the solution.

BOM Count reduction

Many passives are only used once, many components have close values, and several values are unnecessarily used in different packages. The board is not densly populated, it will be easy to correct the below.

Reductions in resistor values:

Summary of all R values in the board (crossed lines can be removed):

Value Case Tolerance Count Designators Comment
4M7 0805 1% 4
1M 0603 1% 3
160k 0603 1% 1 R40 Part of feedback resistance, total required 165k (series 5k)
100k 0603 1% 1 R210 Part of a 10k/100k divider, changed to 1k/10k
80k6 0603 0.1% 2 R212, R213
75k 0603 1% 1 2 R32 Part of feedback resistance, total required 79k7 (series 4k7)
68k 0603 1% 1 R21 Part of feedback resistance, total required 72k3 (series 4k3)
47k 0402 1% 1 R207 Part of a voltage divider, 3k3/47k, replaced with 3k/(33k+10k)
33k 0603 1% 4 5 R39, R77, R205, R217
31k6 0603 0.1% 1 3 R135 Part of a voltage divider, 10k/31k6, replaced with (24k/)75k
27k 0603 1% 2 R101, R117
27k 0402 1% 2 R11, R142 Part of feedback resistance, total required 54k (2x 27k), replaced with 24k+20k+10k
24k 0603 1% 1 3 R75 Part of feedback resistance, total required 26k7 (series 2k7)
20k 0603 0.1% 7 13 -
20k 0603 1% 3 R76, R168, R190 Replaced with 2x 10k 0603
13k 0402 1% 1 R42 series P15V0 LED resistor
10k 0402 1% 19 24 R136, (...) Part of a voltage divider, 10k/31k6, replaced with 24k(/75k)
10k 0603 1% 34 50
10k 0603 0.1% 4 R105, R183, R187, R188 ADC divider (10k/8k06) - changed to 31k6(/20k) 0.1%
10k 0402 1% 2 140, 141 INVALID PART NUMBER, changed to valid 0402 10k
8k06 0603 0.1% 3 R184, R185, R186 ADC divider (10k/8k06) - changed to (31k6/)20k 0.1%
7k5 0603 1% 1 R93 replaced with 10k || (10k+20k)
5k6 0402 1% 1 R139 Pullup, replaced with 3k+2k7
5k1 0603 1% 1 R189 Replaced with 10k || 10k
5k1 0402 1% 2 R170, R194 Replaced with 10k || 10k
4k99 0603 1% 1 R41 Replaced with 2x parallel 10k
4k7 0603 1% 1 2 R30 Part of feedback resistance, total required 79k7 (series 75k)
4k7 0402 1% 1 R163 series N6V0 LED resistor, replaced with 0603
4k3 0603 1% 1 R26 Part of feedback resistance, total required 72k3 (series 68k)
3k9 0603 1% 1 R5
3k3 0603 1% 1 R100 Part of a voltage divider, 3k3/47k, replaced with 3k/(33k+10k)
3k 0603 1% 4 9
2k7 0603 1% 6 7
2k49 0603 0.1% 1 R99
2k2 0603 1% 3 6
2k2 0402 1% 2 R1, R4 Replaced with 0603 2k2
2k 0603 0.1% 3 R48, R88, R89 Replaced with 2x 1k 0.1%
1k8 0402 1% 1 R56
1k6 0402 1% 2 R58, R143 Placed in parallel to get 800R, replaced with 1k3||2k2
1k5 0603 1% 1 R92 Replaced with 3k || 3k
1k3 0603 1% 1 2 R218
1k 0603 0.1% 6 17
1k 0402 1% 4 R17, R22, R87, R182 R17 changed to 100R, others to 0603 case
220 0603 1% 9 R6, R9, R20, R28, R29, R33, R118, R119, R121 Series LED resistors
200 0603 1% 2 20
200 0402 1% 1 R5 Replaced with 0603 200R
110 0603 1% 1 R176
100 0603 1% 4 R79, R81, R83, R85 replace with 2x || 200R
100 0402 1% 17 18
22 0402 1% 5 7
10 0402 1% 1 R164 Replaced with 22R || 22R
0R05 2512 0.1% 1 R19
0 0805 1 3 R149
0 0603 2 R129, R130 FP Grounding
0 0402 27

Total of 25 positions removed

Reductions in capacitor values:

Summary of all C values in the board (crossed lines can be removed):

Value Case Tolerance/ Voltage Count Designators Comment
220uF 8x6.2mm 20% / 16V 1 C98 electrolytic
47uF 1206 20% / 25V 4 X5R
47uF 6032-28 10% / 16V 2 C503, C504 tantalum
22uF 0805 10% / 16V 6 7 X5R
22uF 3528-21 10% / 10V 1 C91 tantalum
22uF 0603 20% / 6.3V 1 C79 X5R
10uF 0805 10% / 25V 18 X5R
10uF 3216-18 20% / 16V 9 tantalum
10uF 0805 10% / 16V 2 ~~ C39, C40~~ X5R
10uF 0603 20% / 16V 2 5 C50, C72 X5R
10uF 0603 10% / 10V 1 C167 X5R
1uF 1206 10% / 50V 1 C14 X7R
1uF 0603 10% / 25V 8 18 X7R
1uF 0603 10% / 16V 7 X7R
1uF 0402 10% / 16V 2 C71, C81 X5R
100nF 0402 10% / 16V 41 54 X5R
100nF 0402 10% / 16V 13 X7R
3.3nF 0402 10% / 50V 2 C441, C442 X7R
100pF 0603 1% / 50V 4 NP0
47pF 0402 1% / 50V 1 C67 NP0
15pF 0603 5% / 50V 47 NP0
10pF 0402 5% / 50V 1 C63 NP0

Total of 8 positions removed

Other BOM count reductions:

CannaCardo commented 1 month ago