Quick Steer Kit and SWPS, AH Problems (Experts Needed)





- Realized that my old method for reading/polling the device's button was inefficient... it performed a Digital Read of the button's pin every loop cycle, which meant it slowed everything down and increased latency. Now it's using an interrupt so the button pin only gets polled when a change in the button's status is detected.
- Ironed out the center calibration program, was pretty quick and easy since it's a subset of the prior calibration program.
- Fully implemented auto-zone-calibration, which is actually just calibrating Phase B to Phase A. The only downside is it assumes a linear relationship between SWPS rotation angle and phase voltage; probably okay though.
- Of course I can't be 100% happy with that... I'm already contemplating an improvement for this, where instead Phase A & B are used together except when either phase reaches extremes (near 0V & 5V). Like in this link I posted previously: https://www.edn.com/rotary-encoder-w...-and-low-cost/
- Initial thoughts are to keep the current zone determination technique, then combine that with some amalgamation of Phase A & B, plus some technique to overcome the 0 & 5V extremes, and finally determine output angle.
- Of course I can't be 100% happy with that... I'm already contemplating an improvement for this, where instead Phase A & B are used together except when either phase reaches extremes (near 0V & 5V). Like in this link I posted previously: https://www.edn.com/rotary-encoder-w...-and-low-cost/
- DROVE THE CAR WITH THE DEVICE! Finally... round-trip drive of 15 miles / 20 minutes and no apparent hiccups. It's neat to watch it in action but obviously don't need the distraction while driving.
Getting really close to the point where I can start the comparison of SW angle and wheel steering angle. Once that is complete then there's nothing holding back installation of the Mini Mantis kit.
Little hiccup with my C5Z, though: the battery isn't holding a charge well. After sitting with a Noco Genius 2D battery tender plugged in 100% of the time, last night it barely started up. The DIS report 14.4V while driving, but after a 30 minute stop at the store the engine almost didn't start. This is with ambient temps in the 50-70 F range. Bit of a shame since it's a 7-month-old O'reilly Super Start Platinum AGM (group 78). Has a 3-year warranty at least.
Last edited by MetalMan2; Apr 29, 2022 at 02:46 AM.
One of my current goals is to optimize the device's processing speed. This is why I've put extra focus on ADC & DAC sample rates, and why (for example) I updated the button code to use an interrupt.
There will be more latency than the SWPS alone, no doubt, but if I can keep that latency to a sufficiently small value then presumably the EBCM won't behave erroneously. With any luck it would be satisfactory for racing type of applications...
Maybe at some point I can measure the latency with an oscilloscope (or an Arduino program!). Would be a simple setup, just need 2 channels to compare SWPS voltage to the device's output voltage in real time.
Last edited by MetalMan2; Mar 31, 2022 at 06:35 PM.
Error detection is something I conceived pretty early on and have some bones in the code for, but haven't put much effort into lately. Gotta get the device working with a known-good SWPS first!
Some SWPS error detection ideas, open to more of course:
- separate menu that will automatically show up with the intention of alerting the driver to an error, and provide info about the error.
- with a severe enough error, the output of the device will drop to zero which should trigger a SWPS / AH fault on the DIS.
- regularly or periodically (depending on how it impacts latency), verify that Phase A & B are tracking each other. They should always be nearly 90 degrees apart. Might incorporate some sort of counter so that a true fault will be triggered after enough instances of out-of-phase values.
- verify that there is no major jump in SWPS phase values. I suspect this is along the lines of what you're thinking.
- in this case I don't think the device's code would naturally "overcome" such an issue, but perhaps omit the false value and report an error, and maybe disable SWPS output if it's sufficiently persistent.
EDIT: Unrelated to the above, I also added a new feature: ability to turn off the LCD screen backlight. It became apparent that during night-time driving, an extra illuminated screen isn't doing any favors to the driver.
Under normal conditions (including having center calibration completed) the backlight will turn itself off automatically 30 seconds after device power-up. Pressing the button at any point disables auto-off. Also, the backlight can be manually toggled on/off at any time.
There's a side benefit to having the backlight off: a decent chunk of code related to the LCD screen can be skipped, which should increase processing speed and reduce latency.
EDIT #2: For better or worse, I'm continually researching things. The current DAC (digital-analog-converter, the hardware which sends voltage to the EBCM) is 2x MCP4725 breakout boards; that's two 1-channel DACs which operate via I2C communication. One of them alone isn't super fast, and 2 is half as fast because of I2C speed limitations. I'm now leaning toward using one MCP4922 chip, which is a fast 2-channel DAC that communicates over SPI just like my current ADC. Should really speed things up and decrease latency. Only downside is that the MCP4922 is mostly out-of-stock... have an order in and keeping my fingers crossed it'll come soon.
Last edited by MetalMan2; Apr 29, 2022 at 02:47 AM.
Error detection is something I conceived pretty early on and have some bones in the code for, but haven't put much effort into it lately. Gotta get the device working with a known-good SWPS first!
Some SWPS error detection ideas, open to more of course:
- separate menu that will automatically show up with the intention of alerting the driver to an error, and provide info about the error.
- with a severe enough error, the output of the device will drop to zero which should trigger a SWPS / AH fault on the DIS.
- regularly or periodically (depending on how it impacts latency), verify that Phase A & B are tracking each other. They should always be nearly 90 degrees apart. Might incorporate some sort of counter so that a true fault will be triggered after enough instances of out-of-phase values.
- verify that there is no major jump in SWPS phase values. I suspect this is along the lines of what you're thinking.
- in this case I don't think the device's code would naturally "overcome" such an issue, but perhaps omit the false value and report an error, and maybe disable SWPS output if it's sufficiently persistent.
EDIT: Unrelated to the above, I also added a new feature: ability to turn off the LCD screen backlight. It became apparent that during night-time driving, an extra illuminated screen isn't doing any favors to the driver.
Under normal conditions (including having center calibration completed) the backlight will turn itself off automatically 30 seconds after device power-up. Pressing the button at any point disables auto-off. Also, the backlight can be manually toggled on/off at any time.
There's a side benefit to having the backlight off: a decent chunk of code related to the LCD screen can be skipped, which should increase processing speed and reduce latency.
EDIT #2: For better or worse, I'm continually researching things. The current DAC (digital-analog-converter, the hardware which sends voltage to the EBCM) is 2x MCP4725 breakout boards; that's two 1-channel DACs which operate via I2C communication. One of them alone isn't super fast, and 2 is half as fast because of I2C speed limitations. I'm now leaning toward using one MCP4922 chip, which is a fast 2-channel DAC that communicates over SPI just like my current ADC. Should really speed things up and decrease latency. Only downside is that the MCP4922 is mostly out-of-stock... have an order in and keeping my fingers crossed it'll come soon.
I'd love to support your project may you want to bring it to the masses!
The Best of Corvette for Corvette Enthusiasts
Have only made a little progress lately. On Friday the MCP4922 DAC chips arrived and over the weekend I tested one with the code I put together beforehand. It all worked great on the first try

Next up is pulling the prototype board out of my car and replacing the current 2x MCP4725 breakout boards with a MCP4922 chip (plus some capacitors).
Also it's probably worth mentioning that I've driven ~1.5hrs with the prototype board. No adverse events or fault codes to report, though it was just during daily driving duties and not any sort of racing.
I'm gearing up to collect the data for steering wheel angle vs wheel angle. It's dawned on me that it'll need to be collected twice such that I can account for "backlash" in the steering system. Then maybe I'll finally get around to installing the angle kit.
EDIT: Got the car's prototype board situated with the new MCP4922 chip. Bench tests show it works fine. It's back in the car and I'm thinking I should test it with my Tech2 clone to verify. EDIT #2: worked great as verified by Tech 2. Also works just fine in the car after ~30 miles of driving.
Last edited by MetalMan2; Mar 22, 2022 at 02:08 PM.
Well... so far I probably evaluated 10 apps and long-story-short the wheel angle data hasn't been great and I certainly don't trust it.
I have an idea for a more analog wheel angle measurement process and hope to accomplish that in the next couple days.
With my confidence level being high right now (due to prototype device working in a stock configuration) I started moving on to another next step: custom ash tray mount.
The current prototype that's built in to a stock ash tray is functional, but ugly. I had hoped to design a custom enclosure for the LCD and circuit board that looks more purposeful and offers better fitment.
This past weekend I worked on modeling the stock ash tray in CAD (Solidworks) and began laying out the LCD and components to determine a path forward. Will upload images as progress continues!
It doesn't look very pretty but I think it's good enough to proceed. Interestingly as-is the best fit lines (trendlines in Excel) could be linear. However, if I omit the -270 & -315 degree points then I can get really nicely-fitting 2nd-order polynomials, which is the route I'll take:
Below is an image depicting the angle measurements. These are the steps to achieve the lines and what they mean:
- C5Z is up on wheel skates so that the front wheels can turn easily on my garage floor. The wheel skates and tires/wheels turn in unison.
- Not pictured, a block of wood and a ruler were situated up against the wheel skate.
- My wife traced the ruler onto the paper every 45 degrees of steering wheel rotation (while I positioned & held the SW).
- Black lines are clockwise turning (right), pencil lines are CCW turning (left). Pictured is the driver-side (left) wheel.
- Biggest downside to this setup is that the whole car does slightly pivot as the front wheels turn. It's not a huge amount and so I'm omitting the car's rotation. Besides, the car should pivot comparably after the angle kit is installed.
Lastly, with the car @ ride height I took some measurements that are representative of the front wheel toe. Hoping after FDF angle kit install I can simply dial in toe adjustments per these measurements and avoid getting an alignment (the car's alignment is good and it was aligned fairly recently).
Next up is angle kit install! With any luck that can get started tonight.
Last edited by MetalMan2; Mar 28, 2022 at 01:13 PM.
Speaking of updates: started tearing into the Z06 last night. Got stuck at removing the lower ball joint from the knuckle, but I sprayed penetrating fluid there so hopefully it'll come off on my next attempt.
Now for the [relatively] bad news: there was a decent amount of fluid in the driver-side rack boot (haven't started on the passenger side yet). This especially sucks because I just had the rack off the car 2 years ago for harmonic balancer replacement. So now I'm looking into steering rack replacement / rebuild options...
- Turn One is the ideal solution but their turnaround is 4-5 weeks (plus shipping time) unless you pay a $150 rush fee for 2 weeks.
- Zip Corvette sounds like a good option.
- Eckler's website shows one for $246 with no core fee which is interesting. They told me it's about a 90-day lead time.
- DIY rebuild? https://www.corvetteforum.com/forums...build-kit.html
- O'Reilly Auto Parts can get one to me in a few days. No idea of quality/longevity but their warranty is good.
I'm thinking that I will go ahead and put the car back together enough on the driver side that I can take wheel angle measurements with the FDF Mini kit. This way the measurements will be apples-to-apples and there won't be the extra variable of a different steering rack.
Last edited by MetalMan2; Mar 30, 2022 at 10:56 AM.
The interesting thing I'm waiting to see is what happens when you turn the wheels more than they can turn from the factory. What I mean is that you're more or less going to be mimicking the steering wheel turning further than it is really turning so what will happen when you go past the stock steering limit. Or are you limiting the rack movement so the wheels don't turn further, just faster?
It's looking like I will attempt a DIY rebuild: https://www.corvetteforum.com/forums...build-kit.html
For reference, in the same Tech2 EBCM menu that shows SWPS A & B voltages, it also provides a steering wheel angle value. In all my tests (keeping in mind 2001 Z06) this value hasn't changed from showing 0 degrees. It may simply be a matter of driving the car to "warm up" active handling before an angle is reported. One test could be to drive the car around with the converter device set to stock, then switch to a different angle output to effectively increase SWPS rotation angle, and see what happens.
I am planning for more steering angle than stock (honestly I just want a tighter turning radius for daily driving haha). I may limit it a little bit as needed by adding rack limiting spacers such as in this thread: https://www.corvetteforum.com/forums...ers-stops.html
Last edited by MetalMan2; Apr 1, 2022 at 03:11 PM.
Couple initial notes after driver-side Mini Mantis angle kit installation:
- At ride height and full lock turning right, the wheel inner edge contacts the stock lower control arm front edge. Thinking about clearancing the LCA a bit and also adding a rack limiter spacer to ensure there won't be any contact (especially when the suspension is loaded/compressed). I couldn't find any other locations of contact with my C5 Z06 front wheels and 255/40.
- Thankfully my Goodridge SS braided brake lines seem to be long enough at least for the kit's mild setting

So... what are the results we've all been waiting for?
This last one is a visualization of "how much quicker" the SWPS traverses its range with Mini Mantis kit vs stock. This graph doesn't actually mean anything, because for example, @ 450deg SW rotation the SWPS output angle with Mini Mantis will be 573deg.
And last but not least, with all this data I generated a conversion factor that enables the Arduino code to take SWPS input and spit out a manipulated SWPS output to suit the Mini Mantis kit. Thankfully this conversion factor can be linear! (linear means less float math required from the Arduino, which means less processing time)
I'm amused that all of this work literally culminated into just 2 lines of code.
Last edited by MetalMan2; Apr 4, 2022 at 04:15 PM.
Haven't put the brake caliper on yet because I just received a full set of C6 Z51 caliper brackets (thanks lewislgZ06 / Larry), and I'm interested to see how/if they can work with my 2001 Z06's stock wheels. Supposedly the Speedline ('02-'04) 17" wheels only require some trimming of the caliper fins, but '01 Alcoas aren't really feasible as they have less brake caliper clearance (requiring excess fin trimming??).
Also managed to liberate the power steering rack last night and am currently disassembling it:









