After some very insightful conversations with other Projects members on the PyPPM design, I've made the decision to add several new features to the final version of PyPPM, which I'll officially call PyPPM 2.0.
Consider this my own little unofficial RFC. I want to know what you think about the features and the new design, before I've finalized it. Here's a quick overview of what's to come:
- Capacitive tuning: By turning the sensor coil into part of a resonant tank circuit, the experimenter can simultaneously increase signal to noise and reduce unwanted interference from mains. The PyPPM will allow for 65,536 different digitally selectable capacitances to be placed in parallel with the sensor coil.
- Integrated shimming: Instead of requiring a separate shim control board (see previous posts) to homogenize the magnetic field, PyPPM will have a dedicated 250 mA shim output.
- Adiabatic polarization: PyPPM will support a secondary transmit coil output that can source and sink 1.0 Amp, controlled by a 16-bit DAC. Sample rates of 100 kS/s should be easily achievable.
- Flexible experiments: More on this below. It's exciting!
So, without further ado: the PyPPM 2.0 block diagram overview:
Oh, and the latest board design :) Like the logo? (It's a proton)
One of the most exciting features of the new PyPPM design is the opportunity to accept "pulse programs", which are small sets of commands that flexibly describe the details of any given experiment. Instead of having a hard-coded "bang-bang" non-adiabatic experiment, the PyPPM will accept any sequence of pulse program commands and parameters and interpret and execute them on the fly! That means the user can run anything from the simple non-adiabatic experiment, to spin echos, to multi-acquisition Carr-Purcell-Meiboom-Gill experiments or even two-dimensional experiments. Fun!
Here's what the building blocks of the PyPPM 2.0 pulse program language look like:
TL;DR: PyPPM 2.0 has graduated from a simple magnetometer to a complete Earth's Field Nuclear Magnetic Resonance Spectrometer.
And as always, the latest revisions are available in the PyPPM source code on my website, also linked from this project page. Let me know what you think!
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.