I needed finer control of Vpp. Since this is an experimental design, I decided to make some calculated guesses to choose the right values.
To start with, I believe that putting a resistor between the emitter and ground of the feedback transistor will limit the gain of the transistor. The voltage of this resistor will rise as the current through it increases limiting the current gain of the circuit. The first guess I tried was calculating the resistor as if the transistor wasn’t there(same as fully saturated) for my max voltage (25 V).
I am having second thoughts about co-processor model. This significantly increases the complexity of the firmware for this design. I haven’t ruled out any options yet. If I can get a good voltage for Vpp without the co-processor, I may decide to go back to the level shifter.
Programmatically controlling Vpp:
I have been thinking about how to make an “adjustable voltage” switching regulator adjustable by the microcontroller. By putting a transistor on the low side of the voltage divider feedback, I believe I can have linear control of the generated voltage controlled by the Sigma-Delta output. I got a basic circuit design from the FAN5331 datasheet. I then replaced the ground side resistor of the feedback voltage divider with an NPN transistor. I came up with the circuit below.
The FAN5331 has a 1.25 volt reference comparator to decide if it needs to generate more voltage or wait. With the Sigma Delta input to r3 at 0 out of 255, the transistor will never turn on and the voltage on the feedback will be above the 1.25V threshold and the regulator will effectively shut down.
My ADC feature request on Espressif’s BBS has had 118 views. Unfortunately no word from the developers. This might mean I have to add an ADC chip to the design.
I’ve been thinking about the level shifter and why it was causing my software to crash. 10M Ohm and 10pF capacitance are very small loads. The software crashing just because a scope probe is connecting is very bad.(stating the obvious)
Bidirectional level shifters are typically designed to react quickly to transitions and drive very weakly in the steady state. With the target pins unconnected the shifter is steady state and the scope probe might be enough to cause a problem.
I have been writing this blog for almost two years now. With only about two hundred views per month. Of the two hundred per month, only about twenty five are returning visitors. I have received six real comments in this time.(and tons of spam comments)
I was hoping to get more comments to help me know what is interesting to the people that do make it to my site. Also, I am not a writer, I am unsure if I am giving too much information or not enough. These statistics are a little disappointing, but I will continue to write and hopefully improve my skills.
The boards are fabricated and have been shipped from PCBWay. I am looking forward to testing the changes I have made to the layout. While doing some testing, I hooked up the lithium cell backwards and fried the charger chip. I replaced it and the board is back up and running. I have ordered the new level translator chip so I will be able to test it when the new boards come in.
As I build it this next time, I will be looking for ways to make it less expensive and more reliable. One thing I would like to improve is how easy the board is to solder, the lithium cell charger is very difficult to solder.
In the coming weeks, I plan on re-testing the hardware, Improving the software, and doing some functional testing. In essence, I am hoping to move from prototype stage to alpha stage. The software should start to look like the final product and the electronics shouldn’t need to change much if at all.
The last time I worked on the electronics was when I got the switching boost circuit working. The crashes I saw with it is why I did so much code work since then. This week, I wanted to get back into electronics. Since it has been a while I started by reviewing the schematic. First thing I reviewed was the Lithium cell charger circuit. It matches the reference design in the AAT3672 datasheet and it matches the PCB. I should test it before I spin another set of boards. I put a note on the schematic to remind myself to do that.
I then looked at the switched boost circuit. It turns out I don’t need L2, the real problem was in software. I removed L2 from the schematic. The resistor R5 was changed to 47 Ohms. I updated that on the schematic. Next I looked at the USB to Serial Bridge, I have two cuts with Jumpers on the board, I checked them against the schematic. The schematic matches the patch I had made.
Next I compared the patches I made to the SPI RAM against a pinout of the ESP-12F I found online. ESP-12F pins 9 – 14 on the schematic matches the PCB with the modifications I have made. Pin 16 is no longer connected and Pin 18(GPIO0) is connected. I had made this change back when I was testing the SPI RAM. With this change, D4, Q6, R26, and R27 are unnecessary. I removed them from the schematic and tied GPIO0 to U2 Pin1 and disconnected it from U10 Pin 6. I then tied GPIO15 to U10 Pin6 with a net label called A_SEL. I have yet to test IO2 and IO3, Which will require running the RAM in QIO mode. In QIO mode, IO2/IO3 shouldn’t matter because when I read them back out of the RAM will come back out on the same pins they went in.
I have yet to test the level shift chip(U3). I don’t like how hard U3 is to solder so I researched a different part to do the same thing. The new part I found is a TI TXB0108PWR which works very nearly the same as what I already had designed in but comes in a 20 pin TSSOP which is easier to solder. The Pin order is different. The part is only US $1.88 in singles at Digikey. I proceeded to change U3 to the new part on the schematic. The datasheet recommends that OE be held low until both Vcca and Vccb are on. I put a PNP transistor in to pull OE low anytime Vt is not driven. As I dug into the datasheet, I found that this chip would not work for I2C.
So I did a little more research and I found another chip from TI. The TXS0108EPWR works with SPI and I2C. It has the same pinout as the TI TXB0108PWR so adding it to the schematic was really easy, I changed the name in the schematic. This part is US $2.00 on Digikey.
I uploaded the updated hardware design to Github. Click on the hardware link in the right column to go get it.
Have you used level shifters before? Have you decided on a chip only to find out that it was missing one crucial component? How did you fix it?