I understand there are very many options out there but it can all get a bit overwhelming.

Here’s a little bit about my project;

I am building a device that tests the performance of shocks, the final goal of my project is to plot the force exerted by the shock vs the linear displacement of the shock compression.

I am currently looking for a proximity sensor that has a high sample rate, I currently am using a HC-SR04 that I had lying around but I cant read the distance at the rate I would like. I understand you get what you pay for so I was hoping on receiving from feedback/suggestions from you guys.

Here’s a little bit more information about my project;

The linear motion is being controlled by a large three phase motor. The motor will be running at a max speed of 5Hz so the time it takes for 1 revolution is 0.2 Seconds. The stroke length of the linear displacement is approximately 3 inches as seen in the images below. Considering half a revolution moves the shock down 3 inches, and half a revolution moves the shock up 3 inches, I divide the 0.2 value to get a peak to peak time of 0.1 Seconds. So to clarify, the time it takes for a linear displacement of 3 inches is 0.1 seconds.

As far as my plot goes, I would ideally like to plot the distance in either .1 inch or .05 inch increments in order to acquire an accurate plot.

If I understand correctly, it would take 3.33ms for a linear displacement of 0.1 inches if the motor was running at 5Hz. How do I correlate these values with the selection of a suitable proximity sensor when analyzing datasheets? Would using a IR proximity sensor be a logical choice?

I have some difficulty understanding what you are trying to measure during this experiment.
One of the parameters you are clearly interested in is distance.
Another is possible parameter is time. The time the piston took to travel a set distance.
You also talk about shock and force. How are you intending to derive these values from your experimental device ? Simply through formulas like force = mass * square of velocity ? But what about shock ? How is that to be measured / determined ?
From the pictures and your description, it looks like you are intending to use the piston to crush a wooden object and somehow derive a value for the shock created.

My project is to make a shock dynamometer which tests the performance of shocks by outputting various graphs. Every time the compression of the shock changes, the force exerted by that shock will also change which is what I would like to display on a graph.

Below is an image of a load cell implemented in the system, this is how I am acquiring the force exerted by the shock;

At the moment I am interested in ‘time’ because I am trying to figure out what sample rate I need my proximity sensor to be. At maximum speed, it takes 0.1 seconds (half a revolution) for full compression of the shock which happens to be 3 inches of compression.

So what I am trying to do is find a proximity sensor that is capable of outputting at least 30 different values for distance within that 0.1 second time interval. I would like to plot each distance reading along with the values of the force reading at each corresponding distance reading.

To clarify I have displayed below what would be shown on the x axis and what would be shown on the y axis (the values are completely made up);

These values are completely made up and do not logically make sense as outputs for my application, but the example above is just to get an idea of how the plot will be formatted.

Constant movement of the motor will produce the shock to be compressed/decompressed over and over again until the motor is stopped. The force exerted by the shock will be a different value every time the compression of the shock changes and so that is the purpose of all this, But my number one concern right now is to find an appropriate proximity sensor that is capable of outputting at least 30 different values for distance within a 0.1 second time interval.

Eventually I would like to come up with a graph such as the one below, but I would like to start simple and plot force vs linear displacement (of the compression of the shock);

OK. The distance moved appears to be proportional to the number of revolutions of the motor, if I understand this correctly:

The linear motion is being controlled by a large three phase motor. The motor will be running at a max speed of 5Hz so the time it takes for 1 revolution is 0.2 Seconds. The stroke length of the linear displacement is approximately 3 inches as seen in the images below. Considering half a revolution moves the shock down 3 inches, and half a revolution moves the shock up 3 inches, I divide the 0.2 value to get a peak to peak time of 0.1 Seconds. So to clarify, the time it takes for a linear displacement of 3 inches is 0.1 seconds.

If the motor speed is constant, you need only to start a timer when the motor is started. From the elapsed time, you can calculate the distance.

If the motor speed is not constant, maybe you can measure the time of each motor shaft revolution and derive the distance traveled in that time interval. Maybe you can also find a way of getting multiple signals per shaft revolution if you want more accuracy.

Do you think it would work if I used a PCB board (cut into the shape I need) rather than a piece of metal with drilled holes? Perhaps this can save me the trouble of drilling holes if the Photo Interrupter can pass light through the small holes on a PCB board. The increment doesn't have to be 0.1 inches. I used that mainly as an example for what I was trying to do.