The 2N7000 is a N-Channel Enhancement Mode Field Effect Transistor, a.k.a. MOSFET for voltage controlled small signal switching. On a data sheet this MOSFET is shown to be capable of switching 200ma with a 60V rating.
When considering a means to provide 5V VCC for sensors (<20ma) that are sampled once or twice per day the 2N7000 could be a good choice. Assuming a 20ma current, the 2N7000 should power about ten devices while a digital pin of an ATmega328 (Arduino) shouldn’t be tasked with more than two assuming a 20ma current.
At this point, the common wisdom is to consult the datasheet. The datasheet is undoubtedly a goldmine of information for electronic components but it often seems the numerous pages after the summary and pinout list are somewhat less helpful. Of course this view is not likely shared by those involved in circuit design but this traveller finds it quite easy to become bogged down with labels of 'absolute maximum', 'recommended', 'typical' and befuddled even further by the multitude of 'conditions'.
Nonetheless heat generation/dissipation may be the one question that needs a bit more of an answer before using the MOSFET for the 5V. What is the practical current limit for the device in the Arduino arena? Practical could be perhaps defined at the point the workbench burns but a more useful limited seems to be simply “ouch!”. Where inadvertent contact between the device and the tender forearm elicits “ouch!” and is accompanied by all manner of flying coffee, discrete components, soldering irons and so on.
The point for this Instructable is to show material, methods and outcomes of a venture undertaken with the 2N7000 MOSFET to explore a practical current limit for its application.
In order that this Instructable is not held to a very high scientific standard, it is described as empirical as in "verifiable by observation or experience rather than theory or pure logic”.
Unlike the normal understanding of an “Instructable”, the focus is not on what was built. Hopefully, the presentation is interesting for its results and is useful as an inspiration.
Step 1: Material
The material used for this Instructable makes use of some ‘fabrication’ from other projects and may seem too elaborate or ‘over-kill’. Simply for completeness a list of components that reflects the images of the project is:
- 10x - LED (here RED 2V nominal forward voltage
- 10x - 180Ω resistor
- 10x - M-M Dupont Connector Wire
- 1x - Arduino UNO
- 1x - Data Logger Module
- 1x - SD Card
- 1x - Arduino UNO Prototyping Shield c/w mini-breadboard
- 1x - 830 Tie Point Breadboard
- 1x - 400 Tie Point Breadboard
- 1x - MB102 Breadboard Power Supply
- 3x - 3-position DIP switch
- 1x - dab Thermal Paste
- 2x - DS18B20 Dallas Temperature Sensor
- 1x - 2N7000 TO-92 MOSFET
- 1x - 4.7kΩ resistor
- 1x - 100KΩ resistor
- 1x - 3-pole Screw Terminal 5.08mm
- 1x - Wooden Clothes Pin
- 1x - Jewellers/eyeglass screwdriver
The small screwdriver is the only tool required with pre-built parts.
Specification sheet for a DS18B20 here.
Specification sheet for a 2N7000 here.
Step 2: Formation Detail
Data Logger Shield
The data logger, marked as ‘Keyes’ is maybe a cousin of the well documented Adafruit Data Logger Shield.
For developing other projects the shield has been amended with a Maxim/Dallas one-wire bus (VCC-DQ-GND) with the recommended 4.7K Ω resistor, an ‘on-board’ DS18B20 temperature sensor and a 3-pole Screw Terminal (5.08mm). The DQ pin is soldered to the digital pin 2 of the shield. VCC and GND are soldered to corresponding pads from the breakout section on the shield.The Screw Terminal provide for the extension of the OneWire bus using solid core, stranded or pinned wires.
The Arduino UNO Prototyping Shield mini-breadboard is set up for a second DS18B20 temperature sensor and a 2N7000 MOSFET placed in contact as shown in the image. The two flat sides of the TO-92 style semiconductor packages are joined with a small dab of Thermal Paste. Initially a wooden clothespin was used to hold the devices together while the paste cured and subsequently a small strip of electricians tape was used while the final wiring was performed. Ultimately nothing was necessary during data logging.
A 100K Ω resistor is used to pull the gate pin of the N7000 to ground. As shown in the wiring diagram, the DS18B20 is added as a device on the one-wire bus. (The red insulation has no electrical/electronic significance only being an identifier for the DS18B20 during wiring).
Load and Power
The load chosen for the test was the ten red-emitted colour (transparent lens) LEDs. A nominal forward voltage of 2V combined with the 180Ω resistor should limit current to about 18mA at 5V for each LED. The MB102 Power Supply/400 Tie Point Breadboard can provide 500mA and more.
Initially foreseen, the loading scheme was LED by LED, hence the DIP switches. Reality saw the load applied at 1-4-7-10 LEDs.
Step 3: Wiring
The fritizing diagram is meant only to illustrate the connections more or less schematically to help in comprehending the code. A three pole DIP switch was used to accommodate the off-set of the bus strips and terminal matrix. A corresponding fritizing part was not located, the 8-pole is intended to indicate the part(s) location.
Another example, the tactile button and LED from Arduino pin 9 and Arduino pin 8 are features of the Prototyping Shield, connection is made on the shield. Similarly the 18B20 IC and 4.7K resistor are soldered to the SD Logger Shield. The connection to Arduino pin 2 for OneWire operation is also soldered on the shield.
As shown in the ‘formation’ section the second 18B20 and the N7000 MOSFET are inserted on the 170-tie point of the Prototyping Shield. Power for logic ICs is drawn from the Arduino. The power for the load (LEDs) is drawn from the MB102 Breadboard Power Supply. A common, non-looping ground plain connects the Arduino side with the MB102 PS.
Step 4: Code
The code (sketch) is a combination of several sources that (most likely) accompanied the pertinent libraries available on GitHub. The basic compilation was created in October 2015 and the libraries have not been refreshed from that time but this code only uses the very basic operations from each library so should be not be effected by upgraded library functions.
As stated the object of the test was to evaluate the practical current limit of a 2N7000, specifically to investigate the temperature under various loads. The idea is not to determine the maximum temperature the device could sustain or any maximum current.
A thermal burn seemed to be an understandable limit for the temperature that according to Wiki is “in a finite amount of time is 44 °C (111 °F)”. And loosely interpreted, finite is six seconds at 51°C.
A second element of the temperature is its ‘gradient’ and hence an implication for any duty cycle of the device’s application.
With these goals in view, the sketch from Oct 2015 was amended for the project to handle the MOSFET, duration time, cut-off limits and user interaction. In the sketch the following parameters were in effect for the results to be shown in the following step;
- Maximum temperature - 55°C
- Default duration - 17 min
- Temperature sample – 24sec
- MOSFET cycle – 56 samples
The code includes conditional compilation as:
- LOGTOSD – includes code to initialize and log data to SD.
- SENSORID_CSV - Displays the sensor address as C_Array over Serial.
A crudely amended version of a ‘debounce’ routine is contained in a second file. The sub-sketch is a simple button-LED routine to service the button and a single LED from the prototyping shield.
The sketch provides the user with a specific interaction via the Serial Monitor. On start up, the sketch accepts input of one or two numeric digits for appending to the file name. The purpose is to allow separate file names when the sketch is re-run by system reset. This is not a required input and processing continues after 10 seconds.
Finally, the other interaction is a tactile button (prototyping shield) that causes the routine to perform a controlled termination. The controlled termination closes the data file and turns the MOSFET off.
Step 5: Observations
The observations from four set-ups are shown in the graphs. The displays are a bit confusing as the y-axis scaling of each graph is different. The base of each graph is 20°C and the y-axis labeling is °C above 20°C.
Nonetheless, the graphs show sampling of both the sensor on the SD shield and the sensor on the breadboard (test). The four graphs show the temperature samples with the tested load factors, nominally 18mA, 76mA, 126mA and 180mA.
Step 6: Summary
There has been no attempt to explore or explain the many features of this project that make it 'unscientific'. For example, the effects of the sensor's contact on retaining or dissipating heat are unknown. Also there has been no attempt to quantify any effects, useful or otherwise, of the shield/breadboard on air circulation, etc. Therefore, basic conclusions are quite impossible to offer.
Maybe there are a couple of 'take-aways'. It seems that the 2N7000 would be problematic if operated for a long period without good air circulation or heat sinking, therefore wouldn't be a good choice to be put inside a small plastic enclosure. On the opposite side, the device does seem to be capable of operating without special precaution for minutes, not just seconds, at a load approaching its design maximums. This is not to suggest a small plastic enclosure is appropriate for the application.
Although this project was somewhat difficult to present as an Instructable, it hopefully contains something of passing interest or gives cause to a chuckle. For the author, the question of whether to publish or not is now muted. The deed is done.