pcb


For the open Hardware Rallylog device I’ve been working on, I’d based my design around fitting into the handy Sparkfun Project Case and since most of my projects never get to the “enclosure” stage, they are either used bare PCB or thrown into anything that may provide some protection against the elements, such as the widget sensor housing.
(http://blog.strobotics.com.au/2009/06/15/widget-sensor-housings/).

This project was different for me since I’m required to build 10 of them for the local motorbike club, something a bit more “finished” than your standard geek project. Throughout this project I’ve learnt how to use 3D modelling to check mechanical layout and tolerances, also to use mechanical data supplied in technical data sheets in selecting my components. This along with taking into account PCB heights, button heights. Overcoming challenges like how do I get my LEDs to the outside without using panel mount LEDS, or how do I protect or mount my LCD display again with out using a panel mount. I then used all this to make things easier for me when it came to production to produce CNC tool path G-Code to cut my enclosures.

I thought I’d document the process that I’ve gone through to get my Rallylog nice and snug in the Sparkfun Project Case. BTW this may not be the right way, but it’s the journey I took, I would love to hear from people who do this professionally for a living to get a feel of the full product design process.

It has to be easy to make and assemble

Right from the outset of the project I wanted this to be easy to assemble. Seeing I have to make 10 of them (to start with) I wanted everything to be mounted on the PCB so all I have to do is get my enclosure and put in the finished PCB, screw it all up and its working, i.e. I didn’t want to have a panel mounted LCD or LEDS that I had 1) manually fix to the Enclosure, and then 2) “wire” back to the PCB. I wanted something that I can reproduce easily and with the least amount of human work, I love my projects, but quickly hate having to manually do a lot of repetitive work like solder up individual LEDS etc. (I guess I ‘m lazy). I also have a small CNC machine at home, A Zenbot Mini that I purchased off eBay some time ago, so I wanted to automate the panel cut outs as much as possible. I wanted this to be repeatable, using a handheld Dremal is not my idea of fun, especially if I have 10 to do now I will quickly loose interest after the first one, and it’s definitely not repeatable. Also if I get an order for another 1, 10, 100 down the track I definitely don’t want to do it manually, and I don’t want to think too hard about getting things set up.

I could have also gone with an Arduino board and made up a custom shield or use the RFID shield, again it would have meant more painful hand assembly, so I decided to stick with a custom board fitted into a readymade enclosure.

It all starts with the User Interface

Whilst I already had my initial schematic laid out (in Kicad), before I started my PCB layout process I needed to work out what it was going to live in. I was very eager to start laying down track as I love designing PCBs, but I had to hold myself back and ask a couple of questions first:

  1. What am I going to put it in? It needs to be functional, fairly robust, and fit everything in, including the battery, the RFID module, the LCD, SD Card socket and so on. It needs to be off the shelf that I can easily modify, no custom injection moulded case for this project ( I wish)
  2. What is the user interface going to look like? I needed to keep to the KISS principle. The majority of users at this motorcycle club are semi-retirement to retirement age, so not the most savvy when it comes to geek gadgets,
  3. Will it be easy to assemble?

When you stop and think about it, it makes sense to start with the user interface and how this will fit into an enclosure, then move onto the physical PCB layout and component selections, else my PCB might not fit into the case, it may be too big, too small, same goes for components selected. The user interface may not be functional and then we’d have to start again.

The User Interface design

My initial schematics included a Nokia LCD display and a joystick for user input. Also a couple of LEDS for visual feedback.  

When I asked myself the three questions above I quickly went back to the drawing board, as the Nokia display failed Question 3), same went for the Joystick, also I felt that it was would have been a bit too had for the target audience to use, so it failed Question 2) as well.

In the end I decided to go back to a tried and proven UI design that consisted of a simple and easy to read backlight 2×16 LCD character display with three push buttons for user input and two LED indicators, something a bit easier for the end user to use.

As yet I had not selected the parts i.e. the LCD or switches, I just had the layout in my mind (or on paper) the UI layout that was a three button input under a standard 2×16 backlit character LCD, and x2 LEDS to the left of the LCD display, these LEDS would be Red and Green, which could be used to indicate different statuses easily, really simple!

UI sketch

The Enclosure

Once I had the basis of the interface this is where the engineering juggling started, I had to find an enclosure that would meet my requirement, and find components at the right price that would work with the selected enclosure in the way I wanted.

I had a look around on a number of sites and found there is a wide variety of enclosures out there, however without physically having one, its a bit hard to start working out measurements and getting a general feel for it in your hand. As luck would have it I already had a couple of Sparkfun Project cases at home that I had purchased for a “future” project, well this was that “future” project, I used this initially as my enclosure of choice, it seemed to fit well in the hand and be spacious enough to seemingly fit everything in, i did this initial check by putting in the ID-20 RFID reader module and a 9V battery to see how things would fit. At this point I still did not have an LCD or buttons selected.

Once I had my enclosure selected it is now a matter of finding the right size components to fit, as mentioned above I wanted everything mounted on my PCB, and now I had the dimensions of the enclosure I could start my PCB design and component selection, this process I found to be the most time consuming. However I initially needed to start working out my clearances with my PCB in the enclosure, I’m also a visual person, I need to see things to make it easier for me to understand, so I decided it would be much easier to utilise 3D modelling and model the enclosure and mock up my UI, I’ve used Alibre in the past and this is what I modelled the Rallylog enclosure in.

The 3D Model

Not wanting to re-invent the wheel I contacted Sparkfun customer support with a request for a 3D model of the Project enclosure and received an email from Casey Haskill, the designer of the enclosure, he was more than accommodating (Many Thanks Casey!!!) and sent me the files in IGES format, one that Alibre supported……supposedly.

The great things with standards is that everyone has their own take on them, obviously Alibre was no exception, the problem was that each time I went to import it failed, after a bit of research I found a small utility program that I used in a two step process that allowed me to clean up the IGES and export it as an STP file, one that worked with Alibre.

image

Once imported I can now can get accurate measurements and start modelling individual components. My modelling is very simple, make a basic 3D model using the supplied mechanical data, no fancy surface or trying to emulate the real thing.

One of the immediate things I could see is that either I had to use a panel mounted PCB or I needed a two tiered PCB design as the headroom above the PCB was quite large. The panel mounted LCD was ruled out due to easy of assembly rule, so I knew that I would be dealing with a two layered PCB design.

Alibre is great for quickly creating 3D objects and by changing dimensions it regenerates the 3Dmodel, so I quickly created a two tiered mock up of a PCB with the correct thicknesses of the PCB substrate being used, this was added to the enclosure assemble so I could visualise the internal dimensions. The two PCB layers are separated by the dimensions of a standard 0.100 header and socket of 8.5mm.

image

image

From this I now had the dimensions required from the top of my PCB to the inside and outside of my case.

Now I needed to know what LCDs, buttons and LEDs out there that when mounted on the PCB how they would interact mechanically as far as clearances with the enclosure, however I had to work into the constrains of my circuit design and of course price.

Due to I/O restraints I couldn’t use the standard character LCD in 8 bit or even 4 bit mode, so that ruled out most of the cheapest LCD displays around. So it had to be I2C, SPI or Serial, my initial design was done with the Nokia LCD in mind and so used SPI, as I wanted it to mount onto my PCB, almost all LCD I’ve found have their own PCB with a connector that either plugs into a cable or you plug it into a socket onto the PCB, so another layer on top of the existing PCB was not feasible. I located the I2C range of New Haven Displays and found one that would fit given the dimensions, however I couldn’t get them locally and ordering in from New Haven was approx. $USD50 per display, not economical! Unfortunately there were not many alternatives.

After talking with my local local supplier he put me onto the EA-DOGM Series of LCD Character displays, these can be run in SPI Mode or traditional 4 or 8 bit mode, there are also directly mounted on the PCB, and have an optional LCD backlight module that mounts under the LCD module. The price was even better, $AUD15 for 2×16 and $AUD4 for backlight, perfect pricing just need to check how they would fit. From the Technical data sheet I whipped up a simple model and added it to the PCB

image

image

image

image

From this I could see that the LCD would fit if PCB mounted, but had an interference with the top of the Sparkfun case, this was acceptable as I would need to machine the cut-outs at some point.

I then did the same for switches and their buttons, I wanted the button to just clear the case and not be too pronounced or the reverse I didn’t want it to be recessed. In the example below using 6mm Omron switches and their associated square buttons. I found they were too pronounced out of the case.

image

I ended up finding the 12mm Sparkfun Push Button which met the right criteria and the button just cleared the case, after modelling it looked perfect, however the switch body itself has some interference with the top of the case, this meant that if I wanted to have a switch with the right height I would have to machine out the inside of the case.  

image

Engineering decision time….After weighing up the aesthetics and the work involved in machining out the case I decided to stick with machining out the inside as I would already have the top case mounted for cut outs, what if I just flip it around and machine from the inside, that way I could kill two birds with one stone. I could pocket out around the switches ( and the LCD if required) and then perform the panel cut out. I didn’t know how I was going to perform this but seemed doable.

Just to make sure where my interferences I used a great feature of Alibre called “Assembly Boolean” where I can select the top of the project box as my blank, and then select all the buttons and the LCD as my tools, the Result is the top of the Project box with all interferences subtracted so I can I know where to machine.

image

Just to cover my bets I added both switches to my design, that way I could use either if the other didn’t work, much easier to add the extra footprint at design time that to find out after that I really should have used the other switch, so I had an escape clause Winking smile

image

The LEDS

What about The next thing I needed to worry about was what to do with the LEDS. Where possible I now use SMD components rather that PTH, but using the PTH over SMD was going to be my only choice, however they would be standing quite tall off the board, and as the end user would have to remove the back of the case to eventually change batteries, I didn’t want them to be able to damage the LEDs if incorrectly re-assembled for any reason.

I started looking around for solutions, not being in the industry I wondered how they did it, looking at every day consumer electronics I saw that pretty well every LED indicator is displayed through a plastic window, that’s what I needed, but what are they, after much Googling I found the correct term of “Light Pipe”, this made things easy. I could stick with my 0603 SMD LEDS and have a standard 3mm vertical light pipe (they come in many different flavours) bought directly to the top of the SMD LED.

image

The Final PCB

Happy with the components selected I then proceeded to finished my PCB design, again to make things easy to assemble I designed the two layers as a single board separated by tabbed routes and tooling strips so the individual boards can be separated after assembly. I also moved my LEDS over to the right hand side to accommodate for the PCB connectors finished result.

To see the full assembly steps see my previous blog entry http://blog.strobotics.com.au/2010/07/21/rallylog-assembly-progress/

rallylog pcb

Next…How I machined my enclosure cut-outs

pcb


As mentioned in my last post, Rallylog is a new open Hardware project it also uses Kicad as the EDA.  Well late last week my prototype boards arrived from Gold Phoenix and very happy with the results, well sort of…..

Testing

When I receive a new design, one of the first things I do before any components or power is applied to my boards is to check all the physical connections with my trusty multi-meter on continuity settings then with schematics in hand I proceed to check every connection and check it off on my schematic.

From the schematics below you can see how I was progressing.  the green highlights are errors I’ve picked up, only a couple of minor ones that are easy fixed, until I got to my LCD board.  This PCB design is across two boards to account for a LCD, buttons and LEDS for the UI so that I can fit it all in the sparkfun project case.  I had created a new component for the LCD module I’m using, a low cost SPI based backlit LCD module, and I had placed the top row of pins on the module the wrong way around.  Still can’t work out why I hadn’t picked it up, but these are the problems when you’re a 1 man development team and there is no one else around for a design review…sigh, anyway changes have been incorporated into REV B.

20100713164141445_0001-cropped 20100713164141445_0002

Voltage Regulator sizing

Other significant change is to the 3.3V Regulator circuit, when I initially did my power budget I calculated that my 3.3V rail power requirements would be around:

Atmega328  – 5mA
LCD – 250uA
LCD Backlight – 80mA (20% Duty cycle)
SD Card – 80mA (200mA Spec)
RTC – 300uA

In total ~ 165mA .  The 3.3V regulator I had chosen had a max load of 200mA so plenty of headroom right? Wrong!!!

After revisiting my original design I realised I had made a mistake, I had not taken into account the input voltage and the de-rating effect of the volt drop across it.  In my case a 9v battery is being regulated by an LDO regulator down to 3.3V so in the process heat is generated, the larger the difference between Vin and Vout the warmer it will get, and the warmer it gets means my Max current output of the regulator drops, so how do I find if my regulator will still cut the mustard in this design? 

After a bit of research I found that I need to calculate the maximum power that can be  dissipated by the regulator and use this along with the max power of my circuit.  In this case my LDO is a SOT23-5 device.

so for my circuit:

Power(dissipated) = (Vin – Vout) * Imax

VIn = 9V (from battery)

Vout = 3.3V

Imax = 165mA

Power(dissipated) = (9 – 3.3) * 0.165 = 0.94W

This is close enough to 1W of power to dissipate in my SOT23-5 device.  Next thing is to see if the device can dissipate this amount of power.

From my technical datasheet the device has a max operating temperature of 125DegC and the thermal Resistance from Junction to Air is 220 DegC/W.  I also need to allow for Maximum ambient temperature, in this case 40DegC.  The thermal Resistance determines how efficient heat is transferred away from the junction i.e. the lower the number the better, meaning it’s more efficient at transferring away the heat from where it’s generated.  If the temperature reaches it’s operating max then the device will thermal limit, i.e. shutdown the output, which is not good.

Power(dissipatedMAX) = (TempMax – AmbientMax) / 220 DegC/W (for SOT23 Device)

= (125 – 40) / 220 = 0.386W

So my device has a max power dissipation @ ambient (40DegC) of 0.386mW , however the power being dissipated by my circuit is ~1W which is > 0.386W, so is not good :(    I need to go to a larger device, or lower the input voltage, in this case it will be a larger device as I’m not changing the battery type.

Calculating again for a SOT89 LDO Regulator with some better thermal parameters.

Max Junction Temperature = 125DegC

Thermal Resistance (Junction To Case) = 35DegC/W

= (125-40)/35 =  2.42W

So compared with my original regulator this one can handle the power dissipation as 1W < 2.42W with plenty of overhead.

Now the 5V Regulator

Doing the same for my 5V rail @ 85mA using the same SOT23-5 regulator (but 5V fixed output) gives  me:

Power(dissipated) = (9 – 5) * 0.085 = 0.34W

This is less than the Max power able to be dissipated by the regulator, i.e. 0.34w<0.386w so will be ok….just….although will run a little warm.

So if I add a PCB heat sink of 25mm square around (and underneath) the regulator using vias to transfer the heat how will that go?

So re-calculating with the PCB heat sink of 25mm square copper trace that has a thermal resistance of ~ 35DegC/W

Thermal resistance from Junction to Case = 81DegC/W

(125-40)/(81 +35) = 0.732W

So by adding a heat sink integrated into the PCB has increased the efficiency of the regulator to get rid of the heat by 89%.    

What I’ve done is to add a couple of vias directly beneath the regulator and opened up the solder mask so that bare copper is directly beneath the regulator.

image

pcb


The PCBs arrived last week, unfortunately not in time for the long weekend so I haven’t really had a change to do anything until today and from my initial observations I’m happy with the results.

RFM12B PCB

IMG_8691_crop

2.4GHz MRF24J40MA PCB

IMG_8693_cropped

Prototype PCB

IMG_8699_cropped

As I mentioned on the Strobit-general Google List and the SPOT-development Google list,  they seem to have multiplied from when I placed my order to when I received them,  I calculated I would get approx 12 back of each board, in the end I received 32 of each board, go figure…..so if anyone wants a couple of free blank PCB then contact me and I can send you some if you cover the postage costs.  Please use the contact form to let me know.

Hot Out of the Oven

Today I assembled the first one!  Didn’t take long at all due to the minimal component count.  If anything I need to add more solder paste to the RFM12B footprint, but seems to have taken.

RFM12B PCB Assembled

IMG_8706_crop

I’ve partially assembled the board, enough to give me basic functionality so I can do some tests, while the rest of my components I’ve ordered (SMA connectors etc) arrive.  Unfortunately my stash of 0603 capacitors were actually 0805 ones in disguise, so I’ve had to use these even though the footprints are for 0603.   In the photo you can see some of them installed on their side.   Same goes for my bead, I only had some 0805 in my stash but have 0603 on order, just couldn’t wait :)  

I’ve enabled all the solder jumpers so I don’t need to install the switch and the BAV diode for the time being.

Changes for next board revision:

A couple of things stand out with this board revision, nothing major but niggly enough to warrant changes or at least thinking about them.

Crystal Footprint – One thing so far, I’m kicking myself for not making the crystal footprint a HC-49 SMD, I thought about it before I send the files off for fabrication, instead I opted for the sleek 0503 ceramic smd crystal, problem is they are more expensive and not as easy to come by, so I’ve added this as a change for the next board revision.  In future I’ll stick with the stock standard low cost crystal HC-49C footprint.

Switch – Do I really need it?  The onboard switch seemed like a good idea at the time, but in reality do I really need it?  I’m glad I had the fore thought to add a solder jumper to bypass it. Honestly I will probably more than likely use a switch remotely (i.e. on the side of an enclosure) or on the battery pack itself rather than on the PCB.  I may just leave the ability to have a remote switch and remove the onboard footprint all together.

LDO regulator onboard? – I’m still up in the air about this one.  Initially I wanted to keep things as low cost as possible (and I still do), and then add additional functionality via the personality boards so keeping the core board to bare minimum components, as I have only intended these to run from battery or from USB, not from a wall wart or A/C plug pack.  I have added some reverse protection with the BAV Scotty diode, but this won’t protect the board if someone connects a 9vDC source.  Anyway I think  I will wait and see how I go with testing and community feed back.

pcb


Just received notification that the PCBS have been shipped via FEDEX, so should have them within the next couple of days.

pcb


PCB designs were finally sent off to Gold Phoenix yesterday, a bit of a delay as I had been wanting to complete a couple of other designs to fill up the panel before sending off.  Three different designs, Strobit RFM12B core, Experimental 2.4Ghz core and a prototype personality (think arduino prototype type shield) have now been merged using gerber merge into a 10” x 14.5” panel.  Hopefully they should be back early next week.

image

pcb


Ok not quite finished, but almost there!  I’ve had to make a few minor changes.  I’m glad I’ve taken the time to learn and play around with Eagle 3D, it had highlighted some potential clearance problems.  Rather than rush things I’ve decided to take a bit of time modelling than fork out my $$$ and get some prototypes made only to find these problems down the track and could have avoided.  Granted Modelling is not a silver bullet, and I guess I could be here forever, but now I’m a lot happier.

Changes:

  • Moved SMA antenna connector back from front edge of the PCB as it was hanging over slightly.  This connector is optional at assembly.  The pad can be used to solder on a wire antenna instead.
  • Changed switched power side on the switch, The switched side of the On/Off switch was very close to ground plane coming under the switch so had the potential to short, now is nice and clear.  I’ve also added some more ground plane clearance around the switch contacts just to be on the safe side.
  • Added solder jumpers for LEDS, probably don’t want these enabled if a personality board is on, but it gives you the option to use them or not, and re-use the I/O if required.
  • Moved vias and tracks away from standoffs.

Todo:

  • I think I really need to isolate the 2 power sources from each other, i.e. the Power from the USB and VBAT, so I’m looking at putting in a BAT54C barrier diode.  Just need to research it a bit more.
  • Still don’t know what to do with the ICSP connector.  I will probably leave it there with the option of putting it on at assembly.  I’m pretty sure that it will clear any personality board with a bit of care.  Modelling the personality board is my next step.

triggr-010

pcb


These are components I’ve created for Eagle3D.

You may also want to check out the tutorials on how to create your own components.  http://blog.everythingrobotics.com/tutorials/eagle3d-tutorials/using-google-sketchup-to-create-components/

Components

HopeRF RFM12B SMD 433Mhz/915Mhz RF Module

RFM12BSMD

Microchip MR24J40MA FCC Approved 2.4GHZ 802.15.4 RF Module

MRF24J40MA

Sparkfun SMA PCB Edge

SMA_FEMALE_PCB

PJ-326 3.5mm Jack http://www.switchcn.com/

PJ326

900Mhz GSM SMA Antenna attached to PCB SMA Connector

SMA_connector_antenna_hor

Downloads:

Strobit Eagle3D Library (19/03/2009) Download

Links

Disclaimer:

These are provided AS-IS and may contain bugs and or discrepancies and may not be to scale.

If you find any bugs or problems or make enhancements please feel free to contact me so I can update the downloads.

pcb


Tweaking the Settings

Now we have added the component into Eagle3d we need to tweak and fine-tune the settings.

  1. Now render your PCB, more than likely a couple of problems will show up.  The first is your component is very small.  so we need to tweak the scaling from within the component file we recreated in the previous steps.

    Very Small component shown. (click to enlarge)
    triggr-020
    07/08/09 update: (Thanks for the tip Jeremy)

    > Jeremy wrote:
    > Hey. I read over your tutorial on making Eagle3d components in Google
    > Sketchup, and I wanted to thank you for saving me a considerable
    > amount of time. I also found something you might have missed. Sketchup
    > records units in mm
    > (millimeters) but when su2pov plugin is run, it converts all the mm
    > into inches (1mm -> .03937 inch). The problem is that Eagle3D
    > interprets the numbers in the .inc files as in mm. So the best way to
    > fix the problem is to scale up your drawing in Sketchup by 25.4 times
    > (thus counteracting the plugin’s unit conversion).

  2. To scale the component scroll down to near the end of the file where you should see something like this
       1:
       2: #object {MRFceJeaMA
       3: matrix < 0.1,0.0,0.0,
       4: 0.0,0.1,0.0,
       5: 0.0,0.0,0.1,
       6: 0.0,0.0,0.0>
       7: }
  3. tweak the settings that have numbers in them, the following worked for me
       1: // Scale
       2: #object {MRFceJeaMA
       3: matrix < 2.55,0.0,0,
       4: 0.0,2.50,0.0,
       5: 0.0,0.0,2.55,
       6: 0.0,0.2,0.0>
       7: }
  4. Now the component should be close to the right size, but the offset is off.triggr-020
  5. We now need to get the correct offsets, which is a bit ht and miss, but I found the following works best.
  6. Locate the component in the generated POV file (step 8 above)
  7. Change the translate values just after the macro name as shown below, the hit and miss comes in by taking a guess in what direction and value to use.
       1: #ifndef(pack_U2) #declare global_pack_U2=yes; object {MRF24J40MA()translate<-5,0,0> rotate<0,0.000000,0>rotate<0,-270.000000,0> rotate<0,0,0> translate<61.569600,0.000000,15.240000>}#end        //MRF24J40MA FCC Approved module U2 MRF24J40MA MRF24J40MA
       2:
  8. We are heading in the right direction, so keep changing until it all lines up on that axis.

    triggr-020

  9. looks like we are right on here, onto the next axis

    triggr-020

  10. to change the next axis offset we need to modify the last value in the translate function
       1: MRF24J40MA()translate<-9,0,-5>
  11. Just about there

    triggr-020

  12. finally looks right

    triggr-020

  13. Now we have found the values we need to put them in the 3dusepac.dat file or else the next time we run the ulp script we will loose these settings
  14. In the line we added added to the 3dusrpac.dat file we need to add the values we have just fount to positions 15 and 1 7 as shown below.
       1: MRF24J40MA:0:0:0:0:0:0:0:0:0:0:0:0:0:0:-9:0:-8:0:0:0:0:0:0:0:0:0:0:0:0:0:MRF24J40MA(::
       2:
  15. If this file is changed we need to re-run the ulp script to re-generate the POV file, then check that your values are there and renders correctly.triggr-020
  16. The same process can be followed if the component is not rotated correctly.  such as shown below

    triggr-020

  17. change this value in the POV file to tweak the rotation side of things. change the value show below (-180)  in this example the value that works for me is 90  once again this value must be updated in the 3dusrpac.dat file in position 14.
       1: {MRF24J40MA()translate<-9,0,-8> rotate<0,0.000000,0>rotate<0,-180.000000,0>
  18. Remember to re-run the ULP script to regenerate the POV file.Happy component creating !!!!!
<<Step 3

pcb


Integrating into Eagle3D

Now we have converted the file to work in Eagle3D we now need to tell Eagle3D how to use it.

  1. Add your include file to the user.inc file
    #ifndef(__user_inc)
    #declare __user_inc = true;
    
        #include "MRF24J40MA.inc"
    #end
  2. Now open and add the following to the end of 3dusrpac.dat (found in the Eagle3D install directory)
    PACKAGE_NAME:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:MACRO_NAME(::
  3. To find the PACKAGE_NAME, first go back to your PCB editor in Eagle, click the info button, then click on the component we have just created the library for.image
  4. Replace PACKAGE_NAME with the Package variable. In this case it is MRF24J40MA Note that this is always in caps!
  5. Next, we need to replace MACRO_NAME with the exact macro name we added to the file in step 2. In this example it’s MRF24J40MA.
  6. The line should now look like this
    MRF24J40MA:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:MRF24J40MA(::
  7. Now run the Eagle3D ulp script and create the the POV file for the PCB.image
  8. Open the POV file and scroll down until and check that the component has been added to the file (line 3 below)
       1: #ifndef(pack_S1) #declare global_pack_S1=yes; object {SWITCH_SECME_1K2_RH()translate<0,0,4> rotate<0,180.000000,0>rotate<0,-180.000000,0> rotate<0,0,0> translate<41.910000,0.000000,1.727200>}#end        // S1  SWITCH-SPDT-SMD
       2: #ifndef(pack_U1) #declare global_pack_U1=yes; object {QFP_TQFP_32_080MM("ATMEGA168V","ATMEL",)translate<0,0,0> rotate<0,0.000000,0>rotate<0,-45.000000,0> rotate<0,0,0> translate<26.670000,0.000000,16.510000>translate<0,0.035000,0> }#end        //TQFP-32 U1 ATMEGA168V TQFP32-08
       3: #ifndef(pack_U2) #declare global_pack_U2=yes; object {MRF24J40MA()translate<0,0,0> rotate<0,0.000000,0>rotate<0,-270.000000,0> rotate<0,0,0> translate<61.569600,0.000000,15.240000>}#end        //MRF24J40MA FCC Approved module U2 MRF24J40MA MRF24J40MA
       4: }//End union
  9. Now render your PCB, more than likely a couple of problems will show up.  The first is your component is very small.  so we need to tweak the scaling from within the component file we recreated in the previous steps.
<< Step 2 Step 4 >>

pcb


Exporting Sketchup Objects to POV

  1. You first need to install the su2pov plugin as per the documentation.  Once installed you will see the plugin available from the plugin menu within sketchup. (click for larger image)

    image

  2. I use the the following settings for the SU2POV plugin.image

    image
  3. Select ‘GO’ from the plugin menu.
  4. The POV file is then created, open it up in povray.  You should be able to render it direct from this file so you can at least get a sense of what it will look like rendered on the PCB. (click for larger image)MRF24J40MA

    Note: Some errors were reported when I first tried to render the scene straight from the export line in the POV file.  It appears that this problem is related to the default Radiosity settings generated by the plugin, these are not used in the newer versions of POV.  The su2pov plugin is for pov3.2.  I safely deleted the Radisity section from the generated file.  (update: I have since found that if you change the Radiosity settings to ‘Final’ under the plugin render options this problem does not happen). Eagle3D ultimately handles all the radiosity settings anyway, but this is so we can view the test file in POV.

  5. Now that we have successfully rendered the file in POV we now need to incorporate it into Eagle3D.
Step 2 >>

pcb


Ok here is the 1st basic trigger personality board.

Features:

  • x4 LEDs for visual indication.
  • x2 Push Button Switches, one tied to input for manual triggering/testing, the second independent, could be used for channel or function selection, both could used in conjunction with LEDS for advanced function selection.
  • 1 Strobe output. 400V Max (so will work with older type strobes)
  • 1 protected TTL trigger input. 
  • Small prototype area.
  • Low profile, All large components are mounted underneath.

Still a little cleaning up required but basic functionality is there.

Still TO DO:

  • Change MOC3023 to SMD footprint, I don’t really want the possibility of a large strobe voltage right where a thumb might be.

Basic Triggr Personality PCB

image

pcb


I know I’m a bit slack in updates on the blog.  If you haven’t noticed I now have a twitter account  http://www.twitter.com/madeinoz so you can follow what I’m doing when it’s not getting updated here.

However since the blog is way over due for an update here is what’s been happening in a nutshell.

Strobit Trigger:

I have finally gotten off my butt and done a redesign (hah and you thought the project had died a slow death, it may have stalled slowed, but certainly not dead!)

Features worthy of note in the new design (in no particular order):

  • 3V design, will run from x2 AA Alkaline or single CR123A 3V battery.
  • Fairly compact board, 30mm x 70mm. (without battery)  slightly lalonger on 2.4ghz design due to antenna.
  • Onboard on/off switch to save batteries when not in use.
  • FTDI 3.3v breakout cable port for connecting to either RS232 or USB using the FTDI cable.
  • Onboard ISCP port for programming.
  • Personality daughter boards.  Will allow users to create their own hardware modules, i.e. sound trigger, light trigger, LCD UI, or whatever they like etc
  • Atmega168V processor, low cost, low voltage design = longer battery life.
  • Can run Arduino bootloader, so developers have access to Arduino development libraries.
  • I’ve designed 2 different boards.  One using the RFM12B module at either 433Mhz or 915Mhz.  The second board I’m going to try a 2.4GHZ design using Microchips FCC certified MRF24J40MA 802.15.4 module, this is purely experimental so I don’t have any testing done yet, but I have some of these modules and would like to try them out, also being FCC certified will be an added benefit.  (not to mention I’ll be using these for a mesh sensor network project I have planned around the house)
  • RFM12B board design has external SMA antenna.
  • Base PCB board designs are done and I’m fairly happy with them so far, I’m just finishing a basic personality modules which I can used for testing and maybe another one so I can make up the  max designs I can have on a single panelized board (may as well get the most designs I can get fabricated when I send it off to GoldPheonix).  I’ve done some initial Eagle3D runs to get an idea of the boards and so I can post them on the blog, but I really need to learn how to create components in Eagle3D as it leaves unknown components blank, i.e. the RF modules and therefore looks incomplete.  (anyone that can help me here please contact me)

Still To Do:

  • Panelize boards
  • Send to GoldPheonix for PCB fabrication.
  • Assemble and test.

I’ve also been playing with learning Alibre, a fantastic 3D design package (they have a free version) so I can get some ideas for building enclosures design for these boards.

RFM12B PCB

image

MRF24J40MA PCB

image

pcb


Jans Gentsch has made his compact version of the Strobit Triggr available to the community, his version, the Strobit M08 based on AVR design can be found here.   Please note that there are a couple of things that need doing to the PCB, if you get a chance to implement Jans design, please post back any changes to me so I can make them available.

Hello Stephen,

I’ve attached the Eagle-Design-Data as well as the source code. I haven’t found time to do anything on those since my post, so the are not in the best state. There are a few Problems with the board design:

Transmitter – There is a connection missing between the processor and NIRQ of the transmitter-module (the transmitter module doesn’t have a fifo, so that the nirq-line is needed to clock out the data). I just added a piece of loose wire during assembly.
Receiver – NIRQ isn’t connected as well, so I am constantly polling, not really a power saving design. however I am still running on the first set of batteries so it’s not like they are being drained empty immediatly.
IO-Board – Thr optocoupley was meant to sit on the bottom side but I got confused. It has to sit on top now.

Getting everything into the housing was a major challenge.

The source code has been developed using avr-gcc and the eclipse ide.
As it stands only the most basic function, tiggering, is working. The control flow will have to be reworked in order to add the rest of the functionality. And of course my “magic” trigger id should be changed.

Have fun!

Alle the best
Jan

Files

You will need Eagle PCB to view/edit the schematics and PCB files, found here -http://www.cadsoft.de/

The firmware is written using winavr found here – http://winavr.sourceforge.net/

pcb


Ok I have finally had a little bit of time to work on things (will be short lived as I’ve just bought a house and moving in the next couple of weeks Aghh!!).

Things are getting very close to reality after many design changes, the very nearly final Strobit Trigger base board, aka a modified Ardiuno BT board, with the Bluetooth removed and now fitted with the RFM12B SMD Tranceiver module and an external SMA antenna connector. The Eagle 3D side of things still needs work as some components are not shown and the inductor for the DC-DC converter is incorrect, but you get the basic idea right!

Why have I gone to a non-dedicated trigger board?

Well a couple of reasons, initially to cover myself from any patent issues that might have arrisen had I used a dedicated wireless triggering device, but mainly to allow better expandability. Why have a dedicated trigger with all the fruit and only use half of it, this way dedicated boards can be used, i.e. standard trigger, or sound/light trigger, sequences etc. Another reason is that the Ardruino is very well established and supported in the open source community, especially when it comes to the firmware libraries etc, it’s already been done. also I can use these in my robotics hobby as well, not just for photography.

Ok onto the board features:

  • Fairly compact same size as ArduinoBT
  • Standard Arduino Pin headers, so should be able to use with existing shields.
  • Will operate from as low as 1.2V, so should work from x1 NIMH AA easily enough.
  • RFM12 Tranceiver, up to 300m range (as per datasheets, although it does depend on the datarate)
  • SMA connector so you can connect an external antenna for better reliability and range, or remove the SMA connector and use a piece of wire as the antenna.

What is left to do?

  • Well the design is pretty well done, I want to get some prototypes made so I will be sending it off very shortly for fabrication.
  • Different variations of shields need to be done, first one being stock standard strobe type of triggr, input and outputs, then others as needed

pcb


After a hectic and very hot Christmas (41DegC) I managed to get some development time and finished 2 prototype boards.  My RFM12 header boards still have not arrived, caught up in the christmas mail I guess :(   So I’ve had to resort to hand soldering some wires to the header in the meantime. (Murphys law suggests that as soon as I finish soldering these headers the breakout boards will arrive in the mail)

Tomorrow/Later tonight I will test both of them and see if I can get a remote trigger happening woohoo.

Sorry about the quality of the photos as they were taken with my phone :(

Strobit Triggr PrototypeRFM12 HeaderRFM12 Header SolderedRFM Development

Switch to our mobile site