dc motor circuits notes 2up

15
 10/25/12 1 Basic DC Motor Circuits Living with the Lab Gerald Recktenwald Portland State University [email protected] 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 

Upload: chau-phan-giang

Post on 04-Nov-2015

9 views

Category:

Documents


0 download

DESCRIPTION

DC Motor Circuits Notes 2up

TRANSCRIPT

  • 10/25/12

    1

    Basic DC Motor Circuits

    Living with the Lab

    Gerald Recktenwald

    Portland State University

    [email protected]

    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