1. New to Christmas lighting? Get started with the AusChristmasLighting 101 Manual:
    auschristmaslighting.com/wiki/AusChristmasLighting-101

64 channel Arduino based Channel E1.31 PWM controller (for dumb pixels)

Discussion in 'DMX, E1.31 & Networking' started by elnino, Oct 4, 2014.

  1. elnino

    elnino Full Time Elf

    Joined:
    Aug 1, 2014
    Messages:
    137
    Likes Received:
    0
    Following on from the Arduino based Pixel controller I posted yesterday, I would like to share my work on a dumb pixel controller i completed some time ago.


    The breakdown cost per module is something around the $30-$40 mark depending on your skills and resourcefulness.



    This one is based on 2 arduinos - One handles all of the E1.31 stuff and the other controls an array of shift registers. They speak to each other via i2c.


    Why 2 arduinos? The main reason is that the shift registers need to use the SPI port and so does the ethernet module - The arduino only has one SPI port. It also allows the PWM stuff to be offloaded for faster operation.


    Is this the best way to do it? Probably not but it works and is cheap. I have built 4 of these and they work well. See the end of this post for possible improvements/warnings etc. Also note that the ones I built were the first prototypes and are not the exact designs posted here. The pictures represent the initial design.


    So, on to the show...


    2014-10-04 10.05.15.jpg 2014-10-04 10.05.23.jpg 2014-10-04 10.05.43.jpg 2014-10-04 10.06.00.jpg


    The boards were designed in sprint layout, there is a free viewer available from Abacom which enables you to print them out for etching your own PCBs but these particular ones were isolation routed on a CNC machine.


    Parts sourcing
    Each 'cube' requires:
    2 X Arduino Pro Mini http://www.aliexpress.com/item/Free...e-Media-ATMEGA328P-5V-16M-for/1832692835.html
    1 X ENC28J60 Ethernet module http://www.aliexpress.com/item/ENC2...-LPC-STM32-3-3V-free-shipping/1334967553.html
    8 X 74CH595 Shift Registers http://www.aliexpress.com/item/Free...C595N-74HC595N-74HC595-DIP-16/1570657157.html
    16 X PMV16UN FETS http://au.element14.com/jsp/search/productdetail.jsp?SKU=1894627RL
    32 X Right angle 2 way push connectors http://www.aliexpress.com/item/Free...onnector-Spring-termnal-block/1894179668.html
    8 X 0.1uf Capacitors - Jaycar $0.4 each (or source some cheaper ones)
    PCB - Jaycar sell a large sheet that is enough to build 4 of these for about $20

    *** Note: The Arduino pro mini and ethernet modules are specific ones and not 'generic'. The ethernet module has an onboard 3.3v regulator so it will run from 5v and the arduino has a slightly different pinout from most pro minis. There's no reason this can not be changed but for 'plug-n-play' you will need these ones.

    *** Note 2: These FETS are TINY. You will need a good soldering iron and a steady hand to be able to solder them. The technique I used was to tin the middle pad on the PCB and then use fine point tweezers to locate the FET in place and 'reflow' the solder to the middle pin. This is then enough to hold the chip in place to solder the remaining 2 pins, then come back to the middle pin to make sure it's properly soldered.


    For final assembly I used some PCB risers from Jaycar but they are very expensive ~$10 for 25, I would suggest sourcing them from elsewhere.


    I also used some 'pins' from an old multi-level PCB for the power, data and ground plane connections between the boards. Use what you want there. I have made the pads on the 5v and Gnd connections very large to allow for larger holes to be drilled for higher current capability.


    [​IMG] [​IMG]

    PCB Files
    http://woodcroftlights.info/files/Top Board.LAY
    http://woodcroftlights.info/files/Sub Board.LAY


    Arduino Sketches
    http://woodcroftlights.info/files/ENC28J60_sACN_Rx.ino
    http://woodcroftlights.info/files/slave_receiver.ino


    Notes:
    As you can see, in the picture from the bottom, I have added a fillet of solder to the ground plane to increase it's current handling ability. I have not tested these modules at full capacity but in theory, each channel is capable of switching about 5A at up to 20v. Do not go past these values or expect a slightly different type of light display.


    If someone wanted to redesign the system, another way that could be more efficient would be to remove the 2nd arduino and replace the shift registers with WS2811 chips to drive the FETS instead. This might work better but would likely drive the price up.


    I am not happy with the ground plane connections to the back set of FETs - Its a bit messy but it works. I used bent over PCB header pins to link them all. There is also a connection to the Capacitor in the middle of the board to connect with it too (red lines)


    There is no protection from spikes, reverse polarity, interference etc. You may need to add capacitance on the main power feed to smooth power to the module and be extra cautious with power connections.


    Ensure that if you are using multiple power supplies/voltages that all of the ground planes are tied together - For my setup I am using PC power supplies (or more specifically SERVER power supplies) capable of almost 100A on 12v rails and about 60A at 5v. These already have common ground between the output voltages.


    Disclaimer: I am not an Electronic engineer, nor do I claim to be an expert of any sort in this subject. This information is provided as-is with no warranty of any kind, It's just something that works for me. You may not have the same results. I am not responsible for how you use this information in any way. (Reminds me of the Vixen license disclaimer)
     
  2. AAH

    AAH I love blinky lights :) Community Project Designer

    Joined:
    Dec 27, 2010
    Messages:
    2,622
    Likes Received:
    36
    Location:
    Eaglehawk
    Find Me On:
    Nice post and great info and I'm glad that you decided to share the info here. A further note that most non engineers or experts won't pick up. The mosfets that you've used are rated at 5.8A but with the following specification. Device mounted on an FR4 Printed-Circuit Board (PCB), single-sided copper tin-plated, mounting pad for drain 6 cm2. Because you can't reasonably get that 6cm2 on the board the mosfets need to be derated to probably 1A or the "on" time limited to well under 100%.
    Also, as per our PM's back and forth many weeks ago, the WS2801 is a much easier chip to pump data out to than the WS2811. Putting an inverter or buffer in between the pixel chip and the mosfet allows the gate of the mosfet to be driven harder which reduces the switching times and provides a more linear response.

    As an edit. I just realised that if you are only using the 2nd board for the PWM control then you could easily get away with using 1 board and 2801 chips as it is dead easy to bit bang the data out to them and the timing isn't even remotely critical and you could do it with pretty well any 2 outputs.
     
  3. OP
    OP
    elnino

    elnino Full Time Elf

    Joined:
    Aug 1, 2014
    Messages:
    137
    Likes Received:
    0

    Very right, I did miss that from the spec sheet. However, I have run them at 3A and have not noticed any heat buildup.
     
  4. jtruax773

    jtruax773 New Elf

    Joined:
    Oct 25, 2013
    Messages:
    2
    Likes Received:
    0
    I'm not able to compile/upload ENC28J60_sACN_Rx.ino

    I get the following error, any ideas?


    'void sACNPacket(word, byte*, const char*, word)' was declared 'extern' and later 'static' [-fpermissive]


    this is the line it doesn't like..
    static void sACNPacket(word port, byte ip[4], const char *data, word len) {
     
  5. OP
    OP
    elnino

    elnino Full Time Elf

    Joined:
    Aug 1, 2014
    Messages:
    137
    Likes Received:
    0
    I think the version of the ethercard library i used was older and some recent changes broke my code. Try an earlier release of the library. If you are totally stuck i can fix the code or send you the library i am using.
     
  6. jtruax773

    jtruax773 New Elf

    Joined:
    Oct 25, 2013
    Messages:
    2
    Likes Received:
    0
    Thanks for the response, I've tried several older versions without luck..
     
  7. rusha34

    rusha34 New Elf

    Joined:
    Nov 25, 2015
    Messages:
    1
    Likes Received:
    0
    I am having the same issues as jtruax773, I have also tried a few older versions but still cannot get it to work. el nino - are you able to send me a copy of the library you are using?
     
  8. OP
    OP
    elnino

    elnino Full Time Elf

    Joined:
    Aug 1, 2014
    Messages:
    137
    Likes Received:
    0
    We worked out it is not the ethercard library but infact the version of the arduino ide casuing the conflict. Grab 1.6.1 and you will be fine
     
  9. Lishfish

    Lishfish Full Time Elf

    Joined:
    Dec 26, 2016
    Messages:
    137
    Likes Received:
    13
    Location:
    Adelaide
    Find Me On:
    Dont suppose you still have the coding for this or can point me in the right direction?
     
  10. OP
    OP
    elnino

    elnino Full Time Elf

    Joined:
    Aug 1, 2014
    Messages:
    137
    Likes Received:
    0
    It's there right in the first post, just under the PCB Pictures.


    If you want a leg up on one, I have one that is a bit damaged but salvageable...
     
  11. Lishfish

    Lishfish Full Time Elf

    Joined:
    Dec 26, 2016
    Messages:
    137
    Likes Received:
    13
    Location:
    Adelaide
    Find Me On:
    totally missed that thanks.
    do i need to change anything to get it running with xlights?
     
  12. OP
    OP
    elnino

    elnino Full Time Elf

    Joined:
    Aug 1, 2014
    Messages:
    137
    Likes Received:
    0
    Just set the IP and E1.31 universe and that is about it...
     
  13. Lishfish

    Lishfish Full Time Elf

    Joined:
    Dec 26, 2016
    Messages:
    137
    Likes Received:
    13
    Location:
    Adelaide
    Find Me On:
    Easy thanks :)
     
  14. andy932

    andy932 New Elf

    Joined:
    Dec 10, 2017
    Messages:
    2
    Likes Received:
    0
    does anyone have the code. when I try go to the links it takes me sumwere else.
     

Share This Page