Hydrogen Line Radio Telescope



I just keep making this project harder and harder on myself. Initially my plans called for a single antenna in a motorized altazimuth mount. I kept putting off making the mount then decided to scrap it—I'm going for a phased array instead.

Why

Phased arrays obviously complicate things significantly but they also offer several advantages:
  • Can be processed later, just need a way to store output from the radios (Currently WAV in my case)
  • No moving parts; more durable
  • Better quality scans (more on this later in this page)

Hardware

This project's called for quite an extensive list of supplies. I went overkill and got a second HackRF for my additional radio. I could've gotten something cheaper but I'd have had to look into what would be best; I already know the HackRF is capable enough. This is the parts list for a single RF front end. I believe the radio acting as the local oscillator will be able to be split out to the various RF mixers. This brings the total number of radios to N_arrays + 1.
  • 2× LNAs (one for 1420MHz and one for 70MHz)
  • 2× bandpass filters (one to match each LNA)
  • 2× SDRs (one capable of Tx, all capable of clock synchronization)
  • Frequency mixer

Setup

Each radio gets its own 16 element array (at least according to the current plans, images and 3D models in the works). After an amplification stage and a filtration stage, the signal gets stepped down by ~20× to 70MHz. After this stage the signal gets passed through a second set of amplification and filtration stages before running into the Rx SDR. Each SDR runs to the same PC where it records each SDR's input as a separate channel in a single WAV file.

Software

I'm still debating how exactly to go about the software side of things. GNU Radio is an obvious choice but I'm not too big of a fan of Python. I stumbled upon LuaRadio and have been playing around with that. There's no GUI counterpart like GNU Radio Companion as far as I can tell but Lua's a pretty simple language to dive into. I've got a Lua script set up for muxing the signals together and ready for phase shifting, now I just need to implement the math. Once things are more functional I'll start hosting releases here alongside the Git repository.

The Math

Δt = sin(ϑ)D с is the formula for a 1-dimensional array, as depicted in the adjacent figure. D is the element spacing, ½λ in this case, while ϑ is the desired angle to beamshift towards. с is the speed of light. Taking this into account gets us Δt, or the time in seconds it takes for the same signal to reach the next element.