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

Dual peristaltic pump prototype

Another project I’ve been working on this summer while stuck not in my lab was an inexpensive dual peristaltic pump design. It consists of two 12 Volt peristaltic pumps from Adafruit along with a Metro (Adafruit’s Arduino clone) as the brain.

Dual peristaltic pump, controlled with Arduino (Adafruit’s Metro). Protoboard contains a dual H-bridge and connectors for the motors and pots.
Continue reading

New Year’s project

I received some servo motors for Christmas, so naturally I need to start working on a robot. Details to come on the project, but for now I’ve been trying to figure out how to (a) control two servos with an ATTiny85 microcontroller and (b) talk to that microcontroller with an Arduino that is telling the ATTiny85 how to position the servos.

It took the better part of several days (including some learning and additional trips down rabbit holes, but here we go.

Arduino communicating (via I2C) with an ATTiny85 that is controlling two servo motors (empty shot glass for scale)
Continue reading
post

Mathematica catches the heat

I recently purchased the AMG8833 thermal camera breakout from Adafruit.  It’s an 8×8 pixel array of sensors that can be used to incorporate thermal vision into a project.  I’m interested in monitoring a thermoelectric cooler.  Adafruit provides a number of examples on how to interface the breakout with a Raspberry Pi or display connected to an Arduino.  I wanted to try a different interface and see if I could control it with Mathematica.  It took me longer to write this post than it did to write the software.

Temperature of 30×30 mm2 Peltier cooling device being measured with an AMG8833.

Read on if you’re interested in learning more

Continue reading

Mandy: The periodic table (teaser)

About six months ago, I started working on a project I like to call my piece de resistance. It combines a number of maker skills that I’ve learned over the past few years.  I call her Mandy, and she’s a laser-cut periodic table that has a bunch of three-color LEDS, an Arduino that controls the individually addressable LEDs, and a Raspberry Pi that stores information about the elements.  To make it stand out from being “just another bright periodic table”, I added a voice activation component, so Mandy is able to display different periodic trends at your verbal command!

I’m getting ready to move to a different part of the country, so I do not have time to provide more information about Mandy.  In the meanwhile, I created a teaser-trailer for your (OK, my) personal enjoyment.