Brushless DC Motor Pool Pump Controller

This page documents my efforts to learn about a new pump that I bought for my swimming pool. It is an "eco" pump, meaning it is powered by a permanent magnet DC motor with a variable speed drive. As I understand it, the AC mains is rectified to DC, then push-pull FET switches are used to reconstruct the phased waveforms necessary to drive each winding of the motor.

When shopping around for my purchase, from what I could see, virtually every "eco" pool pump in the Australian market uses a motor and controller of a similar type, from the same manufacturer. I'm guessing that the only significant difference between brands is the "wet end", or pump, that is bolted onto the motor. The connection between the pump and motor is typically a NEMA standard face plate.

The first thing I did was have a look inside the unit. Behind the control panel is a control circuit board. From this board, a set of 4 wires runs down into the motor casing. From my reading, the motor casing is largely empty space, the actual motor being more or less like a pancake. Presumably the casing is made to look about the same size as an induction motor so customers don't feel to alienated by a small motor. The axial-flux DC motor is apparently a derivative of research into solar powered cars by Charles Darwin University in the early 90's [ref]. It was commercialized as a company called In Motion Technologies, which was purchased by Fasco Australia in 2006. Fasco then put it into production as the ImPower motor. As well as the motor, I'd assume the housing contains a second PCB, containing as rectifier, FET switches and microprocessor to reconstruct the waveforms for each motor phase.

User Interface PCB

Looking at the control PCB, I reverse engineered it to yield the schematic of figure 1. Since I had no access to any manufacturer's information, this circuit is not guaranteed to correspond to the circuit on the PCB. In particular, I don't recommend trying to build the circuit in case it is wrong.

Figure 1: Reverse engineered schematic for the pool pump controller board

How it works

The power supply circuit is a standard linear power supply. It's output voltage is +5 V, with a current limit of 150 mA

At the heart of the control circuit is a 16F677 PIC processor, from Microchip. All the peripherals hang off this processor in a star topology.

The power and error LEDs are driven by a couple of digital outputs on the microprocessor, via resistors to limit the current though the LEDs. The power LED has an option to wire it directly to the +5V supply. The necessary zero ohm resistor (R10) was not installed on my unit, meaning the power LED is controlled by the PIC.

Further output is provided by a set of 9 LED's. These are wired matrix style, to allowing them to be controlled with only 6 of the PIC's I/O pins. Only three of the LEDs were installed on my unit, corresponding the the ECO, CLEAN and BOOST LEDs next to each speed control button.

Three pins drive the interface to the motor. Given that the circuit is not the same for each output, it looks as if these are not pulse-width modulated three phase signals. Rather, I'd judge that that these signals form a bidirectional serial bus to a second PCB inside the motor casing, the second PCB being responsible for the real-time motor control and monitoring. I haven't measured it, but perhaps the 4 pins of the plug are: clock, data in, data out and a ground return. The purple line is most likely to be the clock, R1 and C5 acting to keep the clock line stable during microprocessor boot, whilst pin 6 is still high impedance, thus preventing false clocking.

Pins 17 and 7 might be a serial bus, consisting of rx, tx and ground return lines. It would be interesting to connect a terminal to these pins and see what happens.

The pool pump is controlled by 4 push buttons: STOP, ECO, CLEAN and BOOST. These 4 buttons are each connected to an input pin on the PIC. With the exception of pin 4, the PIC has internal pullup resistors on the input pins, so the circuit has an external pullup resistor (R6) on pin 4. Each push buttons acts to pull its corresponding microprocessor inputs down, via a 1.8 kohm resistor, when depressed. A connector (P3) is provided to allow an external system to control the motor, by connecting each pin to ground.

The in-system programming interface, by which the memory of the PIC can be accessed, uses the same pins as the push button inputs. A connector (P2) is provided to allow a programmer to be plugged in. During programming, +12 V must be applied to pin 4 of the PIC. Diode D10 acts to stop the +12V from forcing current back into the +5V supply, and C4 provides some bypassing for the +12V supply. Clock and data signals are then applied to pins 18 and 19 respectively.

That is the entire control circuit. It would be interesting to measure the signals on the bus to the motor and the "serial" bus. It would also be interesting to connect a programmer to see what is going on inside the PIC, but that carries the danger of erasing the PIC's programming.

Motor Wiring

Figure 2: Reverse engineered wiring for the pool pumps

The wiring or the pool pump is shown in figure 2. Mains power is from a three pin plug terminated on three terminals of a 6-way terminal block. Active and neutral are then filtered, to reduce the electrical noise injected into the mains by the motor. The filtered active and neutral are used to power pins P5 and P6 of the interface PCB, described above, and a circuit which produces phased currents for the motor. The interface PCB is at the top left-hand corner of the schematic. The PCB that produces the phased currents was not directly observed, as it is inside the casing of the motor. Its presence was inferred from a bundle of cables thst disappears into the motor, containing a mains supply, signals from plug P4 of the user interface PCB and three heavy duty cables, which appear to be phased signals to the motor. The three phases are teminated on the terminal block, from where they run back into the motor casing, presumably to the motor windings.

All the schematics on this page have been captured using gEDA.

Last Updated 28th May 2014