Archive for the 'LEDs' Category
This morning I hammered out a quick and dirty method to scroll a message on my single character LED sign. The scrolling is based around a few subroutines. A text message of 12 characters is passed to the scroll subroutine, along with the number of loops to make. The scrolling routine breaks the text message down into individual bytes, and loads up a static 60 byte message buffer based on data from the font table. Each “scroll” iteration causes the program to copy data from the message buffer into a 5 byte display buffer. The message buffer address is offset by one byte each iteration. Since one byte equals one column on the display, this action cause the display to appear to scroll. Another sub routine watches the address pointer, and wraps it around to the beginning when appropriate.
We’ve all seen the various sites where someone put a massive led sign online, and they let people abuse it. What I’ve managed to build is a “single character” led sign. I don’t know if I’ll be able to get my sign online, but I’ll take a stab at it.
After wasting a lot of time to convert a font table I borrowed from somewhere, my little sign finally had a built in character generator. It can generate any of the printable original ascii characters (dec 32 to 127), and display them on the matrix. Data feeds into the sign at 4800 baud (I think i mentioned 19200 earlier – way too fast), and is displayed on the matrix for a few seconds.
If the display sits idle for too long, a basic screen saver (screen waster?) kicks in, and does a simple animation. Any received characters replace the animation and reset the screen saver timeout.
Although exposed, I haven’t implemented the i2c interface yet. This pc board has some issues, and is too large. I don’t like the connectors sticking out to the side like that, so it’s back to the cad package to try and re-arrange things a bit. I think I will fork this design into two separate paths. One async serial (rs232), and one sync serial (i2c / spi). The sync version would be used as a display for other projects. The async version would be hooked up to a PC, and programmed with a simple message. Once detached, the display would just repeat the message over and over. One problem I ran into is storage. I had hoped to store text strings and the font table in eeprom, but the processor I chose, the 16f737 has no on-board eeprom. So instead, the font table is stored in the flash program space along with a few short text strings. The next revision(s) of the board will include a spot for a so8 ‘seeprom’ for extra storage.
I had purchased some huge (2″) 5×7 matrix a while ago, as part of my led sensor research. They’ve basically been banging around the lab since, getting pins bent and such. So this past weekend, I decided to put them to some other use. Their pin layout is sort of weird, it doesn’t match up with a breadboard at all (one of the reasons they never made it into the led research). So, I decided to make up some back-packs for them, or is it a carrier board? Anyway, the board features one 5×7 matrix, one pic 16f737, a few transistors and some data connectors. The board provides two means of serial communication; asynchronous rs232 at 19200 bps, or synchronous i2c at 100kbps. A second connector provides power and ICSP pins.

This project has no practical application as of yet. The main reason I made it was to improve on my double-sided pcb fab techniques. This time I found using point to point traces instead of a large “pour” made things work a lot smoother. I used the ‘sandwich’ method with press ‘n’ peel blue. Roughly 1.5 min per side.

One thing I had to keep in mind while doing this layout was accessibility to solder both sides, since I can’t through plate my own vias. So things had to be laid down in specific order. I soldered the vias first, using some cheap resistors with very fine leads as my conductors. The method involved sticking the resistor into the via, with just a bit poking out the other side, then bending the resistor 90 degrees and holding it to the board. Then a quick dab of solder onto each joint set them in place. Next, straighten out the resistor leads, and trim them off. Another quick few dabs with the soldering iron and each one was fully connected. Next came the smt parts. The switches were rather easy, but those blasted little 0603 capacitors always give me grief. I tin both pads, then apply a bit more flux as “glue”, then try to reheat one of the pads, to reflow the solder onto the part. It works great with 0805 and larger parts, but the little 0603 usually gets sucked onto the tip of the iron by the surface tension of the solder.
One hard choice I had to make was whether to solder the chip straight into the board, or use a socket. I opted for a socket, which meant a harder time soldering the “top” layer. Luckily, I was able to dig up some 14 pin machine pin sockets, and thanks to the machine pin itself, they stand proud of the board a little, just enough to sneak in with the soldering iron.
For whatever reason, I decided to solder the led display next, leaving the connectors for last. I partly wanted to see which side of the board the connectors would look better on… I think next revision, they’re going on the bottom. During assembly of the connectors, I nicked the display a couple times with the iron, oh well!
Right now, the display is flashing my initials. Oh, here is the schematic, nothing exciting really!

quick video:
This is the second incarnation of my tps61040 based LED driver (here and here). As I wrote just a few posts ago, I’m trying out a new layout strategy to make my gizmos more breadboard friendly.
The 300 mil (thanks Dave) DIP16 package proves to be very small, so small I had trouble trimming it completely while depanelizing.

Another problem I ran into is a high voltage output cap. Seeing that this circuit generates upwards of 28 volts, the typical inexpensive ceramic or tantalum capacitors just don’t have the dielectric strength to work well. So, that leaves few options. Option one involves parallel smaller value high voltage caps. I ordered a bunch of 50v 1uF 0603 caps, so we’ll see how that goes. Second option is electrolytic. Sure I’ll incur some losses in the capacitor, dipping the efficiency a bit, but hey, it’s not a perfect world. I found some 10uf 4.3mm x 4mm caps that should do nicely. Third option is expensive ceramic … weighing in at $1 to $5 ea, these caps must be made of lunar rock. I have not ordered any of these, but I will look into harvesting some from dead / old electronics.
Notice the cute little inductor. That baby is 10uH, 1 amp, shielded and only 6mm square. Designed for high power applications, it has a generous saturation current, and rather low resistance. Even better, it’s only like 2mm tall, and to top it off is the cost; 59 cents each at quantity 10. In case you’re looking for an easy to use and flexible inductor, the digi-key catalog number is 587-1707-1-ND.
This time, in order to have a simple board layout, I chose to permanently enable the chip, so they’re be no dimming on this version. I’m not sure if the chip supports a hot load disconnect, I did manage to kill my earlier prototype somehow, one of the output leads broke off the pcb while I was holding it, in a dark room. After repairing the damage, I only get a very low output. Perhaps my capacitor or diode was fried.

Here are the breadboard compatible pins. The three pins are the output area, with the one inboard pin being the led sink, where the current sensing resistor is attached. This layout required two ground pins, and an external jumper to connect them. I’ll remedy that in the next iteration.

This is the little critter doing it’s thing. Do you like that battery brand? SHAZZAM – it just screams power. I bought a BUNCH of these at a traveling tool sale show, 99 cents for 16. They’re not half bad for light loads, this little switcher sucks ‘em dry in a mater of hours however!
The huge size of my previous pcb layout kept bugging me … it was about 1.3×1.2″ and would have consumed more than half of the mint tin space! So, I spent few hours coming up with something a little more compact.

This second layout is more compact, but still a bit on the large size; measuring 1.2×0.9″. I won’t be able to make it much smaller, without going double sided, and thats just not something that’s easy to do at home.
I’m not sure what happened to the weekend, but it’s almost over, and I haven’t even dusted off a breadboard yet. Oh well!
