Hi i have a piezo sensor, and im doing a little more complex version if the arduino knock sensor.
im just wondering is there anyway to detect the direction that the vibrations are coming from, rather than just vibrations?
So for example, if i have my piezo sensor connected to an uno, then when a vibration is detected, i want the uno to notice that a vibration has been detected, but also want it to know which direction it has come from, for example right, left, up, down.
Is this possible? And how would it be done. Please note that I want a fairly good range as well, because with enough sensitivity boosting, the piezo can detect vibrations from over 10 meters away, so maybe the direction detection should be at least 5-6 meters range?
Please, explain what the procedure for sensing directions this way would be.
U'll need at least 3 mics or piezos to determine where the source is. (timing difference for triggering sensor)
This is possible if the sound is loud enough to safely trigger all sensors. If the sound is countinous, it will be almost impossible for arduino hardware to follow the source.
Now sorry ny, are u saying that if i use 3-4 piezos on each side (right, bottom, forward, backward of an object) then i can compare the times it takes for the vibration signal to reach each sensor and whichever one it reached first would be the direction of the vibration? I feel that is a good idea, however i think it would be difficult to incorporate so many sensors, because later on i might consider reducing to a smaller chip than the uno. Is there any better way to do this other than multiple sensors. I like the idea, just the size is a bit big!
And, jremington, I am a beginner in electronics and was wondering if you could please elaborate a bit more about trilateration? Also could you briefly explain the procedure in terms of hardware and software requirements in regards to my project. Sorry, i don't want to take too much of your time, just a simple explanation is good!
knut_ny:
U'll need at least 3 mics or piezos to determine where the source is. (timing difference for triggering sensor)
This is possible if the sound is loud enough to safely trigger all sensors. If the sound is countinous, it will be almost impossible for arduino hardware to follow the source.
Also ny, how far apart would the piezo sensors have to be? say i have a 4 sided block and i place a piezo sensor on each side. The distance between each sensor would maybe be 2-3 cm. Is this ok? Would the uno be able to process the incoming signal quick enough and calculate the time difference in signal reception so that the lowest timed sensor is outputted thus indicating direction?
say i have a 4 sided block and i place a piezo sensor on each side
Please describe your idea in useful detail.
In order to use trilateration, you have to calculate distance. To do that with vibrations in a material, you need to know the speed of sound in the material.
Ok, basically this is simply an idea in thought not actually done yet. So, I'm simply wondering that if i place an object on the floor with 4 piezo's in 4 directions attached to it. Will I be able to sense vibrations from the floor as detected by the piezo's? And could I sense the direction from where the vibration is coming from?
Are we talking transients or constant vibration? Transients are easy to time, vibrations may only
have phase information.
If you can arrange two sensors at right angles, each with directional response, the comparative
signal strengths give an indication of direction (modulo a centre of inversion).
What frequency of vibration? For lower frequencies a 2 or 3 axis accelerometer might be usable.
Seisomometry might be a topic to research, since they have the same problem but in 3D.
For now momentary vibrations is fine. Later I can try and deal with multiple vibrations. But basically in terms of frequency, say a person is moving towards my object with the sensor mounted on it. I want the micro-controller to know which direction the person is moving from (direction of vibration). I realize that people detection is done usually with pir's and ultrasonic range sensors, but i feel piezo's have a much larger sensing range. So my question is whether sensing the direction based on timing is possible and how feasible is it? Please note that the piezo sensors will be placed fairly close to each other (2-3 cm apart) so im wondering whether they will interfere or not (definitely shouldn't interfere with respect to my project). Also will the uno be able to process the signals fast enough and detect difference in times?
Please note that the piezo sensors will be placed fairly close to each other (2-3 cm apart) so im wondering whether they will interfere or not (definitely shouldn't interfere with respect to my project).
I see you have settled on the physical design before you understand either the theory or the hardware.
Piezo sensors generally have very poor directivity, by design. They would have to be spaced apart and coupled to the transmitting media to obtain a vector solution.
Phased array radar and sonar use similar principles. The older Loran navigation system is similar but you would need the inverse, one transmitter and three receivers.
Yea, I don't know. I'm in a bit of a crunch for time so I am trying to move a little fast. But all i I need is some sort of confirmation that the idea works before I start working please. Also, there won't be any transmitters attached to the moving people. There will only be piezo's attached to the central object and anyone moving around in the proximity needs to be detected by the piezo's and direction needs to be sensed as well.
My reference to the Loran was meant only to illustrate the spacing of the sensors. The transmitter would have to be the vibrations created by the moving object. Sensor spacing would have to be large enough so that time difference of arrival could be accurately measured. That would require synchronized digitizers such as three Nanos or Pro Minis triggered by an interrupt and using the PlainADC library. This library provides digitizing up to 130Ksps with any 328P CPU. If your vibrations are coming from only one hemisphere then you could use a single Teensy 3.2 with dual synced ADCs. I've been able to get one to run at 62.5Ksps using the appropriate library code and no special tricks.
If you have access to an oscilloscope then place two sensors on the floor a foot apart. Tap on the floor at various locations and watch the time difference offset on the scope. This will give you an idea of sensitivity and angle detection.