How many times has this happened to you? You need to do some testing but your equipment was built at the dawn of time when data logging was done with a chart recorder or by writing on paper with your hand (ouch!). This project is to bring an Instron model 1000 load frame into the late 20th century by reading output with a microcontroller and pumping it over a serial connection to a pc where it can be saved. Currently the goal of the project is to read a digital encoder which measures the position of the crosshead and the analog signal from the load cell, then display this data and allow it to be saved. To do this I am using an arduino Due clone connected via usb to an intel-atom era netbook. The pc front end is written in python with Tk and matplotlib.
At this point in the project I've given some brief descriptions of how the Arduino is reading the digital signals from the quadrature encoder that measures position and the analog output of the load cell. These data are then written to the serial port as the string "POSITION LOAD\n"
where POSITION and LOAD are integers with the current values. So at this point I need to receive the serial data on the computer that is going to display and store the data for me and this is where things get a little hack-ish.
The output of the load cell, the force sensing part of the instrument, is a +/- 10 V analog signal available at the chart recorder output. Prior to getting there it goes through a series of demodulation and gain stages that I will elaborate on later. The Arduino Due can only accept a 0 - 3.3 V signal so I had a choice of either rescale the signal or clip the signal to levels that are safe for the microcontroller. I chose that latter because there is a final amp with selectable gain that give me plenty of leeway to change the scale, I just need to make sure the signal doesn't damage the Arduino.
In the last post I described how the Instron 1000 main board is taking the two encoder signals and their inverted twins and mixing and buffering them to reduce noise. The resulting two signals have a normal two wire rotary encoder pattern and can be measured like any other encoder but first they need to be shifted from 12V logic at the Instron to 3V for the Arduino Due.
This machine uses a 4-wire incremental rotary encoder instead of the often seen 2-wire encoder. There are 2 signal wires (A, B) and 2 inverted signal wires (not A, not B) in addition there are Z and not-Z signal that are not used. So to read the encoder position I could simply not use the inverted signals and be done with it, but the machine is noisy and vibrates so the additional noise rejection could be helpful. If the engineers at Instron thought it was important then I'm not going to question them. So I thought it would be interesting how they used these additional two inverted signals.
My furry lab assistant got on the desk and tore this project's delicious lab notebook apart. Luckily I was able to salvage the information with scotch tape and a photocopier. I need to start scanning pages as I make them to ward off any future data loss.