Well, I have made quite a bit of progress! First, a couple of videos for reference:
First, I did try the DC offset idea to get a readable signal to the Arduino. I had to look up DC offset circuits, as I am very much an electronics newbie. For some reason I could not get a simple two-resistor arrangement (as found on the net) to work, I never got any DC voltage. Is there a different approach you recommend?
I did go another route and got a DC signal....I almost forgot that I had pulled a bridge rectifier from some of the old avionics I have around here. I had tried months ago to use this to get a DC signal, but I made a silly beginner mistake: I didn't consider that I was still getting the top half of the AC sine wave, so I saw the (seemingly random) wildly varying analog levels from the Arduino and figured it wasn't going to work. So, last week, I hooked up the rectifier again and was a little smarter with my code: I am recording analog inputs at regular intervals, and using the highest input level as my level for that time interval. This worked perfectly, I am able to reliably read A/C levels with this approach. I would still like to figure out the DC offset circuit, more for academic purposes now (plus I may, at some point down the road, need to read the entire waveform).
Initially, my supply voltage was coming from a surplus 400hz aircraft inverter. I put together my first resistor voltage-divider circuit (yep, I'm a newbie) to get the 26v from the inverter down to 0-5v for the Arduino. But this particular inverter is a bit unreliable, plus the squeal is annoying.....so I decided to try energizing the synchro with the Arduino. Good news: the synchros respond well to square waves, at least as far as position-detection is concerned. Initially I was putting a signal to the stator of a control transformer synchro, and reading voltage at the rotor.
I am getting the square wave by hooking both leads of the rotor (or stator, in the case of the control transformer synchro) to two digital outputs on the Arduino. One output is high, the other low. Every 2.5ms (approximately), I switch the high output to low/low output to high. The high lead gets 5v, and the low lead finds ground through the (now low) other output. This yields (in theory) a rough 400hz square wave. It would be nice to use the Arduino's PWM outputs here, but there is no way that I'm aware of to sync two separate PWM channels so that they go high/low at opposite times. Frankly I was a little surprised this worked.
Second attempt (after ordering some more rectifiers) was to supply AC voltage from the Arduino to the rotor of a resolver, and read the voltages coming off the two stators. I am happy to report that the resolver, despite its specific voltage and frequency labeling, responds just fine to much higher voltages (like the native 5v levels of the Arduino), as well as greatly varying frequencies. The Arduino's square wave yields a less precise signal, but still good enough that once I convert position readings to degrees, I see "jitter" of only 1 degree.
My new challenges (on the reading part): since I'm only reading the amplitude of the A/C levels, I have no way of knowing which quadrant the resolver is in. I can read 0*-90*, I just don't know where that region falls. I'm assuming that if I was analyzing the waveforms, each signal would phase-shift every 180*. The problem is, even if I get this far, I don't know where I'm at within the wave.
Other challenge: I need to do something about the dead area at the 90* points. I think I understand why this happens: if I look at the peaks of a sine wave, the closer you get to the peak, the less the amplitude changes....I guess I just need my input reading to be more precise. I wonder if using a 12bit ADC would help here? You can see this problem in the video, there's a point close to 90* where the readings barely change, as the instrument position changes by more than 30*. Even with the clean signal from the 400hz inverter, I don't see how I'm going to get really precise information near the 90* points.
I am hoping that since the resolvers are handling my square waves so well, driving synchros will be not so difficult. The tricky part is that I need to actually change voltage levels going to the synchro. I see there are some digital-to-analog solutions for the Arduino, so I don't think this would be too terribly difficult. I could pulse two analog outputs to create my A/C signal, and just adjust the output level to position the synchro, no?