HP5508A interferometer replacement hardware 2.0?
The first generation hardware is working well and I think there are 10-20 people using it, which is quite satisfying.
There are some improvements that would be nice to have.
- Better interpolation. My firmware does not do interpolation at all. Sam Goldwasser did implement some very clever interpolation, but it is limited by the number of registers available in the PIC32 chip and its clock rate. I would like to have finer interpolation.
- Faster sample rates. For the most part the data comes out at a fast enough rate, but for vibration analysis and closed loop control, faster would be better.
- Higher frequency capability. The ZYGO interferometers use 40 Mhz beat frequencies. It would be nice to be able to accomodate these.
- The DP32 board seems to be nearly end-of-life.
The only viable option to reach these goals seems to be some sort of custom logic. The DP32 already clocks its' chip at 80 MHz. This is sufficient to time a 8 MHz beat signal to 10 levels, perhaps 20, if done cleverly on a half-wave. To significantly improve on this, custom circuitry seems necessary. FPGAs or some sort of discrete logic are options. The HP hardware uses some sort of PLL do perform the interpolation.
Cost is a driving issue. Most users are going to be hobbyists with a tight budget.
Complexity was a driving issue for V1.0 as well, which is why I used an Arduino board. But in this case, the complexity is going to have to go up a little.
A possible solution is this:
This board costs $13, which is even cheaper than the DP32. It features a CY8C5888LTI-LP097 device from the PSoC 5LP family. This chip integrates a Cortex microcontroller at up to 80 Mhz, with reconfigurable logic. This way, most of the work can be done with C programming much like in V1.0, but the timing critical parts can be done using custom logic. Sending serial data over USB is trivial this way, just like it was for the Arduino. As an added bonus, this chip is 5V tolerant, which makes connecting the differential receiver easy.
This board does not have a prototyping area, but it will fit on a breadboard. Custom boards from OSHPark and such have become so cheap that this should not be a problem anyway...
Another option is the miniSpartan3, available here:
The reconfigurable fabric is much more capable here, but there is no microcontroller component.
It's tempting to make a 64 bit free-running counter for each axis, but there are clock-synchronization issues: