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

Diagram of how everyhing is connected.

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.

Diagram demonstrating the math for the array phasing.

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.