0% found this document useful (0 votes)
202 views23 pages

Micro 131L Lab Experiment 12 13 Servo and Stepper Motor in Arduino Board

This document contains instructions and code for three Arduino experiments involving servo motors: 1) Sweeping a servo motor from 0 to 180 degrees using code, 2) Controlling a servo motor digitally using push buttons, and 3) Controlling a servo motor using analog input from a potentiometer. The document provides the objectives, materials needed, procedures, code, and expected outputs for students to complete the experiments and observe servo motor behavior controlled in different ways using an Arduino board.

Uploaded by

ELLAINE DE CLARO
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
202 views23 pages

Micro 131L Lab Experiment 12 13 Servo and Stepper Motor in Arduino Board

This document contains instructions and code for three Arduino experiments involving servo motors: 1) Sweeping a servo motor from 0 to 180 degrees using code, 2) Controlling a servo motor digitally using push buttons, and 3) Controlling a servo motor using analog input from a potentiometer. The document provides the objectives, materials needed, procedures, code, and expected outputs for students to complete the experiments and observe servo motor behavior controlled in different ways using an Arduino board.

Uploaded by

ELLAINE DE CLARO
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 23

Colegio De San Juan De Letran - Calamba

Bo. Bucal Calamba City, Laguna

School of Engineering

MICRO131L: Microprocessor Systems Lab

Servo and Stepper Motor in Arduino Board


Laboratory Experiment No. 12 & 13

Grade

Group Number : _________ Signature


Group Leader : SN, FN MI _______________________
Members : SN, FN MI _______________________

SN, FN MI _______________________

Date Performed: ________________


Date Submitted: ________________

Engr. Ricrey E. Marquez, CpE, MSCS


(Lab Instructor)
OBJECTIVES AND MATERIALS

Objectives:

After this lab experiment, student should be able to:

1. Describe concepts of Servo and Stepper motors,


2. Demonstrate the methods of controlling Servo and Stepper motor,
3. Design and create an Arduino sketch program related Servo and Stepper
motors.

Materials:

QUANTIT PART DESCRIPTION


Y NUMBER
1 - Universal MCU Trainer Kit
Working PC or laptop with pre-installed
1 -
Arduino Sketch and Proteus Design Suite
1 - Gizduino (Arduino-compatible) Board
1 - Servo Motor
1 - Stepper Motor
1 - USB data cable
1 set - Connecting wires
PROCEDURES

Part 1 – Sweeping Servo Motor

1. Prepare the all materials that will be used in Figure 12.1.


2. Construct the schematic diagram shown in Figure 12.1 in e-Gizmo
Universal MCU Kit.
3. Open your Arduino Sketch program. Encode or copy the program listing
12.1 source file.
4. Open the Notepad application, then re-type or copy the header file of
program listing 12.1. Click Save as Type and select All Files.
5. Save the filename as sweeping_servo.h, and click Close.
6. Add the header file in your current code by clicking Sketch > Add File.. >
then locate sweeping_servo.h and click Open.
7. Save your source code having a filename Design_Apps_12_1.
8. Compile your program. If error exist, fix and re-compile until no error
detected.
9. From the Tools menu, configure the Board (ex. Arduino Uno) and Port
(ex. COM4). Note: If error occur during upload, please check the MCU
module you used, the serial port assignment, or install the USB plug-and-
play driver provided by the manufacturer. Then try to re-upload your code.
10. Observe the functionality of your code by validating the displayed output of
the circuit.

Program Listing 12.1 – Sweeping Servo Motor

This application program will demonstrate sweeping servo motor and


display current position in LCD module.
A. Header File – sweeping_servo.h
//macro for Servo motor
#define SERVO_PIN (9)
#define MIN_ANGLE (0)
#define MAX_ANGLE (180)
#define SET_DELAY delay(30)
//macro for LCD module
#define ROWS (2)
#define COLS (16)
#define RS (12)
#define EN (11)
#define D4 (5)
#define D5 (4)
#define D6 (3)
#define D7 (2)
#define LONG_DEL delay(2000)
//macro for LCD coordinates
#define ROW1 (0)
#define ROW2 (1)
#define COL1 (0)
#define COL2 (3)

B. Source file – Design_Apps_12_1.ino


#include <LiquidCrystal.h>
#include <Servo.h>
#include "sweeping_servo.h"

//instantiate Servo object


Servo MyServo;
//instantiate LCD object
LiquidCrystal MyServo_LCD(RS, EN, D4, D5, D6, D7);

void setup()
{
init_device();
}

void loop()
{
rotate_cw();
rotate_ccw();
}

void init_device()
{
//attaches the servo on pin 9 to the servo object
MyServo.attach(SERVO_PIN);
//set Servo position to 0 degree
MyServo.write(MIN_ANGLE);
//initialize LCD size
MyServo_LCD.begin(COLS, ROWS);
//clear LCD text display
MyServo_LCD.clear();
//display "MICRO131L Lab 12" at 0,0
MyServo_LCD.setCursor(COL1, ROW1);
MyServo_LCD.print("MICRO131L Lab 12");
//display "Design Apps 12.1" at 0,1
MyServo_LCD.setCursor(COL1, ROW2);
MyServo_LCD.print("Design Apps 12.1");
//wait for 2s
LONG_DEL;
//clear LCD text display
MyServo_LCD.clear();
}

void rotate_cw()
{
//goes from 0 degree to 180 degrees in steps of 1 degree
for(int pos_angle = MIN_ANGLE; pos_angle < MAX_ANGLE; pos_angle++)
{
//tell servo to go to position in variable 'pos_angle'
MyServo.write(pos_angle);
//waits 30ms for the servo to reach the position
SET_DELAY;
//read the current position of Servo motor
display_position(MyServo.read());
}
}

void rotate_ccw()
{
//goes from 180 degrees to 0 degrees
for(int pos_angle = MAX_ANGLE; pos_angle > MIN_ANGLE; pos_angle--)
{
//tell servo to go to position in variable 'pos_angle'
MyServo.write(pos_angle);
//waits 30ms for the servo to reach the position
SET_DELAY;
//read the current position of Servo motor
display_position(MyServo.read());
}
}

void display_position(int current_pos)


{
//clear LCD text display
MyServo_LCD.clear();
MyServo_LCD.setCursor(COL1, ROW1);
MyServo_LCD.print("CURRENT POSITION");
MyServo_LCD.setCursor(COL1, ROW2);
MyServo_LCD.print(current_pos);
MyServo_LCD.setCursor(COL2, ROW2);
MyServo_LCD.print(" Desgree");
}
Part 2 – Digital - controlled Servo Motor

1. Prepare the all materials that will be used in Figure 12.2.


2. Construct the schematic diagram shown in Figure 12.2 in e-Gizmo
Universal MCU Kit.
3. Open your Arduino Sketch program. Encode or copy the program listing
12.2 source file.
4. Open the Notepad application, then re-type or copy the header file of
program listing 12.2. Click Save as Type and select All Files.
5. Save the filename as digital_servo.h, and click Close.
6. Add the header file in your current code by clicking Sketch > Add File.. >
then locate digital_servo.h and click Open.
7. Save your source code having a filename Design_Apps_12_2.
8. Compile your program. If error exist, fix and re-compile until no error
detected.
9. From the Tools menu, configure the Board (ex. Arduino Uno) and Port
(ex. COM4). Note: If error occur during upload, please check the MCU
module you used, the serial port assignment, or install the USB plug-and-
play driver provided by the manufacturer. Then try to re-upload your code.
10. Observe the functionality of your code by validating the displayed output of
the circuit.

Program Listing 12.2 – Digital Controlled Servo Motor

This application program will demonstrate how to control servo motor


digitally using push button switches via interrupt pins.

A. Header File – digital_servo.h


//servo PWM pin
#define SERVO_PIN (10)
//servo angle constants
#define MAX_POS (179)
#define MIN_POS (0)
//external interrupt pins
#define INC_BUT (0) //external interrupt 0 of pin 2
#define DEC_BUT (1) //external interrupt 1 of pin 3
//setup transfer rate
#define BAUD_RATE (9600)
//macro constant
#define INC_POS (5)
//delay routines
#define SERVO_DEL delay(10)
#define DISP_DEL delay(500)

B. Source file – Design_Apps_12_2.ino


#include <Servo.h>
#include "digital_servo.h"

Servo digital_Servo;

static signed short int angle_pos = MIN_POS;

void setup()
{
//initial external interrupt pins
attachInterrupt(INC_BUT, inc_pos, RISING); //pin 2
attachInterrupt(DEC_BUT, dec_pos, RISING); //pin 3
//attach Servo pin
digital_Servo.attach(SERVO_PIN);
Serial.begin(BAUD_RATE);
Serial.println(“MICRO131L - Microprocessor Systems Lab”);
Serial.println(“Design Application 12.2”);
DISP_DEL;
angle_pos = MIN_POS;
}

void loop() {
//read the current position angle of servo
Serial.print("CURRENT SERVO POSITION: ");
Serial.println(digital_Servo.read(), DEC);
DISP_DEL;
}

//user-defined functions for external interrupts


void inc_pos()
{
angle_pos=angle_pos + INC_POS;
constrain(angle_pos, MIN_POS, MAX_POS);
digital_Servo.write(angle_pos);
SERVO_DEL;
}

//user-defined functions for external interrupts


void dec_pos()
{
angle_pos = angle_pos - INC_POS;
constrain(angle_pos, MIN_POS, MAX_POS);
digital_Servo.write(angle_pos);
SERVO_DEL;
}

Part 3 – Analog - controlled Servo Motor

1. Prepare the all materials that will be used in Figure 12.3.


2. Construct the schematic diagram shown in Figure 12.3 in e-Gizmo
Universal MCU Kit.
3. Open your Arduino Sketch program. Encode or copy the program listing
12.3 source file.
4. Open the Notepad application, then re-type or copy the header file of
program listing 12.3. Click Save as Type and select All Files.
5. Save the filename as analog_servo.h, and click Close.
6. Add the header file in your current code by clicking Sketch > Add File.. >
then locate analog_servo.h and click Open.
7. Save your source code having a filename Design_Apps_12_3.
8. Compile your program. If error exist, fix and re-compile until no error
detected.
9. From the Tools menu, configure the Board (ex. Arduino Uno) and Port
(ex. COM4). Note: If error occur during upload, please check the MCU
module you used, the serial port assignment, or install the USB plug-and-
play driver provided by the manufacturer. Then try to re-upload your code.
10. Observe the functionality of your code by validating the displayed output of
the circuit.

Program Listing 12.3 – Analog-controlled Servo Motor

This application program will demonstrate how to control servo motor


position via variable resistor (potentiometer).

A. Header File – analog_servo.h


#define SERVO_PIN (9)
#define POT_PIN (0)
#define MIN_ADC (0)
#define MAX_ADC (1023)
#define MIN_ANGLE (0)
#define MAX_ANGLE (179)
#define BAUD_RATE (9600)
#define SET_DELAY delay(300)
#define SERVO_DEL delayMicroseconds(1)

B. Source file – Design_Apps_12_3.ino


#include <Servo.h>
#include "analog_servo.h"

Servo myServo; //create servo object to control a servo

void setup()
{
//attaches the servo on pin 9 to the servo object
myServo.attach(SERVO_PIN);
Serial.begin(BAUD_RATE);
Serial.println(“MICRO131L - Microprocessor Systems Lab”);
Serial.println(“Design Application 12.3”);
SET_DELAY;

void loop()
{
//variable to read the value from the analog pin
signed int angle, adc_value;
//reads the value of the potentiometer (value between 0 and 1023)
adc_value = analogRead(POT_PIN);
//scale it to use it with the servo (value between 0 and 180)
angle = map(adc_value, MIN_ADC, MAX_ADC, MIN_ANGLE, MAX_ANGLE);
myServo.write(angle);
SERVO_DEL;
Serial.print("ADC VALUE: ");
Serial.println(adc_value, DEC);
Serial.print("ANGLE POSITION: ");
Serial.println(myServo.read(), DEC);
//sets the servo position according to the scaled value
SET_DELAY; // waits for the servo to get there
}

Part 3 – Stepper Motor in Serial Monitor

11. Prepare the all materials that will be used in Figure 13.1.
12. Construct the schematic diagram shown in Figure 13.1 in e-Gizmo
Universal MCU Kit.
13. In Arduino Sketch program, click New and encode or copy the program
listing 13.1 source file.
14. Open the Notepad application, then re-type or copy the header file of
program listing 13.1. Click Save as Type and select All Files.
15. Save the filename as stepper_serial.h, and click Close.
16. Add the header file in your current code by clicking Sketch > Add File.. >
then locate stepper_serial.h and click Open.
17. Save your source code having a filename Design_Apps_13_1.
18. Compile your program. If error exist, fix and re-compile until no error
detected.
19. From the Tools menu, configure the Board (ex. Arduino Uno) and Port
(ex. COM4). Note: If error occur during upload, please check the MCU
module you used, the serial port assignment, or install the USB plug-and-
play driver provided by the manufacturer. Then try to re-upload your code.
20. Observe the functionality of your code by validating the displayed output of
the circuit.

Program Listing 13.1 – Stepper in Serial Monitor

This program will demonstrate how to control stepper motor and display its
rotational position in Serial monitor.

A. Header File – stepper_serial.h


#define BUAD_RATE (9600)
#define SET_DEL delay(500)

B. Source file – Design_Apps_13_1.ino


#include <Stepper.h>
#include “stepper_serial.h”

//change this to fit the number of steps per revolution


const int stepsPerRevolution = 200;
//initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup()
{
//set the speed at 60 rpm:
myStepper.setSpeed(60);
//initialize the serial port:
Serial.begin(BUAD_RATE);
Serial.println(“MICRO131L - Microprocessor Systems Lab”);
Serial.println(“Design Application 13.1”);
SET_DEL;
}

void loop()
{
//step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
SET_DEL;

//step one revolution in the other direction:


Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
SET_DEL;
}

Part 4 – Analog – controlled Stepper Motor

1. Prepare the all materials that will be used in Figure 13.2.


2. Construct the schematic diagram shown in Figure 13.2 in e-Gizmo
Universal MCU Kit.
3. In Arduino Sketch program, click New and encode or copy the program
listing 13.2 source file.
4. Open the Notepad application, then re-type or copy the header file of
program listing 13.2. Click Save as Type and select All Files.
5. Save the filename as analog_stepper.h, and click Close.
6. Add the header file in your current code by clicking Sketch > Add File.. >
then locate analog_stepper.h and click Open.
7. Save your source code having a filename Design_Apps_13_2.
8. Compile your program. If error exist, fix and re-compile until no error
detected.
9. From the Tools menu, configure the Board (ex. Arduino Uno) and Port
(ex. COM4). Note: If error occur during upload, please check the MCU
module you used, the serial port assignment, or install the USB plug-and-
play driver provided by the manufacturer. Then try to re-upload your code.
10. Observe the functionality of your code by validating the displayed output of
the circuit.

Program Listing 13.2 – Analog-controlled Stepper Motor

This program will demonstrate how to control stepper motor and display its
rotational position in Serial monitor.

A. Header File – analog_stepper.h


//change this to the number of steps on your motor
#define STEPS (100)
#define RPM (30)
//stepper motor pins
#define PIN1 (8)
#define PIN2 (9)
#define PIN3 (10)
#define PIN4 (11)
//potentiometer pin
#define POT_PIN (3)
//serial monitor baud rate
#define BAUD_RATE (9600)
//macro constant
#define INIT_VAL (0)
//delay routines
#define SET_DEL delayMicroseconds(500000)

B. Source file – Design_Apps_13_2.ino


#include <Stepper.h>
#include “analog_stepper.h”

//create an instance of the stepper //class, specifying


//the number of steps of the motor and the pins it's
//attached to
Stepper MyStepper(STEPS, PIN1, PIN2, PIN3, PIN4);

//the previous reading from the //analog input


static int previous = INIT_VAL;

void setup()
{
//set the speed of the motor to 30 RPMs
MyStepper.setSpeed(RPM);
Serial.begin(BAUD_RATE);
}

void loop()
{
//get the sensor value
int step_reading = analogRead(POT_PIN);
//move a number of steps equal to //the change in the
//sensor reading
MyStepper.step(step_reading - previous);

Serial.print("STEP VALUE: ");


Serial.println((step_reading - previous), DEC);
Serial.print("CURRENT VALUE: ");
Serial.println(previous, DEC);
SET_DEL;
//remember the previous value of the sensor
previous = step_reading;
}
PIN CONFIGURATION

Pin configuration of Arduino UNO


VCC
SCHEMATIC DIAGRAM

1
VSS
LM016L

2
AREF VDD
3
VEE
13
PB5/SCK
12 4
PB4/MISO RS
RESET 11 5
~PB3/MOSI/OC2A RW
10 6
~ PB2/SS/OC1B E
9
MYSERVO_LCD

~ PB1/OC1A
8 7
PB0/ICP1/CLKO D0

microcontrolandos.blogspot.com
8
D1

1121
7 9
PD7/AIN1 D2
6 10
A0 ~ PD6/AIN0 D3
PC0/ADC0 5 11
A1 ~ PD5/T1 D4

ATMEGA328P-PU
PC1/ADC1 4 12
A2 PD4/T0/XCK D5
PC2/ADC2 3 13
A3 ~ PD3/INT1 D6

ANALOG IN
PC3/ADC3 2 14
A4 PD2/INT0 D7
PC4/ADC4/SDA 1

DIGITAL (~PWM)
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD
VCC

DUINO1
ARDUINO UNO R3

+88.8
MYSERVO
Pin configuration of Servo and Stepper Motor

Figure 12.1. Schematic diagram of Program Listing 12.1


AREF
AREF
13
PB5/SCK
13 12
PB5/SCK PB4/MISO
12 RESET 11
PB4/MISO ~PB3/MOSI/OC2A
RESET 11 10
~PB3/MOSI/OC2A ~ PB2/SS/OC1B
9
10 ~ PB1/OC1A
~ PB2/SS/OC1B 8
9 PB0/ICP1/CLKO
SERVO MOTOR

~ PB1/OC1A
1121

8 7
PB0/ICP1/CLKO PD7/AIN1
VCC

6
A0 ~ PD6/AIN0

SERVO_MOTOR

1121
7 PC0/ADC0 5
PD7/AIN1 A1 ~ PD5/T1
ATMEGA328P-PU

PC1/ADC1 4

VCC
6 A2 PD4/T0/XCK
A0 ~ PD6/AIN0 PC2/ADC2 3
PC0/ADC0 5 A3 ~ PD3/INT1
ANALOG IN

PC3/ADC3 2
+88.8

A1 ~ PD5/T1 A4 PD2/INT0

ATMEGA328P-PU
PC1/ADC1 4 PC4/ADC4/SDA 1
PD4/T0/XCK
DIGITAL (~PWM)

A2 A5 TX PD1/TXD
PC2/ADC2 3 PC5/ADC5/SCL 0
A3 ~ PD3/INT1 RX PD0/RXD

ANALOG IN
PC3/ADC3 2

+88.8
A4 PD2/INT0
PC4/ADC4/SDA 1

DIGITAL (~PWM)
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD
ARD1
CTS
RTS
TXD
RXD

ARDUINO UNO R3

ARD1
INC_EXT_PB
VCC

CTS
RTS
TXD
RXD
1M/500k
10k
R1

ARDUINO UNO R3
46%
Xmodem, Ymodem, Zmodem

VCC
SERIAL MONITOR
VT52, VT100, ANSI

DEC_EXT_PB

RV1
VCC

Xmodem, Ymodem, Zmodem


10k
R2

SERIAL MONITOR
VT52, VT100, ANSI

Figure 12.3. Schematic diagram of Program Listing 12.3


Figure 12.2. Schematic diagram of Program Listing 12.2
AREF
13
PB5/SCK
12
PB4/MISO
RESET 11
~PB3/MOSI/OC2A
10
~ PB2/SS/OC1B
9 AREF
~ PB1/OC1A
8
PB0/ICP1/CLKO

microcontrolandos.blogspot.com
13
PB5/SCK
12

1121
7 PB4/MISO
PD7/AIN1 RESET 11
6 ~PB3/MOSI/OC2A
A0 ~ PD6/AIN0 10
PC0/ADC0 5 ~ PB2/SS/OC1B
A1 ~ PD5/T1 9

ATMEGA328P-PU
PC1/ADC1 4 ~ PB1/OC1A

+88.8
A2 PD4/T0/XCK 8
PC2/ADC2 PB0/ICP1/CLKO
microcontrolandos.blogspot.com

3
A3 ~ PD3/INT1

ANALOG IN
PC3/ADC3 2
1121

A4 PD2/INT0 7
PC4/ADC4/SDA 1 PD7/AIN1

DIGITAL (~PWM)
A5 TX PD1/TXD 6
PC5/ADC5/SCL 0 A0 ~ PD6/AIN0
RX PD0/RXD PC0/ADC0 5

STEPPER MOTOR
A1 ~ PD5/T1
ATMEGA328P-PU

PC1/ADC1 4
+88.8

A2 PD4/T0/XCK
PC2/ADC2 3
A3 ~ PD3/INT1
ANALOG IN

PC3/ADC3 2
A4 PD2/INT0
PC4/ADC4/SDA 1
DIGITAL (~PWM)

A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD

DUINO1
ARDUINO UNO R3
8%

VCC

1k
DUINO1

CTS

RV1
RTS
ARDUINO UNO R3

TXD

CTS
RTS
TXD
RXD
RXD
SERIAL MONITOR

SERIAL MONITOR

Figure 13.2. Schematic diagram of Program Listing 13.2


Figure 13.1. Schematic diagram of Program Listing 13.1
DATA RESULTS

Note: Screen shots or captured outputs per program (at least outputs per
program)
DATA ANALYSIS / OBSERVATION

NOTE: Discussion must be based on the data gathered from data results or
observation supported by review of literature with proper reference or author in-
text citation in APA format. Do not copy-paste instead paraphrase it. Data
analysis must be minimum of 2 pages.
QUESTIONS AND ANSWERS

1. Discuss the principles of controlling Servo motor.


2. What are the different methods of controlling Stepper motor? Discuss
each and state the advantages and disadvantages.
3. Design a circuit and create sketch program that will turn on fan’s speed
connected to PWM of Arduino board based depends on the following
temperature condition detected by LM35 sensor as shown in Figure 1
(next slide). The current fan speed, and temperature in degree Celsius
and Fahrenheit in displayed on 20 x 4 LCD module.

Table 1. Equivalent description displayed in serial monitor based on the


temperature range.

TEMPERATURE RANGE FAN SPEED


Below -4C 0
-4C to 10C 1
11C to 25C 2
26C to 40C 3
41C to 55C 4
56C to 70C 5
71C to 85C 6
86C to 100C 7
100C to 115C 8
116C to 130C 9
Above 130C 10

CONCLUSION

NOTE: Discussion must be based on the lab objectives supported by review of


literature with proper reference or author in-text citation in APA format. Do not
copy-paste instead paraphrase it. Discuss the implication of findings per
objective (per paragraph). Conclusion must be minimum of 2 pages.
REFERENCES

NOTE: Sample APA format for reference cited only!

Books:

Andreasen, N. C. (2001). Brave new brain: Conquering mental illness in


the era of the genome. Oxford, England: Oxford University Press.

Copstead, L., & Banasik, J. (2005). Pathophysiology (3rd ed.).


Philadelphia, PA: Saunders.

Electronic Books:

Atkin, M. (Reporter). (2008, November 13). Bermagui forest disputed turf.


The Hack Half Hour. Retrieved from
http://www.abc.net.au/triplej/hack/notes/
Cooper, D. (2009, March 31). Native ant may stop toad in its tracks. ABC
Science. Retrieved August 15, 2017 from
http://www.abc.net.au/science/articles/ 2009/03/31/2530686.htm?
site=science&topic=latest

Print Journals:

Potente, S., Anderson, C., & Karim, M. (2011). Environmental sun


protection and supportive policies and practices: An audit of outdoor
recreational settings in NSW coastal towns. Health Promotion Journal of
Australia, 22, 97-101.

Electronic Journals:

Jackson, D., Firtko, A., & Edenborough, M. (2007). Personal resilience as


a strategy for surviving and thriving in the face of workplace adversity: A
literature review. Journal of Advanced Nursing, 60(1), 1-9.
doi:10.1111/j.1365-2648.2007.04412.x

You might also like