S15: SJeight Octocopter

From Embedded Systems Learning Academy
Revision as of 13:02, 25 May 2015 by Proj user22 (talk | contribs) (Implementation)

Jump to: navigation, search

Grading Criteria

  • How well is Software & Hardware Design described?
  • How well can this report be used to reproduce this project?
  • Code Quality
  • Overall Report Quality:
    • Software Block Diagrams
    • Hardware Block Diagrams
      Schematic Quality
    • Quality of technical challenges and solutions adopted.

Project Title

SJeight Octocopter

Abstract

The purpose of the project is to create a large custom built octocopter. It will rely on AHRS (Attitude and Heading Reference System) to stabilize the copter. The advantage for using eight motors is reliability, since the copter can still operate with one motor disabled. Another advantage is the ability to carry a larger payload than quadcopters. There are many design challenges for this project. The first being structural support. To help this along, a professional grade laser cutter and 3D printers were used to create the frame. Power consumption, weight, thrust, and sensors were carefully considered for this project.

Objectives & Introduction

The goal of this project was to design an octocopter that flies. This project is consist of four people and each team member worked in pairs. We have to use the SJone board for this project and implement topics we learned in class. The class topics we used for this project are I2C, UART, Semaphores, and Queue.

Team Members & Responsibilities

Christopher Sawtelle Son Nguyen Grant Welch Noe Quintero
Component selection Motor Mount Power Hub Frame
I2C PWM Expander I2C PWM EXpander I2C PWM Expander I2C PWM Expander
CAD Design CAD Design CAD Design CAD Design
GPS GPS GPS GPS
PID Algorithm PID Tuning PID Tuning PID Tuning
AHRS (Attitude Heading Reference System) XBEE Integration
Nordic Integration Arduino Remote

Schedule

Week# Date Task Actual
1 3/29/15 Compile Parts List Complete
2 4/5/15 Source Parts Complete
3 4/12/15 Interface with PWM expander Complete
4 4/19/15 Interface and Calibrate the AHRS with the SJone Board Complete
3 4/26/15 Add PID to SJone board Complete
5 5/3/15 Tune PID and Interface with RC Transmitter PID not tuned
6 5/10/15 Test Flight and fine Tuning Broken Props / Burned ESC
7 5/17/15 Remote / GPS / Nordic Complete (Nordic function removed - unreliable)
8 5/21/15 Fix Props and replace ESC Complete
9 5/23/15 Test Flight & Tune PID

Parts List & Cost

Name Qty Total Cost
Acrylic Sheet (Frame) 1 $30
Lipo Battery 3 $220
Carbon Fiber Rod 8 $120
Motors 8 $120
ESC 8 $192
Carbon Fiber Propeller (Always have spares) 16 $65
Nuts and Bolts (M4 Standard) 200 $100
Battery Connectors 11 $30
Zip Ties 8 $10
ABS Plastic (3D Printer) 1 $25
6 AWG Wire 1 $30
Xbee PRO 2 $60
Arduino Mega 1 $30

Design & Implementation

The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.

Hardware Design

Hardware Circuit Diagram

We initially decided on 10" blades, but soon realized that the longer the blade the more efficient the system. We went with 12" blades. We also realized that in order for the copter to fly we needed to find efficient batteries. The power density had to be extremely high, which is why we switched from the fifteen 2200 mAh batteries to the three 10 Ah batteries.

The hardware design was assembled by the whole team. This project was approached by drawing the architecture on SolidWorks. Figure CAD Drawing, illustrates the design of our SJeight.

Main Frame

The main frame of the octocopter was laser cut in the Mechanical Department. Shown in Figure Laser Cutter, illustrates the laser cut. Acrylic Plastic was recommended for the frame because it’s durable and low cost. Main frame had 3D printed rod slots which was sandwiched. Figure 3D Printed Parts and Figure Assembling the Frame demonstrates the sandwiched carbon fiber rod.

Power Hub

The Power Hub shown in Figure Fully Assembled Power Hub, is designed to distribute power across all eight motors evenly. This was first design on SolidWorks and then 3D printer which is shown in Figure CAD of Power Hub. Eight female slots and three female slots was soldered on a circular wire gauge to distribute the power evenly.

Electronic Speed Controller

We mounted eight 80A ESC (Electronic Speed Controller) underneath the frame using zip ties. The input of the ESC was connected to the Power Hub where power is drawn. Shown in Figure Hub Attach illustrates how the ESC are connected around the frame. The ESCs are connected to the DC motor, through the inside of the carbon fiber rod. The ESCs varies the throttle of the DC motors by sending PWM signals.

Brushless Motor

The brushless motor is mounted to the end of the rod. The brushless motors operates linearly which means when the motor shuts down, it slowly decreases rather than immediately braking. The brushless motor used for this design is the Donkey ST4010-820kv. The kv is the constant motor which indicates the maximum RPM the motor could rotate.

Battery

Three 14.4V 10A batteries are needed to be connected in parallel. Each single battery contains four cells of lithium ion. Three large batteries were needed to extend flight time and power all eight motors.

Flight Controller

The flight controller is programmed using an Arduino Mega. The controller controls the coordinates and torque of our octocopter. Shown in Figure Flight Controller, illustrates the flight controller. The controller is designed on a PCB with two joysticks. The joysticks controls the coordinates and throttle of the copter.

CAD Design

Exploded CAD Drawing
CAD Drawing
CAD of Leg
CAD of Power Hub

Propeller Preparation

12" Carbon Fiber Blade
Milling the Propeller Hole
Unbalanced Propeller
Balanced Propeller

Power Hub

Unembarrassed
Test Fit
Fully Assembled

Main Frame

Laser Cutter
3D Printed Parts and Frame
Battery Size Check

SJboard and Interfaced Mount

SJone Mount
SJone Mount on Frame

Motor and Battery

Motor Weight
Main Batteries

Assembly of Copter

Assembling the Frame
ESC Attaching
Hub Attaching
Motor Test

Power Supply Circuit to 'OR' the Batteries

Three packs were necessary to power the copter. Unfortunately, LiPo batteries cannot be connected in parallel if the voltages are not closely matched. One solution is to use diode to prevent the batteries from back-charging one another. Luckily, there are circuits available to create diodes from transistors. One option was the LTC4352.

'OR' Circuit schematic
'OR' Circuit
Circuit

Controllers


Arduino Mega Controller
Spektrum Dx6i

Hardware Interface

The SJeight interfaces with various peripherals. This includes the PCA9685 (16-channel, 12-bit PWM Fm+ I2C-bus LED controller) for PWM expansion, Razor IMU(Internal Measurement Unit) sparkfun, Adafruit Ultimate GPS Breakout Module, and 2.4GHz XBee module from Dig.

To overcome the limited number of PWM I/O on the SJone board, extra hardware needed to be added to the project. The solution was the PCA9685. It provides 16 channels for PWM for the ESC(Electronic Speed Controller). This device communicates via I2C or Inner IC communication. The following figure shows a scope shot of the I2C bus. Even though the ESC is not directly controlled by the SJone, understanding of the signals are important. The ESC accepts a very specific signal. The frequency must be 50 Hz and ave a minimum pulse width of 0.7 milliseconds. The speed of the motor is then determined by the pulse width: 0.7 ms is 0% speed, 1.5 ms is 50% speed, and 2.3 ms is 100% speed.


PWM Analysis

I2C Bus
PWM Minimum Pulse
PWM Pulse and ESC Output
PWM Maximum Pulse

Software Design

The main architecture implements FreeRTOS tasks to control the flow of reading sensors and calculations. A dedicated task is used to read the IMU. It holds the highest priority since stability is the most important aspect of the program. The second highest priority is processing the IMU data with the PID loop. The outout from the PID is sent to the motors. The controls are not as circuital for operation and does not need to be updated as frequently. This puts the the reading remote task at a lower priority. After the data has been processed, it is sent to a buffer where the next controller offset will affect the system with a new IMU reading. Transmit and receive task we implemented using queue's. This allows the processing task to sleep and reduce waist in redundant loops.

Main Program

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Razor IMU

We interfaced the Razor IMU using UART. The euler's angle is provided by the IMU.

Hardware Circuit Diagram

Wireless Communication

The SJone interfaces with the Xbee wireless module through UART2. The Xbee requests the latest joystick positions, and is feed into a queue by a producer task. The latest joystick positions are processed by a consumer task to analyze the readings and make decisions as to throttle, yaw, pitch, and role.

Hardware Circuit Diagram

Adafruit PWM Expander

Due to a need for 8 PWM sources, of which were not available on the Sjone, we used a PWM expander that was interfaced using I2C. After calculations are made for each motor speed, the Expander is written to update the PWMs to the eight ESCs and motors.

Hardware Circuit Diagram

DSMX Satellite Receiver

The DSMX Satellite Receiver interfaces.

Hardware Circuit Diagram

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Receiver Reliability

We basically packed the interpretations. We tested to see what happends if the power goes out from the receiver. When we lose communication with the receiver, we need to shut off power.

Motor Testing

Tested each motor individually and varied each motor at different throttles. Repeated the test with eight motors at the same time and isolated minor errors. The minor errors we faced was lack of solder connection from the motor to the ESC or the ESC to the battery.

IMU Calibration Testing

Planted the Adafruit 9-DOF IMU on the main frame and tested the Yaw, Pitch, and Roll. The data was collected and read through Hercules. We recommend using the 9-DOF rather than the 10-DOF because the 10-DOF lacks important open source.


Include sub-sections that list out a problem and solution, such as:

Issue #1

One Issue that came up was the addressing of I2C. The datasheet for the PCA9685 presents the address as 0x40, but it is an 7-bit address. The SJeight function accepts an preshifted 8-bit address (0x80). This was discovered from probing the bus with an scope.

Issue #2

Safety!!! One of our group member was injured with the copter.

Issue #3

There was some unexpected behavior with the SJone vs. the Arduino, causing the ESC to full throttle and burn. Before attaching the propellers to the motor, test the motors RPM with an oscilloscope. This method allows us to analyze if the motor is responsive and running correctly. Once you re insure your code functions correctly, then attached the propellers back onto the motor.

Conclusion

Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?

Project Video

Upload a video of your project and post the link here.

Project Source Code

References

Acknowledgement

Any acknowledgement that you may wish to provide can be included here.

References Used

List any references used in project.

Appendix

You can list the references you used.