FeAtHEr-Cm in action – 1

We are several weeks into the semester, and my Instrumental Approach to Chemical Analysis students are knee deep in learning about instrument design and preparing their own potentiostats. None of my students had soldered before, and Jarrod gave me permission to share his performance with the world (so long as I mentioned that he’s wearing his Department of ENVIRONMENTAL science shirt to show off his true colors).

And here’s his completed bob173-gamma potentiostat.

Cold cat

So it’s been about 90 degrees in Brockport, and we have had to resort to closing up the house and turning on the AC. I don’t like setting the thermostat too low, and keep it between 74 and 76; however this is apparently too cold for Gimli:

I think he is just being dramatic.

FeAtHEr-Cm gamma tests

I received the PCBs for the gamma (3rd) version of the FeAtHEr-Cm potentiostat. I really like how this one comes together. Complete with 2 20kohm pots for adjusting virtual ground and iR compensation plus the passives all fit in a single 14-pin socket which allows students to explore how changing these components can influence the performance of the instrument (and to hack it to do things it’s not intended to do). Plus, it’s got buttons! This is the version that students will see this fall.

The bob173-gamma potentiostat.

Signal processing with Mathematica

I’ve been working on some instrument design projects and have hit a brick wall of sorts. My prototypes are riddled with noise, most likely 60 hz. My thought here was to learn a bit more about signal processing to (a) see if I can get a better understanding of what’s going on and (b) see if this is a possible project for students.

So the setup is as follows. I’ve got an Arduino microcontroller that does one of two things, it either reads the signal from a noisy light detector (in this case, an LED connected to an op amp in a current-to-voltage configuration) or – for debugging purposes – outputs a fixed signal frequency by printing $A0 + A cos(2 Pi f millis()/1000)$ where $A0$ and $A$ are amplitude offset and signal amplitude, respectively, $f$ is the frequency and since millis() returns a value in milliseconds, it is divided by 1000. To enact a sampling rate, I set a delay(dt) in the loop routine where dt is the delay time in milliseconds.

On the *Mathematica* side, it’s pretty easy to read the serial data from the Arduino with d = DeviceOpen["Serial", {<port>, "BaudRate"-><baudrate>}] with replacing <port> and <baudrate> with your values. The code below is a tad clunky, but works well at grabbing data and converting it into a format that Mathematica wants.

Continue reading