Close

PyPPM 2.1 Speaks! :)

A project log for PyPPM: A Proton Precession Magnetometer for all!

A device for conducting Nuclear Magnetic Resonance experiments at Earth's field

bradley-worleyBradley Worley 09/20/2014 at 19:290 Comments

It seems that I was a bit pessimistic when I said that the USB stack would need rewriting for the PyPPMv2. With one extra flipped bit in an AVR register, the PyPPM 2.1 sprang to life over the USB port, and even said its first words:

$ ./ver
VER: 2.1

Aww, how cute!


Of course, while the new hardware is talking over the USB, it's still "broken" with respect to the traditional PyPPM version 1.x host-side software. It's all because of the new pulse programming features that will go into the new designs: while previous versions of PyPPM had a canned, hard-coded sequence of operations that was followed for every experiment, the v2 will be much more flexible, taking any user-defined sequence of commands and executing them. So, instead of having a short list of acquisition parameters, the board will take instructions that contain the required parameters.

The fun part? The host-side software wasn't written that way. At all. To remedy this, I plan on back-porting the pulse programming features of PyPPM 2.1 into the older firmware source trees, effectively doing away with acquisition parameters on all PyPPM devices and ushering in pulse programs for everyone!

It's definitely a long-term goal, and not something I plan to accomplish before the prize deadline. But still post-worthy, eh?


On that note, I'm planning on putting out a Part 2 video on PPM/NMR concepts this weekend, and also a final 'working product' video of PyPPM 1.3 that includes a complete screen cast of the host computer during the experiment.

~ Brad.

Discussions