The persistent switch on the superconducting magnet needs a computer controlled heater. The heater itself is just a coil of nichrome wire around the YBCO:
With some experimentation I determined that it takes about 300 mA to make the heater warm to the touch.
Now I want to computer control the heater using a digital output on the NI USB 6008. The 6008 will control a higher current transistor (or darlington) and the transistor will control the current to the heater.
Seeing that the NI USB 6008‘s output is either +5V or 0V, my first instinct was to try this:
This failed. FAIL.
I looked at the docs for the NI USB 6008 and I found this:
The default configuration of the NI USB-6008/6009 DIO ports is open collector, allowing 5 V operation, with an onboard 4.7 kΩ pull-up resistor.
So basically the digital output is either an open circuit or a path to ground. The 4.7 kΩ pull-up resistor brings the output to +5V when it’s ON, but when you ammeter from DO1 to ground you don’t see any current.
However in this configuration you will see a current turn on and off with DO1:
How do we go from a current to a voltage? A resistor!
This schematic represents the working solution:
Here is a video of computer controlled current:
![]() |
From 2010-09-30 |
I’m not too sure, but i don’t think you even need that resistor in there, transistors are current, not voltage controlled. You can try putting the resistor in series.
Completly disregard my post above, now that’ve i’ve taken another look at the circuit i realize that what is said was completly wrong and would’ve permanently kept transistor on.
The first circuit would work if the output was a push-pull, but open-collector can only draw current, not supply any, and NPN transistors, as used here, need current to flow _into_ the base to turn them ‘on’.
Technically, the 4.7K pull-up on the output will allow it to supply current to the transistor, but only a little.
Since the NI6008 runs at 5V, you would only get 1.06mA in short-circuit. The Fluke 111 series (noticed in a previous post) doesn’t seem to have a ‘mA’ setting, so it might not even register. Maybe try your Fluke 175 to test this?
In your second circuit, you have permanently wired D01 to ground! This won’t damage it since it’s an open collector, but might have if it had been a full push-pull output.
More importantly, it means that D01 cannot control the transistor at all!
Also, the transistor gate is permanently wired to 5V, so it is always on, with no current limiting at all.
If you wired that circuit, not only should PC-control not have worked, but the transistor might well have burnt out…
Since you have apparently succeeded, I suspect you did something different, possibly what I explain next:
WARNING: LONG, MATH, GUESTIMATES, ETC
Short version:
* Depending on the resistance of your heater, the simple low-power 2N5088 you use may well not be powerful enough (100mA max), or have enough gain.
* Also, a beefier BC639 with a sill lowish gain would be enough to drive the load, but the NI6008 will probably not be able to turn it off (or might die trying)
* A ZTX601 darlington would have enough gain that the NI6008 will have no problem, and you might not even need to add an external pullup!
LONG version, with numbers, substitute your own :)
Your first circuit should work, as long as you have a high-gain transistor, or add an external pull-up.
I will assume here that you use a 5V rail (Vcc) to pull to.
Circuit:
* Pullup Rp from D01 to Vcc
* Darlington Base wired to D01
* Emitter wired to Ground
* Collector wired to Heater
* Heater wired to Vpow
Let the heater’s resistance be Rh
We also need VceSat, Vbe, hFE(gain) for your transistor/darlington
Note that these values (especially hFE) can vary a lot depending on the current drawn through the load, and the Quality Group you get!
So, the heater current we want to control is: iheat = (Vpow-VceSat) / Rh
All this current goes into the collector of the transistor, so ic = iheat
To control this, we need a current into the base of ib = ic/hFE
For the transistor to run cool, it must be saturated, not linearly amplifying, meaning there is much more current through the base than strictly necessary. A factor 5 or 10 is the usual rule of thumb IIRC.
So ibOver=5*ib = 5*ic/hFE
This current must come from the pullup resistor. I shall ignore the one already in the NI6008 for now.
In this case, ibOver = (Vcc-Vbe)/Rp, ie: Rp = (Vcc-Vbe)/ibOver
Let’s try out some real values:
I don’t know what resistance your heater is, but I’ll guestimate 20Ohm, based on it looking like you have 4x as much nichrome as a 6Ohm RepRap heater (Not having a RepRap myself, I am probably very wrong, measure yours!)
With VceSat at 0.5V (your 2N5088), we get iheat=(10-0.5)/20 = 475mA
This is too much for the 2N5088, so I would swap it for a beefier one.
Say we choose a BC639 [selected for its short name within the first page of In stock, PbFree, ROHSok, through-hole, 1A, NPN on DigiKey, sorted by DigiKey’s default (Manufacturer I think)]
VceSat is still 0.5V for this part, so all is good.
hFE at 500mA is stated to be 25 minimum, so ib=19mA, ibOver=95mA
Vbe is 1V, so Rp = (5-1)/0.095 = 42Ohm
No wonder the 4.7K internal pullup wasn’t enough
There is another problem though: to turn the transistor off, the NI6008 will have to pull the Base under Vbe, and this will cause current to be sunk into the device.
With Vlow the ‘low’ voltage of the NI6008, this current is iNI=(Vcc-Vlow)/Rp; Vlow is stated to be 0.8V, so iNI=(5-0.8)/42=100mA
Unfortunately I cannot find the rating for the NI6008, but Vlow=0.8 is specified for iNI=8.5mA
It is unlikely that the NI6008 will manage to pull 100mA, and if it does, it might be damaged (you probably want to check)
Therefore, we need a transistor with more gain. The easiest way would be a darlington.
The ZTX601 [first In stock, PbFree, ROHSok, through-hole, 1A, NPN darlington on DigiKey] has an hFE between 2K and 100K (10K and 100K if you get a B group); Let’s assume 2K.
VceSat is different though: 2V@500mA, so iheat=400mA
This gives us ib = 0.4/2000 = 0.2mA, and ibOver=2mA (10x factor)
Vbe for the ZTX601 is max. 1.9V
So, Rp = (5-1.9)/0.002 = 1550ohm (a plain 10% 1.5Kohm would be fine, or a bigger one amounting to 1.5K when in parallel with the existing 4.7Kohm in the NI6008)
iNI for this pullup would be iNI=(5-.8)/1550=2.8mA which is nicely lower than NI’s example.
If your darlington has a better hFE, say 10K (easily possible, and the minimum for ‘B’ quality ZTX601B’s), ibOver@10x oversaturation would be 0.4mA, and Rp=(5-1.9)/0.0004=7750ohm
Notice this is more than the internal pullup; and therefore no extra pullup is needed !
If you actually managed to read all this cr*p, best of luck selecting your dream transistor!
Feel free to ask if anything’s unclear, or your heater resistance is much different, etc!
Cheers,
Jonathan
Jonathan, here is a fuller schematic of what I just hooked up:
http://picasaweb.google.com/102602129941374127392/20100930#5523085302172310690
Also, excellent comment BTW!
You’re welcome :)
Your full schematic does explain why it actually works, although it’s quite weird (at least to me who am used to single-ground systems)!
Indeed, your system works, but has the drawback of ‘floating’ the heater supply up 5V when the heater is off. Not necessarily a problem per-se, but if you expand the circuit any more, it might become very confusing, and also makes it impossible to use that power supply for anything else!
The problem remains, also, that your transistor has no current limitation on it’s base, which will cause it to overheat, and maybe burn out…
After reading your post again, I noticed you wanted a heater current of some 300mA; this is indeed more than the 2N5088 is supposed to handle (although it might survive a while), But, in your video, it looks like your power supply is set to limit the current output to 100mA or so.
Maybe you did this on purpose to test the circuit with a 2N5088 before upgrading for something permanent?
Adding a base resistor (either between VccNI and the old resistor, or between the old resistor and the base) will limit the base current to sane values.
I also noticed that the BC639 has an awful hFE, you could use the ZTX692B which has a hFE of 400, while bieng capable of 1A
If I were you, I’d try and avoid moving then power supply’s negative rail, and using something more on the lines of my example and your first circuit.
With the ZTX692B, iheat=300mA, you would have ib=0.75mA, ibOver=3~7mA (5x~10x), Rp=(5-0.9)/(0.003~0.007)=1171~586ohm
(I’ll assume you can solve for the parallel association of external and internal pullup to get Rp total; or, you can just ignore the internal one and get a little higher oversaturation)
@Ray:
Indeed, a TO-220 would allow better heat dissipation
Moreover, MOSFET have lower Ron, further reducing the amount of heat needing to be dissipated in the first place
Also, a MOSFET would allow you to totally forget about base resistors, since they require virtually no gate current. HOWEVER, in a noisy environment such as this seems to be, a pullup close to the MOSFET would probably be a good idea, possibly even absolutely necessary for noise immunity, if the control line is particularly long or unshielded.
Very high gain darlingtons might also need a pullup close by.
If there are ground loop problems, I would indeed add an optocoupler. These tend to be open-collector types, so most of our calculations still apply after it :)
If you have lots of noise problems, you could even go crazy and use fiber optics from the NI6008 to the heater controller (leaving the controller close to the heater); Or, keep the controller close to the NI, and run the “high” current 300mA wires to the heater through the noisy area. These would be much more immune.
On a related note, you mentioned your heater is a _coil_ of nichrome around the superconducting wire. I am not at all certain about this, but:
Could this make the heater susceptible to picking up what is happening in the superconducting coil, especially when current suddenly rushes through the heated strip when it goes superconductive? If so, could it blow the controlling transistor, and the NI6008?
Would a different heater geometry help? (coiling around, then coiling as many times in the opposite direction; laying the nichrome back and forth parallel to the strip, and leaving at the same point it arrived; something else…)
Using an optocoupler would protect the NI6008 against very large induced voltages; fiber optic would make it unreachable.
Cheers,
Jonathan
I agree with the above analysis:
Not knowing the environment the driver will operate in; I would pick a TO-220 transistor or mosfet; they have a much better thermal resistance.
In addition, to avoid the “ground loop” problems you had before you might drop an opto-isolator in between the NI computer equipment and the driver.
Ray
To save on the power required to the heater (and thus heat delivered into the cryostat), you can position a pair of small rare-earth magnets near the heating coil. The field of the magnets will allow the transition to occur at a lower temperature. Just make sure they aren’t too powerful, or it will limit the amount of power you can run through the magnet. This is a so-called “Flux-assisted resistive current switch”.
you may want to protect your transistor with a diode since that nichrome is a coil, although I doubt the impedence is enough to build up a backward voltage that will fry your transistor.
I’m with Jonathen on this, the reason why this circuit actually works is quite intresting but it isn’t something that you should keep using. MOSFETs are probally a better idea in this case.
@Jonathen
The geometry for this is fine, wires perpdincular to each other are fairly safe from interferance from each other