Link

All experiments (on this hardware and other) are on this repo.

How to manage an experiment.

All acquisitions on this page are based on:

Setup

All calibration / basic experiments were using a piezo with a reflector a few cm away, with water in between.

I used in this case a film case, just right for the size of the transducer, filed with water and connected to the board.

Acquisition

From shell

The code below is equivalent to

python pyUn0.py single

Doing the acquisition

import pyUn0 as us

UN0RICK = us.us_spi()
UN0RICK.init()
UN0RICK.test_spi(3)
TGCC = UN0RICK.create_tgc_curve(10, 980, True)[0]    # Gain: linear, 10mV to 980mV
UN0RICK.set_tgc_curve(TGCC)                          # We then apply the curve
UN0RICK.set_period_between_acqs(int(2500000))        # Setting 2.5ms between shots
UN0RICK.JSON["N"] = 1 				 # Experiment ID of the day
UN0RICK.set_multi_lines(False)                       # Single acquisition
UN0RICK.set_acquisition_number_lines(1)              # Setting the number of lines (1)
UN0RICK.set_msps(0)                                  # Sampling speed setting
A = UN0RICK.set_timings(200, 100, 2000, 5000, 200000)# Settings the series of pulses
UN0RICK.JSON["data"] = UN0RICK.do_acquisition()      # Doing the acquisition and saves

We have setup the pulse train with us.set_timings :

  • A pulse of 200ns
  • A deadtime of 100ns
  • Damping for 2us
  • Start of the acquisition 4us after the pulses
  • Acquisition for 200us

Moreover, the TGC profile over the 200us is setup from 1% to 98% gain lineraly from 0 to 200us as:

TGCC = UN0RICK.create_tgc_curve(10, 980, True)[0]    # Gain: linear, 10mV to 980mV
UN0RICK.set_tgc_curve(TGCC)                          # We then apply the curve

The acquisition and its parameters are saved in a json file saved close to the lib folder.

name_json = self.JSON["experiment"]["id"]+"-"+str(self.JSON["N"])+".json"

Processing

Let’s create the actual signals and images

make_clean("./")	# creates a data folder if needed and moves files there
for MyDataFile in os.listdir("./data/"):
	if MyDataFile.endswith(".json"): 
	    y = us.us_json()
	    y.show_images = False
	    y.JSONprocessing("./data/"+MyDataFile) # creating the signal and time values
	    y.mkImg()
	    if y.Nacq > 1:
		y.mk2DArray()

which yields

Other utilities

There are some other utilities.. to be enhanced ?

y.create_fft() 
y.save_npz()