Playing with some animations of the single LEDs strip of my NeoPixel board was nice but the thoughts soon come to mind: “It would look better if there were more strips”, “…if there were more strips, how could they be coordinated”, to “Could I still use the ATiny1614?”.
I have written about the Timed LED Lighting Controller in previous posts. Starting with the original entry “Stairwell Foot Lighting System”. In this entry I will be wrapping up the project and describing the change of direction from the initial design and layout. There may be a bit of overlap but it will be minimal as the project took a small deviation along the way.
For a while now I have been intrigued with Integrated Light Sources i.e. NeoPixels. I knew nothing about them and with the coming of Christmas, I was inspired to take a closer look. I knew I would not have anything in place before Christmas 2017. But there is always next year.
It has always been on my list to try a project with some wireless communication. I now have a project in mind but there are a few things to sort out first. I have not worked with any wireless at the embedded hardware level. This is not inteded to be any instructional post but my usual style of describing how I have approached this topic, what I encountered and how I worked around any issues I discovered. Maybe this might be of some help to others like me, starting at zero. Continue reading An Encounter with XBee
In the last entry for the Timed LED Lighting Controller, I realised that there are no working examples of an I²C driver for the ATtiny20. I then had to work through the data sheet to implement my own. With that done, I could then start on the application firmware and get the board really working. So this is where my proof of concept becomes the prototype.
In this post I describe the trials an tribulations of bringing up my Timed LED Lighting Controller and how I went about implementing my first I²C Slave Driver for the ATTiny20.
In the last post for the Timed LED Lighting Controller, I had figured out the circuit and a basic layout and approach that I was happy with. That is to separate the hazardous voltage from the control circuitry by putting it on a separate board. But still, this was not enough. I need to assemble this in a case. No hazardous voltage is allowed to be exposed. The idea of printing a case is attractive but I don’t really want to loose focus of this project. I can always reserve the printed case for revision 2.
I found myself feeling like I as facing a bit of a chicken and egg. Needing a housing to fit the board and having to make the board fit the housing. I also needed sort out a set of terminal blocks and ensure that they are in specification. The only way forward was simply have a look around and order some terminal blocks and cases and just to see what is out there. Photos and technical diagrams are great but to have the actual items in hand is much better. I decided to use Reichelt this time. I had not used them before but they had a good range of terminal blocks of various dimensions and configurations and I could purchase single units which was important for a look-and-see. I settled to take a look at a small selection
|Manufacturer||Pole||Spacing||Voltage / Current|
|Springcon||6||2.5mm||150V / 8A|
|Springcon||2||2.5mm||150V / 8A|
|Metz Connect vertical||2||5mm||300V/ 10A|
|Metz Connect angled||2||5mm||300V/ 10A|
The smaller units are not suitable for the hazardous voltages but I will still use them for the connections to the motion detectors (PIR13).
Without wasting too much time, I ordered two housings manufactured by Bopla. When they arrived, it was clear that I could use the smaller of the two (BOPLA KS 430) that I had ordered. There are undoubtedly other housing that would suite but this will do for the moment. I will, of course, have to modify the casing to expose the terminal blocks.
Now that the decision was made for the terminals and housing, I could look back at the layout with more confidence. This also meant a bit of a rehash. I had to add the footprints for the terminal blocks and their outlines to make sure they will fit on the board.
Revisiting the Layout
The next was the housing. This was a little more involved since I am going to stack the boards. I ended up making use of the dimensioning tool in KiCad so I could correctly line up the joining pin-header and the mounting holes.The outcome of this was that I needed to extend the respective boards so that they could get past the “assembly posts” for the housing and also that the terminal blocks will reach the ends of the housing.
The larger board has given me space to reorganise a few things. I have now collected all indicator LEDs into a single bank of LEDs. This will look a lot neater when they are exposed to the housing surface compared to LEDs that are placed simply where it is convenient on the PCB. The LEDs are to help with bringing the board up and there is nothing to say they need to be populated for the final version.
Going back on the question of Clearance and Creepage, the dimensioning tool as was also useful to verify the distance between the traces where they look a bit close. At the moment, according the the on-line calculators (Creepage.com and ANSI PCB Trace Width Calculator) I have checked, seems to be in specification – further verification is required.
Mocking the Board
On the screen, it was all looking good, but I was still not confident I had covered all the possible issues. It was then I decided to “mock” the board. Simply print it out and paste the images to some card board and cut them out. I could then use a real pin-header to assemble the two parts to see how they would fit.
Of course, I could not stop there. I had to then also punch through the other through-holes and set the terminal blocks that I now had in my possession. At first this was just for a bit of fun, but as it turns out, I discovered some issues with the layout that would have normally gone unnoticed.
The first issue was that I did not realise the mounting holes for the board at each end are spaced differently. From the perspective of the photo above, the mounting holes on the left are set narrower than the mounting holes on the right.
The second issue was that I had not calculated the “Y” location of the mounting holes correctly and they were 1.7mm out.That was easily sorted out since it did not affect any other parts on the board.
The third issue was with the terminal blocks for the motion detectors.I was trying to get away with the terminal blocks I had received. I need provision for 12 wires. Three for the I²C Bus and nine for the connections to the motion detectors.I was thinking I could butt two six-pole terminal blocks together. However with the way they are modelled in KiCad and the respective footprints, this was not possible as these terminal blocks have a nominal 2.5mm spacing and a 3mm spacing when butted together. So solve the issue, I went back to KiCad and remodelled the connections to the motion controllers as three sets of three. In the layout I only needed ensure that there is a minimum 3mm spacing between the three-pole terminal blocks.
The Timed LED Lighting Controller is another step forward. This will be one of the more expensive boards I will send off for fabrication so I am very pleased to have spotted those issues with the layout. The goal is to have as few “spins” of the board as possible and the process of mocking the board was a huge help. Just a few more checks and I can send this off to OSH Park!