Most Viewed (2012)
The PollLoading ...
Most Commented (All Time)
First off, my congratulations to the students of FIRST Tech Challenge team 5445, the Trohawks, for making it all the way to the Iowa State Championship yesterday! Buster (the robot) performed wonderfully. He managed bowling balls, racquetballs, and crates, all while navigating the FTC
arena war zone.
Although we didn’t quite make it to the national competition, we certainly had a lot of fun competing. Although I don’t have any video this time (lighting was atrocious), take a look through these exciting action shots from our five matches (mouse over for captions):
On the off chance you haven’t seen it yet, the UPenn GRASP Lab has just released yet another impressive video of their performance quadcopters. This time they’ve got a new “nano” version that’s smaller, lighter, and capable of flying in formation. It’s like synchronized swimming, but with more buzz:
Now as usual, the internet comments on this latest quadrotor development have largely consisted of “WOW!” and “Good heavens, they’ll kill us all!” But as for me, once I’d retracted my dropped jaw, I started trying to figure out how it all worked. Unfortunately, I haven’t found any real documentation on this project beyond the videos posted by PhD candidate Daniel Mellinger. I just might have to send him an email…
But never fear, I have at least discovered how they’re tracking the quadcopters. Did you notice those camera-like devices mounted along the walls? And those funky red ring-lights surrounding their lenses? Well those are VICON motion capture cameras:
These devices by themselves are quite impressive. Much like traditional video cameras, each of these units contains a sensor with a certain number of megapixels. However, VICON sensors are designed for fast frame rates (up to 2000fps), high resolution (up to 16MP, more than seven times the resolution of 1080p HD Video), and sensitivity to the red/infrared light emitted by their ring light strobes. Why red light? Well, these aren’t your typical video cameras. Their purpose isn’t to capture a full-color image, it’s to capture points of light coming from passive reflectors. In fact, what each camera sees looks like a star map of sorts. Once multiple cameras are setup and calibrated, sophisticated software can measure and track the position of each reflector in real time.
So in the video above, it appears that each quadcopter has at least two reflectors attached to its top surface. The perimeter cameras can then measure the position and orientation of each unit and relay that information to some kind of controlling computer. What I still don’t know is how the software distinguishes between each quadrotor. Perhaps VICON has reflectors which can be distinguised by the precise wavelength of light at which they reflect? Or maybe the computer is just smart enough to know that the same set of points represents a certain unit from one frame to the next?
I’m also wondering how each quadcopter is controlled. Some type of ZigBee wireless link perhaps? And does the main computer handle everything? I suspect there must be a certain amount of control embedded in each unit. Perhaps they’ve all got accelerometers and MEMS gyros keeping them straight and level. Still a lot of unanswered questions. But in the meantime, enjoy this video on a radically different use of the VICON technology:
If you’re like me, the first thing you do when wiring up a new circuit is to connect the power and ground rails (with the power source initially turned off… maybe). And you’ve probably got at least one power supply that’ll do the job. But what if you didn’t have the supply you needed? Perhaps all you’ve got is a 12V battery, and you’re in need of a 3.3V source. Well, if you’ve finished your chores, I hear Tosche Station will sell you some power converters. Failing that, you could always build your own. A simple buck converter will likely do the trick:
The buck converter takes a DC input voltage and reduces it by a controllable amount, much like a resistive voltage divider. But unlike your average voltage divider, the buck converter can efficiently supply a substantial output current. In fact, this circuit’s output current should be greater than its input current (on average). And no, that doesn’t violate any laws of physics; the converter’s output power will still be less than its average input power because its output voltage is lower than the voltage at its input. In mathematical terms, (PIN = VINIIN) > (POUT = VOUTIOUT), where IOUT = ILOAD above. Make sense?
Now clearly this isn’t your typical linear regulator. Not with that inductor sitting there anyways. So just how does it work then? Well, the key is in the switching action of the p-channel MOSFET – a fact that leads us to call such circuits switching regulators.
Think of the FET as a simple switch. When this switch is on (conducting), the current through the inductor (L1) will ramp up (since VIN > VOUT), as will the voltage at the output capacitor. But we don’t want the output voltage to go as high as the input voltage. So, after a very brief on-time, we turn the switch off again. But once the FET stops conducting, the inductor’s current has to go somewhere. Well fortunately we have diode D1 available – it provides a path for current to continue to circulate (out to the load, back to ground, up through the diode and back to the inductor).
Here’s the trick though: this on-off switching cycle happens over and over again, many thousands of times per second. In fact, the more frequently we switch, the smoother our output voltage will become. This is because we have an output capacitor picking up the slack (so to speak). During the switch-off periods, as the inductor’s current drops, COUT supplies the bulk of the output current (ILOAD). Once the FET is switched on again, the inductor’s current ramps back up and recharges the output capacitor. Thus, we maintain a constant ILOAD while the capacitor absorbs the ripple current (IRIPPLE).
Now as you may have already guessed, the ratio of the input to the output voltage is determined based on the relative lengths of the switch’s on and off periods. This is a method known as pulse-width modulation (and it’s used in tons of other circuits):
If the switch were turned on 100% of the time, the output voltage would eventually equal the input voltage. On the other hand, if the switch were on 0% of the time, the output voltage would be zero. So it makes sense then that the output voltage is equal to our duty cycle (the percent on-time) times our input voltage. In other words, if the switch is on for 50% of a cycle, in theory VOUT = (50%)(VIN). Now in practice, non-ideal components will cause the required duty cycle to be higher than expected, but we’ll get to that later.
By the way, if you’re wondering how to go about picking component values for your own buck converter, there are equations for that. But instead of going into all of the details here, I’m going to refer you to this excellent guide (and video) from Microchip. It’ll walk you through an example design for a 12V to 5V, 2A buck converter.
So this past Sunday I was in my “lab” (aka the table in my basement) and decided to see how efficiently I could build myself a buck converter with the parts I had on hand:
I’ve laid out my circuit almost exactly as shown in the schematic above (ignoring the four ceramic filtering capacitors connected across the four parallel supply rails). On the left is my p-channel MOSFET, followed by diode D1. The large green and black thing is, you guessed it, the inductor (which I scavenged from a broken battery charger). To the right of the inductor are three capacitors in parallel (I’ve done this to get better output filtering characteristics at high frequencies). The white and black wires you see leaving the right side of the board are connected to my resistive load. The circuit is configured like so:
- VIN = 10V
- PFET = IRF9540
- D1 = 1N4004
- L1 = 100uH
- COUT = 270uF (effective)
- FSWITCHING = 52kHz
- D = 62%
- VOUT = 5V
I should also note that these component values were chosen based on an expected load current of 1A and a ripple current of 0.3A. I only had the one good inductor to play with, so I computed my switching frequency based on its value.
Experiment #1 (Bad Diode)
For this first test, utilizing the 1N4004 general purpose diode, I measured the following:
- PIN = 8.7W
- POUT = 5.1W
- Efficiency = 59%
- TPFET = 120°F
- TDIODE = 149°F
- TINDUCTOR = 82°F
Alright, so while an efficiency of 59% isn’t terrible (particularly by comparison to the 50% you’d achieve using a linear regulator), it’s not great either. Simple buck converters are typically 80-90% efficient. So unless my measurements are way off, clearly something’s not right here. Based on the temperatures I measured using my Kintrex IR thermometer, I suspect the diode may be our efficiency bottleneck (since it’s the warmest component). To find out, let’s measure a few voltage waveforms while the circuit operates:
The top waveform, in pink, is our measured 5V output, shown at 5V/div. Below that, in green, is the voltage measured at the connection between D1, L1, and the FET, shown at 10V/div. At the very bottom, in yellow, is our gate drive signal. When this signal hits 10V, the p-channel FET will be off; when it’s at 0V, the FET will be conducting. Note that because of this inverse relationship, the duty cycle calculated by the scope (~38%) is incorrect; we need to subtract this value from 100% to get our true duty cycle (~62%).
So as I suspected, the diode is clearly having some issues. See that big (~25V) negative voltage spike across the diode each time the FET turns off? Yea, that’s not so good. It means our diode isn’t turning on as quickly as it should. This puts additional stress on the FET. But when the diode finally does turn on, it’s showing a voltage drop of just over 0.9V. During the switch-off period of a cycle, the diode has to conduct, on average, the full load current of 1A. Since our duty cycle is 62%, the diode will be conducting 38% of the time, meaning it conducts an average current of 0.38A. Using P = IV, we can determine that the diode is dissipating at least (0.38)(0.9) = 0.34W. The diode’s turn-on delay probably accounts for more loss, but I’m not entirely sure how to calculate that.
Experiment #2 (Schottky Diode)
- PIN = 5.5W
- POUT = 5.1W
- Efficiency = 93%
- TPFET = 81°F
- TDIODE = 81°F
- TINDUCTOR = 80°F
Wow, that’s quite a difference in efficiency (from 59% to 93%)! And it’s all thanks to the minimal (<0.3V) forward voltage of that Schottky diode, as well as its fast turn-on time. Our waveforms are starting to look a lot cleaner as well:
Experiment #3 (More Current!)
So what happens if we now decide to turn up the heat a little? What if we suddenly decide to supply a 2A load instead of 1A? Well, I tried just that. Here’s what happened:
- PIN = 12.8W
- POUT = 10.5W
- Efficiency = 82%
- TPFET = 96°F
- TDIODE = 85°F
- TINDUCTOR = 81°F
Hmm, it seems our efficiency has dropped again. But not unexpectedly. Based on the temperatures of the components, it seems like our FET may now be the limiting factor. And no surprise; the p-channel device I’ve chosen has an on-state resistance of ~0.2Ω. Using P = IV = I2R, and multiplying by the duty cycle (the switch on-time), I get:
P = I2RD = (22)(0.2)(0.62) = 0.50W
And even at 0.3V, the diode is still dissipating substantial power as well:
P = IV(1-D) = (2)(0.3)(1-0.62) = 0.23W
Now unfortunately, I don’t have a better p-channel MOSFET to try out at the moment. So I’m just going to have to accept those losses for now (shame on me). However, there is a way to nearly eliminate the losses of the diode: replace it with another FET!
This time I’ll be using an n-channel MOSFET which, as you may know, contains it’s own diode (called the body diode; the p-channel FET contains one as well, but I’ve omitted it in the diagrams above). But we won’t be relying on that diode to handle any current. Instead, we’re going to switch on the n-channel FET whenever the p-channel FET turns off (they’ll be complimentary). In doing so, we’ll create a low resistance path (<0.1Ω) through which the ripple current can continue to flow during the P-FET’s switch-off period.
Sadly, I can’t claim credit for this brilliant idea. I’m not sure who first thought it up, but it’s called the synchronous buck converter (as opposed to the asynchronous, or standard, buck converter). I imagine this is because you have to operate the two FETs in sync with one another. This makes life a little tricky, as you don’t want to accidentally turn on both transistors at once (thus creating a short from power to ground). But it’s not bad.
Here’s a scope trace showing the n-channel FET’s additional gate drive signal (in purple):
Experiment #4 (More Current, More FET!)
Well I’m sure you’re just dying to know how much of an efficiency improvement this synchronous converter will provide. Well fear not, here are the results of my last test:
- PIN = 12.0W
- POUT = 10.4W
- Efficiency = 87%
- TPFET = 96°F
- TNFET = 84°F
- TINDUCTOR = 82°F
Indeed, this is an improvement! We’re not quite back to the 93% efficiency we saw at a load current of 1A, but 87% is still better than 82%, no?
So, lessons learned? Use quality components. That means FETs with as low an on-resistance as possible. And if you don’t want to go with the synchronous converter, make sure you pick a fast diode with low forward voltage.
By the way, although I haven’t done it here, you’ll probably want to wrap your buck converter in a controller of some kind (unless your load current will be fairly constant). If you don’t, with a constant duty cycle, variations in load will cause your output voltage to change by a fair amount. Fortunately, If you look around the interwebs, you’ll find a number of ICs that provide buck converter control. But if you’re clever, you could whip up your own op-amp control circuit. Or just program an AVR to do the job for you – they’re great at PWM. Give it a shot and let me know how you make out.
One last thing: if you’ve been counting, you’ll notice that the losses I’ve calculated don’t add up to the difference between input and output power. Lest we forget, there are still resistive losses in the inductor and output capacitor, as well as switching losses on the transistor(s). This switching loss has to do with the power dissipated in the FET’s gate capacitance, as well as resistive losses as the transistor ramps between on and off states (nothing happens instantly you know). The solution? Again, buy better parts.
Questions, comments, suggestions, requests? Feel free to leave them below. Thanks!
As I’ve mentioned in the past, I’m a mentor for a local FIRST Tech Challenge team (Go Trohawks!) here in Waterloo, IA. For the past two months, my students have been busy designing, building, and programming Buster, their robot:
This past Sunday, we were put to the test at the Davenport Regional Qualifier. The students did exceptionally well. They impressed the judges with their knowledge and teamwork, their robot consistently captured their team’s bowling ball (both autonomously and via remote control), and they somehow managed to survive the bad jokes and the cha cha slide performance of our MCs and referees.
We did have a little trouble with the racquetballs though. Those little devils kept getting stuck in our drive mechanisms. Usually it was possible to rock the robot back and forth a bit until they dislodged, but it still caused us quite a bit of delay.
Now our main goal, as you may have guessed from the first picture above, was to retrieve and park our team’s bowling ball. This is something we can do quite well both autonomously and via remote. However, we were so good at capturing the ball that we were left without much to do for the majority of the competition. We’ll have to think of ways to deal with avoiding/collecting racquetballs for the next meet.
At the end of the day, we wound up ranked seventh out of twenty-one teams. Not bad considering the fact that none of us had ever done this before. And yes, I did manage to capture several of our matches on video using my BlackBerry Storm. Unfortunately, the video quality is very poor, and nowhere near HD resolution. Nevertheless, I present to you our fourth match. Feel free to comment below!