80-365 analyzer control notes

Print Friendly, PDF & Email

This blog post is a compilation of notes which are helpful when troubleshooting or calibrating the 80-365 (and 80-366) SCA analyzer control.

The 80-365 SCA analyzer control provides all of the voltages to the SCA (spherical capacitive analyzer) used on older PHI XPS (X-ray photoelectron spectroscopy) systems. Those include the retard voltage, the pass energy, the lens voltages and the electron multiplier voltage.

To troubleshoot or calibrate the 80-365, follow the calibration procedure in the 80-365 manual. Note that high voltages are present on the 80-365 boards, always refer these types of measurements to technicians who have been properly trained in working with high voltage!

If are unable to repair the 80-365 yourself, please contact RBD Instruments and we can repair the boards for you.

80-365 Lens board calibration notes

You may need to load each word twice.   For example,18D4, 1830   you load 18D4, 18D4, 1830, 1830

For XPS and AES, the output voltages are positive, and the fine supplies are negative.  

Make sure that you set the polarity before programming on dual polarity boards.

1310 is + polarity for L3

1320 is + polarity for L2

Common data values

L2            Output C53/G5                  Fine Supply    – lead ground side R143   + lead right side R142/G5

1801,1800 – Adjust R45/A3 for -20V on fine supply

1800, 1808 – Adjust R77/B4 for – 20V on fine supply           Adjust R67/G3 for +409.6V on C53

18D4, 1830 – Adjust R67/G3 for +2500.0 V on C 53 output.  Readjust R77/B4 for -20V on fine supply

1800, 1800 – zero

L3            Output C41/E5                   Fine supply         – lead ground side R127/E5  + lead left side R120/E5

1601, 1600 – Adjust R52/C3 for -20V on fine supply

1600,1608 – Adjust R87/D4 for–20V on fine supply      Adjust R59/E3 for +409.6V on C41

16D4, 1630 – Adjust R59/E3 for +2500.0V on C 41 output. Readjust R87/D4 for -20V on fine supply

1600,1600 – Zero

NOTE:    If you have issues with the +5V supply dropping and voltages not loading properly, look at the local power supply board.  You may need to replace the 3524 regulator on the local power supply board.

80-365/66 Pass Energy board DAC bit test

To test individual bits:

Pass energy range = 1440.25674, or Volts / bit (( this is incorrect, range is 1920 or 2145))

Write out on DR11 A CSR 1   

Note:  You need to write the values out twice.

To set the DAC back to zero between bits, write out 1a00

The following table shows the voltage on the DAC and the output on the supply.   The pass energy gain is 144:1.

0000 0000 0000 0001

bit 0

0.022 V

1a00, 1a01 = .0001525 V on the DAC

0000 00000000 0010

bit 1

.044 V

1a00, 1a02 = .0003052 V on DAC

00000 0000 000 0100

bit 2

.088 V

1a00, 1a04 = .000 6V on DAC

0000 0000 0000 1000

bit 3

.019 V

1a00, 1a08 = .00122 V on DAC

0000 0000 0001 0000

bit 4

0.35 V

1a00, 1a10 = .00244 V on DAC

0000 0000 0010 0000

bit 5

0.7 V

1a00, 1a20 =.00488 V on DAC

0000 0000 0100 0000

bit 6

1.4 V

1a00, 1a40 = .0097 V on DAC

0000 0000 1000 0000

bit 7

2.8 V

1a00, 1a80 =.019 V on DAC

0000 0001 0000 0000

bit 8

5.63 V

1a01, 1a00  =.039 V on DAC

0000 0010 0000 0000

bit 9

11.25 V

1a02 ,1a00  = .078 V on DAC

0000 0100 0000 0000

bit 10

22.5 V

1a04 ,1a00  = .156 V on DAC

0000 1000 0000 0000

bit 11

45 V

1a08 ,1a00   = .3125 V on DAC

0001 0000 0000 0000

bit 12

90.02 V

1a10 ,1a00  = .625 V on DAC

0010 0000 0000 0000

bit 13

180.03 V

1a20,1a00   =1.25 V on DAC

0100 0000 0000 0000

bit 14

360.06 V

1a40 ,1a00   = 2.5 V on DAC

1000 0000 0000 0000

bit 15

720.13 V

1a80 ,1a00  = 5.0 V on DAC

All Bits:

1AFF, ,1a00   = 10 V on DAC

1440.25 V on output

80-365 / 366 Pass energy board range note

The 80-365 and 80-366 pass energies have different maximums.

The 80-365 is 1920V

The 80-366 is 2145V

Make sure that you have the correct procedure when you calibrate the board.

80-365 Local Power supply board notes

Capacitor Voltage Comments
C33 22V +/1 1.5V   adjust R27 Transformer output before regulator
C35 +15 Pass energy board power
C36 -15 Pass energy board power
C34 +5V Pass energy board power
C9 22V +/1 1.5V  adjust R3 Transformer output before regulator
C10 +15 Lens board power
C7 -15V Lens board power
C12 +5V Lens board power
CR35 cathode to CR36 anode +225V Pass energy board power
CR 37 anode to CR36 anode -225V Pass energy board power
CR17 cathode to CR17 anode +150V Lens board power
CR18 anode to CR17 anode -150 Lens board power

If the voltages are low when the pass energy or lens boards are installed, most likely the issue is a weak 3524 regulator. Replace it with a new SG3524N

80-365 Retard supply bytes

bitlow byte (hex) hi byte (hex)DAC V

Programming the 9103 With Python – Part 3: High Speed

Print Friendly, PDF & Email

For Part 3 of our series on programming the 9103 with Python, we’ve written an application that controls the 9103 in High-speed mode (which can sample as quickly as 500 samples/second) and parses the high-speed messages so they are output to a text file using the same format as standard speed. (All Python samples for the 9103 can be found here.)

(The High-speed option for the 9103 is available as an option when purchasing. The 9103 is also available with a High-voltage option and 90 V fixed or external bias)

Setup the 9103 for High-Speed Sampling

The 9103 has two different modes of operation – high-speed and standard-speed. These run the serial COM ports at different baud rates, so the port needs to be opened at the appropriate rate (the 9103 recalls the last baud rate used). This application does not detect / switch modes, but in our last post we programmed a utility to do just that – it’s part of the set of python scripts included in the download.

The only difference between the code to open the port in standard speed or high speed is the baud rate (57.6k for standard, 230.4k for high) . All oher parameters are the same.

High vs. Standard Speed Interval Sampling

When interval sampling in Standard-speed mode, only the ‘I’ command is available, which provides one sample per message. High-speed mode adds an additional command – ‘i’ – which passes 10 samples per message, thereby reducing the round-trip overhead per sample. You would typlically only use this command for speeds faster than 40 samples / sec., however if can be used at slower speeds. We run a slower speed in our sample application to make it easier to observe the sample messages in the terminal.

(You would probably not choose to use the ‘i’ command for slower sampling rates, because it can only provide one stability warning and range for every 10 samples

Parsing the High Speed Sample Messages

The format for a High-speed sample includes the range and units, along with 10 samples:


For this application, we write to a data-logging file just as we do in the Standard-speed Python application. However, we need to parse the 10 sample data to produce a similar, one-sample-per-line output if we want to be able to use the data interchangeably.

The only difference between the samples is that the High-speed samples are prefaced with a lower-case ‘s’ (which could be easily replaced if necessary):



Here’s the code for parsing the high-speed sample message:

def parse_message_for_high_speed_sample( msg):
if '&s' in msg:
msg = msg.strip('\0')
msg = msg.strip('&')
list = msg.split(',')
i = 0
stability = ''
range = ''
new_msg = ''
units = list[-1] # gets last item
list.pop() # remove last item which is units
for value in list:
if i==0:
stability = value
elif i==1:
range = value
new_msg = new_msg + stability + ',' + range + ',' + value + units + '\n'
return new_msg
return ''

That’s about all that’s necessary to create a compatible message, allowing you to mix High-speed and Standard-speed messaging in a compatible data-logging format

Programming the 9103 With Python – Part 2: Switching Between Standard and High-Speed Modes

Print Friendly, PDF & Email

In part 1 of our series on programming the 9103 with Python, we wrote a simple application to control the 9103 and sample at standard speeds (as fast as 40 samples/second). Before we look at programming a 9103 in high-speed mode, we’ll program a utility to determine which speed mode the 9103 is currently set for, and provide a means to switch speed modes. All python samples for the 9103 can be found here.

(The high-speed option for the 9103 provides up to 500 samples/second and is available as an option when purchasing. The 9103 is also available with a high-voltage option and 90 V fixed or external bias)

Programming the 9103 with Python

A Python Utility App for Switching Speed Modes

The 9103 with the high-speed option recalls the last speed mode (standard or high) at which it was operated at. This makes it easier to program applications that normally only operate in one speed mode. However, because the different modes open the serial ports at different baud rates (57.6k for standard, 230.4k for high) it may not be known what mode the 9103 was last operating in, so an application could fail if it assumes the incorrect speed.

Since you can’t query the 9103 speed mode without opening the port, one way to get around the issue is to catch a port failure, and try a different baud rate.
This utility tries to open the port for standard speed, and if that fails, high speed. In either case, if the port is successfully opened and communications with the 9103 established, the user is prompted to switch the speed mode.

Exception Handling for the Win

The 9103 firmware recalls the last port speed and communicates at that speed. However, the driver for the virtual USB port can be successfully opened as long as the device is connected to the port, even if there is a speed mismatch

So, as always, we create a try/except handler to first attempt to open the correct port:

        'com' + port_number,
    port_open = False
    do_nothing = input('9103 standard speed not found. Press enter to continue...')

In order to determine if we are communicating at the correct baud rate, we’ll try to write and read from the 9103. The simplest way to do that is to send a query and look for a valid status response:

standard_speed = False;
timeout = 3   # seconds
timeout_start = time.time()

    while time.time() < timeout_start + timeout:

        if msg == "RBD Instruments: PicoAmmeter":
            standard_speed = True;

The command_query_status() call simply sends a ‘&Q’ query message to the 9103.

If this throws an exception, we basically do the same thing again, this time opening the port at the faster 230.4k baud rate, then testing it by writing / reading. If either case is successful, we prompt the user to see if they want to switch to the other speed.

If you know you’re only ever typically going to operate the 9103 in one speed mode, you can simply use this utility once, and normally should not have to use it again unless you swap your 9103 with another that is running at a different speed. Otherwise, you can integrate this into your application. Normally, if you may need a higher sampling rate, there’s no reason not to simply operate in the higher-speed mode – the slower sampling rates are still available and can the messages for those rates can be parsed the same as with the standard speed.

Also, note that, although this code is agnostic about the operating system it’s running on, the exception conditions might be subtly different depending on the OS and FTDI USB serial port driver, and you may need to make some modifications.

Next, we’ll look at how to sample using the high-speed mode, and how to parse messages at the faster rates.