Commit aea7cb9a authored by Jan Kasprzak's avatar Jan Kasprzak
Browse files

step-up/README: detailed description of the project

parent fa1f7d30
Step-up converter with current feedback measurement.
Simple bike lights:
Step-up converter with current feedback measurement
Battery voltage monitor
Status LED
CPU: ATtiny45
Driven by PWM output OC1B (PB4 pin) with MOSFET.
Current feedback measured at ADC3 (PB3 pin).
Output on the PB4 header (pin 1 is negative, pin 2 is positive side).
Step-up converter:
Driven by PWM output OC1B (PB4 pin) with MOSFET.
Current feedback measured at ADC3 (PB3 pin).
Output on the PB4 header (pin 1 is negative, pin 2 is positive side).
Battery voltage monitor:
Uses ADC1 (PB2 pin), voltage is divided using 1M5 and 100K resistors,
low-pass filter added on input (R30 capacitor, R32 resistor)
Status LED:
Uses PB1 pin, R22 resistor, positive side is PB1 header pin 2,
negative side is PB1 header pin 1
Connected to PB0 header pin 2 using R12 0-Ohm link R12,
negative side is PB1 pin 1 (alternatively PB0 pin 1 could be
used instead - 0-Ohm link R15 needs to be added). Internal
pull-up resistor of ATtiny itself provides the voltage.
Pins 2 and 3 of PB2 header are shorted, and 100K resistor R3x
is added between pins 1 and 2.
Bill of materials:
......@@ -14,18 +34,89 @@ D50 SS24 Schottky diode (SMB package, 40V, 2A)
L50 470uH, 390mA, 200 mil pin distance (probably too big for 20mA LEDs :-)
PB4 two-pin header soldered to pins 1 and 2 of PB4
Q50 IRLML6344TRPBF N-channel MOSFET, 30V, 5A, SOT-23 package
R40 220nF capacitor (not resistor!)
R30,R40 220nF capacitor (not resistor!)
R32 15K
R33 1M5
R3x 100K (see above)
R45 1K5
R50 15K
R51,R53 0R00 (zero-ohm link)
R12,R51,R53 0R00 (zero-ohm link)
R55 3R0 (can safely measure currents from ~1 mA up, for higher currents use lower value)
U1 ATtiny45-20SU
U2 MCP1703T-5V
PB0 header:
2: button +
PB1 header:
2: status LED +
1: status LED -, button -
PB4 header:
2: LED string +
1: LED string -
The firmware is a dumbed-down version of firmware for my other
project:, modified
for ATtiny45.
Theory of operation:
After power-up, the firmware sets up the CPU and powers it down,
waiting for a long button press. In this condition the system
takes about 8uA from the 9V battery. So a typical 500 mAh 9V battery
would last about 2604 days in this mode.
When the button is pressed for a sufficiently long time, the CPU
wakes up, switches the status LED on (providing visual feedback),
and starts blinking.
The firmware main loop is timed by ADC interrupt. It continuously measures
the voltage on R55 feedback resistor, and adjusts the PWM value on OC1B
to match the expected current through the LED string. Occasionally
the ADC is switched to the battery voltage sensing, and the battery
voltage is read. If the battery is critically low, the system
is switched to the power-saving light pattern (see below).
The step-up converter has four target values of current (2 mA,
6 mA, 12 mA, and 20 mA as of this writing, see pwmled.c). The blinking pattern
is adjusted separately from the target value in the firmware.
The firmware recognizes short and long button presses. The short one
cycles through all blinking modes, the long one switches the system off and on.
The status LED has two blinking modes:
- in the normal one, it is off by default, and uses a series of
short switch-on blinks to display the battery voltage
(the number of blinks is voltage above 7V in 0.5V steps).
- when an error occurs, the status LED stays on by default, and displays
the error condition as a series of short switch-off blinks:
- one blink is a "power low" condition
- three blinks is "step-up error" (a LED string disconnected,
for example).
- when the long (-enough) button press is detected, i.e. when powering on
or off, the LED is switched on to provide a visual feedback
of long-enough button press.
The blinking modes and patterns are currently set up as follows:
1. power-saving minimal mode
- a single short blink at minimum current
2. blinking mode 1
- 2 and 3 blinks at the second-lowest current
3. blinking mode 2
- 2 and 3 blinks at the third-lowest current
4. blinking mode 3
- 2 and 3 blinks at the highest current
5. steady light at the minimum current
6. steady light at the second-lowest current
7. steady light at the third-lowest current
8. steady light at the highest current
The system starts up set to mode 3, and switches to mode 1 when
the power is critically low. Other modes can be chosen via short
button press.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment