Category Archives: Network PDU-S


Network PDU-S: RevA Complete!

Here it is!



The final product turned out pretty great.  I’m glad I followed through and turned RevA into a fully functional product despite the constant desire to redesign every time I ran into issues.

  • Silkscreen text too small.
  • Instead of 22uf Ceremic caps switch to 47uf electrolytic for cost savings
  • Shink size of SOIC pads so they get less solder
  • Use 4mil stencil
  • Add stencil alignment tooling holes to board and stencil 
  • Reduce BOM.  Since I’m used to working on high performance RF devices I tend to use too many bypass caps for such a low speed design.
  • Use smaller microcontroller.  The ATMeega2560 was too large physically, feature wise, and cost wise.
  • Use smaller vias
  • Figure out how to use interrupts with wiznet to cut down polling
  • Reduce board size.
    • Switch to using 2 boards: 1 for relays+ drivers, and the other for the main circuitry.
    • This will allow changing the relay board for some NEC UB2-12NJ relays if I want to do a low-voltage version.
    • This will allow the main RJ45 jack to butt up to the back panel.
  • Add the Wiznet reset line to avr so I can reset manually if watchhdog timer fails.
  • Test points!
  • Bottom size copper keepout around relays to avoid arcing
  • Add an LED per relay.
  • Add power monitoring per outlet
  • Finish zero crossing detector to improve relay lifetime.
  • Switch the Power button LED to a port with PWM output so I can do the “breathing” LED effect.
  • Make the power-monitoring module an addon (CT, Zero crossing, Vsense)
  • Mirror RJ45 differential termination so they stay coupled better.
  • Enclosure cutout for the IDC power inlet was the wrong size.  Had to file it down a bit.
  • Need a rear on/off switch with integrated 15A breaker for power cycling the logic.


Network PDU-S: Wiring it Up

Enclosure Arrived

The enclosure arrived.  Of course I jumped right into assembly.  The only design defect with the case turned out to be the IDC connector.  I must not have used the right 3d model because the radius on the corners is a little different.  A few minutes of filing and we are up and running.


The Button

I created a sub-assembly of some rainbow wire, a 4pin Molex connector, and of course the beautiful button.
Adding the Connector

Completed cable

Completed Button

110VAC Wiring Harness

When I originally designed the PCB I assumed that if I had receptacles and relays that both had quick connect terminals that cabling would be easy.  I was wrong.  Cabling up the 110VAC lines turned out to be one of the more difficult tasks.

Wiring only had a few requirements:

  • Functional
  • Clean routes
  • PCB must be able to be removed
  •  Safe enough to pass UL listing.

Once again, choices made early on in the design turned out to be based on invalid assumptions.  For example, i thought for sure i would be able to find a 11AWG Fully Insulated 90Degree Flag crimp connector with a tab width of .187″.  Nope.

After much deliberation, I made the painful decision to soldering the Neutral and Ground wires directly to the outlets.  I also soldered the load wire to the relay terminals.  So much for “quick” connects…
Finally, I ended up repositioning the PSU to keep the wiring tidy. For now I’ll just tell myself that RevB will have better wiring.

Everything will be better in RevB.

Fully Insulated 90degree Flag Quick disconnect Crimp Connectors
Load, Neutral, Ground All Routed.  Just need to connect PSU

Network PDU-S: Enclosure Design


When I first found out about Protocase from a Midi Workstation project listed on Hack A Day I couldn’t wait to design something to take advantage of their service.

The Protocase website has a template generator that will create a complete assembly for use in your CAD program so you can get started right away.  I chose Solidworks since that’s the software I’ve been using.

Engineers at Protocase were very helpful and were able to use the 3d Solids directly which was great.


Original assembly from Protocase

With the Protocase assembly generator I was able to start with a model that was 90% complete.

I attempted to import my VRML 3d PCB model directly from Kicad.  Unfortunately, I never quite got that working so I ended up making a simple model of the board outline and mounting holes in Solidworks.

From the various manufacturer’s websites I was able to find 3d models for the PSU, IDC Connector, and the RJ45 pass-through jack.  This not only saved time but also gave me confidence in the design.  I couldn’t find any model for the NEMA 5-15 outlets so I made one using the suggested panel cutout drawing.

Completed Assembly Isometric

When I designed the board I included 8 relays, however when it came to designing the case it became obvious that 8 switchable outlets can’t fit on the back.  I thought about making the front outlets switchable, but it didn’t really fit any of my use cases.

In the future I will need to spend more time on a top-down design of the project before jumping into the sub-assemblies like the electronics.

Exploded View

Network PDU-S: Hello World

Debug Environment

This is what real work looks like

In order to debug I used the following:

  • ICSP Programmer. I use the UsbTinyISP programmer from Adafruit.
  • Network Serial Port.  I use a BrainBox ES246 network serial adapter so I can access the serial console while on Wifi since I like to debug while lying in bed.
  • Current Limiting Bench Power supply
  • Fluke 87v DMM
  • Rigol Oscilloscope



Arduino Environment

Before I could even get started debugging, I needed to create a custom boards.txt and pins_arduino.h files so the Arduino programming environment would know how to map things like the friendly “LED_BUILTIN” to the actual I/O register.

 To keep thing simple, I started with the timeless “Led Blink” sketch. 

Wiznet W5100 Debug

Programmer, Serial Port, and Ethernet Hooked Up

I discovered a short on the 1.8V LDO output of the W5100.  After some rework with the hot air and some solder wick I managed to repair the short.  It looks like I made the pads extend under the device a little too far making it very difficult to clear a solder bridge under the IC.

After that, it was smooth sailing…well not exactly. The 3.3v and 1.8Vdd and 18.Vda rails all were outputting the correct voltage, and much to my surprise the Link and Activity lights on the RJ45 mag jack were lit, so at least the chip was alive.

Oscilloscope and Hot Air Rework Station

I probed around the SPI bus a bit, I discovered the SlaveSlect signal was not toggling.  It turned out that the SlaveSlect pin was hard coded in the Arduino Ethernet library.  Having it configured with a header or constructor would have been much better.  Nevertheless, another quick hack and the Arduino Ethernet tutorial I was using was fully operational.  Hello World!


Network PDU-S: Schematic

Circuit Design

The Network PDU-S will be based on the Arduino Ethernet board, however instead of the ATMega328 I’m going to use an ATMega2560.  This is the same chip that is used in the Arduino Mega, and I’ve used it in several designs before so I’ve already got most of what I need to create the schematic.

For the Ethernet controller, I’ve chosen to use the same Wiznet W5100 chip as the Arduino Ethernet so I can take advantage of the existing code libraries.

I’m including a Max232 RS232 to TTL level converter in the design.  This will be used for debugging, and possibly included in the final product to send/receive commands to RS232 compatible devices.


Here’s the top level schematic designed in Kicad:


Network PDU-S: High Level Design

Design Requirements

1. Its simplest function is power distribution.  the Network PDU-S  will provide a 6rear + 2front outlet power strip.

2. This device includes a programmable sequencer that allows you to power equipment on/off in a specific order.

3. This device includes network control.  From a webpage you will be able to configure the sequencer settings as well as toggle individual outlets on and off.  The device will also be able to send commands to other sequencers allowing you to control the power-up sequence of equipment at remote locations via the internet.

Motivation for this project

1. I travel a lot for work, and sometimes I need to remotely power cycle the servers in my home data center.

2. For my A/V work I need a power sequencer to turn on the sound board and amplifiers in a specific order to avoid equipment damage.

3. In some A/V venues I need to sequence equipment in the sound booth, on stage, and also back in electrical rooms.

4. I would like to get per-outlet power metering so I can closely monitor peak/average power consumption of all of my equipment.

 High Level Design Document

High Level Block Diagram

I created this diagram with DIA diagram tool..