Saturday 11 October 2014

A note on vibration

From this previous post, you can see the IR data that is being sent from the Arm Server to the User Server (previously named Client). The data that was being received looked a little like this:


This data is essentially what the vibrational motors are using to determine their strength. I have used 3 levels for haptic feedback, but it is possible to use more. The vibration motors we purchased can draw approximately to 60mA at 3V (recommended operating range 2.5-3.5V) - which is perfect for Arduino ports that output 3.3V.

Experimentally, the tactility that you can sense in your fingers is not particularly sensitive. A change from 2.9-3V is negligible. As such, you don't need to perfectly map the proximity of the sensor with the vibration motors (which was an initial idea we investigated). To make sure we didn't have to send masses of data along the WebSocket, we determined that 3 varying levels of  vibration was an optimal amount. This may change with proximity sensors that sense at differing distances, but the levels we have allow a bigger difference in tactility.

There is some research with tactility, but it is mainly concerned with a) medical/orthopaedic benefits of using vibration gloves, b) difference in sensing tactility at difference frequencies or c) the limits of hand tactility. For our purposes, the frequency study is of most interest, but in essence our determination of the levels was done experimentally.

For completeness, the spec sheet for the motors state that there's a 12000 RPM at 3V which translates to 200Hz, as 1Hz = 60 RPM. The IEEE article linked above shows that a maximum tactility at around 250Hz, which the most sensitive region being 80-120Hz.

The level that you can read from the Arduino analog pin ranges from 0 to 255. The levels I have used move from a level of 64- 128 - 255; ie quarter value - half value - full value. Assuming a linear change of RPM, this would translate to approximately 50Hz - 100Hz - 200Hz.

Experimentally, any slight buzzing can just be sensed. The first level does not necessarily need to be at a level of 64, but it is an easy fraction of the full value. The change up to the second value is a noticeable difference, and the highest value buzzes like no tomorrow!

We felt that if it was 15cm or further, it should just be able to be sensed. Obviously, if it's right next to the sensor it should be buzzing quite strongly. As such, there must be an intermediate value between them, otherwise you would be stepping up too quickly.

In the future, there may be more research done on the number and strength of the levels of vibration. However, at this time, we do not think it is necessary.

Next up - integrations (not the calculus kind!)

No comments:

Post a Comment