Electronics > Repair
Quick Repair: Standford Research PS350 5KV 5mA(Fixed but working on calibration)
alm:
--- Quote from: smgvbest on August 01, 2017, 12:49:59 am ---here's an update. I did a WORD 0,0 and wow what a change
at 0v actual volt was ~2400V
at 3000V it ran to 5600V (this is interested)
--- End quote ---
Seems definitely an offset.
--- Quote from: smgvbest on August 01, 2017, 12:49:59 am ---I then tried word 0,2477 and at 50V i got 48.4 which means the higher value actually lowered the output
--- End quote ---
Which matches my observation that it is subtracted from vset.
--- Quote from: smgvbest on August 01, 2017, 12:49:59 am ---next I tried setting word 1 to 0 with word 0 back to normal
with the word 00 at 0v I had ~650V on the DMM
everything below 3000V was scewed. above 3000V things where basicaly normal
--- End quote ---
This matches my observation that word1 is used if vset < word0. We established that word0 corresponded to something like 2.5 kV, so it makes sense that word1 is used for values below 2.5 kV. If you were to change word2, I would expect the values above 2.5 kV to be messed up.
--- Quote from: smgvbest on August 01, 2017, 12:49:59 am ---I'l do more checking and will actually need to try to find at which values does each word have effect.
short of tring to figure out the code now that we know where cal values are
--- End quote ---
I disagree. I think analyzing the code is the easier route, but obviously we should double check with the real equipment. For example, do you see any effect in any mode/polarity if you set word 12 to 0? The value of word 12 is identical to word 0 (suggesting a vset offset to me), but according to my analysis it should never be used.
Especially if I am right that there are two non-linear parameters that affect vset, I think that black box reverse-engineering will require a large number of points to establish the response (although I imagine you could brute-force it with a voltage PS350 and a voltmeter both under computer control). I believe we have narrowed down the code that it is responsible (see my previous), and it is just a matter of studying that code in more detail.
My current theory is that for vset, the dac value is:
\[
dac(v_{set}) = \left\{
\begin{array}{ll}
f(word_0-v_{set}, word_1) & : v_{set} < word_0\\
f(word_0-v_{set}, word_2) & : v_{set} >= word_0
\end{array}
\right.
\]
Where f(x,y) might be a multiply or something similar.
Dexter2:
I have been playing around on my PS350 and I can confirm they use three point calibration for all parameters and positive and negative polarity separate what comes out from what alm has identified in the code and smgvbest tested.
This way they can compensate for some degree of system nonlinearity. In theory you could run the DAC from 0 to full scale and see where the ideal mid-point would be and then compensate with W1,W2 factors but what it seems from all calibrations available to me they just set the midscale first with W0 offset and then compensate for the values below and above.
I have made a small graphic to illustrate after confirming on the instrument itself what they do. It’s just an illustration of alms equations:
One additional thing I did find out is what that W12...17 are. They calibrate the read back voltage value that is shown on display and read back over GPIB with VOUT, IOUT:
W12 +pol voltage readback display offset
W13 +pol voltage readback display scale if vset < W12
W14 +pol voltage readback display scale if vset >= W12
W15 +pol current readback display offset
W16 +pol current readback display scale if vset < W15
W17 +pol current readback display scale if vset >= W15
I have also been able to calibrate my PS350 voltage set and read back in this way quite successfully up to now, for current I have to build some custom high voltage resistors to make the calibration.
The procedure i used so far:
* Set Vset to 2500V
* Modify W0 until reference DMM reads 2500V
* Set Vset to 100V
* Modify W1 until reference DMM reads 100V
* Set Vset to 4500V
* Modify W2 until reference DMM reads 4500V
* Set Vset to 2500V
* Modify W12 until PS350 display reads 2500V
* Set Vset to 100V
* Modify W13 until PS350 display reads 100V
* Set Vset to 4500V
* Modify W14 until PS350 display reads 4500VOne thing to watch out the last digit of the scale values is strange it seems as it determines the sign of the multiplayer or something as if changing it from 49560 to 49561 screws up the display completely but in steps of +/-10 its ok (Tested on W13). Probably it’s the same for all other factors I have not checked.
smgvbest:
Wow, I get up and what wonderful posts to wake up too.
I'd still love to match this with the actual code as @alm mentions. if he is willing to continue to assist (your disassembly skills exceed mine) that would be great.
@Dexter2 thank you so much for your checks.
tasks as I see them are
1. Continue looking at code to verify all calibration options.
2. Verify calibration options (testing at DUT)
3. Develop and test manual calibration procedure (for VSET looks like this may be done)
4. Develop and test automated calibration procedure (python or perl code preferred as not everyone has other tools)
is anyone interested in #4?
there is a possibility of extending the range of the unit beyond 5Kv but to do safely we'd have to hack not only the firmware but the HV section. some components are not rated more than 6Kv (C5 & C8) while components in the cockcroft multiplier are rated at 4Kv (C1-C4)
any one interested in pursing that or call it quits with the calibration?
Dexter2:
I managed to fully calibrate my unit (except the ITRIP and VLIM). Only need to burn the new EPROM now (hope there are no CRC checks)
I also made a small crude program with it you can quicklly change parameters and get the calibration for Voltage/Current done. So it does not calculate anything it it just a quick tool to do it by hand and to modify the Firmware at the end. Program is in LabView. To keep it simple the GPIB interface is initialized trough niMAX.
And for the end the new memory map. Still a few locations are unknown. Any Ideas?
alm:
--- Quote from: Dexter2 on August 01, 2017, 08:16:00 am ---I have been playing around on my PS350 and I can confirm they use three point calibration for all parameters and positive and negative polarity separate what comes out from what alm has identified in the code and smgvbest tested.
--- End quote ---
Thanks for doing these tests!
--- Quote from: Dexter2 on August 01, 2017, 08:16:00 am ---This way they can compensate for some degree of system nonlinearity. In theory you could run the DAC from 0 to full scale and see where the ideal mid-point would be and then compensate with W1,W2 factors but what it seems from all calibrations available to me they just set the midscale first with W0 offset and then compensate for the values below and above.
--- End quote ---
That is obviously the fastest way, and may be sufficient depending on the INL of the system and the specifications. It could be that they do a linearity test as part of the performance verification, but we'll never know without a calibration procedure (beyond 'no user serviceable components inside'). Obviously offset and gain is also the extent of the adjustment in purely analog power supplies with trimmers, but I could see a high-voltage having a more sophisticated scheme because of possible voltage coefficients. Too bad they do not even publish an incoming test or procedure to verify the performance against published specifications like some other manufacturers.
--- Quote from: Dexter2 on August 01, 2017, 08:16:00 am ---One additional thing I did find out is what that W12...17 are. They calibrate the read back voltage value that is shown on display and read back over GPIB with VOUT, IOUT:
--- End quote ---
Thanks! That makes sense. I have not looked at the readout display at all. Now that you mention it, I should search for the address of word 12 and will likely find the readout code.
--- Quote from: Dexter2 on August 01, 2017, 08:16:00 am ---I have also been able to calibrate my PS350 voltage set and read back in this way quite successfully up to now, for current I have to build some custom high voltage resistors to make the calibration.
--- End quote ---
Nice! I wonder about doing VLIM. There are software checks that limit VSET < VLIM which may prove an obstacle to testing the analog (crowbar?) circuit. Maybe deliberately programming W0-2 or W21-23 to be x% high?
--- Quote from: Dexter2 on August 01, 2017, 08:16:00 am ---One thing to watch out the last digit of the scale values is strange it seems as it determines the sign of the multiplayer or something as if changing it from 49560 to 49561 screws up the display completely but in steps of +/-10 its ok (Tested on W13). Probably it’s the same for all other factors I have not checked.
--- End quote ---
Interesting, I will see if I can find out anything in the code.
--- Quote from: smgvbest on August 01, 2017, 10:55:31 am ---I'd still love to match this with the actual code as @alm mentions. if he is willing to continue to assist (your disassembly skills exceed mine) that would be great.
--- End quote ---
Sure, I will do some digging in some of the points Dexter2 raised. Let me know if you have additional questions that could be answered from the code.
--- Quote from: smgvbest on August 01, 2017, 10:55:31 am ---is anyone interested in #4?
--- End quote ---
I am interested, but given my lack of access to the equipment (or plans to acquire one), I think my help would be limited to suggesting algorithms.
--- Quote from: smgvbest on August 01, 2017, 10:55:31 am ---there is a possibility of extending the range of the unit beyond 5Kv but to do safely we'd have to hack not only the firmware but the HV section. some components are not rated more than 6Kv (C5 & C8) while components in the cockcroft multiplier are rated at 4Kv (C1-C4)
any one interested in pursing that or call it quits with the calibration?
--- End quote ---
There appears to be support for a multiplier for VSET (for lower voltage ranges) through 0x099f (I plan to check the PS310 firmware from the other thread to see if it has non-zero values as I would expect). Not a divider, though it would not be difficult to add to the set and the readout circuits. For the set circuits, it might be as easy as shifting right in the multiplier loop instead of left.
--- Quote from: Dexter2 on August 01, 2017, 11:33:29 am ---And for the end the new memory map. Still a few locations are unknown. Any Ideas?
--- End quote ---
I will find the readout code and see if I can find a third readout calibration factor.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version