| Electronics > Repair |
| Quick Repair: Standford Research PS350 5KV 5mA(Fixed but working on calibration) |
| << < (8/11) > >> |
| alm:
The VLIM / ITRP values obviously do not need to be very accurate, it may very well be that they are the same within a certain model (although this does not seem to be the case for ITRP). This is the calibration data from a PS310 1.4 rom from the older thread: --- Code: ---0. 6C 02 1. 1D 54 2. 56 53 3. 71 02 4. 54 52 5. 54 52 --- End code --- Note the different offset (W3). The slope appears to be the same. |
| alm:
--- Quote from: alm on August 01, 2017, 12:50:27 pm ---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. --- End quote --- I found the code. The function that does this starts at 0x0a39. I am still investigating the details, but similar to the settings I see three sets three words. Calculation with the three words looks fairly similar to the setting. I am not sure yet what the third set of three words refers to yet, I will have to look at the ADC code in more detail. It involves a checksum (bytewise XOR) over a bunch of bitfields that are modified at various places. By toggling bits in the bitfields, it turns off bits in the checksum. The program relies on the checksum to tell which value to update. I need to identify all variables and trace where they are being updated and what they mean. --- Quote from: alm on August 01, 2017, 12:50:27 pm ---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). [...] --- End quote --- I checked the PS310 1.4 (without GPIB) firmware from the previous thread Sandra linked to, and indeed the block of four bytes (located at a slightly different address) is non zero: --- Code: ---ROM:095C unk_95C: db 2 ; DATA XREF: sub_898+53o ROM:095D db 2 ROM:095E db 1 ROM:095F db 1 --- End code --- This would scale the values sent to the DAC so the smaller voltage range would still correspond to full scale on the DAC. Though it appears that current values are also scaled up. I wonder if there is a separate block for readout, or that they just change the readout calibration constants to match? I am not sure if figuring this out is really a priority, but it at least it confirms my theory that the parameters at 0x99F (0x95C in the PS310 firmware) are model-specific. --- Quote from: alm on August 01, 2017, 12:50:27 pm --- --- 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. --- End quote --- See above. Working on it. Other thing I noticed. Sandra (and the schematic) has U507 Q4 as NC, but this code (that appears to shutdown the supply in case of I_FAULT, PRI_FAULT or V_FAULT), sets it: --- Code: ---ROM:0D42 shutdown: ; CODE XREF: sub_D94+15p ROM:0D42 ; sub_D94+57p ... ROM:0D42 ld hl, port_78h_value ROM:0D45 set 4, (hl) ; spare??? ROM:0D47 res 0, (hl) ; set -shutdown low ROM:0D49 ld a, (port_78h_value) ROM:0D4C out (78h), a ; set misc switches (u507) --- End code --- Old code? different model? Error in schematic? Does anyone know what J504 (status1 bit 6) connects to? My copy of the schematics is not searchable, and a quick scan through the schematic pages did not reveal anything. There is a function at 0x108c that checks it and shuts down the power and sets the voltage to zero if it is high. Could be another fault or interlock indicator? Does anyone know what port 0x3a is connected to? It is reading from it in a function that also writes to the display (for now named something_display :P): --- Code: ---ROM:01C9 loc_1C9: ; CODE XREF: sub_15D+66j ROM:01C9 in a, (3Ah) ROM:01CB bit 7, a ROM:01CD jp z, loc_227 ROM:01D0 set 1, c ROM:01D2 jp loc_227 --- End code --- Appears to be related to editing values on the display, so could be keyboard or display. |
| smgvbest:
here's the details on port 3Ah and the 20h bit 6 which is the rear panel switch to select between monitor mode or set mode for the V_MON/I_MON connectors on the back this is my most current port and address map --- Code: --- MEMORY ADDRESS OF EPROM: 0000~1FFF (PROGRAM SPACE:8KB,ST M2764A) SRAM: 4000~47FF (DATA SPACE:2KB,HITACHI HM6116) IRQ_ROUTIINE: 0038h SOURCE: SHEET 6 CLK->(U610)->TIMER @ 976.56hz/0.001024ms (4Mhz/4096(U610)74HC4020) GPIB SRAM ADDRESSES: SRAM_MISC = 413AH SRAM_STATUS1 = NA SRAM_STATUS2 = 401CH EPROM ADDRESSES: *IDN? STRING 000019fah: 53 74 61 6E 66 6F 72 64 52 65 73 65 61 72 63 68 ; StanfordResearch 00001a0ah: 53 79 73 74 65 6D 73 2C 50 53 ; Systems,PS 191CH GPIB OFFSETS TABLE 0000191ch: 24 35 19 2A 3B 19 48 6E 19 49 79 19 53 89 19 54 ; $5.*;.Hn.Iy.S‰.T CMD CHAR+OFFSET 0000192ch: 8F 19 56 9A 19 57 AA 19 00 ; .Vš.Wª.. 193BH GPIB COMMAND 00001935h: 44 41 43 BE 1C 00 43 4C 53 6A 1A 45 53 45 3C 1E ; DAC¾..CLSj.ESE<. CMD+OFFSET+00H 00001945h: 45 53 52 AE 1E 49 44 4E B0 19 50 53 43 72 1E 52 ; ESR®.IDN°.PSCr.R 00001955h: 43 4C 5A 1D 52 53 54 4E 1A 53 41 56 35 1D 53 52 ; CLZ.RSTN.SAV5.SR 00001965h: 45 06 1E 53 54 42 08 1F 00 56 4F 46 14 1A 56 4F ; E..STB...VOF..VO 00001975h: 4E 24 1A 00 4C 49 4D 7F 1B 4F 55 54 7E 1C 54 52 ; N$..LIM.OUT~.TR 00001985h: 50 EE 1B 00 4D 4F 44 9E 1C 00 43 4C 52 3B 1A 4D ; Pî..MODž..CLR;.M 00001995h: 4F 44 FF 1C 00 4C 49 4D 06 1B 4F 55 54 5D 1C 53 ; ODÿ..LIM..OUT].S 000019a5h: 45 54 87 1A 00 4F 52 44 ; ET‡..ORD 19FAH 000019fah: F3 CD D5 11 FB 0E 00 C3 D4 15 CD 9D 17 C2 FD 17 ; óÍÕ.û..ÃÔ.Í.Âý. 00001a0ah: 21 8D 1F 11 3C 41 01 09 00 ED B0 ; !..<A...í° 1F7BH 00001f7bh: 5A 31 33 34 ; Z134 1F7FH EPROM_VERSION_NUMBER 00001f7fh: 31 2E 33 34 ; 1.34 1F83H 00001f83h: 88 13 88 13 82 14 82 14 64 00 ; ˆ.ˆ.‚.‚.d. 1F8DH 00001f8dh: 00 00 88 13 82 14 82 14 00 00 00 00 00 00 00 00 ; ..ˆ.‚.‚......... 00001f9dh: 0E 48 0D ; .H. 1FA0H EPROM_CAL_DATA 00001fa0h: AC 09 E4 55 0B 52 C4 09 54 52 54 52 BC 09 19 52 ; ¬.äU.RÄ.TRTR¼..R 00001fb0h: 53 4E BB 09 28 52 55 4E AC 09 E6 BF E2 C1 BD 09 ; SN».(RUN¬.æ¿âÁ½. 00001fc0h: E0 C1 E4 C3 00 00 93 43 93 43 A6 09 96 55 F6 51 ; àÁäÃ..“C“C¦.–UöQ 00001fd0h: C4 09 54 52 54 52 D1 09 31 51 30 4D D0 09 52 51 ; Ä.TRTRÑ.1Q0MÐ.RQ 00001fe0h: 22 4D A6 09 12 C0 E2 C1 D2 09 78 C2 84 C4 00 00 ; "M¦..ÀâÁÒ.x„Ä.. 00001ff0h: 93 43 93 43 00 00 76 CA 00 00 76 CA ; “C“C..vÊ..vÊ 1FFCH EPROM_SERIAL_NUMBER 00001ffch: 31 31 33 37 ; 1137 GPIB DAC/$DAC CLS/*CLS ESE/*ESE ESR/*ESR IDN/*IDN PSC/*PSC RCLZ/*RCL RSTN/*RST SAV/*SAV SRE/*SRE STB/*STB VOF/HVOF VON/HVON LIM/ILIM OUT/IOUT TRP/ITRP MOD/SMOD CLR/TCLR MOD/TMOD LIM/VLIM OUT/VOUT SET/VSET ORD/WORD I/O ADDRESSES: U504 (A3-A5 -> A-C, A6-G1, WR->!G2A, IORQ->!G2B ) 40H: SPARE 48H:-SETS -> U407/U408 ------------------------------ BIT0: U407A / GND->U405.3 BIT1: U407B / U410.RF -> U405.3 BIT2: U408A / ANALOG_VOLTAGE BIT3: U408B / I_OUT_MONITOR BIT4: U408C / CV_SET BIT5: U408D / DV_LIM BIT6: U407C / I_LIM BIT7: U407D / I_TRIP ------------------------------ 50H:-DAC U410 12BIT DAC AD7542 50H DAC_LOW_NIBBLE 51H DAC_MID_NIBBLE 52H DAC_HIGH_NIBBLE 53H DAC_LOAD 58H:-LED U611 74HC374 ------------------------------ BIT0: L0 BIT1: L1 BIT2: L2 BIT3: -AD1/V_MON BIT4: -AD2/I_MON BIT5: -AD3/ANALOG_VOLTAGE_IN BIT6: -IO BIT7: UNUSED ------------------------------ 60H:-SEGB U606 74HC374 ------------------------------ BIT0: EDP BIT1: EG BIT2: EF BIT3: EE BIT4: ED BIT5: EC BIT6: EB BIT7: EA ------------------------------ 68H:-SEGA U609 74HC374 ------------------------------ BIT0: ODP BIT1: OG BIT2: OF BIT3: OE BIT4: OD BIT5: OC BIT6: OB BIT7: OA ------------------------------ 70H:-STROBE (STROB0-STROB5 LED) (STROB2-4 KEYBOARD SCAN OUT) ------------------------------ BIT0: STROB0 (LED) BIT1: STROB1 (LED) BIT2: STROB2 (LED,KBD) BIT3: STROB3 (LED,KBD) BIT4: STROB4 (LED,KBD) BIT5: STROB5 (LED) BIT6: STROB6 () BIT7: STROB7 () ------------------------------ 78H: MISC -> (U507,74HC374 OCTAL D-TYPE FLIP-FLOP) >CLK ------------------------------ BIT0: -SHUTDOWN BIT1: UPOK BIT2: -FLAG_RESET BIT3: -TIMER_RESET BIT4: (SPARE) BIT5: -POS BIT6: -NEG BIT7: FILTER ------------------------------ U505 (A3-A5 -> A-C, !M1->G1, A6->!G2A, IORQ->!G2B ) 00H: SPARE 08H: SPARE 10H: SPARE 18H: SPARE [b]20H: STATUS1 U506->74HC244 ------------------------------ BIT0: COMPARE BIT1: I_FAULT BIT2: CUR_LIM BIT3: PRI_FAULT BIT4: V_FAULT BIT5: TIMER BIT6: -J504/SET_MONITOR_SW BIT7: GND[/b] ------------------------------ 28H: STATUS2 U512->74HC244 ------------------------------ BIT0: HV_ON BIT1: HV_OFF BIT2: J501/-HV_SW_POS BIT3: J502/-HV_SW_NEG BIT4: GND BIT5: GND BIT6: GND BIT7: GND ------------------------------ 30H: -KBD ------------------------------ BIT0: KBD0 BIT1: KBD1 BIT2: KBD2 BIT3: KBD3 BIT4: KBD4 BIT5: KBD5 BIT6: KBD6 BIT7: KBD7 key press display 01 Man 02 GPIB 03 left-arrow 04 Right arrow 05 up-arrow 06 down-arrow 07 Enter 08 Select 09 STO 10 RCL 11 CLR 12 . 13 0 14 7 15 4 16 1 17 8 18 5 19 2 20 9 21 6 22 3 ------------------------------ 38H: -GPIB ------------------------------ READ 38H GPIB_INT_STATUS_0 BIT0: INT0 (1 WHEN STATUS 1 BIT SET) BIT1: INT1 (1 WHEN BITS 2-7 OF STATUS 0 SET) BIT2: BI (BYTE IN) BIT3: BO (BYTE OUT) BIT4: END (LAST BYTE RECEIVED) BIT5: SPAS (RSV1/2 SERVICE REQUEST) BIT6: RCL (REMOTE/LOCAL CHANGE) BIT7: MAC (ADDRESS CHANGE) 39H GPIB_INT_STATUS_1 BIT0: GET (GROUP EXECUTE TRIGGER) BIT1: ERR (ERROR) BIT2: UNC (UNRECOGNIZED COMMAND) BIT3: APT (ADDRESS PASS THROUGH) BIT4: DCAS (DEVICE CLEAR ACTIVE STATE) BIT5: MA (MY ADDRESS) BIT6: SRQ (SERVICE REQUEST) BIT7: IFC (INTERFACE CLEAR) [b]3AH GPIB_ADDRESS_STATUS BIT0: REM BIT1: LLO BIT2: ATN BIT3: LPAS BIT4: TPAS BIT5: LADS BIT6: TADS BIT7: ULPA[/b] 3BH GPIB_BUS_STATUS 3EH GPIB_CMD_PASS_THRU 3FH GPIB_DATA_IN WRITE 38H GPIB_INT_MASK_0 39H GPIB_INT_MASK_1 3BH GPIB_AUXILIARY_CMD 3CH GPIB_ADDRESS 3DH GPIB_SERIAL_POLL 3EH GPIB_PARALLEL_POLL 3FH GPIB_DATA_OUT ------------------------------ --- End code --- |
| Zucca:
Just want to say thank you, I am enjoying the show here. I am impressed how the eevblog sometime sets up a wonderful skilled team to solve the EE problems. :-+ |
| smgvbest:
--- Quote from: Dexter2 on August 01, 2017, 01:53:41 pm ---I know my calibration assist program is not in a free language but it was the quickest i could make one as i use LabView all the time. I think National Instrument also has a LabView 45day free full working trial if you want to play with it. If required i can make an executable you would then only need to download a free runtime engine to get it working. To automate the software more it would be possible to read in the offset and the two factors, read values from a external DMM in all three calibration points for all parameters and then calculate the new factors but it probably does not make sense for a home calibration. --- End quote --- No problem and thank you for doing this so quick. The trial is 7 days but it says you can extend 45 day inside the product. (yes I downloaded it :) ) I did play with the 1st three offsets and now my unit is <1V of target value full scale. will play with rest as I have time. |
| Navigation |
| Message Index |
| Next page |
| Previous page |