Presentation is loading. Please wait.

Presentation is loading. Please wait.

Arduino Application: Speed control of small DC Motors

Similar presentations


Presentation on theme: "Arduino Application: Speed control of small DC Motors"— Presentation transcript:

1 Arduino Application: Speed control of small DC Motors
ME 120 Mechanical and Materials Engineering Portland State University Fall 2017

2 Learning Objectives Be able to describe the use of PWM for motor speed control Be able to explain the role of a snubber diode Be able to implement PWM speed control of a DC motor Be able to use the H-Bridge with the Sparkfun Tinker Kit to control a small DC Motor Additional references: Experiment 9 in the Sparkfun Tinker Kit experiment guide ME 120 course notes on PWM motors/overview

3 Using a transistor as a high speed switch

4 Transistor as a switching device
Each Arduino output channel has a 40 mA limit Only current to power a very small DC motor Arduino is not designed as a power supply Maximum current draw for an Arduino is 200 mA Use the Arduino as the brain Let another switching element be the brawn

5 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

6 Use Digital I/O pin to switch LED on/off
Digital I/O pin → LED

7 Code to control brightness of an LED
int LED_pin = 11; // PWM pin LED or motor control void setup() { pinMode( LED_pin, OUTPUT ); } void loop() { int duty, pot_pin=0, reading; reading = analogRead(pot_pin); // read potentiometer duty = map(reading,0,1023,0,255); // rescale to 8-bit duty = constrain(duty,0,255); // be safe analogWrite(LED_pin,duty); // set duty cycle In the following examples, the Arduino code does not need to change when the electrical circuit is changed. The Arduino code only needs to used a single digital output pin, which in this code is LED_pin.

8 Use a Transistor to switch LED on/off
Digital I/O pin → Transistor → LED

9 NPN Transistors as Switches
Transistors can be used as switches: By applying relatively small voltage to the base, electrical current will flow from the collector to the emitter. C is the collector B is the base E is the emitter

10 NPN Transistors as Switches
When used as a switch, ICE, the current from the collector to the emitter is large compare to IBE, the current from the base to the emitter. C is the collector B is the base E is the emitter

11 What is a snubber diode, and why should I care?

12 Simplest DC Motor Circuit
Connect the motor to a DC power supply

13 Current continues after the switch is opened
Opening the switch does not immediately stop current from flowing in the motor windings

14 Reverse current Charge build-up can cause damage

15 Motor Model Simple model of a DC motor:
Windings have inductance and resistance Electrical energy is stored in the windings – the inductance effect We need a way to safely dissipate electrical energy when the switch is opened after the motor has been running

16 Flyback diode or snubber diode
Adding a diode in parallel with the motor provides a path for the dissipation of stored energy when the switch is opened

17 DC motor speed control circuit
The circuit for DC motor speed control uses the idea from the LED brightness control circuit. Replace the LED circuit with the DC motor and snubber diode

18 Motor control with an H-Bridge

19 H-Bridges simplifies motor control and enable features not possible with a single transistor
An H-bridge Uses logic-level signals to switch higher current power to the motor – just like a transistor Allows polarity of motor power, and hence direction of rotation, to be reversed, Includes fly-back diodes (snubbers) Is available in a single IC package Image of L293DNE quadruple half-H motor driver from Sparkfun.com

20 Basic H-Bridge has four switches
Note that there are many ways to implement this concept. For example, 24 different designs are shown at

21 Closing two switches supplies power that causes motor to turn one way

22 Closing two other switches supplies power that causes motor to turn the opposite way

23 Using the H-bridge from the Tinker kit
Motor + Motor –

24 Using the H-bridge from the Tinker kit

25 Using the H-bridge from the Tinker kit
//define the two direction logic pins and the speed / PWM pin const int DIR_A = 5; const int DIR_B = 4; const int PWM_pin = 6; void setup(){ // -- set all motor control pins as output pinMode(DIR_A, OUTPUT); pinMode(DIR_B, OUTPUT); pinMode(PWM_pin, OUTPUT); Serial.begin(9600); // Used to display motor speed values } // Code continued on next slide

26 Using the H-bridge from the Tinker kit
// Code continued from previous slide void loop(){ int motorSpeed, potpin=3, potval; // -- Set control lines to drive forward digitalWrite(DIR_A, HIGH); digitalWrite(DIR_B, LOW); // -- Read potentiometer to set PWM for motor speed potval = analogRead(potpin); motorSpeed = map( potval, 0, 1023, 0, 255); motorSpeed = constrain( motorSpeed, 0, 255); analogWrite(PWM_pin, motorSpeed); Serial.print(potval); Serial.print(" "); Serial.println(motorSpeed); }

27 Next Steps After getting the basic code to work
Find the minimum PWM setting that will make the motor spin Use the minimum PWM setting in the constrain() command Make a servo sweep back and forth while the DC motor is running Add a button to change direction of the motor


Download ppt "Arduino Application: Speed control of small DC Motors"

Similar presentations


Ads by Google