sawyer bergeron
I did! Honestly I would probably be quite a bit further along by now if I'd just followed one of y'alls' guides instead of trying to roll my own--I landed on some of the same decisions anyway. I was initially going to do a double switch (morphed into optical interrupters) but I realized that would have really finicky calibration so I went down the continuous sensor + ADC route. I settled on hall effect sensors though, since initial tests with the Allegro A1302 actually gave a very clean and wide ranged signal with no amplification and no extra power filtering with the Teensy 4.1 internal ADCs. That gave me (rough estimates incoming) about 250 distinct levels at 10 bits, with about 1 bit of noise sampling at ~800ksps. Doing a linear regression across the samples I'm sure also gives me much improved precision, assuming gaussian noise. The sensors also have less than 2 or 3 parts in a hundred of cross talk vs signal, which I can cancel out with a simple linear compensation function as a compute kernel.
I'm probably going to go with a DRV5057, get a sample of their different sensitivities and get the one that most nicely maps the field strength range I get to a 0-3.3v signal. The sensors have built in amplification and some level of power filtering, plus temperature compensation and such. They also are very resistant to interference IME, at least compared to optical sensors.
I'm doing my best to avoid doing any actual electrical engineering since the best math I can do is competitive with the worst Fermi estimates, so I shouldn't be trusted anywhere near problems like "how do I not burn out an LED" or "how do I tune an op-amp". The hall effect sensors gave me a very self-contained solution that I just need to put hot to hot, ground to ground, and I magically get a signal out the other end that works fine with ultra-high-impedance sinks. The approach so far has been to just use the fact the Teensy has a stupidly fast CPU to work software magic to correct for any weirdness that the hardware may display (nonlinearity, different offsets, noise, that kind of thing)