You are on page 1of 74

Quad-Copter

Group 3
Fall 2010
David Malgoza
Engers F Davance Mercedes
Stephen Smith
Joshua West

Project Description
Design a flying robot
Robot must be able to:
Autonomously Fly
Communicate Wirelessly
Wireless Manual Control

Project Motivation
The Big Question, WHY?
Wanted to design an aerial vehicle
with autonomous features
Wanted to do a project with fair
amount of hardware and software
Most of all wanted to do something
cool and fun!
Project Overview
To do this we must:
Design and code a control system for the
Quad-Copter (move up, take-off, etc)
Design and code a sensor fusion
algorithm for keeping the copter stable
Design and build a power distribution
system
Design and build a chassis

Goals/Objectives
FLY
The Quad-copter must be able to
remain stable and balance itself.
The copter must be able to rise and
descend
The copter must be able to signal
when power is running low (audible
and visual)
Specifications/Requirements
Lift at least 2 kg of mass
Must be able to hover at least 6 inches
from the ground
The Quad-Copter must communicate
wirelessly at least 100m
The Quad-Copter must be able flight
for a minimum of 5 minutes (battery
power)

Quad-Copter Concept
Frame
Frame
Goals:
Create a lightweight chassis for the Quad-Copter
The chassis must support all batteries, external
sensors, motors, and the main board
Cost Effective
Requirements:
Create a chassis with a mass of 800g or less
The area the Quad-Copter cannot exceed a radius
of 18in.
Must be able to support at least a 1.2kg load

Materials Comparison
There were 2 lightweight materials we considered
for the chassis: Aluminum and Carbon Fiber
Both have capabilities of being entirely used as a
chassis and meet the maximum mass
requirements
Carbon Fiber Aluminum
Advantages Excellent
Strength and
Stiffness.
Durable.
Easily
Replaceable.
Less Costly.

Disadvantages Can chip or
shatter.
More costly.
Can easily bend
or dent.
Design of Frame
2 aluminum square plates will be used as the main
structural support
4 rods will be screwed to the top square plate at
and secured at the corners
Below the plate, two additional aluminum rods will
be used to support the battery. Landing gear will be
shaped as standard helicopter legs.
4 coat hangers will be used as landing gear.
Diagram of Frame
Motors/ESC
Motors
Goals:
To use lightweight motors for flight
The motors must be cost effective
Requirements:
Use motors with a total mass of 300g
Each motor must be able to go above 2700 rpm
Each motor is to be controlled via PWM signal from
the processor
Brushless Motor
1. Advantages
1. Less friction on the rotor
2. Typically faster RPM.
3. PWM or I2C controlled by an electronic speed
control (ESC) module.
2. Disadvantages
1. Require more power.
2. Sensorless motors are the standard
3. Typically more expensive

TowerPro 2410-09Y BLDC
Minimum required voltage: 10.5V
Continuous Current: 8.4A
Maximum Burst Current: 13.8A
Mass: 55g
Speed/Voltage Constant: 840 rpm/V
Sensorless ESC required for operation.
Sensorless ESC
The ESC translates a PWM signal from the
microprocessor into a three-phase signal,
otherwise known as an inverter.
Based on a duty cycle between 10% and 20%, the
ESC will have operation.
Based on the requirements given by the
manufacturer, the PWM frequency will be 50Hz.
Power Supply System
Power
Goals and Objectives:
The ability to efficiently and safely deliver power
to all of the components of the quadcopter
Requirements:
The total mass of the batteries should be no more
than 500g
A total of 3 low-power regulators are to be used
Must be able to sustain flight for at least 1 minute
Power Distribution
9V Battery
GPS
Digital
Compass
Main
Processor
LM7805
LD1117V3
3
Accel.
Ultrasonic
Ultrasonic
Wireless
Processor
LM317
Gyroscope
11.1V LiPo
Motor
Motor
Motor
Motor
Transceive
r
LiPo Battery
Specifications on the EM-35
Rated at 11.1V
Charge Capacity: 2200mAH
Continuous Discharge: 35C, which delivers 77A,
typically.
Mass: 195g



Logic Converter
Allows for step-up and step-down in voltage when
data travels between a lower referenced voltage
signal to a higher referenced voltage signal.
This will be used to communicate the GPS and the
wireless communication system with the main
processor

Source:
http://www.sparkfun.com/commerce/product_info.php?products_id=8745
Sensors
Sensor Subsystems/Functions
Flight stability sensors
Monitor, correct tilt
Direction/Yaw sensor
Maintain stable heading, establish flight path

Proximity sensors (future application)
Detect obstacles, ground at low altitude

Navigation/Location sensor (future application)
Monitor position, establish flight path

*Minimize cost and weight for all choices
Flight Stability Sensors
Goals/Objectives
A sensor system is needed
to detect/correct the roll
and pitch of the quad-copter,
to maintain a steady hover.

Specifications/Requirements
Operational range 3.0 3.3 V supply
Weigh less than 25 grams
Operate at a minimum rate of 10 Hz

Flight Stability Sensors
Options (one or more)

Infrared horizon sensing
Expensive, unpractical, interesting

Magnetometer (3-axis)
Better for heading than tilt, little expensive

Accelerometer
Measures g-force, magnitude and direction

Gyroscope
Measure angular rotation about axes

Flight Stability Sensors
IMU (Inertial Measurement Unit)
Combination of accelerometer and gyroscope

ADXL335 - triple axis accelerometer (X, Y, Z)
Analog Devices

IDG500 dual axis gyroscope (X and Y)
InvenSense

5 DoF (Degrees of Freedom) IMU

Sensor fusion algorithm
Combines sensor outputs into weighted average
More accurate than 1 type of sensor
IMU Hardware
ADXL335 - triple axis accelerometer
+/- 3 g range adequate
50 Hz bandwidth adequate, adjustable
1.8 3.6 V supply
Analog output

IDG500 dual axis gyroscope
Measures +/- 500 /s angular rate
2 mV/deg/s sensitivity
2.7 3.3 V supply
Analog output





ADXL335 PCB Layout
Surface mount soldered to main PCB
3.3 V supply filtered by .1f cap
.1f caps at C2, C3, C4 that filter > 50Hz
X, Y, Z outputs to MCU A/D converters
S1 self test switch
IDG500 Board Layout
Soldered to main PCB
3.0V supply
X & Y gyro outputs with low pass filter, to A/D
C5-C6 for internal regulation
IMU Code
Get sensor data from ADCs:
accel[ROLL] = convertADC(4);
accel[PITCH] = convertADC(5);
accel[YAW] = convertADC(6);
gyro[ROLL] = convertADC(0);
gyro[PITCH] = convertADC(1);

Find adjustments for each axis
(accelerometer):
Motor_Adj_Y = PID(&Y, angle[PITCH], 504,
G_dt);
Motor_Adj_X = PID(&X, angle[ROLL], 502,
G_dt);
IMU Code
Find an adjustment based on the
magnitude and direction of the gyro data
that is used to dampen movement/ inertia
about the axes

Gy_Adj = gyro[PITCH] - 418;
Gx_Adj = gyro[ROLL] - 417;
Gy_Adj = Gy_Adj / gyro_divisorY; // 3
Gx_Adj = Gx_Adj / gyro_divisorX; // 3


IMU Code
Gy_Adj effectively dampens oscillations of
the P term of the PID loop by acting in
opposition to it:

MOTOR_R =
(int)limitRange((hover_speed + idkno2 +
yawAdj - Motor_Adj_Y - Gy_Adj),560,800);


Direction sensor (Compass)
Goals/Objectives
Establish an external reference to direction
For maintaining a stable heading, turning,
The module should not suffer from excessive
magnetic interference (compass)
The module should be placed away from
interfering fields and metals (compass)

Specifications/Requirements
Accurate to within 3 degrees



HMC6352 Compass Module
3.3 V supply

I
2C
serial interface

.5 degree resolution

1 to 20 Hz adjustable update rate
advertised but, higher update rate
difficult to encode with current hardware
layout.
HMC6352 Compass Module
In coding the I2C interface for
the HMC6352, a data update
rate of only 2 Hz. was
achieved

As a result, the Yaw_PID
function produced a loose
heading.

This limitation was addressed
by adding a dampening term
(to the P term).

HMC6352 Code
Yaw PID function using compass

float YAW_PID(struct PID_Data *PID_Status,
float value, float desiredValue, float
yaw_dt)
{
float error, temp, dTerm, yaw_temp = 0.0;

yaw_temp = desiredValue - value;
if (yaw_temp < -1800)
{
yaw_temp += 3600;
error = yaw_temp;
}

HMC6352 Code
Yaw_PID (cont)
else if (yaw_temp > 1800){
yaw_temp -= 3600;
error = yaw_temp;}
else
error = yaw_temp;
dTerm = PID_Status->D*((PID_Status->
lastError - error));
temp = (PID_Status->P*error + dTerm);
PID_Status->lastError = error;
return temp;
}



Proximity Sensors (future
application)

Bottom and forward sonar application
using the Maxbotix
LV-EZ2 ultrasonic sensor


Detect the ground at 1-15 feet
Obstacles 30 arc forward 1- 8 feet
6 inches resolution
GPS - future application
Goals/Objectives
Needed for autonomous flight mode
The system could establish an external reference
to position (latitude and longitude)
The system would have a serial output
Should be compact, requiring minimal external
support (internal antenna)

Requirements/Specifications:
The system would need to be accurate to within
3 meters (latitude and longitude).
The update rate should be at least 1Hz.

Microcontroller
Goals/Objectives
16-bit timers with 4 output compare
registers
2 UART ports
8 ADC ports (minimum 10-bit accuracy)
Specifications/Requirements
Able to produce PWM signal
Send/Receive UART signals
Hardware ADCs not just comparators
I2C capability

ATmega2560 Specs
0 16Mhz @ 4.5 5.5 volts
256 KB Flash memory
4 KB RAM
4 16-bit timers
16 10-bit ADC
4 UART
TWI (I2C)

Microcontroller Information
The main MCU will be programmed
through the SPI pins using the
AVRISP-MKII.
AVRStudio 4.18 is the IDE that will be
used for development
The main MCU will be responsible for
the obtaining sensor data, updating
the control system, and talking to the
wireless communication unit
Code
Code: Linear Control System
struct PID_Data {
float P;
float I;
float D;
float lastError;
float integratedError;
}
void initPID(struct PID_Data *PID_Status,
float kp, float ki, float kd)
float PID(struct PID_Data *PID_Status, float
value, float desiredValue, float dt)
In addition to this the gyro is used to slow
down the momentum of the Quad-Copter.


PID Loop
error = desiredValue - value;
PID_Status->integratedError +=
error*dt;
dTerm = PID_Status->D*((error)/dt);
(PID_Status->P*error + PID_Status-
>I*PID_Status->integratedError +
dTerm);
Testing the PID
Trail and error
The Ziegler-Nichols method
Center of gravity
The testing procedure is as follow
Isolate an axis
Increase P gain until oscillation occur
Increase D gain until it dampens the oscillation
Increase the effect of the gyro to slow the speed of rotation
Increase I just enough so that it corrects steady errors
slowly.


PID Controller Constants
Kp Ki Kd
X-Axis 1.809 0.0699 -0.0409
Y-Axis 1.809 0.1099 -0.0429
Yaw 0.1 0 0
Code: Motor Control
A PWM signal will be produced by the
MCU to control the motors
Once the PWM signal is setup, they
run independent of the MCU
Functions:
initPWM( );
updateMotor();
Code: Analog Sensors
The ADC will be used to retrieve data
from the sensors.
A switch statement will be used to
gather data correctly
Functions:
initADC ( );
convertADC(uint8_t value);
Code: Digital Sensors
I2C will be used to retrieve data from
the compass
MCU master
Compass slave

Functions:
initI2C( );
ISR(TWI_vect);
Code: Communication
UART is going to be used to retrieve
data from GPS module and
send/receive data from the wireless
communication module
Functions:
UART_Setup( );
ISR(USART0_RX_vect);
ISR(USART0_TX_vect);
ISR(USART2_RX_vect);
ISR(USART2_TX_vect);
Code: C# GUI
C# will be used for coding the GUI
Standard Libraries for serial port
communication
Easy to learn

Function of GUI
Retrieve sensor data and display to user

Code: Overview
PIDs
Update
ADCs
UART
I2C
Compass
Wireless
Comm
IMU
PWM
Wireless Communication
Requirements
Work on the 2.4 GHz band.
Data rate of minimum 56 Kbs.
To have a range of 100 meters.
To cost less than $70.

Xbee Module
The Xbee module is a Zigbee
compatible device.
Zigbee meets all the requirements of
the wireless communication.
Xbee will be used to control and get
status messages from the Quad-
Copter.
Xbee modules can be setup as end
device or coordinator.


Xbee Setup
PANID: This is the ID of the network
MY: Is the 16 bit address of the source
device
DL: Is the 16 bit address of the
destination device.
A1: Register that controls who the end
device can talk to.
A2: Register that controls how the
Coordinator manages the network.
Xbee: A1 Register
A1 has three bits that decide how the
end device connects to a network:
bit0: if set it will allow the end device to
join any network
bit1: if set it the end device will allow the
channel to be change by a coordinator
bit2: if set the end device will try to auto
associate.
Xbee: A2 register
A2 has three bits that decide how the
coordinator manages a network:
bit0: if set it will allow the coordinator to
look for a free PANID
bit1: if set it will allow a coordinator to
change the end devices channel
bit2: if set the coordinator will allow end
devices to associate to it.

PCB Hardware Layout
Requirements
Must be able to mount the MCU, the wireless
system, and the IMU components
For easy plug-and-play, the level logic converters
are to be mounted for all UART connections
Power distribution for the digital section of the
board is to be distributed using a star design
IMU components must be relative central to the
Quad-Copter for the most accurate readings
Male header pins are to be used for connecting to
all external components
Due to time and cost, through-hole parts are
preferred for all passive components
Main Board - Initial
Modifications
Design flaws in the schematic for the level
logic converters created a setback in
implementing UART devices were fixed.
All voltage regulators are connected to the
main power lines to prevent voltage dropout
effects
All regulators were exchanged to TO-220
packaging
Xbee module is mounted.
Main board - Final
Project Management
Project Distribution
Subsystem Responsible
Main Software Josh
Linear Control System Engers
Frame All
Motors David
Power Supply David
Microcontroller Josh
Sensors Steve
Wireless Communication Engers
Video System Steve
PBC Board All
Autonomous Algorithm All
Project Finance
Goal was to be under $700
Unfortunately the group did not meet
this goal.
Estimated spent: ~$1500.00

Reason: Underestimated the amount
of parts that would need to be
replaced and shipping costs

Problems
I2C not working on main board
Fix: Use another MCU that it was
tested with
Problems
Accelerometer is susceptible to
vibration noise
The vibration from the motors induces
oscillation on the accelerometer.
Fix: Use a software low-pass filter
y(nT) = y(nT T) +
(dt/(dt + RC))(x(nT)-y(nt-T)
Problems
Sensor fusion algorithms not working.
Starlinos sensor fusion algorithm
would get stuck on a angle.
Kalman filter would get stuck on a
angle.
Fix: Instead of using a combination of
accelerometer and gyro to get a better
estimate of position, we used the
accelerometer value and passed it
through a low pass filter.

Problems
Grounding on our first PCB was
problematic.
Fix: Designed a new PCB with wider
ground traces



Questions, Comments,
Concerns?

You might also like