Radio spectroscopy and radiometry at 21cm from an urban environment Abstract: Achieving actual, meaningful 21cm work in radio-astronomy requires an adequate setup which can prove troublesome to work out. Through this presentation we hope to show the construction of a radio-telescope with a performance suitable for 21cm spectral and continuum work. While this has been done many times at amateur scale, many of these projects lacked a scientific approach to radio-astronomy, and/or used an ideal observation environment. In our specific case, as an urban and apartment dweller in a big European city, the observation must be performed from a balcony. While this work proved rewarding from a technical stand, it has also proved to be a challenge given these environmental conditions.
1) Receiving chain The chain is composed of an RF box mounted to the antenna feed, and a receiver box. Two shielded receivers (RTL-SDR dongle and an Airspy) have been evaluated. Both proved somewhat disappointing with a considerable noise factor (NF) of 12.2dB at 1420MHz and an impedance mismatch at frequencies above 1GHz. A correlation between the two is a possibility. The Airspy boasts a 12 bits ADC, a 10MHz sample rate and a better shielding than the RTL dongles, however it lacks its Python ecosystem, which means more software needs to be written. Several LNAs have been purchased and evaluated, the MCL ZX60-1614LN and Triquint TQP3M9037 showed the best performance and stability and were chosen for the telescope. The receiving chain is very straightforward : LNA -> BPF -> LNA -> bias-T -> coax -> bias-T -> BPF -> isolator -> receiver
fig1: simulated receiving chain performance The simulation, here lacking the bias-tees, shows a 0.8dB NF (actual performance is ~1.0dB NF) and a 32dB gain.
Each component was individually tested during the test bench with a broadband noise generator and some custom Python code measuring the gain and losses with a 0.1dB precision.
fig2: receiver front-end on the testbench
fig3: second stage of the receiving frontend
The actual receiver temperature is around 100K, 25K warmer than the simulation.
fig4: performance testing of the frontend
The receiver box consists of an Airspy SDR with added thermal mass for stability, an L-band isolator, a BPF and a bias-tee with 25dB of isolation.
fig5: receiver box The isolator prevents some standing waves to cause a frequency dependent, parabolic slope to the response curve, it's then easier to correct the slight remaining linear slope in software. The DC current is filtered with several capacitors before being fed to the bias-T, and likewise once in the RF box. A resistor, a voltage regulator, and some micro ferrite beads on the VCC pins provide some additional DC stability to the LNAs.
2) Antennas Given the very hot nature of the balcony, special considerations must be taken in order to minimize the thermal energy contribution to the side lobes of the antenna. A 21cm SETI horn was first tried with very satisfying results (20dB gain, 16° HPBW, 60% efficiency, and an excellent 20K temperature). It also proved easy to point. Unfortunately, such an antenna also is: - hugely visible (neighbor complaints) - not weather proof - has a huge wind resistance - cannot be used for extended periods of time (ex: continuum or spectral surveys)
This lead to the purchase of a second hand 110cm offset dish on Le Bon Coin, the French craiglist. f/D: 0.6 Offset angle: 26° Aeff at 21cm and 60% efficiency: 0.34m² The feed is critical to lower the dish temperature in this environment. Earlier "coffee can" designs lead to an astonishingly bad 95K temperature and meager efficiency of 55% with such a high f/D, so a design better suited to offset dishes had to be found. Efficiency was favored and we opted for a biquad feed, with a calculated efficiency with 4NEC2 of 70%, which results in a 22dB gain at 21cm. This is more than acceptable for an 110cm dish. Unfortunately this design also has its flaws: - difficult impedance matching: even with the tightest construction tolerance we couldn't achieve an SWR lower than 2, and 5.3 on the first prototype! - horizontally polarized, which means more sensitive to man-made terrestrial signals than to cosmic signals
fig7: 110cm dish with biquad feed The ratio between a 50ohms load at 290K and a cold sky reference (Y factor) is about 3.1, from which we can derive an antenna temperature of 25K given a 100K receiver temperature, assuming Tant = (Trec + 290) / Yfact - 100. This is slightly warmer than the horn temperature, but again, quite nice given its urban environment. A helix feed is also under consideration. While its estimated efficiency will be lower (60%, 20dB gain at 21cm) it could yield a better overall performance and hopefully receive less RFI from terrestrial signals since its polarization will be RHCP. We cannot tell yet about its sidelobes and thus neither about its overall temperature.
The feed assembly is fully adjustable in every direction, special care has been given to its placement with the help of an Excel program. Efficient dish illumination really is a science by itself.
fig8: feed assembly Adding a chock ring around the dish is another consideration to further reduce its temperature, but it could potentially result in a distortion of its radiation pattern, or worse, thermal noise reflection to the feed.
3) Software stack The receiver box is connected through a shielded USB2 cable to a Linux workstation with an i7 CPU, 20GB RAM, an SSD drive and a 1TB mechanical drive used as a dedicated data partition. Access was initially done through SSH from my laptop to a tmux session, the graphical display (for matplotlib) done with X forwarding through SSH, and the resulting plots and graphics are outputted to a network share. No desktop environment is installed on the workstation in order to reduce resource usage. The software stack is composed of several programs: - data acquisition: C - data processing (spectral and continuum): Python/Numpy/Scipy - automation (surveys): Bash - presentation (spectras and images): Python/Numpy/Scipy/Matplotlib I have evaluated Octave and GNURadio but they proved somewhat unfit for my purposes, I must also admit having a strong bias toward Python. The acquisition, low-pass filtering and decimation is done in C from some open source DSP code as Numpy was a bit too slow to perform in realtime on a 10MHz sample rate. Furthermore, the Python inter-process communication through pipes and sockets isn't designed to handle such data streams.
The software was migrated to Jupyter/iPython notebooks in early 2017 so everything is now done remotely from a web browser. So far I do not use professional software stack such as aoflagger for the RFI removal, I rather flag and remove the biggest offenders through some custom code, then design my FIR filters in Python with a trial-and-error approach until the result becomes satisfying. The data normalization is done with a 50 ohms load and cold sky measurements. The barycentric correction also proved troublesome. I initially reverse-engineered a Java applet found on an online calculator and ported it to Python, but it seems the code was unreliable as a speed offset was later found during some observations. Wolfgang Herrmann from Astropeiler kindly provided me some Python code for the LSR correction, which so far has given excellent results, many thanks to him. Ephemerids, LST and coordinates calculations are done with pyEphem. The lobe placement and overall radio sky visualization is done through a custom Python program running in Jupyter.
fig9 : sky vizualisation program running in Jupyter
4) HI line spectroscopy Here are two neutral hydrogen spectra done at a 46° and 198° galactic longitude with 30s of integration each.
It is easy to automate the data acquisition on a 23h56 (1436mn) time lapse to create a neutral hydrogen spectral survey. Each line measures a period of 60 seconds, consisting of: - 10s of reference acquisition (f0+2MHz) - 30s of HI emission line acquisition (f0) - 13 seconds of processing - 7 seconds of sleep Finally, another Python program removes the narrow band RFI, applies a FIR filter and a slight 2D bicubic interpolation, then creates an image from the 1436 FFTs. The transit of very cold Leo and Virgo is apparent at the top and bottom of the waterfall. The Sagittarius and Taurus transit is also very prominent.
fig11: Neutral hydrogen survey at 21cm There is no LSR correction on the spectrogram, hence the waving motion of the spectras.
5) Continuum radiometry A moving integration window of 10mn is used for continuum observations. Ten chunks of 1mn are recorded at a 10MHz sample rate to a RAM disk. This is done asynchronously with one thread recording a data bloc while another computes the average power of the previous one. Once ten blocs are recorded, their powers are averaged and the result is saved to a CSV file. A solar transit allows to precisely measure a half-power beamwidth of 15.75° (63mn of transit):
The sidelobes are measured at only 13dB under the main lobe, a high sidelobe temperature mostly caused by the blockage from the balcony. This severely degrades the overall sensitivity of the telescope. Continuum transit on a 48h time lapse:
The system instabilities are very visible and come mostly from thermal variations, like heat transmission from the Sun to the LNAs. A 200Jy detection of Vir-A (M87) will soon be tried with this diminutive telescope. Such a detection is theoretically possible but will push the instrument to its limits. Here is a quick demonstration: Dish HPBW = 15.75° Gain: G=100 (20dB) at 60% efficiency (under-illumination), and 22dB at 70% efficiency Tsys = 100K Effective aperture: Aeff= G * λ² / 4π = 100 * 0.21² / 4π = 0.35m² Considering the signal has a 200Jy flux density at 1420MHz, the received flux will be : 200Jy * Aeff = 70e-26W/m²/Hz Converted to temperature with the Boltzmann constance : 70e-26 / 1.38064852*10e-23 = 0.05K Given Sd = Tsys / sqr(BW * T), aiming for a Sd=4 sensitivity level, a 10mn integration time should suffice, disregarding the system instabilities which will be much greater than 0.05K. This will require a very stable reference. A possibility will be to periodically switch the calibrated noise source with an Arduino. I already have a working prototype using an octocoupler. A signal sent from the computer to the serial port performs the switching.
fig14: Arduino and octocoupler
There is still a lot to do before having acceptable results. I have ordered a LimeSDR, hopefully its 20MHz sample rate will help improve the sensitivity of the telescope and halve the required integration time for continuum work. Its onboard FPGA will also prove useful as I'm thinking of building an FFT spectrometer for the continuum work, which will allow to remove narrow-band RFIs.
fig15: LimeSDR on an antistatic mast
fig16: LimeSDR, encased, screwed on a thermal pad and with a heatsink added on the FPGA and USB controller
Conclusion While the results are underwhelming compared to what many amateur radio-astronomers routinely do such as pulsar hunting, I think they provide an affirmative answer to the question: can one do meaningful radioastronomy from a very challenging environment such as an apartment building in an urban area? As a final word, nothing would have been possible without the help of my friend Jean-Jacques Maintoux (F1EHN) who I want to thank here for his support during those last two years, it has been invaluable. (c) Damien Boureille, 2017 contact:
[email protected]