Posted 14 June 2017
In my previous posts on this subject, I have been working with an Arduino Uno as the demodulator processor, but I have been plagued by its limitation of 2KB for program memory. This has caused severe limitations with timing debug, as I can’t make debug arrays long enough for decent time averaging, and I can’t do more than one sensor channel at a time.
So, I finally took the plunge and acquired some of Paul J Stoffregen’s Teensy 3.5 processors from their store. From their site: “Version 3.5 features a 32 bit 120 MHz ARM Cortex-M4 processor with floating point unit. All digital pins are 5 volt tolerant.” The tech specs are shown on this page, but the main features I was interested in are:
- 120MHz processor speed vs 16MHz for the Uno
- 192KB RAM vs 2KB for the Uno
- Analog input has 13 bit resolution vs 12 for the Uno
- As an added bonus, the Cortex-M4 has an FPU, so integer-only math may be unnecessary.
- Much smaller physical footprint – the Teensy 3.5 is about 1/4 the area of the Uno
- Lower power consumption – The Teensy 3.5 at 120MHz consumes about 30mA at 5V vs about 45mA at 5V for the Uno.
Here are some photos of the Teensy 3.5 as installed on my algorithm test bed, and also on my Wall-E2 robot where it might be installed:
In addition to all these goodies, the folks at Visual Micro added the Teensy line to their Microsoft Visual Studio add-on, so programming a Teensy 3.5 is just as easy as programming a Uno – YAY!
Of course, I’ll need to re-run all the timing tests I did before, but being able to create and load (almost) arbitrary-length sample capture arrays for debugging purposes will be a great help, not to mention the ability to use floating-point calculations for better accuracy.