Our local Soap Box Derby track has a very old timing system that basically provides us with 3 digit precision (0.000 seconds) in regards to a heat winner and their lane (1 or 2). We were discussing building a new timer system that would provide us elapsed time, average speed per sample point, and speed at each sample point along with the winner lane. Ideally the new solution should run to 4 digit precision (0.0000 seconds) as we currently do get "ties".
My question is this: Is the MSP430 launchpad with attached IR beams and encoded IR signals (to alleviate noise and cross-talk) fast enough for something like this. Doing the math the sample rates for Timer_A are high enough but that doesn't take into account the low bandwidth associated with IR transmission and/or encode/decode verification.
I'm really new to all of this and still doing a great deal of research (trying to find info on lossless schemes, elapsed time calculation, etc)...
My basic concept was when a car passes through one of the beams start Timer_A and Timer_B. When the 2nd car passes stop Timer_A when the tail of the car passes stop Timer_B. Timer_A contains the differential time between lanes (IE: winner time) and Timer_B contains the speed of the winning lane with a small amount of math (see below psudo code). Problem is that means I also need a Timer_C (and either I'm blind or it doesn't exist) to get the elapsed time of the other car breaking its beam.
The samples would then be sent to an RF Modem that would transmit it all back to a PC at the track that would do the final work building out speed profiles and keeping track of the bracket.
Any help, sample code, ideas on better ways (is IR really best or would cheap laser pointers and CDS cells be better) greatly appreciated.
PS: We aren't rich, or we would buy the multi-thousand dollar systems that do this for us :). I will do my best to put all project details, schematics, source code, etc on the web for others to re-use though with credit where credit is due :)
- Jeremy
function calculateSpeed(ellapsedSeconds, carLength){
// borrowed and simplified from http://www.csgnetwork.com/csgtsd.html javascript source
var distunitsvalue = 0.3048, // Used for length of car in Feet
speedunitsvalue = 0.44704; // Used for MPH calculation
return ((carLength * distunitsvalue) / (ellapsedSeconds * speedunitsvalue));
}