Saturday, November 30, 2013

YALEDD! 16x16 LED Display

I would like to present to you "Yet Another LED Display" (YALEDD!): a 16 by 16 LED Display. I am currently taking an engineering project management course and one of the objectives is to take a circuit from design to implementation while sticking to a schedule that we define.

The class was instructed to choose a simple circuit such as an LED flasher or a simple sequential state machine composed of discrete logic, capture the schematic, layout the PCB and have it made by the end of the term.

I decided that it would be boring to design a simple state machine. I also thought it might be pretty cool to have an electronic gizmo of my own design to show off on my desk at work.

Something Special :]
This display utilizes constant current LED drivers to regulate 10mA through each of the LEDs. I have not used multiplexing to drive this display. I've done multiplexing in the past, and the STP16CPC26 drivers looked like they would be fun to experiment with. The entire design uses surface mount technology (aside from a couple of connectors) and was hand assembled by yours truly.

PCB Back
A Sea of LEDs

Sunday, September 15, 2013

ARM Bare Metal Programming

Embedded systems programming has been a passion of mine for a couple of years now. I really enjoy bringing a processor online and making it dance to the beat of my drum. Over the past few days I have taken an interest in writing my own linker scripts, start code and a CRT0 (C Runtime). In this article I will give you some background as to why this is important. I will guide you through the steps that I have taken to bring an ARM processor from reset to main() and beyond.

I am using the SAM4E16E processor on a SAM4E-EK development board. I have the Atmel SAM-ICE debugging tool to facilitate loading code. The steps that I am taking in this article will be very similar for other ARM processors. I did some bare metal programming on the Raspberry Pi about a year ago and it was similar.  My development host is an up to date Linux Mint 15 system.

Debugger (front) and Evaluation Kit (back)
SAM-ICE and SAM4E-EK

Monday, September 2, 2013

Networking a Home from the 1950s

The year is 1957. The world is being taken storm by a wave of new technology. The first artificial satellite Sputnik 1 was launched and Elvis Presley's Jailhouse Rock was holding the number one spot on music charts around the world. All of this happened, of course, long before I was born.

Along with these exciting historical events, a small home was built in Stoney Creek, Ontario. My parents have recently purchased this home with the intention to renovate it into the 21st century.

The front of the tired old home (before new windows).
Date of Manufacture
I was tasked with networking the home and I decided to take some pictures along the way. I have retrofitted Cat6 and RG6 into each bedroom and living space to pave the way for Home Theater PCs (HTPCs) and "Smart TVs". We use Channel Master 4221 antennas to receive local terrestrial ATSC signals. The RG6 will distribute this signal into each room. I purchased most of the supplies from the local Nutech Electronics and Home Depot.

The Cat6 and RG6 lines departing from the electrical panel. Looks good :]
Read on to see more details!

Saturday, August 3, 2013

NI LabVIEW HD44780 Driver

I have always had a place for LabVIEW in my toolbox. My opinion of it varies from week to week but I am settling on the side of appreciating what it brings to the table. It is an intriguing software package that allows you to write programs using graphical block diagrams. It is targeted primarily for scientists and engineers (read: non-programmers). I am a seasoned programmer with experience in C, C#, Java and a whole pile of other languages so it is fun for me to use LabVIEW and think about it as if I am using C. I taught myself LabVIEW over the past year by working on increasingly complex projects.

I recently got my hands on a National Instruments USB-6009 Data Acquisition (DAQ) card and decided to write up a driver for the classic Hitachi HD44780 LCD controller. I used the object oriented features of LabVIEW to implement the driver. This allows multiple instances of the LCD to exist concurrently which means that I can have multiple displays interfaced to my PC simultaneously. The results were great!

The Initialized and Functional Display :]

I I released the code on NI Developer Zone. Read on to see how I did it!

Friday, July 19, 2013

Programming the Vintage Intel MCS-48 Microcontrollers

I have had a box in my parts collection for a few years that contains a variety of interesting vintage components. The most prominent are the Intel 8035L microcontrollers. These microcontrollers are from the Intel MCS-48 (commonly known as the 8048) line. They have 64 bytes of RAM and access to 4096 bytes of external program memory. Thankfully they are not the one-time-programmable (OTP) variety so I am free to put them up to any task. These processors have a copyright date of 1977 which puts them at roughly twice my age.

There are also a couple of different EPROMS: D27256, with a copyright date of 1984 and D2758 with a copyright date of 1977. Obviously whoever owned these components prior to me was building some interesting embedded systems.

Vintage ICs
They are in relatively good shape. I would say that these are socket pulls. They have some signs of prior use (adhesive on the quartz windows). These may have also been "development" units.

These components coupled with my new EPROM tools were enough for me to bring this vintage processor online. I managed to get the classic blinking LED working as shown on the top trace of my oscilloscope.

Intel 8035L in Action :]
Continue reading to see how I did it!

New EPROM Tools!

I have ordered some tools to experiment with EPROMs. I ordered a "Universal Memory Programmer" that goes by the name MEMprog2 from eBay user cosmicmedevac. The unit arrived quickly and very well packed.

MEMprog2 Programmer
MEMprog2 Programmer
I was able to load a file onto an old Intel D27256 EPROM that I have and then read the file back successfully. The programmer is a very nice piece of gear with device coverage of over 15000 units.

I have also ordered a very low-cost EPROM eraser from eBay user techex_us. This unit also arrived quickly and well packed. It is definitely a piece of gear that I do not plan to leave connected to mains unattended. The entire device feels quite cheap. The AC power cord is thin and the rotary dial seems to have a mind of its' own. The one small piece that I do trust is the mains power switch. I can't complain for less than $25 shipped.

Cheap EPROM Eraser
I had no trouble erasing a few EPROMs in this little oven. I am quite happy with the product despite its' quality shortcomings.

I have a box of Intel 8035L microcontrollers (from the MCS-48, 8048 line) that have been in my collection for a few years. They have a copyright date of 1977 on them. I plan to bring one of these processors online on a breadboard. It should be interesting to experiment with a processor that is nearly twice my age.

Sunday, June 23, 2013

Villard Cascade Voltage Doubler

I recently watched an interesting EEVBlog video about Villard Cascade Voltage Doublers. I have had some neon tubes (NE-2) in my parts collection for a few years now. I have always wanted to drive them from a relatively low voltage DC supply. I decided to spend the afternoon/evening designing a circuit to drive the neon tube from a 12V supply.

The Glowing NE-2 Neon Tube

Sunday, April 28, 2013

Homebrew Solder Fume Extraction System

Over the past year I have been slowly building a solder fume extraction system. It has been a slow project because there was no real push for it. I have been doing a lot of soldering lately and decided that it was time to wrap it up and blog about it.

This system is based upon a vacuum cleaner. I am using a vacuum that goes by the trade name Shop-Vac. They are well known for their tremendous reliability on construction sites and other rough applications. I chose this vacuum because I assumed it would be up to the task of extended run times under medium to high load.

Here are a couple of pictures of the completed system:
The lab side of the completed fume extractor.
The garage side of the fume extraction system.
Here is a video demonstration: