I’m working on HotSocket, a ZIF socket enabled version of the ever popular TinyTimerISP. Along the way I needed to create a part for Eagle that would enable me to place the ATTiny2313 processor from Atmel. This is an AVR series processor that is essentially used for software emulation of a $4 chip. Not my first choice of how to do USB to Serial conversion, but it’s easier to stick with convention then to play baseball with the hornet’s nest of BS in the Arduino IDE and Windows/Linux/Mac etc.
One of the things I like to do when I create a part is order a tiny PCB with that part on it from OSHPark. That helps me make sure that I have the dimensions right and it will fit onto a board when I use it. I love what OSHPark offers. The test board for TinyTimer was $3.95 for 3 copies including postage. That’s terrific. The board is shown below.
I also decided to make an alternate layout for the ever popular BC517 transistor. The stock layout in Eagle uses what I refer to as the “martian triangle” footprint. For some reason TO-92 packages remind me of Marvin the Martian… nevertheless, I find them a pain to bend when assembling boards. Eagle has alternate footprints already, they just weren’t hooked to the part and mapped. That was a quick 5 minute exercise. I ordered a set of these from OSHPark today as well. It was an incredible 40 cents for 3 boards including postage. I don’t really understand how the crew over there can touch a 40 cent order. I know from past experience it will show up in the envelope with my other order today. OSHPark is truly changing the electronics world 3 boards at a time. 🙂 The footprint is shown below. It will require spreading the pins, but I think this is easier to do then trying to bend one pin forward and down. The test board is to make sure I have a workable footprint that can be soldered.
The traditional footprint: (courtesy Google Image search and JeeLabs.com)
So back to Hot Socket …. I may wind up calling it USB-Big-ISP+ as a play on the USB TinyTimer. It appears that all of the units on the market are a shameless copy of Lady ADA’s work. She nicely credits the folks who’s work she leveraged. This is the beauty of Open Source Hardware. Continuous shared improvement. I’m taking the design to the next logical step. It will have a 40 pin ZIF socket wired to support ATmega328 and ATTiny85 chips. ATMega328’s will go at the top, ATTiny”s will have pin 1 at the bottom. I’ll also include a 6 pin ISP header
I may also look for a way to support programming the ATTiny2313’s with the ZIF socket. It really comes down to looking at where the pin’s line up. If there is an issue I can simply add another ZIF socket. The problem of course is that ZIF sockets are big and PCB real estate is expensive.
I’m building this for my own uses. My next series of kits will not require the builder to have access to a programmer or know how to set it up. I think this made TinyTimer harder than it needs to be. So as part of the kit I’ll be boostrapping the processor and loading the stock code on it. It will still have an ISP header for modification and loading new code onto it.
I also ordered a UM232R to do some expirimentation. This uses the immensely popular FT232R USB to Serial chip. It’s in a handy development module that has a USB port and the surface mount chip already mounted.
Image Courtesy FTDI.com
I want to see if I can wire this to a AVR and get acceptable programming results. In theory it should work…. it’s a little on the expensive side as a development kit, but it will let me quickly test what I am interested in testing. Time is always valuable.
I have started working on my next two projects. UniPowerSupply is the simplest. I’m working on a universal power supply using an LM2576 IC. The basic idea is to be able to use any power source under 60V to generate a stable 5v DC source. Moving forward I’ll retire the USB-B power input and use this design. It should be a net wash and increase component count slightly. There are other voltage regulation IC’s out there, but this one has a wide input range and is very efficient with a switching core.
The second project is RO Saver. I am taking the TinyPLC Duo aka TinyTimer Duo and building an application specific version of it for Reverse Osmosis. It will control two sprinkler valves and feature an input. The input is designed for a float switch. The output will be relays to run 24VAC sprinkler valves. I may add a 3rd channel to it to control a booster pump as well. A booster pump can increase efficiency to nearly 50% in a two stage RO system. The idea is that the board will run for 5 minutes per hour or when the float switch indicates a low water level. The 2nd channel will be used to run a membrane flush valve once per period. The period may be net-run time on the membrane or once per day. I like the run-time option because it simplifies maintenance. I will probably include an option that allows bypassing the periodic run in favor of a float switch. I may also include an option to set the run duration with a jumper or dip-switch or a resistor. The idea is to alleviate the need for programming and make it more of a gadget. Once RO Saver is completed it will become a kick-starter project. This will build on the lessons learned from TinyTimer and improve the on-time performance.
I will also be designing a programming chassis to simplify the need to burn a number of Arduino and ATTiny85 chips. It will essentially be a PCB with a ZIF socket and an ISP header.
I completed assembly of 12 TTKS units over the weekend. My initial testing was that 8 units worked as expected. 2 units needed the filter capacitor on the power supply changed from a 1uf to 4.7uf 50v electrolytic capacitor. I’m unsure as to why these two units were seeing more noise, but it was a simple fix. The final design would not work with a 1uf ceramic capacitor and was exhibiting symptoms of IC noise.
One unit appeared to have a bad LiteOn LTS4301JG. I thought this was odd, but de-soldered the unit and replaced it. The replacemend 7 digit LED did the same thing. I resoldered the Max7219CNG and the 4 digit 7 segment LED and was unable to eliminate the issue. I’m going to assign that one to a damaged or defective trace somewhere on the board. The purple soldermask makes it almost impossible to make a detailed inspection, so I put in the bin of bad memories. I keep a bin with all my prototype and defective units in it.
The 4th unit shows no signs of what is wrong with it. It simply will not power up. No telling what the deal is and I’m opting to junk it instead of tearing it apart to find why it won’t power up. Everything on the board looks just fine, so I am thinking perhaps I damaged an IC. I was having some problems with heat transfer on the soldering iron the other day. I finally turned the heat up on it which helped, but I think the unit is just ready for replacement. It’s possible I stayed on a pin too long and burned the IC.
I did manage to salvage my last prototype unit. This unit was production ready but exhibited the power instability. I replaced it’s capacitor with a 4.7uf unit and it works just fine and passed programming and testing just fine. It does have a minor difference in the input, so I’ll send it to my Dad who had ordered one of the units on Kickstarter. I know he won’t be using the input on it so it won’t matter. Everything else is identical and functional.
While some would consider this dirty laundry and hide it, I consider it just part of developing electronic products. Anytime you manufacture something you are going to have failures. It’s nice to be able to pinpoint the cause, but it’s more important to have quality checks in place to make sure you ship good product. Sharing the ups and downs will ultimately help others who want to assemble kits and make products.
I updated the manual for TTKS today. There were two important changes based on observations during assembly of units.
The first observation was that the USB-B pins were susceptible to being bent and needed to be carefully aligned prior to insertion. While USB-B is a nice durable connector, I will be thinking hard about it in future projects. More on that in a separate post about how people want specific applications, not general purpose widgets.
The second change was moving the BC517 insertion to a later point. The BC517 uses an annoying triangular foot print which does not match how the transistor comes from the factory. This requires bending the pins and then fussing with them to get them to go in. The net result is that the transistor won’t go in all the way and every board is a little different in terms of how far you can get the transistor in. Push too hard and you’ll collapse the pins. When it is inserted early in the process it is subject to stress during assembly.
Thus the simple solution is to leave the BC517 to last. This allows it to be protected by the relay which on average sits higher than the BC517.
This week TinyTimer Kickstarter Edition completed. A minor adjustment to the components was needed to provide more decoupling. It is now shipping. If you have not ordered one there are several units available through Tindie or eBay.
Assembly instructions and documentation is available on the product page.
I am very happy to share that TinyDelay is completed. With a kit price of $13.65 plus shipping this is a fun ATTiny85 based kit. The code uses an interrupt on the input pin to initiate an “on cycle”. As with all Nanohawk products it can easily be modified for other applications. The input pin header is connected to ADC2 on the ATTiny to facilitate use with sensors. The board also features a 6 pin ISP header for easy programming. Power is supplied via the durable and common USB-B jack. The relay is over-rated 10A@250V and a PCB design capacity of 4A @120V which should ensure a very long application life. For applications where direct control of AC current is being used the contact side of the relay has a resistor and capacitor filter.
The kit is available through Tindie.com, more details available here
I received word yesterday and today that the next few prototype boards are headed my way from the great folks at OSHPark. The products headed in are TinyDelay, TinyPLC Solo, and TinyTimer Kickstarter.
TinyDelay is an input sensing delay timer. Push a button and it turns on (or off) a relay for a set period of time. It’s a new product that is aimed at specific applications like exit gates or lights. Kit price will be approximately $13.50
TinyPLC Solo is a single channel Arduino compatible PLC. It has a single analog input and a single output channel. It can handle whatever logic you program into the 32k of RAM. Arduino IDE is convenient and easy to use. Kit price should be around $20.
TinyTimer Kickstarter is TinyPLC with an LED Interface and buttons for field programming. It makes it easy to program run time and total cycle length for non-hackers. Kit price is about $50. The big leap in cost is due to the cost of the additional PCB space, LED Driver chip, and LEDs. The LED Driver chip alone adds $10 to the parts cost.
I sold a TinyTimer-Classic with assembly today. The assembly went fine… the testing did not. After several hours I concluded that sharing the MOSI/MISO lines was causing grief. After wrestling with several alternatives, I decided to retire TinyTimer-Classic. It will be replaced with an upgraded board called TinyPLC. This is an Atmega328 based unit and essentially rolls forward the work of TinyTimer under a more appropriate product name.
The new unit will increase in cost due to the larger PCB and the beefier Atmega328 cpu. While I regret increasing the cost of components, it is still a bargain compared to the cost of an industrial PLC.
Here is a preview of the board:
Should have the initial boards in hand at the end of the month. This is the core design involved in TinyTimer Duo and TinyTimer KS. Look for the following product developments:
TinyPLC Single (this unit)
TinyPLC Duo (TinyTimer Duo)
TinyPLC Quad (4 channel version) I have to review the pin availability, but I’m pretty sure this is do-able.
I spent some time tuning the TinyTimer design with the interface. I realized I wasn’t happy with simple pins for the input and logic connection points. I changed them to terminals which set off a cascade of space issues. I wound up re-laying out the entire board this evening to deal with some space constraint issues.
Added a top layer ground plane to resolve some ground plane issues. Incorporated some best-practices settings from Sparkfun to increase manufacturing tolerances by setting higher separation values.
The big change is that I put the LED driver at the top of the board to isolate all of it’s traces and get them out of the way. The input buttons moved to the bottom of the board where they are easier to manage. The run/program jumper moved to the other corner. It will be important for people to disconnect the load before programming.