|Motor type||custom MMA|
|Maximum shots per second||20 Hz|
|Maximum vibration frequency||50 Hz|
|The 1st resonant frequency||>td >27 Hz|
|Battery life time||> 4h|
|Diagnostic interface||Micro USB|
How i did it
My task was to design and prototype a plastic housing and haptic feedback motor for the Oculus Quest controller. The most complex part was to create the low cost, easy to build, and efficient motor. After five different prototypes of the motor, the winner was an MMA style linear motor. All motors were simulated with the COMSOL, then their characteristics were verified by test. The images below display two of the five prototype motors.
My task list for this project included:
- Designing and simulating the motor with COMSOL
- Designing the schematic and PCB with Siemens Xpedition
- Verifying the power integrity of PCB with Hyperlynx
- Designing the 3D model of the motor and the plastic housing with Siemens NX
- Printing the plastic housing
- Assembling the prototypes
- Creating the firmware with C++ 17
Three different prototype rifles were made. One of them is shown in this photo above.
The final prototype produces 5 N/A force and can produce an impact effect at up to 20 shots per second. The vibration effect is usable up to 50Hz. The rifle uses a 12V 2A/h quick-replace Metabo power tool battery. The electronic circuit contains two DC/DC converters, an ESP32 microcontroller and an L6207 motor driver. The PCB of the controller is illustrated in the picture below.
The firmware contains a UDP server and LISP based interpreter. Each UDP request is recognized as a string and parsed by the LISP machine. To simplify integration with Unity, there are LISP methods to interpolate Unity.AnimationCurve data for single shot and automatic shot modes.
When the game runs and the Oculus controller sends a command to shoot, the game should send the command to the microcontroller in the rifle, and the microcontroller produces vibration or impact feedback. Designing an electromagnetic system was a really tough but enjoyable task for me. Altogether, this was a very interesting project, and I am grateful to the company who requested this job task.
To complete this project, I really benefited from the help of GiTae Kweon, a real professional and good person. You can contact him through his account https://github.com/OpenActuator