150+ Forum Groupie
Open Cockpits and Real Gauges
What I am attempting to do is ustilize the exsisting AC servo motor that is incorporated in the old Boeing style N1, N2, EGT, etc gauges. These servo motors are 26V and 400hz controlled.
I have considered using RC servo motors, but they just do not have the rotational value I am looking for, besides I am not too keen on modifying the gear structure to accomodate the extra degree of travel necessary for my gauge application.
It took some time, but we have figured out (through the manufacturer) motor type and power supply.
Essentially the motors have 6 wires, the yellow and white wires are for rotor, the red and red with black stripes is for stator 1, and the blue and green wires are for stator 2.
What we are attempting to do is interface this motor using a separate power supply and Open Cockpits as the control function.
In order to do this we are going to have to develop an 'adaptor' that will be connected to the gauge servo motor, and potentiometer.
The engine gauge potentiometer is a wiper type and follows the needle around from 0 to maximum value, whether it be FF, N1 or EGT.
Never working with OC before, I just want to run some things by you folks who are professionals in interfacing.
If we design the 'adaptor' to accept pulses from OC control board, then I should be able to program the needle deflection from SIOC...correct?
I will attach the email my friend sent me, as he is developing the idea for the adaptor, but is unsure of how OC actually works. Listed below is the text version only....i did not supply the pictures to help explain but if you feel it necessary to help with the explanation then I will attempt an attachment.
(We basically just need to know if we are on the correct track here)
Id like to recap on the usual way an RC serve is made, and see how it can best be done with a PIC.
The servo is normally fed from a 3core cable two for the 5v (nominal) supply and one for the data. The data is one of several pulses time multiplexed at the source one pulse to feed each servo. Each pulse is varied in length between 1ms and 2ms to give a 90º throw of the servo arm. The pulses are usually repeated every 20ms. I assume that the Open Cockpit system is similar, and when you design-in the rotation angle for each dial, their program would respond by altering the pulse lengths to suit.
When data is received, the start of the pulse triggers the servo to generate its own pulse. The length of this local pulse is determined by the position of the wiper in the feedback pot in the servo. Depending on which pulse is the longer, the motor will run one way or the other until the lengths of the two pulses match.
The servo pulse is generated by charging and then discharging a capacitor through a resistor; the time being dependant on the position of the pot. Because of the way the pulse is generated, the rotation of the pot is inherently non-linear with time (see Fig 1). Over an angle of 90º the non-linearity is not noticeable, but at angle over 180º I have found it to be very noticeable.
When using a PIC, I would measure the received pulse by using a timer counter to record its length. The resulting number would then be compared with the A/D reading of the voltage from the pot wiper. The difference would decide the direction of motor run. The normal 1ms 2ms range using that method is shown at Fig 2. Note that the scale is linear but zero time does not coincide with 0º rotation of the pot.
As you are not tied to the 90º positions of a normal RC servo, an easier solution to implement would be a range of zero to 3ms over the full range of the pot. The timings for N1 and N2 would then be as Figs 3 & 4. I assume the Open Cockpit calculations are empirical and can be adjusted to accommodate N2s range.
The resolution of the pointer would be better than 1.2º (that's decided by the 8bit resolution of the D/A converter).
The 5V servo supply from the O.C. device would power each PIC The fixed windings of all the servos would be permanently connected to the 400Hz supply, and the control windings would be switched by triacs as required.
If you can confirm that to be OK, then Ill start writing the program.