Zero-Draw, Solid State Contactor w/Precharge (Arduino)

Shit!
you got me... let me go swap the pins around.

thanks!

-methods



grindz145 said:
Slick, simple gate drive circuit. Are you going to program the AVRs out of circuit? If not, how are you going to get away with having the MISO and MOSI and sck connected together?
 
progFix.jpg

How about that?
While programming PB3 and PB4 will be in Tri-State (hopefully - if not I can set them as inputs)

Thanks man - you are a rockstar

-methods
 
I thought better and I am going to drop an MCP1700 in there.
Ultra low drop out regulator, 1.6uA active
Set to 5.0V
BOD is 4.1 - 4.5, so this has margin (the old me would use a 4.6V regulator :twisted: )
We will see how the regulator behaves when Vin < Vout, since it is designed for battery apps I think it will be graceful.
Requires simple input and output caps - just 1uF

It comes in a SOT-89 which is another easy to place parts (ALWAYS think about ease of parts placement when doing in house manufacturing!) Alternatives are a TO-92 (fail) and a SOT-23 (never want to see another one of those again in my life - SO sick of those)

-methods
 
I gotta tell you Methods, that is a beautiful circuit. I love the simplicity and the thread on the design process. Few people realize the effort involved in bringing something to production. I'm only in the early stages myself with some projects and some of the links you posted here have been helpful. I'm really liking what I just read on OSH. I think it could be cheaper than some of the small runs I've done with ExpressPCB.
 
I cant say enough about OSH park.
I suggest trying out their preview option... it is awesome. Just upload your files and it will show you a picture that is like 9 out of 10 exactly what your end product will look like - right down to the hue of purple and the shiny gold tabs. (no parts tho - just the PCB)

The guy who runs the place is awesome too - he panelized everything for me and was super friendly and helpful. I suggest looking closely at his rules as his "larger run" is really not very big but the price drops like a rock. I bought 25pcs of my (fairly large) GizMo board and it cost a tiny fraction of what I was spending at PCB Express (Not to be confused with Express PCB).

Thumbs up to that guy for not just creating value in the world, but for enabling us to create more value. It is almost as honorable as teaching... because he has multiplied his efforts many fold.

-methods
 
Sadly (as with all idealistic circuits) it is getting messier by the minute

* LDO added
* NO solder jumper added in case it is not needed (enlarge Stencil to make it NC postfacto)
* Input cap is DNP because I think with the 22uF on the output I wont have any issues with inrush - we will see

regulator-001.jpg

-methods
 
absolute max on the LDO is 6.5V, that might be cutting it a bit close with a couple of coin cells.
 
grindz145 said:
absolute max on the LDO is 6.5V, that might be cutting it a bit close with a couple of coin cells.

I dont know why I thought the CR2032 were 3V out of the box... now I read the data sheet again and you are right - that is the nominal voltage. The second page clearly shows the cells resting around 3.25V each... :mrgreen: That would be a little bit close.

Guess I will swap out the regulator. Only chose it because there are Sooooo many to choose from and I was reading this blog and they liked it. No big deal - there are a ton out there in an 89 package that can take 7V+. Just have to do the digikey boogie and then the datasheet shuffle :roll: .

An engineer spends like 5X the time reading datasheets than actually designing things. I think I read the LTC6802 datasheet like 400 times.

-methods
 
I guess now I can remove my regulator bypass shunt as well.... :mrgreen:
Zero chance that 2S will play nice with the 6.0V max on the chip.

-methods
 
Can you parallel the outputs of the ATtiny like that? Seems like they would tend to switch at slightly different times and short each other (very breifly). That might negate any speed increase over a single output. This would be easy enough to test. Try both ways.

I think the 4.7M gate resistor is a good idea, but you might try testing what happens if you manally stick 6v on the gate when the processor is powered off. It might pull down well enough. If the gates happened to be on and the processor suddenly lost power, you want to make sure it turns itself off.
 
fechter said:
Can you parallel the outputs of the ATtiny like that? Seems like they would tend to switch at slightly different times and short each other (very breifly). That might negate any speed increase over a single output. This would be easy enough to test. Try both ways.

We will find out. There is a port-write feature that I am pretty sure shifts the values into the port at the same time. Of course if one were to turn them on one bit at at time... that would be a fail. Super easy to test tho.

I think the 4.7M gate resistor is a good idea, but you might try testing what happens if you manally stick 6v on the gate when the processor is powered off. It might pull down well enough. If the gates happened to be on and the processor suddenly lost power, you want to make sure it turns itself off.

I suspect the tristate impedance will be an order of magnitude (or two) lower than the 4.7M. On the other hand it will also be somewhat unpredictable....and I can just see BigMoose rolling over and over in his bed having sleepless nights thinking about how I engineer things :twisted: Either way I will lay the pads for the pull-down resistor and if I get cold feet in the middle of the night I can always just populate them.

I learned doing government work for 10 years that you always go extreme in the beginning... with us it was budget. If we though we could do it for $100k we told the customer we would need $300k, or $500k. In the end all that margin always gets eaten up. In my case I am trying to absolutely minimize parts... so later, when reality hits, I wont end up placing 37 parts on the board :) That said... I do realize that my extreme minimalist approach will likely result in less reliability than I want and in the end... it only takes 3 more seconds a board to set one more resistor.


new subject: I found a different regulator that is good up to 13.5V (which may be useful....) MCP1702

-methods
 
The coolest part about blathering out my design notes here on the forum is that when I go back to make my proper BOM all the links and notes are ready for me to just copy and paste :wink:

I used to make my BOM right off... but then I learned after a while that spending 10% of my time carefully cataloging parts that I later will not use is wasteful. Now I just keep a list of links to Digikey, Octopart, or datasheets and only after I have ordered PCB's do I take the time to write up my proper hyper-linked BOM.

-methods
 
For the main power connections...

I am intending for the user to have something along the lines of 12 or 10AWG (at least for the HVC breaker). Historically I have always set up a hole for the wire to go into... but It always ends up sucking. I am thinking that for this run I am just going to make a nice big solder land - then folks can lap-solder the wire to the board. I think that makes for a better connection anyway - so long as the pad has via's anchoring it to the other side of the board (so it does not peel back if overheated or pulled)

If I am clever - I may be able to position the battery holder under one side of those lands.... but that invites trouble. Have to see how it lays out. Going to be short on room tho, that's for sure.

A requirement is that all parts be surface mount and that they all go on the same side. We are doing 1 solder paste and all parts must be baked. That being the case the entire bottom should be open for silking notes to the user and soldering on the main power leads.

For this run I am going to have Keywin bake up a set of connectorized jumpers for me - one to the user bars and one to the LVC/HVC detectors. Probably just go with a JST-XH to keep it simple - tho something cheap and locking may be preferable. Problem with the surface mount JST is that they cant be baked on - only good up to 85C

Love to find a good surface mount connector that has a good counterfeit part (remember... if you get your pre-assembled cables from China they are almost always fake unless you send them the connectors yourself. Anyway - be nice to find one that could be baked on - but I may just be dreaming.

I suppose we could lap solder on all 4 wires - but that is a total waste of time. Sloppy.

How do the big-dogs put down board mount connectors? Need to research that. I suppose I could go with a thru-hole JST and just dip them in the solder pot. If I position them right the pot is FTW. We now make my HVC/LVC boards with no hand soldering what so ever :wink: End product is WAY more consistent and it takes a tiny fraction of the time.

-methods
 
I could do a skillet reflow if there are plastic housings on the board....

-methods

EDIT: The more I think about it the more it makes sense to just use thru-hole JST-XH (or whatever) and dip the parts. The solder pot can then tin both the parts and the lands for the user connections. It wont be as pretty and gold... but it will be easy. I can dip 100 parts in the solder pot in the time it takes to pinch a loaf. Then I just dump them in the ultrasonic cleaner and BAM - done.

Thru-hole take up less board space too - and are less likely to peel up.
 
methods said:
grindz145 said:
absolute max on the LDO is 6.5V, that might be cutting it a bit close with a couple of coin cells.



Guess I will swap out the regulator. Only chose it because there are Sooooo many to choose from and I was reading this blog and they liked it. No big deal - there are a ton out there in an 89 package that can take 7V+. Just have to do the digikey boogie and then the datasheet shuffle :roll: .

It's awesome because I'm literally looking for an LDO to power this little acceleratometer chip project off of a battery, and this part is perfect. That's why I was looking so hard at the datasheet :)
 
methods said:
How do the big-dogs put down board mount connectors?
I took a look at a bunch of old boards I have laying around my shop. Most of the connectors were through-hole, but one interesting approach was a surface mount connector where they used through holes under the pads. The holes filled with solder and keep the pads from peeling up.
 
methods said:
We will find out. There is a port-write feature that I am pretty sure shifts the values into the port at the same time. Of course if one were to turn them on one bit at at time... that would be a fail. Super easy to test tho.

just fyi in "real" C turning mulitple pins on would look like this:

PORTB |= (1<<PB2) | (1<<PB3) | (1<<PB4);
 
Absolutely - placing a via under a surface mount connector tab sounds like it is FTW.

-methods

fechter said:
methods said:
How do the big-dogs put down board mount connectors?
I took a look at a bunch of old boards I have laying around my shop. Most of the connectors were through-hole, but one interesting approach was a surface mount connector where they used through holes under the pads. The holes filled with solder and keep the pads from peeling up.
 
nieles said:
just fyi in "real" C turning mulitple pins on would look like this:

PORTB |= (1<<PB2) | (1<<PB3) | (1<<PB4);


Thanks
In fake Arduino it is basically the same - just OR'ing in the values

PORTB |= B1100;

And you can do it so as to not disturb the other bits too.

This rant is not directed at you in any way - but your "real" in quotes reminded me of how so many engineers that I know dont take Arduino seriously - like it is a joke programming language. I spent years writing in 8086 ASM, PIC ASM, C, C++, variants of C (for different uControllers), Java, LabView, and 5 or 10 other languages that I have forgotten about (like LISP) etc. I am a seasoned programmer who has experienced many different environments.... The best programming language by far in my opinion is LabView (a totally visual programming language) - but the easiest text language to use, to learn, and to teach is Arduino.

The "getting over the hump" factor just can not be beat.

Yes - It is not suitable for the hardcore project... but for empowering your peers to not depend on you - it is THE BEST. For instance - Steve at Jozztek picked up Arduino (and LabView for that matter) in only a few weeks time. Like a duck to water. Had I tried to lay something like hard core C on him it probably would have taken two weeks just to get his IDE set up and working without any issues :mrgreen: . Lets not even talk about targeting different platforms, snatching snippets off the net, dealing with the minutia of each micro controllers hardware, etc.

Just like none of us liked Java when it first came out..... until we saw that we could write a program that would run on *anything* - apple, IBM, you name it... then we were like "ohhh...." :mrgreen: Arduino has the awesome quality that it works on any supported Arduino chip (which obviously will just grow and grow) and it is a very small program set - super easy to not get overwhelmed by. And lastly.. of course you can break out at any point and write efficient code if you need to - for some crazy interupt that has to happen in 3uS or less or whatever.... so it is not like you cant do anything you could do with a standard AVR chip (of which I dont have much experience - last chip I worked with was an MSP430 and before that it was PIC)

Anyway - I should know better than to invite more infighting and blathering in my thread (I am sure someone will show up to tell me that Arduino sucks and only retarded people use it :mrgreen: ) but I did want to take this opportunity to make an Arduino service announcement.

Again - rant not directed at you in any way. I appreciate that you took the time to help out and post the code for a Port Write. I appreciate your help.

-methods
 
Just wanted to say a quick thank you for publicly documenting this project. I has helped me a lot and I really appreciate it.

Including:
- beautifully simple Solid State Contactor design
- low power uC tips
- low quiescent current LDOs
- Octopart
- OSHPark
- small batch PCB prototyping tips
- PCB pad design tips

Cheers, Adrian
 
methods said:
nieles said:
just fyi in "real" C turning mulitple pins on would look like this:

PORTB |= (1<<PB2) | (1<<PB3) | (1<<PB4);


Thanks
In fake Arduino it is basically the same - just OR'ing in the values

PORTB |= B1100;

And you can do it so as to not disturb the other bits too.

This rant is not directed at you in any way - but your "real" in quotes reminded me of how so many engineers that I know dont take Arduino seriously - like it is a joke programming language. I spent years writing in 8086 ASM, PIC ASM, C, C++, variants of C (for different uControllers), Java, LabView, and 5 or 10 other languages that I have forgotten about (like LISP) etc. I am a seasoned programmer who has experienced many different environments.... The best programming language by far in my opinion is LabView (a totally visual programming language) - but the easiest text language to use, to learn, and to teach is Arduino.

The "getting over the hump" factor just can not be beat.

Yes - It is not suitable for the hardcore project... but for empowering your peers to not depend on you - it is THE BEST. For instance - Steve at Jozztek picked up Arduino (and LabView for that matter) in only a few weeks time. Like a duck to water. Had I tried to lay something like hard core C on him it probably would have taken two weeks just to get his IDE set up and working without any issues :mrgreen: . Lets not even talk about targeting different platforms, snatching snippets off the net, dealing with the minutia of each micro controllers hardware, etc.

Just like none of us liked Java when it first came out..... until we saw that we could write a program that would run on *anything* - apple, IBM, you name it... then we were like "ohhh...." :mrgreen: Arduino has the awesome quality that it works on any supported Arduino chip (which obviously will just grow and grow) and it is a very small program set - super easy to not get overwhelmed by. And lastly.. of course you can break out at any point and write efficient code if you need to - for some crazy interupt that has to happen in 3uS or less or whatever.... so it is not like you cant do anything you could do with a standard AVR chip (of which I dont have much experience - last chip I worked with was an MSP430 and before that it was PIC)

Anyway - I should know better than to invite more infighting and blathering in my thread (I am sure someone will show up to tell me that Arduino sucks and only retarded people use it :mrgreen: ) but I did want to take this opportunity to make an Arduino service announcement.
Again - rant not directed at you in any way. I appreciate that you took the time to help out and post the code for a Port Write. I appreciate your help.

-methods


It's true, if this retarded old dog could pick it up then anyone can. Methy's patient teachings made it easy though...

Well done indeed for documenting this (and other projects) here, and for putting up with all the flack that comes with it!
Once you've finished fighting with the peasants I look forward to seeing it work right out the box!

Jozz
 
Arduino is not a programming language per se :p , it's a really crappy IDE with a so-so target C/C++ library/platform. But it "standardized" on a specific hardware, which allows to share and contribute ideas with huge impact.
I'm not against it, I also use it when I see fit and I've even made boards compatible with it :). I'm very low-level oriented and enjoy "hardcore" programming (also did my share of assembly programming on a few different platforms from Z80 forward), but in a commercial application I give priority to productivity and reliability (and code legibility) over other technical aspects - if I get that on a specific project with Arduino, that's what I'll use. In very rare occasions we need to count cycles today.

Ooops, off-topic. Let's get back, with a headsup:

BOD disable functionality has been implemented in the following devices, only:
• ATtiny25, revision E, and newer
• ATtiny45, revision D, and newer
• ATtiny85, revision C, and newer

Cheers

p.s. I did like Java!, and still prefer it (as a language) over C# and C++
 
Njay said:
Arduino is not a programming language per se :p , it's a really crappy IDE with a so-so target C/C++ library/platform. But it "standardized" on a specific hardware, which allows to share and contribute ideas with huge impact.
I'm not against it, I also use it when I see fit and I've even made boards compatible with it :). I'm very low-level oriented and enjoy "hardcore" programming (also did my share of assembly programming on a few different platforms from Z80 forward), but in a commercial application I give priority to productivity and reliability (and code legibility) over other technical aspects - if I get that on a specific project with Arduino, that's what I'll use. In very rare occasions we need to count cycles today.

Ooops, off-topic. Let's get back, with a headsup:

BOD disable functionality has been implemented in the following devices, only:
• ATtiny25, revision E, and newer
• ATtiny45, revision D, and newer
• ATtiny85, revision C, and newer

Cheers

p.s. I did like Java!, and still prefer it (as a language) over C# and C++

I actually code my Arduino projects in Visual Studio IDE with full auto completion, color coding, etc. The language can run a bit tedious but only for the most intricate routines, in general it's a fantastic platform (hardware) to start from for larger scale work and perfect for small run stuff or one offs.

Just my .02

-Mike
 
Thanks - as far as I can tell they are on revision F or later. I bought the parts on Digikey so I am pretty confident I will get something relatively recent. It would not be a total show stopper... but I would have wasted a ton of time. Thanks for the heads up.

-methods



Njay said:
Ooops, off-topic. Let's get back, with a headsup:
BOD disable functionality has been implemented in the following devices, only:
...
• ATtiny85, revision C, and newer
 
Back
Top