README.md 4.76 KB
Newer Older
Jake Read's avatar
Jake Read committed
1
# Machine Kit BLDC Driver: Circuit Development
Jake Read's avatar
Jake Read committed
2

Jake Read's avatar
Jake Read committed
3
While I previously went through this with the [ATSAMS70](atsams70.md), I'm at it again with a new micro - the ATSAMD51, so I'm re working most of it.
Jake Read's avatar
fin    
Jake Read committed
4

Jake Read's avatar
v0.3    
Jake Read committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Version 0.2

I have a laundry list of notes - below - for the next version of this. Overall, I'm interested in generally 'tightening it up' as well as fixing some circuit errors. I'm also moving away from the 'header / hardware' interface, and dropping an ATSAMD52 (the new hot chip on the block) and I'm going to treat it like a network endpoint. 

I fixed some stray, messy errors (i.e. I had some done some senseless things with the buck converter that caused it to not function) and added some filtering to my phase voltage sensing. I also added a voltage sense circuit for th VCC line so that I can figure out in software what the supply voltage is. This is useful when (later) I might end up trying to measure things like phase inductance ! 

I did a few little things (like trying to minimize the number of different capacitor sizes I had - simplicities like this are nice when I am placing components) and then was re-labelling pins for the ATSAMD51, and picking the peripherals I figured I will use. 

## New Schematicking

This is my PWM module - Timer / Counter for Control. 'waveform extensions are featured for motor control ... deatime insertion' bam.

I *think* I read the datasheet correctly on how hi/lo channels are multiplexed here. Or, at least, here's hoping that I did. Sorted that out in the schematic.

I also added microcontroller input to a few lines: the gain selection on the drv8302 (controls current sense amp gain) and the fault line, and the pwm mode line (so that in worst case I can just send hi-side signals, the drv will do lo/hi deadtime insertion and complimenting for me). 

## New Routing

But *holy shit* did I ever open up the ratsnest :|

![the-ratsnest](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/routing-ratsnest.png)

Time for some serious annealing. 

OK, I'm starting to feel satisfied with this. I've made a few big improvements - or at least they feel like nice changes. I suppose calling them big is a bit much. Besides, it was already working. *BUT* my groundplane now looks *much* better. Dang, look at that sheet of copper! 

![the-ratsnest](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/routing-groundplane.png)

Specifically, the DRV8302 used to be a bit choked out on the ground plane, and when I turned the gates on I would see that area quickly jump from 30c to 50 or 60c, still cold by power electronics standards but I was barely running any current. So this feels nice.

I also got rid of the thermal relief on the directfet packages, so they'll sink more heat into the copper (which is now 2oz instead of 1oz) as well. AND I set up proper mounting holes right across the FETS so that I can wrap them with a big shiny piece of aluminum for when I go for the kilowatt of juice *sunglasses dude emoji* 

I left a big lineup of .1" pitch pins that will save me lots of time and pain when I'm debugging this as well, those take up a bunch of space, but I know I'll be thanking myself in a week's time. 

The last thing, routing all of the voltage sense lines, was a bit of a pain. I have to reach four traces all the way from the business end of the board back to the microcontroller... 

In any case, here it is

Jake Read's avatar
Jake Read committed
43
44
45
46
47
![routed](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/routing-bothsides.png)

![routed](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/routing-groundplane.png)

![routed](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/routing-top.png)
Jake Read's avatar
v0.3    
Jake Read committed
48
49
50
51
52

And the full schematic

![schematic](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/schematic.png)

Jake Read's avatar
Jake Read committed
53
## Fabricated
Jake Read's avatar
v0.3    
Jake Read committed
54

Jake Read's avatar
Jake Read committed
55
Thar she blows:
Jake Read's avatar
v0.3    
Jake Read committed
56

Jake Read's avatar
Jake Read committed
57
![fabbed](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/fab-v031-01.jpg)
Jake Read's avatar
v0.3    
Jake Read committed
58

Jake Read's avatar
Jake Read committed
59
![fabbed](https://gitlab.cba.mit.edu/jakeread/mkbldcdriver/raw/master/images/fab-v031-02.jpg)
Jake Read's avatar
v0.3    
Jake Read committed
60

Jake Read's avatar
Jake Read committed
61
wow
Jake Read's avatar
Jake Read committed
62
63
64
65
66

# Footnotes
1. Part Number. Searching Digikey (or octopart, or what have you) for bits is an art, kind of. It's intimidating, but offers much gold at the end of the rainbow.
2. This means that this is where the FET breaks down at the transistor level. The real constraint has more to do with heat - there is *some* resistive loss in any transistor (spec'd as RDS_on) - that resistance turns into heat, and if at 86A that can be a lot of heat, and if you aren't able to get it out of the package fast enough it will break down due to high temperature. THIS is why the directFET package is cool - rather than being wrapped in plastic (not conductive) it is wrapped in a metal tin (conductive) so it's easier to really suck the waste energy out of it.
3. Both are Ben. Both control BLDC. A coincidence? Consider that.