Difference between revisions of "S15: SJeight Octocopter"
Proj user22 (talk | contribs) (→Hardware Design) |
Proj user22 (talk | contribs) (→Acknowledgement) |
||
Line 389: | Line 389: | ||
== References == | == References == | ||
=== Acknowledgement === | === Acknowledgement === | ||
− | + | Thank you to Adafruit and Sparkfun for providing useful datasheets and demonstrations. Thank you to Sassoun Gostantian for helping us mill the PCB board for our Arduino Controller. And lastly a special thanks to Preet for giving the EE's the opportunity to take the class. | |
=== References Used === | === References Used === |
Revision as of 13:24, 25 May 2015
Contents
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
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
Propeller Preparation
Power Hub
Main Frame
SJboard and Interfaced Mount
Motor and Battery
Assembly of Copter
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.
Controllers
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
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.
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. The datasheet is located at https://www.sparkfun.com/products/10736.
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.
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. This board is available at http://www.adafruit.com/products/1411.
DSMX Satellite Receiver
The DSMX Satellite Receiver interfaces implements 115200 UART one stop bit and no parity. The packets were reversed engineered using the following website as reference: http://www.cgsy.com.au/archives/215 A buffer was needed to connect the DSMX receiver to the SJone board. Without this buffer, the signal was to weak to pull the line to ground. Another issue is keeping the packets aligned. A polling routing was necessary to keep alignment.
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
Thank you to Adafruit and Sparkfun for providing useful datasheets and demonstrations. Thank you to Sassoun Gostantian for helping us mill the PCB board for our Arduino Controller. And lastly a special thanks to Preet for giving the EE's the opportunity to take the class.
References Used
1. http://www.cgsy.com.au/archives/215 (DSMX Receiver)
2. http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/ (PID Implementation)
3. https://ghowen.me/build-your-own-quadcopter-autopilot/ (Building a Flight Controller)
4. http://www.adafruit.com/ (PWM Expander)
5. https://www.sparkfun.com/ (IMU)