I have a question regarding how best to sample data from multiple sensors when they are all updating at different/changing rates. I am new to data acquisition so please bear with me. For my Master's research, I am trying to build a dynamometer to measure the performance of a belt transmission used with the Baja SAE team at my university. This is a VERY low budget project, so I am trying to collect data with arduino/raspberry pi if possible. The test setup consists of a drive pulley attached to an engine and a driven pulley with a friction brake behind it. I am trying to measure the RPMs for both shafts, and the torque on the driven shaft. To measure RPM's, I have magnets mounted on the shaft and I am using hall effect sensors to measure the time between rotations. To measure the torque I have strain gages with slip rings.
The problem is that all sensors update at different rates. The drive pulley rotates at about 60Hz, and the driven can vary from 20-120Hz, with the values being measured once per rotation. The A/D converter for the strain gages reads at a constant 125Hz (the input voltage has a low pass filter to remove engine and other higher frequency noise-I am only interested in time averages). My goal is to be able to get a plot of the steady-state driven pulley torque vs speed.
I tried initially reading all of the sensors simultaneously with a raspberry pi, but all of the sensors are read with interrupts in the python code and the timing was off since it is not a real time device (the RPM data was VERY noisy). If I read each RPM sensor and the A/D converter individually with an arduino, it has no problem keeping up and the data looks clean. Now that I have all of the sensors reading, I am trying to put it all together. Since the reaction time of the transmission to a changing load is fairly slow, I think I could capture enough information if I sampled at 20-25Hz.
My question is if it would work to have separate arduinos reading each of the sensors continually and updating global variables in their RAM, then calling these current running values from the raspberry pi at a fixed sampling rate (20-25Hz). I didn't know if it would be a problem that I don't have timestamps for when the global variables last updated. I will not be using any kind of frequency analysis on the data. Also, to reduce noise from the strain gage A/D converter, could I have that global variable be a running average of the last, say 5, data points so that I am capturing information from each sample even though I am only calling values at 1/5 of its sample rate?