Impact force measurement


My name is Jeremy and I would like to create a midi vibraphone (similar to a xylophone). So the concept is to have some rectangular plates on which i strike with something similiar to a drum stick but with a little ball (~5cm of diameter) on the top. One of the major issue is to find a way to know the force that I applies on the plate when I hit it.

I have some problem to find a great solution to the problem of how to measure the force (and so the velocity of my note). Because first it is not really a weight but more an impact and I think that it isnt the same thing, and also because I don't know which sensor to take. I first started with piezo but the problem was that I want a pretty silent instrument and I think that piezo relies on vibration (that I want to avoid). I then tried the loadcell wich looked great but the ADC that came with the loadcells has an output data rate of 80Hz wich is really insufficient (I need to have something like 1k or 5k HZ to distinguish well the different notes). So I looked for another ADC but damn that's hard to understand, but I finally found one that looked great (the AD7192) but I have no clue how to implement it and if it's really what i want/need. I tried also FSR but they have an precision of 5% in general which isn't sufficient for my project.

Do you have any idea which sensor to take (maybe also other from my list) and maybe quickly write your idea of how to implement it.

Thank your very much for your time!


An accelerometer can be used to estimate impacts (impulse, integrate force over time). You could put it in the "drumstick" ball.

I would suggest using an accelerometer with analog outputs, like this one, as they are fast and easier to use. Further, since you don't care about the directions, you want to measure the total acceleration along all three axes, and sum over measurement time to get the impulse.

rough example:

accx = analogRead(A1);
accy = analogRead(A2);
accz = analogRead(A3);
acc = sqrt(accx*accx+accy*accy+accz*accz);
total_impulse += acc*delta_time;