To miniaturize the HTC Vive tracker, we needed to make our own board, and went through several ideas, here is a summary:
Problem
To achieve accurate timestamps of several photodiode signals in an MCU, using interrupts would not be ideal as they would add delays and we would miss some of them.
1st idea
We 1st thought about using the tiny FPGA by Lattice (iCE40UL-1K), it's only 10 x 10 mm and can be flashed with the Ice Storm open source tool-chain: clifford.at/IceStorm
Trick
...but we were planning to use the nRF52 radio-MCU by Nordic, and remembered that it has a very practical feature that would allow doing those timestamps in parallel without interrupt.
This feature is called PPI Programmable Peripheral Interconnect:
Validation
To verify that the timings were possible, we enjoyed the great talk* by Valve's engineer Alan Yates:
This video helped us simplifying our feasibility estimation, below are the quick & dirty numbers:
- Max base to tracker distance = 5m (5000mm) and we want an accuracy 0.25 mm = Ad
- Motor speed = 60 turns/sec => 1 turn takes 1/60 = 16.667 ms = T
- During T, the travelled distance = 2 Pi R = 31.415 m = D
- Time accuracy = T / (D/A) = (1/60) / (2 Pi * 5 / 0.00025) = 132.6 ns = At
- PPI sync @ 16MHz => 62.5 ns = Tppi
=> Theoretical accuracy = Ad / (At / Tppi) = 0.25 / (132.6 / 62.5) = 0.118mm!
*Video source:
https://hackaday.com/2016/12/21/alan-yates-why-valves-lighthouse-cant-work/
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.