-
David Preiss authoredDavid Preiss authored
Inductive Encoder
HTMSTMAA Week 12 - 5/27/21
Welcome to the last week of the inductive encoder project (as a part of HTMSTMaA. Getting to a state of a working encoder took some pretty abominable debugging/hacks (see video below), but the results are promising and I am excited to integrate it into a motor driver.
From the data last week it was clear that my sensor was saturating with copper present (see how it flatlines on the low end in the screenshots from that week). To remedy this, I started by trying to simply increase the air gap between the coils and the copper target, but found that the coils were so sensitive to the increase in axial distance (axial sensitivity is tied very closely coil diameter) that the SNR penalty from increasing the air gap made this a non-factor. So instead what I needed to do was increase my pole count to the next multiple of 12 from 6, so 18. With a given Sin/Cos coil spacing (in this case for me it's 75deg). Jumping to 18 targets was slightly more than optimal, but I was able to resolve a much more sinusoidal signal after doing it, with plenty of resolution between the high and low copper-present peaks.
In machining the smaller targets on the ShopBot Desktop, I noticed that some copper pads appears significantly smaller than others. I confirmed this under a microscope with ImageJ, so machined a last minute replacement on the Roland with much better results. You can see the comparison of the two in the image below. Given this confirmation, I am intending to move my PCB milling operations to the Roland, which showed some really impressive results.
Accuracy
From the plots below, it would appear that I am acheiving about +/- 1.25deg of accuracy without calibration. On paper this is much worse than I was hoping for. With a 1.8deg step size for a stepper, acheiving at least 25% accuracy of a full step would be critical, so closer to +/-0.5 deg accuracy. With that said if we look closer at the error data, it is clear that it's highly repetitive between pole pitches. This tells us what's already expected, which is that our accuracy is interpolation limited (on the sensor side). Our interpolation technique assumes a perfectly sinusoidal signal, which is not going to be the case given the physical parameters of the system, and so a calibration should be applied in the form of a lookup table to smooth out some of this error. I made a quick attempt at this in the "Calibrated" Error plot below, by simply taking the first pole transition and subtracting its error from the first and second pole pairs. I didn't have the data bandwidth to do this very well, but given how repeatable the error is, I suspect it should be possible to get that error down to below the 0.5 deg range, or closer to the +/- 0.25 deg error suggested by the repeatability plot.