Cheap prototype assembly?

Hey guys,

So the design of my next circuit is almost complete, and I'll be putting it up on Kickstarter shortly to take preorders so I can get them manufactured, but I've still got one problem:

I need a prototype!

This is my first board with surface mount components, and I've got some pretty small parts on there: 0402 resistors, and 0.65mm pitch IC's. I'd rather not try to solder this thing together myself, though if it will save me $1,000 I may try applying paste by hand and reflowing the thing on my stove.

I'll probably be using Gold Phoenix to have the final boards manufactured and assembled, but they don't really do prototypes. They quoted me a minimum of 10 boards, and with the pcbs being $250, the stencil being $200, the assembly being $475 and the shipping being $50, even if I send them only enough parts to do one, it would still be over $1000 and that's a hell of a lot for one board which may not work.

Hell, it's still a lot even if it does work and I can roll the $200 for the stencil into the final production run. It would be nice if there were some local place which could do the assembly at a reasonable price. If the price were low enough it might even make sense to have them assemble the remaining 9 boards if the first one works.

Btw, here's a pic of the board in question:

And the addon modules that go with it:

Panel with the three would be around 3.1" x 2.95" and contain:
52 SMT parts
31 through hole parts
28 unique parts

So, any suggestions? I'm aware of places like Seeed and BatchPCB for having the PCBs made, but what I most need to know about is assembly. If there's a place like those that both makes single PCBs and assembles them that might be ideal, but if I have to get 10 PCBs made and then have someone assemble them that would work as well.

I would try to make a solder paste stencil. There's lots of tutorials on posted on youtube, featured on hackaday, etc. Check that all the connections are good afterwards, and give it power.

BTW, what is it for? LED displays I'm guessing? What kind of microcontroller do you have that has so many outputs?

We can do the assembly for you, as little as 1 board or as many as 1000 (or more!), and we're perfectly fine with the "build 1 now and build the remaining 9 if the first one works". Send us an e-mail at support@ruggedcircuits.com.

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

The MIGHTY is a light, sound, and motion controller. It aimed at people who create replicas of movie and game props.

On board it has:

  • ATMega328 running at 16mhz
  • 12 bit DAC for sound
  • 2W amplifier
  • 5A 5V regulator (I estimate I'll be able to get around 2.5A out of it before heat sinking is required.)
  • MicroSD port w/ 3.3V regulator and buffer
  • Two TLC5947 LED drivers w/ internal oscillators for driving up to 48 LEDs with full brightness control, with additional LED drivers able to be be chained to it, allowing for control of over 200 LEDs

It also has 12 I/O ports to which you can connect switches, potentiometers, servos, radio control receivers, and the power module which is for driving vibration motors with PWM, or lasers.

The MIGHTY is designed to be extremely easy to use. It's Arduino compatible of course, but it is intended to be programmed by writing simple scripts in a basic-like language.

For example, if you add the line:
SERVO[1] = POT[2]

To main.txt, the servo connected to IO port 1 will move as the knob connected to port 2 is turned.

And if you write something like:
IF SWITCH[5].On THEN LED[7] = 0.5

Then that LED will turn on at half brightness when you flip the switch connected to that input.

The language will be interpreted line by line and is designed not to require a stack, since obviously the AtMega328 has very limited ram. It will have some predefined arrays of ints and floats to use for state information however, and there will be a script specifically for initialization. (main.txt will loop forever)

The language will NOT contain a DELAY() statement, as that is a scourge which confuses the hell out of beginners. :slight_smile: Instead it will will have TIMER[]s which count up automatically and which you reset to 0 before you want to begin counting. These will most likely use seconds rather than milliseconds, again to make things easier for beginners to understand.

Also, there will be commands for animating LEDs and servos, which would be used like so:

  1. Set the LED brightness to whatever you want it to start at when say, a button is pressed:
    LED[1] = 0

  2. After that just update it like so:
    LED[1].Update(0.5, 1.0)

And what that would do is increase the brightness by 50% per second until the brightness reaches 1.0. Then it would stop.

Fading out would be almost the same thing:
LED[1] = 1.0
LED[1].Update(0.5, 0)

There will be commands to set the min and max movement of servos and such as well, so you can in that first example make the servo turn only 45 degrees as you rotate the pot 100%.

Hm, let's see, what else...

It's the size of a credit card so it can fit in tight spaces.
And it'll be priced between $100-$150 depending on the volume I can expect to do.

I think that about covers it. I've spent almost 2 months and 1000 hours working on it. And I'm pretty sure the PCB will work the first time, since I've double and triple checked everything. I really don't want to have to pay for a second prototype. :slight_smile:

Oh and to answer your question about so many outputs...

The long lines of pins are for the LEDs, so they're driven off the TLC5947's and one thing I forgot to mention is that they won't require any resistors... another beginner friendly feature. (Nor will the switches require pullups, as I'll just use the internal pullups of the Atmega.)

And the MicroSD, DAC, and LED drivers all run off the hardware SPI bus. That leaves me with 13 IO pins, since I won't be using the RX/TX pins for serial communications. The 13th pin I used for those SPI pins up top, so that can be used as another IO or for some future expansion module.

Also, the pin order is reversed from the Arduino because I felt it would be easier for beginners to understand if the analog outputs started from pin 1 like the digital pins, rather than being the last six digital pins.