Close

Technology test 3: Final concept

A project log for One more 3D mouse

I also want to make a 6DOF mouse

vedranVedran 09/24/2025 at 18:030 Comments

This project has been shelved for the last year, but I'm finally back and determined more than ever to conclude this project! Building on the last few technology test, I'm pretty determined on keeping the hall sensors, despite all the good suggestion I received in texts and comments that I should instead go for a 3D magnetometer. I might investigate that option later, but for now I'd prefer to use whatever I have around :) I also looked into other variants that are not based on magnetism, like inertial (based on IMU), but have quickly abandoned that road. It seems quite impractical to move your pointer just because you decided to reposition the mouse on your desk :D

Anyway, the final concept is based on 4 pairs of hall-effect sensors, placed 90 deg apart with a magnet hovering on the knob above each pair. Essentially, what was done in technology test 2. However, I chose to experiment a bit with the spacing of the sensors in a pair, and height of the magnet from them. I cam to the conclusion that sensors have to be spaced fairly close as the mouse movement is only +/- 1cm and a few degrees of tilt. So I went from initial 8mm, down to 4mm and finally at 1mm.

This has produced very clear data for each of the 12 gestures that the mouse needs to support:

While testing, I also got some insights for the next phase. Namely, the knob must be attached to the flexture as close to the sensors as possible (while still having the space to move). In other words, the knob can't be suspended on it's top surface. Also, the knob must have movement limits, especially in the -Z direction (push action) otherwise the hall effect sensors starts acting out.

I'm assuming this has to do something with the sensing area inside the sensor itself, and its alignment with the magnetic field. That alignment might be very sensitive at such close proximity. But keeping the magnet 5-7mm away from the sensor helps avoid that.

On the software side of things, one important part is normalizing sensor values. Something as simple as subtracting average of all sensor values from each value before using it for computation helps avoid wrong readings due to e.g. accidentally pressing on the knob while trying to pan, or pulling the knob while orbiting. 

Discussions