Driver Design for 1960s vintage Quadrature Phase 400Hz Motor

Thread Starter

scottbouch

Joined Jun 27, 2022
9
Hi all, first post here, I hope power electronics is the right place in the forum to post this, mainly due to the voltages involved.

I ask for help and guidance here with this design as I am a bit rusty with electronics and haven't built devices in this voltage area before. I didn't want to plough straight in and cause damage to the motor or anything/anyone else, hoping this post is the start of my research, and will point me in the right direction. I realise this is a big ask, and I'm not expecting anyone to have the time to sit down and fully design me a motor controller, but I need a steer in a good direction from someone with the right experience, who knows what pitfalls to look out for.

These motors are inside aircraft cockpit indicators and display units, so are only small, they drive light gear trains to move cards and pointers in the indicators. This is part of a flight simulator personal project using real equipment form the 1960's. I am not going to be modifying the equipment by changing the motors for modern equivalents, as the notion of historic preservation is at the heart of this project.

Note: These are not modern quadrature phase stepper motors, I don't think a square wave pattern would be suitable as used in stepper motors.

The motors in question are quadrature phase motors; they have two windings, one [reference] "REF" (115V RMS) and one "CONTROL" (60V RMS), both 400Hz.

I have a 28Vdc to 115Vac 400Hz rotary inverter, so can provide a clean sine wave to the REF coil with no problem.

I now have the issue of providing a controlled signal to the CONTROL coil to operate the motors correctly.

CONTROL coil signal specification:
  • 60V RMS, 400Hz sine wave (or fast PWM approximation of a sine wave, some tens of kHz I imagine).
  • 90 degree Lead or Lag w.r.t. REF signal. Lead / Lag will control the direction of shaft rotation.
  • Variable amplitude, could be achieved using above fast PWM concept. Amplitude controls the motor speed, CONTROL signal at 0V = shaft static; 60V RMS = maximum shaft speed.

CONTROL coil driver output stage:
I imagine the output stage to be achieved by a push/pull setup between +84V DC and -84V DC power supply rails (60V AC RMS * 1.4 for peak value), possibly PNP/NPN complimentary pair, IGBT or MOSFET, or other device, advice on which would be most suitable, and simplest to design would be appreciated.

These motors are only small, <1" diameter by about 2" long, and drive light loads, so I can't imagine a high current draw - but I will not know a typical current until I get prototyping, however, I'd aim at a capability of around 1A to 2A initially to ensure startup torque, or direction reverse torque doesn't damage the driver output stage devices.

Driver REF voltage sensing:
The driver will need to sense the 115V AC REF voltage in order to correctly offset the CONTROL signal 90 degrees out of phase. I can use a transformer to reduce the voltage to safer levels, but am open to other ideas here too involving other means of isolation, but it should not cause a delay / phase shift.

Interface:
The driver circuit must be able to be operated by an Arduino board / Arduino compatible ATMEL IC. The 400Hz frequency of this driver is outside of the native PWM speed capabilites of the typical Arduino board, so I am envisaging a separate dedicated driver interfaced by I2C or 0 to 5V, or other compatible signal.

If I2C is used, between Arduino and driver, as multiple drivers will be in use, addressable drivers are needed for sharing one bus.

I am interested to know if there is an easy off-the-shelf idea that would work for parts of this application such as the push/pull output stage to save time and going round in circles, but any design advice on the above points is sought please to achieve this in the most painless way.

Many thanks, Scott.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
PS:

These motors are also sometimes called "two phase servo motors" or derivatives (as they are used in servo control applications with synchros for position feedback, they are not what most people know to be "servo motors" as used in radio controlled models. They are also not modern quadrature phase stepper motors as mentioned.

(Some overlapping naming conventions isn't helpful!)
 

strantor

Joined Oct 3, 2010
5,974
What provided these signals in the 1960s aircraft? I might make not-quite-educated guess that it was a LVDT? If I'm wrong, still, would a LVDT work?
 

nsaspook

Joined Aug 27, 2009
9,993
I've used and worked with them before. Resolvers., etc ...
If your power requirements are low (>100W) I would go analog I/O for phase generation (simple for a fixed 400Hz 90 degree shift from your REF signal), amplitude control and power (class D audio amps with 400Hz transformers for isolation and voltage transformation) with digital control (DAC) of the analog control signals using a uC.

I've built 400Hz 3-phase 115AC systems from boards designed for 3-phase BLDC motor drives using Full PWM generation and control.
https://forum.allaboutcircuits.com/...r-for-3-phase-115v-supply.181424/post-1665711

It's not that difficult but it's not project for a beginner to build from scratch.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
Hi Strantor, good question, ie, why re-invent the wheel... I hope this explains why I'm going down this route:

I'm trying to bypass these circuits (where they exist) and build my own direct motor controllers as it's actually the most simple and standardised route I can take, meaning one design should fit all.

Each instrument is a different kettle of fish, but the motors have a fairly standard interface as described above.

The principal of controlling the position of pointers and cards is that the position of the card is measured with a synchro transmitter, fed back to an amplifier which compares this to a demand signal from an external system (such as the air data computer, gyro, fuel level, radio navigation), the error between feedback and demand is established and used to rotate the motor to reduce the error to zero, and the card / pointer ends up in the correct position.

Some of the indicators contain some electronics too (and some don't), this is part of the amplifier and error detection circuits (but some have totally external amplifier systems). Sadly I have no manuals or diagrams for these circuits so it's a right mission to try and utilise them. Additionally they contain some thermionic valves (tubes) which will need HT power supplies, and valves don't last forever, so reliability, and spare parts may become an issue. Some early transistors or silicone rectifiers also exist within too, but these are just black resin blocks with various wires exiting and very little in the way of useful (to the internet) part numbers, so finding out what happens inside them is a bit of a nightmare too. Even down to having various transformers dotted around, I've no way of knowing what the ratios are. These electronics modules pre-date PCB's, have post mounted components and lots of laced and taped tiny wiring looms, soldered joints coated in "Shellac" varnish, to reverse engineer a circuit diagram of the existing electronics would mean a massive strip down unfortunately, and most likely damaging it in the process.

Here is one example of the inside of an attitude display unit with the complex electronics module removed, leaving just motors, synchro transmitters , and a couple of potentiometers, neatly terminating at two D type connectos, where I can connect my replacement electronics without casuing any permanent modifications to the unit. There is another motor and synchro out of sight mounted to a rotating frame (connected by slip rings), they operate a roller blind for artificial horizon.


Luckily each motor conforms to the same standard of 115V REF and 60V CONTROL. If I can build up a modern, reliable controller, it will be able to operate every motor without me having to teat each one as an individual reverse engineering design task.

Thanks, Scott.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
Hi Nsaspook,

Thanks, It's good to see other people who have done this before and have some ideas!

I've worked with electronics quite a lot (hobby recently, job years ago), but just not in this area. I think it's a good thing to know your limits and ask questions first to save getting hurt! Made myself sound inexperienced though in my initial question!

I will read your project notes tomorrow, thank you.

Cheers, Scott.
 

nsaspook

Joined Aug 27, 2009
9,993
Hi Nsaspook,

Thanks, It's good to see other people who have done this before and have some ideas!

I've worked with electronics quite a lot (hobby recently, job years ago), but just not in this area. I think it's a good thing to know your limits and ask questions first to save getting hurt! Made myself sound inexperienced though in my initial question!

I will read your project notes tomorrow, thank you.

Cheers, Scott.
First you need a budget in electrical power requirements, time and money for what you want to do with this emulator. What you want is a complicated process that needs a good breakdown of exactly what type of I/O you need for each device an emulator must control. I will tell you up front, it's not going to be cheap to have a general transmitter emulator for this class of devices (aircraft cockpit indicators and displays).
 

strantor

Joined Oct 3, 2010
5,974
First you need a budget in electrical power requirements, time and money for what you want to do with this emulator. What you want is a complicated process that needs a good breakdown of exactly what type of I/O you need for each device an emulator must control. I will tell you up front, it's not going to be cheap to have a general transmitter emulator for this class of devices (aircraft cockpit indicators and displays).
From what I've seen on YouTube, these simulators are not a poor man's hobby. If he's this far along I suspect budget isn't as high on the list of priorities as it normally is with hobby projects.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
First you need a budget in electrical power requirements, time and money for what you want to do with this emulator. What you want is a complicated process that needs a good breakdown of exactly what type of I/O you need for each device an emulator must control. I will tell you up front, it's not going to be cheap to have a general transmitter emulator for this class of devices (aircraft cockpit indicators and displays).
Hi,

Yes, thanks. Over the last 6 years I already have been getting a certain number of indicators working, and have become very familiar with the lack of standardisation across different instrument types in the 60's! So far I have had success with the simple ones:

Outputs:
  • Thermocouple driven EGT gauges.
  • Potentiometer driven ratiometers.
  • Desynn transmitter driven Desynn indicators.
  • 3 phase variable speed engine RPM indicators.
  • Filament lamps such as in the undercarriage indicator.
  • Rheostat driven dimmable filament lamps for illlumination.

Inputs:
  • TACAN and ILS control units.
  • Various buttons switches, and analogue inputs.

Each item of the above lists has it's own interface circuit due to lack of any standardisation.

Now we are into the high voltage AC side of things, I need some pointers, however, of the instruments containing these motors, the motors themselves all work on the same voltages, which is brilliant, as I can build a standard controller which will apply to the:

  • Fuel gauges.
  • Navigation display.
  • Attitude indicator.
  • Indicated Air Speed.
  • Altimeter and rate of climb.

After these motors are sorted, there is one hydraulic pressure indicator driven directly by a synchro transmitter, that will be fun to simulate.

Budget:
This is an on-a-shoestring budget project. I am having to sell off items in order to raise funds as I don't want it to dig into family money. The real aircraft hardware has mainly come from my days volunteering looking after classic jets, spend 20 years doing that and you acquire things on the way. Other kit has has been from swaps, and kindness and generosity of donations by other people that I know in the vintage aviation field. My Veroboard is ancient stock from when a friend's dad's old amateur radio shop closed down in the 80s, so I am re-using and recycling what I can. I have bought some electronic components, but we are talking a handful of Darlington transistor array IC's, some SSR IC's, couple of Arduino boards, etc... not big money.

I suppose as with any hobby, there are those with money and those without. I am firmly in the without camp, however, those seen on youtube that have splashed thousands, and maybe tens of thousands, are a representation of just one area of this hobby, the tip of the iceberg, and may not have the constraints of a family to consider when spending.

Design:
Yes, appreciate this driver can be split into chunks, and that's the way I'd like to go with it as my brain would fry trying to take it all on at once. I imagine it will end up being:

  • REF voltage sensing interface with isolation.
  • Motor speed and direction demand receive from Arduino.
  • Some processing.
  • Isolation to the high voltage push-pull output stage.
  • Push-pull output stage to CONTROL windings.

Many thanks, Scott.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
So does that mean I got it right and they used to get their signals from LVDTs?
Nope, not one LVDT.

There are some Synchro's in some transmitters (such as hydraulic pressure), but some are potentiometer based, some are Desynn based, the exhaust gas temperature is a moving coil gauge driven directly by the mA's generated by the 8 thermocouples around the jet pipe, there is an RTD for outside air temperature, variable capacitance instruments measuring the level of fuel in tanks across two concentric tubes, amplified to drive these motors.... Plus then there are the radio navigation aids, TACAN, ILS, and ADF, and UHF binary codes (Data Link) for controlling information display. All through clever analogue computers manage to drive these motors.

Basically, there is a wide array of measuring devices and interfaces, and a wide array of analogue processing in the middle, to a wide array of instrument interfaces. Some indicators connect directly yo the measuring equipment, sone don't.

Luckily these motors withing some of the indicators are all fairly standard, which is wy I want to build an interface to them so I can use it on many motors.

Cheers, Scott.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
Forgot to mention on the budget front, I'm using a free and open-source simulator package, Flightgear, on a very basic level ~10 year old computer that I inherited when my grandmother passed away, with an old 1GB graphics card that someone kindly donated.

The aircraft model is also GNU, so every development I make to it, I share back to the community.

Cheers, Scott.
 

strantor

Joined Oct 3, 2010
5,974
This sounds like a very cool project and I will enjoy following along whether or not I can be helpful (I will try not to be unhelpful).

How critical is the phase angle of 90 degrees?

Arduino-based function generator examples can be found all over (example) and with a bit of modification I think they could provide your phase-shifted, controlled amplitude signals. Remove the encoder/Potentiometer inputs and in their place add some zero crossing detection from the existing 400Hz to keep the arduino locked on the base frequency and follow it by 90 or 270 degrees (625uS or 1875uS). It will need an amplifier output stage but I think you already know something about that.
 

nsaspook

Joined Aug 27, 2009
9,993
Forgot to mention on the budget front, I'm using a free and open-source simulator package, Flightgear, on a very basic level ~10 year old computer that I inherited when my grandmother passed away, with an old 1GB graphics card that someone kindly donated.

The aircraft model is also GNU, so every development I make to it, I share back to the community.

Cheers, Scott.
Do you have a github or public access site? The complexity of the general device emulator block will depend on the fidelity of the operation. If you want mainly static demo displays that's much easier than a full flown interactive SIM that will cost a lot if you want to program actual flight characteristics into it. Could I build it out to max functionality (Arduino's don't have the horsepower or motor-control hardware for this) , yes but it wouldn't be cheap because time is more precious than money with something like this.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
This sounds like a very cool project and I will enjoy following along whether or not I can be helpful (I will try not to be unhelpful).

How critical is the phase angle of 90 degrees?

Arduino-based function generator examples can be found all over (example) and with a bit of modification I think they could provide your phase-shifted, controlled amplitude signals. Remove the encoder/Potentiometer inputs and in their place add some zero crossing detection from the existing 400Hz to keep the arduino locked on the base frequency and follow it by 90 or 270 degrees (625uS or 1875uS). It will need an amplifier output stage but I think you already know something about that.
Hi, that's really interesting about the frequencies that circuit and code reached while producing a reasonable sine wave, I had previously been under the impression that the Arduino PWM function actually operates near 400Hz so couldn't be used to generate a nice sine wave of 400Hz, however, this article the designer has been right into the registers and found a way... so maybe it's the default PWM library that has the limitation... oooh this sounds promising.

I'm notr so sure about how critical the 90 degree phase difference is, having not tried this before, I guess I can experiemetn when I have it working.

The zero crossing circuit is also perfect for use, thank you.
 

Thread Starter

scottbouch

Joined Jun 27, 2022
9
Do you have a github or public access site? The complexity of the general device emulator block will depend on the fidelity of the operation. If you want mainly static demo displays that's much easier than a full flown interactive SIM that will cost a lot if you want to program actual flight characteristics into it. Could I build it out to max functionality (Arduino's don't have the horsepower or motor-control hardware for this) , yes but it wouldn't be cheap because time is more precious than money with something like this.
This is the core simulator which does all the flight dynamics, scenery etc..:
https://www.flightgear.org/

The aircraft I'm developing is the EE Lightning, and will be available here on the next release, we are using a private gitlab account to do the dev work:
https://sites.google.com/view/fgukhangar/flightgear-uk-home-page/hangar

The aircraft model does all the aircraft specific systems work, so the Arduino baords are only used as I/O devices, communicating by serial over USB to the PC.

But in this instance of motor control I will build a dedicated external Arduino powered solution to read the position of the pointer/card from the synchro, and perform motor control to keep it aligned with demand sent from the master Arduino board.

My hardware project is somewhat documented here on this rough work in progress: https://scottbouch.com/mcfs/lightningt5t55/index.htm

Cheers, Scott
 

strantor

Joined Oct 3, 2010
5,974
Do you have a github or public access site? The complexity of the general device emulator block will depend on the fidelity of the operation. If you want mainly static demo displays that's much easier than a full flown interactive SIM that will cost a lot if you want to program actual flight characteristics into it. Could I build it out to max functionality (Arduino's don't have the horsepower or motor-control hardware for this) , yes but it wouldn't be cheap because time is more precious than money with something like this.
Hi, that's really interesting about the frequencies that circuit and code reached while producing a reasonable sine wave, I had previously been under the impression that the Arduino PWM function actually operates near 400Hz so couldn't be used to generate a nice sine wave of 400Hz, however, this article the designer has been right into the registers and found a way... so maybe it's the default PWM library that has the limitation... oooh this sounds promising.

I'm notr so sure about how critical the 90 degree phase difference is, having not tried this before, I guess I can experiemetn when I have it working.

The zero crossing circuit is also perfect for use, thank you.
Yeah the arduino PWM library is meant for tinkering around with hobby servos and isn't great for much else. But this circuit doesn't use any PWM. it's using multiple digital outputs like an adder, so you get an actual analog output rather than a PWM'd approximation of one, and it can be much faster. He basically turned the arduino into a programmable DAC.
 

nsaspook

Joined Aug 27, 2009
9,993
Finally received my surplus 400Hz two-phase servo motor so I could include some motor driver code for the PIC32MK inverter board. The board can generate 1 REF phase and 3 separate control phases for the control of three small servo motor like below.
https://www.surplussales.com/motors/Motors-400Hz.html

(MOT) 5101-18
Sunbeam control motor with hardware. 6200 rpm, 115v / 180v, 2 phase, 400 Hz, 0.60 oz. in. torque. 1.065"D x 1.76"L body. 0.123"D spline shaft. Circa 1969. NSN bags, desicant, A-OK. NSN: 6105-820-8757.
https://www.eeeguide.com/two-phase-ac-servo-motor/
For a low-power (a few hundred watts) control application, a balanced Two phase AC Servo Motor is ideally suited as it can be driven by means of a relatively rugged (drift-free) ac amplifier. The motor torque can be easily controlled by varying the magnitude of the ac voltage applied to the control phase (phase a) of the motor as shown in Fig. 10.28. While the second phase called the reference phase (phase m) is excited at a fixed-voltage synchronous ac voltage (both the voltages must be drawn from the same source). The control phase voltage is shifted in phase by 90° from the reference phase voltage by means of phase-shifting networks included in voltage amplification stages of the amplifier. The motor torque gets reversed by phase reversal of the control phase voltage.
PXL_20220711_163915247.jpgPXL_20220711_163904283.jpg

A simple wave generation test code C fragment. The full implementation would include MODBUS registers for complete control of the slave board from a MODBUS master.
C:
/*
 * PWM waveform generation interrupt routine, timer #2
 */
void wave_gen(uint32_t status, uintptr_t context)
{
    static int16_t rev = 0;

    DEBUGB0_Set();
    if (V.pwm_stop && V.pwm_update) {
        return;
    }

    V.pwm_update = true;

    V.TimeUsed = (uint32_t) _CP0_GET_COUNT() - V.StartTime;
    _CP0_SET_COUNT(DMT_PWM_TIME); // Set Core Timer count
    V.StartTime = (uint32_t) _CP0_GET_COUNT();

    /*
     * load sinewave constants from three-phase 360 values per cycle lookup tables
     * for two-phase power generation
     */
    phase_duty(&m35_1, m35_1.current + m35_1.current_offset, V.m_speed, 2);
    phase_duty(&m35_2, m35_4.current + m35_2.current_offset, V.m_speed, 2);
    phase_duty(&m35_3, m35_4.current + m35_3.current_offset, V.m_speed, 2);
    phase_duty(&m35_4, m35_4.current + m35_4.current_offset, V.m_speed, 2);
    /*
     * generate a current error drive signal
     */
    m35_4.current = MPCURRENT + POS3CNT;
    //    m35_4.current = MPCURRENT;
    /*
     * limit motor drive current
     */
    if (m35_4.current > inverter_volts) {
        m35_4.current = inverter_volts;
        POS3CNT = inverter_volts - MPCURRENT;
    }
    if (m35_4.current < 0) {
        m35_4.current = 0;
        POS3CNT = (-MPCURRENT);
    }
    m35_4.current_prev = m35_4.current;

    /*
     * set channel duty cycle for phase-shifted sinewave outputs at ISR time 1ms intervals
     */

    MCPWM_ChannelPrimaryDutySet(MCPWM_CH_1, m35_1.duty); // 2P servo reference phase
    if (++rev > 0) {
        MCPWM_ChannelPrimaryDutySet(MCPWM_CH_3, m35_2.duty); // 2P servo control phase #1 -90
        MCPWM_ChannelPrimaryDutySet(MCPWM_CH_2, m35_3.duty); // 2P servo control phase #2 +90
        m35_2.clockwise = true;
    } else {
        MCPWM_ChannelPrimaryDutySet(MCPWM_CH_2, m35_2.duty); // 2P servo control phase #1 +90
        MCPWM_ChannelPrimaryDutySet(MCPWM_CH_3, m35_3.duty); // 2P servo control phase #2 -90
        m35_2.clockwise = false;
    }
    MCPWM_ChannelPrimaryDutySet(MCPWM_CH_4, m35_4.duty); // 2P servo control phase #3
    V.pwm_update = false;
    DEBUGB0_Clear();
}
 
Top