I used standard KF tubing, as I already had that standard.

The central cross is KF 25 up and down for the vacuum system under and the different fittings for my glass work upwards. The side tubes for the mass spectrometer are KF 16.

The 90 degree bend down to the right is a sharp elbow made of aluminum, to let the magnetic field through. The other tubes are 304 stainless steel. The gaskets are Viton rubber.

There is a ceramic HV electric feed through to the left, for the filament and acceleration voltages. This is also a standard part, glued to the metal box for electrical connections.

To the top right, just outside the picture, is also a standard ceramic feed through, for the detector electrode.


The ion source contains a filament and an anode, that are connected to the ceramic HV feed through. They are connected with removable bronze fittings to the HV feed through, so they can be removed if replacement of the filament is called for.

The thoriated 0,1 mm tungsten filament is spot welded to nickle wire. The nickle wires are fixed by a short molten borosilicate glass tube.

The anode is made from a brass tube, silver sodered to nickle wire. Brass is not ideal in a vacuum environment, but I had no suitable stainless tubing.

The anode and filament assemblies were cleaned by isopropyl alcohol and then ultra sound, and then washed in deionized water. This procedure was used for all internal parts.


This is the sharp 90 degree aluminum elbow for the magnetic sector.

The pole pieces are made of soft iron and are fixed by brass screws to not disturb the magnetic field. I use more and larger neodymium N42 magnets now, for a field of 210 mT inside the elbow.

The radius of the bend is 15 mm, but because of the fringe field outside the pole pieces the effective radius is about 17 mm.

The tight radius is the main limitation of my spectrometer, and limits it to detection of about max 40 AMU molecules. Sector spectrometers were used in chem labs up to the eighties, but they had very large magnetic sectors and the apparatus occupied a whole room because of this.

The elbow is threaded metric M 16 x 1 inside, which was possible as the tube was originally 15 mm inside diameter.

Inside are threaded bushings with the slits. The slits are made of thin shim stock, spot welded to the bushings.

The angle and position of the slits can be adjusted by turning the bushings. There is one bushing with a slit on each side of the elbow, for focusing the ion beam.

The slits are about 0,6 mm at the moment, and are abot 17 mm from the edges of the pole piece.

The theory behind the Nier geometry that I use for the magnetic sector states that there is a focus one radius before and after the sector. This presupposes that the edges of the pole pieces are straight.  The radius must be adjusted for the fringing field.


The faraday cup is just another brass tube, this time with a bottom and about half the length of the anode. This is silver soldered to a nickle wire, which is spot welded to the ceramic electric feed through. The position of the faraday cup is a few mm behind the exit slit of the magnetic sector.

The current amplifier is in the shielded metal box that is glued to the feed through. It is extremely sensitive to electric fields in the environment, so it can not be tested without closing the shield box and shielding of the faraday cup. Without shield it bottoms out just because of the inevitable surrounding 50 Hz fields.

It is a two stage amp, the first stage is a current amplifier based on the low input bias AD549 op amp. This is used according to the suggestions in the application notes, with a feedback resistor R1 of 2 Gohms. The input and feedback componets are soldered directly to the legs of the op amp, to the right in the bottom of the box,  to not destroy the low input bias by leakage currents in the glass fibre laminate. It looks like a rat´s nest, but I don´t care as long as it works.

Offset is adjustable by R5. R3 protects the sensitive op amp input from static electricity.

Stability is an issue, as there are two poles present in the Bode plot. One is the open loop bandwidth of the op amp, the other is caused by the input capacitance, which is mainly caused by the farady cup´s capacitance to the surrounding vacuum tubing.

This has to be compensated by a capacitor C1 over the feedback resistor. This is established by trial and error, I had to use 14 pF for a reasonable stability margin. This corresponds to a time constant of 28 ms, so the sweep of the acceleration voltage must be limited to about one scan each five seconds for allowing sharp peaks in the graph.

The current amplifier is followed by another stage of voltage amplification, the gain there is 200 with a standard op amp, at the top of the box. This gives a full scale sensitivity of 12 pA in the graph. The lowest visible peaks correspond to a few hundred fA.

This is not much, so I had a lot of trouble initially with ripple and hum. I eliminated a lot by using two 9 V batteries instead of power from mains connected AC/DC converters.

Another source of hum was an AC voltage differential along the vacuum tubing, probably caused by induced mains magnetic fields. This was picked up capacitively by the faraday cup. I eliminated most of this by copper clamps and heavy copper wire along this part of the vacuum tubing to equalize the AC voltage differential. This supplementary ground is connected to the sma connector for the outgoing signal from the detector, and to the chassis of the vacuum system.

This hum component was initially amplified by the underdamped resonance of the op amp circuit before I tamed this, which did not make it easier to spot the source of the hum. I also had mechanical vibrations transmitted along the hose from the forepump, that showed up as disturbances. Any vibration at the faraday cup causes electrical signals.

But at last the ghosts are exorcised and the base line of the mass spectrometer graph is reasonably well defined.


The anode voltage is supplied by a small EMCO DC/DC converter (Emco A01P-12). This unit has a control input, that is fed from a DA output port on the Arduino card. This control voltage is controlled by a slider in the MegunoLink software window.

The output from the DC/DC converter can be set from zero to 100 volts. This controls the ionization energy in the ion source, and indirectly the emission from the filament. The emission is generally between 0,5 to 1,5 mA, and can be viewed on an analog current gauge.

The filament voltage is controlled by a chinese unit, the Joy-It DPS-5005. A filament voltage of about 4 V supplies a current of 1,5 A. This is enough for the emission I need.

Both the anode and the filament voltages are floated at the sweep voltage above ground. This point is high impedance, as the current is small and the voltage high, up to 400 V above ground. At first I supplied the input voltage to the Joy-It unit from an AC-adapter, but this is not good engineering practice, as an AC-adaptor is not made to have it´s output floated att several hundred volts above ground. The unavoidable leakage current from the mains was very visible in my spectrogram graphs, as a hum modulated on the sweep voltage. I now use a lead accumulator instead, to eliminate this source of noise.

The pressure in the vacuum system must be low enough for a reasonable filament life span. If there is a sudden inrush of air, the filament is destroyed in an instant. I use a voltage comparator on the output of my Baratron pressure gauge, to supply a cut off signal if the pressure is above 3 x 10^-4 torr. There is an opto coupler between the vacuum control unit and the mass spectrometer control unit, for not mixing up the different grounds. A relay shield on the Arduino card switches the filament current for on/off and for the filament cut off function.



There is a low and i high range of sweep voltages. The high range is 400 - 40 V for mass units 2-20, and the low range is 45 - 10 V for mass units 18 - 40.

For the high range I use the Bellnix MHV12-470 DC/DC converter, and for the low range the Bellnix BYH12-100 DC/DC converter. Both have control inputs, that are fed by a sawtooth waveform oscillator for the sweep frequency of 0,2 Hz. There are a couple of op amps in between, to be able to set gain and offset to adjust the sweep ranges, and to clamp the control voltages inside the allowed range of the DC/DC converters input voltage range.

The switch over between the ranges is handled by a relay on an Arduino shield, controlled by buttons on the Megunolink software windows interface. There is also a cut off function for the sweep voltages, at the filament pressure cut off point. At the 400 V level, there could be internal arcing at the feed through insulators, at pressures of about 20 torr.

I have tried different oscillator units. It is not possible to use the Arduino card for generating the sweep frequency, it does not have the necessary processor speed. Triangle wave was not very successful, as there is a delay in the DC/DC converters, that cause the up going and the down going sweep to place the peaks at different points along the X-axis in the graph. I settled for the Akozon UDB 1005S unit from Amazon, which can supply sawtooth at the required frequency.

The oscillator also feeds the Arduino AD input used for generating the X-axis. There is a clamp circuit in between, as the Arduino input must be within the 0 - 5 V range. There is also a clamp circuit for the Y-axis input from the detector unit. The Arduino AD inputs will be destroyed by voltages outside their allowed range.


On the outside, there is just a mains switch, a few LED indicators, the Joy-It unit and the emission current gauge.

Inside are the mains AC/DC converters, the Arduino card with it´s shields and a PCB lab board for the DC/DC converters, the circuitry for adjusting various gains and offsets, and the clamping circuitry.

It admit it could be a bit more tidy, I will probably clean up the cabling when I am satisfied it works as expected.


Megunolink is a windows software for communication with an Arduino board. It uses the USB connection for sending and recieving serial commands between the PC and the Arduino board.

To the bottom right are a few buttons, a slider and a some colored indicator boxes.

  • Filament on/off buttons are at the top, with indicator boxes below. Red indicates off.
  • The broad red band below indicates that pressure filament cut off is active.
  • The slider below is for setting the anode voltage.
  • The buttons at the bottom are for selecting high or low sweep range.

The window at top right shows the serial communication.

The big window to the left is the XY-graph, drawing the mass spectrogram in real time, at this moment showing only the base line. The axis units are the 10 bit Arduino AD values, from 1 to 1026. It would be better if the X-axis units were the mass units of the detected molecules, but this is not possible to accomplish in Megunolink. I must use an external conversion table, based on the detection of known molecules.

There are some update speed limitations, caused by the Arduino board, the serial communication and the Megunolink graphical interface. The Arduino board sends XY-data data each millisecond, and the communication speed of the USB connection is limited to 115 200. The Megunolink graphical interface updates the plot a few times each second.

There are also the detector amplifier time constant limitations, which limits the scan rate to one scan each five seconds for sharp peak flanks.