Monday, 6 June 2016

DIY Chronograph Accuracy testing

A few people have attempted the DIY chronograph build, at least one person improved the design and made an excellent version of his own.

I had a a question asked about the accuracy of the chronograph so I setup some testing over the weekend to try and determine if it was as accurate as others out there.

I don't have access to a calibrated air rifle or similar, if something like that even exists?? so I decided to use a good quality Oscilloscope (Picoscope automotive), which connected to my laptop via USB and do a comparison with the output from the Nano (in uSeconds).

For each measurement I took a screenshot of the waveform from the Oscilloscope and the serial data from the Nano, this shows the correlation between the actual time between the first beam being broken and the second.
There is also a google sheet showing the data that was recorded during the test here you can view the data and make your own decisions, for the last few shots I added a Chrony F1 about 3m away from the rifle to see what result that gave me.

The Chrony was set up in the garage with the lights off (florescent's) because the Chrony doesn't like florescent lights, instead I had a couple of cheap battery powered LED lights on top of the diffusers.

The conclusion is that although the data for each shot was different between the oscilloscope and Nano, over the 23 shots the average from both was exactly the same 10.57 ftLbs, this compares well to the 10.48 ftLbs when I had it checked at a shop a couple of years ago.

So I'm happy to use my DIY chrono with the understanding that there's always margin for variation and if I was getting 11.9 ftLbs that would be too close for comfort but 11.5 would give me 4% 'ish headroom.


Crimsonknight3 said...

Hiya, Thanks so much for your blog and all the interesting projects you create for us to view!!

I have a question about your chronograph though. I threw one together this morning and I found that although my airsoft gun was triggering the chrono, its readings were all over the place from 0fps to 7000fps. They were just all over the place. I had it created on a breadboard so I tried putting it in the dark to try again, but still readings all over the place. If I tired triggering manually (SLOWLY) it would still trigger at 7000fps or 500fps... I tried putting the distance between the receivers in the sketch (28.5mm) and I tried using the desktop application to set the distance but still same deal.

Also, I deviated from your schematic in that I used the arduinos +5v rather than a battery. The emitters were definitely lighting (checked with my phone). I do have a 3.7v to 5v board (with built-in lipo charging/protection) but I just wanted to make sure I got the chrono working before moving onto soldering/making a housing etc.

Any help would be most appreciated! Keep up the amazing work!!

Thank you,

Gadjet said...

Thanks for the feedback, I'm always happy to know someone actually reads the blog :-)

Are you using the same detectors that I used, what's the distance between the first and second beams? is the calculation value for the distance correct in the sketch.

How are you getting the fps value, android app or PC application?

I've found that when you get higher than expected readings it can be due to the second trigger getting triggered early or being permanently triggered although this usually give faster fps values than you're seeing, can you check that the second input is not permanently triggered?


Crimsonknight3 said...

Thanks for the quick reply, I used the exact same emitter/receiver that you put in your blog OPL550A and OP240A. Their distance is 28.5mm (On a breadboard for testing so didn't have too much space. Also yes, I had the distance value set in the sketch, and when that didn't work I was using the PC application to try and set the value. Also I was using the PC application to read the values, although partly that is because your android app isn't working on my Samsung Galaxy s8 lol

Getting an error saying (Word for word)
"Bad arguments to Checked

The operation Checked cannot accept the arguments: [0]"

How would I go about checking to make sure it isn't permanently triggered? I know the bare minimum of programming with the IDE lol (So far i've pretty much just made a few sensors etc)

Also if I trigger the first receiver manually it doesn't register as a trigger, but when I trigger BOTH (using a pencil) I often get 2 or more "triggers" (shots) in the readout one the right hand side of the PC application one with maybe a 0 fps and another with a high value.

Also if the emitting led's are getting enough power would that cause issues with the triggering? I am using 150 Ohm resistors on the LED's

Gadjet said...

One of the issue I had when I was experimenting was excluding unwanted lights therefore I always used a tube and then when I used an aluminium tube with a thick wall, this was to ensure the receiver was down the bottom of a hole so it was kept in shadow and the only light it would see was the IR from the emitter also at the bottom of a tube, have a look towards the bottom of this post

You can check the status of the trigger inputs by looking with a voltmeter they should both be high (3.3 - 5V) when the IR is not blocked and then change to low (0V) when the IR is blocked. You should be able to monitor the inputs and see the change as you block the IR with your finger, if you take too long there could be a roll-over of the timer used and you could get strange results, the code doesn't do a lot of checking for correct operation it assumes that it all happens pretty quickly.

Is the 28.5mm the distance between emitter and detector or the 1st and 2nd beam?

If it's the distance between the 1st and second beam and there's no tube to block the IR from one beam affecting the other then this might be an issue.

I have an S8 but I've not tried it since I got it, have you entered all the settings like pellet weight etc?

Crimsonknight3 said...

No, I can't enter any information on the app, it literally crashes the second I try and start it. Also, I did enter all the settings on the pc app :)

Okay, My daughter got some smarties from Santa today and the tube would actually be the perfect size as a little test rig! (I'll use paper on the back of the led/receivers and then electrical tape to get rid of as much unwanted light as possible, and I will put the receivers 60mm apart like your rig.

The 28.5mm I was referring to was the distance between the 2 "gates". The actual distance between emitter and receiver was roughly 1 inch.

Ill steal her tube tomorrow when she has eaten them and then I'll let you know!! Thanks for the help troubleshooting :-)

Gadjet said...

Good idea, the smaller tube? you can see in this post I used a piece of waste water pipe to start with .... OMG was it really in 2013 I started the Chrono!

I also found that without the thick walled tube the pellet didn't always block all of the IR light so it works best when there is a thick walled tube with a narrow'ish tunnel and the pellet passes through the dead centre of the beam, when testing though I used items larger than a pellet, lumps of Bluetak worked well :-) but it's tricky to get them to drop down the middle.

Crimsonknight3 said...

I hadn't actually seen that post yet haha It was tagged with Chronograph and I had been using the DIY Chronograph tag to view all the posts related to that project. I just got her to eat the rest of her smarties (after playing in the snow! yay for the rare snow!) so going to test it out now. What ill probably do is place the sensors then wrap in tin foil/masking tape to hold it securely then see if I get odd readings again. Ill find something so that I can just drop test it haha

Gadjet said...

Let me know how it, goes, I'll fix the tag on the blog, hardly any snow here, we hardly ever get any and when we do it disappears in a couple of hours.

Hot water control using a Raspberry Pi Zero W

Following on from the first blog about the hot water heating control here's what I put together for the mounting. Whilst looking for a...

Popular Posts