Tuesday, 29 September 2020

Electronics design project - Bicycle Dynamo and battery charging manager

Changed; 01-03-2021, 02-03-2021 

This electronics design exercise is an addendum to Bicycle-hub-dynamo-maintenance-project  To optimise the power taken from the dynamo in order to run bicycle lighting and battery charging.  Including USB charger output or charging input, data outputs, controls and settings.  These additional features require the development of a phone, tablet and desktop computer user interface applications.

1970's Eveready front light, Pifco rear light, unknown age Eveready rear light. The Eveready lamps are fitted 

with 2.7V 420mA bulbs that could be wired in series and run from the dynamo. The Pifco lamp's bulb is 

2.5V 300mA so this lamp could not be used with the dynamo without expecting bulbs to fail occasionally.  

  Eveready lamps are clean and corrosion-free inside so wires could be soldered to the brass contacts.  

The switches wired to short the lamp out in case a bulb fails so that the other lamp will operate.  

Plan for a bicycle dynamo lights and battery manager

Microcontroller based bicycle dynamo light and battery manager with a speedometer.  Design idea and exercise with STM32 microcontroller.   With interface by USB cable to a tablet or any computer.

The dynamo (such as a Sturmey-Archer GH6, made 1944-1983) is rated at 6V 1.8W, will output up to 20V when the bike is ridden fast I understand.  If we assume the dynamo will deliver 300mA then the output power is 7W.  In order to get the maximum power from the dynamo, the current taken needs to be limited so that voltage does not drop soverely.

I also understand that modern bicycle hub-generators work from 2 MPH, produce up to 30V out and are rated 3W at 6V (0.5A).  That is 15W so you may count on up to 10W.  The firmware should include calibration of the many voltages such as a mechanism of zeroing when there is no current flowing but also quantifying the generator's maximum power transfer (the setting of maximum current of the particular generator connected) and storing these calibration constants.

  • Manage two cell NiMH battery charging using a coulomb counting method.  Other variants for lithium fe PO cell.  Therefore it is best not to remove the battery's in order to maintain the battery state of charge and capacity.  Therefore use the USB port charging input or  can provide surplus power output.
  • On PCB bootloader switch for fast programming via USB port plus software debug connector.
  • Software functions;
    • Switches to set Dynamo output power or USB battery changing power input.
    • Switch to turn the lights off/on/flashing. 
    • Battery charge status LED. 
    • USB connected status LED.

Tilt sensor used to reduce the power taken from the dynamo using parameters set by the cyclist such as from a USB connected tablet computer.

LED lighting is much brighter than incandescent lights, such as pictured.  These lights do work in the dark if placed low down to light the curb.  One should be placed high so the cyclist can be seen.  Red rear lamps are difficult to attach to the rear rack if you have panniers.

Software note;
LED dimming or intensity programming be handled using a PWM at about 100Hz.

Proposed dynamo power input diagram

Could be based on an industrial motor control system similar to that found in factories but also used to manage power from a wind turbine.  In this case without a power dump of excess power from slowing machine motors generating power.  This circuit requires 12V peak to start so the bike needs to be moving at a good speed initially;

AL-0036-01F (02) Power diagram based on motor control to operate at low-frequency boost 

switch-mode using the inductance of the motor.  The dynamo voltage needs to be quite high 

for the power supplies to start up.  Most function blocks and parts are not shown and part 

values are not correct.  Expect the dynamo to whistle when running in the same way that 

the inverters and motors in a modern electric trains whistle. 

A dynamo power management based on an industrial motor control system but scaled-down looks promising but a solution based on standard IC type power supplies will probably be cheaper. The circuit will only work when the dynamo's output peak voltage is > 8V (about 6Vrms) for IC to start up. The input boost section from the dynamo should be very efficient. This solution is software-driven. Note the additional 0V screen wire connection to the Dyno-hub to minimise electrical emissions.  

It turns out that the dynamo's inductance is almost certainly too high for this configuration to output any significant power when the voltage is boosted.  That is because the period of the chopping oscillator needs to be a few seconds in order to reach full current but the period of the AC output is much shorter (<<100mS) consequently the current output would be very low.

The Generator model is not simple - The series inductance is so high but the open-circuit voltage not so high, that very little power should transfer.  Alternatively, this is an incorrect the generator model is something like a very high voltage source clamped? 

Generator model is not so straightforward - a modern motor drive and permanent magnet motor/generator the motor is usually wound for lower voltage high current.   Consequently, there is always a high input voltage that is reduced by switching drive.  When generating the low voltage output is boosted with the switching drive but the apparent high inductance in the dynamo does not arise because the motor's inductance is low.

A GH6 dynamo has 5 ohms series resistance consequently at 6V, 300mA output the generated would be 7.5V = 6V + (5R * 300mA), no load.  The peak voltage no load be 10.5V = 1.4 * 7.5V, at rated minimum cycling speed ??.   For maximum power transfer the maximum current drawn is up to 300mA and the load presented be >5R.

The above diagram changed to a dual-phase boost converter AL-0036-03A (3) operating in PWM mode. 
 This gives a low input/output noise and ripple current.  Is less efficient under lightly load conditions.  
The one generator phase is connected to 0V when the other phase is connected to the boost switch 
mode power supply.   At startup all drivers are switched off and the substrate diodes act as input 
rectifier providing start-up power.  The component values are not correct or complete and for example,
 the dual half-bridge driver L6205 is suggested.

Comparison of motor drive or gate drive ICs;

  • L6201  ST 1-4A Motor drive bridge driver - 12V minimum, Operates up to 100KHz.
  • L6205, L6206, L6207  ST 8-52V (8-52V) 100KHz 2.8A dual bridge motor driver with various protection and current control options. These operate down to DC due to the Vboost charge pump.
  • L6225, L6226, L6227  ST 8-52V (7-52V) 100KHz 1.4A dual bridge motor driver with various protection and current control options. These operate down to DC due to the Vboost charge pump.
  • TLE9201SG Infineon 6A half-bridge motor driver - only operates to 20KHz, 8 - 28V.
  • L99MOD51XP, L99MOD54XP ST motor drive 3x half-bridge drivers 6A, 7-28V. 
  • BTN8962TA Infineon Half-Bridge motor driver - 30A, 8-18V or 5.5V-40V derated.  Maximum frequency unknown and is oversized.
  • DGD05463 Diodes Ltd. ISL6208, ISL6208B Renesas - Gate driver and discrete transistors. No significant frequency limit (500KHz) but requires more parts and is an expensive option. 

For Vbatt (1.8V - 3.5V) to 5V bidirectional - TC78H653FTG Toshiba dual half-bridge up to 2A, 1.8V - 7.5V, 500KHz.  Provides the option for a better power path with shortest paths to and from the battery.  Unfortunately, the IC can not be configured as simple half or full bridge drivers but only as a motor driver or use just use two of the four drivers. 


Improved dynamo input power supply;

A motor drive solution based on L6205 IC is promising but will not be pursued further but a boost input is drafted below in AL-0002-xxx which are simpler in software to implement.  They also start-up and run at a lower bike speed.  Changing the design above making the bridge motor driver a synchronous rectifier is considered but a suitably wide voltage range single part was not found but using many part solution is possible using gate drivers and transistors.

Simplified power diagram AL-0038-01E.  This design features no large step-up or step-down 

voltages.  The micro-controller is powered directly from two rechargeable NiMh cells.  The 

rectified dynamo output ripple is transferred to the LEDs.

The dynamo current control software is likely to be difficult with a switch-mode power supply IC such as AL-0002-01 which based on the above idea?  Versions -02 or higher which use a PWM boost supply should be a lot more straight forward.


The low voltage drop rectifier is not implemented or only implemented on the low side. It could be implemented using two TAE1993TS or TAE1999TS synchronous rectifier controller for the low side. For the high side, a cross-coupled, bistable-multivibrator using p-channel MOSFETs with gate protection would switch on alternately. This feature would save 200mW compared using a Schottky diode bridge rectifier and is not worth implementing.

Also, see; AL-0034-01A - dynamo battery lights manager Synchronous rectifier controller. Dual three-input OR gates would drive the power transistors from PWM, Over Voltage and this circuit.  Design output files A discrete solution like this is not better than the IC synchronous rectifier controller with high side drivers solution but may be cheaper in high volume.


LM5176-q1 may be a good choice for buck-boost regulator the compensation pin can be overdriven to reduce the current take to optimum for the dynamo.  Alternatively, a PFC controller ucc29910 be used as a buck regulator rather than a boost regulator.

Optimum power transfer;

Software and electronics combined diagram with a mixture of flow diagram symbols, electronic symbols and wires. The RC average is a simplification to show function but it is not correct but a sliding average of half or one cycle should be used. There are other signals that are not shown such as Pgood signal low can be used to indicate whether the main regulator is limiting due to high dynamo current. The loop gain due to the amplifiers as a guide should be < 50, that is a 2% change in any signal should result in less than 100% change in the output voltage.

Maximum power transfer strategy diagram AL-0036-02D(03)
Potentiometers set the maximum dynamo current and the output voltage limit, for battery charging. 

The dynamo maximum current potentiometer should only be increased when the main power 

supply is limiting by that control in order to prevent set-point from running away. Similarly, the 

voltage output control is only effective when the power supply is limited by that control.  The 

potentiometers represent controls from other software functions.

Instantaneous current = instantaneous dynamo voltage / peak averaged dynamo voltage

Calibration at the maximum power output; 

  • At a steady speed test by increasing the current taken to see if the power increase or decreases - then adjust the maximum power accordingly.
  • The test can be carried out under varying speed conditions by testing using power x frequency.
  • A dummy load may need to be added to to the circuits below if overcharging the battery needs to be avoided alternatively to keep the calibration strategy simple under variable speed and loading conditions. 
  • Normal operation does not require that best power factor be achieved but only that too much current not be drawn from the dynamo.  Consequently better voltage regulation can be achieved than would normally occur with a PFC pre-regulator.  Alternatively tighter over voltage limiting is provided.
I have drawn this diagram last because I can see more clearly how I ca show in a diagram what I am aiming for looking at the circuit diagrams I have developed.   Consequently, the diagram is clear than my earlier abandoned attempts but also more closely fits with the circuits variants below.  It is also part of cross checking those circuits AL-0002-???

Next step - build test rigs and test some of the functions

http://minisystem.blogspot.com/2011/11/ has carried out some of these tests with dynamo LEDs and discovered that the dynamo will produce at least 5V peak operating down to 12KPH the current is low though because much of the output will be under 5V. The circuit above and circuits AL-0002-01? should operate down to <3V and <10KPH although with very poor efficiency.

The graph right does not belong to me, so I have asked if I can use it? The green line is relevant so disregard the blue line.   I have cropped the graph.

The current was presumably measured in series with the 5V drop LED so increases as on-to-off duty cycle increase with the higher voltage generated by the dynamo.

Buck-boost configuration https://www.ijedr.org/papers/IJEDRCP1401022.pdf

An efficient solution is likely to be to use a buck-boost configuration has not been pursued but these parts have been considered A  half-bridge bidirectional 5V to Vbatt 1.8V to  3.5V but the function blocks are likely to be more costly and turn out not be so efficient.  Here are some buck-boost controllers; LM5174, TI, LTC3779 ADI, MAX20048 Maxim.

Summary of full circuit and refinements;

The diagrams below are mostly worked through but for a software assessment of there viability.  Thereby allowing the crystal oscillator, where used, to have 0V screen pins rather than using the port pins next to the crystal oscillator pins.  Note alternatively each PCB could be calibrated for temperature change using the on-chip temperature sensor, oscillator and microcontroller's oscillator trimming registers. 

Above some basic functions are provided but full control requires a tablet computer be connected in order to access other settings.  The unit would be enhanced if those settings were included without requiring the tablet particularly to improve the systems water resistance.

Smiths BL/BMC (1960s-1970s) Mini speedometer, 

odometer, fuel gauge with other indicator lights 

Than you for photo https://www.digital-speedos.co.uk/

  • Tilt control potentiometer or up-down buttons with graphical representation on an LCD display - the inclination of the unit and therefore the bike where the maximum power is taken from the dynamo. 
    • When the battery charge is very low the inclination control will be over-ridden and the battery charged to a varying degree.   Otherwise, the battery is charged at the maximum rate and if power is available a USB device can be charged or powered as well.
    • Override buttons to boost or minimise the power taken from the dynamo.
    • Button and LED to indicate using learnt mode where the computer has adapted the strategy to the pattern of user use.
    • Alternatively, learn mode as proposed next;
  • Software proposed functions;
    • Switch Dynamo power;
      • ON 1 Minimum dynamo power and minimal charging current.
      • OFF 2 Managed dynamo power for lights, managed battery charging and surplus for USB.
      • ON 3 Maximum dynamo power with the surplus to USB (out). 
    • Switch to turn on USB charging/Learn/Set 
      • ON 1 USB (in) to provide charging current.
      • OFF 2 USB (not in), Learn dynamo use strategy.
      • ON 3 USB (not in), Use learnt dynamo use strategy.
    • Switch to turn the lights on. 
      • Lights off
      • Lights on
      • Lights high or flashing.
    • Red/Yellow/Green - battery charge status LED.   
      • Steady indicates charging or dynamo power,
      • Flashing indicates discharging.
      • Cycling Red - Yellow - Green; Fault USB and dynamo charging or battery.
    • Blue - USB connected status LED.
      • Steady indicates charging and connected,
      • Flashing indicates connected.
  • Speedometer and odometer LCD display.
Display types;
  • LCD Transflective, 25x50mm (128x64 dots),  LED backlight 60mA 3.2V (switched off in good daylight), 64128K Display Tech systems.
  • OLED 55x27mm (128x64 dots),   20mA 13V,  I2C bus, W12864XA Electronic Assemblies. 
  • EPD 27.5x27.5mm (152x152), 2mA 3V, I2C bus, MT-DEPG0154BNS800F5 Microtips technology - no illumination.
  • 2x Seven segment LED displays plus bar graph and LEDs <100mA 2V.
  • Alternatively, a needle and scale type traditional moving coil meter could be used.  Fitted with a shunt resistor or large capacitor to damp the movement would only require 50-500uW (10uW for the movement). Air damper types are more robust. These are not robust but the type in the car fuel gauge, above, is a hot wire type they are robust but they consume too much power.

  • The circuits are  AL-0041-01B. 
  1. Simple a series resistor with the meter from PWM output to VDD - the PWM will need to be set according to speed and measure VDD. - this should work with lithium option best because VDD is well regulated and with no fluctuation. 
  2. A shunt resistor or 
  3. a capacitor across the meter may be required if the meter is not damped.  A damped meter is not costly if it is simply an eddy current damping but air damping maybe be necessary to deal with road vibration depending on the bike frame type.   Guess R = Meter resistance / 5.
  4. Adding a regulator REF2912 - will avoid the VDD fluctuations affecting the stability of the needle but the PWM transistor's on-resistance which changes with temperature and VDD would significantly effect accuracy.
  5. Using a fast enable regulator driven from the PWM LM4121-1.2 - this is a more expensive option and is a good solution.  Unlike the first two options, the PWM transistor's on-resistance and VDD would not significantly affect accuracy.  This is a more expensive option.
  6. Using a current regulator REF200 driven in series with PWM and from the higher such as voltage 3-5V - this is the most expensive solution but not better than the previous option. Unlike the first options, the PWM transistor's on-resistance and VDD would not significantly affect accuracy.
The switches selected are three positions on off on and they are tested by 
  • Turn on pull-up and testing the port pin for a low state. 
  • Turn on pull-down and testing for pin high state. 
  • If neither of those then the switch is in the open state. But if the microcontrollers port pin can not be configured with pull-down on the port output low drive be used instead.
  • The LEDs be driven from a high drive. The blue LEDs from open drain configured port.
STM32 Cube MX software project files; 
  • Some of the meter drivers above require that the PWM be output from a high drive open-drain port but the project files do not seem to allow this to be done?
  • Options requiring a high current open-drain port; 4 and 6.
  • Options requiring the output port be set high drive; all except for 5.

The variants of the detailed circuits to choose between

It took a long time to find these parts for what I wanted to do originally and the solution based on power supply ICs is good and was found more quickly.  Most of the ICs can not be configured as simple drivers instead of motor drivers.


The final design is likely to be based on a high frequency, inaudible, input boost power rail but using a bridge Power factor correction and power supplies will do the job well.  The dynamo's output could be boosted to 7W when cycling fast.   But the non-boost variant similar to AL-0002-01? would work well although testing needs to be carried out before a final decision is made. Alternatively, more than one of the variants should be priced and could be made.

Picture right Sturmey-Archer, AG - 3-speed dyno-hub, dated July 1953;  3-speed wide variable gear hub and 6V, 2W generator.  40 spoke.
Anticipated behaviour based on a voltage limited current source in series with a 5 ohm resistance, but discounting the 5.5H inductance in the case of a GH6 type dynamo. Test should also be carried out by the unit to characterise the dynamo fitted.  USB power input be considered and battery power be used, the over voltage clamp (version -02? to -05?) could be used. Therefore monitor the frequency, light or no load measure voltage and short out the dynamo to measure the maximum current. 
Software implications;
AL-0002-01? operates by drawing current when the dynamo voltage is above the output voltage and consequently the current taken waveform is more complex. The important thing is that the current taken must always be below the maximum for maximum power transfer.  Periodic software managed calibration may be more difficult to carry out consequently.

Whereas all the other variants -02 to -05 the current take is a constant sinewave matching the voltage waveform.

Design files for all variants;

  • AL-0039-01E Op-amp Ibatt resistor and LED PSU resistor networks.ods spreadsheets.
  • AL-0040-01B  Dynamo Battery Manager - Microcontroller select - Software.odt  --- Updated document to follow.
  • List of files; There is a spreadsheet list of files.


The decoupling strategy is to place 100nF ceramic decoupling capacitor's close the each IC power pins, internal power planes for the microcontroller VDD.  I/O has 1 - 10nF COG/NPO capacitor's near the connector pins.  There is an 0V power plane provides screening for good EMC performance.


There are no thermal reliefs in the power and thermal planes. This also provides better electrical conductivity.

The part libraries are to an old standard that changed more than 25 years ago so many footprints should have the index in the centre but CADSTAR libraries have many parts with the index at pin 1. It is necessary to fix this before using the footprint or creating a footing. PCB assemblers can correct small discrepancies they have too but they can not correct for this error necessarily.

--- AL-0002-01 Basic bicycle dynamo battery and lights manager - Draft ---

  • AL-0002-01L Circuit and PCB's - draft.  The design should fit in under 100 x 100mm.
  • AL-0033-01F.ioc Micro-controller selector and configuration project file draft. ---
  • STM32L072C - 48 pin one test point but no spare pins.
The type moving coil of meter pictured right is clear to see 
100-0-100uA, centre zero type is not suitable as a speed-o-meter.

Advantages and Disadvantages of this design; 
  • The input capacitor is not large and could be reduced in value the voltage varies with dynamo AC ripple thereby allowing dynamo current to match the AC dynamo voltage and thereby transfer power fairly optimally.  
  • A large capacitor is fitted to VCC, the main power.  There is also an output isolating transistor from the battery to prevent the battery from carrying ripple current.
    • In software modulate the LED and USB output currents at 2x Dynamo output frequency.  LEDs to continue illumination at 70%-50% current during the low voltage part of the dynamos AC output cycle.  
    • The LED flicker may not be very noticeable.   The main power supply will run from 5V boost when the dynamo voltage is low.   The battery will provide power when the dynamo speed is very low thereby could not provide enough power and so thereby avoid flicker frequency's that are a health issue.
  • This is a simpler, efficient solution with basic functions.
  • This does not have a boost supply rail and so the operating range is not so wide and perhaps more suitable for a newer dynamo but is good for an old dynamo.
    • The LEDs power is therefore run at below the uC + Battery VDD using buck-boost current power supplies.
  • The switch-mode power supply IC includes feed-forward compensation so it is not possible to fix the output pulse width period over the full period of the generator's AC output.  Consequently, a problem could occur with a higher current be drawn when the dynamo's output voltage is lowest and the least current is available.   
    • The main regulator's power is controlled by DAC and a transistor AND-ing the soft-start function.  The main regulator's output voltage clamp is set using a PWM output.   Fairly complex software is required in order to prevent such an issue perhaps using a triangle wave or rectified sine wave phase-locked loop in software.  The circuit is very simple and lo-cost consequently has a large temperature coefficient that must be continually corrected in software.
  • Power saving in the VCC power supply is implemented using a port pin and software. The saving in battery operation is small at <3mA.  The signal is driven the same as en-3-5V. 
  • Speed-o-meter output - will drive a 0-50uA moving coil meter.  There is also a scale illumination output but this needs to be developed. 
    • This is driven from an open drain PWM port pin will be compromised a little by the temperature and VDD coefficients of the port pins on-resistance (~50 ohm).

---  AL-0002-??? As above (01?) But with a different main regulator --- not developed --
  • Changed the main regular to lm76002-q1 TI, this is a more expensive IC,
  • Startup down to 3.5V rather than > 4.3V with better external bias supply or-ing for lower start-up voltage.
  •  Also, the compensation pin can be over-driven to reduce the power output similarly to driving the soft-start pin in version -01?

--- AL-0002-??? A combination of above (01?) and below (02? to 05?) but using two transformer-coupled two boost regulators (SEPIC) --- will not be developed --

The diagram right; AL-0042-01C power simulation.  Fixed or slowly varying PWM drive gives good Power Factor with slightly over current drawn at the increasing edges of the sine-wave input.  
The transistors alternate between switch mode power supply or synchronous rectifier function to save power.  Therefore the dynamo current needs to be calculated from the output current, but the waveform does not match the input current waveform, which does not matter in this case the control is to limit the average dynamo current.
  • This saves one inductor but uses two transformers instead.  Use all low side switches instead of diodes for better low voltage efficiency.  The current steering logic for the two output transistors is not included.
  • The output capacitor be a lower value than above but Vcc will have a high ripple voltage as before.  In this case, the power factor control is only required to limit the maximum power taken from the dynamo but not correct the power factor at the expense of causing overvoltage output.
  • This also requires an extra voltage regulator to start-up in the case of flat battery.  That is if the microcontroller and software switch mode regulator is implemented.
  • Alternatively a boost voltage mode type switch mode power supply controller. That is with no feed-forward and not current mode control would be the most manageable for optimum power transfer.
    • Buck controllers but using the high side driver to form a boost regulator, NCP1589A, NCP3020, NCP5269B, A6727, L6726A may work in this off application way?
  • A synchronous rectifier at the output to save power would make this an efficient solution.  
  • Consequently the dynamo input may be simplified and the power path may be more efficient?

--- AL-0002-02?  Software-driven boost input can be PFC for boost supply for lower voltage operation --- PCB size under 120x100mm 4 layer components on one side.  -- Draft ---

  • AL-0002-02L Circuit and PCB
  • AL-0033-02E CubeMX software project file. --- to be updated.
  • Vgen is boosted by PWM so that power is stored in the capacitor long enough to ensure that the LEDs do not flicker at 2x dynamo frequency.  The current drawn should be controlled approximately be proportional to the percentage of output peak voltage output.  That is in order to maximise the power transfer with some power factor correction.
  • STM32L052C6Tx 48 pin, microcontroller.  With one test point and no spare pins.
  • The meter driver is for the highest current type with a 240' movement.   The movement is 500uA so the power taken is ~8mW = 2.5mA * 3.3V.
  • This design and layout to be refined after software review. 
  • The VCC power supply is disabled when not used to reduce the power consumption.
Diagram right above AL-0042-02A LTspice simulation boost input pre-regulator LT1812.  Would be driven by microcontroller PWM outputs the non-boosting transistor is turned on to reduce power wasted in the input rectifier little but the series current sense resistors increase power losses.  The simulation shows that this type of IC responds slowly and is unlikely to respond quickly enough in this bicycle case to be useful.  On the other hand control is smoother than A micro controller that  will need to operate in steps, which is not likely to be an issue, when changing the PWM frequency and pulse width.

Advantages and disadvantages;
  • Power Factor Correction is approximated by the software-driven varying Pulse Width Modulator boost supply.  But the drawback is that boosting to a high voltage then dropping to low voltage is inefficient.
  • Current regulators for LED drive instead of voltage regulators to improve efficiency has not been implemented.  This could be implemented in the lamp units from the 2-3V lights output. 
  • The two transistors for synchronous rectification used in AL-0042-01? simulation above Tr2 and Tr3 are not included.  Gate drive steering logic is provided and the main PWM transistors are used instead. 
  • An earlier version of this design used ucc29910A PWM controller, which only requires a 5V power supply but this design looked unnecessarily expensive and has been abandoned.
  • To be refined after software review.
  • Add buck-boost SMP LED current drivers.  
  • Version -03 is more efficient.  This version is superseded.

-- AL-0002-03 This variant uses a better low side battery power switch. -- Draft ---
  • AL-0002-03M circuit and PCB. - This variant is similar to version -02?.
  • STM32L052C - 48 pin.  There are no spare pins but there is one test pin.
  • This variant has a more efficient battery power switch because an n-channel MOSFET is used and also the MOSFET is driven from the boost 3-5V supply.  But has a higher battery current when switched off although this should not be too significant.
    • This variant will not operate if the battery cells become shorted (I do not know if this is such a serious issue with NiMH cells compared to the older NiCd type).
  • This variant can directly control the main power supply in order to limit the maximum current but this feature has not been fully developed.  
    • The amplifier does not switch gain and current range for charge rating measuring but is suitable for measuring current and coulomb counting. 
  • VCC power supply is turned off when there is no dynamo or USB power.   USB power out is switchable to further save power.
  • The meter driver is simple but the most expensive variant or the most efficient.   The movement is 100uA but would work with a 30 or 50uA movement with better damping and lower voltage VDD.
Improvements;  A current sense scaling and charge rate switch was considered.  Conclusions it looked like more parts fitted for no benefit.   The micro-controller will better manage to control the main voltage to maintain an average float charge of 10mA is a better strategy.
Pulse counter for mileage counting with set and reset.  This counter 
is heavy, requires 24V pulses, counts down and so is unsuitable.


-- AL-0002-04 this variant uses Lithium rechargeable (LiFePo4). Uses the on micro-controller op-amp which is good enough but must be turned off when the unit is inactive to save power. -- Draft ---

  • AL-0002-04H   PCB and circuit. 
  • AL-0033-04C   MXcube microcontroller project. -- To be updated
  • Uses STM32L052C 48 pin. - One test pin but no spare pins.  
  • Lithium protection is less demanding than for a laptop because the cell is a safer LiFePo4 type.
  • In this case, the uC be permanently connected to the battery and software manage the battery protection.
  • The power path is more efficient because the voltage is high so the step down from the dynamo is smaller.
  • The battery is more efficient only requiring charging 110% more power put back rather than 150% that a NiMH requires.
    • Rapid charging LiFePO4 is not possible but they charge at 0.3C, 0.5C or 1C (1-3 Hrs) depending on the type chosen.  By comparison, NiMh cells can be charged at up to 0.4C (2.4Hrs) or NiCD 2C to 4C (15 or 30 minutes) depending on the type chosen.
The Moving coil meter pictured right above is not so 
clear to see 0-1mA is not ideal as a speed-o-meter.
  • VCC power supply is disabled to save power when there is no USB power in or dynamo AC input.
  • Speed-o-meter output - to drive a 0-30uA moving coil meter.  There is also a scale illumination output but this needs to be developed.
    • This is driven from an open drain PWM port pin will be compromised a little by the temperature coefficient of the port pins on resistance.
Advantage and disadvantages;
  • Lithium-ion Phosphate (LiFePo4) - is slightly lower capacity Li-ion, less raw materials used. 1.2Ah or higher.  Fewer safety precautions required eg a lead-acid like battery charging.
  • Does not support Lithium-ion (Li-ion) - these require additional safety circuits within the battery that disconnects the battery if the supply voltage is too high or the cell voltage drops too low.  
  • The second lights regulator provides up to 500mA at 1.2V to 5V and is efficient because no series resistor should be fitted with the LED and the voltage is never too high to damage an LED if it were reverse connected. 
  • Using an STBB3JCC buck-boost switch-mode current regulator
  • STBB3JCC - 100mV Feedback +-10mV --- the part used.
  • The current is set by Pulse-width-modulation
  • This regulator's current output could be re-configured by changing the programming resistor (Resistor = 100mV / Current_required). 
  • Resistor = 100mV / (Current_required - 50mA) this has a maximum output voltage of 5V.  The LED lamp is connected between Lamp- and Lamp+
  • Alternatively, a regulated 5.2V can be taken from Lamp+ and 0V.


-- AL-0002-05 this variant uses Lithium rechargeable (LiFePo4). Uses the on micro-controller op-amp and another more accurate op-amp which is good enough but must be turned off when the unit is inactive to save power. -- Draft ---

  • AL-0002-05E circuit and PCB
  • AL-0033-05D.....ioc  STM32L151RCTx 64pin microcontroller project file -  has unresolved clock issues.
  • This variant is similar to -04?
  • Uses STM32L151R - 64 pin microcontroller.
  • This version is compromised because the on microcontroller op-amps are used.
    • There could be a cost-saving.
    • Small signals are tracked across the PCB rather than amplified at source then large tracked across the PCB.  This may not be an issue.
    • The op-amps are therefore not optimal and the input current is quite high.
  • A speed-o-meter moving coil meter output is provided.  The LED illumination drive needs to be developed. 

Design output files


ToDo - list all variants of AL-0002-???;

  • The microcontroller may need to be changed to a 64 or more pin device.  To provide function or design revision flexibility.
  • Improve PWM output to drive a moving coil meter with shunt resistor for damping, if necessary.  With backlight power. 
  • Consider using smaller batteries. Therefore change the battery holders.
  • Main power supply compensation need to be calculated. It is roughly based on the data sheet examples.
  • Sort out input current sensing AL-0002-05.  The power factor corrected boost circuit does not monitor dynamo current correctly.  Also the power transistors are not properly switched off.

Right; From Dynamo Maintenance blog  AL-0035-01C (4) Simple Dynamo to 5V DC regulated power supply such as USB power output.  The design returns surplus power back to the dynamo and therefore back to moving the wheel forward.  By comparison, the maximum power output is only; 1.5W = 300mA x 5V.

Which design to go forward with;

The cost and benefit of using a more expensive microcontroller with more functions on-chip some people cost things on 5p per pin used whereas other high volume users tend to simply avoid integrated circuits where cheap discrete parts can be used.   It is not clear cut without asking a PCB maker and assembler to price some variants in the volumes you are likely to use.

STM32L072R or STM32L052R are probably a good choice along with using an external dual operational amplifier.  For the Ibatt monitoring, it will be necessary to periodically turn off all major current inputs in order to calibrate the battery current measurement.   The A-to-D converter reference is VCC with a 1.25V internal reference connected to one channel so the VDD can be measured. This works over the entire voltage range of a two-cell NiMH battery.


STM32L0??? And STM32L0??? Do not have op-amps which means much better optimised external op-amps are used.  STM32L151, by comparison, is more expensive has two op-amps but the cost of the extra parts saved may break-even.


STM32F303 (four op-amps) or STM32F072 (no op-amps)  these are lower cost, without the low power features but are low enough power but the higher minimum voltage will operate with the lithium cell variants.  Alternatively could be used with any variant if the boost regulator is used to also provide VDD via a regulator,  this is beneficial in providing an easier to manage stable supply voltage reference for the A/D.

The op-amp PGA feature is not a real PGA but internal 0V referenced set of fixed gain settings for the op-amps.

STM32L433 some variants with 64 or more pins have a buffered reference output so the A to D converter can be referenced to that instead of VDD which is in any case varying.  In addition, there is an op-amp that can be used for better Dynamo current monitoring and being AC does not require a low offset voltage.  All variants of ST32L552 have two op-amps, a buffered reference output but in both cases, if the buffered reference is used it is only accurate with high VDD otherwise it reverts to tracking VDD.

Another possibility is to have a number of variants developed and made.  Then have one or two of each variant on a panel of PCBs and putting as many different PCBs on a panel as possible. But this may not be worth while PCB makers now put as many different jobs together on  One panel in any case so  It is necessary to check?

Have at least two PCBs made but not assembled but the cost difference of assembling just one or all may now be comparatively small.   That depends on if pick-and-place or manual assembly is chosen. It is necessary to ask each PCB supplier/assembler the same combination of questions?

PCBs that are not assembled can be stored up to 18 months and be assembled successfully.

Prototyping with an STM32L433 (one op-amp) STM32L475 (two op-amps) variant with on-chip reference buffer might be the best option.  Plus use an op-amp for better quality battery current measurement, which is compromised in any case by requiring ~100mV offset which has a significant temperature coefficient. 



LED power supply for one or many identical LED's connected in parallel.   An LED running at 100mA is very bright and the maximum current available probably could be reduced.  White LED's voltage drop is 2.8V - 3.2V or <3.5V - 4.2V depending on the type but Red LEDs voltage drop is about 1.7V.

Average current limited set by pulse width modulator up to 450mA at 1.2-5V out suitable for white or any other not-pulsed LED.  The LEDs used if connected in parallel in the same assembly and from the same manufactures batch.  Alternatively lower voltage drop red LED's can be paired in series then multiple pairs connected in parallel.

This current regulator could be duplicated and situated in the lamp.  2V - 5V input, 450mA set by R15.

AL-0002-04D sheet 5 is the small red square near the centre of the PCB below.

The 2V to 3.5V output is suitable for a red LED + series resistor but the brightness will change depending on the state of battery charge and dynamo output.    That brightness can be managed in software by Pulse Width modulating the output alternatively the programmable current in the datasheet below BCR421U Diodes Ltd. will keep the current more stable over the voltage range.

Data-sheet above right; A single red LED will drop 1.7V consequently the LED current will reduce below 2.7V but not so severely as if a simple series resistor were fitted.  In any case, a simple resistor would be fine a 7:1 current changed would be noticed but would not be severe but 2:1 current changed would not be noticed.  BCR421U's current should be programmed by fitting a suitable external resistor between 10mA and 100mA but can be set to a higher current.

LED lights; - see section of Bicycle-hub-dynamo-maintenance-project




I have used this project as a design exercise to learn and formularise myself with some of the STM32 series microcontrollers and to keep myself, up-to-speed in using CADSTAR 18.  I have not got paid for support just now on that circuit and PCB CAD tool because I am not working. For example, there is a feature to click on a net and move promptly to other locations where it is used that I would like to use.


What I have not explored is whether I have chosen the best combinations of peripherals for the functions required, particularly timers.  This is partly why the design options are marked draft, they require software review and some testing of some function blocks.


Technical discussion on the electronics community.st.com/s



Power for a low power wireless long-range device.


For smaller Internet of Things a D-Cell lithium primary cell may last up to a decade,  alternatively, energy harvesting strategy can be used.  Depending on the power required.

A much smaller sized variation of the above design could be developed.   http://www.rotalink.com/ http://www.rotalink.com/our-products/10/ac-motors-optional-gearboxes.html make geared motors with strong ball-bearing bearings.  For example;

  • 4116 synchronous motor (48V or 24V) + 227 gearbox (25:2) with ball bearings.
  • SB2513 bipolar 24V stepper motor + 222 gearbox (~7:1) with ball bearings.

The bearing is strong enough to stand having a pendulum and weight fitted in order to create up to say 1W.

A lower power, power supply based on a higher voltage say 24V 48V  motor based on the circuit AL0002-01? above may be suitable using a low power switch mode power supply.

  • 60V input, 50mA output switch mode power supply such as ADP2360 may be suitable?