Quadrocopter: Difference between revisions

From Nottinghack Wiki
Jump to navigation Jump to search
Added Electronic system components details, first pass
mNo edit summary
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Project|ProjectTitle=Quadrocopter|created=10/08/2011|members=[[User:Lwk|'RepRap' Matt]]|qrmode=0|status=Research}}
{{Project|ProjectTitle=Quadrocopter|created=10/08/2011|members=[[User:Lwk|'RepRap' Matt]]|status=Dormant|type=member}}


"A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft that is lifted and propelled by four rotors."
"A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft that is lifted and propelled by four rotors."
Line 7: Line 7:


=== Parts List ===
=== Parts List ===
Quick breakdown of the parts i intend to use in my first build
Quick breakdown of the parts i intend to use in my build
 
* mbed 32bit ARM Cortex-M3 96Mhz MCU 512KB FLASH, 64KB RAM
* ALLINONE IMU
** HMC5883L Triple Axis Magnetometer
** BMA180  Triple Axis Accelerometer
** BMP085  Barometric Pressure Sensor
** ITG3200  Triple-Axis Digital-Output Gyro
* OrangeRx R100 Satellite Receiver
* nRF24L01+ Transceiver Module with Chip Antenna
* hexTronik 24gram Brushless Outrunner 1300kv
* TURNIGY Plush 10amp 9gram Speed Controller
* APC 8x3.8 Slowfly "Pusher" (CCW) electric propeller
* APC 8x3.8 Slowfly electric propeller
* 3S1P 11.1V 2150mAh 25C LiPo
* MB1200 XL-MaxSonar-EZ0 High Performance Ultrasonic Range Finder
* Sharp GP2D12 IR Range Sensor Manual
* MediaTek MT3329 GPS 10Hz (much later)


=== Electronic system components ===
=== Electronic system components ===
Line 45: Line 62:


=== mbed pin assignment ===
=== mbed pin assignment ===
Possible mbed pin layout and connection  
Possible mbed pin layout and connection
[[File:mbedPinout.png|thumb|300px]]
{| class="wikitable"
|-
! No
! Functions
! Usage
!
! No.
! Functions
! Usage
|-
| 1 || GND || 0v |||| 40 || Vout || 3.3G Regulated Out
|-
| 2 || Vin || 4.5v-14v in |||| 39 || Vu || 5.0v USB Out
|-
| 3 || Vb || RTC 3v Battery in |||| 38 || IF+ ||
|-
| 4 || nR || |||| 37 || IF- ||
|-
| 5 || MOSI || nRF24L01+ |||| 36 || RD-  || Ethernet
|-
| 6 || MISO || nRF24L01+ |||| 35 || RD+ || Ethernet
|-
| 7 || SCK || nRF24L01+ |||| 34 || TD- || Ethernet
|-
| 8 ||  || nRF24L01+ |||| 33 || TD+ || Ethernet
|-
| 9 || TX/SDA || |||| 32 || D- || USB
|-
| 10 || RX/SCL || Spektrum Satallite |||| 31 || D+ || USB
|-
| 11 || MOSI || nRF24L01+ |||| 30 || CAN rd ||
|-
| 12 || MISO || nRF24L01+ |||| 29 || CAN tdt ||
|-
| 13 || TX/SCK || |||| 28 || SDA/TX || I2C Bus
|-
| 14 || RX || GPS |||| 27 || SCL/RX || I2C Bus
|-
| 15 || AnalogIn || Ultrasonic Range |||| 26 || PwmOut || Tilt Servo
|-
| 16 || AnalogIn || Front IR range |||| 25 || PwmOut || Pan Servo
|-
| 17 || AnalogIn || Right IR range |||| 24 || PwmOut || Motor ESC 4
|-
| 18 || AnalogIn/ AnalogOut || Back IR Range |||| 23 || PwmOut || Motor ESC 3
|-
| 19 || AnalogIn || Left IR Range |||| 22 || PwmOut || Motor ESC 2
|-
| 20 || AnalogIn || Battery Voltage |||| 21 || PwmOut || Motor ESC 1
|-
|}


=== Spektrum Satellite protocol ===
=== Spektrum Satellite protocol ===
Line 60: Line 129:


It is also possible to bind the RX by pulsing the data line just after the RX powers up, need to send between 3 and 6 pulses each between 116us & 120us in length.  
It is also possible to bind the RX by pulsing the data line just after the RX powers up, need to send between 3 and 6 pulses each between 116us & 120us in length.  
 
[[File:OrangeRXSat.JPG|200px|thumb]]


* Rcgroups threads [http://www.rcgroups.com/forums/showthread.php?t=1284843&highlight=spektrum] [http://www.rcgroups.com/forums/showthread.php?t=922566]
* Rcgroups threads [http://www.rcgroups.com/forums/showthread.php?t=1284843&highlight=spektrum] [http://www.rcgroups.com/forums/showthread.php?t=922566]
Line 68: Line 137:
* ardupilot, spektrum to ppm [http://code.google.com/p/ardupilot-mega/source/browse/PPMEncoder/branches/spektrum_to_ppm_encoder/spektrum_to_ppm_encoder.pde]
* ardupilot, spektrum to ppm [http://code.google.com/p/ardupilot-mega/source/browse/PPMEncoder/branches/spektrum_to_ppm_encoder/spektrum_to_ppm_encoder.pde]


=== wii IMU ===
<br style="clear: both" />
First IMU will be using sensors from the motion plus and the nunchuck
 
=== Wii IMU ===
First IMU will be using sensors from the motion plus and the nunchuk.
 
The motion plus incorporates a dual-axis tuning fork gyroscope and a single-axis gyroscope, while the Nunchuk has a three-axis accelerometer, data from all of these can be accessed via 400kHz I2C bus which the Wii remote usually use to talk to them. These can be put together to form a basic IMU for the quadrocopter.The reading from the gyro and accelerometer have to be read one after the other rather than at the same time. This slows down the sample rate as can only retrieve one set of data every 3ms (one wm+, one nunchuck, one wm+ and so on).


I already have a nunchuk which i have used to control my Arduino tank and have picked up a motion plus from ebay to try out.


* http://snzgoo.blogspot.com/ usefull stuff in WM+ calibration
* http://snzgoo.blogspot.com/ usefull stuff in WM+ calibration
Line 79: Line 153:
This boras has the following:-
This boras has the following:-
* HMC5883L Triple Axis Magnetometer
* HMC5883L Triple Axis Magnetometer
* BMA180   Triple Axis Accelerometer
* BMA180   Triple Axis Accelerometer
* BMP085   Barometric Pressure Sensor
* BMP085  Barometric Pressure Sensor
* ITG3200  Triple-Axis Digital-Output Gyro
* ITG3200  Triple-Axis Digital-Output Gyro
* UBLOX Neo-6Q/M GPS with both UART and I2C
* Build in ultra low noise linear LDO voltage regulator.
* Build in ultra low noise linear LDO voltage regulator.
* Dimensions 30x16mm
* Dimensions 55x16mm
* I2C all sensors connected to I2C bus.
* I2C all sensors connected to I2C bus.
* Designed for 3.3V logic level
* Designed for 3.3V logic level


There is also a version with a UBLOX Neo-6Q/M GPS receiver already attached
So I ended up ordering the version 2 of this IMU, which includes a GPS as well, I don't have immediate plans for the GPS but it worked out cheaper to get it built in rather than a separate module later. Someone has all ready build a NEMA GPS library for the mbed although I don't know how useful this will be for my firmware designs.
 
I like that this IMU comes in such a small board its no bigger that the mbed! Should go nicely along side it when mounted on the quad. I plan to make up a carrier board that this and the mbed will plug into, along with connector for all the other interfaces.
 
Pin out:-
 
I2C address:-
 


eBay store [http://stores.ebay.co.uk/Special-RF-design]
eBay store [http://stores.ebay.co.uk/Special-RF-design]
RCgroups thread [http://www.rcgroups.com/forums/showthread.php?t=1413106]
RCgroups thread [http://www.rcgroups.com/forums/showthread.php?t=1413106]


=== Links ===
=== Links ===
Huge unsorted list of links to random bits of useful information
Huge unsorted list of links to random bits of useful information


 
* http://diydrones.com ArduPilot and ArduCopter UAV's (current hardware uses ATMega168 & ATMega2560)
 
* http://aeroquad.com Open source Arduino based Quadrocopter (Arduino/Arduino Mega/Arduno Mini)
* http://code.google.com/p/ardupirates/  "The ArduPirates project focuses on speeding up development on ArduCopter especially by integrating self controlling mechanisms without any commercial interests or targets."
* http://ng.uavp.ch/ Next Generation . Universal Aerial Video Platform (LPC2148 ARM7 core)
* http://paparazzi.enac.fr/ STM32 based autopilot with Overo 600mhz omap3 (can run linux on board)
** usefully control loop diagrams [http://paparazzi.enac.fr/wiki/Control_Loops#Multi-rotor_.28Booz.29_autopilot]
* http://www.mikrokopter.de/ucwiki/en/MikroKopter ATMega644 based, included custom I2C Brushless ESC's!
* http://code.google.com/p/uavp-mods/source/browse/branches#branches%2Fgke-uavx-arm UAVX mbed arm port






[[Category:Projects]]
[[Category:Projects]]
[[Category:Current Projects]]

Latest revision as of 23:04, 5 February 2019

Quadrocopter
[[{{{image}}}|border|frameless|220px|center]]
Primary Contact {{{primary}}}
Created 10/08/2011
Completed {{{completeddate}}}
Dormant {{{dormantdate}}}
Version {{{version}}}
Members 'RepRap' Matt
Manufacturer {{{manufacturer}}}
Model {{{model}}}
Location [[{{{location}}}]]
GitHub / Repo {{{repo}}}
Status Dormant
Type Members Project
Live Status {{{livestatus}}}
QR code

"A quadrotor, also called a quadrotor helicopter or quadrocopter, is an aircraft that is lifted and propelled by four rotors."

I've been flying model helicopter on/off for a few years and have now started to build a Quadcopter. As this is my first quadcopter I'm going to try and detail as much as I can here, some of this is likely just to be a bunch of random notes and not make a lot of sense to any one else, but as always I'm happy to explain if you can catch me at hackspace. --'RepRap' Matt 15:33, 15 August 2011 (BST)


Parts List

Quick breakdown of the parts i intend to use in my build

  • mbed 32bit ARM Cortex-M3 96Mhz MCU 512KB FLASH, 64KB RAM
  • ALLINONE IMU
    • HMC5883L Triple Axis Magnetometer
    • BMA180 Triple Axis Accelerometer
    • BMP085 Barometric Pressure Sensor
    • ITG3200 Triple-Axis Digital-Output Gyro
  • OrangeRx R100 Satellite Receiver
  • nRF24L01+ Transceiver Module with Chip Antenna
  • hexTronik 24gram Brushless Outrunner 1300kv
  • TURNIGY Plush 10amp 9gram Speed Controller
  • APC 8x3.8 Slowfly "Pusher" (CCW) electric propeller
  • APC 8x3.8 Slowfly electric propeller
  • 3S1P 11.1V 2150mAh 25C LiPo
  • MB1200 XL-MaxSonar-EZ0 High Performance Ultrasonic Range Finder
  • Sharp GP2D12 IR Range Sensor Manual
  • MediaTek MT3329 GPS 10Hz (much later)

Electronic system components

Break down of part that need connecting to the mbed

Important bits

  • IMU (2pins) I2C
    • both wii IMU (WMP&NC) and ALLINONE IMU are I2C based
  • Spektrum satellite (1 pin) USART
    • Saves so many pins :) can also use same pin to bind
  • ESC outputs (4 pins) PWM
    • standard servo outputs
  • nRF24L01+ (6 pins) SPI
    • using for telemetry and possible command link
    • could replace with "XRF wireless module" which is USART and needs just 2 pins and a lot less code £11.88 each

Later options

  • Ultrasonic Rangefinder (1 pin) ADC
    • pointing down for altitude hold
  • IR rangefinders (4pin) ADC
    • pointing out for obstacle avoidance
  • GPS (1 pin) USART
    • UAV, nuff said
  • Pan tilt camera mount (2 pins) PWM
    • FPV, have small 1.2ghz spy camera, might not be up to much quality but way cool!
  • Battery voltage sens (1 pin) ADC
    • must protect LiPo's!!!
  • Curent sens (1 Pin ADC
    • Only have 6 ADC pins so this might not happen
  • MAX7456 OSD (6 pins) SPI
    • could share 3 SPI with nRF24 if can switch between both fast enough, both are used for telemetry mind but nRF24 might also be flight commands, OSD could be done on ground station.
  • MiniM RGB LED's (2 pins) I2C
    • these can share the I2C bus with the IMU but they are 5v devices so may need LLC
  • Data logger, SD or USB
    • SD needs SPI (3 pins & CS) could also share with nRF24 & OSD, USB needs 2 pins but they are dedicated so no cost


mbed pin assignment

Possible mbed pin layout and connection

No Functions Usage No. Functions Usage
1 GND 0v 40 Vout 3.3G Regulated Out
2 Vin 4.5v-14v in 39 Vu 5.0v USB Out
3 Vb RTC 3v Battery in 38 IF+
4 nR 37 IF-
5 MOSI nRF24L01+ 36 RD- Ethernet
6 MISO nRF24L01+ 35 RD+ Ethernet
7 SCK nRF24L01+ 34 TD- Ethernet
8 nRF24L01+ 33 TD+ Ethernet
9 TX/SDA 32 D- USB
10 RX/SCL Spektrum Satallite 31 D+ USB
11 MOSI nRF24L01+ 30 CAN rd
12 MISO nRF24L01+ 29 CAN tdt
13 TX/SCK 28 SDA/TX I2C Bus
14 RX GPS 27 SCL/RX I2C Bus
15 AnalogIn Ultrasonic Range 26 PwmOut Tilt Servo
16 AnalogIn Front IR range 25 PwmOut Pan Servo
17 AnalogIn Right IR range 24 PwmOut Motor ESC 4
18 AnalogIn/ AnalogOut Back IR Range 23 PwmOut Motor ESC 3
19 AnalogIn Left IR Range 22 PwmOut Motor ESC 2
20 AnalogIn Battery Voltage 21 PwmOut Motor ESC 1

Spektrum Satellite protocol

Breakdown of the serial protocol use by the Spektrum Satellite receivers.

I have a Spekturm DX7 transmitter which i use to fly my trex450 and my blade mSR. the Spektrum uses a 2.4ghz signal rather than the older 35mhz or 75mhz FM signals. On the tre450 i have an AR7000 receiver, one of features of this and other Spektrum receivers is the use of satellite receivers as seen in the picture to the left, theres satellite receivers are use to help maintain a solid signal between the TX/RX, usual located in a different location on the air frame in case the signal to the main antenna is disrupted. Now interestingly the data is sent between the two using a 3 wire cable using basic serial! For my quadrocopter this is great news as it means i can just plug the satellite straight into the MCU and read the serial data to get the TX data.

I found hobbyking do a range of Spektrum compatible receivers under the name OrangeRX, i have order a 6ch receiver and a satellite receiver for use in the quadcopter.

The satellite receivers run at 3.3v so if used with and arduino would requirer some protect against the normal 5v logic.

The serial link is standard 8n1 @ 115200baud (but i have seen mention of 125000 baud on some forums, need to investigate) it sends 16 bytes of data at 22ms intervals. The first 2 bytes are frame data, the following pairs of bytes contain the channel data.

It is also possible to bind the RX by pulsing the data line just after the RX powers up, need to send between 3 and 6 pulses each between 116us & 120us in length.

  • Rcgroups threads [1] [2]
  • posible first two byte break down [3]
  • Some useful arduino code [4]
  • bind example sketch [5]
  • ardupilot, spektrum to ppm [6]


Wii IMU

First IMU will be using sensors from the motion plus and the nunchuk.

The motion plus incorporates a dual-axis tuning fork gyroscope and a single-axis gyroscope, while the Nunchuk has a three-axis accelerometer, data from all of these can be accessed via 400kHz I2C bus which the Wii remote usually use to talk to them. These can be put together to form a basic IMU for the quadrocopter.The reading from the gyro and accelerometer have to be read one after the other rather than at the same time. This slows down the sample rate as can only retrieve one set of data every 3ms (one wm+, one nunchuck, one wm+ and so on).

I already have a nunchuk which i have used to control my Arduino tank and have picked up a motion plus from ebay to try out.

ALLINONE IMU

Second generation IMU using all I2C sensor board for eBay

This boras has the following:-

  • HMC5883L Triple Axis Magnetometer
  • BMA180 Triple Axis Accelerometer
  • BMP085 Barometric Pressure Sensor
  • ITG3200 Triple-Axis Digital-Output Gyro
  • UBLOX Neo-6Q/M GPS with both UART and I2C
  • Build in ultra low noise linear LDO voltage regulator.
  • Dimensions 55x16mm
  • I2C all sensors connected to I2C bus.
  • Designed for 3.3V logic level

So I ended up ordering the version 2 of this IMU, which includes a GPS as well, I don't have immediate plans for the GPS but it worked out cheaper to get it built in rather than a separate module later. Someone has all ready build a NEMA GPS library for the mbed although I don't know how useful this will be for my firmware designs.

I like that this IMU comes in such a small board its no bigger that the mbed! Should go nicely along side it when mounted on the quad. I plan to make up a carrier board that this and the mbed will plug into, along with connector for all the other interfaces.

Pin out:-

I2C address:-


eBay store [7] RCgroups thread [8]

Links

Huge unsorted list of links to random bits of useful information