Tuesday, April 29, 2014

MOSFETS and the Arduino for High Voltage PWM


A MOSFET(Metallic Oxide Semiconductor Field Effect Transistor) looks like this:

There are 3 pins, 1 for ground, drain, and source. Schematically the setup can be explained easily. Notice in the schematic that  the 1 pin looks as though it could press down and allow current to flow between 2 and 3. This is exactly how the MOSFET works. It is a lot like a thrysistor. Notice the little Zener diode at the bottom? For those not familiar with schematics it is the Triangle with a 3 line segments on one point.

A Zener Diode
The Zener allows flow of current( in this diagram to the right) constantly but only allows flow backwards if it is over a certain amount. This little addition to the mosfet, though it is small, is groovy for us, because our mosfet won't fail if things go South. So, you may be wondering where this is going, well today I will be covering High Power control circuits using Arduino, Mosfets, and the C language Family.
///////////////////////////////////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
The MOSFET uses a small input voltage(pin 1), not a full circuit, in order to allow a much larger voltage to pass through the Transistor(for this post transistor will mean MOSFET). This is useful for many reasons.

Currently for an ROV my team and I are working on, a large amount of "tether" seperates the Arduino controller from the Servos it controls. This is problematic for the following reasons:
  1. The Servos being used have chips inside them which can execute programs when no PWM is detected for a sufficient time span. However the robot is sent commands via a CS(Control System) using a USB to Arduino protocol which then sends pwm on the digital 9 pin(keep this in mind, only certain pins can handle pwm, there are actually only 8 on the Arduino Uno which is the board of choice).
  2. The voltage for power was too low but this was boosted with a simple parallel circuit solution, we will replace an op amp.
  3. The PWM is not reaching the Servos(it is only 5V and the current of the Arduino pins).
In order to fix this dilemma, the MOSFET will be utilized to use pulse width modulation with a "stronger" electrical source. In this case we will capture our energy from a 25 amp, 12-14.38 volt source.
Basic code outline:
Outline of program in C++

Wiring:
First wire the pwm (pin 9) into the gate of the MOSFET. This signal controls electrical flow through te MOSFET.

Next is the source, from the + of our  input power,( the source is where the electrons flow from. They have come from the p to make a bridge connecting the n material within the MOSFET, or the entire situation is reversed as is your mosfet's function.

Drain is to the load.


No comments:

Post a Comment