Ergometer generator

This is an ergometer with a useful load. Most ergometers have a dump load (electrical or mechanical). Which is what I didn’t like…

I started the design at the end: the generator, which was the area with the most technical challenges.


The thing closest to a generator I had in the junk stack, was a universal motor, from a disassembled washing machine. These will work as DC generators. In its previous life, the motor had been wired as a series-wound DC motor. Luckily, the rotor (armature) and stator (field) wires are all accessible through 5 wires.

Typical connections of washing machine universal motor. Source: link

Two wires are for the rotor. They connect to the carbon brushes and will carry the DC output current.

Three wires are for the stator. They carry the field current. In the washing machine, for low speed operation the ‘many stator turns’ option was used, for high speed operation the ‘few stator turns’ option. There is a tap at roughly 1/3 of the stator turns. You can find out the wiring by measuring the resistance, though the resistance is quite low (of the order of a few Ohm).

Two wires are for the tachometer, which I am not using yet. I am planning to add an output current sensor and use an Arduino to calculate the average output power. I might add an RPM measurement in the future.

For use as a generator, I chose the highest-resistance path through the stator, which means the most turns of wire. This results in maximum magnetic field strength for the applied excitation current, so it reduces power loss in that area.


There needs to be a current in the stator to excite the generator. You can simply apply a DC voltage to the stator (field winding). A field current of the order of a few hundred milliamp is needed to run it as a generator. Be careful, it is a line-voltage motor, so can generate line-voltages of enough current to electrocute!
But my intention was to build a self-exciting generator to charge a 12V battery.

There is some residual magnetism in the iron, and in principle this allows the generator to self-excite. When the rotor rotates in the (very weak) residual magnetic field, it generates a (very small) voltage. If the rotor is connected to the stator, a current will flow, which increases the magnetic field strength, which increases the current, etcetera.

It was no option to connect the motor as a series-wound generator, because this will not self-excite without enough load. Because the generator will charge a battery through a diode, it will have an open-circuit load when output voltage is too low, so it can never self-excite. This was not the way to go.

Source: link

The other option was to connect it as a shunt-wound generator. The main issue is that the field windings have very low resistance (1 – 2 Ohm) in this motor, so they act almost as a short-circuit to the rotor. I tried operating it like this, but when speed goes high enough, the power consumption of the stator is so high that it blocks the rotor. That way, all power is consumed in the stator and no power remains for the useful load.

Source: link

I tried connecting the stator to the rotor through a resistance. It is called Rfc in below picture. (Ra just is the internal resistance of the armature.)

Source: link

A 10 Ohm resistance worked well. Higher, and there was no self-excitation. Lower, and it loaded down the generator too much. This allowed generating power and charging a battery through a diode. The diode is important, because the motor, well, is a motor and it will happily do its job and drain the battery. The issue was that the output voltage of 12 – 14 V (this is set by the battery) caused more than 10 Watt of power dissipation in the resistors. The total power rating of the resistors was 10 Watt, but still it started smelling bad. And it is waste of power, of course, because the actual excitation power required is less than 1 A through 2 Ohm, that is, less than 2 Watt.

Excitation controller

In the end I decided to build a generator-powered generator controller. It should do two things: limit the output voltage and limit the stator current.

Output voltage limiting is to prevent overcharging the battery, and to keep things safe.

Stator current limiting is to allow adjusting the ergometer load. Otherwise the controller would just try to charge the battery at the set voltage (13.8 V) and apply whatever field current needed to reach that voltage. With an empty battery (very low internal resistance), this would block the rotor, the voltage would drop and the controller would unpower itself.

I took this example ( of an AVR as a starting point and designed my own version. You can download my circuit design here:

It works like this:

  1. Start up
    The positive output of the rotor powers the VDD net. This net has some big capacitors (C2, C9, C12). I did not look in detail to the noise on this net, but it seemed a good idea to add some filtering, because this net supplies power to a switching mode controller (more details below).
    The rotor (armature) is shunt-connected to the stator by relay (K1). This is done through a 10 Ohm resistance (R14, R15), to allow self-excitation of the generator, while still building a voltage.
    The VDD net powers the +12V net (voltage is not precisely controlled) through a diode (D2). When the +12V net rises, an LED (D6) is lit, the +10V net rises, and a voltage regulator (U3) powers the relay (K1). The relay disconnects the shunt resistors and the controller is allowed to take over.
    The +10V net is controlled by a shunt regulator (D5).
  2. Current limiting
    The stator current is measured by a current sense amplifier (U1). When the current is lower than the threshold set by the potentiometer connected to J3, the comparator (U2B) floats its open collector output. A resistor (R9) pulls up the comparator output and the push-pull gate driver (Q1, Q2) switches the MOSFET (Q3) on. The push-pull driver is isolated from the +10V net by a low pass filter (R12, C5), to reduce noise reaching the comparator. The MOSFET gate has a small series resistor (R13) to prevent ringing.
    When the MOSFET is on, the stator coil is connected to VDD and the current will rise until the current rises above the threshold plus hysteresis set by R5.
    When the current exceeds the threshold, the comparator (U2B) pulls its output down and the MOSFET switches off. The stator coil current then ‘freewheels’ through the Schottky diodes (D3, D8) until the current falls below the threshold minus hysteresis set by R5.
    A small capacitor (C10) adds positive feedback to provide fast comparator switching.
  3. Voltage limiting
    The generator output current flows through high-current Schottky diodes (D1, D7) to the battery. When the battery is full, or no load is connected, the output voltage rises. The battery voltage is measured by a voltage divider (R2, R3).
    To prevent draining the battery when not generating power, I planned to connect the bottom leg of the voltage divider to a MOSFET (Q4). But I did not trust this solution, because the battery voltage would be applied to the negative input of the unpowered comparator (U2A). So I connected the upper side of the voltage divider to VDD and corrected the setting for the diode drop.
    When the output voltage exceeds the threshold set by the trimmer (RV1), the comparator (U2A) pulls its output down and the MOSFET switches off. The stator coil current then ‘freewheels’ until the output voltage falls below the threshold minus hysteresis set by R6.
    A small capacitor (C11) adds positive feedback to provide fast comparator switching.

To summarize, it is a switching mode stator current controller that has two constraints: the coil current and the output voltage.

The finished controller.
PCB bottom left: MOSFET, gate driver, comparator.
PCB top left: trimmer for setting output voltage limit, voltage regulator, power LED.
PCB top right: filter capacitors, voltage regulator, relay.
PCB bottom right: startup resistors, Schottky diodes (1 freewheeling, 1 output).

The ergometer

I built an ergometer with horizontal flywheel, like Philip Borg built (great source of information: It consists of multiplex, screws, glue, bike wheel, nylon rope, elastic rope, nuts, threaded rod, pieces of sheet steel, bearings and some 3D-printed pulleys.

An early version with polypropylene rope (breaks because it is not nearly as abrasion resistant as nylon), without a good handle bar, without moving seat. But it generates power.

More to come…


Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.



The comet NEOWISE. There was a lot of light pollution.