Preface
I do not like being wasteful and throwing something away just because it is damaged.
Things need to be build with the possibility of maintaining it, planned obsolescence and DRM are not the road to a better world.
This little project aims to build something that can be repaired, improved and maintained.
Without any glue, only screws are used, this light can be torn down in a matter of seconds.
It uses a rechargeable battery that has been upcycled from broken notebook battery packs and it does not use proprietary connectors or cables.
It is designed to be as efficient as possible, so not much energy is wasted, the LED's have a comparably high lumen per watt ratio and with a switching boost regulator the waste energy is kept lower then with a linear driver.
Everyone can build the main parts for it with a simple and cheap 3D printer, this new technology has the capability to change the world we live in.
With open the source design everybody can print replacement parts in a matter of hours.
And while it is not the best material, when printing in a biodegradeable thermoplasic like PLA (polylactic acid) we can reduce the impact on the amount of non recycleable thrash.
The electronics have been build with reasonably large SMD components so they can be easily reworked and replaced and the integrated circuits are intentionally not leg-less.
I have chosen packages with exposed metal or legs for easy probing and repair ability.
While this flashlight is fully working it still is more a draft then a prototype, there are many things that need to be improved.
But the main problem faced at the moment is the destructive testing of the electrical components.
The driver circuit board is not particularly expensive but in the process of testing, more then one will be destroyed.
For this a test bench has to be designed and build to measure the current and voltages at different nodes to characterize the circuit and over all efficiency.
And a debug firmware and the software for the data acquisition of the test bench has to be written.
There are many other challenges as well.
- Ordering proper circuit boards for the LED and Driver.
- Creating a bed of nails for programing and batch testing.
- Creating a small level shifter board or shield to program this with a regular Arduino acting as a ISP programmer.
- Overhauling the cooling of the LED, with additional metal, hopefully recycled material as well.
- The whole body needs to be redesigned.
- The button mechanism needs improvements.
- A proper firmware needs to be written.
- Further down the road i would like to simplifiy the driver circuit itself or have multiple versions available.
- As well as an option to use more common LED's.
Mechanical parts
The main body of the light is constructed with 3D printed parts, the print orientation of these was optimized to enable printing without much support material, as well as maintaining a maximum layer adhesion.
The goal was to use only standard parts, no glue and only parts printed in PLA without any metal.
It would have been was simpler to just glue everything together, but that means, you can not repair it easily.
This made the whole construction a bit bigger then necessary.
Threaded inserts, smaller screws and glue would enable the whole body to be much smaller as well as printing it in PETG/ABS for more structural strength instead of relying on thicker parts.
Besides one part, it can be printed with a single type of filament in one go.
The button spacer needs to be transparent, otherwise it will cover up the status LED's, for the prototype Esun red and Nunus clear PLA filament was used.
Again, PLA is not ideal but was chosen for ease of use and less environmental impact.
The button caps and the button arrangement are not ideal but the main focus was to build a working prototype, the ergonomics had to be moved on the back burner.
As well as the button actuation, the force required is not satisfactory at this point and the haptic feedback is not very strong.
On the initial draft the buttons were comprised of a simple spacer and loose button caps, this proved to be a bad idea in the end.
A new button holder was designed with spring arms which in turn brought other problems along.
The whole light is not designed to be waterproof at this point.
Optics
The lens used is a 10mm Carclo, it does provide some focus with a wide beam pattern.
This is intentional, the light was designed for close distances without much focus.
This is more of a “shotgun light” then a “sniper light”.
Early tests were done with plain plastic windows and LED light strip covers but ultimately abandoned due to aesthetic reasons.
This is not an ideal solution, revision will have to be made.
At the moment i am looking into fabricating the reflector out of recycled aluminum cans.
Battery and battery management
The main source of power is a 18650 Lithium Ion cell, commonly found in notebook battery packs.
When salvaging these cells, care needs to be taken to discard defective ones.
The battery is build into the device and is not intended to be field replaceable, although it is using regular spring battery contacts.
The entire reason for this is, to avoid soldering directly to the cells and preventing thermal damage during soldering.
Since these are bare cells without discharge and charge protection it needs to be implemented separately.
The Texas Instruments BQ29700 was chosen for this purpose, along with two SOT23 N-Channel FET with a suitable V-GS and RDS-On.
The BQ29700 uses the voltage drop across the protection FETs to measure the discharge current, the over current detection voltage is factory set to 0.1V and the RDS-On of the FETs needs to be selected appropriately.
The on resistance of the IRLML6344 is around 0.05Ohm and with two in series it equates to 0.1Ohm shunt resistance.
This gives a over current protection of 1A which suits the circuit nicely.
The under voltage protection threshold is set to 2.7V but this threshold should not be reached during normal operation since the microcontroller is monitoring the cell voltage as well and is set to disable the device before the cell is discharged that low.
The battery is charged with a Microchip MCP73833 charge controller, a single NTC is used to monitor the battery temperature during charge cycles.
Should the battery produce too much heat, the charging cycle is terminated.
The MCP73833 provides three open drain status outputs, the charging status output is comprised of a few discrete status LED's due to a lack of RGB LED's in the parts bin.
The MCP73833 is powered by a regular phone charger through a micro USB connector.
These are very common, early designs used a magnetic connector and pogo pins but that would have introduced non standard cables, adapters or connectors.
Regular phone chargers are very abundant in a regular household.
Logic and interface
The circuit is controlled by a Atmel microcontroller, the ATTiny44 has enough pins for all functions while still retaining a somewhat small footprint.
It is compatible with the Arduino IDE, this simplifies writing the code a little bit.
The microcontroller has 4kb of flash memory and a internal RC-Oscillator run at 8Mhz, it only requires 3 additional external passive components.
The user interface consists of three tactile switches and a few discrete status LED, a RGB LED would have been a better solution was not present in the bin of used parts.
A single button interface would be more then suitable for a simple flashlight but three buttons provide more ease of access to functions, mostly though this design feature is due to personal preferences and a irrational dislike for multi function button interfaces.
The processor monitors the battery voltage (which is far from ideal on LiIo cells) and indicates the end of discharge though the status LED's as well as the battery voltage.
The processor clock could be much lower to reduce the power consumption of the ATTiny but the timing of the LED driver interface required a higher clock source.
Thermal management, the LED and driver
The LED is driven by a Texas Instruments TPS61165, a constant current boost regulator.
This is a very carefully selected driver for a few reasons, it does not use PWM to regulate the output and instead employs analog dimming, the light output is flicker free.
Further it provides a digital single wire interface to the microcontroller.
During operation, after the output current has been set, the µC can enter a power down state to prolong the battery life even further.
Since the chosen LED driver is a boost regulator the selection of the LED had to be well thought out.
The Nichia NF2L385ART is perfectly suited to this driver, in a single package is consists of two die in series.
It is available in either 2700K and 5000K color temperature with a color rendering index of above 80.
The efficiency is depended on the drive current and ranges between 159 Lumen at 100mA and 119 Lumen at 250mA per Watt for the 5000K version.
The maximum light output as per LED datasheet is 197 Lumen in this case, the output of and efficiency of the 2700K version is slightly lower.
A big concern was the cooling and temperature of the LED, early designs used two LED's in series but ultimately proved to produce too much heat.
The LED is intended to be temperature monitored in future revisions, a single NTC on the LED PCB will provide thermal feedback to the microcontroller.
The maximum light output is available as long as the temperature rise will stay below the glass transition point of the chosen material of the main body.
At the moment a separate aluminium heatsink is used and the LED is soldered to a small breakout board which is pressed onto the heatsink.
This was a temporary measure due to cost and availability, a single custom metal core PCB will be used.
Quite a few thoughts went into this problem, the heat has to go somewhere. There were many designs some every elaborate, some simple on how to get a heatsink into this light.
Some involved CNC cutting custom aluminium parts, which does not fit well at all into the spirit of the project and big aluminium rods running through the body of the LED.
A simple metal core PCB provides enough cooling when sandwiched between the parts with the LED soldered on, there is the possibility to just stack a few more on top of each other to gain a bit more thermal mass.
There is the possibility to add a few shims of spacers between the stacks to add more surface area for convection. While this adds more thermal resistance between the "fins" this modular design still leaves the room open for a custom heatsink to be added.
Future revisions should include the possibility of two series LED's for more light output and higher efficiency.
Power consumption and operation
The light does not use a “clicky” switch and instead relies on the sleep mode of the microcontroller and power down state of the boost converter to keep the standby current low.
The Vf of the LED (>5V) is above the supply voltage(<4.2V), there is current flow though the boost regulator, the inductor and the switching diode when the regulator is disabled.
The ATTiny44 consumes just a few µA in the appropriate power state and the quiescent current of the boost regulator is negligible.
The battery voltage is measured internally in the ATTiny44 with the help of the on chip bandgap reference.
The supply voltage is selected as the reference for the ADC and the bandgap source is measured against that.
The over discharge protection consists of two layers, first the microcontroller monitors the cell voltage and if the under voltage threshold is triggered, the light is disabled until it is connected to a power source.
If the battery is drained further due to the standby current and the second threshold voltage is reached, the BQ29700 disables the discharge FETs and disconnects the entire battery until the next charge cycle to prevent damage to the battery.
Programming
The ATTinyCore plugin is used to make the Arduino IDE compatible with the ATTiny microcontroller,
it is programmed with a Atmel AVRISP-MK2 though a single inline header that is soldered at a 90° angle on the board.
In theory a regular Arduino board could be used to program it as well, with some level shifting on the data lines.
A few BSS138 with a pullup and pulldown resistors should suffice.
Firmware
TBD
Technical specefications
Dimmable in 31 steps, no PWM.
Active thermal regulation of the LED
Rechargeable with a regular phone charger.
Single 18650 Lihium Ion cell.
Battery level Indicator.
Three button interface.
Arduino IDE compatible.
Battery management and protection.
Nichia LED
197 Lumen (as per LED Datasheet)
Color temp: 5000K
CRI: 83
Efficiency at 100mA: 159 Lumen per Watt
Efficiency at 250mA: 119 Lumen per Watt
Height: 110mm
Width: 45mm
Depth: 26mm
All hardware source files, pictures and documentation are released under the following License: