| Electronics > Repair |
| HP 3478A: How to read/write cal SRAM |
| << < (38/41) > >> |
| radar_macgyver:
It seems like the Python string conversions were messing up both my code as well as the Prologix interface library that I found on github. The solution was to create a tcp socket directly to the converter rather than rely on the library. With that change, I get the following: 0000: 40 40 40 40 42 42 45 42 45 4f 43 4f 4c 4e 40 40 @@@@BBEB EOCOLN@@ 0010: 40 40 41 42 42 44 45 41 45 4e 4b 40 40 40 40 40 @@ABBDEA ENK@@@@@ 0020: 42 42 44 42 41 4c 4e 48 49 49 49 49 49 41 42 45 BBDBALNH IIIIIABE 0030: 4d 43 42 4b 48 40 40 40 40 40 40 42 44 44 41 44 MCBKH@@@ @@@BDDAD 0040: 4f 40 40 40 40 40 40 40 40 40 40 40 40 40 40 49 O@@@@@@@ @@@@@@@I 0050: 49 47 44 43 46 42 44 41 4c 45 4c 41 49 49 49 44 IGDCFBDA LELAIIID 0060: 42 47 41 4c 45 4c 42 4b 47 49 49 49 49 48 46 41 BGALELBK GIIIIHFA 0070: 4c 4c 42 41 4b 41 49 49 49 49 49 45 40 45 43 42 LLBAKAII IIIE@ECB 0080: 45 4b 4e 40 40 40 40 41 46 40 45 45 42 4f 4d 4d EKN@@@@A F@EEBOMM 0090: 49 49 49 49 49 47 41 4c 4c 4e 43 4a 41 49 49 49 IIIIIGAL LNCJAIII 00a0: 49 49 45 40 45 45 42 4d 4b 44 49 49 49 49 49 48 IIE@EEBM KDIIIIIH 00b0: 41 4d 4d 4e 42 49 4f 49 49 49 49 43 45 41 4d 43 AMMNBIOI IIICEAMC 00c0: 41 4c 4b 45 49 49 49 49 48 49 41 4d 4e 4e 44 49 ALKEIIII HIAMNNDI 00d0: 4c 40 40 40 40 40 40 40 40 40 40 40 40 40 49 49 L@@@@@@@ @@@@@@II 00e0: 47 44 43 46 41 4c 43 44 41 4c 44 40 40 40 40 40 GDCFALCD ALD@@@@@ 00f0: 40 40 40 40 40 40 40 48 40 40 40 40 40 40 40 40 @@@@@@@H @@@@@@@@ ************ hp3478util, (c) 2018-2020 fenugrec ************ entry# offset (rawgain) gain range 00 000225 25F3F 1.024929 30 mV DC 01 000012 24515 1.024515 300 mV DC 02 000002 2421C 1.024206 3 V DC 03 999991 25D32 1.024732 30 V DC 04 000000 24414 1.024414 300 V DC 05 000000 00000 1.000000 (Not used) 06 997436 241C5 1.024065 ACV 07 999427 1C5C2 1.006462 30 Ohm 2W/4W 08 999986 1CC21 1.005621 300 Ohm 2W/4W 09 999995 05325 1.005325 3 KOhm 2W/4W 0A 000016 0552F 1.005519 30 KOhm 2W/4W 0B 999997 1CCE3 1.005583 300 KOhm 2W/4W 0C 999995 0552D 1.005517 3 MOhm 2W/4W 0D 999998 1DDE2 1.006682 30 MOhm 2W/4W 0E 999935 1D31C 1.007306 300 mA DC 0F 999989 1DEE4 1.006784 3A DC 10 000000 00000 1.000000 (Not used) 11 997436 1C341 1.006341 300 mA/3A AC 12 000000 00000 1.000000 (Not used) entry 0x00: OK (30 mV DC) entry 0x01: OK (300 mV DC) entry 0x02: OK (3 V DC) entry 0x03: OK (30 V DC) entry 0x04: OK (300 V DC) entry 0x05 ((Not used)): bad cks (0x00) (unused entry) entry 0x06: OK (ACV) entry 0x07: OK (30 Ohm 2W/4W) entry 0x08: OK (300 Ohm 2W/4W) entry 0x09: OK (3 KOhm 2W/4W) entry 0x0A: OK (30 KOhm 2W/4W) entry 0x0B: OK (300 KOhm 2W/4W) entry 0x0C: OK (3 MOhm 2W/4W) entry 0x0D: OK (30 MOhm 2W/4W) entry 0x0E: OK (300 mA DC) entry 0x0F: OK (3A DC) entry 0x10 ((Not used)): bad cks (0x00) (unused entry) entry 0x11: OK (300 mA/3A AC) entry 0x12 ((Not used)): bad cks (0x08) (unused entry) There seems to be two 'regimes' for the gains, one for the voltage readings and the other for everything else. Does this imply that there may be something wrong with the current sense part of the meter, given that it's so far off cal? |
| m k:
Much better cal set. Drain a battery and select a level where both meters remain in one range. Then you can forget absolute values and concentrate to change. |
| pqass:
--- Quote from: radar_macgyver on March 23, 2024, 04:58:35 am ---There seems to be two 'regimes' for the gains, one for the voltage readings and the other for everything else. Does this imply that there may be something wrong with the current sense part of the meter, given that it's so far off cal? --- End quote --- Good to see all the records pass now. DCI and ACI just add a shunt and a three-stage amplifier+RMS converter in front of the ADC. See the service guide schematic 1,2,3; pages 147,149, 152. So if the DCV parts are fine then all I can think of is that someone over-amp'd it and changed the 0R1 shunt ever so slightly? I'd check the fuse to confirm it's 3A. Consider this an opportunity to re-cal just the DCI and ACI records. See 4-61 DC Current Calibration (page 45) and 4-72 AC Current Calibration (page 46) in the service manual (link above). The procedures require a calibrator but I'd just use a resistor+power supply then series connect with the 3478A and DMM6500. You'll need to provide a 100mA and 1A current sources (100R and 10R @10V). However, for the ACI, you'll need a 300mA 1KHz source; maybe a function generator+amplifier? The great thing about this meter is that the source doesn't have to be precise since you can [inc|dec]rease the display value to match the DMM6500 reading; it figures out the cal entry from that. Note: crc=ff means record passes validation. --- Code: ---$ ./verify.sh radar2.cal 000001 40 40 40 42 42 45 42 45 4f 43 4f 4c 4e >@@@BBEBEOCOLN< 00: raw_offset=000225 raw_gain=25f3f offset=+000149 gain=1.024929 crc=ff 30 mV DC 00000e 40 40 40 40 41 42 42 44 45 41 45 4e 4b >@@@@ABBDEAENK< 01: raw_offset=000012 raw_gain=24515 offset=+000010 gain=1.024515 crc=ff 300 mV DC 00001b 40 40 40 40 40 42 42 44 42 41 4c 4e 48 >@@@@@BBDBALNH< 02: raw_offset=000002 raw_gain=2421c offset=+000002 gain=1.024206 crc=ff 3 V DC 000028 49 49 49 49 49 41 42 45 4d 43 42 4b 48 >IIIIIABEMCBKH< 03: raw_offset=999991 raw_gain=25d32 offset=-000009 gain=1.024732 crc=ff 30 V DC 000035 40 40 40 40 40 40 42 44 44 41 44 4f 40 >@@@@@@BDDADO@< 04: raw_offset=000000 raw_gain=24414 offset=+000000 gain=1.024414 crc=ff 300 V DC 000042 40 40 40 40 40 40 40 40 40 40 40 40 40 >@@@@@@@@@@@@@< 05: raw_offset=000000 raw_gain=00000 offset=+000000 gain=1.000000 crc=00 <not used> 00004f 49 49 47 44 43 46 42 44 41 4c 45 4c 41 >IIGDCFBDALELA< 06: raw_offset=997436 raw_gain=241c5 offset=-002564 gain=1.024065 crc=ff AC V 00005c 49 49 49 44 42 47 41 4c 45 4c 42 4b 47 >IIIDBGALELBKG< 07: raw_offset=999427 raw_gain=1c5c2 offset=-000573 gain=1.006462 crc=ff 30 Ohm 2W/4W 000069 49 49 49 49 48 46 41 4c 4c 42 41 4b 41 >IIIIHFALLBAKA< 08: raw_offset=999986 raw_gain=1cc21 offset=-000014 gain=1.005621 crc=ff 300 Ohm 2W/4W 000076 49 49 49 49 49 45 40 45 43 42 45 4b 4e >IIIIIE@ECBEKN< 09: raw_offset=999995 raw_gain=05325 offset=-000005 gain=1.005325 crc=ff 3 kOhm 2W/4W 000083 40 40 40 40 41 46 40 45 45 42 4f 4d 4d >@@@@AF@EEBOMM< 10: raw_offset=000016 raw_gain=0552f offset=+000014 gain=1.005519 crc=ff 30 kOhm 2W/4W 000090 49 49 49 49 49 47 41 4c 4c 4e 43 4a 41 >IIIIIGALLNCJA< 11: raw_offset=999997 raw_gain=1cce3 offset=-000003 gain=1.005583 crc=ff 300 kOhm 2W/4W 00009d 49 49 49 49 49 45 40 45 45 42 4d 4b 44 >IIIIIE@EEBMKD< 12: raw_offset=999995 raw_gain=0552d offset=-000005 gain=1.005517 crc=ff 3 MOhm 2W/4W 0000aa 49 49 49 49 49 48 41 4d 4d 4e 42 49 4f >IIIIIHAMMNBIO< 13: raw_offset=999998 raw_gain=1dde2 offset=-000002 gain=1.006682 crc=ff 30 MOhm 2W/4W 0000b7 49 49 49 49 43 45 41 4d 43 41 4c 4b 45 >IIIICEAMCALKE< 14: raw_offset=999935 raw_gain=1d31c offset=-000065 gain=1.007306 crc=ff 300 mA DC 0000c4 49 49 49 49 48 49 41 4d 4e 4e 44 49 4c >IIIIHIAMNNDIL< 15: raw_offset=999989 raw_gain=1dee4 offset=-000011 gain=1.006784 crc=ff 3A DC 0000d1 40 40 40 40 40 40 40 40 40 40 40 40 40 >@@@@@@@@@@@@@< 16: raw_offset=000000 raw_gain=00000 offset=+000000 gain=1.000000 crc=00 <not used> 0000de 49 49 47 44 43 46 41 4c 43 44 41 4c 44 >IIGDCFALCDALD< 17: raw_offset=997436 raw_gain=1c341 offset=-002564 gain=1.006341 crc=ff 300 mA/3A AC 0000eb 40 40 40 40 40 40 40 40 40 40 40 40 48 >@@@@@@@@@@@@H< 18: raw_offset=000000 raw_gain=00000 offset=+000000 gain=1.000000 crc=08 <not used> 0000f8 40 40 40 40 40 40 40 40 >@@@@@@@@< 19: <padding> --- End code --- |
| Dan N:
--- Quote from: pqass on March 21, 2024, 05:27:47 am ---Attached is my verify.sh script (slightly updated from my #123 post; added switch to od command to show duplicate lines). --- End quote --- Very clever script. :-+ I noticed the leading 0 in some positive offsets causes strtonum to interpret it as octal, for example: --- Code: ---raw_offset=000611 offset=+000393 --- End code --- Adding a leading "+" to the string at conversion forces decimal interpretation: --- Code: ---Change: coset = strtonum(oset); if (strtonum(oset)>499999) coset -= 1000000; to: coset = strtonum("+" oset); if (coset>499999) coset -= 1000000; --- End code --- |
| pqass:
Thank you Dan N! See latest version below (remove the .txt ending). I've taken the opportunity to clean it up, add error checks, and better comments. |
| Navigation |
| Message Index |
| Next page |
| Previous page |