I have recently been building a number of data acquisition (DAQ) units for the LEEDR project at Loughborough University.
The unit is an Arduino based DAQ which stores a number of temperatures and flow rates onto an SD card. A real time clock is used to timestamp the data and the output is a .csv file. Time is also stored as Unix time, so that the data can be processed using algorithms written in MatLab. Full constructional details on the DAQ will be uploaded on the Projects page.
I only needed to produce 25 of these units but for a small operation this actually turned into a large amount of work. In this post I’d like to share some notes and thoughts about small-scale mass-production (I think that’s an oxymoron…).
The design process was pretty standard. I was asked to build the data unit and so I rigged up a prototype using an off-the-shelf Arduino board plus a prototype board. I got each section working on its own (writing to SD cards, reading data from 1-wire temp sensors, sorting out interrupts). I then started to put these parts together and create the full code.
Once the device did what I thought it should the prototype was sent for testing in a real location. Getting real data from the real situation where the device will be installed was invaluable. It highlighted additional features that were needed and it also highlighted some errors in writing the data. The errors were traced (to a delay loop I had included for testing purposes, but forgotten to remove).
I then left prototype version 2 to record data for a while. It seemed to function well.
I entered the schematic into a design package (KiCad) and produced a PCB. I have had a number of issues with errors on PCBs (always my own fault). I find it is always best to design the board then wait at least a day.Coming back to the board and you notice errors that you might have not spotted. I find a break is so good when it comes to designing thing and figuring out faults. So much so that my day is mainly breaks (honestly – I’m thinking about problems….). Another good technique for PCB design is to have all the components physically available (or at least have the datasheet). You can then measure each part and produce the footprints of any components not used before. I also print out the deign in real size and then try and place all to components onto the paper – this tends to highlight where components might not fit or would hit into each other. The other thing to double check is the size of the drill holes (I once had a board made with 0.5mm holes, when all the device legs were 0.8mm….). I would suggest checking the PCB at least 3 times on a couple of different days.
The first step in this production run was getting the PCB made, which I outsourced to another company. This was a great help and the PCBs were a hundred times better than I could have produced. I used fully through hole components as I wanted these boards to be solder-able by anyone and also easy to repair or change if required.
The problem with through hole components is the time and effort required to fit the components into the holes and then solder on the other side and then cut all the excess leads away. Even with a special jig I have (which held 4 x circuit boards and components with a foam backing to flip it over and solder the leads) this was a labourious task. Next time I will use surface mount components and a solder oven – this will be so much quicker and smaller and is hence why it is used in real mass-production. The only problem with this would be the placing of the components, which would still be fiddly.
Next step came programming and testing of each board. Even with only one error (a pad not soldered) this took time. Each one takes 5mins and hence for 25 that is 1-2hrs. You think ‘I’ll just test those’ and 2 hours later you are still testing. This was time that I had not accounted for when assessing the time it would take.
I created a laser cut box for these. Even with the time to cut these boxes, this did save time. Previously I would have used a plastic box and then cut and drilled all the holes. With the laser cutter all the holes are cut at the same time. Square slots can be cut with no effort. Everything fits together nicely. Only thing I would change would be laser cutting something to hold the PCB up slightly. I used small nus and bolts (3 per unit) but fitting those to each of 25 units was still a large effort.
Last thing to do was to to connect up an 8 pin connector. This used short sections of wire to connect to the PCB. Each one required 8 small pieces of wire to be cut and stripped on both ends. Soldering to the socket then soldering to the PCB then cutting away any excess cable. This took an AGE. Even cutting 200+ pieces of wire is boring. This has led me to build an automatic wire cutter and stripper – more details on that in another post when I have it working more reliably. Next time I would use a socket which fitted onto the circuit board (like the power socket), this would have saved perhaps 3-4 man hours.
Basically even with such a small production run it is very easy to underestimate how long building something can be. One good thing about a repetitive process is the fact that you develop systems to do things faster and you sometimes get a ‘zen’ moment from repeating the same task 200 times. But I’d like to look at improving my processes. Perhaps next time it is worth investing in surface mount equipment….
The final units built, tested and ready to go.