dc motor circuits notes 2up
DESCRIPTION
DC Motor Circuits Notes 2upTRANSCRIPT
-
10/25/12
1
Basic DC Motor Circuits
Living with the Lab
Gerald Recktenwald
Portland State University
LWTL: DC Motor
2
DC Motor Learning Objectives
Explain the role of a snubber diode
Describe how PWM controls DC motor speed
Implement a transistor circuit and Arduino program for
PWM control of the DC motor
Use a potentiometer as input to a program that controls fan
speed
-
10/25/12
2
What is a snubber diode
and why should I care?
LWTL: DC Motor
4
Simplest DC Motor Circuit
Connect the motor to a DC power supply
+5V +5V
II
Switch open
Switch closed
-
10/25/12
3
LWTL: DC Motor
5
Current continues after switch is opened
Opening the switch does not immediately stop current in the motor windings.
+5V
II
+
Inductive behavior of themotor causes current tocontinue to flow when theswitch is opened suddenly.
Charge builds up on whatwas the negative terminalof the motor.
LWTL: DC Motor
6
Reverse current
Charge build-up can cause damage
+5V
I
+
Arc acrossthe switchand dischargeto ground
Reverse current surgethrough the voltage supply
-
10/25/12
4
LWTL: DC Motor
7
Motor Model
Simple model of a DC motor:
Windings have inductance and resistance
Inductor stores electrical energy in the windings
We need to provide a way to safely dissipate electrical energy when the switch is opened
+5V
I
+5V
LWTL: DC Motor
8
Flyback diode or snubber diode
Adding a diode in parallel with the motor provides a path for dissipation of stored energy when the switch is opened
+5VThe flyback diode allowscharge to dissipatewithout arcing acrossthe switch, or withoutflowing back to groundthrough the +5V voltagesupply.
+
-
10/25/12
5
Pulse-width modulation (PWM)
for DC motor speed control
LWTL: DC Motor
10
Controlling DC Motor Speed
The voltage supplied to a DC motor controls its speed
Arduino cannot supply variable DC output
Arduino lacks a true analog output
Use Pulse-width modulation (PWM) to simulate a variable DC supply voltage
PWM is a common technique for supplying variable power levels to slow electrical devices such as resistive loads, LEDs, and DC motors
Arduino Uno has 6 PWM pins: Digital I/O pins 3, 5, 6, 9,10, and 11
-
10/25/12
6
LWTL: DC Motor
11
Arduno Uno has 6 PWM pins
Look for the ~ prefix on the digital pin label, e.g. ~3
LWTL: DC Motor
12
PWM: Pulsed with modulation
PWM simulates DC voltage control for slow loads
The effective voltage is
is called the duty cycle
...
o
c
Vs
-
10/25/12
7
LWTL: DC Motor
13
Arduino PWM commands
Configure the output pin:
Set the duty cycle
The duty cycle is an 8 bit value:
0 duty_cycle 255
PWM_pin = ... ; // one of 3, 5, 6, 9, 10, 11!!void setup() {! pinMode( PWM_pin, OUTPUT);!}!
void loop() {! int duty_cycle = 150; // between 0 and 255!! analogWrite( PWM_pin, duty_cycle );!}!
Using a transistor to switch the load
-
10/25/12
8
LWTL: DC Motor
15
Transistor as the switching device
Each Arduino output channels has a 40 mA limit
The maximum current draw for an Arduino is 200 mA
Use Arduino as the brain
Let another switching element be the brawn
LWTL: DC Motor
NPN General Pupose AmplifierThis device is designed for use as a medium power amplifier andswitch requiring collector currents up to 500 mA.
MMBT44012N4401
Absolute Maximum Ratings* TA = 25C unless otherwise noted
*These ratings are limiting values above which the serviceability of any semiconductor device may be impaired.NOTES:1) These ratings are based on a maximum junction temperature of 150 degrees C.2) These are steady state limits. The factory should be consulted on applications involving pulsed or low duty cycle operations.
Symbol Parameter Value UnitsVCEO Collector-Emitter Voltage 40 VVCBO Collector-Base Voltage 60 VVEBO Emitter-Base Voltage 6.0 VIC Collector Current - Continuous 600 mA
TJ, Tstg Operating and Storage Junction Temperature Range -55 to +150 C
Thermal Characteristics TA = 25C unless otherwise notedSymbol Characteristic Max Units
2N4401 *MMBT4401PD Total Device Dissipation
Derate above 25C6255.0
3502.8
mWmW/C
R!JC Thermal Resistance, Junction to Case 83.3 C/WR!JA Thermal Resistance, Junction to Ambient 200 357 C/W
C B ETO-92
C
B
E
SOT-23Mark: 2X
*Device mounted on FR-4 PCB 1.6" X 1.6" X 0.06."
" 2001 Fairchild Semiconductor Corporation
2N4401 / MM
BT4401
2N4401/MMBT4401, Rev A
16
Use an NPN Transistor as a switch
This device is designed for use as a medium power amplifier and switch requiring collector currents up to 500 mA
-
10/25/12
9
LWTL: DC Motor
17
Electronic components in the fan kit
Transistor
Diode
220 or 330 resistor
LWTL: DC Motor
18
Replace the Switch with a Transistor
A transistor allows on/off control to be automated and it allows switching of more current than an Arduino digital pin can supply.
+5V
P2N2222Pin 9
330
1N4001diode
NPN transistor
Pin 9 or another PWM pin drives the transistor base
-
10/25/12
10
LWTL: DC Motor
19
Alternative locations for the transistor
Moving the transistor (and any switch) between the power supply and the motor adds a bit of safety by tying the motor to ground when the system is idle
+5V
PWMsignal
NPNtransistor
PNPtransistor
+5V
PWMsignal
LWTL: DC Motor
20
Diode and transistor orientation
PWMsignal
330
+5V
Collector: Connect to +5VBase: Connect to motorcontrol pin on ArduinoEmitter: Connect topositive terminal of motor
Orient the diode so that thesilver stripe is at the samevoltage as the positivemotor terminal
+
-
10/25/12
11
LWTL: DC Motor
21
Arduno Uno has 5 PWM pins
Look for the ~ prefix on the digital pin label, e.g. ~3
LWTL: DC Motor
22
DC Motor Circuit on tiny breadboard
-
10/25/12
12
LWTL: DC Motor
23
+5V connections
LWTL: DC Motor
24
PWM signal is connected to transistor base
-
10/25/12
13
LWTL: DC Motor
25
Arduino program to spin the DC Motor
// spin_DC_motor.ino Use PWM to control DC motor speed!!int motorPin = 3; // Pin 3 has PWM, connected it to the DC motor!!void setup() {! pinMode(motorPin, OUTPUT); // Set motor pin to output mode!}!!void loop() {! analogWrite(motorPin, 150); // Motor at 150/255 of full speed! delay(1000);! analogWrite(motorPin, 250); // Motor at 250/255 of full speed! delay(1000);!}!!
Code is in spin_DC_motor.ino
User input to control fan speed
-
10/25/12
14
LWTL: DC Motor
27
Adjust fan speed with potentiometer input
Use the potentiometer circuit from the earlier analog input exercise
LWTL: DC Motor
28
Adjust fan speed with potentiometer input
// File: DC_motor_speed_control.pde!//!// Use potentiometer input to set the speed of a DC motor!// Output to the motor is PWM!!int motorPin = 3; // pin connected to the DC motor!int potPin = 1; // analog input connected to the potentiometer!!void setup()!{! pinMode(motorPin, OUTPUT);!}!!void loop()!{! int PWMoutput, potReading;! ! potReading = analogRead(potPin);! PWMoutput = map(potReading, 0, 1023, 0, 255 );! analogWrite(motorPin, PWMoutput);!}!!
Code is in DC_motor_speed_control.ino
-
10/25/12
15
LWTL: DC Motor
29
Adjust fan speed with potentiometer input
Each time through the loop:
Read the voltage at the potentiometer wiper
Input value is a 10-bit integer: 0 potReading 1023
Scale the 10-bit value (max 1023) to an 8-bit value (max 255)
PWMoutput = map( potReading, 0, 1023, 0, 255 );!
Update the PWM signal
analogWrite(motorPin, PWMoutput);!
void loop() {!! int PWMoutput, potReading;!! potReading = analogRead(potPin);! PWMoutput = map(potReading, 0, 1023, 0, 255 );! analogWrite(motorPin, PWMoutput);!}!
range for
potReading
range for
PWMoutput