Download presentation
Presentation is loading. Please wait.
Published byGrace Carson Modified over 6 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.