LED Strip Dimming

I’m using LED strip lights for a model I’m working on. The trouble is, they are too bright. You can buy dimmers for LED strips fairly cheaply, but they are overkill for my purposes – I’m only using a portion of the strip therefore the current is low and I want a small, non-bulky circuit that I can pack in neatly with the rest of the electronics.

LEDs are always on, or off, so dimming is done by switching them on an off very fast – PWM, or Pulse Width Modulation. I’ve noticed I’m very sensitive to the flicker rate on dimmed LEDs (low refresh rates can give me headaches), so another benefit of building my own dimming circuit would be to get a higher cycle rate than a purchased dimmer might offer.

The first step was to use the trusty Arduino to get the parameters for the pulse width and duty cycle, i.e. how often to refresh, and how long each pulse needs to be low to achieve the right amount of dimming. A quick bit of breadboard work and a little code told me that I needed a pulse width of 2ms or less and a duty cycle of <10%.

Armed with that, I designed a hardware circuit to mimic those outputs using a 555 timer IC in astable operation. Low duty cycles with a 555 need some special allowances in the circuit (a Schottky diode). LTSpice is great for mocking up circuits, to confirm the calculated component values and test the outputs by tweaking them:


R2 is the key component that controls the duty cycle (hence the amount of dimming). To allow for a bit of adjustment and leeway, I used a trimmer potentiometer for this so I could adjust it in-place on the model to account for varying ambient light conditions.

Finally, I added a current amplifier to the output to ensure the 555 was not drawing excessive current. A 2N222 transistor could supply 800mA – comfortably more than the 400mA for the meter length of LED strip.

A little on-line shopping and soldering on veroboard, and here’s the final circuit in action, ready to go:

TeraServer 2

I need an upgraded server. I want something that can handle replication of a SaaS database with on-disc encryption. Keeping with my habit of building my own machines, it would require more space than my current TeraServer could provide, and frankly the disk access times are a little slow now on the old one (I suspect the RAID backplane I sourced wasn’t capable of delivering the SATA-2 speeds the drives could). It’s being used for far more applications than I had planned too.

5 years is a long time in hardware and I’m amazed to see how storage costs have dropped further. This time I could get two disks that would provide me with full drive RAID redundancy at a capacity of 3TB at SATA-6 speeds. That means I could go for the 1U rack mount case at mini-itx.com (C2-RACK-V3). This case also supports a PCI-E card – so I can add a video capture card for some security monitoring using ZoneMinder too.


The drives are fast and surprisingly quiet too (Seagate 3.5″ 3TB Barracuda 7200RPM). To ramp up the system performance of this one even further I used a Crucial M4 SSD for the Linux system partition. That was a new experience! The thing boots in seconds.

With the spinning drives mounted using rubber washers to reduce vibration and noise, the three drives fitted in comfortably, with room to spare.


For the mainboard, I wanted something with a bit more processor power (it would need to handle Linux software RAID and video capture analysis for ZoneMinder). It also needed to fit the case and I didn’t want any cooling fan that would add to the height and noise. Eventually, I found an Asus C60-M1 at a very good price from an on-line store in Germany. It was a compromise – the processor is the same clock speed as the previous server board, but anything higher wouldn’t come fanless. I settled for the same clock speed (but twice the cores helps!) It fitted ok in height, but there was a bit too much of a gap between the board and the chassis back-plate. I don’t think any of the provided blanking plates would cover the entire back-plate either. That wasn’t important for me anyway.

4GB of 1333MHz DDR3 RAM would be plenty to handle the extra Linux apps I have been (and will be) running on the server. With that amount of RAM, I could even run the Linux tmpfs in a ramdisk to make it even faster.


I installed Centos 6, configured the drives, and I’m amazed at how fast this little mini-itx powered beast flies compared to my previous creation. 5 years is a long time in hardware.

TeraServer Project – Part 2

Choosing RAID configuration means deciding on priorities – which is more important: available disk space or failure recovery? In a production system I would choose differently, but for a home server, having bought four disks, I wanted to maximize the storage potential by using the facilities of RAID to combine the disks into one volume (it is a TeraServer after all!). I also wanted to get some of the benefit of RAID failure checking and recovery – it would be storing all my important files (yes, I have backups too). In the end I decided to allow for 1 drive failure to maximize volume, and settled on a RAID-3 configuration. In the end, after building the RAID array, mounting it as a Linux volume, and allowing space for system partitions and Linux files, I was left with about 825GB for storage.

So with the arrival of the SCSI disks and Adaptec SCSI RAID card, I could begin.

Getting the RAID caddy into the case was fairly easy. I just cut out some portions of the metal front plate, and the caddy slotted into the chassis four-bay drive frame perfectly. Good choice.

One thing I was keen to try on this project was to add a cool front status display. There was just enough room on the case below the drive bay to fix a 4-row backlight LCD display. Next to it, a recessed power button. Finally, I added a new plastic front-plate, cut to fit the custom parts and sprayed the whole thing black and the case externals were done.


The internal space was – tight! There was plenty of room at the back, behind the drive bay above the mainboard, but the mainboard runs some of the way underneath the drive bay. This left some contact between the SCSI card and the RAID caddy. Some precautionary insulation of the bottom of the RAID caddy with electrical tape solved that problem. I also added some sound baffling and insulation around the top of the RAID caddy.

Another issue was the LPT connector on the board. This was how the LCD display module needed to be connected to the mainboard. Clearance was tight for the LPT connector, but the bigger issue was making the internal! I bought a standard shielded parallel cable, cut it, and armed with some veroboard, a soldering iron, LPT pinouts and the HP LCD module tech sheet I had a custom parallel cable made!



With all the hardware done, it was time to install the OS. I wanted a stable server distro, so opted for CentOS Linux. The install process picked up the correct drivers (I just had to provide the Adaptec storage driver). I installed Samba to share out the drives, VNC server to connect to administer it (local subnet access only), and I had my TeraServer! The trickiest part was getting the LCD display to work. Parallel ports are rarely used anymore. With a bit of research I found an open-source lpt driver to install. Finally, configuring and installing LCDproc for my display module gave me a server that really looked like it means business.


$1000 less than buying one, and all the fun of the build too!

TeraServer Project – Part 1

I need a server. It’s been on my mind for a while that I want a low-power, low-noise, compact server for storing all my work and personal files. I also wanted it to act as an always-on media server for playback of music and old digitized VHS tapes. That all needs quite a bit of storage capacity. Disk storage costs have come down now to a point where I can consider a home TeraServer. Home NAS devices are available but they are still pretty expensive (that’s before you even price in the hard disks.)

Whenever possible, I try to build my own home computers (I do draw the line at building custom laptops however), so building a server would be a fun new challenge. I would install Linux and use that to provide the file serving capabilities. Most NAS devices use Linux anyway, but a Linux install that I could customize would allow complete flexiblility in what the server could be used for later on.

On the hardware side, the TERA-ITX project inspired me. I could use a mini-itx motherboard and a small form-factor case. The storage could be done with four 250GB disks, configured in a RAID array. I decided early on not to consider using software RAID because it would just be another drain on the limited mini-itx processor. So I would need a hardware RAID card and a caddy for the disks. When pricing all that in, I worked out I could build it for a least $1000 less than buying a NAS and filling it with the same disks. A no-brainer!

And so to begin..

First, the motherboard. There were a lots of different specification mini-itx boards out there. The priority for me was to keep power consumption low – the case PSU would need to drive four SCSI disks, so I didn’t want an added drain from a powerful processor. A lower power processor would also mean less cooling, reducing power and noise further. The processor didn’t need to powerful just to server up files via the network anyway. Network speed was important, so a GigaBit on-board LAN was vital. In the end, I went for the EPIA-CN 1000

Next: the case. The case would need to support four disk RAID slots. There aren’t any such mini-itx cases like that at the time of writing, so I would just get a suitable cube form-factor case from mini-itx.com.


The front plate configuration didn’t matter because I would be cutting it out to install a front-loading RAID caddy.

Therein lay the first rub.

I thought it would relatively easy to get a RAID caddy that would fit the case. In fact, I found out it was very difficult to find a bare-bones SCSI RAID caddy. Most of them come embedded as part of a case.

With a lot of internet searching I found that some IBM servers have a removable RAID caddy that fits a four 3.5″ drive bay slot. Perhaps I could find one of those IBM RAID caddy spare parts. The server line was discontinued though so finding the part proved difficult, but serendipity had a part to play.


With a lot more internet searching I eventually found just one available – from a small, independent computer part supplier just twenty minutes drive away from me! I had never known about the company until now and when I went to collect the caddy found out it’s owned by an old childhood neighbour from down the road. Dublin can be a small place!

Goto Part 2 ->