18 March 2018

Modding a DIY USB Power Bank case with HT4936S

Since I had some spare 18650 Li-Ion cells laying around, I decided to fit them in a couple of empty power bank shells sold online for few €/$. Today I will report on what looks like to be a copy of Xiaomi 10400 mAh power bank.

Knowing my pre-charged cells were relatively good, I suspected something was wrong when right after the first few seconds using the DIY USB power bank to charge my smartphone the status LEDs reported 75% or even 50% of charge remaining.

A quick inspection with the DVM after recharging the power bank revealed that my four cells were all measuring 4.0V, while I would and could charge them up to their nominal 4.2V voltage. Time to troubleshoot the electronics.

With the help of a magnifier I could identify the all-in-one controller chip as HOTCHIP HT4936S (Company website). Datasheet can be found online (7 pages in Chinese) and translated into English with an online service. The datasheet is far from being comprehensive, but the device isn't too complex either. The HT4936S chip takes care of charge and discharge control, voltage booster to 5V/1A, 4 status LEDs, a control button and, as every Respected Chinese product, a flashlight (press twice the button to activate - if the flashlight LED is present - twice again to turn off).

A note about the flashlight. This power bank does not mount the flashlight LED, but I tested the double click on another "shell" with unmarked controller chip and it works.

At first sight the circuit on the PCB is very similar to the datasheet sample application. Good. Some components are missing from their pads. Not so good.

Problem #1: cells are charged up to 4.0V only.
According to the datasheet, the HT4936S can be configured to stop charging either at 4.20V or 4.35V: while pin 1 is left open it should charge cells to 4.20V, if grounded it goes up to 4.35V. Why does it stop at 4.0V then? Shorting together R1 pads will ground pin 1 and set the target voltage to 4.35V. It works, and it keeps charging. I stopped it at 4.25V/cell so they don't get damaged.

Solution #1.
While this mod forces the IC to charge cells up to 4.35V, it moves "upwards" the discharge detection, therefore the chip considers them depleted at 3.6V thereabout. There is still the doubt why it stops at 4.00V instead of 4.20V in the default configuration. So this solution is not the final answer.

Problem #2: ground connection intrinsic resistance.
The ground connection is made of a single long wire that is wind-up to make the four contact springs: unless you insert a pre-made 1S4P pack, negative terminals of your 4x 18650 pieces won't be at the same potential (under load). I measured 100 mV drop between GND pad on PCB and the farthest cell during full current recharge (about 800 mA input). A solution could be to add a thick wire/strip that connects together all negative terminals.
In case you wonder, this extra resistance does not seem to be the culprit of Problem #1 since it keeps charging up to 4.35V.

Solution #2.
There is no much room in the power bank case to shorten the ground path. So ... live with it.

I wonder if off-the-shelf power banks suffer from the same design errors. Probably not. I will consider these as an energy source when no other solution is available. On the other hand I will not let "waste" 4 cells in there, but rather leave just a couple.

05 March 2018

Count-up timer with TIL305 - optimizations

Looking at the 2x TIL305 timer I tried to imagine an even simpler version with lower parts count: could a single ATtiny2313 drive both displays? This AVR comes in a 20 pin package: take out two for power and one for reset (needed for low voltage programming and anyway it has limited current drive capability). That leaves 17 I/O pins.

My current implementation uses 5 pins for columns, 7 for rows and 1 for the decimal point: 13 I/O in total. Another display needs 5 control lines, we're 1 short (17 - 13 = 4).

If the decimal point is left out math tells us that 17 (total) - 13 (one full TIL305) + 1 (decimal point) = 5. That's enough to drive two TIL305 with one ATtiny2313.

But there is no room for the microcontroller to interact with the outside world, especially to receive an input signal like the 1 Hz clock. There is a way out!

When looking at the TIL305 running in landscape mode, you realize that your 5x3 symbols take up a total display area of 5x(3+3) pixels: the middle column (row #4) is never used because it acts as symbol spacer!

So, as long as you want to use 2x TIL305 in landscape mode displaying 4 symbols drawn on a 5x3 dot matrix, an ATtiny2313 will suffice as driver. You can now drop the code that sets row #4, thus running the scan 1/7th faster!

Want to get rid of the external 1 Hz timebase? Upgrade to an ATmega48 (o 88, 168, 328) and generate the clock with a XTAL so that the timing obtained in software will be more accurate than the internal 4/8 MHz RC.

26 February 2018

Count-up timer with TIL305 - built

Thanks to a pre-wired breadboard the circuit went together in an hour:

From left to right: most significant digits and ATtiny4313, least significant digits and ATtiny4313, CD4060 oscillator and divider. Decoupling capacitors on the Vcc supply rail (that must be used in digital logic circuits!) prevent detection of false 1 Hz input pulses.

The circuit in the picture is powered with a 18650 LiPo cell at about 3.8V and it has been running all night to test the firmware past 10 hours of operation.

At powerup is starts counting immediately. First only seconds are shown. Then minutes and seconds until 59' 59". Then it switches to what is shown in the picture. After 9h 59' you get HH MM.

The font was chosen as a trade off of readability vs cozyness vs current consumption. There is some MSD blanking too, but it doesn't last long.

Further improvements before looking for a suitable box: add the battery, a 1S LiPo (dis)charge controller, a power switch. Maybe some firmware improvement once the timer is shown to the public.

Besides as kitchen timer, it can be used as elapsed work(-day) timer ... that's where I will hopefully gather some extra feedback.

The firmware is written in BASCOM. I want to do some further optimisation before uploading the code to my github account. Binary is available on request as well as TIL305, if need too.

24 February 2018

Count-up timer with TIL305 - design

After building few clocks and thinking of many more, I wanted to do something slightly different. The "new" idea came one evening while cooking, when I realised I never remember at what time the pasta (food) will be ready. "Was it 20:14 or 20:20?"

I am too lazybusy to set a countdown timer every time and since my short-term memory is not willing to cooperate I chose to try a count-up timer: a simple device that shows elapsed time.

For this task I wanted to use TIL305 5x7 dot-matrix LED displays made in 1970's. Two challenges:
  1. they need an appropriate driver
  2. they are very current hungry
I had already solved the driver problem by reproducing someone else's idea to adapt an ATtiny2313 microcontroller. You need one ATtiny every TIL305. Cost-wise in 2018 this solution is probably cheaper than using obsolete unobtanium driver chips.

Texas TIL305, Monsanto MAN2A, ...

Since I want my timer to be battery powered, at about 38 mA per 2313&305 pair, I cannot use too many displays. Four digits is the minimum useful IMO ("mm:ss" and "hh:mm" for longer runs), but another idea comes to the rescue: use smaller font, 5x3 dots vs 5x7 and show two digits on each TIL305. This approach has another advantage: limit the required wiring (I won't be doing a PCB!).

How about the timebase? ATtiny's will not synchronise, they will receive both the same external timebase signal and rely on their internal clock to run the code. I could have had one master driver generating the pulse for others, but I am not sure on the internal RC calibration and on longer runs the difference vs 1 pps could be unacceptable. So there will be a 32.768 kHz oscillator and divider with CD4060 chip (because it accepts a wide range of supply voltage).

21 February 2018

Old vs modern high voltage capacitors

Side by side comparison of the size of 500+ V capacitors, same values. 1955 vs 2018!

Well, the dielectric is different!

10 February 2018

First MW reception on the RD-160

So, with the lamp limiter just built I could dare to power the Radiomarelli RD-160 medium wave receiver.

I scrounged home for filament light bulbs and I located 40W, 60W and 100W.

I stared with 40W, that lit up and nothing came out of the receiver. Maybe I wasn't patient enough, or its rating is just too low.

One step further to 60W and ... after the first bright flash, the lamp dim dim dim .... until some noise comes out of the receiver! The residual light is very warm and pleasant too! It works!! It receives RAI1 broadcast on 999 kHz and nothing else.

Problems noted:
  1. When the tuning capacitor blades go towards full mesh the local oscillator stops: there's a short.
  2. The volume control crackles
  3. Knobs don't hold tight on the shaft because their plastic is cracked near the screw
Not bad at all! It is electronically fine! Now I will replace capacitors.

06 February 2018

My poor man's AC limiter

Reading around the Net, everyone mentions that powering old valve circuits under restoration should be done gradually by applying a lower voltage and observing what happens. That's until all capacitors are confirmed to be working (or replaced) and transformers are not shorted. This is accomplished with a tapped or variable autotransformer, that I don't have.

One solution would be to wire back-to-back two step-down transformers, like 220-12 and 220-24 that should provide 110V if connected 220-12-24-220. Of course, I don't have such a selection of old-school transformers.

The "poor man's AC voltage transformer" trick comes to the rescue: connect a filament light bulb in series with the D.U.T. and observe what goes on. It will not allow to control the actual voltage, nor to change it on the fly, but it will limit the current through D.U.T. thus reduce the risk of smoke/fire/damage. Lower wattage bulbs provide lower voltage to the D.U.T. and let less current pass through, therefore less damage is done in case of troubles.

As I understand it, the principle is that a fault in the D.U.T causing excess current draw will be tamed by the light bulb which in turn will light up and provide visual feedback of a problem. Begin with lower wattage and replace with higher, step by step, as the home stock of old filament light bulb allows.

In order to build a "safe" transformer device I decided to modify a power strip: it has a power cord, outlets and an embedded switch. The mod is to wire in series two outlets, the first being used to plug the light bulb (installed in an existing lamp, for example), the second for the D.U.T. A third socket, left in parallel with the second, can be used to measure AC voltage across D.U.T.
The light bulb limiter, finished.

Things to do and remember:
  • AC mains is lethal;
  • add visual signs to the power strip that it is NOT a power strip anymore;
  • mark sockets with their intended use;
  • filament light bulbs get hot, so do not hurry to change it for the next!
If all goes well, the first troubleshooting session will not trip my home's AC protection.

15 January 2018

Time travel to 1956: Radiomarelli RD-160 Amico

I finally did it: I bought a valve AM radio.

Radiomarelli RD-160 "Amico".

It is a Radiomarelli RD-160 "Amico" built on or after 1956. It was sold as non-working for "just" 5 € after nobody bought it for months. No wonder... In the worst case, individual parts are worth more (if bought individually, for other projects, not on the current market).

The first, off-grid, check reveals that the case is clean whereas cracked (it's plastic, can be glued together). The circuit is relatively clean and not rusty, all valves are present. The audio transformer is a bit loose and has one suspicious floating wire. The volume knob turns indefinitely and doesn't click on/off. The tuning knob runs the indicator bar just fine. Looks like a good troubleshooting playground and, at worst, I will retrofit it with some sort of Internet-radio receiver (not my original idea).

13 January 2018

Can't get along with AMS1117 regulator!

There is something wrong between me and AMS1117 linear voltage regulators: I keep frying them! It first happened on two adapters for breadboard, but in that case I suspected I initiated some self-oscillation by using input leads of different length (comments on the same blog post explain other causes, worth reading!).

Then I blew it on a Arduino Nano clone, those that also mount the CH340 USB chip. Maybe I did something wrong, I don't remember. That circuit is running with a 7805 now, and gets pretty warm.

Last event was last night, when testing a PWM voltage booster with the same Arduino Nano clone board ("same batch"). I fed 12V the board and it all became quite warm. Since I wasn't getting the PWM output I resorted to powering it via USB, but this time I used an inline USB tester to see the current consumption: 150 mA. That sounded wrong for a board that was doing nothing. Once I sorted out the firmware to produce PWM, I reconnected everything on 12V and I didn't get any output, nor I could talk to the board over USB. Basically dead. So I phisically removed the AMS1117-5.0 with pliers (I began unsoldering, but it was taking too long). Result? The board still drains 110 mA and it is not recognised on USB. To the recycle bin.


Well, this time I will build my own 5V regulator with the trusty 7805.