I did capture 100m/s airgun bullet inflight multiple times, this is example with 9KHz flash frequency, with flash durations 8.33µs:
https://github.com/Hermann-SW/Raspberry ... nt-9000eps
Two weeks ago I was able to capture fast rotation (20,000rpm) mini drone propeller with HQ camera with 5 flashes of 19µs duration at 4KHz:
Today I started to capture airgun bullet inflight with the same method -- obviously global shutter is not needed for short duration flashes capturing fast motion. At the wall is a small cardboard box, filled densly with lots of folded newspapers as bullet catcher. I did shoot several times into it and no bullet has left the catcher on the other side. Just before is HQ camera lying flat and looking up with CStoM12 adapter, a CStoC adapter and M12 20° lense. On the right side is 5000lm led, its 38V/1.5A controlled via Mosfet from Pi4B GPIO13 connected to Mosfet module SIG pin. 9" HDMI display allows to see stuff and control everything when using the airgun. I am shooting above the M12 lense, into the bullet catcher. The depth of view is only a few millimeters, so I placed a small piece of paper with 5 digits (used in this previous posting before) above the lense in distance (hold by soldering 3rd hand), that just below it capture is sharp. That way I can just shoot below the paper to capture bullet sharply:
The camera is having its top directed to the 5000lm led. Therefore the small paper is displayed vertically. If capturing bullet, it will enter from right and leave on the left. The 20° FoV is too small for me to hit with the airgun -- I will change to 50° tomorrow morning. This is 5fps animation created from 80fps video captured. It shows that the bullet missed camera view, but that the passing bullet created air draft that did hit the white paper. It also shows that there seems to be some electrical problem in the setup (partial frames with wrong colors), maybe the 38V/1.5A DC led is too close to HQ camera:
This is the script I use currently:
Code: Select all
$ cat doit80 #!/bin/bash raspivid -md 4 -w 1012 -h 760 -fps 80 -o tst.h264 -pts tst.pts -t $(($1 * 1000 + 5000)) & PID1=$! sleep 2 && ./pwm_ges 9000 75000 $1 wait $PID1 $
After 2 seconds of delay, pwm_ges tool generates 9KHz PWM signal on GPIO13 with 1/9000*75000=8.33µs duration of pulses, for the time passed to doit80.
Finally script waits until raspivid has ended.
With 100m/s speed, bullet moves 100m/s / 80Hz = 1.25m between two frames captured at 80fps framerate.
So in almost all cases bullet will be captured on one frame only.
raspivid overcomes the issue not knowing when bullet flies -- using a sound trigger is another option.
When capturing with v1 camera high PWM frequency was a problem (9KHz/90fps=100 flashes per frame, too bright photo).
With HQ camera this is unlikely to be a problem because of capturing at daylight and lux quadratically decreases with distance.
With flashes at 9KHz, bullet moves 100m/s / 9000Hz = 11.1mm between flashes.
That is fine since bullet length is 8mm, so there is no overlapping as can be seen in v1 camera 1st photo above.